@codefast/ui 0.3.16-canary.2 → 0.4.0-canary.4

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 (289) hide show
  1. package/CHANGELOG.md +81 -0
  2. package/README.md +28 -17
  3. package/dist/components/accordion.d.mts +7 -22
  4. package/dist/components/accordion.mjs +26 -29
  5. package/dist/components/alert-dialog.d.mts +27 -26
  6. package/dist/components/alert-dialog.mjs +53 -45
  7. package/dist/components/alert.d.mts +14 -14
  8. package/dist/components/alert.mjs +17 -28
  9. package/dist/components/aspect-ratio.d.mts +2 -2
  10. package/dist/components/aspect-ratio.mjs +2 -3
  11. package/dist/components/avatar.d.mts +41 -5
  12. package/dist/components/avatar.mjs +40 -10
  13. package/dist/components/badge.d.mts +3 -15
  14. package/dist/components/badge.mjs +6 -48
  15. package/dist/components/breadcrumb.d.mts +1 -0
  16. package/dist/components/breadcrumb.mjs +11 -10
  17. package/dist/components/button-group.d.mts +3 -13
  18. package/dist/components/button-group.mjs +9 -31
  19. package/dist/components/button.d.mts +3 -26
  20. package/dist/components/button.mjs +9 -79
  21. package/dist/components/calendar.d.mts +6 -2
  22. package/dist/components/calendar.mjs +41 -44
  23. package/dist/components/card.d.mts +4 -2
  24. package/dist/components/card.mjs +9 -9
  25. package/dist/components/carousel.d.mts +16 -5
  26. package/dist/components/carousel.mjs +24 -11
  27. package/dist/components/chart.d.mts +9 -6
  28. package/dist/components/chart.mjs +21 -15
  29. package/dist/components/checkbox-cards.mjs +4 -4
  30. package/dist/components/checkbox-group.mjs +3 -4
  31. package/dist/components/checkbox.d.mts +2 -2
  32. package/dist/components/checkbox.mjs +6 -7
  33. package/dist/components/collapsible.d.mts +4 -4
  34. package/dist/components/collapsible.mjs +4 -5
  35. package/dist/components/command.d.mts +11 -1
  36. package/dist/components/command.mjs +35 -32
  37. package/dist/components/context-menu.d.mts +22 -15
  38. package/dist/components/context-menu.mjs +44 -39
  39. package/dist/components/dialog.d.mts +19 -23
  40. package/dist/components/dialog.mjs +48 -47
  41. package/dist/components/direction.d.mts +24 -0
  42. package/dist/components/direction.mjs +18 -0
  43. package/dist/components/drawer.d.mts +3 -21
  44. package/dist/components/drawer.mjs +19 -27
  45. package/dist/components/dropdown-menu.d.mts +22 -15
  46. package/dist/components/dropdown-menu.mjs +41 -37
  47. package/dist/components/empty.d.mts +3 -13
  48. package/dist/components/empty.mjs +8 -23
  49. package/dist/components/field.d.mts +3 -14
  50. package/dist/components/field.mjs +14 -44
  51. package/dist/components/form.d.mts +7 -10
  52. package/dist/components/form.mjs +6 -7
  53. package/dist/components/hover-card.d.mts +5 -5
  54. package/dist/components/hover-card.mjs +14 -12
  55. package/dist/components/input-group.d.mts +4 -31
  56. package/dist/components/input-group.mjs +14 -96
  57. package/dist/components/input-number.d.mts +3 -1
  58. package/dist/components/input-number.mjs +50 -28
  59. package/dist/components/input-otp.mjs +9 -7
  60. package/dist/components/input-password.mjs +1 -4
  61. package/dist/components/input-search.mjs +3 -5
  62. package/dist/components/input.mjs +1 -2
  63. package/dist/components/item.d.mts +4 -29
  64. package/dist/components/item.mjs +12 -65
  65. package/dist/components/kbd.mjs +1 -1
  66. package/dist/components/label.d.mts +2 -2
  67. package/dist/components/label.mjs +3 -4
  68. package/dist/components/menubar.d.mts +22 -16
  69. package/dist/components/menubar.mjs +54 -47
  70. package/dist/components/native-select.d.mts +5 -1
  71. package/dist/components/native-select.mjs +9 -6
  72. package/dist/components/navigation-menu.d.mts +30 -13
  73. package/dist/components/navigation-menu.mjs +35 -32
  74. package/dist/components/pagination.d.mts +7 -1
  75. package/dist/components/pagination.mjs +27 -12
  76. package/dist/components/popover.d.mts +40 -7
  77. package/dist/components/popover.mjs +46 -14
  78. package/dist/components/progress-circle.d.mts +3 -47
  79. package/dist/components/progress-circle.mjs +2 -48
  80. package/dist/components/progress.d.mts +2 -2
  81. package/dist/components/progress.mjs +5 -6
  82. package/dist/components/radio-cards.d.mts +3 -3
  83. package/dist/components/radio-cards.mjs +11 -11
  84. package/dist/components/radio-group.d.mts +3 -3
  85. package/dist/components/radio-group.mjs +9 -9
  86. package/dist/components/radio.mjs +2 -3
  87. package/dist/components/resizable.mjs +3 -8
  88. package/dist/components/scroll-area.d.mts +8 -24
  89. package/dist/components/scroll-area.mjs +16 -70
  90. package/dist/components/select.d.mts +14 -14
  91. package/dist/components/select.mjs +47 -47
  92. package/dist/components/separator.d.mts +4 -19
  93. package/dist/components/separator.mjs +6 -27
  94. package/dist/components/sheet.d.mts +18 -31
  95. package/dist/components/sheet.mjs +46 -87
  96. package/dist/components/sidebar.d.mts +3 -19
  97. package/dist/components/sidebar.mjs +48 -84
  98. package/dist/components/skeleton.mjs +1 -1
  99. package/dist/components/slider.d.mts +2 -2
  100. package/dist/components/slider.mjs +9 -11
  101. package/dist/components/sonner.mjs +11 -3
  102. package/dist/components/spinner.mjs +6 -7
  103. package/dist/components/switch.d.mts +5 -2
  104. package/dist/components/switch.mjs +7 -7
  105. package/dist/components/table.mjs +10 -10
  106. package/dist/components/tabs.d.mts +8 -5
  107. package/dist/components/tabs.mjs +18 -12
  108. package/dist/components/textarea.mjs +1 -1
  109. package/dist/components/toggle-group.d.mts +11 -7
  110. package/dist/components/toggle-group.mjs +20 -21
  111. package/dist/components/toggle.d.mts +4 -24
  112. package/dist/components/toggle.mjs +6 -45
  113. package/dist/components/tooltip.d.mts +7 -6
  114. package/dist/components/tooltip.mjs +19 -17
  115. package/dist/hooks/use-animated-value.mjs +0 -1
  116. package/dist/hooks/use-copy-to-clipboard.mjs +0 -1
  117. package/dist/hooks/use-is-mobile.mjs +0 -1
  118. package/dist/hooks/use-media-query.mjs +0 -1
  119. package/dist/hooks/use-mutation-observer.mjs +0 -1
  120. package/dist/hooks/use-pagination.mjs +0 -1
  121. package/dist/index.d.mts +38 -21
  122. package/dist/index.mjs +40 -23
  123. package/dist/lib/utils.d.mts +1 -12
  124. package/dist/lib/utils.mjs +1 -9
  125. package/dist/primitives/checkbox-group.d.mts +9 -11
  126. package/dist/primitives/checkbox-group.mjs +14 -19
  127. package/dist/primitives/input-number.d.mts +3 -4
  128. package/dist/primitives/input-number.mjs +3 -5
  129. package/dist/primitives/input.d.mts +4 -5
  130. package/dist/primitives/input.mjs +2 -3
  131. package/dist/primitives/progress-circle.d.mts +3 -4
  132. package/dist/primitives/progress-circle.mjs +2 -3
  133. package/dist/variants/alert.d.mts +18 -0
  134. package/dist/variants/alert.mjs +15 -0
  135. package/dist/variants/badge.d.mts +22 -0
  136. package/dist/variants/badge.mjs +19 -0
  137. package/dist/variants/button-group.d.mts +18 -0
  138. package/dist/variants/button-group.mjs +15 -0
  139. package/dist/variants/button.d.mts +32 -0
  140. package/dist/variants/button.mjs +34 -0
  141. package/dist/variants/empty.d.mts +18 -0
  142. package/dist/variants/empty.mjs +15 -0
  143. package/dist/variants/field.d.mts +19 -0
  144. package/dist/variants/field.mjs +16 -0
  145. package/dist/variants/input-group.d.mts +43 -0
  146. package/dist/variants/input-group.mjs +34 -0
  147. package/dist/variants/input-number.d.mts +45 -0
  148. package/dist/variants/input-number.mjs +40 -0
  149. package/dist/variants/item.d.mts +38 -0
  150. package/dist/variants/item.mjs +38 -0
  151. package/dist/variants/navigation-menu.d.mts +13 -0
  152. package/dist/variants/navigation-menu.mjs +8 -0
  153. package/dist/variants/progress-circle.d.mts +52 -0
  154. package/dist/variants/progress-circle.mjs +45 -0
  155. package/dist/variants/scroll-area.d.mts +24 -0
  156. package/dist/variants/scroll-area.mjs +58 -0
  157. package/dist/variants/separator.d.mts +23 -0
  158. package/dist/variants/separator.mjs +25 -0
  159. package/dist/variants/sheet.d.mts +20 -0
  160. package/dist/variants/sheet.mjs +17 -0
  161. package/dist/variants/sidebar.d.mts +23 -0
  162. package/dist/variants/sidebar.mjs +25 -0
  163. package/dist/variants/tabs.d.mts +18 -0
  164. package/dist/variants/tabs.mjs +15 -0
  165. package/dist/variants/toggle.d.mts +23 -0
  166. package/dist/variants/toggle.mjs +25 -0
  167. package/package.json +186 -55
  168. package/src/components/accordion.tsx +114 -0
  169. package/src/components/alert-dialog.tsx +298 -0
  170. package/src/components/alert.tsx +94 -0
  171. package/src/components/aspect-ratio.tsx +25 -0
  172. package/src/components/avatar.tsx +171 -0
  173. package/src/components/badge.tsx +35 -0
  174. package/src/components/breadcrumb.tsx +191 -0
  175. package/src/components/button-group.tsx +97 -0
  176. package/src/components/button.tsx +55 -0
  177. package/src/components/calendar.tsx +222 -0
  178. package/src/components/card.tsx +169 -0
  179. package/src/components/carousel.tsx +349 -0
  180. package/src/components/chart.tsx +536 -0
  181. package/src/components/checkbox-cards.tsx +72 -0
  182. package/src/components/checkbox-group.tsx +60 -0
  183. package/src/components/checkbox.tsx +44 -0
  184. package/src/components/collapsible.tsx +57 -0
  185. package/src/components/command.tsx +298 -0
  186. package/src/components/context-menu.tsx +410 -0
  187. package/src/components/dialog.tsx +243 -0
  188. package/src/components/direction.tsx +32 -0
  189. package/src/components/drawer.tsx +209 -0
  190. package/src/components/dropdown-menu.tsx +419 -0
  191. package/src/components/empty.tsx +155 -0
  192. package/src/components/field.tsx +329 -0
  193. package/src/components/form.tsx +258 -0
  194. package/src/components/hover-card.tsx +93 -0
  195. package/src/components/input-group.tsx +185 -0
  196. package/src/components/input-number.tsx +141 -0
  197. package/src/components/input-otp.tsx +132 -0
  198. package/src/components/input-password.tsx +50 -0
  199. package/src/components/input-search.tsx +81 -0
  200. package/src/components/input.tsx +36 -0
  201. package/src/components/item.tsx +266 -0
  202. package/src/components/kbd.tsx +47 -0
  203. package/src/components/label.tsx +36 -0
  204. package/src/components/menubar.tsx +440 -0
  205. package/src/components/native-select.tsx +87 -0
  206. package/src/components/navigation-menu.tsx +235 -0
  207. package/src/components/pagination.tsx +198 -0
  208. package/src/components/popover.tsx +170 -0
  209. package/src/components/progress-circle.tsx +185 -0
  210. package/src/components/progress.tsx +41 -0
  211. package/src/components/radio-cards.tsx +66 -0
  212. package/src/components/radio-group.tsx +59 -0
  213. package/src/components/radio.tsx +40 -0
  214. package/src/components/resizable.tsx +78 -0
  215. package/src/components/scroll-area.tsx +95 -0
  216. package/src/components/select.tsx +296 -0
  217. package/src/components/separator.tsx +60 -0
  218. package/src/components/sheet.tsx +241 -0
  219. package/src/components/sidebar.tsx +926 -0
  220. package/src/components/skeleton.tsx +35 -0
  221. package/src/components/slider.tsx +66 -0
  222. package/src/components/sonner.tsx +57 -0
  223. package/src/components/spinner.tsx +66 -0
  224. package/src/components/switch.tsx +44 -0
  225. package/src/components/table.tsx +183 -0
  226. package/src/components/tabs.tsx +110 -0
  227. package/src/components/textarea.tsx +35 -0
  228. package/src/components/toggle-group.tsx +137 -0
  229. package/src/components/toggle.tsx +30 -0
  230. package/src/components/tooltip.tsx +115 -0
  231. package/src/css/foundation/base.css +50 -0
  232. package/src/css/foundation/motion.css +36 -0
  233. package/src/css/foundation/source.css +3 -0
  234. package/src/css/foundation/tokens.css +71 -0
  235. package/src/css/foundation/variants.css +113 -0
  236. package/src/css/preset.css +5 -195
  237. package/src/css/style.css +1 -1
  238. package/src/css/{amber.css → themes/amber.css} +59 -22
  239. package/src/css/{blue.css → themes/blue.css} +59 -22
  240. package/src/css/{cyan.css → themes/cyan.css} +59 -22
  241. package/src/css/{emerald.css → themes/emerald.css} +59 -22
  242. package/src/css/{fuchsia.css → themes/fuchsia.css} +59 -22
  243. package/src/css/{gray.css → themes/gray.css} +59 -22
  244. package/src/css/{green.css → themes/green.css} +59 -22
  245. package/src/css/{indigo.css → themes/indigo.css} +59 -22
  246. package/src/css/{lime.css → themes/lime.css} +59 -22
  247. package/src/css/{neutral.css → themes/neutral.css} +59 -22
  248. package/src/css/{orange.css → themes/orange.css} +59 -22
  249. package/src/css/{pink.css → themes/pink.css} +59 -22
  250. package/src/css/{purple.css → themes/purple.css} +59 -22
  251. package/src/css/{red.css → themes/red.css} +59 -22
  252. package/src/css/{rose.css → themes/rose.css} +59 -22
  253. package/src/css/{sky.css → themes/sky.css} +59 -22
  254. package/src/css/{slate.css → themes/slate.css} +59 -22
  255. package/src/css/{stone.css → themes/stone.css} +59 -22
  256. package/src/css/{teal.css → themes/teal.css} +59 -22
  257. package/src/css/{violet.css → themes/violet.css} +59 -22
  258. package/src/css/{yellow.css → themes/yellow.css} +59 -22
  259. package/src/css/{zinc.css → themes/zinc.css} +59 -22
  260. package/src/hooks/use-animated-value.ts +91 -0
  261. package/src/hooks/use-copy-to-clipboard.ts +58 -0
  262. package/src/hooks/use-is-mobile.ts +25 -0
  263. package/src/hooks/use-media-query.ts +69 -0
  264. package/src/hooks/use-mutation-observer.ts +51 -0
  265. package/src/hooks/use-pagination.ts +164 -0
  266. package/src/index.ts +679 -0
  267. package/src/lib/utils.ts +5 -0
  268. package/src/primitives/checkbox-group.tsx +346 -0
  269. package/src/primitives/input-number.tsx +967 -0
  270. package/src/primitives/input.tsx +227 -0
  271. package/src/primitives/progress-circle.tsx +507 -0
  272. package/src/variants/alert.ts +34 -0
  273. package/src/variants/badge.ts +39 -0
  274. package/src/variants/button-group.ts +36 -0
  275. package/src/variants/button.ts +56 -0
  276. package/src/variants/empty.ts +34 -0
  277. package/src/variants/field.ts +37 -0
  278. package/src/variants/input-group.ts +80 -0
  279. package/src/variants/input-number.ts +65 -0
  280. package/src/variants/item.ts +68 -0
  281. package/src/variants/navigation-menu.ts +25 -0
  282. package/src/variants/progress-circle.ts +46 -0
  283. package/src/variants/scroll-area.ts +73 -0
  284. package/src/variants/separator.ts +40 -0
  285. package/src/variants/sheet.ts +37 -0
  286. package/src/variants/sidebar.ts +41 -0
  287. package/src/variants/tabs.ts +34 -0
  288. package/src/variants/toggle.ts +40 -0
  289. package/dist/node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/clsx.d.mts +0 -6
