@spark-ui/components 10.0.1 → 10.0.3

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 (45) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/checkbox/index.js +115 -476
  3. package/dist/checkbox/index.js.map +1 -1
  4. package/dist/checkbox/index.mjs +3 -4
  5. package/dist/checkbox/index.mjs.map +1 -1
  6. package/dist/{chunk-JKNBJHD5.mjs → chunk-7BTJUYP3.mjs} +6 -5
  7. package/dist/chunk-7BTJUYP3.mjs.map +1 -0
  8. package/dist/combobox/index.js +298 -707
  9. package/dist/combobox/index.js.map +1 -1
  10. package/dist/combobox/index.mjs +3 -5
  11. package/dist/combobox/index.mjs.map +1 -1
  12. package/dist/dropdown/index.js +251 -661
  13. package/dist/dropdown/index.js.map +1 -1
  14. package/dist/dropdown/index.mjs +1 -4
  15. package/dist/dropdown/index.mjs.map +1 -1
  16. package/dist/form-field/index.mjs +373 -7
  17. package/dist/form-field/index.mjs.map +1 -1
  18. package/dist/input/index.js +46 -453
  19. package/dist/input/index.js.map +1 -1
  20. package/dist/input/index.mjs +1 -3
  21. package/dist/radio-group/index.js +46 -552
  22. package/dist/radio-group/index.js.map +1 -1
  23. package/dist/radio-group/index.mjs +3 -9
  24. package/dist/radio-group/index.mjs.map +1 -1
  25. package/dist/select/index.js +158 -568
  26. package/dist/select/index.js.map +1 -1
  27. package/dist/select/index.mjs +1 -4
  28. package/dist/select/index.mjs.map +1 -1
  29. package/dist/stepper/index.js +108 -514
  30. package/dist/stepper/index.js.map +1 -1
  31. package/dist/stepper/index.mjs +2 -5
  32. package/dist/stepper/index.mjs.map +1 -1
  33. package/dist/switch/index.js +94 -543
  34. package/dist/switch/index.js.map +1 -1
  35. package/dist/switch/index.mjs +3 -6
  36. package/dist/switch/index.mjs.map +1 -1
  37. package/dist/textarea/index.js +57 -464
  38. package/dist/textarea/index.js.map +1 -1
  39. package/dist/textarea/index.mjs +1 -3
  40. package/dist/textarea/index.mjs.map +1 -1
  41. package/package.json +16 -6
  42. package/tsup.config.ts +2 -1
  43. package/dist/chunk-7PMPYEHJ.mjs +0 -379
  44. package/dist/chunk-7PMPYEHJ.mjs.map +0 -1
  45. package/dist/chunk-JKNBJHD5.mjs.map +0 -1
