Files
Athou_commafeed/commafeed-client/src/components/content/FeedEntryHeader.tsx

62 lines
2.0 KiB
TypeScript
Raw Normal View History

2023-12-29 23:09:30 +01:00
import { Box, Space, Text } from "@mantine/core"
2023-12-28 19:54:51 +01:00
import { type Entry } from "app/types"
import { RelativeDate } from "components/RelativeDate"
2023-12-29 23:09:30 +01:00
import { useColorScheme } from "hooks/useColorScheme"
import { tss } from "tss"
2022-10-27 16:25:32 +02:00
import { FeedEntryTitle } from "./FeedEntryTitle"
import { FeedFavicon } from "./FeedFavicon"
export interface FeedEntryHeaderProps {
entry: Entry
expanded: boolean
}
const useStyles = tss
.withParams<{
2023-12-29 23:09:30 +01:00
colorScheme: "light" | "dark"
read: boolean
}>()
2023-12-29 23:09:30 +01:00
.create(({ colorScheme, read }) => ({
headerText: {
2023-12-29 23:09:30 +01:00
fontWeight: colorScheme === "light" && !read ? "bold" : "inherit",
},
headerSubtext: {
display: "flex",
alignItems: "center",
fontSize: "90%",
},
}))
export function FeedEntryHeader(props: FeedEntryHeaderProps) {
2023-12-29 23:09:30 +01:00
const colorScheme = useColorScheme()
const { classes } = useStyles({
2023-12-29 23:09:30 +01:00
colorScheme,
read: props.entry.read,
})
return (
<Box>
2022-10-27 16:25:32 +02:00
<Box className={classes.headerText}>
<FeedEntryTitle entry={props.entry} />
</Box>
<Box className={classes.headerSubtext}>
<FeedFavicon url={props.entry.iconUrl} />
<Space w={6} />
2023-12-29 23:09:30 +01:00
<Text c="dimmed">
{props.entry.feedName}
<span> · </span>
<RelativeDate date={props.entry.date} />
</Text>
</Box>
{props.expanded && (
<Box className={classes.headerSubtext}>
2023-12-29 23:09:30 +01:00
<Text c="dimmed">
{props.entry.author && <span>by {props.entry.author}</span>}
{props.entry.author && props.entry.categories && <span>&nbsp;·&nbsp;</span>}
{props.entry.categories && <span>{props.entry.categories}</span>}
</Text>
</Box>
)}
</Box>
)
}