@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
@@ -1,8 +1,7 @@
1
- "use client";
2
1
  import { cn } from "../lib/utils.mjs";
2
+ import { Slider as Slider$1 } from "radix-ui";
3
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
4
  import { useMemo } from "react";
5
- import * as SliderPrimitive from "@radix-ui/react-slider";
6
5
  //#region src/components/slider.tsx
7
6
  /**
8
7
  * @since 0.3.16-canary.0
@@ -17,24 +16,23 @@ function Slider({ className, defaultValue, max = 100, min = 0, value, ...props }
17
16
  min,
18
17
  max
19
18
  ]);
20
- return /* @__PURE__ */ jsxs(SliderPrimitive.Root, {
21
- className: cn("relative flex w-full items-center", "touch-none select-none", "data-vertical:h-full data-vertical:min-h-44 data-vertical:w-auto data-vertical:flex-col", "data-disabled:opacity-50", className),
19
+ return /* @__PURE__ */ jsxs(Slider$1.Root, {
20
+ className: cn("relative flex w-full touch-none items-center select-none data-vertical:h-full data-vertical:min-h-40 data-vertical:w-auto data-vertical:flex-col data-disabled:opacity-50", className),
22
21
  "data-slot": "slider",
23
22
  defaultValue,
24
23
  max,
25
24
  min,
26
25
  value,
27
26
  ...props,
28
- children: [/* @__PURE__ */ jsx(SliderPrimitive.Track, {
29
- className: cn("relative", "w-full grow overflow-hidden", "rounded-full", "bg-input", "data-horizontal:h-1 data-horizontal:w-full", "data-vertical:h-full data-vertical:w-1"),
27
+ children: [/* @__PURE__ */ jsx(Slider$1.Track, {
28
+ className: "relative grow overflow-hidden rounded-full bg-muted data-horizontal:h-1.5 data-horizontal:w-full data-vertical:h-full data-vertical:w-1.5",
30
29
  "data-slot": "slider-track",
31
- children: /* @__PURE__ */ jsx(SliderPrimitive.Range, {
32
- className: cn("absolute", "bg-primary", "data-horizontal:h-full", "data-vertical:w-full"),
30
+ children: /* @__PURE__ */ jsx(Slider$1.Range, {
31
+ className: "absolute bg-primary select-none data-horizontal:h-full data-vertical:w-full",
33
32
  "data-slot": "slider-range"
34
33
  })
35
- }), Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */ jsx(SliderPrimitive.Thumb, {
36
- "aria-label": "Volume",
37
- className: cn("flex size-4 items-center justify-center", "rounded-full border-2 border-primary", "bg-primary shadow-sm outline-hidden", "after:size-full after:rounded-full after:bg-background after:transition-[width,height]", "focus-visible:ring-4 focus-visible:ring-primary/20", "active:not-data-disabled:after:size-1", "dark:focus-visible:ring-primary/40"),
34
+ }), Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */ jsx(Slider$1.Thumb, {
35
+ className: "block size-4 shrink-0 rounded-full border border-primary bg-white shadow-sm ring-ring/50 transition-[color,box-shadow] select-none hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50",
38
36
  "data-slot": "slider-thumb"
39
37
  }, index))]
40
38
  });
@@ -1,5 +1,4 @@
1
- "use client";
2
- import { cn } from "../lib/utils.mjs";
1
+ import { CircleCheckIcon, InfoIcon, Loader2Icon, OctagonXIcon, TriangleAlertIcon } from "lucide-react";
3
2
  import { jsx } from "react/jsx-runtime";
4
3
  import { useTheme } from "next-themes";
5
4
  import { Toaster as Toaster$1, toast, useSonner } from "sonner";
@@ -10,13 +9,22 @@ import { Toaster as Toaster$1, toast, useSonner } from "sonner";
10
9
  function Toaster({ ...props }) {
11
10
  const { theme = "system" } = useTheme();
12
11
  return /* @__PURE__ */ jsx(Toaster$1, {
13
- className: cn("group", "toaster"),
12
+ className: "toaster group",
13
+ icons: {
14
+ error: /* @__PURE__ */ jsx(OctagonXIcon, { className: "size-4" }),
15
+ info: /* @__PURE__ */ jsx(InfoIcon, { className: "size-4" }),
16
+ loading: /* @__PURE__ */ jsx(Loader2Icon, { className: "size-4 animate-spin" }),
17
+ success: /* @__PURE__ */ jsx(CircleCheckIcon, { className: "size-4" }),
18
+ warning: /* @__PURE__ */ jsx(TriangleAlertIcon, { className: "size-4" })
19
+ },
14
20
  style: {
21
+ "--border-radius": "var(--radius)",
15
22
  "--normal-bg": "var(--popover)",
16
23
  "--normal-border": "var(--border)",
17
24
  "--normal-text": "var(--popover-foreground)"
18
25
  },
19
26
  theme,
27
+ toastOptions: { classNames: { toast: "rounded-2xl" } },
20
28
  ...props
21
29
  });
22
30
  }
@@ -1,7 +1,6 @@
1
- "use client";
2
1
  import { cn } from "../lib/utils.mjs";
2
+ import { VisuallyHidden } from "radix-ui";
3
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
- import { VisuallyHidden } from "@radix-ui/react-visually-hidden";
5
4
  //#region src/components/spinner.tsx
6
5
  const SPINNER_COUNT = 8;
7
6
  /**
@@ -10,10 +9,10 @@ const SPINNER_COUNT = 8;
10
9
  function Spinner({ children, className, loading = true, ...props }) {
11
10
  if (!loading) return children;
12
11
  const spinner = /* @__PURE__ */ jsx("span", {
13
- className: cn("relative flex size-4 items-center justify-center", "opacity-60", className),
12
+ className: cn("relative flex size-4 items-center justify-center opacity-60", className),
14
13
  ...props,
15
14
  children: Array.from({ length: SPINNER_COUNT }, (_, index) => /* @__PURE__ */ jsx("span", {
16
- className: cn("absolute", "h-full rotate-(--spinner-rotate)", "before:block before:h-1/3 before:w-full before:animate-out before:rounded-full before:bg-current before:delay-(--spinner-delay) before:animation-duration-(--spinner-duration) before:fade-out-25 before:repeat-infinite"),
15
+ className: "absolute h-full rotate-(--spinner-rotate) before:block before:h-1/3 before:w-full before:animate-out before:rounded-full before:bg-current before:delay-(--spinner-delay) before:animation-duration-(--spinner-duration) before:fade-out-25 before:repeat-infinite motion-reduce:before:animate-none",
17
16
  style: {
18
17
  "--spinner-delay": `-${((SPINNER_COUNT - index) * 100).toString()}ms`,
19
18
  "--spinner-duration": `${(SPINNER_COUNT * 100).toString()}ms`,
@@ -28,12 +27,12 @@ function Spinner({ children, className, loading = true, ...props }) {
28
27
  children: [
29
28
  /* @__PURE__ */ jsx("span", {
30
29
  "aria-hidden": true,
31
- className: cn("contents", "invisible"),
30
+ className: "invisible contents",
32
31
  children
33
32
  }),
34
- /* @__PURE__ */ jsx(VisuallyHidden, { children }),
33
+ /* @__PURE__ */ jsx(VisuallyHidden.Root, { children }),
35
34
  /* @__PURE__ */ jsx("span", {
36
- className: cn("absolute flex items-center justify-center", "inset-0"),
35
+ className: "absolute inset-0 flex items-center justify-center",
37
36
  children: spinner
38
37
  })
39
38
  ]
@@ -1,16 +1,19 @@
1
+ import { Switch as Switch$1 } from "radix-ui";
1
2
  import { ComponentProps, JSX } from "react";
2
- import * as SwitchPrimitives from "@radix-ui/react-switch";
3
3
 
4
4
  //#region src/components/switch.d.ts
5
5
  /**
6
6
  * @since 0.3.16-canary.0
7
7
  */
8
- type SwitchProps = ComponentProps<typeof SwitchPrimitives.Root>;
8
+ type SwitchProps = ComponentProps<typeof Switch$1.Root> & {
9
+ size?: "default" | "sm";
10
+ };
9
11
  /**
10
12
  * @since 0.3.16-canary.0
11
13
  */
12
14
  declare function Switch({
13
15
  className,
16
+ size,
14
17
  ...props
15
18
  }: SwitchProps): JSX.Element;
16
19
  //#endregion
@@ -1,18 +1,18 @@
1
- "use client";
2
1
  import { cn } from "../lib/utils.mjs";
2
+ import { Switch as Switch$1 } from "radix-ui";
3
3
  import { jsx } from "react/jsx-runtime";
4
- import * as SwitchPrimitives from "@radix-ui/react-switch";
5
4
  //#region src/components/switch.tsx
6
5
  /**
7
6
  * @since 0.3.16-canary.0
8
7
  */
9
- function Switch({ className, ...props }) {
10
- return /* @__PURE__ */ jsx(SwitchPrimitives.Root, {
11
- className: cn("peer inline-flex h-5 w-9 shrink-0 items-center p-0.75", "rounded-full border border-transparent shadow-xs outline-hidden", "transition-all", "focus-visible:ring-3 focus-visible:ring-ring/50", "focus-visible:not-data-checked:border-ring/60", "disabled:opacity-50", "data-checked:bg-primary", "data-checked:focus-visible:ring-primary/20", "dark:data-checked:focus-visible:ring-primary/40", "data-unchecked:bg-input", "dark:data-unchecked:bg-input/80", className),
8
+ function Switch({ className, size = "default", ...props }) {
9
+ return /* @__PURE__ */ jsx(Switch$1.Root, {
10
+ className: cn("peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-8 data-[size=sm]:h-3.5 data-[size=sm]:w-6 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50", className),
11
+ "data-size": size,
12
12
  "data-slot": "switch",
13
13
  ...props,
14
- children: /* @__PURE__ */ jsx(SwitchPrimitives.Thumb, {
15
- className: cn("block", "size-3.5", "rounded-full", "bg-background shadow-sm", "pointer-events-none transition-transform", "dark:not-data-checked:bg-foreground", "data-checked:translate-x-3.5", "data-unchecked:translate-x-0"),
14
+ children: /* @__PURE__ */ jsx(Switch$1.Thumb, {
15
+ className: "pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground",
16
16
  "data-slot": "switch-thumb"
17
17
  })
18
18
  });
@@ -6,10 +6,10 @@ import { jsx } from "react/jsx-runtime";
6
6
  */
7
7
  function Table({ className, ...props }) {
8
8
  return /* @__PURE__ */ jsx("div", {
9
- className: cn("relative", "w-full overflow-auto"),
10
- "data-slot": "table-cotainer",
9
+ className: "relative w-full overflow-x-auto",
10
+ "data-slot": "table-container",
11
11
  children: /* @__PURE__ */ jsx("table", {
12
- className: cn("w-full text-sm", "caption-bottom", className),
12
+ className: cn("w-full caption-bottom text-sm", className),
13
13
  "data-slot": "table",
14
14
  ...props
15
15
  })
@@ -20,7 +20,7 @@ function Table({ className, ...props }) {
20
20
  */
21
21
  function TableHeader({ className, ...props }) {
22
22
  return /* @__PURE__ */ jsx("thead", {
23
- className: cn("*:border-b", "*:has-aria-expanded:bg-transparent", className),
23
+ className: cn("[&_tr]:border-b", className),
24
24
  "data-slot": "table-header",
25
25
  ...props
26
26
  });
@@ -30,7 +30,7 @@ function TableHeader({ className, ...props }) {
30
30
  */
31
31
  function TableBody({ className, ...props }) {
32
32
  return /* @__PURE__ */ jsx("tbody", {
33
- className: cn("*:last-child:border-0", className),
33
+ className: cn("[&_tr:last-child]:border-0", className),
34
34
  "data-slot": "table-body",
35
35
  ...props
36
36
  });
@@ -40,7 +40,7 @@ function TableBody({ className, ...props }) {
40
40
  */
41
41
  function TableFooter({ className, ...props }) {
42
42
  return /* @__PURE__ */ jsx("tfoot", {
43
- className: cn("bg-muted/50 font-medium", "*:border-t *:border-b-0", "*:has-aria-expanded:bg-transparent", className),
43
+ className: cn("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0", className),
44
44
  "data-slot": "table-footer",
45
45
  ...props
46
46
  });
@@ -50,7 +50,7 @@ function TableFooter({ className, ...props }) {
50
50
  */
51
51
  function TableRow({ className, ...props }) {
52
52
  return /* @__PURE__ */ jsx("tr", {
53
- className: cn("border-b", "transition-colors", "hover:bg-muted/50", "has-aria-expanded:bg-muted/50", "data-selected:bg-muted", className),
53
+ className: cn("border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-selected:bg-muted", className),
54
54
  "data-slot": "table-row",
55
55
  ...props
56
56
  });
@@ -60,7 +60,7 @@ function TableRow({ className, ...props }) {
60
60
  */
61
61
  function TableHead({ className, ...props }) {
62
62
  return /* @__PURE__ */ jsx("th", {
63
- className: cn("p-2", "text-left align-middle font-medium", className),
63
+ className: cn("h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0", className),
64
64
  "data-slot": "table-head",
65
65
  ...props
66
66
  });
@@ -70,7 +70,7 @@ function TableHead({ className, ...props }) {
70
70
  */
71
71
  function TableCell({ className, ...props }) {
72
72
  return /* @__PURE__ */ jsx("td", {
73
- className: cn("p-2", "align-middle", className),
73
+ className: cn("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0", className),
74
74
  "data-slot": "table-cell",
75
75
  ...props
76
76
  });
@@ -80,7 +80,7 @@ function TableCell({ className, ...props }) {
80
80
  */
81
81
  function TableCaption({ className, ...props }) {
82
82
  return /* @__PURE__ */ jsx("caption", {
83
- className: cn("mt-4", "text-sm text-muted-foreground", className),
83
+ className: cn("mt-4 text-sm text-muted-foreground", className),
84
84
  "data-slot": "table-caption",
85
85
  ...props
86
86
  });
@@ -1,33 +1,36 @@
1
+ import { TabsListVariants } from "../variants/tabs.mjs";
2
+ import { Tabs as Tabs$1 } from "radix-ui";
1
3
  import { ComponentProps, JSX } from "react";
2
- import * as TabsPrimitive from "@radix-ui/react-tabs";
3
4
 
4
5
  //#region src/components/tabs.d.ts
5
6
  /**
6
7
  * @since 0.3.16-canary.0
7
8
  */
8
- type TabsProps = ComponentProps<typeof TabsPrimitive.Root>;
9
+ type TabsProps = ComponentProps<typeof Tabs$1.Root>;
9
10
  /**
10
11
  * @since 0.3.16-canary.0
11
12
  */
12
13
  declare function Tabs({
13
14
  className,
15
+ orientation,
14
16
  ...props
15
17
  }: TabsProps): JSX.Element;
16
18
  /**
17
19
  * @since 0.3.16-canary.0
18
20
  */
19
- type TabsListProps = ComponentProps<typeof TabsPrimitive.List>;
21
+ type TabsListProps = ComponentProps<typeof Tabs$1.List> & TabsListVariants;
20
22
  /**
21
23
  * @since 0.3.16-canary.0
22
24
  */
23
25
  declare function TabsList({
24
26
  className,
27
+ variant,
25
28
  ...props
26
29
  }: TabsListProps): JSX.Element;
27
30
  /**
28
31
  * @since 0.3.16-canary.0
29
32
  */
30
- type TabsTriggerProps = ComponentProps<typeof TabsPrimitive.Trigger>;
33
+ type TabsTriggerProps = ComponentProps<typeof Tabs$1.Trigger>;
31
34
  /**
32
35
  * @since 0.3.16-canary.0
33
36
  */
@@ -38,7 +41,7 @@ declare function TabsTrigger({
38
41
  /**
39
42
  * @since 0.3.16-canary.0
40
43
  */
41
- type TabsContentProps = ComponentProps<typeof TabsPrimitive.Content>;
44
+ type TabsContentProps = ComponentProps<typeof Tabs$1.Content>;
42
45
  /**
43
46
  * @since 0.3.16-canary.0
44
47
  */
@@ -1,25 +1,31 @@
1
- "use client";
2
1
  import { cn } from "../lib/utils.mjs";
2
+ import { tabsListVariants } from "../variants/tabs.mjs";
3
+ import { Tabs as Tabs$1 } from "radix-ui";
3
4
  import { jsx } from "react/jsx-runtime";
4
- import * as TabsPrimitive from "@radix-ui/react-tabs";
5
5
  //#region src/components/tabs.tsx
6
6
  /**
7
7
  * @since 0.3.16-canary.0
8
8
  */
9
- function Tabs({ className, ...props }) {
10
- return /* @__PURE__ */ jsx(TabsPrimitive.Root, {
11
- className: cn("flex flex-col gap-2", className),
9
+ function Tabs({ className, orientation = "horizontal", ...props }) {
10
+ return /* @__PURE__ */ jsx(Tabs$1.Root, {
11
+ className: cn("group/tabs flex gap-2 data-horizontal:flex-col", className),
12
+ "data-orientation": orientation,
12
13
  "data-slot": "tabs",
14
+ orientation,
13
15
  ...props
14
16
  });
15
17
  }
16
18
  /**
17
19
  * @since 0.3.16-canary.0
18
20
  */
19
- function TabsList({ className, ...props }) {
20
- return /* @__PURE__ */ jsx(TabsPrimitive.List, {
21
- className: cn("inline-flex w-fit items-center justify-center gap-1 px-1 py-1", "rounded-xl", "bg-muted text-muted-foreground", className),
21
+ function TabsList({ className, variant = "default", ...props }) {
22
+ return /* @__PURE__ */ jsx(Tabs$1.List, {
23
+ className: tabsListVariants({
24
+ className,
25
+ variant
26
+ }),
22
27
  "data-slot": "tabs-list",
28
+ "data-variant": variant,
23
29
  ...props
24
30
  });
25
31
  }
@@ -27,8 +33,8 @@ function TabsList({ className, ...props }) {
27
33
  * @since 0.3.16-canary.0
28
34
  */
29
35
  function TabsTrigger({ className, ...props }) {
30
- return /* @__PURE__ */ jsx(TabsPrimitive.Trigger, {
31
- className: cn("inline-flex items-center justify-center gap-1.5", "px-2 py-1.5", "rounded-lg", "text-sm font-medium whitespace-nowrap text-muted-foreground", "transition", "not-dark:outline-hidden", "hover:not-disabled:text-foreground", "focus-visible:ring-3 focus-visible:ring-ring/50", "disabled:opacity-50", "dark:focus-visible:-outline-offset-1 dark:focus-visible:outline-ring", "data-active:bg-background data-active:text-foreground data-active:shadow-sm", "dark:data-active:bg-input/50", "dark:focus-visible:data-active:outline-1", "[&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
36
+ return /* @__PURE__ */ jsx(Tabs$1.Trigger, {
37
+ className: cn("relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", "group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent", "data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground", "after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:-bottom-1.25 group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100", className),
32
38
  "data-slot": "tabs-trigger",
33
39
  ...props
34
40
  });
@@ -37,8 +43,8 @@ function TabsTrigger({ className, ...props }) {
37
43
  * @since 0.3.16-canary.0
38
44
  */
39
45
  function TabsContent({ className, ...props }) {
40
- return /* @__PURE__ */ jsx(TabsPrimitive.Content, {
41
- className: cn("mt-2", "rounded-xl ring-ring/50 outline-ring", "focus-visible:ring-4 focus-visible:outline-1", className),
46
+ return /* @__PURE__ */ jsx(Tabs$1.Content, {
47
+ className: cn("flex-1 text-sm outline-none", className),
42
48
  "data-slot": "tabs-content",
43
49
  ...props
44
50
  });
@@ -6,7 +6,7 @@ import { jsx } from "react/jsx-runtime";
6
6
  */
7
7
  function Textarea({ className, ...props }) {
8
8
  return /* @__PURE__ */ jsx("textarea", {
9
- className: cn("flex min-h-16 w-full grow px-3 py-2", "rounded-lg border border-input shadow-xs outline-hidden", "text-base", "transition", "placeholder:text-muted-foreground", "hover:not-disabled:not-focus-visible:border-ring/60", "focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50", "disabled:opacity-50", "aria-invalid:border-destructive", "focus-within:aria-invalid:ring-destructive/20", "hover:not-disabled:not-focus-within:aria-invalid:border-destructive/60", "md:text-sm", "dark:bg-input/30", "dark:focus-within:aria-invalid:ring-destructive/40", className),
9
+ className: cn("flex field-sizing-content min-h-16 w-full rounded-md border border-input bg-transparent px-2.5 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40", className),
10
10
  "data-slot": "textarea",
11
11
  ...props
12
12
  });
@@ -1,16 +1,18 @@
1
- import { ToggleVariants } from "./toggle.mjs";
1
+ import { VariantProps } from "../lib/utils.mjs";
2
+ import { toggleVariants } from "../variants/toggle.mjs";
3
+ import { ToggleGroup as ToggleGroup$1 } from "radix-ui";
2
4
  import { ComponentProps, JSX } from "react";
3
- import { Scope } from "@radix-ui/react-context";
4
- import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
5
+ import { Context } from "radix-ui/internal";
5
6
 
6
7
  //#region src/components/toggle-group.d.ts
7
8
  type ScopedProps<P> = P & {
8
- __scopeToggleGroup?: Scope;
9
+ __scopeToggleGroup?: Context.Scope;
9
10
  };
10
11
  /**
11
12
  * @since 0.3.16-canary.0
12
13
  */
13
- type ToggleGroupProps = ComponentProps<typeof ToggleGroupPrimitive.Root> & ToggleVariants & {
14
+ type ToggleGroupProps = ComponentProps<typeof ToggleGroup$1.Root> & VariantProps<typeof toggleVariants> & {
15
+ orientation?: "horizontal" | "vertical";
14
16
  spacing?: number;
15
17
  };
16
18
  /**
@@ -20,6 +22,7 @@ declare function ToggleGroup({
20
22
  __scopeToggleGroup,
21
23
  children,
22
24
  className,
25
+ orientation,
23
26
  size,
24
27
  spacing,
25
28
  variant,
@@ -28,14 +31,15 @@ declare function ToggleGroup({
28
31
  /**
29
32
  * @since 0.3.16-canary.0
30
33
  */
31
- type ToggleGroupItemProps = ScopedProps<ComponentProps<typeof ToggleGroupPrimitive.Item>>;
34
+ type ToggleGroupItemProps = ScopedProps<ComponentProps<typeof ToggleGroup$1.Item> & VariantProps<typeof toggleVariants>>;
32
35
  /**
33
36
  * @since 0.3.16-canary.0
34
37
  */
35
38
  declare function ToggleGroupItem({
36
39
  __scopeToggleGroup,
37
- children,
38
40
  className,
41
+ size,
42
+ variant,
39
43
  ...props
40
44
  }: ToggleGroupItemProps): JSX.Element;
41
45
  //#endregion
@@ -1,27 +1,27 @@
1
- "use client";
2
1
  import { cn } from "../lib/utils.mjs";
3
- import { toggleVariants } from "./toggle.mjs";
2
+ import { toggleVariants } from "../variants/toggle.mjs";
3
+ import { ToggleGroup as ToggleGroup$1 } from "radix-ui";
4
4
  import { jsx } from "react/jsx-runtime";
5
- import { createContextScope } from "@radix-ui/react-context";
6
- import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
7
- import { createToggleGroupScope } from "@radix-ui/react-toggle-group";
5
+ import { Context } from "radix-ui/internal";
8
6
  //#region src/components/toggle-group.tsx
9
7
  const TOGGLE_GROUP_NAME = "ToggleGroup";
10
- const [createToggleGroupContext] = createContextScope(TOGGLE_GROUP_NAME, [createToggleGroupScope]);
11
- const useToggleGroupScope = createToggleGroupScope();
8
+ const [createToggleGroupContext] = Context.createContextScope(TOGGLE_GROUP_NAME, [ToggleGroup$1.createToggleGroupScope]);
9
+ const useToggleGroupScope = ToggleGroup$1.createToggleGroupScope();
12
10
  const [ToggleGroupProvider, useToggleGroupContext] = createToggleGroupContext(TOGGLE_GROUP_NAME);
13
11
  /**
14
12
  * @since 0.3.16-canary.0
15
13
  */
16
- function ToggleGroup({ __scopeToggleGroup, children, className, size, spacing = 0, variant, ...props }) {
14
+ function ToggleGroup({ __scopeToggleGroup, children, className, orientation = "horizontal", size, spacing = 2, variant, ...props }) {
17
15
  const toggleGroupScope = useToggleGroupScope(__scopeToggleGroup);
18
16
  return /* @__PURE__ */ jsx(ToggleGroupProvider, {
17
+ orientation,
19
18
  scope: __scopeToggleGroup,
20
19
  size,
21
20
  spacing,
22
21
  variant,
23
- children: /* @__PURE__ */ jsx(ToggleGroupPrimitive.Root, {
24
- className: cn("group/toggle-group flex w-fit items-center gap-[--spacing(var(--gap))]", "rounded-lg", "data-[spacing=default]:data-[variant=outline]:shadow-xs", className),
22
+ children: /* @__PURE__ */ jsx(ToggleGroup$1.Root, {
23
+ className: cn("group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-md data-[spacing=0]:data-[variant=outline]:shadow-xs data-vertical:flex-col data-vertical:items-stretch", className),
24
+ "data-orientation": orientation,
25
25
  "data-size": size,
26
26
  "data-slot": "toggle-group",
27
27
  "data-spacing": spacing,
@@ -37,22 +37,21 @@ const TOGGLE_GROUP_ITEM_NAME = "ToggleGroupItem";
37
37
  /**
38
38
  * @since 0.3.16-canary.0
39
39
  */
40
- function ToggleGroupItem({ __scopeToggleGroup, children, className, ...props }) {
41
- const { size, spacing, variant } = useToggleGroupContext(TOGGLE_GROUP_ITEM_NAME, __scopeToggleGroup);
40
+ function ToggleGroupItem({ __scopeToggleGroup, className, size = "default", variant = "default", ...props }) {
41
+ const context = useToggleGroupContext(TOGGLE_GROUP_ITEM_NAME, __scopeToggleGroup);
42
42
  const toggleGroupScope = useToggleGroupScope(__scopeToggleGroup);
43
- return /* @__PURE__ */ jsx(ToggleGroupPrimitive.Item, {
44
- className: cn("w-auto min-w-0 shrink-0 px-3", "focus:z-10", "focus-visible:z-10", "data-[spacing=0]:rounded-none data-[spacing=0]:shadow-none", "data-[spacing=0]:first:rounded-l-lg", "data-[spacing=0]:last:rounded-r-lg", "data-[spacing=0]:data-[variant=outline]:border-l-0", "data-[spacing=0]:data-[variant=outline]:first:border-l", toggleVariants({
43
+ return /* @__PURE__ */ jsx(ToggleGroup$1.Item, {
44
+ className: cn("shrink-0 group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 group-data-[spacing=0]/toggle-group:shadow-none focus:z-10 focus-visible:z-10 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-end]:pr-1.5 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-start]:pl-1.5 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-md group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-md group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-md group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-md group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t data-on:bg-muted", toggleVariants({
45
45
  className,
46
- size,
47
- variant
46
+ size: context.size ?? size,
47
+ variant: context.variant ?? variant
48
48
  })),
49
- "data-size": size,
49
+ "data-size": context.size ?? size,
50
50
  "data-slot": "toggle-group-item",
51
- "data-spacing": spacing,
52
- "data-variant": variant,
51
+ "data-spacing": context.spacing,
52
+ "data-variant": context.variant ?? variant,
53
53
  ...toggleGroupScope,
54
- ...props,
55
- children
54
+ ...props
56
55
  });
57
56
  }
58
57
  //#endregion
@@ -1,40 +1,20 @@
1
- import { VariantProps } from "../lib/utils.mjs";
2
- import * as _$_codefast_tailwind_variants0 from "@codefast/tailwind-variants";
1
+ import { ToggleVariants } from "../variants/toggle.mjs";
2
+ import { Toggle as Toggle$1 } from "radix-ui";
3
3
  import { ComponentProps, JSX } from "react";
4
- import * as TogglePrimitive from "@radix-ui/react-toggle";
5
4
 
6
5
  //#region src/components/toggle.d.ts
7
6
  /**
8
7
  * @since 0.3.16-canary.0
9
8
  */
10
- declare const toggleVariants: _$_codefast_tailwind_variants0.VariantResolver<{
11
- size: {
12
- default: string[];
13
- lg: string[];
14
- sm: string[];
15
- };
16
- variant: {
17
- default: string;
18
- outline: string[];
19
- };
20
- }, Record<string, never>>;
21
- /**
22
- * @since 0.3.16-canary.0
23
- */
24
- type ToggleVariants = VariantProps<typeof toggleVariants>;
25
- /**
26
- * @since 0.3.16-canary.0
27
- */
28
- interface ToggleProps extends ComponentProps<typeof TogglePrimitive.Root>, ToggleVariants {}
9
+ interface ToggleProps extends ComponentProps<typeof Toggle$1.Root>, ToggleVariants {}
29
10
  /**
30
11
  * @since 0.3.16-canary.0
31
12
  */
32
13
  declare function Toggle({
33
- children,
34
14
  className,
35
15
  size,
36
16
  variant,
37
17
  ...props
38
18
  }: ToggleProps): JSX.Element;
39
19
  //#endregion
40
- export { Toggle, type ToggleProps, type ToggleVariants, toggleVariants };
20
+ export { Toggle, type ToggleProps };
@@ -1,59 +1,20 @@
1
- "use client";
2
- import { tv } from "../lib/utils.mjs";
1
+ import { toggleVariants } from "../variants/toggle.mjs";
2
+ import { Toggle as Toggle$1 } from "radix-ui";
3
3
  import { jsx } from "react/jsx-runtime";
4
- import * as TogglePrimitive from "@radix-ui/react-toggle";
5
4
  //#region src/components/toggle.tsx
6
5
  /**
7
6
  * @since 0.3.16-canary.0
8
7
  */
9
- const toggleVariants = tv({
10
- base: [
11
- "inline-flex items-center justify-center gap-2",
12
- "rounded-lg outline-none",
13
- "text-sm font-medium whitespace-nowrap",
14
- "transition-[color,box-shadow]",
15
- "hover:bg-muted hover:text-muted-foreground",
16
- "focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50",
17
- "disabled:pointer-events-none disabled:opacity-50",
18
- "aria-invalid:border-destructive aria-invalid:ring-destructive/20",
19
- "data-[state=on]:bg-accent data-[state=on]:text-accent-foreground",
20
- "dark:aria-invalid:ring-destructive/40",
21
- "[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4"
22
- ],
23
- variants: {
24
- size: {
25
- default: ["h-9 min-w-9", "px-2"],
26
- lg: ["h-10 min-w-10", "px-2.5"],
27
- sm: ["h-8 min-w-8", "px-1.5"]
28
- },
29
- variant: {
30
- default: "bg-transparent",
31
- outline: [
32
- "border border-input",
33
- "bg-transparent shadow-xs",
34
- "hover:bg-accent hover:text-accent-foreground"
35
- ]
36
- }
37
- },
38
- defaultVariants: {
39
- size: "default",
40
- variant: "default"
41
- }
42
- });
43
- /**
44
- * @since 0.3.16-canary.0
45
- */
46
- function Toggle({ children, className, size, variant, ...props }) {
47
- return /* @__PURE__ */ jsx(TogglePrimitive.Root, {
8
+ function Toggle({ className, size, variant, ...props }) {
9
+ return /* @__PURE__ */ jsx(Toggle$1.Root, {
48
10
  className: toggleVariants({
49
11
  className,
50
12
  size,
51
13
  variant
52
14
  }),
53
15
  "data-slot": "toggle",
54
- ...props,
55
- children
16
+ ...props
56
17
  });
57
18
  }
58
19
  //#endregion
59
- export { Toggle, toggleVariants };
20
+ export { Toggle };