-
-
Notifications
You must be signed in to change notification settings - Fork 37
Expand file tree
/
Copy pathindex.tsx
More file actions
96 lines (90 loc) · 2.15 KB
/
index.tsx
File metadata and controls
96 lines (90 loc) · 2.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import { Box } from '@devup-ui/react'
import { ComponentProps } from 'react'
export function Table(props: ComponentProps<typeof Box<'table'>>) {
return (
<Box
as="table"
borderSpacing="0"
flexGrow="0"
maxW="100%"
overflow="hidden"
w={['100%', null, null, 'fit-content']}
{...props}
/>
)
}
export function Thead(props: ComponentProps<typeof Box<'thead'>>) {
return (
<Box
as="thead"
bg="$tableHeaderBg"
borderRight="solid 1px $tableHeaderBorder"
justifyContent="center"
px="20px"
py="8px"
whiteSpace="nowrap"
{...props}
/>
)
}
export function Tbody(props: ComponentProps<typeof Box<'tbody'>>) {
return <Box as="tbody" {...props} />
}
export function Tr(props: ComponentProps<typeof Box<'tr'>>) {
return <Box as="tr" {...props} />
}
export function Th(props: ComponentProps<typeof Box<'th'>>) {
return (
<Box
as="th"
bg="$tableHeaderBg"
borderBottom="solid 1px $tableBorder"
borderRight="solid 1px $tableHeaderBorder"
borderTop="solid 1px $tableBorder"
color="$base"
justifyContent="center"
px="20px"
py="8px"
selectors={{
'&:last-child': {
borderRight: 'solid 1px $tableBorder',
borderTopRightRadius: '10px',
},
'&:first-child': {
borderTopLeftRadius: '10px',
},
}}
textAlign="left"
typography="bodyBold"
{...props}
/>
)
}
export function Td({
typography = 'body',
...props
}: ComponentProps<typeof Box<'td'>>) {
return (
<Box
as="td"
borderBottom="solid 1px $tableBorder"
borderRight="solid 1px $tableBorder"
justifyContent="center"
px={[null, null, null, '20px']}
py="8px"
selectors={{
'&:first-child': {
borderLeft: 'solid 1px $tableBorder',
},
'tr[data-responsive="desktop"]:first-of-type &, tr[data-responsive="mobile"]:nth-of-type(2) &':
{
borderTop: 'solid 1px $tableBorder',
},
}}
styleOrder={1}
typography={typography}
wordBreak="break-all"
{...props}
/>
)
}