@ark-ui/solid 2.0.1 → 2.1.1

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 (94) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/cjs/index.js +288 -67
  3. package/cjs/index.js.map +1 -1
  4. package/esm/index.js +277 -69
  5. package/esm/index.js.map +1 -1
  6. package/package.json +52 -47
  7. package/source/clipboard/clipboard-context.js +5 -0
  8. package/source/clipboard/clipboard-control.jsx +8 -0
  9. package/source/clipboard/clipboard-indicator.jsx +16 -0
  10. package/source/clipboard/clipboard-input.jsx +8 -0
  11. package/source/clipboard/clipboard-label.jsx +8 -0
  12. package/source/clipboard/clipboard-root.jsx +22 -0
  13. package/source/clipboard/clipboard-trigger.jsx +8 -0
  14. package/source/clipboard/clipboard.jsx +7 -0
  15. package/source/clipboard/index.js +9 -0
  16. package/source/clipboard/use-clipboard.jsx +10 -0
  17. package/source/color-picker/use-color-picker.js +1 -0
  18. package/source/date-picker/date-picker-input.jsx +3 -1
  19. package/source/date-picker/date-picker-preset-trigger.jsx +10 -0
  20. package/source/date-picker/date-picker.jsx +2 -1
  21. package/source/date-picker/index.js +2 -1
  22. package/source/date-picker/use-date-picker.js +1 -0
  23. package/source/dialog/dialog-description.jsx +1 -1
  24. package/source/dialog/use-dialog.js +1 -1
  25. package/source/hover-card/use-hover-card.js +1 -1
  26. package/source/index.jsx +2 -0
  27. package/source/locale/index.js +2 -0
  28. package/source/locale/locale-context.jsx +7 -0
  29. package/source/locale/locale.jsx +24 -0
  30. package/source/menu/use-menu.js +1 -1
  31. package/source/popover/popover-description.jsx +1 -1
  32. package/source/popover/use-popover.js +1 -1
  33. package/source/select/select-control.jsx +5 -1
  34. package/source/select/use-select.js +6 -1
  35. package/source/tooltip/use-tooltip.js +1 -1
  36. package/source/tree-view/index.js +2 -1
  37. package/source/tree-view/tree-view-branch-content.jsx +3 -8
  38. package/source/tree-view/tree-view-branch-context.js +5 -0
  39. package/source/tree-view/tree-view-branch-control.jsx +3 -8
  40. package/source/tree-view/tree-view-branch-indicator.jsx +5 -8
  41. package/source/tree-view/tree-view-branch-text.jsx +3 -8
  42. package/source/tree-view/tree-view-branch-trigger.jsx +4 -9
  43. package/source/tree-view/tree-view-branch.jsx +10 -7
  44. package/source/tree-view/tree-view-depth-context.js +5 -0
  45. package/source/tree-view/tree-view-item-context.js +5 -0
  46. package/source/tree-view/tree-view-item-indicator.jsx +10 -0
  47. package/source/tree-view/tree-view-item-text.jsx +3 -5
  48. package/source/tree-view/tree-view-item.jsx +8 -3
  49. package/source/tree-view/tree-view-tree.jsx +4 -1
  50. package/source/tree-view/tree-view.jsx +2 -1
  51. package/types/clipboard/clipboard-context.d.ts +4 -0
  52. package/types/clipboard/clipboard-control.d.ts +4 -0
  53. package/types/clipboard/clipboard-indicator.d.ts +10 -0
  54. package/types/clipboard/clipboard-input.d.ts +4 -0
  55. package/types/clipboard/clipboard-label.d.ts +4 -0
  56. package/types/clipboard/clipboard-root.d.ts +11 -0
  57. package/types/clipboard/clipboard-trigger.d.ts +4 -0
  58. package/types/clipboard/clipboard.d.ts +7 -0
  59. package/types/clipboard/index.d.ts +11 -0
  60. package/types/clipboard/use-clipboard.d.ts +9 -0
  61. package/types/color-picker/use-color-picker.d.ts +1 -1
  62. package/types/date-picker/date-picker-input.d.ts +4 -2
  63. package/types/date-picker/date-picker-preset-trigger.d.ts +6 -0
  64. package/types/date-picker/date-picker.d.ts +2 -1
  65. package/types/date-picker/index.d.ts +3 -2
  66. package/types/date-picker/use-date-picker.d.ts +1 -1
  67. package/types/dialog/dialog-description.d.ts +2 -2
  68. package/types/dialog/use-dialog.d.ts +1 -1
  69. package/types/hover-card/use-hover-card.d.ts +1 -1
  70. package/types/index.d.ts +2 -0
  71. package/types/locale/index.d.ts +2 -0
  72. package/types/locale/locale-context.d.ts +5 -0
  73. package/types/locale/locale.d.ts +9 -0
  74. package/types/menu/index.d.ts +2 -2
  75. package/types/menu/use-menu.d.ts +1 -1
  76. package/types/popover/popover-description.d.ts +2 -2
  77. package/types/popover/use-popover.d.ts +1 -1
  78. package/types/select/use-select.d.ts +1 -1
  79. package/types/tooltip/use-tooltip.d.ts +1 -1
  80. package/types/tree-view/index.d.ts +3 -2
  81. package/types/tree-view/tree-view-branch-content.d.ts +2 -4
  82. package/types/tree-view/tree-view-branch-context.d.ts +6 -0
  83. package/types/tree-view/tree-view-branch-control.d.ts +2 -4
  84. package/types/tree-view/tree-view-branch-indicator.d.ts +2 -4
  85. package/types/tree-view/tree-view-branch-text.d.ts +2 -4
  86. package/types/tree-view/tree-view-branch-trigger.d.ts +2 -4
  87. package/types/tree-view/tree-view-branch.d.ts +4 -3
  88. package/types/tree-view/tree-view-context.d.ts +0 -16
  89. package/types/tree-view/tree-view-depth-context.d.ts +2 -0
  90. package/types/tree-view/tree-view-item-context.d.ts +6 -0
  91. package/types/tree-view/tree-view-item-indicator.d.ts +4 -0
  92. package/types/tree-view/tree-view-item-text.d.ts +2 -4
  93. package/types/tree-view/tree-view-item.d.ts +2 -1
  94. package/types/tree-view/tree-view.d.ts +2 -1
