Files
commafeed/commafeed-client/src/components/content/FeedEntryCompactHeader.tsx

70 lines
2.1 KiB
TypeScript
Raw Normal View History

import { Box, type MantineTheme, Text, useMantineTheme } from "@mantine/core"
2023-12-28 19:54:51 +01:00
import { type Entry } from "app/types"
2022-09-05 13:52:28 +02:00
import { RelativeDate } from "components/RelativeDate"
import { OnDesktop } from "components/responsive/OnDesktop"
import { tss } from "tss"
2022-10-27 16:25:32 +02:00
import { FeedEntryTitle } from "./FeedEntryTitle"
import { FeedFavicon } from "./FeedFavicon"
2022-09-05 13:52:28 +02:00
export interface FeedEntryHeaderProps {
entry: Entry
}
const useStyles = tss
.withParams<{
theme: MantineTheme
read: boolean
}>()
.create(({ read, theme }) => ({
wrapper: {
display: "flex",
alignItems: "center",
columnGap: "10px",
},
title: {
flexGrow: 1,
fontWeight: theme.colorScheme === "light" && !read ? "bold" : "inherit",
whiteSpace: "nowrap",
overflow: "hidden",
textOverflow: "ellipsis",
},
feedName: {
width: "145px",
minWidth: "145px",
whiteSpace: "nowrap",
overflow: "hidden",
textOverflow: "ellipsis",
},
date: {
whiteSpace: "nowrap",
},
}))
2022-09-05 13:52:28 +02:00
export function FeedEntryCompactHeader(props: FeedEntryHeaderProps) {
const theme = useMantineTheme()
const { classes } = useStyles({
theme,
read: props.entry.read,
})
2022-09-05 13:52:28 +02:00
return (
<Box className={classes.wrapper}>
<Box>
<FeedFavicon url={props.entry.iconUrl} />
2022-09-05 13:52:28 +02:00
</Box>
<OnDesktop>
<Text color="dimmed" className={classes.feedName}>
{props.entry.feedName}
</Text>
</OnDesktop>
2022-10-27 16:25:32 +02:00
<Box className={classes.title}>
<FeedEntryTitle entry={props.entry} />
</Box>
2022-09-05 13:52:28 +02:00
<OnDesktop>
2022-09-13 17:01:29 +02:00
<Text color="dimmed" className={classes.date}>
<RelativeDate date={props.entry.date} />
</Text>
2022-09-05 13:52:28 +02:00
</OnDesktop>
</Box>
)
}