@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,17 +1,12 @@
1
+ import { Checkbox, Direction } from "radix-ui";
1
2
  import { jsx } from "react/jsx-runtime";
2
3
  import { useCallback } from "react";
3
- import { createContextScope } from "@radix-ui/react-context";
4
- import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
5
- import { createCheckboxScope } from "@radix-ui/react-checkbox";
6
- import { useDirection } from "@radix-ui/react-direction";
7
- import * as RovingFocusGroup from "@radix-ui/react-roving-focus";
8
- import { createRovingFocusGroupScope } from "@radix-ui/react-roving-focus";
9
- import { useControllableState } from "@radix-ui/react-use-controllable-state";
4
+ import { Context, RovingFocus, useControllableState } from "radix-ui/internal";
10
5
  //#region src/primitives/checkbox-group.tsx
11
6
  const CHECKBOX_GROUP_NAME = "CheckboxGroup";
12
- const [createCheckboxGroupContext, createCheckboxGroupScope] = createContextScope(CHECKBOX_GROUP_NAME, [createRovingFocusGroupScope, createCheckboxScope]);
13
- const useRovingFocusGroupScope = createRovingFocusGroupScope();
14
- const useCheckboxScope = createCheckboxScope();
7
+ const [createCheckboxGroupContext, createCheckboxGroupScope] = Context.createContextScope(CHECKBOX_GROUP_NAME, [RovingFocus.createRovingFocusGroupScope, Checkbox.createCheckboxScope]);
8
+ const useRovingFocusGroupScope = RovingFocus.createRovingFocusGroupScope();
9
+ const useCheckboxScope = Checkbox.createCheckboxScope();
15
10
  const [CheckboxGroupContextProvider, useCheckboxGroupContext] = createCheckboxGroupContext(CHECKBOX_GROUP_NAME);
16
11
  /**
17
12
  * CheckboxGroup component that manages a group of checkboxes with roving focus
@@ -20,13 +15,13 @@ const [CheckboxGroupContextProvider, useCheckboxGroupContext] = createCheckboxGr
20
15
  */
21
16
  function CheckboxGroup({ __scopeCheckboxGroup, defaultValue, dir, disabled = false, loop = true, name, onValueChange, orientation, required = false, value: valueProperty, ...props }) {
22
17
  /**
23
- * Scope for the RovingFocusGroup component
18
+ * Context.Scope for the RovingFocusGroup component
24
19
  */
25
20
  const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeCheckboxGroup);
26
21
  /**
27
22
  * Direction for layout and navigation
28
23
  */
29
- const direction = useDirection(dir);
24
+ const direction = Direction.useDirection(dir);
30
25
  /**
31
26
  * State for managing selected checkbox values
32
27
  */
@@ -51,7 +46,7 @@ function CheckboxGroup({ __scopeCheckboxGroup, defaultValue, dir, disabled = fal
51
46
  return currentValue.filter((inputValue) => inputValue !== itemValue);
52
47
  });
53
48
  }, [setValue, required]),