package/cjs/index.js CHANGED
@@ -9,6 +9,7 @@ var avatar$1 = require('@zag-js/avatar');
9
9
  var anatomy = require('@ark-ui/anatomy');
10
10
  var carousel$1 = require('@zag-js/carousel');
11
11
  var checkbox$1 = require('@zag-js/checkbox');
12
+ var clipboard$1 = require('@zag-js/clipboard');
12
13
  var colorPicker$1 = require('@zag-js/color-picker');
13
14
  var combobox$1 = require('@zag-js/combobox');
14
15
  var datePicker$1 = require('@zag-js/date-picker');
@@ -16,6 +17,7 @@ var dialog$1 = require('@zag-js/dialog');
16
17
  var editable$1 = require('@zag-js/editable');
17
18
  var fileUpload$1 = require('@zag-js/file-upload');
18
19
  var hoverCard$1 = require('@zag-js/hover-card');
20
+ var i18nUtils = require('@zag-js/i18n-utils');
19
21
  var menu$1 = require('@zag-js/menu');
20
22
  var numberInput$1 = require('@zag-js/number-input');
21
23
  var pagination$1 = require('@zag-js/pagination');
@@ -57,6 +59,7 @@ var accordion__namespace = /*#__PURE__*/_interopNamespaceDefault(accordion$1);
57
59
  var avatar__namespace = /*#__PURE__*/_interopNamespaceDefault(avatar$1);
58
60
  var carousel__namespace = /*#__PURE__*/_interopNamespaceDefault(carousel$1);
59
61
  var checkbox__namespace = /*#__PURE__*/_interopNamespaceDefault(checkbox$1);
62
+ var clipboard__namespace = /*#__PURE__*/_interopNamespaceDefault(clipboard$1);
60
63
  var colorPicker__namespace = /*#__PURE__*/_interopNamespaceDefault(colorPicker$1);
61
64
  var combobox__namespace = /*#__PURE__*/_interopNamespaceDefault(combobox$1);
62
65
  var datePicker__namespace = /*#__PURE__*/_interopNamespaceDefault(datePicker$1);
@@ -267,7 +270,7 @@ const [EnvironmentProvider, useEnvironmentContext] = createContext({
267
270
  strict: false
268
271
  });
269
272
 
