@ark-ui/solid 3.5.0 → 3.6.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 (76) hide show
  1. package/README.md +3 -0
  2. package/dist/cjs/index.js +605 -11
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/esm/index.js +578 -12
  5. package/dist/esm/index.js.map +1 -1
  6. package/dist/source/components/field/use-field.js +5 -3
  7. package/dist/source/components/fieldset/fieldset-context.jsx +2 -0
  8. package/dist/source/components/fieldset/fieldset-error-text.jsx +11 -0
  9. package/dist/source/components/fieldset/fieldset-helper-text.jsx +8 -0
  10. package/dist/source/components/fieldset/fieldset-legend.jsx +8 -0
  11. package/dist/source/components/fieldset/fieldset-root-provider.jsx +11 -0
  12. package/dist/source/components/fieldset/fieldset-root.jsx +18 -0
  13. package/dist/source/components/fieldset/fieldset.anatomy.js +3 -0
  14. package/dist/source/components/fieldset/fieldset.jsx +6 -0
  15. package/dist/source/components/fieldset/index.js +9 -0
  16. package/dist/source/components/fieldset/use-fieldset-context.js +6 -0
  17. package/dist/source/components/fieldset/use-fieldset.js +65 -0
  18. package/dist/source/components/highlight/highlight.jsx +20 -0
  19. package/dist/source/components/highlight/index.js +2 -0
  20. package/dist/source/components/highlight/use-highlight.js +42 -0
  21. package/dist/source/components/index.js +3 -0
  22. package/dist/source/components/time-picker/index.js +16 -0
  23. package/dist/source/components/time-picker/time-picker-cell.jsx +18 -0
  24. package/dist/source/components/time-picker/time-picker-clear-trigger.jsx +8 -0
  25. package/dist/source/components/time-picker/time-picker-column.jsx +13 -0
  26. package/dist/source/components/time-picker/time-picker-content.jsx +13 -0
  27. package/dist/source/components/time-picker/time-picker-context.jsx +2 -0
  28. package/dist/source/components/time-picker/time-picker-control.jsx +8 -0
  29. package/dist/source/components/time-picker/time-picker-input.jsx +8 -0
  30. package/dist/source/components/time-picker/time-picker-label.jsx +8 -0
  31. package/dist/source/components/time-picker/time-picker-positioner.jsx +13 -0
  32. package/dist/source/components/time-picker/time-picker-root-provider.jsx +16 -0
  33. package/dist/source/components/time-picker/time-picker-root.jsx +39 -0
  34. package/dist/source/components/time-picker/time-picker-spacer.jsx +8 -0
  35. package/dist/source/components/time-picker/time-picker-trigger.jsx +8 -0
  36. package/dist/source/components/time-picker/time-picker.js +13 -0
  37. package/dist/source/components/time-picker/use-time-picker-column-props-context.js +5 -0
  38. package/dist/source/components/time-picker/use-time-picker-context.js +5 -0
  39. package/dist/source/components/time-picker/use-time-picker.js +23 -0
  40. package/dist/source/components/tooltip/tooltip-root.jsx +1 -0
  41. package/dist/types/components/dialog/dialog-root.d.ts +1 -1
  42. package/dist/types/components/fieldset/fieldset-context.d.ts +6 -0
  43. package/dist/types/components/fieldset/fieldset-error-text.d.ts +6 -0
  44. package/dist/types/components/fieldset/fieldset-helper-text.d.ts +6 -0
  45. package/dist/types/components/fieldset/fieldset-legend.d.ts +6 -0
  46. package/dist/types/components/fieldset/fieldset-root-provider.d.ts +11 -0
  47. package/dist/types/components/fieldset/fieldset-root.d.ts +10 -0
  48. package/dist/types/components/fieldset/fieldset.anatomy.d.ts +2 -0
  49. package/dist/types/components/fieldset/fieldset.d.ts +6 -0
  50. package/dist/types/components/fieldset/index.d.ts +9 -0
  51. package/dist/types/components/fieldset/use-fieldset-context.d.ts +4 -0
  52. package/dist/types/components/fieldset/use-fieldset.d.ts +49 -0
  53. package/dist/types/components/highlight/highlight.d.ts +8 -0
  54. package/dist/types/components/highlight/index.d.ts +2 -0
  55. package/dist/types/components/highlight/use-highlight.d.ts +31 -0
  56. package/dist/types/components/index.d.ts +3 -0
  57. package/dist/types/components/time-picker/index.d.ts +17 -0
  58. package/dist/types/components/time-picker/time-picker-cell.d.ts +12 -0
  59. package/dist/types/components/time-picker/time-picker-clear-trigger.d.ts +7 -0
  60. package/dist/types/components/time-picker/time-picker-column.d.ts +8 -0
  61. package/dist/types/components/time-picker/time-picker-content.d.ts +7 -0
  62. package/dist/types/components/time-picker/time-picker-context.d.ts +6 -0
  63. package/dist/types/components/time-picker/time-picker-control.d.ts +7 -0
  64. package/dist/types/components/time-picker/time-picker-input.d.ts +7 -0
  65. package/dist/types/components/time-picker/time-picker-label.d.ts +7 -0
  66. package/dist/types/components/time-picker/time-picker-positioner.d.ts +6 -0
  67. package/dist/types/components/time-picker/time-picker-root-provider.d.ts +12 -0
  68. package/dist/types/components/time-picker/time-picker-root.d.ts +9 -0
  69. package/dist/types/components/time-picker/time-picker-spacer.d.ts +7 -0
  70. package/dist/types/components/time-picker/time-picker-trigger.d.ts +7 -0
  71. package/dist/types/components/time-picker/time-picker.d.ts +14 -0
  72. package/dist/types/components/time-picker/use-time-picker-column-props-context.d.ts +5 -0
  73. package/dist/types/components/time-picker/use-time-picker-context.d.ts +4 -0
  74. package/dist/types/components/time-picker/use-time-picker.d.ts +31 -0
  75. package/dist/types/components/toast/index.d.ts +1 -1
  76. package/package.json +61 -57
