@thangnqdev/ui 0.1.2 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (233) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +54 -206
  3. package/bin/cli.js +125 -0
  4. package/dist/bento/index.cjs.map +1 -1
  5. package/dist/bento/index.js +2 -2
  6. package/dist/bento/styles.css +2 -46
  7. package/dist/buttons/index.cjs +111 -18
  8. package/dist/buttons/index.cjs.map +1 -1
  9. package/dist/buttons/index.d.cts +1 -1
  10. package/dist/buttons/index.d.ts +1 -1
  11. package/dist/buttons/index.js +3 -3
  12. package/dist/buttons/styles.css +2 -6
  13. package/dist/{chunk-4S6L5V7X.js → chunk-2YJBW4E2.js} +2 -2
  14. package/dist/chunk-2YJBW4E2.js.map +1 -0
  15. package/dist/{chunk-F5Q7BTMH.js → chunk-4CRFNALF.js} +1011 -556
  16. package/dist/chunk-4CRFNALF.js.map +1 -0
  17. package/dist/{chunk-LWFRUJRU.js → chunk-4MS6ZHFQ.js} +225 -41
  18. package/dist/chunk-4MS6ZHFQ.js.map +1 -0
  19. package/dist/{chunk-2OXZK6IP.js → chunk-77KTYOMQ.js} +3 -3
  20. package/dist/chunk-77KTYOMQ.js.map +1 -0
  21. package/dist/{chunk-IABPUCAQ.js → chunk-ADO3SVUA.js} +2 -2
  22. package/dist/chunk-ADO3SVUA.js.map +1 -0
  23. package/dist/{chunk-GXI2H5XA.js → chunk-D7FB3TCA.js} +3 -3
  24. package/dist/chunk-D7FB3TCA.js.map +1 -0
  25. package/dist/chunk-DSEL7ELZ.js +314 -0
  26. package/dist/chunk-DSEL7ELZ.js.map +1 -0
  27. package/dist/{chunk-KJRBRTQE.js → chunk-EXFR2BFJ.js} +37 -28
  28. package/dist/chunk-EXFR2BFJ.js.map +1 -0
  29. package/dist/{chunk-PF4ZHGVW.js → chunk-GXWB6BSY.js} +116 -23
  30. package/dist/chunk-GXWB6BSY.js.map +1 -0
  31. package/dist/{chunk-66VWUJEI.js → chunk-I2FQBMVW.js} +3 -3
  32. package/dist/chunk-I2FQBMVW.js.map +1 -0
  33. package/dist/{chunk-EU2LPUYP.js → chunk-I5O2WCGF.js} +3 -3
  34. package/dist/chunk-I5O2WCGF.js.map +1 -0
  35. package/dist/{chunk-ATYGDTMK.js → chunk-ME4XILG5.js} +5 -5
  36. package/dist/chunk-ME4XILG5.js.map +1 -0
  37. package/dist/{chunk-5FZ6ZFII.js → chunk-PC5SZFZC.js} +373 -150
  38. package/dist/chunk-PC5SZFZC.js.map +1 -0
  39. package/dist/{chunk-C4SUXMI3.js → chunk-S6XJMYME.js} +3 -3
  40. package/dist/chunk-S6XJMYME.js.map +1 -0
  41. package/dist/{chunk-A7P3O5Z5.js → chunk-V52JOSDF.js} +3 -3
  42. package/dist/chunk-V52JOSDF.js.map +1 -0
  43. package/dist/{chunk-NFVONJUK.js → chunk-W5WNWTQC.js} +455 -211
  44. package/dist/chunk-W5WNWTQC.js.map +1 -0
  45. package/dist/{chunk-WAFHC4DQ.js → chunk-YJ64RI7J.js} +3 -3
  46. package/dist/chunk-YJ64RI7J.js.map +1 -0
  47. package/dist/chunk-YOCGBORV.js +155 -0
  48. package/dist/chunk-YOCGBORV.js.map +1 -0
  49. package/dist/chunk-ZEDXARXW.js +96 -0
  50. package/dist/chunk-ZEDXARXW.js.map +1 -0
  51. package/dist/components.css +2 -0
  52. package/dist/core/index.cjs +33 -24
  53. package/dist/core/index.cjs.map +1 -1
  54. package/dist/core/index.js +2 -2
  55. package/dist/core/styles.css +2 -134
  56. package/dist/data-display/index.cjs +770 -247
  57. package/dist/data-display/index.cjs.map +1 -1
  58. package/dist/data-display/index.d.cts +1 -1
  59. package/dist/data-display/index.d.ts +1 -1
  60. package/dist/data-display/index.js +5 -4
  61. package/dist/data-display/styles.css +2 -4
  62. package/dist/feedback/index.cjs.map +1 -1
  63. package/dist/feedback/index.js +2 -2
  64. package/dist/feedback/styles.css +2 -4
  65. package/dist/forms/index.cjs +1211 -459
  66. package/dist/forms/index.cjs.map +1 -1
  67. package/dist/forms/index.d.cts +1 -1
  68. package/dist/forms/index.d.ts +1 -1
  69. package/dist/forms/index.js +8 -8
  70. package/dist/forms/styles.css +2 -6
  71. package/dist/glass/index.cjs.map +1 -1
  72. package/dist/glass/index.js +2 -2
  73. package/dist/glass/styles.css +2 -81
  74. package/dist/{index-D6fE7w-b.d.cts → index-BGt_hecO.d.cts} +1 -0
  75. package/dist/{index-D6fE7w-b.d.ts → index-BGt_hecO.d.ts} +1 -0
  76. package/dist/{index-DzcWh1Hs.d.cts → index-BtDvpZCf.d.cts} +7 -0
  77. package/dist/{index-DzcWh1Hs.d.ts → index-BtDvpZCf.d.ts} +7 -0
  78. package/dist/{index-Cle6QzQl.d.ts → index-COX1sBUN.d.ts} +27 -3
  79. package/dist/{index-BkRqGNG1.d.ts → index-Cg8MuP7u.d.cts} +40 -13
  80. package/dist/{index-BkRqGNG1.d.cts → index-Cg8MuP7u.d.ts} +40 -13
  81. package/dist/{index-CenuF_P2.d.ts → index-DHkPRTvE.d.cts} +39 -8
  82. package/dist/{index-CenuF_P2.d.cts → index-DHkPRTvE.d.ts} +39 -8
  83. package/dist/{index-TyK-Ldpy.d.cts → index-Du_oht9k.d.cts} +27 -3
  84. package/dist/index.cjs +2481 -917
  85. package/dist/index.cjs.map +1 -1
  86. package/dist/index.d.cts +5 -5
  87. package/dist/index.d.ts +5 -5
  88. package/dist/index.js +19 -19
  89. package/dist/layout/index.cjs.map +1 -1
  90. package/dist/layout/index.js +2 -2
  91. package/dist/layout/styles.css +2 -8
  92. package/dist/navigation/index.cjs +288 -48
  93. package/dist/navigation/index.cjs.map +1 -1
  94. package/dist/navigation/index.d.cts +1 -1
  95. package/dist/navigation/index.d.ts +1 -1
  96. package/dist/navigation/index.js +6 -6
  97. package/dist/navigation/styles.css +2 -4
  98. package/dist/overlays/index.cjs +566 -229
  99. package/dist/overlays/index.cjs.map +1 -1
  100. package/dist/overlays/index.d.cts +1 -1
  101. package/dist/overlays/index.d.ts +1 -1
  102. package/dist/overlays/index.js +7 -7
  103. package/dist/overlays/styles.css +2 -8
  104. package/dist/reset.css +45 -0
  105. package/dist/styles.css +1 -1
  106. package/dist/tokens.css +11 -0
  107. package/dist/typography/index.cjs.map +1 -1
  108. package/dist/typography/index.js +4 -4
  109. package/dist/typography/styles.css +2 -5
  110. package/llms.txt +211 -113
  111. package/package.json +167 -116
  112. package/scripts/postinstall.js +125 -0
  113. package/src/bento/BentoCard.tsx +140 -140
  114. package/src/bento/BentoGrid.tsx +50 -50
  115. package/src/bento/index.ts +2 -2
  116. package/src/bento/tokens.css +46 -46
  117. package/src/buttons/Button.tsx +104 -104
  118. package/src/buttons/ButtonGroup.tsx +43 -43
  119. package/src/buttons/IconButton.tsx +79 -79
  120. package/src/buttons/SplitButton.tsx +186 -86
  121. package/src/buttons/ToggleButton.tsx +157 -157
  122. package/src/buttons/index.ts +5 -5
  123. package/src/buttons/tokens.css +6 -6
  124. package/src/core/ThemeProvider.tsx +135 -123
  125. package/src/core/index.ts +2 -2
  126. package/src/core/tokens.css +134 -134
  127. package/src/data-display/Accordion.tsx +147 -147
  128. package/src/data-display/Avatar.tsx +134 -134
  129. package/src/data-display/Card.tsx +112 -112
  130. package/src/data-display/Chip.tsx +74 -74
  131. package/src/data-display/DataTablePro.tsx +299 -121
  132. package/src/data-display/StatCard.tsx +60 -60
  133. package/src/data-display/Table.tsx +74 -74
  134. package/src/data-display/Timeline.tsx +62 -62
  135. package/src/data-display/TreeView.tsx +243 -104
  136. package/src/data-display/tokens.css +4 -4
  137. package/src/feedback/Alert.tsx +80 -80
  138. package/src/feedback/EmptyState.tsx +45 -45
  139. package/src/feedback/Skeleton.tsx +66 -66
  140. package/src/feedback/Spinner.tsx +65 -65
  141. package/src/feedback/index.ts +5 -5
  142. package/src/feedback/tokens.css +4 -4
  143. package/src/forms/Checkbox.tsx +149 -69
  144. package/src/forms/CheckboxGroup.tsx +76 -29
  145. package/src/forms/Combobox.tsx +172 -28
  146. package/src/forms/DatePicker.tsx +385 -81
  147. package/src/forms/FileUpload.tsx +51 -7
  148. package/src/forms/FormField.tsx +115 -115
  149. package/src/forms/Input.tsx +151 -151
  150. package/src/forms/NumberInput.tsx +34 -20
  151. package/src/forms/PasswordInput.tsx +35 -35
  152. package/src/forms/PinInput.tsx +139 -125
  153. package/src/forms/Radio.tsx +142 -142
  154. package/src/forms/RangeSlider.tsx +237 -111
  155. package/src/forms/SearchInput.tsx +34 -34
  156. package/src/forms/Select.tsx +103 -103
  157. package/src/forms/Slider.tsx +85 -85
  158. package/src/forms/Textarea.tsx +114 -114
  159. package/src/forms/tokens.css +6 -6
  160. package/src/glass/GlassButton.tsx +59 -59
  161. package/src/glass/GlassCard.tsx +71 -71
  162. package/src/glass/index.ts +3 -3
  163. package/src/glass/tokens.css +81 -81
  164. package/src/index.ts +26 -26
  165. package/src/layout/AspectRatio.tsx +39 -39
  166. package/src/layout/Container.tsx +53 -53
  167. package/src/layout/Divider.tsx +61 -61
  168. package/src/layout/Flex.tsx +79 -79
  169. package/src/layout/Grid.tsx +124 -124
  170. package/src/layout/PageLayout.tsx +59 -59
  171. package/src/layout/Section.tsx +47 -47
  172. package/src/layout/Spacer.tsx +30 -30
  173. package/src/layout/Stack.tsx +88 -88
  174. package/src/layout/tokens.css +8 -8
  175. package/src/navigation/Breadcrumb.tsx +73 -73
  176. package/src/navigation/CommandPalette.tsx +142 -142
  177. package/src/navigation/DropdownMenu.tsx +244 -160
  178. package/src/navigation/Pagination.tsx +114 -114
  179. package/src/navigation/Stepper.tsx +93 -93
  180. package/src/navigation/Tabs.tsx +265 -133
  181. package/src/navigation/index.ts +6 -6
  182. package/src/navigation/tokens.css +4 -4
  183. package/src/overlays/AlertDialog.tsx +63 -54
  184. package/src/overlays/BottomSheet.tsx +30 -10
  185. package/src/overlays/ContextMenu.tsx +51 -9
  186. package/src/overlays/Drawer.tsx +160 -145
  187. package/src/overlays/FocusTrap.tsx +122 -49
  188. package/src/overlays/Modal.tsx +296 -219
  189. package/src/overlays/Popover.tsx +55 -25
  190. package/src/overlays/Portal.tsx +23 -23
  191. package/src/overlays/Toast.tsx +175 -137
  192. package/src/overlays/Tooltip.tsx +125 -100
  193. package/src/overlays/tokens.css +8 -8
  194. package/src/registry/components.ts +1368 -0
  195. package/src/styles/components.css +39 -0
  196. package/src/styles/index.css +2 -93
  197. package/src/styles/reset.css +45 -0
  198. package/src/styles/tokens.css +11 -2
  199. package/src/typography/Blockquote.tsx +32 -32
  200. package/src/typography/Code.tsx +89 -89
  201. package/src/typography/Heading.tsx +56 -56
  202. package/src/typography/Kbd.tsx +25 -25
  203. package/src/typography/Label.tsx +47 -47
  204. package/src/typography/Link.tsx +56 -56
  205. package/src/typography/Text.tsx +62 -62
  206. package/src/typography/index.ts +7 -7
  207. package/src/typography/tokens.css +5 -5
  208. package/src/utils/cn.ts +6 -6
  209. package/src/utils/scroll-lock.ts +19 -0
  210. package/src/utils/useControllableState.ts +54 -0
  211. package/ui-contract.json +192 -35
  212. package/dist/chunk-2OXZK6IP.js.map +0 -1
  213. package/dist/chunk-4S6L5V7X.js.map +0 -1
  214. package/dist/chunk-5FZ6ZFII.js.map +0 -1
  215. package/dist/chunk-66VWUJEI.js.map +0 -1
  216. package/dist/chunk-A7P3O5Z5.js.map +0 -1
  217. package/dist/chunk-ATYGDTMK.js.map +0 -1
  218. package/dist/chunk-C4SUXMI3.js.map +0 -1
  219. package/dist/chunk-EU2LPUYP.js.map +0 -1
  220. package/dist/chunk-F5Q7BTMH.js.map +0 -1
  221. package/dist/chunk-GXI2H5XA.js.map +0 -1
  222. package/dist/chunk-H3LCNPMC.js +0 -101
  223. package/dist/chunk-H3LCNPMC.js.map +0 -1
  224. package/dist/chunk-IABPUCAQ.js.map +0 -1
  225. package/dist/chunk-KJRBRTQE.js.map +0 -1
  226. package/dist/chunk-LBUBXUYQ.js +0 -40
  227. package/dist/chunk-LBUBXUYQ.js.map +0 -1
  228. package/dist/chunk-LWFRUJRU.js.map +0 -1
  229. package/dist/chunk-NFVONJUK.js.map +0 -1
  230. package/dist/chunk-PF4ZHGVW.js.map +0 -1
  231. package/dist/chunk-WAFHC4DQ.js.map +0 -1
  232. package/dist/chunk-X76KBH4Y.js +0 -71
  233. package/dist/chunk-X76KBH4Y.js.map +0 -1