270
- const _tmpl$$c = /*#__PURE__*/web.template(`<span hidden>`);
273
+ var _tmpl$$c = /*#__PURE__*/web.template(`<span hidden>`);
271
274
  const Environment = props => {
272
275
  // eslint-disable-next-line prefer-const
273
276
  let spanRef = undefined;
@@ -278,8 +281,8 @@ const Environment = props => {
278
281
  },
279
282
  get children() {
280
283
  return [web.memo(() => props.children), web.memo(() => web.memo(() => !!!props.value)() && (() => {
281
- const _el$ = _tmpl$$c();
282
- const _ref$ = spanRef;
284
+ var _el$ = _tmpl$$c();
285
+ var _ref$ = spanRef;
283
286
  typeof _ref$ === "function" ? web.use(_ref$, _el$) : spanRef = _el$;
284
287
  return _el$;
285
288
  })())];
@@ -475,12 +478,12 @@ const [CheckboxProvider, useCheckboxContext] = createContext({
475
478
  providerName: '<CheckboxProvider />'
476
479
  });
477
480
 
478
- const _tmpl$$b = /*#__PURE__*/web.template(`<input>`);
481
+ var _tmpl$$b = /*#__PURE__*/web.template(`<input>`);
479
482
  const CheckboxControl = props => {
480
483
  const api = useCheckboxContext();
481
484
  const mergedProps = solid.mergeProps(() => api().controlProps, props);
482
485
  return [web.createComponent(ark.div, mergedProps), (() => {
483
- const _el$ = _tmpl$$b();
486
+ var _el$ = _tmpl$$b();
484
487
  web.spread(_el$, web.mergeProps(() => api().hiddenInputProps), false, false);
485
488
  return _el$;
486
489
  })()];
@@ -535,6 +538,98 @@ var checkbox = /*#__PURE__*/Object.freeze({
535
538
  Root: CheckboxRoot
536
539
  });
537
540
 
541
+ const [ClipboardProvider, useClipboardContext] = createContext({
542
+ hookName: 'useClipboardContext',
543
+ providerName: '<ClipboardProvider />'
544
+ });
545
+
546
+ const ClipboardControl = props => {
547
+ const api = useClipboardContext();
548
+ const mergedProps = solid.mergeProps(() => api().controlProps, props);
549
+ return web.createComponent(ark.div, mergedProps);
550
+ };
551
+
552
+ const ClipboardIndicator = props => {
553
+ const [indicatorProps, localProps] = createSplitProps()(props, ['copied']);
554
+ const api = useClipboardContext();
555
+ const mergedProps = solid.mergeProps(api().getIndicatorProps({
556
+ copied: api().isCopied
557
+ }), localProps);
558
+ const getChildren = solidJs.children(() => localProps.children);
559
+ return web.createComponent(ark.div, web.mergeProps(mergedProps, {
560
+ get children() {
561
+ return web.createComponent(solidJs.Show, {
562
+ get when() {
563
+ return api().isCopied;
564
+ },
565
+ get fallback() {
566
+ return getChildren();
567
+ },
568
+ get children() {
569
+ return indicatorProps.copied;
570
+ }
571
+ });
572
+ }
573
+ }));
574
+ };
575
+
576
+ const ClipboardInput = props => {
577
+ const api = useClipboardContext();
578
+ const mergedProps = solid.mergeProps(() => api().inputProps, props);
579
+ return web.createComponent(ark.input, mergedProps);
580
+ };
581
+
582
+ const ClipboardLabel = props => {
583
+ const api = useClipboardContext();
584
+ const mergedProps = solid.mergeProps(() => api().labelProps, props);
585
+ return web.createComponent(ark.label, mergedProps);
586
+ };
587
+
588
+ const useClipboard = props => {
589
+ const getRootNode = useEnvironmentContext();
590
+ const context = solid.mergeProps({
591
+ id: solidJs.createUniqueId(),
592
+ getRootNode
593
+ }, props);
594
+ const [state, send] = solid.useMachine(clipboard__namespace.machine(context), {
595
+ context
596
+ });
597
+ return solidJs.createMemo(() => clipboard__namespace.connect(state, send, solid.normalizeProps));
598
+ };
599
+
600
+ const ClipboardRoot = props => {
601
+ const [useClipboardProps, localProps] = createSplitProps()(props, ['getRootNode', 'id', 'ids', 'value', 'timeout', 'onCopyStatusChange']);
602
+ const api = useClipboard(useClipboardProps);
603
+ const mergedProps = solid.mergeProps(() => api().rootProps, localProps);
604
+ const getChildren = () => runIfFn(localProps.children, api);
605
+ return web.createComponent(ClipboardProvider, {
606
+ value: api,
607
+ get children() {
608
+ return web.createComponent(ark.div, web.mergeProps(mergedProps, {
609
+ get children() {
610
+ return getChildren();
611
+ }
612
+ }));
613
+ }
614
+ });
615
+ };
616
+
617
+ const ClipboardTrigger = props => {
618
+ const api = useClipboardContext();
619
+ const mergedProps = solid.mergeProps(() => api().triggerProps, props);
620
+ return web.createComponent(ark.button, mergedProps);
621
+ };
622
+
623
+ var clipboard = /*#__PURE__*/Object.freeze({
624
+ __proto__: null,
625
+ Control: ClipboardControl,
626
+ Indicator: ClipboardIndicator,
627
+ Input: ClipboardInput,
628
+ Label: ClipboardLabel,
629
+ Root: ClipboardRoot,
630
+ Trigger: ClipboardTrigger
631
+ });
632
+
538
633
  const [ColorPickerAreaProvider, useColorPickerAreaContext] = createContext({
539
634
  hookName: 'useColorPickerAreaContext',
540
635
  providerName: '<ColorPickerAreaProvider />'
@@ -687,7 +782,8 @@ const useColorPicker = props => {
687
782
  const context = solid.mergeProps(() => ({
688
783
  id: solidJs.createUniqueId(),
689
784
  getRootNode,
690
- value: local.value ? colorPicker__namespace.parse(local.value) : undefined
785
+ value: local.value ? colorPicker__namespace.parse(local.value) : undefined,
786
+ 'open.controlled': props.open !== undefined
691
787
  }), rest);
692
788
  const [state, send] = solid.useMachine(colorPicker__namespace.machine(context), {
693
789
  context
@@ -695,7 +791,7 @@ const useColorPicker = props => {
695
791
  return solidJs.createMemo(() => colorPicker__namespace.connect(state, send, solid.normalizeProps));
696
792
  };
697
793
 
698
- const _tmpl$$a = /*#__PURE__*/web.template(`<input>`);
794
+ var _tmpl$$a = /*#__PURE__*/web.template(`<input>`);
699
795
  const ColorPickerRoot = props => {
700
796
  const [presenceProps, colorPickerProps] = splitPresenceProps(props);
701
797
  const [useColorPickerProps, localProps] = createSplitProps()(colorPickerProps, ['closeOnSelect', 'dir', 'disabled', 'format', 'getRootNode', 'id', 'ids', 'initialFocusEl', 'name', 'name', 'onFocusOutside', 'onFormatChange', 'onInteractOutside', 'onOpenChange', 'onPointerDownOutside', 'onValueChange', 'onValueChangeEnd', 'open', 'positioning', 'readOnly', 'value']);
@@ -718,7 +814,7 @@ const ColorPickerRoot = props => {
718
814
  }));
719
815
  }
720
816
  }), (() => {
721
- const _el$ = _tmpl$$a();
817
+ var _el$ = _tmpl$$a();
722
818
  web.spread(_el$, web.mergeProps(() => api().hiddenInputProps), false, false);
723
819
  return _el$;
724
820
  })()];
@@ -1038,8 +1134,9 @@ const DatePickerControl = props => {
1038
1134
  };
1039
1135
 
1040
1136
  const DatePickerInput = props => {
1137
+ const [inputProps, localProps] = createSplitProps()(props, ['index']);
1041
1138
  const api = useDatePickerContext();
1042
- const mergedProps = solid.mergeProps(() => api().inputProps, props);
1139
+ const mergedProps = solid.mergeProps(() => api().getInputProps(inputProps), localProps);
1043
1140
  return web.createComponent(ark.input, mergedProps);
1044
1141
  };
1045
1142
 
@@ -1049,14 +1146,14 @@ const DatePickerLabel = props => {
1049
1146
  return web.createComponent(ark.label, mergedProps);
1050
1147
  };
1051
1148
 
1052
- const _tmpl$$9 = /*#__PURE__*/web.template(`<option>`);
1149
+ var _tmpl$$9 = /*#__PURE__*/web.template(`<option>`);
1053
1150
  const DatePickerMonthSelect = props => {
1054
1151
  const api = useDatePickerContext();
1055
1152
  const mergedProps = solid.mergeProps(() => api().monthSelectProps, props);
1056
1153
  return web.createComponent(ark.select, web.mergeProps(mergedProps, {
1057
1154
  get children() {
1058
1155
  return api().getMonths().map(month => (() => {
1059
- const _el$ = _tmpl$$9();
1156
+ var _el$ = _tmpl$$9();
1060
1157
  web.insert(_el$, () => month.label);
1061
1158
  web.effect(() => _el$.value = month.value);
1062
1159
  return _el$;
@@ -1091,6 +1188,13 @@ const DatePickerPositioner = props => {
1091
1188
  });
1092
1189
  };
1093
1190
 
1191
+ const DatePickerPresetTrigger = props => {
1192
+ const [presetTriggerProps, localProps] = createSplitProps()(props, ['value']);
1193
+ const api = useDatePickerContext();
1194
+ const mergedProps = solid.mergeProps(() => api().getPresetTriggerProps(presetTriggerProps), localProps);
1195
+ return web.createComponent(ark.button, mergedProps);
1196
+ };
1197
+
1094
1198
  const DatePickerPrevTrigger = props => {
1095
1199
  const api = useDatePickerContext();
1096
1200
  const viewProps = useDatePickerViewContext();
@@ -1115,7 +1219,8 @@ const useDatePicker = props => {
1115
1219
  id: solidJs.createUniqueId(),
1116
1220
  getRootNode,
1117
1221
  focusedValue: local.focusedValue ? datePicker__namespace.parse(local.focusedValue) : undefined,
1118
- value: local.value ? datePicker__namespace.parse(local.value) : undefined
1222
+ value: local.value ? datePicker__namespace.parse(local.value) : undefined,
1223
+ 'open.controlled': props.open !== undefined
1119
1224
  }), rest);
1120
1225
  const [state, send] = solid.useMachine(datePicker__namespace.machine(context), {
1121
1226
  context
@@ -1280,7 +1385,7 @@ const DatePickerViewTrigger = props => {
1280
1385
  return web.createComponent(ark.button, mergedProps);
1281
1386
  };
1282
1387
 
1283
- const _tmpl$$8 = /*#__PURE__*/web.template(`<option>`);
1388
+ var _tmpl$$8 = /*#__PURE__*/web.template(`<option>`);
1284
1389
  const DatePickerYearSelect = props => {
1285
1390
  const api = useDatePickerContext();
1286
1391
  const mergedProps = solid.mergeProps(() => api().yearSelectProps, props);
@@ -1290,7 +1395,7 @@ const DatePickerYearSelect = props => {
1290
1395
  from: 1_000,
1291
1396
  to: 4_000
1292
1397
  }).map(year => (() => {
1293
- const _el$ = _tmpl$$8();
1398
+ var _el$ = _tmpl$$8();
1294
1399
  _el$.value = year;
1295
1400
  web.insert(_el$, year);
1296
1401
  return _el$;
@@ -1316,6 +1421,7 @@ var datePicker = /*#__PURE__*/Object.freeze({
1316
1421
  MonthSelect: DatePickerMonthSelect,
1317
1422
  NextTrigger: DatePickerNextTrigger,
1318
1423
  Positioner: DatePickerPositioner,
1424
+ PresetTrigger: DatePickerPresetTrigger,
1319
1425
  PrevTrigger: DatePickerPrevTrigger,
1320
1426
  RangeText: DatePickerRangeText,
1321
1427
  Root: DatePickerRoot,
@@ -1378,7 +1484,7 @@ const DialogContent = props => {
1378
1484
  const DialogDescription = props => {
1379
1485
  const dialog = useDialogContext();
1380
1486
  const mergedProps = solid.mergeProps(() => dialog().descriptionProps, props);
1381
- return web.createComponent(ark.p, mergedProps);
1487
+ return web.createComponent(ark.div, mergedProps);
1382
1488
  };
1383
1489
 
1384
1490
  const DialogPositioner = props => {
@@ -1399,7 +1505,8 @@ const useDialog = props => {
1399
1505
  const getRootNode = useEnvironmentContext();
1400
1506
  const context = solid.mergeProps({
1401
1507
  id: solidJs.createUniqueId(),
1402
- getRootNode
1508
+ getRootNode,
1509
+ 'open.controlled': props.open !== undefined
1403
1510
  }, props);
1404
1511
  const [state, send] = solid.useMachine(dialog__namespace.machine(context), {
1405
1512
  context
@@ -1560,12 +1667,12 @@ const [FileUploadProvider, useFileUploadContext] = createContext({
1560
1667
  providerName: '<FileUploadProvider />'
1561
1668
  });
1562
1669
 
1563
- const _tmpl$$7 = /*#__PURE__*/web.template(`<input>`);
1670
+ var _tmpl$$7 = /*#__PURE__*/web.template(`<input>`);
1564
1671
  const FileUploadDropzone = props => {
1565
1672
  const api = useFileUploadContext();
1566
1673
  const mergedProps = solid.mergeProps(() => api().dropzoneProps, props);
1567
1674
  return [web.createComponent(ark.div, mergedProps), (() => {
1568
- const _el$ = _tmpl$$7();
1675
+ var _el$ = _tmpl$$7();
1569
1676
  web.spread(_el$, web.mergeProps(() => api().hiddenInputProps), false, false);
1570
1677
  return _el$;
1571
1678
  })()];
@@ -1760,7 +1867,8 @@ const useHoverCard = props => {
1760
1867
  const getRootNode = useEnvironmentContext();
1761
1868
  const context = solid.mergeProps({
1762
1869
  id: solidJs.createUniqueId(),
1763
- getRootNode
1870
+ getRootNode,
1871
+ 'open.controlled': props.open !== undefined
1764
1872
  }, props);
1765
1873
  const [state, send] = solid.useMachine(hoverCard__namespace.machine(context), {
1766
1874
  context
@@ -1805,6 +1913,42 @@ var hoverCard = /*#__PURE__*/Object.freeze({
1805
1913
  Trigger: HoverCardTrigger
1806
1914
  });
1807
1915
 
1916
+ const [LocaleContextProvider, useLocaleContext] = createContext({
1917
+ hookName: 'useEnvironmentContext',
1918
+ providerName: '<EnvironmentProvider />',
1919
+ strict: false,
1920
+ defaultValue: () => ({
1921
+ dir: 'ltr',
1922
+ locale: 'en-US'
1923
+ })
1924
+ });
1925
+
1926
+ const LocaleProvider = props => {
1927
+ const [localeProps, restProps] = solidJs.splitProps(props, ['locale', 'defaultLocale']);
1928
+ const [locale, setLocale] = solidJs.createSignal(localeProps.defaultLocale || localeProps.locale || 'en-US');
1929
+ const getRootNode = useEnvironmentContext();
1930
+ solidJs.createEffect(() => {
1931
+ const cleanup = i18nUtils.trackLocale({
1932
+ locale: localeProps.locale,
1933
+ getRootNode,
1934
+ onLocaleChange(locale) {
1935
+ setLocale(locale.locale);
1936
+ }
1937
+ });
1938
+ solidJs.onCleanup(cleanup);
1939
+ });
1940
+ const context = solidJs.createMemo(() => ({
1941
+ locale: locale(),
1942
+ dir: i18nUtils.isRTL(locale()) ? 'rtl' : 'ltr'
1943
+ }));
1944
+ return web.createComponent(LocaleContextProvider, {
1945
+ value: context,
1946
+ get children() {
1947
+ return restProps.children;
1948
+ }
1949
+ });
1950
+ };
1951
+
1808
1952
  const [MenuProvider, useMenuContext] = createContext({
1809
1953
  hookName: 'useMenuContext',
1810
1954
  providerName: '<MenuProvider />',
@@ -1907,7 +2051,8 @@ const useMenu = props => {
1907
2051
  const getRootNode = useEnvironmentContext();
1908
2052
  const context = solid.mergeProps({
1909
2053
  id: solidJs.createUniqueId(),
1910
- getRootNode
2054
+ getRootNode,
2055
+ 'open.controlled': props.open !== undefined
1911
2056
  }, props);
1912
2057
  const [state, send, machine] = solid.useMachine(menu__namespace.machine(context), {
1913
2058
  context
@@ -2184,7 +2329,7 @@ const usePinInput = props => {
2184
2329
  return solidJs.createMemo(() => pinInput__namespace.connect(state, send, solid.normalizeProps));
2185
2330
  };
2186
2331
 
2187
- const _tmpl$$6 = /*#__PURE__*/web.template(`<input>`);
2332
+ var _tmpl$$6 = /*#__PURE__*/web.template(`<input>`);
2188
2333
  const PinInputRoot = props => {
2189
2334
  const [usePinInputProps, localProps] = createSplitProps()(props, ['autoFocus', 'blurOnComplete', 'dir', 'disabled', 'form', 'getRootNode', 'id', 'ids', 'invalid', 'mask', 'name', 'onValueChange', 'onValueComplete', 'onValueInvalid', 'otp', 'pattern', 'placeholder', 'selectOnFocus', 'translations', 'type', 'value']);
2190
2335
  const api = usePinInput(usePinInputProps);
@@ -2193,7 +2338,7 @@ const PinInputRoot = props => {
2193
2338
  value: api,
2194
2339
  get children() {
2195
2340
  return [web.createComponent(ark.div, mergedProps), (() => {
2196
- const _el$ = _tmpl$$6();
2341
+ var _el$ = _tmpl$$6();
2197
2342
  web.spread(_el$, web.mergeProps(() => api().hiddenInputProps), false, false);
2198
2343
  return _el$;
2199
2344
  })()];
@@ -2255,7 +2400,7 @@ const PopoverContent = props => {
2255
2400
  const PopoverDescription = props => {
2256
2401
  const api = usePopoverContext();
2257
2402
  const mergedProps = solid.mergeProps(() => api().descriptionProps, props);
2258
- return web.createComponent(ark.p, mergedProps);
2403
+ return web.createComponent(ark.div, mergedProps);
2259
2404
  };
2260
2405
 
2261
2406
  const PopoverIndicator = props => {
@@ -2282,7 +2427,8 @@ const usePopover = props => {
2282
2427
  const getRootNode = useEnvironmentContext();
2283
2428
  const context = solid.mergeProps({
2284
2429
  id: solidJs.createUniqueId(),
2285
- getRootNode
2430
+ getRootNode,
2431
+ 'open.controlled': props.open !== undefined
2286
2432
  }, props);
2287
2433
  const [state, send] = solid.useMachine(popover__namespace.machine(context), {
2288
2434
  context
@@ -2476,13 +2622,13 @@ const RadioGroupItem = props => {
2476
2622
  });
2477
2623
  };
2478
2624
 
2479
- const _tmpl$$5 = /*#__PURE__*/web.template(`<input>`);
2625
+ var _tmpl$$5 = /*#__PURE__*/web.template(`<input>`);
2480
2626
  const RadioGroupItemControl = props => {
2481
2627
  const api = useRadioGroupContext();
2482
2628
  const itemProps = useRadioGroupItemContext();
2483
2629
  const mergedProps = solid.mergeProps(() => api().getItemControlProps(itemProps), props);
2484
2630
  return [web.createComponent(ark.div, mergedProps), (() => {
2485
- const _el$ = _tmpl$$5();
2631
+ var _el$ = _tmpl$$5();
2486
2632
  web.spread(_el$, web.mergeProps(() => api().getItemHiddenInputProps(itemProps)), false, false);
2487
2633
  return _el$;
2488
2634
  })()];
@@ -2540,7 +2686,7 @@ const [RatingGroupProvider, useRatingGroupContext] = createContext({
2540
2686
  providerName: '<RatingGroupProvider />'
2541
2687
  });
2542
2688
 
2543
- const _tmpl$$4 = /*#__PURE__*/web.template(`<input>`);
2689
+ var _tmpl$$4 = /*#__PURE__*/web.template(`<input>`);
2544
2690
  const RatingGroupControl = props => {
2545
2691
  const api = useRatingGroupContext();
2546
2692
  const mergedProps = solid.mergeProps(() => api().controlProps, props);
@@ -2550,7 +2696,7 @@ const RatingGroupControl = props => {
2550
2696
  return getChildren();
2551
2697
  }
2552
2698
  })), (() => {
2553
- const _el$ = _tmpl$$4();
2699
+ var _el$ = _tmpl$$4();
2554
2700
  web.spread(_el$, web.mergeProps(() => api().hiddenInputProps), false, false);
2555
2701
  return _el$;
2556
2702
  })()];
@@ -2651,13 +2797,13 @@ const SegmentGroupItem = props => {
2651
2797
  });
2652
2798
  };
2653
2799
 
2654
- const _tmpl$$3 = /*#__PURE__*/web.template(`<input>`);
2800
+ var _tmpl$$3 = /*#__PURE__*/web.template(`<input>`);
2655
2801
  const SegmentGroupItemControl = props => {
2656
2802
  const api = useSegmentGroupContext();
2657
2803
  const itemProps = useSegmentGroupItemContext();
2658
2804
  const mergedProps = solid.mergeProps(() => api().getItemControlProps(itemProps), anatomy.segmentGroupAnatomy.build().itemControl.attrs, props);
2659
2805
  return [web.createComponent(ark.div, mergedProps), (() => {
2660
- const _el$ = _tmpl$$3();
2806
+ var _el$ = _tmpl$$3();
2661
2807
  web.spread(_el$, web.mergeProps(() => api().getItemHiddenInputProps(itemProps)), false, false);
2662
2808
  return _el$;
2663
2809
  })()];
@@ -2736,25 +2882,35 @@ const SelectContent = props => {
2736
2882
  });
2737
2883
  };
2738
2884
 
2739
- const _tmpl$$2 = /*#__PURE__*/web.template(`<select>`),
2740
- _tmpl$2 = /*#__PURE__*/web.template(`<option>`);
2885
+ var _tmpl$$2 = /*#__PURE__*/web.template(`<option value="">`),
2886
+ _tmpl$2 = /*#__PURE__*/web.template(`<select>`),
2887
+ _tmpl$3 = /*#__PURE__*/web.template(`<option>`);
2741
2888
  const SelectControl = props => {
2742
2889
  const api = useSelectContext();
2743
2890
  const mergedProps = solid.mergeProps(() => api().controlProps, props);
2891
+ const isValueEmpty = solidJs.createMemo(() => api().value.length === 0);
2744
2892
  return [web.createComponent(ark.div, mergedProps), (() => {
2745
- const _el$ = _tmpl$$2();
2893
+ var _el$ = _tmpl$2();
2746
2894
  web.spread(_el$, web.mergeProps(() => api().hiddenSelectProps), false, true);
2895
+ web.insert(_el$, web.createComponent(solidJs.Show, {
2896
+ get when() {
2897
+ return isValueEmpty();
2898
+ },
2899
+ get children() {
2900
+ return _tmpl$$2();
2901
+ }
2902
+ }), null);
2747
2903
  web.insert(_el$, web.createComponent(solidJs.Index, {
2748
2904
  get each() {
2749
2905
  return api().collection.toArray();
2750
2906
  },
2751
2907
  children: option => (() => {
2752
- const _el$2 = _tmpl$2();
2753
- web.insert(_el$2, () => option().label);
2754
- web.effect(() => _el$2.value = option().value);
2755
- return _el$2;
2908
+ var _el$3 = _tmpl$3();
2909
+ web.insert(_el$3, () => option().label);
2910
+ web.effect(() => _el$3.value = option().value);
2911
+ return _el$3;
2756
2912
  })()
2757
- }));
2913
+ }), null);
2758
2914
  return _el$;
2759
2915
  })()];
2760
2916
  };
@@ -2844,7 +3000,8 @@ const useSelect = props => {
2844
3000
  const context = () => solid.mergeProps({
2845
3001
  id: solidJs.createUniqueId(),
2846
3002
  getRootNode,
2847
- collection: collection()
3003
+ collection: collection(),
3004
+ 'open.controlled': props.open !== undefined
2848
3005
  }, rest);
2849
3006
  const [state, send] = solid.useMachine(select__namespace.machine(context()), {
2850
3007
  context
@@ -3074,12 +3231,12 @@ const [SwitchProvider, useSwitchContext] = createContext({
3074
3231
  providerName: '<SwitchProvider />'
3075
3232
  });
3076
3233
 
3077
- const _tmpl$$1 = /*#__PURE__*/web.template(`<input>`);
3234
+ var _tmpl$$1 = /*#__PURE__*/web.template(`<input>`);
3078
3235
  const SwitchControl = props => {
3079
3236
  const api = useSwitchContext();
3080
3237
  const mergedProps = solid.mergeProps(() => api().controlProps, props);
3081
3238
  return [web.createComponent(ark.span, mergedProps), (() => {
3082
- const _el$ = _tmpl$$1();
3239
+ var _el$ = _tmpl$$1();
3083
3240
  web.spread(_el$, web.mergeProps(() => api().hiddenInputProps), false, false);
3084
3241
  return _el$;
3085
3242
  })()];
@@ -3311,7 +3468,7 @@ const useTagsInput = props => {
3311
3468
  return solidJs.createMemo(() => tagsInput__namespace.connect(state, send, solid.normalizeProps));
3312
3469
  };
3313
3470
 
3314
- const _tmpl$ = /*#__PURE__*/web.template(`<input>`);
3471
+ var _tmpl$ = /*#__PURE__*/web.template(`<input>`);
3315
3472
  const TagsInputRoot = props => {
3316
3473
  const [tagsInputParams, restProps] = createSplitProps()(props, ['addOnPaste', 'allowEditTag', 'allowOverflow', 'autoFocus', 'blurBehavior', 'delimiter', 'dir', 'disabled', 'form', 'getRootNode', 'id', 'ids', 'inputValue', 'invalid', 'max', 'maxLength', 'name', 'onFocusOutside', 'onHighlightChange', 'onInteractOutside', 'onPointerDownOutside', 'onValueChange', 'onValueInvalid', 'readOnly', 'translations', 'validate', 'value']);
3317
3474
  const api = useTagsInput(tagsInputParams);
@@ -3325,7 +3482,7 @@ const TagsInputRoot = props => {
3325
3482
  return getChildren();
3326
3483
  }
3327
3484
  })), (() => {
3328
- const _el$ = _tmpl$();
3485
+ var _el$ = _tmpl$();
3329
3486
  web.spread(_el$, web.mergeProps(() => api().hiddenInputProps), false, false);
3330
3487
  return _el$;
3331
3488
  })()];
@@ -3526,7 +3683,8 @@ const useTooltip = props => {
3526
3683
  const getRootNode = useEnvironmentContext();
3527
3684
  const context = solid.mergeProps({
3528
3685
  id: solidJs.createUniqueId(),
3529
- getRootNode
3686
+ getRootNode,
3687
+ 'open.controlled': props.open !== undefined
3530
3688
  }, props);
3531
3689
  const [state, send] = solid.useMachine(tooltip__namespace.machine(context), {
3532
3690
  context
@@ -3571,76 +3729,121 @@ var tooltip = /*#__PURE__*/Object.freeze({
3571
3729
  Trigger: TooltipTrigger
3572
3730
  });
3573
3731
 
3574
- // TODO: remove after zag release
3732
+ const [TreeViewBranchProvider, useTreeViewBranchContext] = createContext({
3733
+ hookName: 'useTreeViewBranchContext',
3734
+ providerName: '<TreeViewBranchProvider />'
3735
+ });
3575
3736
 
3576
3737
  const [TreeViewProvider, useTreeViewContext] = createContext({
3577
3738
  hookName: 'useTreeViewContext',
3578
3739
  providerName: '<TreeViewProvider />'
3579
3740
  });
3580
3741
 
3742
+ const [TreeViewDepthProvider, useTreeViewDepthContext] = createContext({
3743
+ hookName: 'useTreeViewDepthContext',
3744
+ providerName: '<TreeViewDepthProvider />'
3745
+ });
3746
+
3581
3747
  const TreeViewBranch = props => {
3582
- const [branchProps, localProps] = createSplitProps()(props, ['depth', 'id', 'disabled']);
3748
+ const [itemProps, localProps] = createSplitProps()(props, ['disabled', 'id']);
3583
3749
  const api = useTreeViewContext();
3750
+ const depth = useTreeViewDepthContext();
3751
+ const branchProps = solid.mergeProps(itemProps, {
3752
+ depth
3753
+ });
3584
3754
  const mergedProps = solid.mergeProps(() => api().getBranchProps(branchProps), localProps);
3585
3755
  const getChildren = () => runIfFn(localProps.children, () => api().getBranchState(branchProps));
3586
- return web.createComponent(ark.li, web.mergeProps(mergedProps, {
3756
+ return web.createComponent(TreeViewDepthProvider, {
3757
+ value: depth + 1,
3587
3758
  get children() {
3588
- return getChildren();
3759
+ return web.createComponent(TreeViewBranchProvider, {
3760
+ value: branchProps,
3761
+ get children() {
3762
+ return web.createComponent(ark.li, web.mergeProps(mergedProps, {
3763
+ get children() {
3764
+ return getChildren();
3765
+ }
3766
+ }));
3767
+ }
3768
+ });
3589
3769
  }
3590
- }));
3770
+ });
3591
3771
  };
3592
3772
 
3593
3773
  const TreeViewBranchContent = props => {
3594
- const [branchProps, localProps] = createSplitProps()(props, ['depth', 'id', 'disabled']);
3595
3774
  const api = useTreeViewContext();
3596
- const mergedProps = solid.mergeProps(() => api().getBranchContentProps(branchProps), localProps);
3775
+ const branchProps = useTreeViewBranchContext();
3776
+ const mergedProps = solid.mergeProps(() => api().getBranchContentProps(branchProps), props);
3597
3777
  return web.createComponent(ark.ul, mergedProps);
3598
3778
  };
3599
3779
 
3600
3780
  const TreeViewBranchControl = props => {
3601
- const [branchProps, localProps] = createSplitProps()(props, ['depth', 'id', 'disabled']);
3602
3781
  const api = useTreeViewContext();
3603
- const mergedProps = solid.mergeProps(() => api().getBranchControlProps(branchProps), localProps);
3782
+ const branchProps = useTreeViewBranchContext();
3783
+ const mergedProps = solid.mergeProps(() => api().getBranchControlProps(branchProps), props);
3604
3784
  return web.createComponent(ark.div, mergedProps);
3605
3785
  };
3606
3786
 
3607
3787
  const TreeViewBranchIndicator = props => {
3608
- const [branchProps, localProps] = createSplitProps()(props, ['depth', 'id', 'disabled']);
3609
3788
  const api = useTreeViewContext();
3610
- const mergedProps = solid.mergeProps(() => api().getBranchProps(branchProps), anatomy.treeViewAnatomy.build().branchIndicator.attrs, localProps);
3789
+ const branchProps = useTreeViewBranchContext();
3790
+ const mergedProps = solid.mergeProps(() => api().getBranchProps(branchProps),
3791
+ // TODO use api.getBranchIndicatorProps() when available
3792
+ anatomy.treeViewAnatomy.build().branchIndicator.attrs, props);
3611
3793
  return web.createComponent(ark.div, mergedProps);
3612
3794
  };
3613
3795
 
3614
3796
  const TreeViewBranchText = props => {
3615
- const [branchProps, localProps] = createSplitProps()(props, ['depth', 'id', 'disabled']);
3616
3797
  const api = useTreeViewContext();
3617
- const mergedProps = solid.mergeProps(() => api().getBranchTextProps(branchProps), localProps);
3798
+ const branchProps = useTreeViewBranchContext();
3799
+ const mergedProps = solid.mergeProps(() => api().getBranchTextProps(branchProps), props);
3618
3800
  return web.createComponent(ark.span, mergedProps);
3619
3801
  };
3620
3802
 
3621
3803
  const TreeViewBranchTrigger = props => {
3622
- const [branchProps, localProps] = createSplitProps()(props, ['depth', 'id', 'disabled']);
3623
3804
  const api = useTreeViewContext();
3624
- const mergedProps = solid.mergeProps(() => api().getBranchTriggerProps(branchProps), localProps);
3625
- return web.createComponent(ark.button, mergedProps);
3805
+ const branchProps = useTreeViewBranchContext();
3806
+ const mergedProps = solid.mergeProps(() => api().getBranchTriggerProps(branchProps), props);
3807
+ return web.createComponent(ark.div, mergedProps);
3626
3808
  };
3627
3809
 
3810
+ const [TreeViewItemProvider, useTreeViewItemContext] = createContext({
3811
+ hookName: 'useTreeViewItemContext',
3812
+ providerName: '<TreeViewItemProvider />'
3813
+ });
3814
+
3628
3815
  const TreeViewItem = props => {
3629
- const [itemProps, localProps] = createSplitProps()(props, ['depth', 'id', 'disabled']);
3816
+ const [_itemProps, localProps] = createSplitProps()(props, ['id', 'disabled']);
3630
3817
  const api = useTreeViewContext();
3818
+ const depth = useTreeViewDepthContext();
3819
+ const itemProps = solid.mergeProps(_itemProps, {
3820
+ depth
3821
+ });
3631
3822
  const mergedProps = solid.mergeProps(() => api().getItemProps(itemProps), localProps);
3632
3823
  const getChildren = () => runIfFn(localProps.children, () => api().getItemState(itemProps));
3633
- return web.createComponent(ark.li, web.mergeProps(mergedProps, {
3824
+ return web.createComponent(TreeViewItemProvider, {
3825
+ value: itemProps,
3634
3826
  get children() {
3635
- return getChildren();
3827
+ return web.createComponent(ark.li, web.mergeProps(mergedProps, {
3828
+ get children() {
3829
+ return getChildren();
3830
+ }
3831
+ }));
3636
3832
  }
3637
- }));
3833
+ });
3834
+ };
3835
+
3836
+ const TreeViewItemIndicator = props => {
3837
+ const api = useTreeViewContext();
3838
+ const itemProps = useTreeViewItemContext();
3839
+ const mergedProps = solid.mergeProps(() => api().getItemIndicatorProps(itemProps), props);
3840
+ return web.createComponent(ark.div, mergedProps);
3638
3841
  };
3639
3842
 
3640
3843
  const TreeViewItemText = props => {
3641
- const [itemProps, localProps] = createSplitProps()(props, ['depth', 'id', 'disabled']);
3642
3844
  const api = useTreeViewContext();
3643
- const mergedProps = solid.mergeProps(() => api().getItemProps(itemProps), anatomy.treeViewAnatomy.build().itemText.attrs, localProps);
3845
+ const itemProps = useTreeViewItemContext();
3846
+ const mergedProps = solid.mergeProps(() => api().getItemTextProps(itemProps), props);
3644
3847
  return web.createComponent(ark.span, mergedProps);
3645
3848
  };
3646
3849
 
@@ -3682,7 +3885,12 @@ const TreeViewRoot = props => {
3682
3885
  const TreeViewTree = props => {
3683
3886
  const api = useTreeViewContext();
3684
3887
  const mergedProps = solid.mergeProps(() => api().treeProps, props);
3685
- return web.createComponent(ark.ul, mergedProps);
3888
+ return web.createComponent(TreeViewDepthProvider, {
3889
+ value: 1,
3890
+ get children() {
3891
+ return web.createComponent(ark.ul, mergedProps);
3892
+ }
3893
+ });
3686
3894
  };
3687
3895
 
3688
3896
  var treeView = /*#__PURE__*/Object.freeze({
@@ -3694,6 +3902,7 @@ var treeView = /*#__PURE__*/Object.freeze({
3694
3902
  BranchText: TreeViewBranchText,
3695
3903
  BranchTrigger: TreeViewBranchTrigger,
3696
3904
  Item: TreeViewItem,
3905
+ ItemIndicator: TreeViewItemIndicator,
3697
3906
  ItemText: TreeViewItemText,
3698
3907
  Label: TreeViewLabel,
3699
3908
  Root: TreeViewRoot,
@@ -3725,6 +3934,13 @@ exports.CheckboxControl = CheckboxControl;
3725
3934
  exports.CheckboxIndicator = CheckboxIndicator;
3726
3935
  exports.CheckboxLabel = CheckboxLabel;
3727
3936
  exports.CheckboxRoot = CheckboxRoot;
3937
+ exports.Clipboard = clipboard;
3938
+ exports.ClipboardControl = ClipboardControl;
3939
+ exports.ClipboardIndicator = ClipboardIndicator;
3940
+ exports.ClipboardInput = ClipboardInput;
3941
+ exports.ClipboardLabel = ClipboardLabel;
3942
+ exports.ClipboardRoot = ClipboardRoot;
3943
+ exports.ClipboardTrigger = ClipboardTrigger;
3728
3944
  exports.ColorPicker = colorPicker;
3729
3945
  exports.ColorPickerArea = ColorPickerArea;
3730
3946
  exports.ColorPickerAreaBackground = ColorPickerAreaBackground;
@@ -3772,6 +3988,7 @@ exports.DatePickerLabel = DatePickerLabel;
3772
3988
  exports.DatePickerMonthSelect = DatePickerMonthSelect;
3773
3989
  exports.DatePickerNextTrigger = DatePickerNextTrigger;
3774
3990
  exports.DatePickerPositioner = DatePickerPositioner;
3991
+ exports.DatePickerPresetTrigger = DatePickerPresetTrigger;
3775
3992
  exports.DatePickerPrevTrigger = DatePickerPrevTrigger;
3776
3993
  exports.DatePickerRangeText = DatePickerRangeText;
3777
3994
  exports.DatePickerRoot = DatePickerRoot;
@@ -3826,6 +4043,7 @@ exports.HoverCardContent = HoverCardContent;
3826
4043
  exports.HoverCardPositioner = HoverCardPositioner;
3827
4044
  exports.HoverCardRoot = HoverCardRoot;
3828
4045
  exports.HoverCardTrigger = HoverCardTrigger;
4046
+ exports.LocaleProvider = LocaleProvider;
3829
4047
  exports.Menu = menu;
3830
4048
  exports.MenuArrow = MenuArrow;
3831
4049
  exports.MenuArrowTip = MenuArrowTip;
@@ -3978,6 +4196,7 @@ exports.TreeViewBranchIndicator = TreeViewBranchIndicator;
3978
4196
  exports.TreeViewBranchText = TreeViewBranchText;
3979
4197
  exports.TreeViewBranchTrigger = TreeViewBranchTrigger;
3980
4198
  exports.TreeViewItem = TreeViewItem;
4199
+ exports.TreeViewItemIndicator = TreeViewItemIndicator;
3981
4200
  exports.TreeViewItemText = TreeViewItemText;
3982
4201
  exports.TreeViewLabel = TreeViewLabel;
3983
4202
  exports.TreeViewRoot = TreeViewRoot;
@@ -3990,6 +4209,7 @@ exports.useAccordionItemContext = useAccordionItemContext;
3990
4209
  exports.useAvatarContext = useAvatarContext;
3991
4210
  exports.useCarouselContext = useCarouselContext;
3992
4211
  exports.useCheckboxContext = useCheckboxContext;
4212
+ exports.useClipboardContext = useClipboardContext;
3993
4213
  exports.useColorPickerAreaContext = useColorPickerAreaContext;
3994
4214
  exports.useColorPickerChannelSliderContext = useColorPickerChannelSliderContext;
3995
4215
  exports.useColorPickerContext = useColorPickerContext;
@@ -4003,6 +4223,7 @@ exports.useEditableContext = useEditableContext;
4003
4223
  exports.useEnvironmentContext = useEnvironmentContext;
4004
4224
  exports.useFileUploadContext = useFileUploadContext;
4005
4225
  exports.useHoverCardContext = useHoverCardContext;
4226
+ exports.useLocaleContext = useLocaleContext;
4006
4227
  exports.useMenuContext = useMenuContext;
4007
4228
  exports.useNumberInputContext = useNumberInputContext;
4008
4229
  exports.usePaginationContext = usePaginationContext;