@@ -27,521 +27,14 @@ __export(select_exports, {
27
27
  module.exports = __toCommonJS(select_exports);
28
28
 
29
29
  // src/select/SelectContext.tsx
30
+ var import_form_field = require("@spark-ui/components/form-field");
30
31
  var import_use_combined_state = require("@spark-ui/use-combined-state");
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
32
  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
33
 
541
34
  // src/select/utils.ts
542
- var import_react8 = require("react");
35
+ var import_react = require("react");
543
36
  var findElement = (children) => (name) => {
544
- const validChildren = import_react8.Children.toArray(children).filter(import_react8.isValidElement);
37
+ const validChildren = import_react.Children.toArray(children).filter(import_react.isValidElement);
545
38
  return validChildren.find((child) => {
546
39
  return getElementDisplayName(child)?.includes(name);
547
40
  });
@@ -550,8 +43,8 @@ var getElementDisplayName = (element) => {
550
43
  return element ? element.type.displayName : "";
551
44
  };
552
45
  var getOrderedItems = (children, result = []) => {
553
- import_react8.Children.forEach(children, (child) => {
554
- if (!(0, import_react8.isValidElement)(child)) return;
46
+ import_react.Children.forEach(children, (child) => {
47
+ if (!(0, import_react.isValidElement)(child)) return;
555
48
  if (getElementDisplayName(child) === "Select.Item" || getElementDisplayName(child) === "Select.Placeholder") {
556
49
  const childProps = child.props;
557
50
  result.push({
@@ -575,9 +68,9 @@ var getItemsFromChildren = (children) => {
575
68
  };
576
69
 
577
70
  // src/select/SelectContext.tsx
578
- var import_jsx_runtime18 = require("react/jsx-runtime");
579
- var SelectContext = (0, import_react9.createContext)(null);
580
- var ID_PREFIX2 = ":select";
71
+ var import_jsx_runtime = require("react/jsx-runtime");
72
+ var SelectContext = (0, import_react2.createContext)(null);
73
+ var ID_PREFIX = ":select";
581
74
  var SelectProvider = ({
582
75
  children,
583
76
  defaultValue,
@@ -591,22 +84,22 @@ var SelectProvider = ({
591
84
  required: requiredProp
592
85
  }) => {
593
86
  const [value, setValue] = (0, import_use_combined_state.useCombinedState)(valueProp, defaultValue, onValueChange);
594
- const [placeholder, setPlaceholder] = (0, import_react9.useState)(void 0);
595
- const [itemsMap, setItemsMap] = (0, import_react9.useState)(getItemsFromChildren(itemsComponent));
596
- const [ariaLabel, setAriaLabel] = (0, import_react9.useState)();
87
+ const [placeholder, setPlaceholder] = (0, import_react2.useState)(void 0);
88
+ const [itemsMap, setItemsMap] = (0, import_react2.useState)(getItemsFromChildren(itemsComponent));
89
+ const [ariaLabel, setAriaLabel] = (0, import_react2.useState)();
597
90
  const firstItem = itemsMap.entries().next().value[1];
598
91
  const selectedItem = typeof value === "string" ? itemsMap.get(value) : firstItem;
599
92
  const isControlled = valueProp != null;
600
- const field = useFormFieldControl();
93
+ const field = (0, import_form_field.useFormFieldControl)();
601
94
  const state = field.state || stateProp;
602
- const internalFieldID = `${ID_PREFIX2}-field-${(0, import_react9.useId)()}`;
95
+ const internalFieldID = `${ID_PREFIX}-field-${(0, import_react2.useId)()}`;
603
96
  const fieldId = field.id || internalFieldID;
604
97
  const fieldLabelId = field.labelId;
605
98
  const disabled = field.disabled ?? disabledProp;
606
99
  const readOnly = field.readOnly ?? readOnlyProp;
607
100
  const name = field.name ?? nameProp;
608
101
  const required = !!(field.isRequired ?? requiredProp);
609
- (0, import_react9.useEffect)(() => {
102
+ (0, import_react2.useEffect)(() => {
610
103
  const newMap = getItemsFromChildren(itemsComponent);
611
104
  const previousItems = [...itemsMap.values()];
612
105
  const newItems = [...newMap.values()];
@@ -619,7 +112,7 @@ var SelectProvider = ({
619
112
  setItemsMap(newMap);
620
113
  }
621
114
  }, [children]);
622
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
115
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
623
116
  SelectContext.Provider,
624
117
  {
625
118
  value: {
@@ -646,7 +139,7 @@ var SelectProvider = ({
646
139
  );
647
140
  };
648
141
  var useSelectContext = () => {
649
- const context = (0, import_react9.useContext)(SelectContext);
142
+ const context = (0, import_react2.useContext)(SelectContext);
650
143
  if (!context) {
651
144
  throw Error("useSelectContext must be used within a Select provider");
652
145
  }
@@ -654,28 +147,28 @@ var useSelectContext = () => {
654
147
  };
655
148
 
656
149
  // src/select/Select.tsx
657
- var import_jsx_runtime19 = require("react/jsx-runtime");
150
+ var import_jsx_runtime2 = require("react/jsx-runtime");
658
151
  var Select = ({ children, ...props }) => {
659
152
  const finder = findElement(children);
660
153
  const trigger = finder("Trigger");
661
154
  const items = finder("Items");
662
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SelectProvider, { ...props, itemsComponent: items, children: trigger });
155
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(SelectProvider, { ...props, itemsComponent: items, children: trigger });
663
156
  };
664
157
  Select.displayName = "Select";
665
158
 
666
159
  // src/select/SelectGroup.tsx
667
- var import_class_variance_authority11 = require("class-variance-authority");
160
+ var import_class_variance_authority = require("class-variance-authority");
668
161
 
669
162
  // src/select/SelectItemsGroupContext.tsx
670
- var import_react10 = require("react");
671
- var import_jsx_runtime20 = require("react/jsx-runtime");
672
- var SelectGroupContext = (0, import_react10.createContext)(null);
163
+ var import_react3 = require("react");
164
+ var import_jsx_runtime3 = require("react/jsx-runtime");
165
+ var SelectGroupContext = (0, import_react3.createContext)(null);
673
166
  var SelectGroupProvider = ({ children }) => {
674
- const [groupLabel, setGroupLabel] = (0, import_react10.useState)("");
675
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SelectGroupContext.Provider, { value: { groupLabel, setGroupLabel }, children });
167
+ const [groupLabel, setGroupLabel] = (0, import_react3.useState)("");
168
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(SelectGroupContext.Provider, { value: { groupLabel, setGroupLabel }, children });
676
169
  };
677
170
  var useSelectGroupContext = () => {
678
- const context = (0, import_react10.useContext)(SelectGroupContext);
171
+ const context = (0, import_react3.useContext)(SelectGroupContext);
679
172
  if (!context) {
680
173
  throw Error("useSelectGroupContext must be used within a SelectGroup provider");
681
174
  }
@@ -683,18 +176,18 @@ var useSelectGroupContext = () => {
683
176
  };
684
177
 
685
178
  // src/select/SelectGroup.tsx
686
- var import_jsx_runtime21 = require("react/jsx-runtime");
179
+ var import_jsx_runtime4 = require("react/jsx-runtime");
687
180
  var Group = ({ children, ref: forwardedRef, ...props }) => {
688
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(SelectGroupProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(GroupContent, { ref: forwardedRef, ...props, children }) });
181
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(SelectGroupProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(GroupContent, { ref: forwardedRef, ...props, children }) });
689
182
  };
690
183
  var GroupContent = ({ children, className, ref: forwardedRef }) => {
691
184
  const { groupLabel } = useSelectGroupContext();
692
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
185
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
693
186
  "optgroup",
694
187
  {
695
188
  "data-spark-component": "select-group",
696
189
  ref: forwardedRef,
697
- className: (0, import_class_variance_authority11.cx)(className),
190
+ className: (0, import_class_variance_authority.cx)(className),
698
191
  label: groupLabel,
699
192
  children
700
193
  }
@@ -703,9 +196,9 @@ var GroupContent = ({ children, className, ref: forwardedRef }) => {
703
196
  Group.displayName = "Select.Group";
704
197
 
705
198
  // src/select/SelectItem.tsx
706
- var import_jsx_runtime22 = require("react/jsx-runtime");
199
+ var import_jsx_runtime5 = require("react/jsx-runtime");
707
200
  var Item = ({ disabled = false, value, children, ref: forwardedRef }) => {
708
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
201
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
709
202
  "option",
710
203
  {
711
204
  "data-spark-component": "select-item",
@@ -720,9 +213,9 @@ var Item = ({ disabled = false, value, children, ref: forwardedRef }) => {
720
213
  Item.displayName = "Select.Item";
721
214
 
722
215
  // src/select/SelectItems.tsx
723
- var import_class_variance_authority12 = require("class-variance-authority");
724
- var import_jsx_runtime23 = require("react/jsx-runtime");
725
- var styles = (0, import_class_variance_authority12.cva)(
216
+ var import_class_variance_authority2 = require("class-variance-authority");
217
+ var import_jsx_runtime6 = require("react/jsx-runtime");
218
+ var styles = (0, import_class_variance_authority2.cva)(
726
219
  [
727
220
  "absolute left-0 top-0 size-full rounded-lg opacity-0",
728
221
  "min-h-sz-44",
@@ -781,7 +274,7 @@ var Items = ({
781
274
  setValue(event.target.value);
782
275
  }
783
276
  };
784
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
277
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
785
278
  "select",
786
279
  {
787
280
  "data-spark-component": "select-items",
@@ -803,36 +296,133 @@ var Items = ({
803
296
  Items.displayName = "Select.Items";
804
297
 
805
298
  // src/select/SelectLabel.tsx
806
- var import_react11 = require("react");
807
- var Label3 = ({ children }) => {
299
+ var import_react4 = require("react");
300
+ var Label = ({ children }) => {
808
301
  const { setGroupLabel } = useSelectGroupContext();
809
- (0, import_react11.useEffect)(() => {
302
+ (0, import_react4.useEffect)(() => {
810
303
  setGroupLabel(children);
811
304
  }, [children]);
812
305
  return null;
813
306
  };
814
- Label3.displayName = "Select.Label";
307
+ Label.displayName = "Select.Label";
308
+
309
+ // src/icon/Icon.tsx
310
+ var import_react6 = require("react");
311
+
312
+ // src/slot/Slot.tsx
313
+ var import_radix_ui = require("radix-ui");
314
+ var import_react5 = require("react");
315
+ var import_jsx_runtime7 = require("react/jsx-runtime");
316
+ var Slottable = import_radix_ui.Slot.Slottable;
317
+ var Slot = ({ ref, ...props }) => {
318
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_radix_ui.Slot.Root, { ref, ...props });
319
+ };
320
+
321
+ // src/visually-hidden/VisuallyHidden.tsx
322
+ var import_jsx_runtime8 = require("react/jsx-runtime");
323
+ var VisuallyHidden = ({ asChild = false, ref, ...props }) => {
324
+ const Component = asChild ? Slot : "span";
325
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
326
+ Component,
327
+ {
328
+ ...props,
329
+ ref,
330
+ style: {
331
+ // See: https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss
332
+ position: "absolute",
333
+ border: 0,
334
+ width: 1,
335
+ height: 1,
336
+ padding: 0,
337
+ margin: -1,
338
+ overflow: "hidden",
339
+ clip: "rect(0, 0, 0, 0)",
340
+ whiteSpace: "nowrap",
341
+ wordWrap: "normal",
342
+ ...props.style
343
+ }
344
+ }
345
+ );
346
+ };
347
+ VisuallyHidden.displayName = "VisuallyHidden";
348
+
349
+ // src/icon/Icon.styles.tsx
350
+ var import_internal_utils = require("@spark-ui/internal-utils");
351
+ var import_class_variance_authority3 = require("class-variance-authority");
352
+ var iconStyles = (0, import_class_variance_authority3.cva)(["fill-current shrink-0"], {
353
+ variants: {
354
+ /**
355
+ * Color scheme of the icon.
356
+ */
357
+ intent: (0, import_internal_utils.makeVariants)({
358
+ current: ["text-current"],
359
+ main: ["text-main"],
360
+ support: ["text-support"],
361
+ accent: ["text-accent"],
362
+ basic: ["text-basic"],
363
+ success: ["text-success"],
364
+ alert: ["text-alert"],
365
+ error: ["text-error"],
366
+ info: ["text-info"],
367
+ neutral: ["text-neutral"]
368
+ }),
369
+ /**
370
+ * Sets the size of the icon.
371
+ */
372
+ size: (0, import_internal_utils.makeVariants)({
373
+ current: ["u-current-font-size"],
374
+ sm: ["w-sz-16", "h-sz-16"],
375
+ md: ["w-sz-24", "h-sz-24"],
376
+ lg: ["w-sz-32", "h-sz-32"],
377
+ xl: ["w-sz-40", "h-sz-40"]
378
+ })
379
+ }
380
+ });
381
+
382
+ // src/icon/Icon.tsx
383
+ var import_jsx_runtime9 = require("react/jsx-runtime");
384
+ var Icon = ({
385
+ label,
386
+ className,
387
+ size = "current",
388
+ intent = "current",
389
+ children,
390
+ ...others
391
+ }) => {
392
+ const child = import_react6.Children.only(children);
393
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
394
+ (0, import_react6.cloneElement)(child, {
395
+ className: iconStyles({ className, size, intent }),
396
+ "data-spark-component": "icon",
397
+ "aria-hidden": "true",
398
+ focusable: "false",
399
+ ...others
400
+ }),
401
+ label && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(VisuallyHidden, { children: label })
402
+ ] });
403
+ };
404
+ Icon.displayName = "Icon";
815
405
 
816
406
  // src/select/SelectLeadingIcon.tsx
817
- var import_jsx_runtime24 = require("react/jsx-runtime");
407
+ var import_jsx_runtime10 = require("react/jsx-runtime");
818
408
  var LeadingIcon = ({ children }) => {
819
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Icon, { size: "sm", className: "shrink-0", children });
409
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Icon, { size: "sm", className: "shrink-0", children });
820
410
  };
821
411
  LeadingIcon.displayName = "Select.LeadingIcon";
822
412
 
823
413
  // src/select/SelectPlaceholder.tsx
824
- var import_react12 = require("react");
825
- var import_jsx_runtime25 = require("react/jsx-runtime");
414
+ var import_react7 = require("react");
415
+ var import_jsx_runtime11 = require("react/jsx-runtime");
826
416
  var Placeholder = ({
827
417
  disabled = false,
828
418
  children,
829
419
  ref: forwardedRef
830
420
  }) => {
831
421
  const { setPlaceholder } = useSelectContext();
832
- (0, import_react12.useEffect)(() => {
422
+ (0, import_react7.useEffect)(() => {
833
423
  setPlaceholder(children);
834
424
  }, [children]);
835
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
425
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
836
426
  "option",
837
427
  {
838
428
  "data-spark-component": "select-placeholder",
@@ -848,11 +438,11 @@ Placeholder.displayName = "Select.Placeholder";
848
438
 
849
439
  // src/select/SelectTrigger.tsx
850
440
  var import_ArrowHorizontalDown = require("@spark-ui/icons/ArrowHorizontalDown");
851
- var import_react13 = require("react");
441
+ var import_react8 = require("react");
852
442
 
853
443
  // src/select/SelectTrigger.styles.tsx
854
- var import_class_variance_authority13 = require("class-variance-authority");
855
- var styles2 = (0, import_class_variance_authority13.cva)(
444
+ var import_class_variance_authority4 = require("class-variance-authority");
445
+ var styles2 = (0, import_class_variance_authority4.cva)(
856
446
  [
857
447
  "relative flex w-full items-center justify-between",
858
448
  "min-h-sz-44 rounded-lg px-lg",
@@ -899,7 +489,7 @@ var styles2 = (0, import_class_variance_authority13.cva)(
899
489
  );
900
490
 
901
491
  // src/select/SelectTrigger.tsx
902
- var import_jsx_runtime26 = require("react/jsx-runtime");
492
+ var import_jsx_runtime12 = require("react/jsx-runtime");
903
493
  var Trigger = ({
904
494
  "aria-label": ariaLabel,
905
495
  children,
@@ -907,20 +497,20 @@ var Trigger = ({
907
497
  ref: forwardedRef
908
498
  }) => {
909
499
  const { disabled, readOnly, state, setAriaLabel, itemsComponent } = useSelectContext();
910
- (0, import_react13.useEffect)(() => {
500
+ (0, import_react8.useEffect)(() => {
911
501
  if (ariaLabel) {
912
502
  setAriaLabel(ariaLabel);
913
503
  }
914
504
  }, [ariaLabel]);
915
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
505
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
916
506
  "div",
917
507
  {
918
508
  "data-spark-component": "select-trigger",
919
509
  ref: forwardedRef,
920
510
  className: styles2({ className, state, disabled, readOnly }),
921
511
  children: [
922
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "gap-md flex items-center justify-start", children }),
923
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Icon, { className: "ml-md shrink-0", size: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_ArrowHorizontalDown.ArrowHorizontalDown, {}) }),
512
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "gap-md flex items-center justify-start", children }),
513
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Icon, { className: "ml-md shrink-0", size: "sm", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_ArrowHorizontalDown.ArrowHorizontalDown, {}) }),
924
514
  itemsComponent
925
515
  ]
926
516
  }
@@ -929,8 +519,8 @@ var Trigger = ({
929
519
  Trigger.displayName = "Select.Trigger";
930
520
 
931
521
  // src/select/SelectValue.tsx
932
- var import_class_variance_authority14 = require("class-variance-authority");
933
- var import_jsx_runtime27 = require("react/jsx-runtime");
522
+ var import_class_variance_authority5 = require("class-variance-authority");
523
+ var import_jsx_runtime13 = require("react/jsx-runtime");
934
524
  var Value = ({
935
525
  children,
936
526
  className,
@@ -940,17 +530,17 @@ var Value = ({
940
530
  const { selectedItem, placeholder, disabled } = useSelectContext();
941
531
  const isPlaceholderSelected = selectedItem?.value == null;
942
532
  const valuePlaceholder = customPlaceholder || placeholder;
943
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
533
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
944
534
  "span",
945
535
  {
946
536
  role: "presentation",
947
537
  "data-spark-component": "select-value",
948
538
  ref: forwardedRef,
949
- className: (0, import_class_variance_authority14.cx)("flex shrink items-center text-left", className),
950
- children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
539
+ className: (0, import_class_variance_authority5.cx)("flex shrink items-center text-left", className),
540
+ children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
951
541
  "span",
952
542
  {
953
- className: (0, import_class_variance_authority14.cx)(
543
+ className: (0, import_class_variance_authority5.cx)(
954
544
  "line-clamp-1 flex-1 overflow-hidden break-all text-ellipsis",
955
545
  isPlaceholderSelected && !disabled && "text-on-surface/dim-1"
956
546
  ),
@@ -968,7 +558,7 @@ var Select2 = Object.assign(Select, {
968
558
  Item,
969
559
  Items,
970
560
  Placeholder,
971
- Label: Label3,
561
+ Label,
972
562
  Trigger,
973
563
  Value,
974
564
  LeadingIcon
@@ -978,7 +568,7 @@ Group.displayName = "Select.Group";
978
568
  Items.displayName = "Select.Items";
979
569
  Item.displayName = "Select.Item";
980
570
  Placeholder.displayName = "Select.Placeholder";
981
- Label3.displayName = "Select.Label";
571
+ Label.displayName = "Select.Label";
982
572
  Trigger.displayName = "Select.Trigger";
983
573
  Value.displayName = "Select.Value";
984
574
  LeadingIcon.displayName = "Select.LeadingIcon";