@spark-ui/components 10.0.0

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 (296) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/LICENSE.md +21 -0
  3. package/README.md +19 -0
  4. package/dist/DialogTrigger-5SI4dvpK.d.mts +142 -0
  5. package/dist/DialogTrigger-5SI4dvpK.d.ts +142 -0
  6. package/dist/Input-g0LpWuv0.d.mts +17 -0
  7. package/dist/Input-g0LpWuv0.d.ts +17 -0
  8. package/dist/InputGroup-aoaZxCLk.d.mts +28 -0
  9. package/dist/InputGroup-aoaZxCLk.d.ts +28 -0
  10. package/dist/InputTrailingIcon-BBp7sE6D.d.mts +20 -0
  11. package/dist/InputTrailingIcon-ZZx8PoJy.d.ts +20 -0
  12. package/dist/LabelRequiredIndicator-DRnCzHMU.d.mts +19 -0
  13. package/dist/LabelRequiredIndicator-DRnCzHMU.d.ts +19 -0
  14. package/dist/accordion/index.d.mts +85 -0
  15. package/dist/accordion/index.d.ts +85 -0
  16. package/dist/accordion/index.js +461 -0
  17. package/dist/accordion/index.js.map +1 -0
  18. package/dist/accordion/index.mjs +249 -0
  19. package/dist/accordion/index.mjs.map +1 -0
  20. package/dist/alert-dialog/index.d.mts +119 -0
  21. package/dist/alert-dialog/index.d.ts +119 -0
  22. package/dist/alert-dialog/index.js +1451 -0
  23. package/dist/alert-dialog/index.js.map +1 -0
  24. package/dist/alert-dialog/index.mjs +177 -0
  25. package/dist/alert-dialog/index.mjs.map +1 -0
  26. package/dist/badge/index.d.mts +47 -0
  27. package/dist/badge/index.d.ts +47 -0
  28. package/dist/badge/index.js +122 -0
  29. package/dist/badge/index.js.map +1 -0
  30. package/dist/badge/index.mjs +95 -0
  31. package/dist/badge/index.mjs.map +1 -0
  32. package/dist/breadcrumb/index.d.mts +64 -0
  33. package/dist/breadcrumb/index.d.ts +64 -0
  34. package/dist/breadcrumb/index.js +326 -0
  35. package/dist/breadcrumb/index.js.map +1 -0
  36. package/dist/breadcrumb/index.mjs +149 -0
  37. package/dist/breadcrumb/index.mjs.map +1 -0
  38. package/dist/button/index.d.mts +40 -0
  39. package/dist/button/index.d.ts +40 -0
  40. package/dist/button/index.js +877 -0
  41. package/dist/button/index.js.map +1 -0
  42. package/dist/button/index.mjs +10 -0
  43. package/dist/button/index.mjs.map +1 -0
  44. package/dist/carousel/index.d.mts +253 -0
  45. package/dist/carousel/index.d.ts +253 -0
  46. package/dist/carousel/index.js +1678 -0
  47. package/dist/carousel/index.js.map +1 -0
  48. package/dist/carousel/index.mjs +716 -0
  49. package/dist/carousel/index.mjs.map +1 -0
  50. package/dist/checkbox/index.d.mts +120 -0
  51. package/dist/checkbox/index.d.ts +120 -0
  52. package/dist/checkbox/index.js +873 -0
  53. package/dist/checkbox/index.js.map +1 -0
  54. package/dist/checkbox/index.mjs +349 -0
  55. package/dist/checkbox/index.mjs.map +1 -0
  56. package/dist/chip/index.d.mts +97 -0
  57. package/dist/chip/index.d.ts +97 -0
  58. package/dist/chip/index.js +905 -0
  59. package/dist/chip/index.js.map +1 -0
  60. package/dist/chip/index.mjs +793 -0
  61. package/dist/chip/index.mjs.map +1 -0
  62. package/dist/chunk-2KPFQEAA.mjs +52 -0
  63. package/dist/chunk-2KPFQEAA.mjs.map +1 -0
  64. package/dist/chunk-4F5DOL57.mjs +26 -0
  65. package/dist/chunk-4F5DOL57.mjs.map +1 -0
  66. package/dist/chunk-6JOA37TZ.mjs +742 -0
  67. package/dist/chunk-6JOA37TZ.mjs.map +1 -0
  68. package/dist/chunk-7PMPYEHJ.mjs +379 -0
  69. package/dist/chunk-7PMPYEHJ.mjs.map +1 -0
  70. package/dist/chunk-AESXFMCC.mjs +68 -0
  71. package/dist/chunk-AESXFMCC.mjs.map +1 -0
  72. package/dist/chunk-B42LOFIZ.mjs +308 -0
  73. package/dist/chunk-B42LOFIZ.mjs.map +1 -0
  74. package/dist/chunk-FGOZHKBT.mjs +97 -0
  75. package/dist/chunk-FGOZHKBT.mjs.map +1 -0
  76. package/dist/chunk-HLXYG643.mjs +52 -0
  77. package/dist/chunk-HLXYG643.mjs.map +1 -0
  78. package/dist/chunk-JKNBJHD5.mjs +601 -0
  79. package/dist/chunk-JKNBJHD5.mjs.map +1 -0
  80. package/dist/chunk-K7VP7DH3.mjs +66 -0
  81. package/dist/chunk-K7VP7DH3.mjs.map +1 -0
  82. package/dist/chunk-MUNDKRAE.mjs +80 -0
  83. package/dist/chunk-MUNDKRAE.mjs.map +1 -0
  84. package/dist/chunk-NBZKMCHF.mjs +36 -0
  85. package/dist/chunk-NBZKMCHF.mjs.map +1 -0
  86. package/dist/chunk-PZWESKAR.mjs +314 -0
  87. package/dist/chunk-PZWESKAR.mjs.map +1 -0
  88. package/dist/collapsible/index.d.mts +60 -0
  89. package/dist/collapsible/index.d.ts +60 -0
  90. package/dist/collapsible/index.js +140 -0
  91. package/dist/collapsible/index.js.map +1 -0
  92. package/dist/collapsible/index.mjs +8 -0
  93. package/dist/collapsible/index.mjs.map +1 -0
  94. package/dist/combobox/index.d.mts +285 -0
  95. package/dist/combobox/index.d.ts +285 -0
  96. package/dist/combobox/index.js +2920 -0
  97. package/dist/combobox/index.js.map +1 -0
  98. package/dist/combobox/index.mjs +1267 -0
  99. package/dist/combobox/index.mjs.map +1 -0
  100. package/dist/dialog/index.d.mts +33 -0
  101. package/dist/dialog/index.d.ts +33 -0
  102. package/dist/dialog/index.js +1286 -0
  103. package/dist/dialog/index.js.map +1 -0
  104. package/dist/dialog/index.mjs +13 -0
  105. package/dist/dialog/index.mjs.map +1 -0
  106. package/dist/divider/index.d.mts +61 -0
  107. package/dist/divider/index.d.ts +61 -0
  108. package/dist/divider/index.js +223 -0
  109. package/dist/divider/index.js.map +1 -0
  110. package/dist/divider/index.mjs +196 -0
  111. package/dist/divider/index.mjs.map +1 -0
  112. package/dist/drawer/index.d.mts +148 -0
  113. package/dist/drawer/index.d.ts +148 -0
  114. package/dist/drawer/index.js +1266 -0
  115. package/dist/drawer/index.js.map +1 -0
  116. package/dist/drawer/index.mjs +299 -0
  117. package/dist/drawer/index.mjs.map +1 -0
  118. package/dist/dropdown/index.d.mts +233 -0
  119. package/dist/dropdown/index.d.ts +233 -0
  120. package/dist/dropdown/index.js +2402 -0
  121. package/dist/dropdown/index.js.map +1 -0
  122. package/dist/dropdown/index.mjs +741 -0
  123. package/dist/dropdown/index.mjs.map +1 -0
  124. package/dist/form-field/index.d.mts +176 -0
  125. package/dist/form-field/index.d.ts +176 -0
  126. package/dist/form-field/index.js +540 -0
  127. package/dist/form-field/index.js.map +1 -0
  128. package/dist/form-field/index.mjs +13 -0
  129. package/dist/form-field/index.mjs.map +1 -0
  130. package/dist/icon/index.d.mts +28 -0
  131. package/dist/icon/index.d.ts +28 -0
  132. package/dist/icon/index.js +127 -0
  133. package/dist/icon/index.js.map +1 -0
  134. package/dist/icon/index.mjs +9 -0
  135. package/dist/icon/index.mjs.map +1 -0
  136. package/dist/icon-button/index.d.mts +16 -0
  137. package/dist/icon-button/index.d.ts +16 -0
  138. package/dist/icon-button/index.js +921 -0
  139. package/dist/icon-button/index.js.map +1 -0
  140. package/dist/icon-button/index.mjs +11 -0
  141. package/dist/icon-button/index.mjs.map +1 -0
  142. package/dist/input/index.d.mts +78 -0
  143. package/dist/input/index.d.ts +78 -0
  144. package/dist/input/index.js +1119 -0
  145. package/dist/input/index.js.map +1 -0
  146. package/dist/input/index.mjs +16 -0
  147. package/dist/input/index.mjs.map +1 -0
  148. package/dist/kbd/index.d.mts +9 -0
  149. package/dist/kbd/index.d.ts +9 -0
  150. package/dist/kbd/index.js +46 -0
  151. package/dist/kbd/index.js.map +1 -0
  152. package/dist/kbd/index.mjs +19 -0
  153. package/dist/kbd/index.mjs.map +1 -0
  154. package/dist/label/index.d.mts +11 -0
  155. package/dist/label/index.d.ts +11 -0
  156. package/dist/label/index.js +78 -0
  157. package/dist/label/index.js.map +1 -0
  158. package/dist/label/index.mjs +7 -0
  159. package/dist/label/index.mjs.map +1 -0
  160. package/dist/link-box/index.d.mts +34 -0
  161. package/dist/link-box/index.d.ts +34 -0
  162. package/dist/link-box/index.js +92 -0
  163. package/dist/link-box/index.js.map +1 -0
  164. package/dist/link-box/index.mjs +58 -0
  165. package/dist/link-box/index.mjs.map +1 -0
  166. package/dist/pagination/index.d.mts +143 -0
  167. package/dist/pagination/index.d.ts +143 -0
  168. package/dist/pagination/index.js +1303 -0
  169. package/dist/pagination/index.js.map +1 -0
  170. package/dist/pagination/index.mjs +326 -0
  171. package/dist/pagination/index.mjs.map +1 -0
  172. package/dist/popover/index.d.mts +93 -0
  173. package/dist/popover/index.d.ts +93 -0
  174. package/dist/popover/index.js +1280 -0
  175. package/dist/popover/index.js.map +1 -0
  176. package/dist/popover/index.mjs +13 -0
  177. package/dist/popover/index.mjs.map +1 -0
  178. package/dist/portal/index.d.mts +13 -0
  179. package/dist/portal/index.d.ts +13 -0
  180. package/dist/portal/index.js +37 -0
  181. package/dist/portal/index.js.map +1 -0
  182. package/dist/portal/index.mjs +10 -0
  183. package/dist/portal/index.mjs.map +1 -0
  184. package/dist/progress/index.d.mts +48 -0
  185. package/dist/progress/index.d.ts +48 -0
  186. package/dist/progress/index.js +201 -0
  187. package/dist/progress/index.js.map +1 -0
  188. package/dist/progress/index.mjs +174 -0
  189. package/dist/progress/index.mjs.map +1 -0
  190. package/dist/progress-tracker/index.d.mts +81 -0
  191. package/dist/progress-tracker/index.d.ts +81 -0
  192. package/dist/progress-tracker/index.js +834 -0
  193. package/dist/progress-tracker/index.js.map +1 -0
  194. package/dist/progress-tracker/index.mjs +716 -0
  195. package/dist/progress-tracker/index.mjs.map +1 -0
  196. package/dist/radio-group/index.d.mts +100 -0
  197. package/dist/radio-group/index.d.ts +100 -0
  198. package/dist/radio-group/index.js +824 -0
  199. package/dist/radio-group/index.js.map +1 -0
  200. package/dist/radio-group/index.mjs +297 -0
  201. package/dist/radio-group/index.mjs.map +1 -0
  202. package/dist/rating/index.d.mts +78 -0
  203. package/dist/rating/index.d.ts +78 -0
  204. package/dist/rating/index.js +362 -0
  205. package/dist/rating/index.js.map +1 -0
  206. package/dist/rating/index.mjs +247 -0
  207. package/dist/rating/index.mjs.map +1 -0
  208. package/dist/scrolling-list/index.d.mts +105 -0
  209. package/dist/scrolling-list/index.d.ts +105 -0
  210. package/dist/scrolling-list/index.js +1367 -0
  211. package/dist/scrolling-list/index.js.map +1 -0
  212. package/dist/scrolling-list/index.mjs +407 -0
  213. package/dist/scrolling-list/index.mjs.map +1 -0
  214. package/dist/select/index.d.mts +167 -0
  215. package/dist/select/index.d.ts +167 -0
  216. package/dist/select/index.js +991 -0
  217. package/dist/select/index.js.map +1 -0
  218. package/dist/select/index.mjs +470 -0
  219. package/dist/select/index.mjs.map +1 -0
  220. package/dist/skeleton/index.d.mts +67 -0
  221. package/dist/skeleton/index.d.ts +67 -0
  222. package/dist/skeleton/index.js +206 -0
  223. package/dist/skeleton/index.js.map +1 -0
  224. package/dist/skeleton/index.mjs +147 -0
  225. package/dist/skeleton/index.mjs.map +1 -0
  226. package/dist/slider/index.d.mts +97 -0
  227. package/dist/slider/index.d.ts +97 -0
  228. package/dist/slider/index.js +209 -0
  229. package/dist/slider/index.js.map +1 -0
  230. package/dist/slider/index.mjs +182 -0
  231. package/dist/slider/index.mjs.map +1 -0
  232. package/dist/slot/index.d.mts +17 -0
  233. package/dist/slot/index.d.ts +17 -0
  234. package/dist/slot/index.js +51 -0
  235. package/dist/slot/index.js.map +1 -0
  236. package/dist/slot/index.mjs +11 -0
  237. package/dist/slot/index.mjs.map +1 -0
  238. package/dist/snackbar/index.d.mts +158 -0
  239. package/dist/snackbar/index.d.ts +158 -0
  240. package/dist/snackbar/index.js +1693 -0
  241. package/dist/snackbar/index.js.map +1 -0
  242. package/dist/snackbar/index.mjs +733 -0
  243. package/dist/snackbar/index.mjs.map +1 -0
  244. package/dist/spinner/index.d.mts +21 -0
  245. package/dist/spinner/index.d.ts +21 -0
  246. package/dist/spinner/index.js +139 -0
  247. package/dist/spinner/index.js.map +1 -0
  248. package/dist/spinner/index.mjs +9 -0
  249. package/dist/spinner/index.mjs.map +1 -0
  250. package/dist/stepper/index.d.mts +82 -0
  251. package/dist/stepper/index.d.ts +82 -0
  252. package/dist/stepper/index.js +2178 -0
  253. package/dist/stepper/index.js.map +1 -0
  254. package/dist/stepper/index.mjs +229 -0
  255. package/dist/stepper/index.mjs.map +1 -0
  256. package/dist/switch/index.d.mts +64 -0
  257. package/dist/switch/index.d.ts +64 -0
  258. package/dist/switch/index.js +768 -0
  259. package/dist/switch/index.js.map +1 -0
  260. package/dist/switch/index.mjs +245 -0
  261. package/dist/switch/index.mjs.map +1 -0
  262. package/dist/tabs/index.d.mts +103 -0
  263. package/dist/tabs/index.d.ts +103 -0
  264. package/dist/tabs/index.js +1315 -0
  265. package/dist/tabs/index.js.map +1 -0
  266. package/dist/tabs/index.mjs +391 -0
  267. package/dist/tabs/index.mjs.map +1 -0
  268. package/dist/tag/index.d.mts +27 -0
  269. package/dist/tag/index.d.ts +27 -0
  270. package/dist/tag/index.js +269 -0
  271. package/dist/tag/index.js.map +1 -0
  272. package/dist/tag/index.mjs +237 -0
  273. package/dist/tag/index.mjs.map +1 -0
  274. package/dist/text-link/index.d.mts +20 -0
  275. package/dist/text-link/index.d.ts +20 -0
  276. package/dist/text-link/index.js +99 -0
  277. package/dist/text-link/index.js.map +1 -0
  278. package/dist/text-link/index.mjs +8 -0
  279. package/dist/text-link/index.mjs.map +1 -0
  280. package/dist/textarea/index.d.mts +47 -0
  281. package/dist/textarea/index.d.ts +47 -0
  282. package/dist/textarea/index.js +1180 -0
  283. package/dist/textarea/index.js.map +1 -0
  284. package/dist/textarea/index.mjs +77 -0
  285. package/dist/textarea/index.mjs.map +1 -0
  286. package/dist/visually-hidden/index.d.mts +16 -0
  287. package/dist/visually-hidden/index.d.ts +16 -0
  288. package/dist/visually-hidden/index.js +67 -0
  289. package/dist/visually-hidden/index.js.map +1 -0
  290. package/dist/visually-hidden/index.mjs +8 -0
  291. package/dist/visually-hidden/index.mjs.map +1 -0
  292. package/global.d.ts +12 -0
  293. package/package.json +75 -0
  294. package/tsconfig.build.json +9 -0
  295. package/tsconfig.json +9 -0
  296. package/tsup.config.ts +11 -0