package/dist/cjs/index.js CHANGED
@@ -36,6 +36,7 @@ var splitter$1 = require('@zag-js/splitter');
36
36
  var zagSwitch = require('@zag-js/switch');
37
37
  var tabs$1 = require('@zag-js/tabs');
38
38
  var tagsInput$1 = require('@zag-js/tags-input');
39
+ var timePicker$1 = require('@zag-js/time-picker');
39
40
  var toast$1 = require('@zag-js/toast');
40
41
  var toggleGroup$1 = require('@zag-js/toggle-group');
41
42
  var tooltip$1 = require('@zag-js/tooltip');
@@ -88,6 +89,7 @@ var splitter__namespace = /*#__PURE__*/_interopNamespaceDefault(splitter$1);
88
89
  var zagSwitch__namespace = /*#__PURE__*/_interopNamespaceDefault(zagSwitch);
89
90
  var tabs__namespace = /*#__PURE__*/_interopNamespaceDefault(tabs$1);
90
91
  var tagsInput__namespace = /*#__PURE__*/_interopNamespaceDefault(tagsInput$1);
92
+ var timePicker__namespace = /*#__PURE__*/_interopNamespaceDefault(timePicker$1);
91
93
  var toast__namespace = /*#__PURE__*/_interopNamespaceDefault(toast$1);
92
94
  var toggleGroup__namespace = /*#__PURE__*/_interopNamespaceDefault(toggleGroup$1);
93
95
  var tooltip__namespace = /*#__PURE__*/_interopNamespaceDefault(tooltip$1);
@@ -202,7 +204,7 @@ const [EnvironmentContextProvider, useEnvironmentContext] = createContext({
202
204
  })
203
205
  });
204
206
 