54
- children: /* @__PURE__ */ jsx(RovingFocusGroup.Root, {
49
+ children: /* @__PURE__ */ jsx(RovingFocus.Root, {
55
50
  asChild: true,
56
51
  ...rovingFocusGroupScope,
57
52
  dir: direction,
@@ -82,23 +77,23 @@ function CheckboxGroupItem({ __scopeCheckboxGroup, disabled, ...props }) {
82
77
  */
83
78
  const isDisabled = context.disabled || disabled;
84
79
  /**
85
- * Scope for the RovingFocusGroup component
80
+ * Context.Scope for the RovingFocusGroup component
86
81
  */
87
82
  const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeCheckboxGroup);
88
83
  /**
89
- * Scope for the Checkbox component
84
+ * Context.Scope for the Checkbox component
90
85
  */
91
86
  const checkboxScope = useCheckboxScope(__scopeCheckboxGroup);
92
87
  /**
93
88
  * Whether this checkbox is currently checked
94
89
  */
95
90
  const checked = context.value?.includes(props.value);
96
- return /* @__PURE__ */ jsx(RovingFocusGroup.Item, {
91
+ return /* @__PURE__ */ jsx(RovingFocus.Item, {
97
92
  asChild: true,
98
93
  ...rovingFocusGroupScope,
99
94
  active: checked,
100
95
  focusable: !isDisabled,
101
- children: /* @__PURE__ */ jsx(CheckboxPrimitive.Root, {
96
+ children: /* @__PURE__ */ jsx(Checkbox.Root, {
102
97
  "aria-label": props.value,
103
98
  checked,
104
99
  disabled: isDisabled,
@@ -120,10 +115,10 @@ function CheckboxGroupItem({ __scopeCheckboxGroup, disabled, ...props }) {
120
115
  */
121
116
  function CheckboxGroupIndicator({ __scopeCheckboxGroup, ...props }) {
122
117
  /**
123
- * Scope for the Checkbox component
118
+ * Context.Scope for the Checkbox component
124
119
  */
125
120
  const checkboxScope = useCheckboxScope(__scopeCheckboxGroup);
126
- return /* @__PURE__ */ jsx(CheckboxPrimitive.Indicator, {
121
+ return /* @__PURE__ */ jsx(Checkbox.Indicator, {
127
122
  ...checkboxScope,
128
123
  ...props
129
124
  });
@@ -1,7 +1,6 @@
1
1
  import { Field as InputField, Input } from "./input.mjs";
2
2
  import { ComponentProps, JSX } from "react";
3
- import * as _$_radix_ui_react_context0 from "@radix-ui/react-context";
4
- import { Scope } from "@radix-ui/react-context";
3
+ import { Context } from "radix-ui/internal";
5
4
 
6
5
  //#region src/primitives/input-number.d.ts
7
6
  /**
@@ -11,9 +10,9 @@ type ScopedProps<P> = P & {
11
10
  /**
12
11
  * Optional scope for the InputNumber component context
13
12
  */
14
- __scopeInputNumber?: Scope;
13
+ __scopeInputNumber?: Context.Scope;
15
14
  };
16
- declare const createInputNumberScope: _$_radix_ui_react_context0.CreateScope;
15
+ declare const createInputNumberScope: Context.CreateScope;
17
16
  /**
18
17
  * Props for the main InputNumber component.
19
18
  *
@@ -1,15 +1,13 @@
1
1
  import { Field as InputField, Input, createInputScope } from "./input.mjs";
2
2
  import { jsx } from "react/jsx-runtime";
3
3
  import { useCallback, useEffect, useMemo, useRef } from "react";
4
- import { createContextScope } from "@radix-ui/react-context";
5
- import { useControllableState } from "@radix-ui/react-use-controllable-state";
6
- import { composeEventHandlers } from "@radix-ui/primitive";
4
+ import { Context, composeEventHandlers, useControllableState } from "radix-ui/internal";
7
5
  //#region src/primitives/input-number.tsx
8
6
  /**
9
7
  * The name of the InputNumber component constant.
10
8
  */
11
9
  const NUMBER_INPUT_NAME = "InputNumber";
12
- const [createInputNumberContext, createInputNumberScope] = createContextScope(NUMBER_INPUT_NAME, [createInputScope]);
10
+ const [createInputNumberContext, createInputNumberScope] = Context.createContextScope(NUMBER_INPUT_NAME, [createInputScope]);
13
11
  const useInputScope = createInputScope();
14
12
  const [InputNumberContextProvider, useInputNumberContext] = createInputNumberContext(NUMBER_INPUT_NAME);
15
13
  /**
@@ -21,7 +19,7 @@ function InputNumber(numberInputProps) {
21
19
  style: "decimal"
22
20
  }, id, locale, max, min, onChange, step = 1, value: valueProperty, ...props } = numberInputProps;
23
21
  /**
24
- * Scope for the input component
22
+ * Context.Scope for the input component
25
23
  */
26
24
  const inputScope = useInputScope(__scopeInputNumber);
27
25
  /**
@@ -1,6 +1,5 @@
1
1
  import { ComponentProps, JSX, PropsWithChildren, ReactNode } from "react";
2
- import * as _$_radix_ui_react_context0 from "@radix-ui/react-context";
3
- import { Scope } from "@radix-ui/react-context";
2
+ import { Context } from "radix-ui/internal";
4
3
 
5
4
  //#region src/primitives/input.d.ts
6
5
  /**
@@ -8,11 +7,11 @@ import { Scope } from "@radix-ui/react-context";
8
7
  */
9
8
  type ScopedProps<P> = P & {
10
9
  /**
11
- * Scope for the Input component context
10
+ * Context.Scope for the Input component context
12
11
  */
13
- __scopeInput?: Scope;
12
+ __scopeInput?: Context.Scope;
14
13
  };
15
- declare const createInputScope: _$_radix_ui_react_context0.CreateScope;
14
+ declare const createInputScope: Context.CreateScope;
16
15
  /**
17
16
  * Props for styling and appearance of the Input component
18
17
  */
@@ -1,10 +1,9 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { useRef } from "react";
3
- import { createContextScope } from "@radix-ui/react-context";
4
- import { useComposedRefs } from "@radix-ui/react-compose-refs";
3
+ import { Context, useComposedRefs } from "radix-ui/internal";
5
4
  //#region src/primitives/input.tsx
6
5
  const INPUT_NAME = "Input";
7
- const [createInputContext, createInputScope] = createContextScope(INPUT_NAME);
6
+ const [createInputContext, createInputScope] = Context.createContextScope(INPUT_NAME);
8
7
  const [InputContextProvider, useInputContext] = createInputContext(INPUT_NAME);
9
8
  /**
10
9
  * @since 0.3.16-canary.0
@@ -1,10 +1,9 @@
1
1
  import { ComponentProps, ReactNode } from "react";
2
- import * as _$_radix_ui_react_context0 from "@radix-ui/react-context";
3
- import { Scope } from "@radix-ui/react-context";
2
+ import { Context } from "radix-ui/internal";
4
3
 
5
4
  //#region src/primitives/progress-circle.d.ts
6
5
  type ScopedProps<P> = P & {
7
- __scopeProgressCircle?: Scope;
6
+ __scopeProgressCircle?: Context.Scope;
8
7
  };
9
8
  /**
10
9
  * Defines color thresholds based on progress values
@@ -23,7 +22,7 @@ interface Threshold {
23
22
  */
24
23
  value: number;
25
24
  }
26
- declare const createProgressCircleScope: _$_radix_ui_react_context0.CreateScope;
25
+ declare const createProgressCircleScope: Context.CreateScope;
27
26
  /**
28
27
  * @since 0.3.16-canary.0
29
28
  */
@@ -1,10 +1,9 @@
1
- "use client";
2
1
  import { jsx } from "react/jsx-runtime";
3
2
  import { useId, useMemo } from "react";
4
- import { createContextScope } from "@radix-ui/react-context";
3
+ import { Context } from "radix-ui/internal";
5
4
  //#region src/primitives/progress-circle.tsx
6
5
  const PROGRESS_CIRCLE_PROVIDER_NAME = "ProgressCircleProvider";
7
- const [createProgressCircleContext, createProgressCircleScope] = createContextScope(PROGRESS_CIRCLE_PROVIDER_NAME);
6
+ const [createProgressCircleContext, createProgressCircleScope] = Context.createContextScope(PROGRESS_CIRCLE_PROVIDER_NAME);
8
7
  const [ProgressCircleContextProvider, useProgressCircleContext] = createProgressCircleContext(PROGRESS_CIRCLE_PROVIDER_NAME);
9
8
  /**
10
9
  * Provides context for the ProgressCircle component
@@ -0,0 +1,18 @@
1
+ import { VariantProps } from "../lib/utils.mjs";
2
+
3
+ //#region src/variants/alert.d.ts
4
+ /**
5
+ * @since 0.3.16-canary.0
6
+ */
7
+ declare const alertVariants: import("@codefast/tailwind-variants").VariantResolver<{
8
+ variant: {
9
+ default: string;
10
+ destructive: string;
11
+ };
12
+ }, Record<string, never>>;
13
+ /**
14
+ * @since 0.3.16-canary.0
15
+ */
16
+ type AlertVariants = VariantProps<typeof alertVariants>;
17
+ //#endregion
18
+ export { type AlertVariants, alertVariants };
@@ -0,0 +1,15 @@
1
+ import { tv } from "../lib/utils.mjs";
2
+ //#region src/variants/alert.ts
3
+ /**
4
+ * @since 0.3.16-canary.0
5
+ */
6
+ const alertVariants = tv({
7
+ base: "group/alert relative grid w-full gap-0.5 rounded-lg border px-4 py-3 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2.5 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4",
8
+ defaultVariants: { variant: "default" },
9
+ variants: { variant: {
10
+ default: "bg-card text-card-foreground",
11
+ destructive: "bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current"
12
+ } }
13
+ });
14
+ //#endregion
15
+ export { alertVariants };
@@ -0,0 +1,22 @@
1
+ import { VariantProps } from "../lib/utils.mjs";
2
+
3
+ //#region src/variants/badge.d.ts
4
+ /**
5
+ * @since 0.3.16-canary.0
6
+ */
7
+ declare const badgeVariants: import("@codefast/tailwind-variants").VariantResolver<{
8
+ variant: {
9
+ default: string;
10
+ destructive: string;
11
+ ghost: string;
12
+ link: string;
13
+ outline: string;
14
+ secondary: string;
15
+ };
16
+ }, Record<string, never>>;
17
+ /**
18
+ * @since 0.3.16-canary.0
19
+ */
20
+ type BadgeVariants = VariantProps<typeof badgeVariants>;
21
+ //#endregion
22
+ export { type BadgeVariants, badgeVariants };
@@ -0,0 +1,19 @@
1
+ import { tv } from "../lib/utils.mjs";
2
+ //#region src/variants/badge.ts
3
+ /**
4
+ * @since 0.3.16-canary.0
5
+ */
6
+ const badgeVariants = tv({
7
+ base: "group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",
8
+ defaultVariants: { variant: "default" },
9
+ variants: { variant: {
10
+ default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80",
11
+ destructive: "bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",
12
+ ghost: "hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",
13
+ link: "text-primary underline-offset-4 hover:underline",
14
+ outline: "border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",
15
+ secondary: "bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80"
16
+ } }
17
+ });
18
+ //#endregion
19
+ export { badgeVariants };
@@ -0,0 +1,18 @@
1
+ import { VariantProps } from "../lib/utils.mjs";
2
+
3
+ //#region src/variants/button-group.d.ts
4
+ /**
5
+ * @since 0.3.16-canary.0
6
+ */
7
+ declare const buttonGroupVariants: import("@codefast/tailwind-variants").VariantResolver<{
8
+ orientation: {
9
+ horizontal: string;
10
+ vertical: string;
11
+ };
12
+ }, Record<string, never>>;
13
+ /**
14
+ * @since 0.3.16-canary.0
15
+ */
16
+ type ButtonGroupVariants = VariantProps<typeof buttonGroupVariants>;
17
+ //#endregion
18
+ export { type ButtonGroupVariants, buttonGroupVariants };
@@ -0,0 +1,15 @@
1
+ import { tv } from "../lib/utils.mjs";
2
+ //#region src/variants/button-group.ts
3
+ /**
4
+ * @since 0.3.16-canary.0
5
+ */
6
+ const buttonGroupVariants = tv({
7
+ base: "group/button-group flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1",
8
+ defaultVariants: { orientation: "horizontal" },
9
+ variants: { orientation: {
10
+ horizontal: "[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-md!",
11
+ vertical: "flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-md!"
12
+ } }
13
+ });
14
+ //#endregion
15
+ export { buttonGroupVariants };
@@ -0,0 +1,32 @@
1
+ import { VariantProps } from "../lib/utils.mjs";
2
+
3
+ //#region src/variants/button.d.ts
4
+ /**
5
+ * @since 0.3.16-canary.0
6
+ */
7
+ declare const buttonVariants: import("@codefast/tailwind-variants").VariantResolver<{
8
+ size: {
9
+ default: string;
10
+ xs: string;
11
+ sm: string;
12
+ lg: string;
13
+ icon: string;
14
+ "icon-xs": string;
15
+ "icon-sm": string;
16
+ "icon-lg": string;
17
+ };
18
+ variant: {
19
+ default: string;
20
+ destructive: string;
21
+ ghost: string;
22
+ link: string;
23
+ outline: string;
24
+ secondary: string;
25
+ };
26
+ }, Record<string, never>>;
27
+ /**
28
+ * @since 0.3.16-canary.0
29
+ */
30
+ type ButtonVariants = VariantProps<typeof buttonVariants>;
31
+ //#endregion
32
+ export { type ButtonVariants, buttonVariants };
@@ -0,0 +1,34 @@
1
+ import { tv } from "../lib/utils.mjs";
2
+ //#region src/variants/button.ts
3
+ /**
4
+ * @since 0.3.16-canary.0
5
+ */
6
+ const buttonVariants = tv({
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",
8
+ defaultVariants: {
9
+ size: "default",
10
+ variant: "default"
11
+ },
12
+ variants: {
13
+ size: {
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",
18
+ icon: "size-9",
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"
22
+ },
23
+ variant: {
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"
30
+ }
31
+ }
32
+ });
33
+ //#endregion
34
+ export { buttonVariants };
@@ -0,0 +1,18 @@
1
+ import { VariantProps } from "../lib/utils.mjs";
2
+
3
+ //#region src/variants/empty.d.ts
4
+ /**
5
+ * @since 0.3.16-canary.0
6
+ */
7
+ declare const emptyMediaVariants: import("@codefast/tailwind-variants").VariantResolver<{
8
+ variant: {
9
+ default: string;
10
+ icon: string;
11
+ };
12
+ }, Record<string, never>>;
13
+ /**
14
+ * @since 0.3.16-canary.0
15
+ */
16
+ type EmptyMediaVariants = VariantProps<typeof emptyMediaVariants>;
17
+ //#endregion
18
+ export { type EmptyMediaVariants, emptyMediaVariants };
@@ -0,0 +1,15 @@
1
+ import { tv } from "../lib/utils.mjs";
2
+ //#region src/variants/empty.ts
3
+ /**
4
+ * @since 0.3.16-canary.0
5
+ */
6
+ const emptyMediaVariants = tv({
7
+ base: "mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0",
8
+ defaultVariants: { variant: "default" },
9
+ variants: { variant: {
10
+ default: "bg-transparent",
11
+ icon: "flex size-10 shrink-0 items-center justify-center rounded-lg bg-muted text-foreground [&_svg:not([class*='size-'])]:size-6"
12
+ } }
13
+ });
14
+ //#endregion
15
+ export { emptyMediaVariants };
@@ -0,0 +1,19 @@
1
+ import { VariantProps } from "../lib/utils.mjs";
2
+
3
+ //#region src/variants/field.d.ts
4
+ /**
5
+ * @since 0.3.16-canary.0
6
+ */
7
+ declare const fieldVariants: import("@codefast/tailwind-variants").VariantResolver<{
8
+ orientation: {
9
+ horizontal: string;
10
+ responsive: string;
11
+ vertical: string;
12
+ };
13
+ }, Record<string, never>>;
14
+ /**
15
+ * @since 0.3.16-canary.0
16
+ */
17
+ type FieldVariants = VariantProps<typeof fieldVariants>;
18
+ //#endregion
19
+ export { type FieldVariants, fieldVariants };
@@ -0,0 +1,16 @@
1
+ import { tv } from "../lib/utils.mjs";
2
+ //#region src/variants/field.ts
3
+ /**
4
+ * @since 0.3.16-canary.0
5
+ */
6
+ const fieldVariants = tv({
7
+ base: "group/field flex w-full gap-3 data-[invalid=true]:text-destructive",
8
+ defaultVariants: { orientation: "vertical" },
9
+ variants: { orientation: {
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"
13
+ } }
14
+ });
15
+ //#endregion
16
+ export { fieldVariants };
@@ -0,0 +1,43 @@
1
+ import { VariantProps } from "../lib/utils.mjs";
2
+
3
+ //#region src/variants/input-group.d.ts
4
+ /**
5
+ * @since 0.3.16-canary.0
6
+ */
7
+ declare const inputGroupVariants: import("@codefast/tailwind-variants").VariantResolver<Record<never, never>, Record<string, never>>;
8
+ /**
9
+ * @since 0.3.16-canary.0
10
+ */
11
+ declare const inputGroupAddonVariants: import("@codefast/tailwind-variants").VariantResolver<{
12
+ align: {
13
+ "block-end": string;
14
+ "block-start": string;
15
+ "inline-end": string;
16
+ "inline-start": string;
17
+ };
18
+ }, Record<string, never>>;
19
+ /**
20
+ * @since 0.3.16-canary.0
21
+ */
22
+ declare const inputGroupButtonVariants: import("@codefast/tailwind-variants").VariantResolver<{
23
+ size: {
24
+ "icon-xs": string;
25
+ "icon-sm": string;
26
+ sm: string;
27
+ xs: string;
28
+ };
29
+ }, Record<string, never>>;
30
+ /**
31
+ * @since 0.3.16-canary.0
32
+ */
33
+ type InputGroupVariants = VariantProps<typeof inputGroupVariants>;
34
+ /**
35
+ * @since 0.3.16-canary.0
36
+ */
37
+ type InputGroupAddonVariants = VariantProps<typeof inputGroupAddonVariants>;
38
+ /**
39
+ * @since 0.3.16-canary.0
40
+ */
41
+ type InputGroupButtonVariants = VariantProps<typeof inputGroupButtonVariants>;
42
+ //#endregion
43
+ export { type InputGroupAddonVariants, type InputGroupButtonVariants, type InputGroupVariants, inputGroupAddonVariants, inputGroupButtonVariants, inputGroupVariants };
@@ -0,0 +1,34 @@
1
+ import { tv } from "../lib/utils.mjs";
2
+ //#region src/variants/input-group.ts
3
+ /**
4
+ * @since 0.3.16-canary.0
5
+ */
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" });
7
+ /**
8
+ * @since 0.3.16-canary.0
9
+ */
10
+ const inputGroupAddonVariants = tv({
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",
12
+ defaultVariants: { align: "inline-start" },
13
+ variants: { align: {
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]"
18
+ } }
19
+ });
20
+ /**
21
+ * @since 0.3.16-canary.0
22
+ */
23
+ const inputGroupButtonVariants = tv({
24
+ base: "flex items-center gap-2 text-sm shadow-none",
25
+ defaultVariants: { size: "xs" },
26
+ variants: { size: {
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"
31
+ } }
32
+ });
33
+ //#endregion
34
+ export { inputGroupAddonVariants, inputGroupButtonVariants, inputGroupVariants };
@@ -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 };