@@ -0,0 +1,873 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/checkbox/index.ts
21
+ var checkbox_exports = {};
22
+ __export(checkbox_exports, {
23
+ Checkbox: () => Checkbox3,
24
+ CheckboxGroup: () => CheckboxGroup
25
+ });
26
+ module.exports = __toCommonJS(checkbox_exports);
27
+
28
+ // src/checkbox/Checkbox.tsx
29
+ var import_use_merge_refs = require("@spark-ui/use-merge-refs");
30
+ var import_class_variance_authority13 = require("class-variance-authority");
31
+ var import_react9 = require("react");
32
+
33
+ // src/form-field/FormField.tsx
34
+ var import_class_variance_authority = require("class-variance-authority");
35
+ var import_react4 = require("react");
36
+
37
+ // src/slot/Slot.tsx
38
+ var import_radix_ui = require("radix-ui");
39
+ var import_react = require("react");
40
+ var import_jsx_runtime = require("react/jsx-runtime");
41
+ var Slottable = import_radix_ui.Slot.Slottable;
42
+ var Slot = ({ ref, ...props }) => {
43
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_radix_ui.Slot.Root, { ref, ...props });
44
+ };
45
+
46
+ // src/form-field/FormFieldContext.tsx
47
+ var import_react2 = require("react");
48
+ var FormFieldContext = (0, import_react2.createContext)(null);
49
+ var ID_PREFIX = ":form-field";
50
+ var useFormField = () => {
51
+ const context = (0, import_react2.useContext)(FormFieldContext);
52
+ if (!context) {
53
+ throw Error("useFormField must be used within a FormField provider");
54
+ }
55
+ return context;
56
+ };
57
+
58
+ // src/form-field/FormFieldProvider.tsx
59
+ var import_react3 = require("react");
60
+ var import_jsx_runtime2 = require("react/jsx-runtime");
61
+ var FormFieldProvider = ({
62
+ id,
63
+ name,
64
+ disabled = false,
65
+ readOnly = false,
66
+ state,
67
+ isRequired,
68
+ children
69
+ }) => {
70
+ const labelId = `${ID_PREFIX}-label-${(0, import_react3.useId)()}`;
71
+ const [messageIds, setMessageIds] = (0, import_react3.useState)([]);
72
+ const description = messageIds.length > 0 ? messageIds.join(" ") : void 0;
73
+ const handleMessageIdAdd = (0, import_react3.useCallback)((msgId) => {
74
+ setMessageIds((ids) => [...ids, msgId]);
75
+ }, []);
76
+ const handleMessageIdRemove = (0, import_react3.useCallback)((msgId) => {
77
+ setMessageIds((ids) => ids.filter((current) => current !== msgId));
78
+ }, []);
79
+ const value = (0, import_react3.useMemo)(() => {
80
+ const isInvalid = state === "error";
81
+ return {
82
+ id,
83
+ labelId,
84
+ name,
85
+ disabled,
86
+ readOnly,
87
+ state,
88
+ isRequired,
89
+ isInvalid,
90
+ description,
91
+ onMessageIdAdd: handleMessageIdAdd,
92
+ onMessageIdRemove: handleMessageIdRemove
93
+ };
94
+ }, [
95
+ id,
96
+ labelId,
97
+ name,
98
+ disabled,
99
+ readOnly,
100
+ description,
101
+ state,
102
+ isRequired,
103
+ handleMessageIdAdd,
104
+ handleMessageIdRemove
105
+ ]);
106
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(FormFieldContext.Provider, { value, children });
107
+ };
108
+ FormFieldProvider.displayName = "FormFieldProvider";
109
+
110
+ // src/form-field/FormField.tsx
111
+ var import_jsx_runtime3 = require("react/jsx-runtime");
112
+ var FormField = ({
113
+ className,
114
+ disabled = false,
115
+ readOnly = false,
116
+ name,
117
+ state,
118
+ isRequired = false,
119
+ asChild = false,
120
+ ref,
121
+ ...others
122
+ }) => {
123
+ const id = `${ID_PREFIX}-${(0, import_react4.useId)()}`;
124
+ const Component = asChild ? Slot : "div";
125
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
126
+ FormFieldProvider,
127
+ {
128
+ id,
129
+ name,
130
+ isRequired,
131
+ disabled,
132
+ readOnly,
133
+ state,
134
+ children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
135
+ Component,
136
+ {
137
+ ref,
138
+ "data-spark-component": "form-field",
139
+ className: (0, import_class_variance_authority.cx)(className, "gap-sm flex flex-col"),
140
+ ...others
141
+ }
142
+ )
143
+ }
144
+ );
145
+ };
146
+ FormField.displayName = "FormField";
147
+
148
+ // src/form-field/FormFieldStateMessage.tsx
149
+ var import_AlertOutline = require("@spark-ui/icons/AlertOutline");
150
+ var import_Check = require("@spark-ui/icons/Check");
151
+ var import_WarningOutline = require("@spark-ui/icons/WarningOutline");
152
+ var import_class_variance_authority4 = require("class-variance-authority");
153
+
154
+ // src/icon/Icon.tsx
155
+ var import_react5 = require("react");
156
+
157
+ // src/visually-hidden/VisuallyHidden.tsx
158
+ var import_jsx_runtime4 = require("react/jsx-runtime");
159
+ var VisuallyHidden = ({ asChild = false, ref, ...props }) => {
160
+ const Component = asChild ? Slot : "span";
161
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
162
+ Component,
163
+ {
164
+ ...props,
165
+ ref,
166
+ style: {
167
+ // See: https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss
168
+ position: "absolute",
169
+ border: 0,
170
+ width: 1,
171
+ height: 1,
172
+ padding: 0,
173
+ margin: -1,
174
+ overflow: "hidden",
175
+ clip: "rect(0, 0, 0, 0)",
176
+ whiteSpace: "nowrap",
177
+ wordWrap: "normal",
178
+ ...props.style
179
+ }
180
+ }
181
+ );
182
+ };
183
+ VisuallyHidden.displayName = "VisuallyHidden";
184
+
185
+ // src/icon/Icon.styles.tsx
186
+ var import_internal_utils = require("@spark-ui/internal-utils");
187
+ var import_class_variance_authority2 = require("class-variance-authority");
188
+ var iconStyles = (0, import_class_variance_authority2.cva)(["fill-current shrink-0"], {
189
+ variants: {
190
+ /**
191
+ * Color scheme of the icon.
192
+ */
193
+ intent: (0, import_internal_utils.makeVariants)({
194
+ current: ["text-current"],
195
+ main: ["text-main"],
196
+ support: ["text-support"],
197
+ accent: ["text-accent"],
198
+ basic: ["text-basic"],
199
+ success: ["text-success"],
200
+ alert: ["text-alert"],
201
+ error: ["text-error"],
202
+ info: ["text-info"],
203
+ neutral: ["text-neutral"]
204
+ }),
205
+ /**
206
+ * Sets the size of the icon.
207
+ */
208
+ size: (0, import_internal_utils.makeVariants)({
209
+ current: ["u-current-font-size"],
210
+ sm: ["w-sz-16", "h-sz-16"],
211
+ md: ["w-sz-24", "h-sz-24"],
212
+ lg: ["w-sz-32", "h-sz-32"],
213
+ xl: ["w-sz-40", "h-sz-40"]
214
+ })
215
+ }
216
+ });
217
+
218
+ // src/icon/Icon.tsx
219
+ var import_jsx_runtime5 = require("react/jsx-runtime");
220
+ var Icon = ({
221
+ label,
222
+ className,
223
+ size = "current",
224
+ intent = "current",
225
+ children,
226
+ ...others
227
+ }) => {
228
+ const child = import_react5.Children.only(children);
229
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
230
+ (0, import_react5.cloneElement)(child, {
231
+ className: iconStyles({ className, size, intent }),
232
+ "data-spark-component": "icon",
233
+ "aria-hidden": "true",
234
+ focusable: "false",
235
+ ...others
236
+ }),
237
+ label && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(VisuallyHidden, { children: label })
238
+ ] });
239
+ };
240
+ Icon.displayName = "Icon";
241
+
242
+ // src/form-field/FormFieldMessage.tsx
243
+ var import_class_variance_authority3 = require("class-variance-authority");
244
+ var import_react6 = require("react");
245
+ var import_jsx_runtime6 = require("react/jsx-runtime");
246
+ var FormFieldMessage = ({
247
+ id: idProp,
248
+ className,
249
+ ref,
250
+ ...others
251
+ }) => {
252
+ const { onMessageIdAdd, onMessageIdRemove } = useFormField();
253
+ const currentId = `${ID_PREFIX}-message-${(0, import_react6.useId)()}`;
254
+ const id = idProp || currentId;
255
+ (0, import_react6.useEffect)(() => {
256
+ onMessageIdAdd(id);
257
+ return () => {
258
+ onMessageIdRemove(id);
259
+ };
260
+ }, [id, onMessageIdAdd, onMessageIdRemove]);
261
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
262
+ "span",
263
+ {
264
+ ref,
265
+ id,
266
+ "data-spark-component": "form-field-message",
267
+ className: (0, import_class_variance_authority3.cx)(className, "text-caption"),
268
+ ...others
269
+ }
270
+ );
271
+ };
272
+ FormFieldMessage.displayName = "FormField.Message";
273
+
274
+ // src/form-field/FormFieldStateMessage.tsx
275
+ var import_jsx_runtime7 = require("react/jsx-runtime");
276
+ var FormFieldStateMessage = ({
277
+ className,
278
+ state,
279
+ children,
280
+ ref,
281
+ ...others
282
+ }) => {
283
+ const field = useFormField();
284
+ if (field.state !== state) {
285
+ return null;
286
+ }
287
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
288
+ FormFieldMessage,
289
+ {
290
+ ref,
291
+ "data-spark-component": "form-field-state-message",
292
+ "aria-live": "polite",
293
+ className: (0, import_class_variance_authority4.cx)(
294
+ "gap-sm flex items-center",
295
+ state === "error" ? "text-error" : "text-on-surface/dim-1",
296
+ className
297
+ ),
298
+ ...others,
299
+ children: [
300
+ state === "alert" && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Icon, { size: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_WarningOutline.WarningOutline, {}) }),
301
+ state === "error" && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Icon, { size: "sm", intent: "error", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_AlertOutline.AlertOutline, {}) }),
302
+ state === "success" && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Icon, { size: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_Check.Check, {}) }),
303
+ children
304
+ ]
305
+ }
306
+ );
307
+ };
308
+ FormFieldStateMessage.displayName = "FormField.StateMessage";
309
+
310
+ // src/form-field/FormFieldAlertMessage.tsx
311
+ var import_jsx_runtime8 = require("react/jsx-runtime");
312
+ var FormFieldAlertMessage = ({ ref, ...props }) => {
313
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
314
+ FormFieldStateMessage,
315
+ {
316
+ ref,
317
+ "data-spark-component": "form-field-alert-message",
318
+ state: "alert",
319
+ ...props
320
+ }
321
+ );
322
+ };
323
+ FormFieldAlertMessage.displayName = "FormField.AlertMessage";
324
+
325
+ // src/form-field/FormFieldCharactersCount.tsx
326
+ var import_class_variance_authority5 = require("class-variance-authority");
327
+ var import_jsx_runtime9 = require("react/jsx-runtime");
328
+ var FormFieldCharactersCount = ({
329
+ className,
330
+ value = "",
331
+ maxLength,
332
+ ref,
333
+ ...others
334
+ }) => {
335
+ const displayValue = `${value.length}/${maxLength}`;
336
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
337
+ "span",
338
+ {
339
+ ref,
340
+ "data-spark-component": "form-field-characters-count",
341
+ className: (0, import_class_variance_authority5.cx)(className, "text-caption", "text-neutral"),
342
+ ...others,
343
+ children: displayValue
344
+ }
345
+ );
346
+ };
347
+ FormFieldCharactersCount.displayName = "FormField.CharactersCount";
348
+
349
+ // src/form-field/FormFieldControl.tsx
350
+ var import_react7 = require("react");
351
+ var import_jsx_runtime10 = require("react/jsx-runtime");
352
+ var useFormFieldControl = () => {
353
+ const { id, name, description, disabled, readOnly, state, labelId, isInvalid, isRequired } = (0, import_react7.useContext)(FormFieldContext) || {};
354
+ return {
355
+ id,
356
+ name,
357
+ description,
358
+ disabled,
359
+ readOnly,
360
+ state,
361
+ labelId,
362
+ isInvalid,
363
+ isRequired
364
+ };
365
+ };
366
+ var FormFieldControl = ({ children }) => {
367
+ const props = useFormFieldControl();
368
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_jsx_runtime10.Fragment, { children: children(props) });
369
+ };
370
+ FormFieldControl.displayName = "FormField.Control";
371
+
372
+ // src/form-field/FormFieldErrorMessage.tsx
373
+ var import_jsx_runtime11 = require("react/jsx-runtime");
374
+ var FormFieldErrorMessage = ({ ref, ...props }) => {
375
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
376
+ FormFieldStateMessage,
377
+ {
378
+ ref,
379
+ "data-spark-component": "form-field-error-message",
380
+ state: "error",
381
+ ...props
382
+ }
383
+ );
384
+ };
385
+ FormFieldErrorMessage.displayName = "FormField.ErrorMessage";
386
+
387
+ // src/form-field/FormFieldHelperMessage.tsx
388
+ var import_class_variance_authority6 = require("class-variance-authority");
389
+ var import_jsx_runtime12 = require("react/jsx-runtime");
390
+ var FormFieldHelperMessage = ({
391
+ className,
392
+ ref,
393
+ ...others
394
+ }) => {
395
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
396
+ FormFieldMessage,
397
+ {
398
+ ref,
399
+ "data-spark-component": "form-field-helper-message",
400
+ className: (0, import_class_variance_authority6.cx)("text-on-surface/dim-1", className),
401
+ ...others
402
+ }
403
+ );
404
+ };
405
+ FormFieldHelperMessage.displayName = "FormField.HelperMessage";
406
+
407
+ // src/form-field/FormFieldLabel.tsx
408
+ var import_class_variance_authority10 = require("class-variance-authority");
409
+
410
+ // src/label/Label.tsx
411
+ var import_class_variance_authority7 = require("class-variance-authority");
412
+ var import_radix_ui2 = require("radix-ui");
413
+ var import_jsx_runtime13 = require("react/jsx-runtime");
414
+ var Label = ({ className, ref, ...others }) => {
415
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
416
+ import_radix_ui2.Label.Label,
417
+ {
418
+ ref,
419
+ "data-spark-component": "label",
420
+ className: (0, import_class_variance_authority7.cx)("text-body-1", className),
421
+ ...others
422
+ }
423
+ );
424
+ };
425
+ Label.displayName = "Label";
426
+
427
+ // src/label/LabelRequiredIndicator.tsx
428
+ var import_class_variance_authority8 = require("class-variance-authority");
429
+ var import_jsx_runtime14 = require("react/jsx-runtime");
430
+ var LabelRequiredIndicator = ({
431
+ className,
432
+ children = "*",
433
+ ref,
434
+ ...others
435
+ }) => {
436
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
437
+ "span",
438
+ {
439
+ ref,
440
+ "data-spark-component": "label-required-indicator",
441
+ role: "presentation",
442
+ "aria-hidden": "true",
443
+ className: (0, import_class_variance_authority8.cx)(className, "text-caption text-on-surface/dim-1"),
444
+ ...others,
445
+ children
446
+ }
447
+ );
448
+ };
449
+ LabelRequiredIndicator.displayName = "Label.RequiredIndicator";
450
+
451
+ // src/label/index.ts
452
+ var Label2 = Object.assign(Label, {
453
+ RequiredIndicator: LabelRequiredIndicator
454
+ });
455
+ Label2.displayName = "Label";
456
+ LabelRequiredIndicator.displayName = "Label.RequiredIndicator";
457
+
458
+ // src/form-field/FormFieldRequiredIndicator.tsx
459
+ var import_class_variance_authority9 = require("class-variance-authority");
460
+ var import_jsx_runtime15 = require("react/jsx-runtime");
461
+ var FormFieldRequiredIndicator = ({
462
+ className,
463
+ ref,
464
+ ...props
465
+ }) => {
466
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Label2.RequiredIndicator, { ref, className: (0, import_class_variance_authority9.cx)("ml-sm", className), ...props });
467
+ };
468
+ FormFieldRequiredIndicator.displayName = "FormField.RequiredIndicator";
469
+
470
+ // src/form-field/FormFieldLabel.tsx
471
+ var import_jsx_runtime16 = require("react/jsx-runtime");
472
+ var FormFieldLabel = ({
473
+ htmlFor: htmlForProp,
474
+ className,
475
+ children,
476
+ requiredIndicator = /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(FormFieldRequiredIndicator, {}),
477
+ asChild,
478
+ ref,
479
+ ...others
480
+ }) => {
481
+ const control = useFormField();
482
+ const { disabled, labelId, isRequired } = control;
483
+ const htmlFor = asChild ? void 0 : htmlForProp || control.id;
484
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
485
+ Label2,
486
+ {
487
+ ref,
488
+ id: labelId,
489
+ "data-spark-component": "form-field-label",
490
+ htmlFor,
491
+ className: (0, import_class_variance_authority10.cx)(className, disabled ? "text-on-surface/dim-3 pointer-events-none" : void 0),
492
+ asChild,
493
+ ...others,
494
+ children: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment, { children: [
495
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Slottable, { children }),
496
+ isRequired && requiredIndicator
497
+ ] })
498
+ }
499
+ );
500
+ };
501
+ FormFieldLabel.displayName = "FormField.Label";
502
+
503
+ // src/form-field/FormFieldSuccessMessage.tsx
504
+ var import_jsx_runtime17 = require("react/jsx-runtime");
505
+ var FormFieldSuccessMessage = ({ ref, ...props }) => {
506
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
507
+ FormFieldStateMessage,
508
+ {
509
+ ref,
510
+ "data-spark-component": "form-field-success-message",
511
+ state: "success",
512
+ ...props
513
+ }
514
+ );
515
+ };
516
+ FormFieldSuccessMessage.displayName = "FormField.SuccessMessage";
517
+
518
+ // src/form-field/index.ts
519
+ var FormField2 = Object.assign(FormField, {
520
+ Label: FormFieldLabel,
521
+ Control: FormFieldControl,
522
+ StateMessage: FormFieldStateMessage,
523
+ SuccessMessage: FormFieldSuccessMessage,
524
+ AlertMessage: FormFieldAlertMessage,
525
+ ErrorMessage: FormFieldErrorMessage,
526
+ HelperMessage: FormFieldHelperMessage,
527
+ RequiredIndicator: FormFieldRequiredIndicator,
528
+ CharactersCount: FormFieldCharactersCount
529
+ });
530
+ FormField2.displayName = "FormField";
531
+ FormFieldLabel.displayName = "FormField.Label";
532
+ FormFieldControl.displayName = "FormField.Control";
533
+ FormFieldStateMessage.displayName = "FormField.StateMessage";
534
+ FormFieldSuccessMessage.displayName = "FormField.SuccessMessage";
535
+ FormFieldAlertMessage.displayName = "FormField.AlertMessage";
536
+ FormFieldErrorMessage.displayName = "FormField.ErrorMessage";
537
+ FormFieldHelperMessage.displayName = "FormField.HelperMessage";
538
+ FormFieldRequiredIndicator.displayName = "FormField.RequiredIndicator";
539
+ FormFieldCharactersCount.displayName = "FormField.CharactersCount";
540
+
541
+ // src/checkbox/CheckboxGroupContext.tsx
542
+ var import_react8 = require("react");
543
+ var CheckboxGroupContext = (0, import_react8.createContext)({});
544
+ var useCheckboxGroup = () => {
545
+ const context = (0, import_react8.useContext)(CheckboxGroupContext);
546
+ return context;
547
+ };
548
+
549
+ // src/checkbox/CheckboxInput.tsx
550
+ var import_Check2 = require("@spark-ui/icons/Check");
551
+ var import_Minus = require("@spark-ui/icons/Minus");
552
+ var import_radix_ui4 = require("radix-ui");
553
+
554
+ // src/checkbox/CheckboxIndicator.tsx
555
+ var import_radix_ui3 = require("radix-ui");
556
+ var import_jsx_runtime18 = require("react/jsx-runtime");
557
+ var CheckboxIndicatorPrimitive = import_radix_ui3.Checkbox.CheckboxIndicator;
558
+ var CheckboxIndicator = (props) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(CheckboxIndicatorPrimitive, { className: "flex size-full items-center justify-center", ...props });
559
+ CheckboxIndicator.displayName = "CheckboxIndicator";
560
+
561
+ // src/checkbox/CheckboxInput.styles.ts
562
+ var import_internal_utils2 = require("@spark-ui/internal-utils");
563
+ var import_class_variance_authority11 = require("class-variance-authority");
564
+ var checkboxInputStyles = (0, import_class_variance_authority11.cva)(
565
+ [
566
+ "size-sz-24 shrink-0 items-center justify-center rounded-sm border-md bg-transparent",
567
+ "disabled:cursor-not-allowed disabled:opacity-dim-3 disabled:hover:ring-0",
568
+ "focus-visible:u-outline",
569
+ "hover:ring-4 hover:cursor-pointer",
570
+ "u-shadow-border-transition"
571
+ ],
572
+ {
573
+ variants: {
574
+ /**
575
+ * Color scheme of the checkbox.
576
+ */
577
+ intent: (0, import_internal_utils2.makeVariants)({
578
+ main: [
579
+ "text-on-main",
580
+ "hover:ring-main-container",
581
+ // data-[ok=cool]:bg-main
582
+ "data-[state=unchecked]:border-outline",
583
+ "data-[state=indeterminate]:border-main data-[state=indeterminate]:bg-main",
584
+ "data-[state=checked]:border-main data-[state=checked]:bg-main"
585
+ ],
586
+ support: [
587
+ "text-on-support",
588
+ "hover:ring-support-container",
589
+ "data-[state=unchecked]:border-outline",
590
+ "data-[state=indeterminate]:border-support data-[state=indeterminate]:bg-support",
591
+ "data-[state=checked]:border-support data-[state=checked]:bg-support"
592
+ ],
593
+ accent: [
594
+ "text-on-accent",
595
+ "hover:ring-accent-container",
596
+ "data-[state=unchecked]:border-outline",
597
+ "data-[state=indeterminate]:border-accent data-[state=indeterminate]:bg-accent",
598
+ "data-[state=checked]:border-accent data-[state=checked]:bg-accent"
599
+ ],
600
+ basic: [
601
+ "text-on-basic",
602
+ "hover:ring-basic-container",
603
+ "data-[state=unchecked]:border-outline",
604
+ "data-[state=indeterminate]:border-basic data-[state=indeterminate]:bg-basic",
605
+ "data-[state=checked]:border-basic data-[state=checked]:bg-basic"
606
+ ],
607
+ success: [
608
+ "text-on-success",
609
+ "hover:ring-success-container",
610
+ "data-[state=unchecked]:border-outline",
611
+ "data-[state=indeterminate]:border-success data-[state=indeterminate]:bg-success",
612
+ "data-[state=checked]:border-success data-[state=checked]:bg-success"
613
+ ],
614
+ alert: [
615
+ "text-on-alert",
616
+ "hover:ring-alert-container",
617
+ "data-[state=unchecked]:border-outline",
618
+ "data-[state=indeterminate]:border-alert data-[state=indeterminate]:bg-alert",
619
+ "data-[state=checked]:border-alert data-[state=checked]:bg-alert"
620
+ ],
621
+ error: [
622
+ "text-on-error",
623
+ "hover:ring-error-container",
624
+ "data-[state=unchecked]:border-outline",
625
+ "data-[state=indeterminate]:border-error data-[state=indeterminate]:bg-error",
626
+ "data-[state=checked]:border-error data-[state=checked]:bg-error"
627
+ ],
628
+ info: [
629
+ "text-on-info",
630
+ "hover:ring-info-container",
631
+ "data-[state=unchecked]:border-outline",
632
+ "data-[state=indeterminate]:border-info data-[state=indeterminate]:bg-info",
633
+ "data-[state=checked]:border-info data-[state=checked]:bg-info"
634
+ ],
635
+ neutral: [
636
+ "text-on-neutral",
637
+ "hover:ring-neutral-container",
638
+ "data-[state=unchecked]:border-outline",
639
+ "data-[state=indeterminate]:border-neutral data-[state=indeterminate]:bg-neutral",
640
+ "data-[state=checked]:border-neutral data-[state=checked]:bg-neutral"
641
+ ]
642
+ })
643
+ },
644
+ defaultVariants: {
645
+ intent: "basic"
646
+ }
647
+ }
648
+ );
649
+
650
+ // src/checkbox/CheckboxInput.tsx
651
+ var import_jsx_runtime19 = require("react/jsx-runtime");
652
+ var CheckboxPrimitive = import_radix_ui4.Checkbox.Checkbox;
653
+ var CheckboxInput = ({
654
+ className,
655
+ icon = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_Check2.Check, {}),
656
+ indeterminateIcon = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_Minus.Minus, {}),
657
+ intent,
658
+ checked,
659
+ ref,
660
+ ...others
661
+ }) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
662
+ CheckboxPrimitive,
663
+ {
664
+ ref,
665
+ className: checkboxInputStyles({ intent, className }),
666
+ checked,
667
+ ...others,
668
+ children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(CheckboxIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Icon, { size: "sm", children: checked === "indeterminate" ? indeterminateIcon : icon }) })
669
+ }
670
+ );
671
+ CheckboxInput.displayName = "CheckboxInput";
672
+
673
+ // src/checkbox/CheckboxLabel.styles.ts
674
+ var import_class_variance_authority12 = require("class-variance-authority");
675
+ var labelStyles = (0, import_class_variance_authority12.cva)("grow", {
676
+ variants: {
677
+ disabled: {
678
+ true: ["text-neutral/dim-2", "cursor-not-allowed"],
679
+ false: ["cursor-pointer"]
680
+ }
681
+ },
682
+ defaultVariants: {
683
+ disabled: false
684
+ }
685
+ });
686
+
687
+ // src/checkbox/CheckboxLabel.tsx
688
+ var import_jsx_runtime20 = require("react/jsx-runtime");
689
+ var CheckboxLabel = ({ disabled, ...others }) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Label2, { className: labelStyles({ disabled }), ...others });
690
+ CheckboxLabel.displayName = "CheckboxLabel";
691
+
692
+ // src/checkbox/Checkbox.tsx
693
+ var import_jsx_runtime21 = require("react/jsx-runtime");
694
+ var ID_PREFIX2 = ":checkbox";
695
+ var Checkbox3 = ({
696
+ id: idProp,
697
+ className,
698
+ intent: intentProp,
699
+ checked: checkedProp,
700
+ value,
701
+ disabled,
702
+ reverse = false,
703
+ onCheckedChange,
704
+ children,
705
+ ref: forwardedRef,
706
+ ...others
707
+ }) => {
708
+ const checkboxId = `${ID_PREFIX2}-${(0, import_react9.useId)()}`;
709
+ const innerId = idProp || checkboxId;
710
+ const innerLabelId = `${ID_PREFIX2}-${(0, import_react9.useId)()}`;
711
+ const field = useFormFieldControl();
712
+ const group = useCheckboxGroup();
713
+ const rootRef = (0, import_react9.useRef)(null);
714
+ const ref = (0, import_use_merge_refs.useMergeRefs)(forwardedRef, rootRef);
715
+ const getCheckboxAttributes = ({
716
+ fieldState,
717
+ groupState,
718
+ checkboxIntent
719
+ }) => {
720
+ const name2 = fieldState.name ?? groupState.name;
721
+ const isRequired2 = fieldState.isRequired ?? groupState.isRequired;
722
+ const state = fieldState.state ?? groupState.state;
723
+ const isInvalid2 = fieldState.isInvalid ?? groupState.isInvalid;
724
+ const isFieldEnclosed = fieldState.id !== groupState.id;
725
+ const id2 = isFieldEnclosed ? fieldState.id : void 0;
726
+ const description2 = isFieldEnclosed ? fieldState.description : void 0;
727
+ const intent2 = state ?? checkboxIntent ?? groupState.intent;
728
+ return { name: name2, isRequired: isRequired2, isInvalid: isInvalid2, id: id2, description: description2, intent: intent2 };
729
+ };
730
+ const checked = value ? group.value?.includes(value) : checkedProp;
731
+ const handleCheckedChange = (isChecked) => {
732
+ onCheckedChange?.(isChecked);
733
+ const rootRefValue = rootRef.current?.value;
734
+ if (rootRefValue && group.onCheckedChange) {
735
+ group.onCheckedChange(isChecked, rootRefValue);
736
+ }
737
+ };
738
+ const {
739
+ id,
740
+ name,
741
+ isInvalid,
742
+ description,
743
+ intent,
744
+ isRequired: isRequiredAttr
745
+ } = getCheckboxAttributes({
746
+ fieldState: field,
747
+ groupState: group,
748
+ checkboxIntent: intentProp
749
+ });
750
+ const isRequired = (0, import_react9.useMemo)(() => {
751
+ if (!group) return isRequiredAttr;
752
+ return isRequiredAttr ? !group.value?.length : false;
753
+ }, [group, isRequiredAttr]);
754
+ const checkboxLabel = children && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(CheckboxLabel, { disabled, htmlFor: id || innerId, id: innerLabelId, children });
755
+ const checkboxInput = /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
756
+ CheckboxInput,
757
+ {
758
+ ref,
759
+ id: id || innerId,
760
+ name,
761
+ value,
762
+ intent,
763
+ checked,
764
+ disabled,
765
+ required: isRequired,
766
+ "aria-describedby": description,
767
+ "aria-invalid": isInvalid,
768
+ onCheckedChange: handleCheckedChange,
769
+ "aria-labelledby": children ? innerLabelId : field.labelId,
770
+ ...others
771
+ }
772
+ );
773
+ const content = group.reverse || reverse ? /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_jsx_runtime21.Fragment, { children: [
774
+ checkboxLabel,
775
+ checkboxInput
776
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_jsx_runtime21.Fragment, { children: [
777
+ checkboxInput,
778
+ checkboxLabel
779
+ ] });
780
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
781
+ "div",
782
+ {
783
+ "data-spark-component": "checkbox",
784
+ className: (0, import_class_variance_authority13.cx)("gap-md text-body-1 relative flex items-start", className),
785
+ children: content
786
+ }
787
+ );
788
+ };
789
+ Checkbox3.displayName = "Checkbox";
790
+
791
+ // src/checkbox/CheckboxGroup.tsx
792
+ var import_use_combined_state = require("@spark-ui/use-combined-state");
793
+ var import_react10 = require("react");
794
+
795
+ // src/checkbox/CheckboxGroup.styles.ts
796
+ var import_class_variance_authority14 = require("class-variance-authority");
797
+ var checkboxGroupStyles = (0, import_class_variance_authority14.cva)(["flex"], {
798
+ variants: {
799
+ /**
800
+ * Prop to set the orientation of the checkbox group which could be `vertical` or `horizontal`.
801
+ */
802
+ orientation: {
803
+ vertical: ["flex-col", "gap-lg"],
804
+ horizontal: ["gap-xl"]
805
+ }
806
+ }
807
+ });
808
+
809
+ // src/checkbox/CheckboxGroup.tsx
810
+ var import_jsx_runtime22 = require("react/jsx-runtime");
811
+ var CheckboxGroup = ({
812
+ name: nameProp,
813
+ value: valueProp,
814
+ defaultValue,
815
+ className,
816
+ intent,
817
+ orientation = "vertical",
818
+ onCheckedChange: onCheckedChangeProp,
819
+ reverse = false,
820
+ children,
821
+ ref,
822
+ ...others
823
+ }) => {
824
+ const [value, setValue] = (0, import_use_combined_state.useCombinedState)(valueProp, defaultValue);
825
+ const field = useFormFieldControl();
826
+ const onCheckedChangeRef = (0, import_react10.useRef)(onCheckedChangeProp);
827
+ const { id, labelId, description, state, isInvalid, isRequired } = field;
828
+ const name = nameProp ?? field.name;
829
+ const current = (0, import_react10.useMemo)(() => {
830
+ const handleCheckedChange = (checked, changed) => {
831
+ const values = value || [];
832
+ const modified = checked ? [...values, changed] : values.filter((val) => val !== changed);
833
+ setValue(modified);
834
+ if (onCheckedChangeRef.current) {
835
+ onCheckedChangeRef.current(modified);
836
+ }
837
+ };
838
+ return {
839
+ id,
840
+ name,
841
+ value,
842
+ intent,
843
+ state,
844
+ isInvalid,
845
+ description,
846
+ isRequired,
847
+ reverse,
848
+ onCheckedChange: handleCheckedChange
849
+ };
850
+ }, [id, name, value, intent, state, isInvalid, description, isRequired, setValue, reverse]);
851
+ (0, import_react10.useEffect)(() => {
852
+ onCheckedChangeRef.current = onCheckedChangeProp;
853
+ }, [onCheckedChangeProp]);
854
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(CheckboxGroupContext.Provider, { value: current, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
855
+ "div",
856
+ {
857
+ ref,
858
+ className: checkboxGroupStyles({ className, orientation }),
859
+ role: "group",
860
+ "aria-labelledby": labelId,
861
+ "aria-describedby": description,
862
+ ...others,
863
+ children
864
+ }
865
+ ) });
866
+ };
867
+ CheckboxGroup.displayName = "CheckboxGroup";
868
+ // Annotate the CommonJS export names for ESM import in node:
869
+ 0 && (module.exports = {
870
+ Checkbox,
871
+ CheckboxGroup
872
+ });
873
+ //# sourceMappingURL=index.js.map