@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
@@ -1,20 +1,22 @@
1
- "use client";
2
- import { cn } from "../lib/utils.mjs";
3
1
  import { buttonVariants } from "../variants/button.mjs";
4
2
  import { Spinner } from "./spinner.mjs";
5
3
  import { DecrementButton as InputNumberDecrementButton, Field as InputNumberField, IncrementButton as InputNumberIncrementButton, InputNumber as InputNumber$1 } from "../primitives/input-number.mjs";
6
- import { ChevronDownIcon, ChevronUpIcon } from "lucide-react";
4
+ import { inputNumberVariants } from "../variants/input-number.mjs";
5
+ import { ChevronDownIcon, ChevronUpIcon, MinusIcon, PlusIcon } from "lucide-react";
7
6
  import { jsx, jsxs } from "react/jsx-runtime";
8
7
  //#region src/components/input-number.tsx
9
8
  /**
10
9
  * @since 0.3.16-canary.0
11
10
  */
12
- function InputNumber({ ariaDecrementLabel, ariaIncrementLabel, className, defaultValue, disabled, formatOptions, id, loaderPosition, loading, max, min, onChange, prefix, readOnly, spinner, step, suffix, value, ...props }) {
11
+ function InputNumber({ ariaDecrementLabel, ariaIncrementLabel, className, defaultValue, disabled, formatOptions, id, loaderPosition, loading, max, min, onChange, prefix, readOnly, spinner, step, suffix, value, variant = "stepper", ...props }) {
12
+ const isSplit = variant === "split";
13
+ const { decrementButton, field, incrementButton, root, stepper, stepperButton } = inputNumberVariants({ variant });
13
14
  return /* @__PURE__ */ jsxs(InputNumber$1, {
14
15
  ariaDecrementLabel,
15
16
  ariaIncrementLabel,
16
- className: cn("group peer flex h-9 w-full grow items-center gap-3 px-3 pr-0", "rounded-lg border border-input", "text-base", "transition", "motion-reduce:transition-none", "not-has-disabled:shadow-xs", "focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/50", "hover:not-has-disabled:not-focus-within:border-ring/60", "focus-within:has-aria-invalid:ring-destructive/20", "hover:not-has-disabled:not-focus-within:has-aria-invalid:border-destructive/60", "md:text-sm", "dark:bg-input/30", "dark:focus-within:has-aria-invalid:ring-destructive/40", "has-disabled:opacity-50", "has-aria-invalid:border-destructive", "[&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", "[&>svg]:text-muted-foreground", className),
17
+ className: root({ className }),
17
18
  "data-slot": "input-number",
19
+ "data-variant": variant,
18
20
  defaultValue,
19
21
  disabled,
20
22
  formatOptions,
@@ -30,34 +32,54 @@ function InputNumber({ ariaDecrementLabel, ariaIncrementLabel, className, defaul
30
32
  suffix,
31
33
  value,
32
34
  onChange,
33
- children: [/* @__PURE__ */ jsx(InputNumberField, {
34
- autoCapitalize: "none",
35
- autoComplete: "off",
36
- autoCorrect: "off",
37
- className: cn("h-9 w-full min-w-0 px-3 py-1", "rounded-md border border-input", "bg-transparent shadow-xs outline-none", "text-base", "transition-[color,box-shadow]", "motion-reduce:transition-none", "selection:bg-primary selection:text-primary-foreground", "file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground", "placeholder:text-muted-foreground", "focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50", "disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50", "aria-invalid:border-destructive aria-invalid:ring-destructive/20", "md:text-sm", "dark:bg-input/30", "dark:aria-invalid:ring-destructive/40"),
38
- spellCheck: "false",
39
- ...props
40
- }), /* @__PURE__ */ jsxs("div", {
41
- className: cn("order-last ml-auto grid h-full shrink-0", "divide-y divide-input border-l border-l-input", "transition", "motion-reduce:transition-none", "group-hover:not-group-focus-within:not-has-disabled:border-l-border-ring/60 group-hover:not-group-focus-within:not-has-disabled:divide-border-ring/60", "group-focus-within:divide-ring group-focus-within:border-l-ring", "group-has-aria-invalid:divide-destructive group-has-aria-invalid:border-l-destructive", "group-hover:group-has-aria-invalid:not-group-focus-within:not-has-disabled:divide-destructive/60 group-hover:group-has-aria-invalid:not-group-focus-within:not-has-disabled:border-l-destructive/60", "*:[button]:focus-visible:bg-ring/50 *:[button]:focus-visible:ring-0", "group-has-aria-invalid:*:[button]:focus-visible:bg-destructive/20", "dark:group-has-aria-invalid:*:[button]:focus-visible:bg-destructive/40"),
42
- "data-slot": "input-number-buttons",
43
- children: [/* @__PURE__ */ jsx(InputNumberIncrementButton, {
44
- "aria-label": "Increment",
35
+ children: [
36
+ isSplit ? /* @__PURE__ */ jsx(InputNumberDecrementButton, {
37
+ "aria-label": "Decrement",
45
38
  className: buttonVariants({
46
- className: "text-muted-foreground h-auto rounded-none rounded-tr-[calc(var(--radius-lg)-1px)]",
39
+ className: decrementButton(),
47
40
  variant: "ghost"
48
41
  }),
49
- "data-slot": "input-number-increment-button",
50
- children: /* @__PURE__ */ jsx(ChevronUpIcon, {})
51
- }), /* @__PURE__ */ jsx(InputNumberDecrementButton, {
52
- "aria-label": "Decrement",
42
+ "data-slot": "input-number-decrement-button",
43
+ children: /* @__PURE__ */ jsx(MinusIcon, {})
44
+ }) : null,
45
+ /* @__PURE__ */ jsx(InputNumberField, {
46
+ autoCapitalize: "none",
47
+ autoComplete: "off",
48
+ autoCorrect: "off",
49
+ className: field(),
50
+ spellCheck: "false",
51
+ ...props
52
+ }),
53
+ isSplit ? /* @__PURE__ */ jsx(InputNumberIncrementButton, {
54
+ "aria-label": "Increment",
53
55
  className: buttonVariants({
54
- className: "text-muted-foreground h-auto rounded-none rounded-br-[calc(var(--radius-lg)-1px)]",
56
+ className: incrementButton(),
55
57
  variant: "ghost"
56
58
  }),
57
- "data-slot": "input-number-decrement-button",
58
- children: /* @__PURE__ */ jsx(ChevronDownIcon, {})
59
- })]
60
- })]
59
+ "data-slot": "input-number-increment-button",
60
+ children: /* @__PURE__ */ jsx(PlusIcon, {})
61
+ }) : /* @__PURE__ */ jsxs("div", {
62
+ className: stepper(),
63
+ "data-slot": "input-number-buttons",
64
+ children: [/* @__PURE__ */ jsx(InputNumberIncrementButton, {
65
+ "aria-label": "Increment",
66
+ className: buttonVariants({
67
+ className: stepperButton(),
68
+ variant: "ghost"
69
+ }),
70
+ "data-slot": "input-number-increment-button",
71
+ children: /* @__PURE__ */ jsx(ChevronUpIcon, { className: "size-3.5" })
72
+ }), /* @__PURE__ */ jsx(InputNumberDecrementButton, {
73
+ "aria-label": "Decrement",
74
+ className: buttonVariants({
75
+ className: stepperButton(),
76
+ variant: "ghost"
77
+ }),
78
+ "data-slot": "input-number-decrement-button",
79
+ children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "size-3.5" })
80
+ })]
81
+ })
82
+ ]
61
83
  });
62
84
  }
63
85
  //#endregion
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import { cn } from "../lib/utils.mjs";
3
2
  import { MinusIcon } from "lucide-react";
4
3
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -11,9 +10,10 @@ import { OTPInput, OTPInputContext, REGEXP_ONLY_CHARS, REGEXP_ONLY_DIGITS, REGEX
11
10
  function InputOTP({ className, containerClassName, ...props }) {
12
11
  return /* @__PURE__ */ jsx(OTPInput, {
13
12
  "aria-label": "One-time password",
14
- className: cn(className),
15
- containerClassName: cn("flex items-center gap-2", "has-disabled:opacity-50", containerClassName),
13
+ className: cn("disabled:cursor-not-allowed", className),
14
+ containerClassName: cn("flex items-center gap-2 has-disabled:opacity-50", containerClassName),
16
15
  "data-slot": "input-otp",
16
+ spellCheck: false,
17
17
  ...props
18
18
  });
19
19
  }
@@ -22,7 +22,7 @@ function InputOTP({ className, containerClassName, ...props }) {
22
22
  */
23
23
  function InputOTPGroup({ className, ...props }) {
24
24
  return /* @__PURE__ */ jsx("div", {
25
- className: cn("flex items-center -space-x-px", className),
25
+ className: cn("flex items-center rounded-md has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40", className),
26
26
  "data-slot": "input-otp-group",
27
27
  role: "group",
28
28
  ...props
@@ -36,13 +36,13 @@ function InputOTPSlot({ className, index, ...props }) {
36
36
  if (slot === void 0) throw new Error(`InputOTPSlot: no slot at index ${index}`);
37
37
  const { char, hasFakeCaret, isActive } = slot;
38
38
  return /* @__PURE__ */ jsxs("div", {
39
- className: cn("relative flex size-9 items-center justify-center", "border border-input outline-hidden", "text-sm", "transition-all", "motion-reduce:transition-none", "not-has-disabled:shadow-xs", "first:rounded-l-lg", "last:rounded-r-lg", "aria-invalid:border-destructive", "dark:bg-input/30", "data-active:z-10 data-active:border-ring data-active:ring-3 data-active:ring-ring/50", "data-active:aria-invalid:border-destructive data-active:aria-invalid:ring-destructive/20", "dark:data-active:aria-invalid:ring-destructive/40", className),
39
+ className: cn("relative flex size-9 items-center justify-center border-y border-r border-input text-sm shadow-xs transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md aria-invalid:border-destructive data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-3 data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:border-destructive data-[active=true]:aria-invalid:ring-destructive/20 dark:bg-input/30 dark:data-[active=true]:aria-invalid:ring-destructive/40", className),
40
40
  "data-active": isActive,
41
41
  "data-slot": "input-otp-slot",
42
42
  ...props,
43
43
  children: [char, hasFakeCaret ? /* @__PURE__ */ jsx("div", {
44
- className: cn("absolute inset-0 flex items-center justify-center", "pointer-events-none"),
45
- children: /* @__PURE__ */ jsx("div", { className: cn("h-4 w-px", "bg-foreground", "animate-caret-blink", "animation-duration-1000", "motion-reduce:animate-none motion-reduce:duration-0") })
44
+ className: "pointer-events-none absolute inset-0 flex items-center justify-center",
45
+ children: /* @__PURE__ */ jsx("div", { className: "h-4 w-px animate-caret-blink bg-foreground animation-duration-1000" })
46
46
  }) : null]
47
47
  });
48
48
  }
@@ -51,7 +51,9 @@ function InputOTPSlot({ className, index, ...props }) {
51
51
  */
52
52
  function InputOTPSeparator({ ...props }) {
53
53
  return /* @__PURE__ */ jsx("div", {
54
+ className: "flex items-center [&_svg:not([class*='size-'])]:size-4",
54
55
  "data-slot": "input-otp-separator",
56
+ role: "separator",
55
57
  ...props,
56
58
  children: /* @__PURE__ */ jsx(MinusIcon, {})
57
59
  });
@@ -1,5 +1,3 @@
1
- "use client";
2
- import { cn } from "../lib/utils.mjs";
3
1
  import { InputGroup, InputGroupButton, InputGroupInput } from "./input-group.mjs";
4
2
  import { EyeIcon, EyeOffIcon } from "lucide-react";
5
3
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -19,14 +17,13 @@ function InputPassword({ className, disabled, readOnly, ...props }) {
19
17
  "data-slot": "input-password",
20
18
  children: [/* @__PURE__ */ jsx(InputGroupInput, {
21
19
  autoCapitalize: "none",
22
- "data-slot": "input-password-item",
23
20
  disabled,
24
21
  readOnly,
25
22
  type,
26
23
  ...props
27
24
  }), /* @__PURE__ */ jsx(InputGroupButton, {
28
25
  "aria-label": type === "password" ? "Show password" : "Hide password",
29
- className: cn("rounded-full", "focus-visible:ring-0", "focus-visible:not-disabled:bg-input"),
26
+ className: "rounded-full",
30
27
  "data-slot": "input-password-toggle",
31
28
  disabled,
32
29
  size: "icon-sm",
@@ -1,9 +1,7 @@
1
- "use client";
2
- import { cn } from "../lib/utils.mjs";
3
1
  import { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput } from "./input-group.mjs";
4
2
  import { SearchIcon, XIcon } from "lucide-react";
5
3
  import { jsx, jsxs } from "react/jsx-runtime";
6
- import { useControllableState } from "@radix-ui/react-use-controllable-state";
4
+ import { useControllableState } from "radix-ui/internal";
7
5
  //#region src/components/input-search.tsx
8
6
  /**
9
7
  * @since 0.3.16-canary.0
@@ -24,7 +22,6 @@ function InputSearch({ className, defaultValue, disabled, onChange, readOnly, va
24
22
  children: /* @__PURE__ */ jsx(SearchIcon, {})
25
23
  }),
26
24
  /* @__PURE__ */ jsx(InputGroupInput, {
27
- "data-slot": "input-search-item",
28
25
  disabled,
29
26
  readOnly,
30
27
  type: "search",
@@ -36,10 +33,11 @@ function InputSearch({ className, defaultValue, disabled, onChange, readOnly, va
36
33
  }),
37
34
  value ? /* @__PURE__ */ jsx(InputGroupButton, {
38
35
  "aria-label": "Clear search",
39
- className: cn("rounded-full", "focus-visible:ring-0", "focus-visible:not-disabled:bg-input"),
36
+ className: "rounded-full",
40
37
  "data-slot": "input-search-clear",
41
38
  disabled: disabled ?? readOnly,
42
39
  size: "icon-sm",
40
+ type: "button",
43
41
  variant: "ghost",
44
42
  onClick: () => {
45
43
  setValue("");
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import { cn } from "../lib/utils.mjs";
3
2
  import { jsx } from "react/jsx-runtime";
4
3
  //#region src/components/input.tsx
@@ -7,7 +6,7 @@ import { jsx } from "react/jsx-runtime";
7
6
  */
8
7
  function Input({ className, type, ...props }) {
9
8
  return /* @__PURE__ */ jsx("input", {
10
- className: cn("h-9 w-full min-w-0 px-3 py-1", "rounded-lg border border-input", "bg-transparent shadow-xs outline-none", "text-base", "transition-[color,box-shadow] duration-150 ease-snappy", "motion-reduce:transition-none motion-reduce:duration-0", "selection:bg-primary selection:text-primary-foreground", "file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground", "placeholder:text-muted-foreground", "disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50", "md:text-sm", "dark:bg-input/30", "focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50", "aria-invalid:border-destructive aria-invalid:ring-destructive/20", "dark:aria-invalid:ring-destructive/40", className),
9
+ className: cn("h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-2.5 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none 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),
11
10
  "data-slot": "input",
12
11
  type,
13
12
  ...props
@@ -1,7 +1,7 @@
1
1
  import { cn } from "../lib/utils.mjs";
2
- import { Separator } from "./separator.mjs";
2
+ import { Separator as Separator$1 } from "./separator.mjs";
3
3
  import { itemMediaVariants, itemVariants } from "../variants/item.mjs";
4
- import { Slot } from "@radix-ui/react-slot";
4
+ import { Slot } from "radix-ui";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  //#region src/components/item.tsx
7
7
  /**
@@ -9,7 +9,7 @@ import { jsx } from "react/jsx-runtime";
9
9
  */
10
10
  function ItemGroup({ className, ...props }) {
11
11
  return /* @__PURE__ */ jsx("div", {
12
- className: cn("group/item-group flex flex-col", className),
12
+ className: cn("group/item-group flex w-full flex-col gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2", className),
13
13
  "data-slot": "item-group",
14
14
  role: "list",
15
15
  ...props
@@ -19,8 +19,8 @@ function ItemGroup({ className, ...props }) {
19
19
  * @since 0.3.16-canary.0
20
20
  */
21
21
  function ItemSeparator({ className, ...props }) {
22
- return /* @__PURE__ */ jsx(Separator, {
23
- className: cn("my-0", className),
22
+ return /* @__PURE__ */ jsx(Separator$1, {
23
+ className: cn("my-2", className),
24
24
  "data-slot": "item-separator",
25
25
  orientation: "horizontal",
26
26
  ...props
@@ -30,7 +30,7 @@ function ItemSeparator({ className, ...props }) {
30
30
  * @since 0.3.16-canary.0
31
31
  */
32
32
  function Item({ asChild = false, className, size = "default", variant = "default", ...props }) {
33
- return /* @__PURE__ */ jsx(asChild ? Slot : "div", {
33
+ return /* @__PURE__ */ jsx(asChild ? Slot.Root : "div", {
34
34
  className: itemVariants({
35
35
  className,
36
36
  size,
@@ -61,7 +61,7 @@ function ItemMedia({ className, variant = "default", ...props }) {
61
61
  */
62
62
  function ItemContent({ className, ...props }) {
63
63
  return /* @__PURE__ */ jsx("div", {
64
- className: cn("flex flex-1 flex-col gap-1", "[&+[data-slot=item-content]]:flex-none", className),
64
+ className: cn("flex flex-1 flex-col gap-1 group-data-[size=xs]/item:gap-0 [&+[data-slot=item-content]]:flex-none", className),
65
65
  "data-slot": "item-content",
66
66
  ...props
67
67
  });
@@ -71,7 +71,7 @@ function ItemContent({ className, ...props }) {
71
71
  */
72
72
  function ItemTitle({ className, ...props }) {
73
73
  return /* @__PURE__ */ jsx("div", {
74
- className: cn("flex w-fit items-center gap-2", "text-sm leading-snug font-medium", className),
74
+ className: cn("line-clamp-1 flex w-fit items-center gap-2 text-sm leading-snug font-medium underline-offset-4", className),
75
75
  "data-slot": "item-title",
76
76
  ...props
77
77
  });
@@ -81,7 +81,7 @@ function ItemTitle({ className, ...props }) {
81
81
  */
82
82
  function ItemDescription({ className, ...props }) {
83
83
  return /* @__PURE__ */ jsx("p", {
84
- className: cn("line-clamp-2 text-sm leading-normal font-normal text-balance text-muted-foreground", "[&>a]:underline [&>a]:underline-offset-4", "[&>a:hover]:text-primary", className),
84
+ className: cn("line-clamp-2 text-left text-sm leading-normal font-normal text-muted-foreground group-data-[size=xs]/item:text-xs [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary", className),
85
85
  "data-slot": "item-description",
86
86
  ...props
87
87
  });
@@ -6,7 +6,7 @@ import { jsx } from "react/jsx-runtime";
6
6
  */
7
7
  function Kbd({ className, ...props }) {
8
8
  return /* @__PURE__ */ jsx("kbd", {
9
- className: cn("inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 px-1", "rounded-md", "bg-muted font-sans text-xs font-medium text-muted-foreground", "pointer-events-none select-none", "in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background", "dark:in-data-[slot=tooltip-content]:bg-background/10", "[&_svg:not([class*='size-'])]:size-3", className),
9
+ className: cn("pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm bg-muted px-1 font-sans text-xs font-medium text-muted-foreground select-none in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 [&_svg:not([class*='size-'])]:size-3", className),
10
10
  "data-slot": "kbd",
11
11
  ...props
12
12
  });
@@ -1,11 +1,11 @@
1
+ import { Label as Label$1 } from "radix-ui";
1
2
  import { ComponentProps, JSX } from "react";
2
- import * as LabelPrimitive from "@radix-ui/react-label";
3
3
 
4
4
  //#region src/components/label.d.ts
5
5
  /**
6
6
  * @since 0.3.16-canary.0
7
7
  */
8
- type LabelProps = ComponentProps<typeof LabelPrimitive.Root>;
8
+ type LabelProps = ComponentProps<typeof Label$1.Root>;
9
9
  /**
10
10
  * @since 0.3.16-canary.0
11
11
  */
@@ -1,14 +1,13 @@
1
- "use client";
2
1
  import { cn } from "../lib/utils.mjs";
2
+ import { Label as Label$1 } from "radix-ui";
3
3
  import { jsx } from "react/jsx-runtime";
4
- import * as LabelPrimitive from "@radix-ui/react-label";
5
4
  //#region src/components/label.tsx
6
5
  /**
7
6
  * @since 0.3.16-canary.0
8
7
  */
9
8
  function Label({ className, ...props }) {
10
- return /* @__PURE__ */ jsx(LabelPrimitive.Root, {
11
- className: cn("inline-block", "text-sm leading-none font-medium", "group-data-disabled:opacity-50", "peer-disabled:opacity-50", "peer-aria-invalid:text-destructive", "peer-data-disabled:opacity-50", "data-invalid:text-destructive", className),
9
+ return /* @__PURE__ */ jsx(Label$1.Root, {
10
+ className: cn("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-disabled:pointer-events-none group-data-disabled:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50 peer-aria-invalid:text-destructive peer-data-disabled:opacity-50 data-invalid:text-destructive", className),
12
11
  "data-slot": "label",
13
12
  ...props
14
13
  });
@@ -1,11 +1,11 @@
1
+ import { Menubar as Menubar$1 } from "radix-ui";
1
2
  import { ComponentProps, JSX } from "react";
2
- import * as MenubarPrimitive from "@radix-ui/react-menubar";
3
3
 
4
4
  //#region src/components/menubar.d.ts
5
5
  /**
6
6
  * @since 0.3.16-canary.0
7
7
  */
8
- type MenubarProps = ComponentProps<typeof MenubarPrimitive.Root>;
8
+ type MenubarProps = ComponentProps<typeof Menubar$1.Root>;
9
9
  /**
10
10
  * @since 0.3.16-canary.0
11
11
  */
@@ -16,7 +16,7 @@ declare function Menubar({
16
16
  /**
17
17
  * @since 0.3.16-canary.0
18
18
  */
19
- type MenubarMenuProps = ComponentProps<typeof MenubarPrimitive.Menu>;
19
+ type MenubarMenuProps = ComponentProps<typeof Menubar$1.Menu>;
20
20
  /**
21
21
  * @since 0.3.16-canary.0
22
22
  */
@@ -26,7 +26,7 @@ declare function MenubarMenu({
26
26
  /**
27
27
  * @since 0.3.16-canary.0
28
28
  */
29
- type MenubarGroupProps = ComponentProps<typeof MenubarPrimitive.Group>;
29
+ type MenubarGroupProps = ComponentProps<typeof Menubar$1.Group>;
30
30
  /**
31
31
  * @since 0.3.16-canary.0
32
32
  */
@@ -36,7 +36,7 @@ declare function MenubarGroup({
36
36
  /**
37
37
  * @since 0.3.16-canary.0
38
38
  */
39
- type MenubarSubProps = ComponentProps<typeof MenubarPrimitive.Sub>;
39
+ type MenubarSubProps = ComponentProps<typeof Menubar$1.Sub>;
40
40
  /**
41
41
  * @since 0.3.16-canary.0
42
42
  */
@@ -46,7 +46,7 @@ declare function MenubarSub({
46
46
  /**
47
47
  * @since 0.3.16-canary.0
48
48
  */
49
- type MenubarRadioGroupProps = ComponentProps<typeof MenubarPrimitive.RadioGroup>;
49
+ type MenubarRadioGroupProps = ComponentProps<typeof Menubar$1.RadioGroup>;
50
50
  /**
51
51
  * @since 0.3.16-canary.0
52
52
  */
@@ -56,7 +56,7 @@ declare function MenubarRadioGroup({
56
56
  /**
57
57
  * @since 0.3.16-canary.0
58
58
  */
59
- type MenubarTriggerProps = ComponentProps<typeof MenubarPrimitive.Trigger>;
59
+ type MenubarTriggerProps = ComponentProps<typeof Menubar$1.Trigger>;
60
60
  /**
61
61
  * @since 0.3.16-canary.0
62
62
  */
@@ -67,7 +67,7 @@ declare function MenubarTrigger({
67
67
  /**
68
68
  * @since 0.3.16-canary.0
69
69
  */
70
- interface MenubarSubTriggerProps extends ComponentProps<typeof MenubarPrimitive.SubTrigger> {
70
+ interface MenubarSubTriggerProps extends ComponentProps<typeof Menubar$1.SubTrigger> {
71
71
  inset?: boolean;
72
72
  }
73
73
  /**
@@ -82,7 +82,7 @@ declare function MenubarSubTrigger({
82
82
  /**
83
83
  * @since 0.3.16-canary.0
84
84
  */
85
- type MenubarSubContentProps = ComponentProps<typeof MenubarPrimitive.SubContent>;
85
+ type MenubarSubContentProps = ComponentProps<typeof Menubar$1.SubContent>;
86
86
  /**
87
87
  * @since 0.3.16-canary.0
88
88
  */
@@ -93,7 +93,7 @@ declare function MenubarSubContent({
93
93
  /**
94
94
  * @since 0.3.16-canary.0
95
95
  */
96
- type MenubarContentProps = ComponentProps<typeof MenubarPrimitive.Content>;
96
+ type MenubarContentProps = ComponentProps<typeof Menubar$1.Content>;
97
97
  /**
98
98
  * @since 0.3.16-canary.0
99
99
  */
@@ -107,7 +107,7 @@ declare function MenubarContent({
107
107
  /**
108
108
  * @since 0.3.16-canary.0
109
109
  */
110
- interface MenubarItemProps extends ComponentProps<typeof MenubarPrimitive.Item> {
110
+ interface MenubarItemProps extends ComponentProps<typeof Menubar$1.Item> {
111
111
  inset?: boolean;
112
112
  variant?: "default" | "destructive";
113
113
  }
@@ -123,7 +123,9 @@ declare function MenubarItem({
123
123
  /**
124
124
  * @since 0.3.16-canary.0
125
125
  */
126
- type MenubarCheckboxItemProps = ComponentProps<typeof MenubarPrimitive.CheckboxItem>;
126
+ interface MenubarCheckboxItemProps extends ComponentProps<typeof Menubar$1.CheckboxItem> {
127
+ inset?: boolean;
128
+ }
127
129
  /**
128
130
  * @since 0.3.16-canary.0
129
131
  */
@@ -131,24 +133,28 @@ declare function MenubarCheckboxItem({
131
133
  checked,
132
134
  children,
133
135
  className,
136
+ inset,
134
137
  ...props
135
138
  }: MenubarCheckboxItemProps): JSX.Element;
136
139
  /**
137
140
  * @since 0.3.16-canary.0
138
141
  */
139
- type MenubarRadioItemProps = ComponentProps<typeof MenubarPrimitive.RadioItem>;
142
+ interface MenubarRadioItemProps extends ComponentProps<typeof Menubar$1.RadioItem> {
143
+ inset?: boolean;
144
+ }
140
145
  /**
141
146
  * @since 0.3.16-canary.0
142
147
  */
143
148
  declare function MenubarRadioItem({
144
149
  children,
145
150
  className,
151
+ inset,
146
152
  ...props
147
153
  }: MenubarRadioItemProps): JSX.Element;
148
154
  /**
149
155
  * @since 0.3.16-canary.0
150
156
  */
151
- interface MenubarLabelProps extends ComponentProps<typeof MenubarPrimitive.Label> {
157
+ interface MenubarLabelProps extends ComponentProps<typeof Menubar$1.Label> {
152
158
  inset?: boolean;
153
159
  }
154
160
  /**
@@ -162,7 +168,7 @@ declare function MenubarLabel({
162
168
  /**
163
169
  * @since 0.3.16-canary.0
164
170
  */
165
- type MenubarSeparatorProps = ComponentProps<typeof MenubarPrimitive.Separator>;
171
+ type MenubarSeparatorProps = ComponentProps<typeof Menubar$1.Separator>;
166
172
  /**
167
173
  * @since 0.3.16-canary.0
168
174
  */
@@ -184,7 +190,7 @@ declare function MenubarShortcut({
184
190
  /**
185
191
  * @since 0.3.16-canary.0
186
192
  */
187
- type MenubarArrowProps = ComponentProps<typeof MenubarPrimitive.Arrow>;
193
+ type MenubarArrowProps = ComponentProps<typeof Menubar$1.Arrow>;
188
194
  /**
189
195
  * @since 0.3.16-canary.0
190
196
  */