205
- var _tmpl$$5 = /*#__PURE__*/web.template(`<span hidden>`);
207
+ var _tmpl$$6 = /*#__PURE__*/web.template(`<span hidden>`);
206
208
  const EnvironmentProvider = props => {
207
209
  const [spanRef, setSpanRef] = solidJs.createSignal();
208
210
  const getRootNode = () => runIfFn(props.value) ?? spanRef()?.ownerDocument ?? document;
@@ -219,7 +221,7 @@ const EnvironmentProvider = props => {
219
221
  return !props.value;
220
222
  },
221
223
  get children() {
222
- var _el$ = _tmpl$$5();
224
+ var _el$ = _tmpl$$6();
223
225
  web.use(setSpanRef, _el$);
224
226
  return _el$;
225
227
  }
@@ -785,19 +787,144 @@ const FieldSelect = props => {
785
787
  return web.createComponent(ark.select, mergedProps);
786
788
  };
787
789
 
790
+ const [FieldsetProvider, useFieldsetContext] = createContext({
791
+ hookName: 'useFieldsetContext',
792
+ providerName: '<FieldsetProvider />',
793
+ strict: false
794
+ });
795
+
796
+ const FieldsetContext = props => props.children(useFieldsetContext());
797
+
798
+ const FieldsetErrorText = props => {
799
+ const fieldset = useFieldsetContext();
800
+ const mergedProps = solid.mergeProps(() => fieldset().getErrorTextProps(), props);
801
+ return web.createComponent(solidJs.Show, {
802
+ get when() {
803
+ return fieldset().invalid;
804
+ },
805
+ get children() {
806
+ return web.createComponent(ark.span, mergedProps);
807
+ }
808
+ });
809
+ };
810
+
811
+ const FieldsetHelperText = props => {
812
+ const fieldset = useFieldsetContext();
813
+ const mergedProps = solid.mergeProps(() => fieldset().getHelperTextProps(), props);
814
+ return web.createComponent(ark.span, mergedProps);
815
+ };
816
+
817
+ const fieldsetAnatomy = anatomy.createAnatomy('fieldset').parts('root', 'errorText', 'helperText', 'legend');
818
+ const parts$2 = fieldsetAnatomy.build();
819
+
820
+ const useFieldset = props => {
821
+ const {
822
+ disabled = false,
823
+ invalid = false
824
+ } = props;
825
+ let rootRef;
826
+ const id = props.id ?? solidJs.createUniqueId();
827
+ const errorTextId = `fieldset::${id}::error-text`;
828
+ const helperTextId = `fieldset::${id}::helper-text`;
829
+ const [hasErrorText, setHasErrorText] = solidJs.createSignal(false);
830
+ const [hasHelperText, setHasHelperText] = solidJs.createSignal(false);
831
+ solidJs.createEffect(() => {
832
+ return;
833
+ });
834
+ const labelIds = [];
835
+ if (hasErrorText() && invalid) labelIds.push(errorTextId);
836
+ if (hasHelperText()) labelIds.push(helperTextId);
837
+ const getRootProps = () => ({
838
+ ...parts$2.root.attrs,
839
+ disabled,
840
+ 'data-disabled': dataAttr$1(disabled),
841
+ 'data-invalid': dataAttr$1(invalid),
842
+ 'aria-describedby': labelIds.join(' ') || undefined
843
+ });
844
+ const getLegendProps = () => ({
845
+ ...parts$2.legend.attrs,
846
+ 'data-disabled': dataAttr$1(disabled),
847
+ 'data-invalid': dataAttr$1(invalid)
848
+ });
849
+ const getHelperTextProps = () => ({
850
+ id: helperTextId,
851
+ ...parts$2.helperText.attrs
852
+ });
853
+ const getErrorTextProps = () => ({
854
+ id: errorTextId,
855
+ ...parts$2.errorText.attrs,
856
+ 'aria-live': 'polite'
857
+ });
858
+ return solidJs.createMemo(() => ({
859
+ refs: {
860
+ rootRef
861
+ },
862
+ disabled,
863
+ invalid,
864
+ getRootProps,
865
+ getLegendProps,
866
+ getHelperTextProps,
867
+ getErrorTextProps
868
+ }));
869
+ };
870
+ const dataAttr$1 = condition => condition ? '' : undefined;
871
+
872
+ const FieldsetRoot = props => {
873
+ const [useFieldsetProps, localProps] = createSplitProps()(props, ['id', 'disabled', 'invalid']);
874
+ const fieldset = useFieldset(useFieldsetProps);
875
+ const mergedProps = solid.mergeProps(() => fieldset().getRootProps(), localProps);
876
+ return web.createComponent(FieldsetProvider, {
877
+ value: fieldset,
878
+ get children() {
879
+ return web.createComponent(ark.fieldset, mergedProps);
880
+ }
881
+ });
882
+ };
883
+ FieldsetRoot.displayName = 'FieldsetRoot';
884
+
885
+ const FieldsetRootProvider = props => {
886
+ const [{
887
+ value: fieldset
888
+ }, localProps] = createSplitProps()(props, ['value']);
889
+ const mergedProps = solid.mergeProps(() => fieldset().getRootProps(), localProps);
890
+ return web.createComponent(FieldsetProvider, {
891
+ value: fieldset,
892
+ get children() {
893
+ return web.createComponent(ark.fieldset, mergedProps);
894
+ }
895
+ });
896
+ };
897
+
898
+ const FieldsetLegend = props => {
899
+ const fieldset = useFieldsetContext();
900
+ const mergedProps = solid.mergeProps(() => fieldset().getLegendProps(), props);
901
+ return web.createComponent(ark.legend, mergedProps);
902
+ };
903
+
904
+ var fieldset = /*#__PURE__*/Object.freeze({
905
+ __proto__: null,
906
+ Context: FieldsetContext,
907
+ ErrorText: FieldsetErrorText,
908
+ HelperText: FieldsetHelperText,
909
+ Legend: FieldsetLegend,
910
+ Root: FieldsetRoot,
911
+ RootProvider: FieldsetRootProvider
912
+ });
913
+
788
914
  const fieldAnatomy = anatomy.createAnatomy('field').parts('root', 'errorText', 'helperText', 'input', 'label', 'select', 'textarea');
789
915
  const parts$1 = fieldAnatomy.build();
790
916
 
791
917
  const useField = props => {
918
+ const fieldset = useFieldsetContext();
792
919
  const {
793
- required = false,
794
- disabled = false,
920
+ disabled = Boolean(fieldset?.().disabled),
795
921
  invalid = false,
796
- readOnly = false
922
+ readOnly = false,
923
+ required = false
797
924
  } = props;
798
925
  const [hasErrorText, setHasErrorText] = solidJs.createSignal(false);
799
926
  const [hasHelperText, setHasHelperText] = solidJs.createSignal(false);
800
- const id = props.id ?? `field-${Math.random().toString(36).substr(2, 9)}`;
927
+ const id = props.id ?? solidJs.createUniqueId();
801
928
  let rootRef;
802
929
  const errorTextId = `field::${id}::error-text`;
803
930
  const helperTextId = `field::${id}::helper-text`;
@@ -1866,7 +1993,7 @@ const DatePickerLabel = props => {
1866
1993
  return web.createComponent(ark.label, mergedProps);
1867
1994
  };
1868
1995
 
1869
- var _tmpl$$4 = /*#__PURE__*/web.template(`<option>`);
1996
+ var _tmpl$$5 = /*#__PURE__*/web.template(`<option>`);
1870
1997
  const DatePickerMonthSelect = props => {
1871
1998
  const api = useDatePickerContext();
1872
1999
  const mergedProps = solid.mergeProps(() => api().getMonthSelectProps(), props);
@@ -1877,7 +2004,7 @@ const DatePickerMonthSelect = props => {
1877
2004
  return api().getMonths();
1878
2005
  },
1879
2006
  children: month => (() => {
1880
- var _el$ = _tmpl$$4();
2007
+ var _el$ = _tmpl$$5();
1881
2008
  web.insert(_el$, () => month.label);
1882
2009
  web.effect(() => _el$.value = month.value);
1883
2010
  return _el$;
@@ -2145,7 +2272,7 @@ const DatePickerViewTrigger = props => {
2145
2272
  return web.createComponent(ark.button, mergedProps);
2146
2273
  };
2147
2274
 
2148
- var _tmpl$$3 = /*#__PURE__*/web.template(`<option>`);
2275
+ var _tmpl$$4 = /*#__PURE__*/web.template(`<option>`);
2149
2276
  const DatePickerYearSelect = props => {
2150
2277
  const api = useDatePickerContext();
2151
2278
  const mergedProps = solid.mergeProps(() => api().getYearSelectProps(), props);
@@ -2159,7 +2286,7 @@ const DatePickerYearSelect = props => {
2159
2286
  });
2160
2287
  },
2161
2288
  children: year => (() => {
2162
- var _el$ = _tmpl$$3();
2289
+ var _el$ = _tmpl$$4();
2163
2290
  _el$.value = year;
2164
2291
  web.insert(_el$, year);
2165
2292
  return _el$;
@@ -2689,6 +2816,78 @@ var format = /*#__PURE__*/Object.freeze({
2689
2816
  Number: FormatNumber
2690
2817
  });
2691
2818
 
2819
+ const escapeRegexp = term => term.replace(/[|\\{}()[\]^$+*?.-]/g, char => `\\${char}`);
2820
+ const buildRegex = (queryProp, flags) => {
2821
+ const query = queryProp.filter(Boolean).map(text => escapeRegexp(text));
2822
+ return new RegExp(`(${query.join('|')})`, flags);
2823
+ };
2824
+ const getRegexFlags = (ignoreCase = true, matchAll = true) => `${ignoreCase ? 'i' : ''}${matchAll ? 'g' : ''}`;
2825
+ const normalizeSpan = (spans, len) => {
2826
+ const result = [];
2827
+ const append = (start, end, match) => {
2828
+ if (end - start > 0) result.push({
2829
+ start,
2830
+ end,
2831
+ match
2832
+ });
2833
+ };
2834
+ if (spans.length === 0) {
2835
+ append(0, len, false);
2836
+ } else {
2837
+ let lastIndex = 0;
2838
+ for (const chunk of spans) {
2839
+ append(lastIndex, chunk.start, false);
2840
+ append(chunk.start, chunk.end, true);
2841
+ lastIndex = chunk.end;
2842
+ }
2843
+ append(lastIndex, len, false);
2844
+ }
2845
+ return result;
2846
+ };
2847
+ const highlightWords = props => {
2848
+ const flags = getRegexFlags(props.ignoreCase, props.matchAll);
2849
+ const regex = buildRegex(Array.isArray(props.query) ? props.query : [props.query], flags);
2850
+ const spans = [...props.text.matchAll(regex)].map(match => ({
2851
+ start: match.index || 0,
2852
+ end: (match.index || 0) + match[0].length
2853
+ }));
2854
+ return normalizeSpan(spans, props.text.length).map(chunk => ({
2855
+ text: props.text.slice(chunk.start, chunk.end),
2856
+ match: !!chunk.match
2857
+ }));
2858
+ };
2859
+ const useHighlight = props => {
2860
+ return solidJs.createMemo(() => highlightWords(props));
2861
+ };
2862
+
2863
+ var _tmpl$$3 = /*#__PURE__*/web.template(`<mark>`);
2864
+ const Highlight = props => {
2865
+ if (typeof props.text !== 'string') {
2866
+ throw new Error('[ark-ui/highlight] text must be a string');
2867
+ }
2868
+ const [highlightProps, localProps] = createSplitProps()(props, ['query', 'text', 'ignoreCase', 'matchAll']);
2869
+ const chunks = useHighlight(highlightProps);
2870
+ return web.createComponent(solidJs.For, {
2871
+ get each() {
2872
+ return chunks();
2873
+ },
2874
+ children: chunk => web.createComponent(solidJs.Show, {
2875
+ get when() {
2876
+ return chunk.match;
2877
+ },
2878
+ get fallback() {
2879
+ return chunk.text;
2880
+ },
2881
+ get children() {
2882
+ var _el$ = _tmpl$$3();
2883
+ web.spread(_el$, localProps, false, true);
2884
+ web.insert(_el$, () => chunk.text);
2885
+ return _el$;
2886
+ }
2887
+ })
2888
+ });
2889
+ };
2890
+
2692
2891
  const [HoverCardProvider, useHoverCardContext] = createContext({
2693
2892
  hookName: 'useHoverCardContext',
2694
2893
  providerName: '<HoverCardProvider />'
@@ -5206,6 +5405,374 @@ var tagsInput = /*#__PURE__*/Object.freeze({
5206
5405
  RootProvider: TagsInputRootProvider
5207
5406
  });
5208
5407
 
5408
+ const [TimePickerColumnPropsProvider, useTimePickerColumnPropsContext] = createContext({
5409
+ hookName: 'useTimePickerColumnPropsContext',
5410
+ providerName: '<TimePickerColumnPropsProvider />'
5411
+ });
5412
+
5413
+ const [TimePickerProvider, useTimePickerContext] = createContext({
5414
+ hookName: 'useTimePickerContext',
5415
+ providerName: '<TimePickerProvider />'
5416
+ });
5417
+
5418
+ const TimePickerCell = props => {
5419
+ const [cellProps, localProps] = createSplitProps()(props, ['value']);
5420
+ const timePicker = useTimePickerContext();
5421
+ const columnProps = useTimePickerColumnPropsContext();
5422
+ const unitToPropsMap = {
5423
+ hour: () => timePicker().getHourCellProps(cellProps),
5424
+ minute: () => timePicker().getMinuteCellProps(cellProps),
5425
+ second: () => timePicker().getSecondCellProps(cellProps),
5426
+ period: () => timePicker().getPeriodCellProps(cellProps)
5427
+ };
5428
+ const mergedProps = solid.mergeProps(() => unitToPropsMap[columnProps.unit](), localProps);
5429
+ return web.createComponent(ark.button, mergedProps);
5430
+ };
5431
+
5432
+ const TimePickerClearTrigger = props => {
5433
+ const timePicker = useTimePickerContext();
5434
+ const mergedProps = solid.mergeProps(() => timePicker().getClearTriggerProps(), props);
5435
+ return web.createComponent(ark.button, mergedProps);
5436
+ };
5437
+
5438
+ const TimePickerColumn = props => {
5439
+ const [columnProps, localProps] = createSplitProps()(props, ['unit']);
5440
+ const timePicker = useTimePickerContext();
5441
+ const mergedProps = solid.mergeProps(() => timePicker().getColumnProps(columnProps), localProps);
5442
+ return web.createComponent(TimePickerColumnPropsProvider, {
5443
+ value: columnProps,
5444
+ get children() {
5445
+ return web.createComponent(ark.div, mergedProps);
5446
+ }
5447
+ });
5448
+ };
5449
+
5450
+ const TimePickerContent = props => {
5451
+ const timePicker = useTimePickerContext();
5452
+ const presenceApi = usePresenceContext();
5453
+ const mergedProps = solid.mergeProps(() => timePicker().getContentProps(), () => presenceApi().presenceProps, props);
5454
+ return web.createComponent(solidJs.Show, {
5455
+ get when() {
5456
+ return !presenceApi().unmounted;
5457
+ },
5458
+ get children() {
5459
+ return web.createComponent(ark.div, mergedProps);
5460
+ }
5461
+ });
5462
+ };
5463
+
5464
+ const TimePickerContext = props => props.children(useTimePickerContext());
5465
+
5466
+ const TimePickerControl = props => {
5467
+ const timePicker = useTimePickerContext();
5468
+ const mergedProps = solid.mergeProps(() => timePicker().getControlProps(), props);
5469
+ return web.createComponent(ark.div, mergedProps);
5470
+ };
5471
+
5472
+ const TimePickerInput = props => {
5473
+ const timePicker = useTimePickerContext();
5474
+ const mergedProps = solid.mergeProps(() => timePicker().getInputProps(), props);
5475
+ return web.createComponent(ark.input, mergedProps);
5476
+ };
5477
+
5478
+ const TimePickerLabel = props => {
5479
+ const timePicker = useTimePickerContext();
5480
+ const mergedProps = solid.mergeProps(() => timePicker().getLabelProps(), props);
5481
+ return web.createComponent(ark.label, mergedProps);
5482
+ };
5483
+
5484
+ const TimePickerPositioner = props => {
5485
+ const timePicker = useTimePickerContext();
5486
+ const mergedProps = solid.mergeProps(() => timePicker().getPositionerProps(), props);
5487
+ const presenceApi = usePresenceContext();
5488
+ return web.createComponent(solidJs.Show, {
5489
+ get when() {
5490
+ return !presenceApi().unmounted;
5491
+ },
5492
+ get children() {
5493
+ return web.createComponent(ark.div, mergedProps);
5494
+ }
5495
+ });
5496
+ };
5497
+
5498
+ function $14e0f24ef4ac5c92$export$c19a80a9721b80f6(a, b) {
5499
+ return $14e0f24ef4ac5c92$var$timeToMs(a) - $14e0f24ef4ac5c92$var$timeToMs(b);
5500
+ }
5501
+ function $14e0f24ef4ac5c92$var$timeToMs(a) {
5502
+ return a.hour * 3600000 + a.minute * 60000 + a.second * 1000 + a.millisecond;
5503
+ }
5504
+
5505
+ function $735220c2d4774dd3$export$3e2544e88a25bff8(duration) {
5506
+ let inverseDuration = {};
5507
+ for(let key in duration)if (typeof duration[key] === 'number') inverseDuration[key] = -duration[key];
5508
+ return inverseDuration;
5509
+ }
5510
+ function $735220c2d4774dd3$export$e5d5e1c1822b6e56(value, fields) {
5511
+ let mutableValue = value.copy();
5512
+ if (fields.hour != null) mutableValue.hour = fields.hour;
5513
+ if (fields.minute != null) mutableValue.minute = fields.minute;
5514
+ if (fields.second != null) mutableValue.second = fields.second;
5515
+ if (fields.millisecond != null) mutableValue.millisecond = fields.millisecond;
5516
+ $735220c2d4774dd3$export$7555de1e070510cb(mutableValue);
5517
+ return mutableValue;
5518
+ }
5519
+ function $735220c2d4774dd3$var$balanceTime(time) {
5520
+ time.second += Math.floor(time.millisecond / 1000);
5521
+ time.millisecond = $735220c2d4774dd3$var$nonNegativeMod(time.millisecond, 1000);
5522
+ time.minute += Math.floor(time.second / 60);
5523
+ time.second = $735220c2d4774dd3$var$nonNegativeMod(time.second, 60);
5524
+ time.hour += Math.floor(time.minute / 60);
5525
+ time.minute = $735220c2d4774dd3$var$nonNegativeMod(time.minute, 60);
5526
+ let days = Math.floor(time.hour / 24);
5527
+ time.hour = $735220c2d4774dd3$var$nonNegativeMod(time.hour, 24);
5528
+ return days;
5529
+ }
5530
+ function $735220c2d4774dd3$export$7555de1e070510cb(time) {
5531
+ time.millisecond = Math.max(0, Math.min(time.millisecond, 1000));
5532
+ time.second = Math.max(0, Math.min(time.second, 59));
5533
+ time.minute = Math.max(0, Math.min(time.minute, 59));
5534
+ time.hour = Math.max(0, Math.min(time.hour, 23));
5535
+ }
5536
+ function $735220c2d4774dd3$var$nonNegativeMod(a, b) {
5537
+ let result = a % b;
5538
+ if (result < 0) result += b;
5539
+ return result;
5540
+ }
5541
+ function $735220c2d4774dd3$var$addTimeFields(time, duration) {
5542
+ time.hour += duration.hours || 0;
5543
+ time.minute += duration.minutes || 0;
5544
+ time.second += duration.seconds || 0;
5545
+ time.millisecond += duration.milliseconds || 0;
5546
+ return $735220c2d4774dd3$var$balanceTime(time);
5547
+ }
5548
+ function $735220c2d4774dd3$export$7ed87b6bc2506470(time, duration) {
5549
+ let res = time.copy();
5550
+ $735220c2d4774dd3$var$addTimeFields(res, duration);
5551
+ return res;
5552
+ }
5553
+ function $735220c2d4774dd3$export$fe34d3a381cd7501(time, duration) {
5554
+ return $735220c2d4774dd3$export$7ed87b6bc2506470(time, $735220c2d4774dd3$export$3e2544e88a25bff8(duration));
5555
+ }
5556
+ function $735220c2d4774dd3$export$dd02b3e0007dfe28(value, field, amount, options) {
5557
+ let mutable = value.copy();
5558
+ switch(field){
5559
+ case 'hour':
5560
+ {
5561
+ let hours = value.hour;
5562
+ let min = 0;
5563
+ let max = 23;
5564
+ if ((options === null || options === void 0 ? void 0 : options.hourCycle) === 12) {
5565
+ let isPM = hours >= 12;
5566
+ min = isPM ? 12 : 0;
5567
+ max = isPM ? 23 : 11;
5568
+ }
5569
+ mutable.hour = $735220c2d4774dd3$var$cycleValue(hours, amount, min, max, options === null || options === void 0 ? void 0 : options.round);
5570
+ break;
5571
+ }
5572
+ case 'minute':
5573
+ mutable.minute = $735220c2d4774dd3$var$cycleValue(value.minute, amount, 0, 59, options === null || options === void 0 ? void 0 : options.round);
5574
+ break;
5575
+ case 'second':
5576
+ mutable.second = $735220c2d4774dd3$var$cycleValue(value.second, amount, 0, 59, options === null || options === void 0 ? void 0 : options.round);
5577
+ break;
5578
+ case 'millisecond':
5579
+ mutable.millisecond = $735220c2d4774dd3$var$cycleValue(value.millisecond, amount, 0, 999, options === null || options === void 0 ? void 0 : options.round);
5580
+ break;
5581
+ default:
5582
+ throw new Error('Unsupported field ' + field);
5583
+ }
5584
+ return mutable;
5585
+ }
5586
+ function $735220c2d4774dd3$var$cycleValue(value, amount, min, max, round = false) {
5587
+ if (round) {
5588
+ value += Math.sign(amount);
5589
+ if (value < min) value = max;
5590
+ let div = Math.abs(amount);
5591
+ if (amount > 0) value = Math.ceil(value / div) * div;
5592
+ else value = Math.floor(value / div) * div;
5593
+ if (value > max) value = min;
5594
+ } else {
5595
+ value += amount;
5596
+ if (value < min) value = max - (min - value - 1);
5597
+ else if (value > max) value = min + (value - max - 1);
5598
+ }
5599
+ return value;
5600
+ }
5601
+
5602
+ /*
5603
+ * Copyright 2020 Adobe. All rights reserved.
5604
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
5605
+ * you may not use this file except in compliance with the License. You may obtain a copy
5606
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
5607
+ *
5608
+ * Unless required by applicable law or agreed to in writing, software distributed under
5609
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
5610
+ * OF ANY KIND, either express or implied. See the License for the specific language
5611
+ * governing permissions and limitations under the License.
5612
+ */
5613
+
5614
+
5615
+
5616
+ const $fae977aafc393c5c$var$TIME_RE = /^(\d{2})(?::(\d{2}))?(?::(\d{2}))?(\.\d+)?$/;
5617
+ function $fae977aafc393c5c$export$c9698ec7f05a07e1(value) {
5618
+ let m = value.match($fae977aafc393c5c$var$TIME_RE);
5619
+ if (!m) throw new Error('Invalid ISO 8601 time string: ' + value);
5620
+ return new ($35ea8db9cb2ccb90$export$680ea196effce5f)($fae977aafc393c5c$var$parseNumber(m[1], 0, 23), m[2] ? $fae977aafc393c5c$var$parseNumber(m[2], 0, 59) : 0, m[3] ? $fae977aafc393c5c$var$parseNumber(m[3], 0, 59) : 0, m[4] ? $fae977aafc393c5c$var$parseNumber(m[4], 0, Infinity) * 1000 : 0);
5621
+ }
5622
+ function $fae977aafc393c5c$var$parseNumber(value, min, max) {
5623
+ let val = Number(value);
5624
+ if (val < min || val > max) throw new RangeError(`Value out of range: ${min} <= ${val} <= ${max}`);
5625
+ return val;
5626
+ }
5627
+ function $fae977aafc393c5c$export$f59dee82248f5ad4(time) {
5628
+ return `${String(time.hour).padStart(2, '0')}:${String(time.minute).padStart(2, '0')}:${String(time.second).padStart(2, '0')}${time.millisecond ? String(time.millisecond / 1000).slice(1) : ''}`;
5629
+ }
5630
+
5631
+ function _check_private_redeclaration(obj, privateCollection) {
5632
+ if (privateCollection.has(obj)) {
5633
+ throw new TypeError("Cannot initialize the same private elements twice on an object");
5634
+ }
5635
+ }
5636
+
5637
+ function _class_private_field_init(obj, privateMap, value) {
5638
+ _check_private_redeclaration(obj, privateMap);
5639
+ privateMap.set(obj, value);
5640
+ }
5641
+
5642
+ var // This prevents TypeScript from allowing other types with the same fields to match.
5643
+ // @ts-ignore
5644
+ $35ea8db9cb2ccb90$var$_type1 = /*#__PURE__*/ new WeakMap();
5645
+ class $35ea8db9cb2ccb90$export$680ea196effce5f {
5646
+ /** Returns a copy of this time. */ copy() {
5647
+ return new $35ea8db9cb2ccb90$export$680ea196effce5f(this.hour, this.minute, this.second, this.millisecond);
5648
+ }
5649
+ /** Returns a new `Time` with the given duration added to it. */ add(duration) {
5650
+ return ($735220c2d4774dd3$export$7ed87b6bc2506470)(this, duration);
5651
+ }
5652
+ /** Returns a new `Time` with the given duration subtracted from it. */ subtract(duration) {
5653
+ return ($735220c2d4774dd3$export$fe34d3a381cd7501)(this, duration);
5654
+ }
5655
+ /** Returns a new `Time` with the given fields set to the provided values. Other fields will be constrained accordingly. */ set(fields) {
5656
+ return ($735220c2d4774dd3$export$e5d5e1c1822b6e56)(this, fields);
5657
+ }
5658
+ /**
5659
+ * Returns a new `Time` with the given field adjusted by a specified amount.
5660
+ * When the resulting value reaches the limits of the field, it wraps around.
5661
+ */ cycle(field, amount, options) {
5662
+ return ($735220c2d4774dd3$export$dd02b3e0007dfe28)(this, field, amount, options);
5663
+ }
5664
+ /** Converts the time to an ISO 8601 formatted string. */ toString() {
5665
+ return ($fae977aafc393c5c$export$f59dee82248f5ad4)(this);
5666
+ }
5667
+ /** Compares this time with another. A negative result indicates that this time is before the given one, and a positive time indicates that it is after. */ compare(b) {
5668
+ return ($14e0f24ef4ac5c92$export$c19a80a9721b80f6)(this, b);
5669
+ }
5670
+ constructor(hour = 0, minute = 0, second = 0, millisecond = 0){
5671
+ (_class_private_field_init)(this, $35ea8db9cb2ccb90$var$_type1, {
5672
+ writable: true,
5673
+ value: void 0
5674
+ });
5675
+ this.hour = hour;
5676
+ this.minute = minute;
5677
+ this.second = second;
5678
+ this.millisecond = millisecond;
5679
+ ($735220c2d4774dd3$export$7555de1e070510cb)(this);
5680
+ }
5681
+ }
5682
+
5683
+ const useTimePicker = (props = {}) => {
5684
+ const locale = useLocaleContext();
5685
+ const environment = useEnvironmentContext();
5686
+ const id = solidJs.createUniqueId();
5687
+ const context = solidJs.createMemo(() => ({
5688
+ id,
5689
+ dir: locale().dir,
5690
+ getRootNode: environment().getRootNode,
5691
+ open: props.defaultOpen,
5692
+ 'open.controlled': props.open !== undefined,
5693
+ ...props,
5694
+ value: props.defaultValue ? $fae977aafc393c5c$export$c9698ec7f05a07e1(props.defaultValue) : undefined,
5695
+ min: props.min ? $fae977aafc393c5c$export$c9698ec7f05a07e1(props.min) : undefined,
5696
+ max: props.max ? $fae977aafc393c5c$export$c9698ec7f05a07e1(props.max) : undefined
5697
+ }));
5698
+ const [state, send] = solid.useMachine(timePicker__namespace.machine(context()), {
5699
+ context
5700
+ });
5701
+ return solidJs.createMemo(() => timePicker__namespace.connect(state, send, solid.normalizeProps));
5702
+ };
5703
+
5704
+ const TimePickerRoot = props => {
5705
+ const [presenceProps, timePickerProps] = splitPresenceProps(props);
5706
+ const [useTimePickerProps, localProps] = createSplitProps()(timePickerProps, ['allowSeconds', 'defaultOpen', 'defaultValue', 'disableLayer', 'disabled', 'id', 'ids', 'locale', 'max', 'min', 'name', 'onFocusChange', 'onOpenChange', 'onValueChange', 'open', 'placeholder', 'positioning', 'readOnly', 'steps', 'value']);
5707
+ const timePicker = useTimePicker(useTimePickerProps);
5708
+ const apiPresence = usePresence(solid.mergeProps(presenceProps, () => ({
5709
+ present: timePicker().open
5710
+ })));
5711
+ const mergedProps = solid.mergeProps(() => timePicker().getRootProps(), localProps);
5712
+ return web.createComponent(TimePickerProvider, {
5713
+ value: timePicker,
5714
+ get children() {
5715
+ return web.createComponent(PresenceProvider, {
5716
+ value: apiPresence,
5717
+ get children() {
5718
+ return web.createComponent(ark.div, mergedProps);
5719
+ }
5720
+ });
5721
+ }
5722
+ });
5723
+ };
5724
+
5725
+ const TimePickerRootProvider = props => {
5726
+ const [presenceProps, timePickerProps] = splitPresenceProps(props);
5727
+ const [{
5728
+ value: timePicker
5729
+ }, localProps] = createSplitProps()(timePickerProps, ['value']);
5730
+ const apiPresence = usePresence(solid.mergeProps(presenceProps, () => ({
5731
+ present: timePicker().open
5732
+ })));
5733
+ const mergedProps = solid.mergeProps(() => timePicker().getRootProps(), localProps);
5734
+ return web.createComponent(TimePickerProvider, {
5735
+ value: timePicker,
5736
+ get children() {
5737
+ return web.createComponent(PresenceProvider, {
5738
+ value: apiPresence,
5739
+ get children() {
5740
+ return web.createComponent(ark.div, mergedProps);
5741
+ }
5742
+ });
5743
+ }
5744
+ });
5745
+ };
5746
+
5747
+ const TimePickerSpacer = props => {
5748
+ const timePicker = useTimePickerContext();
5749
+ const mergedProps = solid.mergeProps(() => timePicker().getSpacerProps(), props);
5750
+ return web.createComponent(ark.div, mergedProps);
5751
+ };
5752
+
5753
+ const TimePickerTrigger = props => {
5754
+ const timePicker = useTimePickerContext();
5755
+ const mergedProps = solid.mergeProps(() => timePicker().getTriggerProps(), props);
5756
+ return web.createComponent(ark.button, mergedProps);
5757
+ };
5758
+
5759
+ var timePicker = /*#__PURE__*/Object.freeze({
5760
+ __proto__: null,
5761
+ Cell: TimePickerCell,
5762
+ ClearTrigger: TimePickerClearTrigger,
5763
+ Column: TimePickerColumn,
5764
+ Content: TimePickerContent,
5765
+ Context: TimePickerContext,
5766
+ Control: TimePickerControl,
5767
+ Input: TimePickerInput,
5768
+ Label: TimePickerLabel,
5769
+ Positioner: TimePickerPositioner,
5770
+ Root: TimePickerRoot,
5771
+ RootProvider: TimePickerRootProvider,
5772
+ Spacer: TimePickerSpacer,
5773
+ Trigger: TimePickerTrigger
5774
+ });
5775
+
5209
5776
  const createToaster = props => {
5210
5777
  const machine = toast__namespace.group.machine({
5211
5778
  id: '1',
@@ -5441,7 +6008,7 @@ const useTooltip = props => {
5441
6008
 
5442
6009
  const TooltipRoot = props => {
5443
6010
  const [presenceProps, tooltipProps] = splitPresenceProps(props);
5444
- const [useTooltipProps, localProps] = createSplitProps()(tooltipProps, ['aria-label', 'closeDelay', 'closeOnEscape', 'closeOnPointerDown', 'closeOnScroll', 'defaultOpen', 'disabled', 'id', 'ids', 'interactive', 'onOpenChange', 'open', 'openDelay', 'positioning']);
6011
+ const [useTooltipProps, localProps] = createSplitProps()(tooltipProps, ['aria-label', 'closeDelay', 'closeOnClick', 'closeOnEscape', 'closeOnPointerDown', 'closeOnScroll', 'defaultOpen', 'disabled', 'id', 'ids', 'interactive', 'onOpenChange', 'open', 'openDelay', 'positioning']);
5445
6012
  const api = useTooltip(useTooltipProps);
5446
6013
  const apiPresence = usePresence(solid.mergeProps(presenceProps, () => ({
5447
6014
  present: api().open
@@ -5973,6 +6540,13 @@ exports.FieldRoot = FieldRoot;
5973
6540
  exports.FieldRootProvider = FieldRootProvider;
5974
6541
  exports.FieldSelect = FieldSelect;
5975
6542
  exports.FieldTextarea = FieldTextarea;
6543
+ exports.Fieldset = fieldset;
6544
+ exports.FieldsetContext = FieldsetContext;
6545
+ exports.FieldsetErrorText = FieldsetErrorText;
6546
+ exports.FieldsetHelperText = FieldsetHelperText;
6547
+ exports.FieldsetLegend = FieldsetLegend;
6548
+ exports.FieldsetRoot = FieldsetRoot;
6549
+ exports.FieldsetRootProvider = FieldsetRootProvider;
5976
6550
  exports.FileUpload = fileUpload;
5977
6551
  exports.FileUploadContext = FileUploadContext;
5978
6552
  exports.FileUploadDropzone = FileUploadDropzone;
@@ -5991,6 +6565,7 @@ exports.FileUploadTrigger = FileUploadTrigger;
5991
6565
  exports.Format = format;
5992
6566
  exports.FormatByte = FormatByte;
5993
6567
  exports.FormatNumber = FormatNumber;
6568
+ exports.Highlight = Highlight;
5994
6569
  exports.HoverCard = hoverCard;
5995
6570
  exports.HoverCardArrow = HoverCardArrow;
5996
6571
  exports.HoverCardArrowTip = HoverCardArrowTip;
@@ -6196,6 +6771,20 @@ exports.TagsInputItemText = TagsInputItemText;
6196
6771
  exports.TagsInputLabel = TagsInputLabel;
6197
6772
  exports.TagsInputRoot = TagsInputRoot;
6198
6773
  exports.TagsInputRootProvider = TagsInputRootProvider;
6774
+ exports.TimePicker = timePicker;
6775
+ exports.TimePickerCell = TimePickerCell;
6776
+ exports.TimePickerClearTrigger = TimePickerClearTrigger;
6777
+ exports.TimePickerColumn = TimePickerColumn;
6778
+ exports.TimePickerContent = TimePickerContent;
6779
+ exports.TimePickerContext = TimePickerContext;
6780
+ exports.TimePickerControl = TimePickerControl;
6781
+ exports.TimePickerInput = TimePickerInput;
6782
+ exports.TimePickerLabel = TimePickerLabel;
6783
+ exports.TimePickerPositioner = TimePickerPositioner;
6784
+ exports.TimePickerRoot = TimePickerRoot;
6785
+ exports.TimePickerRootProvider = TimePickerRootProvider;
6786
+ exports.TimePickerSpacer = TimePickerSpacer;
6787
+ exports.TimePickerTrigger = TimePickerTrigger;
6199
6788
  exports.Toast = toast;
6200
6789
  exports.ToastActionTrigger = ToastActionTrigger;
6201
6790
  exports.ToastCloseTrigger = ToastCloseTrigger;
@@ -6241,6 +6830,7 @@ exports.colorPickerAnatomy = colorPickerAnatomy;
6241
6830
  exports.createToaster = createToaster;
6242
6831
  exports.datePickerAnatomy = datePickerAnatomy;
6243
6832
  exports.fieldAnatomy = fieldAnatomy;
6833
+ exports.fieldsetAnatomy = fieldsetAnatomy;
6244
6834
  exports.segmentGroupAnatomy = segmentGroupAnatomy;
6245
6835
  exports.splitPresenceProps = splitPresenceProps;
6246
6836
  exports.useAccordion = useAccordion;
@@ -6271,8 +6861,10 @@ exports.useEditable = useEditable;
6271
6861
  exports.useEditableContext = useEditableContext;
6272
6862
  exports.useEnvironmentContext = useEnvironmentContext;
6273
6863
  exports.useFieldContext = useFieldContext;
6864
+ exports.useFieldsetContext = useFieldsetContext;
6274
6865
  exports.useFileUpload = useFileUpload;
6275
6866
  exports.useFileUploadContext = useFileUploadContext;
6867
+ exports.useHighlight = useHighlight;
6276
6868
  exports.useHoverCard = useHoverCard;
6277
6869
  exports.useHoverCardContext = useHoverCardContext;
6278
6870
  exports.useLocaleContext = useLocaleContext;
@@ -6318,6 +6910,8 @@ exports.useTabsContext = useTabsContext;
6318
6910
  exports.useTagsInput = useTagsInput;
6319
6911
  exports.useTagsInputContext = useTagsInputContext;
6320
6912
  exports.useTagsInputItemContext = useTagsInputItemContext;
6913
+ exports.useTimePicker = useTimePicker;
6914
+ exports.useTimePickerContext = useTimePickerContext;
6321
6915
  exports.useToastContext = useToastContext;
6322
6916
  exports.useToggleGroup = useToggleGroup;
6323
6917
  exports.useToggleGroupContext = useToggleGroupContext;