@@ -0,0 +1,34 @@
1
+ import type { VariantProps } from "#/lib/utils";
2
+ import { tv } from "#/lib/utils";
3
+
4
+ /* -----------------------------------------------------------------------------
5
+ * Variant: EmptyMedia
6
+ * -------------------------------------------------------------------------- */
7
+
8
+ /**
9
+ * @since 0.3.16-canary.0
10
+ */
11
+ const emptyMediaVariants = tv({
12
+ base: "mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0",
13
+ defaultVariants: {
14
+ variant: "default",
15
+ },
16
+ variants: {
17
+ variant: {
18
+ default: "bg-transparent",
19
+ icon: "flex size-10 shrink-0 items-center justify-center rounded-lg bg-muted text-foreground [&_svg:not([class*='size-'])]:size-6",
20
+ },
21
+ },
22
+ });
23
+
24
+ /**
25
+ * @since 0.3.16-canary.0
26
+ */
27
+ type EmptyMediaVariants = VariantProps<typeof emptyMediaVariants>;
28
+
29
+ /* -----------------------------------------------------------------------------
30
+ * Exports
31
+ * -------------------------------------------------------------------------- */
32
+
33
+ export { emptyMediaVariants };
34
+ export type { EmptyMediaVariants };
@@ -0,0 +1,37 @@
1
+ import type { VariantProps } from "#/lib/utils";
2
+ import { tv } from "#/lib/utils";
3
+
4
+ /* -----------------------------------------------------------------------------
5
+ * Variant: Field
6
+ * -------------------------------------------------------------------------- */
7
+
8
+ /**
9
+ * @since 0.3.16-canary.0
10
+ */
11
+ const fieldVariants = tv({
12
+ base: "group/field flex w-full gap-3 data-[invalid=true]:text-destructive",
13
+ defaultVariants: {
14
+ orientation: "vertical",
15
+ },
16
+ variants: {
17
+ orientation: {
18
+ horizontal:
19
+ "flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px",
20
+ responsive:
21
+ "flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px",
22
+ vertical: "flex-col *:w-full [&>.sr-only]:w-auto",
23
+ },
24
+ },
25
+ });
26
+
27
+ /**
28
+ * @since 0.3.16-canary.0
29
+ */
30
+ type FieldVariants = VariantProps<typeof fieldVariants>;
31
+
32
+ /* -----------------------------------------------------------------------------
33
+ * Exports
34
+ * -------------------------------------------------------------------------- */
35
+
36
+ export { fieldVariants };
37
+ export type { FieldVariants };
@@ -0,0 +1,80 @@
1
+ import type { VariantProps } from "#/lib/utils";
2
+ import { tv } from "#/lib/utils";
3
+
4
+ /* -----------------------------------------------------------------------------
5
+ * Variant: InputGroup
6
+ * -------------------------------------------------------------------------- */
7
+
8
+ /**
9
+ * @since 0.3.16-canary.0
10
+ */
11
+ const inputGroupVariants = tv({
12
+ base: "group/input-group relative flex h-9 w-full min-w-0 items-center rounded-md border border-input shadow-xs transition-[color,box-shadow] outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-input/30 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5",
13
+ });
14
+
15
+ /* -----------------------------------------------------------------------------
16
+ * Variant: InputGroupAddon
17
+ * -------------------------------------------------------------------------- */
18
+
19
+ /**
20
+ * @since 0.3.16-canary.0
21
+ */
22
+ const inputGroupAddonVariants = tv({
23
+ base: "flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-disabled/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-3px)] [&>svg:not([class*='size-'])]:size-4",
24
+ defaultVariants: {
25
+ align: "inline-start",
26
+ },
27
+ variants: {
28
+ align: {
29
+ "block-end": "order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2",
30
+ "block-start":
31
+ "order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2",
32
+ "inline-end": "order-last pr-2 has-[>button]:-mr-1 has-[>kbd]:mr-[-0.15rem]",
33
+ "inline-start": "order-first pl-2 has-[>button]:-ml-1 has-[>kbd]:ml-[-0.15rem]",
34
+ },
35
+ },
36
+ });
37
+
38
+ /* -----------------------------------------------------------------------------
39
+ * Variant: InputGroupButton
40
+ * -------------------------------------------------------------------------- */
41
+
42
+ /**
43
+ * @since 0.3.16-canary.0
44
+ */
45
+ const inputGroupButtonVariants = tv({
46
+ base: "flex items-center gap-2 text-sm shadow-none",
47
+ defaultVariants: {
48
+ size: "xs",
49
+ },
50
+ variants: {
51
+ size: {
52
+ "icon-xs": "size-6 rounded-[calc(var(--radius)-3px)] p-0 has-[>svg]:p-0",
53
+ "icon-sm": "size-8 p-0 has-[>svg]:p-0",
54
+ sm: "",
55
+ xs: "h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5",
56
+ },
57
+ },
58
+ });
59
+
60
+ /**
61
+ * @since 0.3.16-canary.0
62
+ */
63
+ type InputGroupVariants = VariantProps<typeof inputGroupVariants>;
64
+
65
+ /**
66
+ * @since 0.3.16-canary.0
67
+ */
68
+ type InputGroupAddonVariants = VariantProps<typeof inputGroupAddonVariants>;
69
+
70
+ /**
71
+ * @since 0.3.16-canary.0
72
+ */
73
+ type InputGroupButtonVariants = VariantProps<typeof inputGroupButtonVariants>;
74
+
75
+ /* -----------------------------------------------------------------------------
76
+ * Exports
77
+ * -------------------------------------------------------------------------- */
78
+
79
+ export { inputGroupAddonVariants, inputGroupButtonVariants, inputGroupVariants };
80
+ export type { InputGroupAddonVariants, InputGroupButtonVariants, InputGroupVariants };
@@ -0,0 +1,65 @@
1
+ import type { VariantProps } from "#/lib/utils";
2
+ import { tv } from "#/lib/utils";
3
+
4
+ /* -----------------------------------------------------------------------------
5
+ * Variant: InputNumber
6
+ * -------------------------------------------------------------------------- */
7
+
8
+ /**
9
+ * @since 0.3.16-canary.0
10
+ */
11
+ const inputNumberVariants = tv({
12
+ defaultVariants: {
13
+ variant: "stepper",
14
+ },
15
+ slots: {
16
+ /**
17
+ * Split layout: trailing increment button (always on the inline end).
18
+ */
19
+ incrementButton:
20
+ "order-last h-full w-9 shrink-0 rounded-none rounded-r-[calc(var(--radius-md)-1px)] border-l border-l-input text-muted-foreground group-focus-within/input-number:border-l-ring group-has-aria-invalid/input-number:border-l-destructive focus-visible:bg-ring/50 focus-visible:ring-0 group-has-aria-invalid/input-number:focus-visible:bg-destructive/20 dark:group-has-aria-invalid/input-number:focus-visible:bg-destructive/40",
21
+ /**
22
+ * Split layout: leading decrement button (always on the inline start).
23
+ */
24
+ decrementButton:
25
+ "order-first h-full w-9 shrink-0 rounded-none rounded-l-[calc(var(--radius-md)-1px)] border-r border-r-input text-muted-foreground group-focus-within/input-number:border-r-ring group-has-aria-invalid/input-number:border-r-destructive focus-visible:bg-ring/50 focus-visible:ring-0 group-has-aria-invalid/input-number:focus-visible:bg-destructive/20 dark:group-has-aria-invalid/input-number:focus-visible:bg-destructive/40",
26
+ /**
27
+ * Editable numeric input.
28
+ */
29
+ field:
30
+ "h-full min-w-0 flex-1 bg-transparent px-2.5 py-1 outline-hidden selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed",
31
+ /**
32
+ * Outer container.
33
+ */
34
+ root: "group/input-number relative flex h-9 w-full min-w-0 items-center overflow-hidden rounded-md border border-input bg-transparent text-base transition-[color,box-shadow] not-has-disabled:shadow-xs focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/50 has-disabled:opacity-50 has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 motion-reduce:transition-none md:text-sm dark:bg-input/30 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40 [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
35
+ /**
36
+ * Stepper layout: stacked chevron column on the trailing edge.
37
+ */
38
+ stepper:
39
+ "order-last grid h-full w-8 shrink-0 divide-y divide-input border-l border-l-input transition-colors group-focus-within/input-number:divide-ring group-focus-within/input-number:border-l-ring group-has-aria-invalid/input-number:divide-destructive group-has-aria-invalid/input-number:border-l-destructive motion-reduce:transition-none *:[button]:focus-visible:bg-ring/50 *:[button]:focus-visible:ring-0 group-has-aria-invalid/input-number:*:[button]:focus-visible:bg-destructive/20 dark:group-has-aria-invalid/input-number:*:[button]:focus-visible:bg-destructive/40",
40
+ /**
41
+ * Stepper layout: individual chevron button (shared by increment/decrement).
42
+ */
43
+ stepperButton: "h-auto min-w-0 rounded-none px-0 text-muted-foreground",
44
+ },
45
+ variants: {
46
+ variant: {
47
+ split: {
48
+ field: "text-center tabular-nums",
49
+ },
50
+ stepper: {},
51
+ },
52
+ },
53
+ });
54
+
55
+ /**
56
+ * @since 0.3.16-canary.0
57
+ */
58
+ type InputNumberVariants = VariantProps<typeof inputNumberVariants>;
59
+
60
+ /* -----------------------------------------------------------------------------
61
+ * Exports
62
+ * -------------------------------------------------------------------------- */
63
+
64
+ export { inputNumberVariants };
65
+ export type { InputNumberVariants };
@@ -0,0 +1,68 @@
1
+ import type { VariantProps } from "#/lib/utils";
2
+ import { tv } from "#/lib/utils";
3
+
4
+ /* -----------------------------------------------------------------------------
5
+ * Variant: Item
6
+ * -------------------------------------------------------------------------- */
7
+
8
+ /**
9
+ * @since 0.3.16-canary.0
10
+ */
11
+ const itemVariants = tv({
12
+ base: "group/item flex w-full flex-wrap items-center rounded-md border text-sm transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-muted",
13
+ defaultVariants: {
14
+ size: "default",
15
+ variant: "default",
16
+ },
17
+ variants: {
18
+ size: {
19
+ default: "gap-3.5 px-4 py-3.5",
20
+ sm: "gap-2.5 px-3 py-2.5",
21
+ xs: "gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0",
22
+ },
23
+ variant: {
24
+ default: "border-transparent",
25
+ muted: "border-transparent bg-muted/50",
26
+ outline: "border-border",
27
+ },
28
+ },
29
+ });
30
+
31
+ /* -----------------------------------------------------------------------------
32
+ * Variant: ItemMedia
33
+ * -------------------------------------------------------------------------- */
34
+
35
+ /**
36
+ * @since 0.3.16-canary.0
37
+ */
38
+ const itemMediaVariants = tv({
39
+ base: "flex shrink-0 items-center justify-center gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start [&_svg]:pointer-events-none",
40
+ defaultVariants: {
41
+ variant: "default",
42
+ },
43
+ variants: {
44
+ variant: {
45
+ default: "bg-transparent",
46
+ icon: "[&_svg:not([class*='size-'])]:size-4",
47
+ image:
48
+ "size-10 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover",
49
+ },
50
+ },
51
+ });
52
+
53
+ /**
54
+ * @since 0.3.16-canary.0
55
+ */
56
+ type ItemVariants = VariantProps<typeof itemVariants>;
57
+
58
+ /**
59
+ * @since 0.3.16-canary.0
60
+ */
61
+ type ItemMediaVariants = VariantProps<typeof itemMediaVariants>;
62
+
63
+ /* -----------------------------------------------------------------------------
64
+ * Exports
65
+ * -------------------------------------------------------------------------- */
66
+
67
+ export { itemMediaVariants, itemVariants };
68
+ export type { ItemMediaVariants, ItemVariants };
@@ -0,0 +1,25 @@
1
+ import type { VariantProps } from "#/lib/utils";
2
+ import { tv } from "#/lib/utils";
3
+
4
+ /* -----------------------------------------------------------------------------
5
+ * Style: NavigationMenuTrigger
6
+ * -------------------------------------------------------------------------- */
7
+
8
+ /**
9
+ * @since 0.3.16-canary.0
10
+ */
11
+ const navigationMenuTriggerVariants = tv({
12
+ base: "group/navigation-menu-trigger inline-flex h-9 w-max items-center justify-center rounded-md px-4 py-2 text-sm font-medium transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted data-open:bg-muted/50 data-open:hover:bg-muted data-open:focus:bg-muted",
13
+ });
14
+
15
+ /**
16
+ * @since 0.3.16-canary.0
17
+ */
18
+ type NavigationMenuTriggerVariants = VariantProps<typeof navigationMenuTriggerVariants>;
19
+
20
+ /* -----------------------------------------------------------------------------
21
+ * Exports
22
+ * -------------------------------------------------------------------------- */
23
+
24
+ export { navigationMenuTriggerVariants };
25
+ export type { NavigationMenuTriggerVariants };
@@ -0,0 +1,46 @@
1
+ import type { VariantProps } from "#/lib/utils";
2
+ import { tv } from "#/lib/utils";
3
+
4
+ /* -----------------------------------------------------------------------------
5
+ * Variant: ProgressCircle
6
+ * -------------------------------------------------------------------------- */
7
+
8
+ /**
9
+ * @since 0.3.16-canary.0
10
+ */
11
+ const progressCircleVariants = tv({
12
+ defaultVariants: { size: "md", thickness: "regular", variant: "default" },
13
+ slots: {
14
+ indicator: "origin-center",
15
+ label: "absolute inset-0 flex items-center justify-center text-xs font-medium",
16
+ root: "relative inline-flex items-center justify-center",
17
+ svg: "size-full",
18
+ track: "origin-center",
19
+ },
20
+ variants: {
21
+ size: {
22
+ sm: { label: "text-[0.625rem]" },
23
+ md: { label: "text-xs" },
24
+ lg: { label: "text-sm" },
25
+ xl: { label: "text-base" },
26
+ "2xl": { label: "text-lg" },
27
+ },
28
+ thickness: { regular: {}, thick: {}, thin: {} },
29
+ variant: {
30
+ default: { indicator: "text-primary", track: "text-primary/20" },
31
+ destructive: { indicator: "text-destructive", track: "text-destructive/20" },
32
+ },
33
+ },
34
+ });
35
+
36
+ /**
37
+ * @since 0.3.16-canary.0
38
+ */
39
+ type ProgressCircleVariants = VariantProps<typeof progressCircleVariants>;
40
+
41
+ /* -----------------------------------------------------------------------------
42
+ * Exports
43
+ * -------------------------------------------------------------------------- */
44
+
45
+ export { progressCircleVariants };
46
+ export type { ProgressCircleVariants };
@@ -0,0 +1,73 @@
1
+ import type { VariantProps } from "#/lib/utils";
2
+ import { tv } from "#/lib/utils";
3
+
4
+ /* -----------------------------------------------------------------------------
5
+ * Variant: ScrollAreaScrollbar
6
+ * -------------------------------------------------------------------------- */
7
+
8
+ /**
9
+ * @since 0.3.16-canary.0
10
+ */
11
+ const scrollAreaScrollbarVariants = tv({
12
+ base: "flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent",
13
+ compoundVariants: [
14
+ {
15
+ className: "w-1.5",
16
+ orientation: "vertical",
17
+ size: "sm",
18
+ },
19
+ {
20
+ className: "w-2",
21
+ orientation: "vertical",
22
+ size: "md",
23
+ },
24
+ {
25
+ className: "w-2.5",
26
+ orientation: "vertical",
27
+ size: "lg",
28
+ },
29
+ {
30
+ className: "h-1.5",
31
+ orientation: "horizontal",
32
+ size: "sm",
33
+ },
34
+ {
35
+ className: "h-2",
36
+ orientation: "horizontal",
37
+ size: "md",
38
+ },
39
+ {
40
+ className: "h-2.5",
41
+ orientation: "horizontal",
42
+ size: "lg",
43
+ },
44
+ ],
45
+ defaultVariants: {
46
+ orientation: "vertical",
47
+ size: "md",
48
+ },
49
+ variants: {
50
+ orientation: {
51
+ horizontal: "",
52
+ vertical: "",
53
+ },
54
+ size: {
55
+ none: "",
56
+ sm: "",
57
+ md: "",
58
+ lg: "",
59
+ },
60
+ },
61
+ });
62
+
63
+ /**
64
+ * @since 0.3.16-canary.0
65
+ */
66
+ type ScrollAreaScrollbarVariants = VariantProps<typeof scrollAreaScrollbarVariants>;
67
+
68
+ /* -----------------------------------------------------------------------------
69
+ * Exports
70
+ * -------------------------------------------------------------------------- */
71
+
72
+ export { scrollAreaScrollbarVariants };
73
+ export type { ScrollAreaScrollbarVariants };
@@ -0,0 +1,40 @@
1
+ import type { VariantProps } from "#/lib/utils";
2
+ import { tv } from "#/lib/utils";
3
+
4
+ /* -----------------------------------------------------------------------------
5
+ * Variant: Separator
6
+ * -------------------------------------------------------------------------- */
7
+
8
+ /**
9
+ * @since 0.3.16-canary.0
10
+ */
11
+ const separatorVariants = tv({
12
+ base: "shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",
13
+ defaultVariants: {
14
+ align: "center",
15
+ orientation: "horizontal",
16
+ },
17
+ variants: {
18
+ align: {
19
+ center: "relative flex items-center justify-center",
20
+ end: "relative flex items-center justify-end",
21
+ start: "relative flex items-center justify-start",
22
+ },
23
+ orientation: {
24
+ horizontal: "",
25
+ vertical: "",
26
+ },
27
+ },
28
+ });
29
+
30
+ /**
31
+ * @since 0.3.16-canary.0
32
+ */
33
+ type SeparatorVariants = VariantProps<typeof separatorVariants>;
34
+
35
+ /* -----------------------------------------------------------------------------
36
+ * Exports
37
+ * -------------------------------------------------------------------------- */
38
+
39
+ export { separatorVariants };
40
+ export type { SeparatorVariants };
@@ -0,0 +1,37 @@
1
+ import type { VariantProps } from "#/lib/utils";
2
+ import { tv } from "#/lib/utils";
3
+
4
+ /* -----------------------------------------------------------------------------
5
+ * Variant: SheetContent
6
+ * -------------------------------------------------------------------------- */
7
+
8
+ /**
9
+ * @since 0.3.16-canary.0
10
+ */
11
+ const sheetContentVariants = tv({
12
+ base: "fixed z-50 flex flex-col gap-4 bg-popover bg-clip-padding text-sm text-popover-foreground shadow-lg transition ease-ui data-open:animate-in data-open:animation-duration-panel-in data-open:fade-in-0 data-closed:animate-out data-closed:ease-exit data-closed:animation-duration-panel-out data-closed:fade-out-0",
13
+ defaultVariants: {
14
+ side: "right",
15
+ },
16
+ variants: {
17
+ side: {
18
+ bottom: "inset-x-0 bottom-0 h-auto border-t data-open:slide-in-from-bottom-10 data-closed:slide-out-to-bottom-10",
19
+ left: "inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm data-open:slide-in-from-left-10 data-closed:slide-out-to-left-10",
20
+ right:
21
+ "inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm data-open:slide-in-from-right-10 data-closed:slide-out-to-right-10",
22
+ top: "inset-x-0 top-0 h-auto border-b data-open:slide-in-from-top-10 data-closed:slide-out-to-top-10",
23
+ },
24
+ },
25
+ });
26
+
27
+ /**
28
+ * @since 0.3.16-canary.0
29
+ */
30
+ type SheetContentVariants = VariantProps<typeof sheetContentVariants>;
31
+
32
+ /* -----------------------------------------------------------------------------
33
+ * Exports
34
+ * -------------------------------------------------------------------------- */
35
+
36
+ export { sheetContentVariants };
37
+ export type { SheetContentVariants };
@@ -0,0 +1,41 @@
1
+ import type { VariantProps } from "#/lib/utils";
2
+ import { tv } from "#/lib/utils";
3
+
4
+ /* -----------------------------------------------------------------------------
5
+ * Variant: SidebarMenuButton
6
+ * -------------------------------------------------------------------------- */
7
+
8
+ /**
9
+ * @since 0.3.16-canary.0
10
+ */
11
+ const sidebarMenuButtonVariants = tv({
12
+ base: "peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate",
13
+ defaultVariants: {
14
+ size: "default",
15
+ variant: "default",
16
+ },
17
+ variants: {
18
+ size: {
19
+ default: "h-8 text-sm",
20
+ sm: "h-7 text-xs",
21
+ lg: "h-12 text-sm group-data-[collapsible=icon]:p-0!",
22
+ },
23
+ variant: {
24
+ default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
25
+ outline:
26
+ "bg-background shadow-[0_0_0_1px_var(--sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--sidebar-accent)]",
27
+ },
28
+ },
29
+ });
30
+
31
+ /**
32
+ * @since 0.3.16-canary.0
33
+ */
34
+ type SidebarMenuButtonVariants = VariantProps<typeof sidebarMenuButtonVariants>;
35
+
36
+ /* -----------------------------------------------------------------------------
37
+ * Exports
38
+ * -------------------------------------------------------------------------- */
39
+
40
+ export { sidebarMenuButtonVariants };
41
+ export type { SidebarMenuButtonVariants };
@@ -0,0 +1,34 @@
1
+ import type { VariantProps } from "#/lib/utils";
2
+ import { tv } from "#/lib/utils";
3
+
4
+ /* -----------------------------------------------------------------------------
5
+ * Variant: TabsList
6
+ * -------------------------------------------------------------------------- */
7
+
8
+ /**
9
+ * @since 0.3.16-canary.0
10
+ */
11
+ const tabsListVariants = tv({
12
+ base: "group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-0.75 text-muted-foreground group-data-horizontal/tabs:h-9 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none",
13
+ defaultVariants: {
14
+ variant: "default",
15
+ },
16
+ variants: {
17
+ variant: {
18
+ default: "bg-muted",
19
+ line: "gap-1 bg-transparent",
20
+ },
21
+ },
22
+ });
23
+
24
+ /**
25
+ * @since 0.3.16-canary.0
26
+ */
27
+ type TabsListVariants = VariantProps<typeof tabsListVariants>;
28
+
29
+ /* -----------------------------------------------------------------------------
30
+ * Exports
31
+ * -------------------------------------------------------------------------- */
32
+
33
+ export { tabsListVariants };
34
+ export type { TabsListVariants };
@@ -0,0 +1,40 @@
1
+ import type { VariantProps } from "#/lib/utils";
2
+ import { tv } from "#/lib/utils";
3
+
4
+ /* -----------------------------------------------------------------------------
5
+ * Variant: Toggle
6
+ * -------------------------------------------------------------------------- */
7
+
8
+ /**
9
+ * @since 0.3.16-canary.0
10
+ */
11
+ const toggleVariants = tv({
12
+ base: "group/toggle inline-flex items-center justify-center gap-1 rounded-md text-sm font-medium whitespace-nowrap transition-[color,box-shadow] outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
13
+ defaultVariants: {
14
+ size: "default",
15
+ variant: "default",
16
+ },
17
+ variants: {
18
+ size: {
19
+ default: "h-9 min-w-9 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
20
+ sm: "h-8 min-w-8 px-2.5 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5",
21
+ lg: "h-10 min-w-10 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
22
+ },
23
+ variant: {
24
+ default: "bg-transparent",
25
+ outline: "border border-input bg-transparent shadow-xs hover:bg-muted",
26
+ },
27
+ },
28
+ });
29
+
30
+ /**
31
+ * @since 0.3.16-canary.0
32
+ */
33
+ type ToggleVariants = VariantProps<typeof toggleVariants>;
34
+
35
+ /* -----------------------------------------------------------------------------
36
+ * Exports
37
+ * -------------------------------------------------------------------------- */
38
+
39
+ export { toggleVariants };
40
+ export type { ToggleVariants };
@@ -1,6 +0,0 @@
1
- //#region ../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/clsx.d.mts
2
- type ClassValue = ClassArray | ClassDictionary | string | number | bigint | null | boolean | undefined;
3
- type ClassDictionary = Record<string, any>;
4
- type ClassArray = ClassValue[];
5
- //#endregion
6
- export { ClassValue };