This repository has no description
1.8 kB
67 lines
1'use client';
2
3import { AppBskyFeedDefs } from '@atproto/api';
4import { Avatar, Card, Group, Stack, Text } from '@mantine/core';
5
6import { getFeedLink } from '../../lib/utils/link';
7import { useUserSettings } from '@/features/settings/lib/queries/useUserSettings';
8
9interface Props {
10 feed: AppBskyFeedDefs.GeneratorView;
11}
12
13export default function FeedEmbed(props: Props) {
14 const { settings } = useUserSettings();
15
16 if (settings.cardView === 'grid') {
17 return (
18 <Card p={'xs'} withBorder>
19 <Group gap={'xs'} wrap="nowrap">
20 {props.feed.avatar && (
21 <Avatar
22 src={props.feed.avatar?.replace('avatar', 'avatar_thumbnail')}
23 alt={props.feed.displayName}
24 />
25 )}
26
27 <Stack gap={0}>
28 <Text fz={'sm'} fw={500} c={'bright'} lineClamp={1}>
29 {props.feed.displayName}
30 </Text>
31 <Text fz={'sm'} fw={500} c={'gray'} lineClamp={1} span>
32 Feed by @{props.feed.creator.handle}
33 </Text>
34 </Stack>
35 </Group>
36 </Card>
37 );
38 }
39
40 return (
41 <Card
42 p={'xs'}
43 component="a"
44 href={getFeedLink(props.feed)}
45 target="_blank"
46 withBorder
47 >
48 <Group gap={'xs'} wrap="nowrap">
49 {props.feed.avatar && (
50 <Avatar
51 src={props.feed.avatar?.replace('avatar', 'avatar_thumbnail')}
52 alt={props.feed.displayName}
53 />
54 )}
55
56 <Stack gap={0}>
57 <Text fz={'sm'} fw={500} c={'bright'} lineClamp={1}>
58 {props.feed.displayName}
59 </Text>
60 <Text fz={'sm'} fw={500} c={'gray'} lineClamp={1} span>
61 Feed by @{props.feed.creator.handle}
62 </Text>
63 </Stack>
64 </Group>
65 </Card>
66 );
67}