|
1 | 1 | import Emoji from "react-emoji-render"
|
2 |
| -import { |
3 |
| - Flex, |
4 |
| - HStack, |
5 |
| - SimpleGrid, |
6 |
| - SimpleGridProps, |
7 |
| - Stack, |
8 |
| - Text, |
9 |
| -} from "@chakra-ui/react" |
10 | 2 |
|
11 | 3 | import type { GHIssue } from "@/lib/types"
|
12 | 4 |
|
13 |
| -import InlineLink from "../Link" |
14 |
| -import Tag from "../Tag" |
| 5 | +import { cn } from "@/lib/utils/cn" |
| 6 | + |
15 | 7 | import { Avatar } from "../ui/avatar"
|
| 8 | +import { Flex, HStack, Stack } from "../ui/flex" |
| 9 | +import InlineLink from "../ui/Link" |
| 10 | +import { Tag } from "../ui/tag" |
16 | 11 |
|
17 |
| -type IssuesListProps = SimpleGridProps & { |
| 12 | +type IssuesListProps = { |
18 | 13 | issues: GHIssue[]
|
| 14 | + className?: string |
19 | 15 | }
|
20 | 16 |
|
21 |
| -const IssuesList = ({ issues, ...props }: IssuesListProps) => { |
| 17 | +const IssuesList = ({ issues, className }: IssuesListProps) => { |
22 | 18 | return (
|
23 |
| - <SimpleGrid columns={[1, null, 2]} spacing={4} {...props}> |
| 19 | + <div |
| 20 | + className={cn("my-7 grid gap-4 sm:grid-cols-1 lg:grid-cols-2", className)} |
| 21 | + > |
24 | 22 | {issues.map((issue) => (
|
25 | 23 | <Stack
|
| 24 | + className="gap-4 rounded-md border border-border p-4" |
26 | 25 | key={issue.title}
|
27 |
| - p={4} |
28 |
| - spacing={4} |
29 |
| - border="1px solid" |
30 |
| - borderColor="body.light" |
31 |
| - borderRadius="md" |
32 | 26 | >
|
33 |
| - <Stack spacing={2}> |
34 |
| - <HStack spacing={2}> |
| 27 | + <Stack className="gap-2"> |
| 28 | + <HStack className="gap-2"> |
35 | 29 | <Avatar
|
36 | 30 | name={issue.user.login}
|
37 | 31 | src={issue.user.avatar_url}
|
38 | 32 | size="sm"
|
39 | 33 | href={`https://github.com/${issue.user.login}`}
|
40 | 34 | />
|
41 |
| - <Text size="sm">by {issue.user.login}</Text> |
| 35 | + <p className="text-sm">by {issue.user.login}</p> |
42 | 36 | </HStack>
|
43 | 37 |
|
44 |
| - <InlineLink href={issue.html_url} textDecor="none"> |
| 38 | + <InlineLink |
| 39 | + href={issue.html_url} |
| 40 | + className="no-underline hover:underline" |
| 41 | + > |
45 | 42 | {issue.title}
|
46 | 43 | </InlineLink>
|
47 | 44 | </Stack>
|
48 |
| - <Flex flexWrap="wrap" gap="1"> |
| 45 | + <Flex className="flex-wrap gap-1"> |
49 | 46 | {issue.labels.map((label) => {
|
50 | 47 | return (
|
51 |
| - <Tag |
52 |
| - key={label.id} |
53 |
| - label={<Emoji text={label.name} />} |
54 |
| - variant="outline" |
55 |
| - /> |
| 48 | + <Tag key={label.id} variant="outline"> |
| 49 | + <Emoji text={label.name} /> |
| 50 | + </Tag> |
56 | 51 | )
|
57 | 52 | })}
|
58 | 53 | </Flex>
|
59 | 54 | </Stack>
|
60 | 55 | ))}
|
61 |
| - </SimpleGrid> |
| 56 | + </div> |
62 | 57 | )
|
63 | 58 | }
|
64 | 59 |
|
|
0 commit comments