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