@@ -1,53 +1,53 @@
1
- import React, { forwardRef } from 'react';
2
- import { cva, type VariantProps } from 'class-variance-authority';
3
- import { cn } from '../utils/cn';
4
-
5
- export const containerVariants = cva('w-full mx-auto', {
6
- variants: {
7
- size: {
8
- sm: 'max-w-screen-sm',
9
- md: 'max-w-screen-md',
10
- lg: 'max-w-screen-lg',
11
- xl: 'max-w-screen-xl',
12
- '2xl': 'max-w-screen-2xl',
13
- fluid: 'max-w-full',
14
- },
15
- padding: {
16
- none: 'px-0',
17
- sm: 'px-4',
18
- md: 'px-6',
19
- lg: 'px-8 sm:px-12',
20
- },
21
- centered: {
22
- true: 'flex flex-col items-center justify-center',
23
- false: '',
24
- },
25
- },
26
- defaultVariants: {
27
- size: 'xl',
28
- padding: 'md',
29
- centered: false,
30
- },
31
- });
32
-
33
- export interface ContainerProps
34
- extends React.HTMLAttributes<HTMLDivElement>,
35
- VariantProps<typeof containerVariants> {
36
- as?: React.ElementType;
37
- }
38
-
39
- export const Container = forwardRef<HTMLDivElement, ContainerProps>(
40
- ({ className, size, padding, centered, as: Component = 'div', children, ...props }, ref) => {
41
- return (
42
- <Component
43
- ref={ref}
44
- className={cn(containerVariants({ size, padding, centered }), className)}
45
- {...props}
46
- >
47
- {children}
48
- </Component>
49
- );
50
- }
51
- );
52
-
53
- Container.displayName = 'Container';
1
+ import React, { forwardRef } from 'react';
2
+ import { cva, type VariantProps } from 'class-variance-authority';
3
+ import { cn } from '../utils/cn';
4
+
5
+ export const containerVariants = cva('w-full mx-auto', {
6
+ variants: {
7
+ size: {
8
+ sm: 'max-w-screen-sm',
9
+ md: 'max-w-screen-md',
10
+ lg: 'max-w-screen-lg',
11
+ xl: 'max-w-screen-xl',
12
+ '2xl': 'max-w-screen-2xl',
13
+ fluid: 'max-w-full',
14
+ },
15
+ padding: {
16
+ none: 'px-0',
17
+ sm: 'px-4',
18
+ md: 'px-6',
19
+ lg: 'px-8 sm:px-12',
20
+ },
21
+ centered: {
22
+ true: 'flex flex-col items-center justify-center',
23
+ false: '',
24
+ },
25
+ },
26
+ defaultVariants: {
27
+ size: 'xl',
28
+ padding: 'md',
29
+ centered: false,
30
+ },
31
+ });
32
+
33
+ export interface ContainerProps
34
+ extends React.HTMLAttributes<HTMLDivElement>,
35
+ VariantProps<typeof containerVariants> {
36
+ as?: React.ElementType;
37
+ }
38
+
39
+ export const Container = forwardRef<HTMLDivElement, ContainerProps>(
40
+ ({ className, size, padding, centered, as: Component = 'div', children, ...props }, ref) => {
41
+ return (
42
+ <Component
43
+ ref={ref}
44
+ className={cn(containerVariants({ size, padding, centered }), className)}
45
+ {...props}
46
+ >
47
+ {children}
48
+ </Component>
49
+ );
50
+ }
51
+ );
52
+
53
+ Container.displayName = 'Container';
@@ -1,61 +1,61 @@
1
- import React, { forwardRef } from 'react';
2
- import { cva, type VariantProps } from 'class-variance-authority';
3
- import { cn } from '../utils/cn';
4
-
5
- export const dividerVariants = cva('border-0 flex-shrink-0', {
6
- variants: {
7
- orientation: {
8
- horizontal: 'w-full h-px border-t border-[var(--ui-border-subtle)] my-4',
9
- vertical: 'h-full w-px border-l border-[var(--ui-border-subtle)] mx-4 inline-block align-middle self-stretch',
10
- },
11
- variant: {
12
- solid: 'border-solid',
13
- dashed: 'border-dashed',
14
- dotted: 'border-dotted',
15
- },
16
- },
17
- defaultVariants: {
18
- orientation: 'horizontal',
19
- variant: 'solid',
20
- },
21
- });
22
-
23
- export interface DividerProps
24
- extends React.HTMLAttributes<HTMLDivElement>,
25
- VariantProps<typeof dividerVariants> {
26
- label?: React.ReactNode;
27
- }
28
-
29
- export const Divider = forwardRef<HTMLDivElement, DividerProps>(
30
- ({ className, orientation = 'horizontal', variant, label, children, ...props }, ref) => {
31
- const content = label || children;
32
-
33
- if (orientation === 'horizontal' && content) {
34
- return (
35
- <div
36
- ref={ref}
37
- role="separator"
38
- aria-orientation="horizontal"
39
- className={cn('flex items-center w-full my-4 text-xs font-medium text-[var(--ui-text-muted)]', className)}
40
- {...props}
41
- >
42
- <div className={cn('flex-grow border-t border-[var(--ui-border-subtle)]', dividerVariants({ variant }))} />
43
- <span className="px-3 select-none">{content}</span>
44
- <div className={cn('flex-grow border-t border-[var(--ui-border-subtle)]', dividerVariants({ variant }))} />
45
- </div>
46
- );
47
- }
48
-
49
- return (
50
- <div
51
- ref={ref}
52
- role="separator"
53
- aria-orientation={orientation || 'horizontal'}
54
- className={cn(dividerVariants({ orientation, variant }), className)}
55
- {...props}
56
- />
57
- );
58
- }
59
- );
60
-
61
- Divider.displayName = 'Divider';
1
+ import React, { forwardRef } from 'react';
2
+ import { cva, type VariantProps } from 'class-variance-authority';
3
+ import { cn } from '../utils/cn';
4
+
5
+ export const dividerVariants = cva('border-0 flex-shrink-0', {
6
+ variants: {
7
+ orientation: {
8
+ horizontal: 'w-full h-px border-t border-[var(--ui-border-subtle)] my-4',
9
+ vertical: 'h-full w-px border-l border-[var(--ui-border-subtle)] mx-4 inline-block align-middle self-stretch',
10
+ },
11
+ variant: {
12
+ solid: 'border-solid',
13
+ dashed: 'border-dashed',
14
+ dotted: 'border-dotted',
15
+ },
16
+ },
17
+ defaultVariants: {
18
+ orientation: 'horizontal',
19
+ variant: 'solid',
20
+ },
21
+ });
22
+
23
+ export interface DividerProps
24
+ extends React.HTMLAttributes<HTMLDivElement>,
25
+ VariantProps<typeof dividerVariants> {
26
+ label?: React.ReactNode;
27
+ }
28
+
29
+ export const Divider = forwardRef<HTMLDivElement, DividerProps>(
30
+ ({ className, orientation = 'horizontal', variant, label, children, ...props }, ref) => {
31
+ const content = label || children;
32
+
33
+ if (orientation === 'horizontal' && content) {
34
+ return (
35
+ <div
36
+ ref={ref}
37
+ role="separator"
38
+ aria-orientation="horizontal"
39
+ className={cn('flex items-center w-full my-4 text-xs font-medium text-[var(--ui-text-muted)]', className)}
40
+ {...props}
41
+ >
42
+ <div className={cn('flex-grow border-t border-[var(--ui-border-subtle)]', dividerVariants({ variant }))} />
43
+ <span className="px-3 select-none">{content}</span>
44
+ <div className={cn('flex-grow border-t border-[var(--ui-border-subtle)]', dividerVariants({ variant }))} />
45
+ </div>
46
+ );
47
+ }
48
+
49
+ return (
50
+ <div
51
+ ref={ref}
52
+ role="separator"
53
+ aria-orientation={orientation || 'horizontal'}
54
+ className={cn(dividerVariants({ orientation, variant }), className)}
55
+ {...props}
56
+ />
57
+ );
58
+ }
59
+ );
60
+
61
+ Divider.displayName = 'Divider';
@@ -1,79 +1,79 @@
1
- import React, { forwardRef } from 'react';
2
- import { cva, type VariantProps } from 'class-variance-authority';
3
- import { cn } from '../utils/cn';
4
-
5
- export const flexVariants = cva('flex', {
6
- variants: {
7
- direction: {
8
- row: 'flex-row',
9
- 'row-reverse': 'flex-row-reverse',
10
- column: 'flex-col',
11
- 'column-reverse': 'flex-col-reverse',
12
- },
13
- align: {
14
- start: 'items-start',
15
- center: 'items-center',
16
- end: 'items-end',
17
- stretch: 'items-stretch',
18
- baseline: 'items-baseline',
19
- },
20
- justify: {
21
- start: 'justify-start',
22
- center: 'justify-center',
23
- end: 'justify-end',
24
- between: 'justify-between',
25
- around: 'justify-around',
26
- evenly: 'justify-evenly',
27
- },
28
- wrap: {
29
- nowrap: 'flex-nowrap',
30
- wrap: 'flex-wrap',
31
- 'wrap-reverse': 'flex-wrap-reverse',
32
- },
33
- gap: {
34
- 0: 'gap-0',
35
- 1: 'gap-1',
36
- 2: 'gap-2',
37
- 3: 'gap-3',
38
- 4: 'gap-4',
39
- 5: 'gap-5',
40
- 6: 'gap-6',
41
- 8: 'gap-8',
42
- 10: 'gap-10',
43
- 12: 'gap-12',
44
- },
45
- inline: {
46
- true: 'inline-flex',
47
- false: 'flex',
48
- },
49
- },
50
- defaultVariants: {
51
- direction: 'row',
52
- align: 'stretch',
53
- justify: 'start',
54
- wrap: 'nowrap',
55
- inline: false,
56
- },
57
- });
58
-
59
- export interface FlexProps
60
- extends React.HTMLAttributes<HTMLDivElement>,
61
- VariantProps<typeof flexVariants> {
62
- as?: React.ElementType;
63
- }
64
-
65
- export const Flex = forwardRef<HTMLDivElement, FlexProps>(
66
- ({ className, direction, align, justify, wrap, gap, inline, as: Component = 'div', children, ...props }, ref) => {
67
- return (
68
- <Component
69
- ref={ref}
70
- className={cn(flexVariants({ direction, align, justify, wrap, gap, inline }), className)}
71
- {...props}
72
- >
73
- {children}
74
- </Component>
75
- );
76
- }
77
- );
78
-
79
- Flex.displayName = 'Flex';
1
+ import React, { forwardRef } from 'react';
2
+ import { cva, type VariantProps } from 'class-variance-authority';
3
+ import { cn } from '../utils/cn';
4
+
5
+ export const flexVariants = cva('flex', {
6
+ variants: {
7
+ direction: {
8
+ row: 'flex-row',
9
+ 'row-reverse': 'flex-row-reverse',
10
+ column: 'flex-col',
11
+ 'column-reverse': 'flex-col-reverse',
12
+ },
13
+ align: {
14
+ start: 'items-start',
15
+ center: 'items-center',
16
+ end: 'items-end',
17
+ stretch: 'items-stretch',
18
+ baseline: 'items-baseline',
19
+ },
20
+ justify: {
21
+ start: 'justify-start',
22
+ center: 'justify-center',
23
+ end: 'justify-end',
24
+ between: 'justify-between',
25
+ around: 'justify-around',
26
+ evenly: 'justify-evenly',
27
+ },
28
+ wrap: {
29
+ nowrap: 'flex-nowrap',
30
+ wrap: 'flex-wrap',
31
+ 'wrap-reverse': 'flex-wrap-reverse',
32
+ },
33
+ gap: {
34
+ 0: 'gap-0',
35
+ 1: 'gap-1',
36
+ 2: 'gap-2',
37
+ 3: 'gap-3',
38
+ 4: 'gap-4',
39
+ 5: 'gap-5',
40
+ 6: 'gap-6',
41
+ 8: 'gap-8',
42
+ 10: 'gap-10',
43
+ 12: 'gap-12',
44
+ },
45
+ inline: {
46
+ true: 'inline-flex',
47
+ false: 'flex',
48
+ },
49
+ },
50
+ defaultVariants: {
51
+ direction: 'row',
52
+ align: 'stretch',
53
+ justify: 'start',
54
+ wrap: 'nowrap',
55
+ inline: false,
56
+ },
57
+ });
58
+
59
+ export interface FlexProps
60
+ extends React.HTMLAttributes<HTMLDivElement>,
61
+ VariantProps<typeof flexVariants> {
62
+ as?: React.ElementType;
63
+ }
64
+
65
+ export const Flex = forwardRef<HTMLDivElement, FlexProps>(
66
+ ({ className, direction, align, justify, wrap, gap, inline, as: Component = 'div', children, ...props }, ref) => {
67
+ return (
68
+ <Component
69
+ ref={ref}
70
+ className={cn(flexVariants({ direction, align, justify, wrap, gap, inline }), className)}
71
+ {...props}
72
+ >
73
+ {children}
74
+ </Component>
75
+ );
76
+ }
77
+ );
78
+
79
+ Flex.displayName = 'Flex';
@@ -1,124 +1,124 @@
1
- import React, { forwardRef } from 'react';
2
- import { cva, type VariantProps } from 'class-variance-authority';
3
- import { cn } from '../utils/cn';
4
-
5
- export const gridVariants = cva('grid', {
6
- variants: {
7
- cols: {
8
- 1: 'grid-cols-1',
9
- 2: 'grid-cols-1 sm:grid-cols-2',
10
- 3: 'grid-cols-1 sm:grid-cols-2 md:grid-cols-3',
11
- 4: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-4',
12
- 5: 'grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-5',
13
- 6: 'grid-cols-2 sm:grid-cols-3 lg:grid-cols-6',
14
- 12: 'grid-cols-12',
15
- },
16
- gap: {
17
- 0: 'gap-0',
18
- 1: 'gap-1',
19
- 2: 'gap-2',
20
- 3: 'gap-3',
21
- 4: 'gap-4',
22
- 5: 'gap-5',
23
- 6: 'gap-6',
24
- 8: 'gap-8',
25
- 10: 'gap-10',
26
- 12: 'gap-12',
27
- },
28
- flow: {
29
- row: 'grid-flow-row',
30
- col: 'grid-flow-col',
31
- dense: 'grid-flow-dense',
32
- 'row-dense': 'grid-flow-row-dense',
33
- 'col-dense': 'grid-flow-col-dense',
34
- },
35
- },
36
- defaultVariants: {
37
- cols: 1,
38
- gap: 4,
39
- flow: 'row',
40
- },
41
- });
42
-
43
- export interface GridProps
44
- extends React.HTMLAttributes<HTMLDivElement>,
45
- VariantProps<typeof gridVariants> {
46
- as?: React.ElementType;
47
- }
48
-
49
- export const Grid = forwardRef<HTMLDivElement, GridProps>(
50
- ({ className, cols, gap, flow, as: Component = 'div', children, ...props }, ref) => {
51
- return (
52
- <Component
53
- ref={ref}
54
- className={cn(gridVariants({ cols, gap, flow }), className)}
55
- {...props}
56
- >
57
- {children}
58
- </Component>
59
- );
60
- }
61
- );
62
- Grid.displayName = 'Grid';
63
-
64
- export const gridItemVariants = cva('', {
65
- variants: {
66
- colSpan: {
67
- 1: 'col-span-1',
68
- 2: 'col-span-2',
69
- 3: 'col-span-3',
70
- 4: 'col-span-4',
71
- 5: 'col-span-5',
72
- 6: 'col-span-6',
73
- 7: 'col-span-7',
74
- 8: 'col-span-8',
75
- 9: 'col-span-9',
76
- 10: 'col-span-10',
77
- 11: 'col-span-11',
78
- 12: 'col-span-12',
79
- full: 'col-span-full',
80
- },
81
- rowSpan: {
82
- 1: 'row-span-1',
83
- 2: 'row-span-2',
84
- 3: 'row-span-3',
85
- 4: 'row-span-4',
86
- 5: 'row-span-5',
87
- 6: 'row-span-6',
88
- full: 'row-span-full',
89
- },
90
- colStart: {
91
- 1: 'col-start-1',
92
- 2: 'col-start-2',
93
- 3: 'col-start-3',
94
- 4: 'col-start-4',
95
- 5: 'col-start-5',
96
- 6: 'col-start-6',
97
- auto: 'col-start-auto',
98
- },
99
- },
100
- defaultVariants: {
101
- colSpan: 1,
102
- },
103
- });
104
-
105
- export interface GridItemProps
106
- extends React.HTMLAttributes<HTMLDivElement>,
107
- VariantProps<typeof gridItemVariants> {
108
- as?: React.ElementType;
109
- }
110
-
111
- export const GridItem = forwardRef<HTMLDivElement, GridItemProps>(
112
- ({ className, colSpan, rowSpan, colStart, as: Component = 'div', children, ...props }, ref) => {
113
- return (
114
- <Component
115
- ref={ref}
116
- className={cn(gridItemVariants({ colSpan, rowSpan, colStart }), className)}
117
- {...props}
118
- >
119
- {children}
120
- </Component>
121
- );
122
- }
123
- );
124
- GridItem.displayName = 'GridItem';
1
+ import React, { forwardRef } from 'react';
2
+ import { cva, type VariantProps } from 'class-variance-authority';
3
+ import { cn } from '../utils/cn';
4
+
5
+ export const gridVariants = cva('grid', {
6
+ variants: {
7
+ cols: {
8
+ 1: 'grid-cols-1',
9
+ 2: 'grid-cols-1 sm:grid-cols-2',
10
+ 3: 'grid-cols-1 sm:grid-cols-2 md:grid-cols-3',
11
+ 4: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-4',
12
+ 5: 'grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-5',
13
+ 6: 'grid-cols-2 sm:grid-cols-3 lg:grid-cols-6',
14
+ 12: 'grid-cols-12',
15
+ },
16
+ gap: {
17
+ 0: 'gap-0',
18
+ 1: 'gap-1',
19
+ 2: 'gap-2',
20
+ 3: 'gap-3',
21
+ 4: 'gap-4',
22
+ 5: 'gap-5',
23
+ 6: 'gap-6',
24
+ 8: 'gap-8',
25
+ 10: 'gap-10',
26
+ 12: 'gap-12',
27
+ },
28
+ flow: {
29
+ row: 'grid-flow-row',
30
+ col: 'grid-flow-col',
31
+ dense: 'grid-flow-dense',
32
+ 'row-dense': 'grid-flow-row-dense',
33
+ 'col-dense': 'grid-flow-col-dense',
34
+ },
35
+ },
36
+ defaultVariants: {
37
+ cols: 1,
38
+ gap: 4,
39
+ flow: 'row',
40
+ },
41
+ });
42
+
43
+ export interface GridProps
44
+ extends React.HTMLAttributes<HTMLDivElement>,
45
+ VariantProps<typeof gridVariants> {
46
+ as?: React.ElementType;
47
+ }
48
+
49
+ export const Grid = forwardRef<HTMLDivElement, GridProps>(
50
+ ({ className, cols, gap, flow, as: Component = 'div', children, ...props }, ref) => {
51
+ return (
52
+ <Component
53
+ ref={ref}
54
+ className={cn(gridVariants({ cols, gap, flow }), className)}
55
+ {...props}
56
+ >
57
+ {children}
58
+ </Component>
59
+ );
60
+ }
61
+ );
62
+ Grid.displayName = 'Grid';
63
+
64
+ export const gridItemVariants = cva('', {
65
+ variants: {
66
+ colSpan: {
67
+ 1: 'col-span-1',
68
+ 2: 'col-span-2',
69
+ 3: 'col-span-3',
70
+ 4: 'col-span-4',
71
+ 5: 'col-span-5',
72
+ 6: 'col-span-6',
73
+ 7: 'col-span-7',
74
+ 8: 'col-span-8',
75
+ 9: 'col-span-9',
76
+ 10: 'col-span-10',
77
+ 11: 'col-span-11',
78
+ 12: 'col-span-12',
79
+ full: 'col-span-full',
80
+ },
81
+ rowSpan: {
82
+ 1: 'row-span-1',
83
+ 2: 'row-span-2',
84
+ 3: 'row-span-3',
85
+ 4: 'row-span-4',
86
+ 5: 'row-span-5',
87
+ 6: 'row-span-6',
88
+ full: 'row-span-full',
89
+ },
90
+ colStart: {
91
+ 1: 'col-start-1',
92
+ 2: 'col-start-2',
93
+ 3: 'col-start-3',
94
+ 4: 'col-start-4',
95
+ 5: 'col-start-5',
96
+ 6: 'col-start-6',
97
+ auto: 'col-start-auto',
98
+ },
99
+ },
100
+ defaultVariants: {
101
+ colSpan: 1,
102
+ },
103
+ });
104
+
105
+ export interface GridItemProps
106
+ extends React.HTMLAttributes<HTMLDivElement>,
107
+ VariantProps<typeof gridItemVariants> {
108
+ as?: React.ElementType;
109
+ }
110
+
111
+ export const GridItem = forwardRef<HTMLDivElement, GridItemProps>(
112
+ ({ className, colSpan, rowSpan, colStart, as: Component = 'div', children, ...props }, ref) => {
113
+ return (
114
+ <Component
115
+ ref={ref}
116
+ className={cn(gridItemVariants({ colSpan, rowSpan, colStart }), className)}
117
+ {...props}
118
+ >
119
+ {children}
120
+ </Component>
121
+ );
122
+ }
123
+ );
124
+ GridItem.displayName = 'GridItem';