@ark-ui/solid 2.0.1 → 2.1.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 (66) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/cjs/index.js +147 -67
  3. package/cjs/index.js.map +1 -1
  4. package/esm/index.js +146 -68
  5. package/esm/index.js.map +1 -1
  6. package/package.json +52 -47
  7. package/source/color-picker/use-color-picker.js +1 -0
  8. package/source/date-picker/date-picker-input.jsx +3 -1
  9. package/source/date-picker/date-picker-preset-trigger.jsx +10 -0
  10. package/source/date-picker/date-picker.jsx +2 -1
  11. package/source/date-picker/index.js +2 -1
  12. package/source/date-picker/use-date-picker.js +1 -0
  13. package/source/dialog/dialog-description.jsx +1 -1
  14. package/source/dialog/use-dialog.js +1 -1
  15. package/source/hover-card/use-hover-card.js +1 -1
  16. package/source/menu/use-menu.js +1 -1
  17. package/source/popover/popover-description.jsx +1 -1
  18. package/source/popover/use-popover.js +1 -1
  19. package/source/select/select-control.jsx +5 -1
  20. package/source/select/use-select.js +6 -1
  21. package/source/tooltip/use-tooltip.js +1 -1
  22. package/source/tree-view/index.js +2 -1
  23. package/source/tree-view/tree-view-branch-content.jsx +3 -8
  24. package/source/tree-view/tree-view-branch-context.js +5 -0
  25. package/source/tree-view/tree-view-branch-control.jsx +3 -8
  26. package/source/tree-view/tree-view-branch-indicator.jsx +5 -8
  27. package/source/tree-view/tree-view-branch-text.jsx +3 -8
  28. package/source/tree-view/tree-view-branch-trigger.jsx +4 -9
  29. package/source/tree-view/tree-view-branch.jsx +10 -7
  30. package/source/tree-view/tree-view-depth-context.js +5 -0
  31. package/source/tree-view/tree-view-item-context.js +5 -0
  32. package/source/tree-view/tree-view-item-indicator.jsx +10 -0
  33. package/source/tree-view/tree-view-item-text.jsx +3 -5
  34. package/source/tree-view/tree-view-item.jsx +8 -3
  35. package/source/tree-view/tree-view-tree.jsx +4 -1
  36. package/source/tree-view/tree-view.jsx +2 -1
  37. package/types/color-picker/use-color-picker.d.ts +1 -1
  38. package/types/date-picker/date-picker-input.d.ts +4 -2
  39. package/types/date-picker/date-picker-preset-trigger.d.ts +6 -0
  40. package/types/date-picker/date-picker.d.ts +2 -1
  41. package/types/date-picker/index.d.ts +3 -2
  42. package/types/date-picker/use-date-picker.d.ts +1 -1
  43. package/types/dialog/dialog-description.d.ts +2 -2
  44. package/types/dialog/use-dialog.d.ts +1 -1
  45. package/types/hover-card/use-hover-card.d.ts +1 -1
  46. package/types/menu/index.d.ts +2 -2
  47. package/types/menu/use-menu.d.ts +1 -1
  48. package/types/popover/popover-description.d.ts +2 -2
  49. package/types/popover/use-popover.d.ts +1 -1
  50. package/types/select/use-select.d.ts +1 -1
  51. package/types/tooltip/use-tooltip.d.ts +1 -1
  52. package/types/tree-view/index.d.ts +3 -2
  53. package/types/tree-view/tree-view-branch-content.d.ts +2 -4
  54. package/types/tree-view/tree-view-branch-context.d.ts +6 -0
  55. package/types/tree-view/tree-view-branch-control.d.ts +2 -4
  56. package/types/tree-view/tree-view-branch-indicator.d.ts +2 -4
  57. package/types/tree-view/tree-view-branch-text.d.ts +2 -4
  58. package/types/tree-view/tree-view-branch-trigger.d.ts +2 -4
  59. package/types/tree-view/tree-view-branch.d.ts +4 -3
  60. package/types/tree-view/tree-view-context.d.ts +0 -16
  61. package/types/tree-view/tree-view-depth-context.d.ts +2 -0
  62. package/types/tree-view/tree-view-item-context.d.ts +6 -0
  63. package/types/tree-view/tree-view-item-indicator.d.ts +4 -0
  64. package/types/tree-view/tree-view-item-text.d.ts +2 -4
  65. package/types/tree-view/tree-view-item.d.ts +2 -1
  66. package/types/tree-view/tree-view.d.ts +2 -1
package/CHANGELOG.md CHANGED
@@ -6,11 +6,46 @@ description: All notable changes to this project will be documented in this file
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [2.1.0] - 2024-02-14
10
+
11
+ ### Added
12
+
13
+ - Introduced `Clipboard` component. Refer to the [documentation](https://ark-ui.com/docs/components/clipboard) for details.
14
+ - Implemented programmable control over the open state for `ColorPicker`, `DatePicker`, `Dialog`, `HoverCard`, `Menu`, `Popover`, `Select`, and `Tooltip`.
15
+ - Exported `SelectionDetails` type for the `Menu` component.
16
+ - Added a `PresetTrigger` part to the `DatePicker` component, enabling custom triggers for common date presets (e.g., Last 7 days, Last 30 days).
17
+ - Enhanced the `DatePicker.Control` component to support multiple inputs by introducing an optional `index` attribute to `DatePicker.Input`. Example usage:
18
+
19
+ ```jsx
20
+ <DatePicker.Control>
21
+ <DatePicker.Input index={0} />
22
+ <DatePicker.Input index={1} />
23
+ </DatePicker.Control>
24
+ ```
25
+
26
+ ### Changed
27
+
28
+ - Refined the `TreeView` component API for streamlined component usage. See the [documentation](https://ark-ui.com/docs/components/tree-view) for details.
29
+ - Updated `Dialog.Description` and `Popover.Description` elements from `p` to `div` for better paragraph handling.
30
+ - Altered `TreeView.BranchTrigger` element from `button` to `div` for accessibility enhancements.
31
+
32
+ ### Fixed
33
+
34
+ - Resolved unintentional interactions when clicking the scrollbar.
35
+ - Addressed an issue where positioned components failed to adjust to window resizing.
36
+ - Corrected a behavior where restoring scroll position triggered a smooth scroll effect back to the starting point.
37
+ - Rectified a problem in `Combobox`, `Menu`, and `Select` where scrolling into view inadvertently scrolled the body element.
38
+ - Fixed a discrepancy in `DatePicker` regarding the incorrect display of weeks when setting `startOfWeek`.
39
+ - Solved an issue in the `Editable` preventing text deletion upon reaching `maxLength`.
40
+ - Corrected an issue in the `Select` where an item group's label `id` was misdirected.
41
+ - Adjusted `Select` to use the correct `id` for the `aria-activedescendant` attribute.
42
+
9
43
  ## [2.0.1] - 2024-01-30
10
44
 
11
45
  ### Fixed
12
46
 
13
47
  - Resolved an issue that for some components the types were not being generated correctly.
48
+ - Fix issue where `Select` component submits its first option when used in a form, even if there is no value selected.
14
49
 
15
50
  ## [2.0.0] - 2024-01-30
16
51
 
package/cjs/index.js CHANGED
@@ -267,7 +267,7 @@ const [EnvironmentProvider, useEnvironmentContext] = createContext({
267
267
  strict: false
268
268
  });
269
269
 
270
- const _tmpl$$c = /*#__PURE__*/web.template(`<span hidden>`);
270
+ var _tmpl$$c = /*#__PURE__*/web.template(`<span hidden>`);
271
271
  const Environment = props => {
272
272
  // eslint-disable-next-line prefer-const
273
273
  let spanRef = undefined;
@@ -278,8 +278,8 @@ const Environment = props => {
278
278
  },
279
279
  get children() {
280
280
  return [web.memo(() => props.children), web.memo(() => web.memo(() => !!!props.value)() && (() => {
281
- const _el$ = _tmpl$$c();
282
- const _ref$ = spanRef;
281
+ var _el$ = _tmpl$$c();
282
+ var _ref$ = spanRef;
283
283
  typeof _ref$ === "function" ? web.use(_ref$, _el$) : spanRef = _el$;
284
284
  return _el$;
285
285
  })())];
@@ -475,12 +475,12 @@ const [CheckboxProvider, useCheckboxContext] = createContext({
475
475
  providerName: '<CheckboxProvider />'
476
476
  });
477
477
 
478
- const _tmpl$$b = /*#__PURE__*/web.template(`<input>`);
478
+ var _tmpl$$b = /*#__PURE__*/web.template(`<input>`);
479
479
  const CheckboxControl = props => {
480
480
  const api = useCheckboxContext();
481
481
  const mergedProps = solid.mergeProps(() => api().controlProps, props);
482
482
  return [web.createComponent(ark.div, mergedProps), (() => {
483
- const _el$ = _tmpl$$b();
483
+ var _el$ = _tmpl$$b();
484
484
  web.spread(_el$, web.mergeProps(() => api().hiddenInputProps), false, false);
485
485
  return _el$;
486
486
  })()];
@@ -687,7 +687,8 @@ const useColorPicker = props => {
687
687
  const context = solid.mergeProps(() => ({
688
688
  id: solidJs.createUniqueId(),
689
689
  getRootNode,
690
- value: local.value ? colorPicker__namespace.parse(local.value) : undefined
690
+ value: local.value ? colorPicker__namespace.parse(local.value) : undefined,
691
+ 'open.controlled': props.open !== undefined
691
692
  }), rest);
692
693
  const [state, send] = solid.useMachine(colorPicker__namespace.machine(context), {
693
694
  context
@@ -695,7 +696,7 @@ const useColorPicker = props => {
695
696
  return solidJs.createMemo(() => colorPicker__namespace.connect(state, send, solid.normalizeProps));
696
697
  };
697
698
 
698
- const _tmpl$$a = /*#__PURE__*/web.template(`<input>`);
699
+ var _tmpl$$a = /*#__PURE__*/web.template(`<input>`);
699
700
  const ColorPickerRoot = props => {
700
701
  const [presenceProps, colorPickerProps] = splitPresenceProps(props);
701
702
  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 +719,7 @@ const ColorPickerRoot = props => {
718
719
  }));
719
720
  }
720
721
  }), (() => {
721
- const _el$ = _tmpl$$a();
722
+ var _el$ = _tmpl$$a();
722
723
  web.spread(_el$, web.mergeProps(() => api().hiddenInputProps), false, false);
723
724
  return _el$;
724
725
  })()];
@@ -1038,8 +1039,9 @@ const DatePickerControl = props => {
1038
1039
  };
1039
1040
 
1040
1041
  const DatePickerInput = props => {
1042
+ const [inputProps, localProps] = createSplitProps()(props, ['index']);
1041
1043
  const api = useDatePickerContext();
1042
- const mergedProps = solid.mergeProps(() => api().inputProps, props);
1044
+ const mergedProps = solid.mergeProps(() => api().getInputProps(inputProps), localProps);
1043
1045
  return web.createComponent(ark.input, mergedProps);
1044
1046
  };
1045
1047
 
@@ -1049,14 +1051,14 @@ const DatePickerLabel = props => {
1049
1051
  return web.createComponent(ark.label, mergedProps);
1050
1052
  };
1051
1053
 
1052
- const _tmpl$$9 = /*#__PURE__*/web.template(`<option>`);
1054
+ var _tmpl$$9 = /*#__PURE__*/web.template(`<option>`);
1053
1055
  const DatePickerMonthSelect = props => {
1054
1056
  const api = useDatePickerContext();
1055
1057
  const mergedProps = solid.mergeProps(() => api().monthSelectProps, props);
1056
1058
  return web.createComponent(ark.select, web.mergeProps(mergedProps, {
1057
1059
  get children() {
1058
1060
  return api().getMonths().map(month => (() => {
1059
- const _el$ = _tmpl$$9();
1061
+ var _el$ = _tmpl$$9();
1060
1062
  web.insert(_el$, () => month.label);
1061
1063
  web.effect(() => _el$.value = month.value);
1062
1064
  return _el$;
@@ -1091,6 +1093,13 @@ const DatePickerPositioner = props => {
1091
1093
  });
1092
1094
  };
1093
1095
 
1096
+ const DatePickerPresetTrigger = props => {
1097
+ const [presetTriggerProps, localProps] = createSplitProps()(props, ['value']);
1098
+ const api = useDatePickerContext();
1099
+ const mergedProps = solid.mergeProps(() => api().getPresetTriggerProps(presetTriggerProps), localProps);
1100
+ return web.createComponent(ark.button, mergedProps);
1101
+ };
1102
+
1094
1103
  const DatePickerPrevTrigger = props => {
1095
1104
  const api = useDatePickerContext();
1096
1105
  const viewProps = useDatePickerViewContext();
@@ -1115,7 +1124,8 @@ const useDatePicker = props => {
1115
1124
  id: solidJs.createUniqueId(),
1116
1125
  getRootNode,
1117
1126
  focusedValue: local.focusedValue ? datePicker__namespace.parse(local.focusedValue) : undefined,
1118
- value: local.value ? datePicker__namespace.parse(local.value) : undefined
1127
+ value: local.value ? datePicker__namespace.parse(local.value) : undefined,
1128
+ 'open.controlled': props.open !== undefined
1119
1129
  }), rest);
1120
1130
  const [state, send] = solid.useMachine(datePicker__namespace.machine(context), {
1121
1131
  context
@@ -1280,7 +1290,7 @@ const DatePickerViewTrigger = props => {
1280
1290
  return web.createComponent(ark.button, mergedProps);
1281
1291
  };
1282
1292
 
1283
- const _tmpl$$8 = /*#__PURE__*/web.template(`<option>`);
1293
+ var _tmpl$$8 = /*#__PURE__*/web.template(`<option>`);
1284
1294
  const DatePickerYearSelect = props => {
1285
1295
  const api = useDatePickerContext();
1286
1296
  const mergedProps = solid.mergeProps(() => api().yearSelectProps, props);
@@ -1290,7 +1300,7 @@ const DatePickerYearSelect = props => {
1290
1300
  from: 1_000,
1291
1301
  to: 4_000
1292
1302
  }).map(year => (() => {
1293
- const _el$ = _tmpl$$8();
1303
+ var _el$ = _tmpl$$8();
1294
1304
  _el$.value = year;
1295
1305
  web.insert(_el$, year);
1296
1306
  return _el$;
@@ -1316,6 +1326,7 @@ var datePicker = /*#__PURE__*/Object.freeze({
1316
1326
  MonthSelect: DatePickerMonthSelect,
1317
1327
  NextTrigger: DatePickerNextTrigger,
1318
1328
  Positioner: DatePickerPositioner,
1329
+ PresetTrigger: DatePickerPresetTrigger,
1319
1330
  PrevTrigger: DatePickerPrevTrigger,
1320
1331
  RangeText: DatePickerRangeText,
1321
1332
  Root: DatePickerRoot,
@@ -1378,7 +1389,7 @@ const DialogContent = props => {
1378
1389
  const DialogDescription = props => {
1379
1390
  const dialog = useDialogContext();
1380
1391
  const mergedProps = solid.mergeProps(() => dialog().descriptionProps, props);
1381
- return web.createComponent(ark.p, mergedProps);
1392
+ return web.createComponent(ark.div, mergedProps);
1382
1393
  };
1383
1394
 
1384
1395
  const DialogPositioner = props => {
@@ -1399,7 +1410,8 @@ const useDialog = props => {
1399
1410
  const getRootNode = useEnvironmentContext();
1400
1411
  const context = solid.mergeProps({
1401
1412
  id: solidJs.createUniqueId(),
1402
- getRootNode
1413
+ getRootNode,
1414
+ 'open.controlled': props.open !== undefined
1403
1415
  }, props);
1404
1416
  const [state, send] = solid.useMachine(dialog__namespace.machine(context), {
1405
1417
  context
@@ -1560,12 +1572,12 @@ const [FileUploadProvider, useFileUploadContext] = createContext({
1560
1572
  providerName: '<FileUploadProvider />'
1561
1573
  });
1562
1574
 
1563
- const _tmpl$$7 = /*#__PURE__*/web.template(`<input>`);
1575
+ var _tmpl$$7 = /*#__PURE__*/web.template(`<input>`);
1564
1576
  const FileUploadDropzone = props => {
1565
1577
  const api = useFileUploadContext();
1566
1578
  const mergedProps = solid.mergeProps(() => api().dropzoneProps, props);
1567
1579
  return [web.createComponent(ark.div, mergedProps), (() => {
1568
- const _el$ = _tmpl$$7();
1580
+ var _el$ = _tmpl$$7();
1569
1581
  web.spread(_el$, web.mergeProps(() => api().hiddenInputProps), false, false);
1570
1582
  return _el$;
1571
1583
  })()];
@@ -1760,7 +1772,8 @@ const useHoverCard = props => {
1760
1772
  const getRootNode = useEnvironmentContext();
1761
1773
  const context = solid.mergeProps({
1762
1774
  id: solidJs.createUniqueId(),
1763
- getRootNode
1775
+ getRootNode,
1776
+ 'open.controlled': props.open !== undefined
1764
1777
  }, props);
1765
1778
  const [state, send] = solid.useMachine(hoverCard__namespace.machine(context), {
1766
1779
  context
@@ -1907,7 +1920,8 @@ const useMenu = props => {
1907
1920
  const getRootNode = useEnvironmentContext();
1908
1921
  const context = solid.mergeProps({
1909
1922
  id: solidJs.createUniqueId(),
1910
- getRootNode
1923
+ getRootNode,
1924
+ 'open.controlled': props.open !== undefined
1911
1925
  }, props);
1912
1926
  const [state, send, machine] = solid.useMachine(menu__namespace.machine(context), {
1913
1927
  context
@@ -2184,7 +2198,7 @@ const usePinInput = props => {
2184
2198
  return solidJs.createMemo(() => pinInput__namespace.connect(state, send, solid.normalizeProps));
2185
2199
  };
2186
2200
 
2187
- const _tmpl$$6 = /*#__PURE__*/web.template(`<input>`);
2201
+ var _tmpl$$6 = /*#__PURE__*/web.template(`<input>`);
2188
2202
  const PinInputRoot = props => {
2189
2203
  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
2204
  const api = usePinInput(usePinInputProps);
@@ -2193,7 +2207,7 @@ const PinInputRoot = props => {
2193
2207
  value: api,
2194
2208
  get children() {
2195
2209
  return [web.createComponent(ark.div, mergedProps), (() => {
2196
- const _el$ = _tmpl$$6();
2210
+ var _el$ = _tmpl$$6();
2197
2211
  web.spread(_el$, web.mergeProps(() => api().hiddenInputProps), false, false);
2198
2212
  return _el$;
2199
2213
  })()];
@@ -2255,7 +2269,7 @@ const PopoverContent = props => {
2255
2269
  const PopoverDescription = props => {
2256
2270
  const api = usePopoverContext();
2257
2271
  const mergedProps = solid.mergeProps(() => api().descriptionProps, props);
2258
- return web.createComponent(ark.p, mergedProps);
2272
+ return web.createComponent(ark.div, mergedProps);
2259
2273
  };
2260
2274
 
2261
2275
  const PopoverIndicator = props => {
@@ -2282,7 +2296,8 @@ const usePopover = props => {
2282
2296
  const getRootNode = useEnvironmentContext();
2283
2297
  const context = solid.mergeProps({
2284
2298
  id: solidJs.createUniqueId(),
2285
- getRootNode
2299
+ getRootNode,
2300
+ 'open.controlled': props.open !== undefined
2286
2301
  }, props);
2287
2302
  const [state, send] = solid.useMachine(popover__namespace.machine(context), {
2288
2303
  context
@@ -2476,13 +2491,13 @@ const RadioGroupItem = props => {
2476
2491
  });
2477
2492
  };
2478
2493
 
2479
- const _tmpl$$5 = /*#__PURE__*/web.template(`<input>`);
2494
+ var _tmpl$$5 = /*#__PURE__*/web.template(`<input>`);
2480
2495
  const RadioGroupItemControl = props => {
2481
2496
  const api = useRadioGroupContext();
2482
2497
  const itemProps = useRadioGroupItemContext();
2483
2498
  const mergedProps = solid.mergeProps(() => api().getItemControlProps(itemProps), props);
2484
2499
  return [web.createComponent(ark.div, mergedProps), (() => {
2485
- const _el$ = _tmpl$$5();
2500
+ var _el$ = _tmpl$$5();
2486
2501
  web.spread(_el$, web.mergeProps(() => api().getItemHiddenInputProps(itemProps)), false, false);
2487
2502
  return _el$;
2488
2503
  })()];
@@ -2540,7 +2555,7 @@ const [RatingGroupProvider, useRatingGroupContext] = createContext({
2540
2555
  providerName: '<RatingGroupProvider />'
2541
2556
  });
2542
2557
 
2543
- const _tmpl$$4 = /*#__PURE__*/web.template(`<input>`);
2558
+ var _tmpl$$4 = /*#__PURE__*/web.template(`<input>`);
2544
2559
  const RatingGroupControl = props => {
2545
2560
  const api = useRatingGroupContext();
2546
2561
  const mergedProps = solid.mergeProps(() => api().controlProps, props);
@@ -2550,7 +2565,7 @@ const RatingGroupControl = props => {
2550
2565
  return getChildren();
2551
2566
  }
2552
2567
  })), (() => {
2553
- const _el$ = _tmpl$$4();
2568
+ var _el$ = _tmpl$$4();
2554
2569
  web.spread(_el$, web.mergeProps(() => api().hiddenInputProps), false, false);
2555
2570
  return _el$;
2556
2571
  })()];
@@ -2651,13 +2666,13 @@ const SegmentGroupItem = props => {
2651
2666
  });
2652
2667
  };
2653
2668
 
2654
- const _tmpl$$3 = /*#__PURE__*/web.template(`<input>`);
2669
+ var _tmpl$$3 = /*#__PURE__*/web.template(`<input>`);
2655
2670
  const SegmentGroupItemControl = props => {
2656
2671
  const api = useSegmentGroupContext();
2657
2672
  const itemProps = useSegmentGroupItemContext();
2658
2673
  const mergedProps = solid.mergeProps(() => api().getItemControlProps(itemProps), anatomy.segmentGroupAnatomy.build().itemControl.attrs, props);
2659
2674
  return [web.createComponent(ark.div, mergedProps), (() => {
2660
- const _el$ = _tmpl$$3();
2675
+ var _el$ = _tmpl$$3();
2661
2676
  web.spread(_el$, web.mergeProps(() => api().getItemHiddenInputProps(itemProps)), false, false);
2662
2677
  return _el$;
2663
2678
  })()];
@@ -2736,25 +2751,35 @@ const SelectContent = props => {
2736
2751
  });
2737
2752
  };
2738
2753
 
2739
- const _tmpl$$2 = /*#__PURE__*/web.template(`<select>`),
2740
- _tmpl$2 = /*#__PURE__*/web.template(`<option>`);
2754
+ var _tmpl$$2 = /*#__PURE__*/web.template(`<option value="">`),
2755
+ _tmpl$2 = /*#__PURE__*/web.template(`<select>`),
2756
+ _tmpl$3 = /*#__PURE__*/web.template(`<option>`);
2741
2757
  const SelectControl = props => {
2742
2758
  const api = useSelectContext();
2743
2759
  const mergedProps = solid.mergeProps(() => api().controlProps, props);
2760
+ const isValueEmpty = solidJs.createMemo(() => api().value.length === 0);
2744
2761
  return [web.createComponent(ark.div, mergedProps), (() => {
2745
- const _el$ = _tmpl$$2();
2762
+ var _el$ = _tmpl$2();
2746
2763
  web.spread(_el$, web.mergeProps(() => api().hiddenSelectProps), false, true);
2764
+ web.insert(_el$, web.createComponent(solidJs.Show, {
2765
+ get when() {
2766
+ return isValueEmpty();
2767
+ },
2768
+ get children() {
2769
+ return _tmpl$$2();
2770
+ }
2771
+ }), null);
2747
2772
  web.insert(_el$, web.createComponent(solidJs.Index, {
2748
2773
  get each() {
2749
2774
  return api().collection.toArray();
2750
2775
  },
2751
2776
  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;
2777
+ var _el$3 = _tmpl$3();
2778
+ web.insert(_el$3, () => option().label);
2779
+ web.effect(() => _el$3.value = option().value);
2780
+ return _el$3;
2756
2781
  })()
2757
- }));
2782
+ }), null);
2758
2783
  return _el$;
2759
2784
  })()];
2760
2785
  };
@@ -2844,7 +2869,8 @@ const useSelect = props => {
2844
2869
  const context = () => solid.mergeProps({
2845
2870
  id: solidJs.createUniqueId(),
2846
2871
  getRootNode,
2847
- collection: collection()
2872
+ collection: collection(),
2873
+ 'open.controlled': props.open !== undefined
2848
2874
  }, rest);
2849
2875
  const [state, send] = solid.useMachine(select__namespace.machine(context()), {
2850
2876
  context
@@ -3074,12 +3100,12 @@ const [SwitchProvider, useSwitchContext] = createContext({
3074
3100
  providerName: '<SwitchProvider />'
3075
3101
  });
3076
3102
 
3077
- const _tmpl$$1 = /*#__PURE__*/web.template(`<input>`);
3103
+ var _tmpl$$1 = /*#__PURE__*/web.template(`<input>`);
3078
3104
  const SwitchControl = props => {
3079
3105
  const api = useSwitchContext();
3080
3106
  const mergedProps = solid.mergeProps(() => api().controlProps, props);
3081
3107
  return [web.createComponent(ark.span, mergedProps), (() => {
3082
- const _el$ = _tmpl$$1();
3108
+ var _el$ = _tmpl$$1();
3083
3109
  web.spread(_el$, web.mergeProps(() => api().hiddenInputProps), false, false);
3084
3110
  return _el$;
3085
3111
  })()];
@@ -3311,7 +3337,7 @@ const useTagsInput = props => {
3311
3337
  return solidJs.createMemo(() => tagsInput__namespace.connect(state, send, solid.normalizeProps));
3312
3338
  };
3313
3339
 
3314
- const _tmpl$ = /*#__PURE__*/web.template(`<input>`);
3340
+ var _tmpl$ = /*#__PURE__*/web.template(`<input>`);
3315
3341
  const TagsInputRoot = props => {
3316
3342
  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
3343
  const api = useTagsInput(tagsInputParams);
@@ -3325,7 +3351,7 @@ const TagsInputRoot = props => {
3325
3351
  return getChildren();
3326
3352
  }
3327
3353
  })), (() => {
3328
- const _el$ = _tmpl$();
3354
+ var _el$ = _tmpl$();
3329
3355
  web.spread(_el$, web.mergeProps(() => api().hiddenInputProps), false, false);
3330
3356
  return _el$;
3331
3357
  })()];
@@ -3526,7 +3552,8 @@ const useTooltip = props => {
3526
3552
  const getRootNode = useEnvironmentContext();
3527
3553
  const context = solid.mergeProps({
3528
3554
  id: solidJs.createUniqueId(),
3529
- getRootNode
3555
+ getRootNode,
3556
+ 'open.controlled': props.open !== undefined
3530
3557
  }, props);
3531
3558
  const [state, send] = solid.useMachine(tooltip__namespace.machine(context), {
3532
3559
  context
@@ -3571,76 +3598,121 @@ var tooltip = /*#__PURE__*/Object.freeze({
3571
3598
  Trigger: TooltipTrigger
3572
3599
  });
3573
3600
 
3574
- // TODO: remove after zag release
3601
+ const [TreeViewBranchProvider, useTreeViewBranchContext] = createContext({
3602
+ hookName: 'useTreeViewBranchContext',
3603
+ providerName: '<TreeViewBranchProvider />'
3604
+ });
3575
3605
 
3576
3606
  const [TreeViewProvider, useTreeViewContext] = createContext({
3577
3607
  hookName: 'useTreeViewContext',
3578
3608
  providerName: '<TreeViewProvider />'
3579
3609
  });
3580
3610
 
3611
+ const [TreeViewDepthProvider, useTreeViewDepthContext] = createContext({
3612
+ hookName: 'useTreeViewDepthContext',
3613
+ providerName: '<TreeViewDepthProvider />'
3614
+ });
3615
+
3581
3616
  const TreeViewBranch = props => {
3582
- const [branchProps, localProps] = createSplitProps()(props, ['depth', 'id', 'disabled']);
3617
+ const [itemProps, localProps] = createSplitProps()(props, ['disabled', 'id']);
3583
3618
  const api = useTreeViewContext();
3619
+ const depth = useTreeViewDepthContext();
3620
+ const branchProps = solid.mergeProps(itemProps, {
3621
+ depth
3622
+ });
3584
3623
  const mergedProps = solid.mergeProps(() => api().getBranchProps(branchProps), localProps);
3585
3624
  const getChildren = () => runIfFn(localProps.children, () => api().getBranchState(branchProps));
3586
- return web.createComponent(ark.li, web.mergeProps(mergedProps, {
3625
+ return web.createComponent(TreeViewDepthProvider, {
3626
+ value: depth + 1,
3587
3627
  get children() {
3588
- return getChildren();
3628
+ return web.createComponent(TreeViewBranchProvider, {
3629
+ value: branchProps,
3630
+ get children() {
3631
+ return web.createComponent(ark.li, web.mergeProps(mergedProps, {
3632
+ get children() {
3633
+ return getChildren();
3634
+ }
3635
+ }));
3636
+ }
3637
+ });
3589
3638
  }
3590
- }));
3639
+ });
3591
3640
  };
3592
3641
 
3593
3642
  const TreeViewBranchContent = props => {
3594
- const [branchProps, localProps] = createSplitProps()(props, ['depth', 'id', 'disabled']);
3595
3643
  const api = useTreeViewContext();
3596
- const mergedProps = solid.mergeProps(() => api().getBranchContentProps(branchProps), localProps);
3644
+ const branchProps = useTreeViewBranchContext();
3645
+ const mergedProps = solid.mergeProps(() => api().getBranchContentProps(branchProps), props);
3597
3646
  return web.createComponent(ark.ul, mergedProps);
3598
3647
  };
3599
3648
 
3600
3649
  const TreeViewBranchControl = props => {
3601
- const [branchProps, localProps] = createSplitProps()(props, ['depth', 'id', 'disabled']);
3602
3650
  const api = useTreeViewContext();
3603
- const mergedProps = solid.mergeProps(() => api().getBranchControlProps(branchProps), localProps);
3651
+ const branchProps = useTreeViewBranchContext();
3652
+ const mergedProps = solid.mergeProps(() => api().getBranchControlProps(branchProps), props);
3604
3653
  return web.createComponent(ark.div, mergedProps);
3605
3654
  };
3606
3655
 
3607
3656
  const TreeViewBranchIndicator = props => {
3608
- const [branchProps, localProps] = createSplitProps()(props, ['depth', 'id', 'disabled']);
3609
3657
  const api = useTreeViewContext();
3610
- const mergedProps = solid.mergeProps(() => api().getBranchProps(branchProps), anatomy.treeViewAnatomy.build().branchIndicator.attrs, localProps);
3658
+ const branchProps = useTreeViewBranchContext();
3659
+ const mergedProps = solid.mergeProps(() => api().getBranchProps(branchProps),
3660
+ // TODO use api.getBranchIndicatorProps() when available
3661
+ anatomy.treeViewAnatomy.build().branchIndicator.attrs, props);
3611
3662
  return web.createComponent(ark.div, mergedProps);
3612
3663
  };
3613
3664
 
3614
3665
  const TreeViewBranchText = props => {
3615
- const [branchProps, localProps] = createSplitProps()(props, ['depth', 'id', 'disabled']);
3616
3666
  const api = useTreeViewContext();
3617
- const mergedProps = solid.mergeProps(() => api().getBranchTextProps(branchProps), localProps);
3667
+ const branchProps = useTreeViewBranchContext();
3668
+ const mergedProps = solid.mergeProps(() => api().getBranchTextProps(branchProps), props);
3618
3669
  return web.createComponent(ark.span, mergedProps);
3619
3670
  };
3620
3671
 
3621
3672
  const TreeViewBranchTrigger = props => {
3622
- const [branchProps, localProps] = createSplitProps()(props, ['depth', 'id', 'disabled']);
3623
3673
  const api = useTreeViewContext();
3624
- const mergedProps = solid.mergeProps(() => api().getBranchTriggerProps(branchProps), localProps);
3625
- return web.createComponent(ark.button, mergedProps);
3674
+ const branchProps = useTreeViewBranchContext();
3675
+ const mergedProps = solid.mergeProps(() => api().getBranchTriggerProps(branchProps), props);
3676
+ return web.createComponent(ark.div, mergedProps);
3626
3677
  };
3627
3678
 
3679
+ const [TreeViewItemProvider, useTreeViewItemContext] = createContext({
3680
+ hookName: 'useTreeViewItemContext',
3681
+ providerName: '<TreeViewItemProvider />'
3682
+ });
3683
+
3628
3684
  const TreeViewItem = props => {
3629
- const [itemProps, localProps] = createSplitProps()(props, ['depth', 'id', 'disabled']);
3685
+ const [_itemProps, localProps] = createSplitProps()(props, ['id', 'disabled']);
3630
3686
  const api = useTreeViewContext();
3687
+ const depth = useTreeViewDepthContext();
3688
+ const itemProps = solid.mergeProps(_itemProps, {
3689
+ depth
3690
+ });
3631
3691
  const mergedProps = solid.mergeProps(() => api().getItemProps(itemProps), localProps);
3632
3692
  const getChildren = () => runIfFn(localProps.children, () => api().getItemState(itemProps));
3633
- return web.createComponent(ark.li, web.mergeProps(mergedProps, {
3693
+ return web.createComponent(TreeViewItemProvider, {
3694
+ value: itemProps,
3634
3695
  get children() {
3635
- return getChildren();
3696
+ return web.createComponent(ark.li, web.mergeProps(mergedProps, {
3697
+ get children() {
3698
+ return getChildren();
3699
+ }
3700
+ }));
3636
3701
  }
3637
- }));
3702
+ });
3703
+ };
3704
+
3705
+ const TreeViewItemIndicator = props => {
3706
+ const api = useTreeViewContext();
3707
+ const itemProps = useTreeViewItemContext();
3708
+ const mergedProps = solid.mergeProps(() => api().getItemIndicatorProps(itemProps), props);
3709
+ return web.createComponent(ark.div, mergedProps);
3638
3710
  };
3639
3711
 
3640
3712
  const TreeViewItemText = props => {
3641
- const [itemProps, localProps] = createSplitProps()(props, ['depth', 'id', 'disabled']);
3642
3713
  const api = useTreeViewContext();
3643
- const mergedProps = solid.mergeProps(() => api().getItemProps(itemProps), anatomy.treeViewAnatomy.build().itemText.attrs, localProps);
3714
+ const itemProps = useTreeViewItemContext();
3715
+ const mergedProps = solid.mergeProps(() => api().getItemTextProps(itemProps), props);
3644
3716
  return web.createComponent(ark.span, mergedProps);
3645
3717
  };
3646
3718
 
@@ -3682,7 +3754,12 @@ const TreeViewRoot = props => {
3682
3754
  const TreeViewTree = props => {
3683
3755
  const api = useTreeViewContext();
3684
3756
  const mergedProps = solid.mergeProps(() => api().treeProps, props);
3685
- return web.createComponent(ark.ul, mergedProps);
3757
+ return web.createComponent(TreeViewDepthProvider, {
3758
+ value: 1,
3759
+ get children() {
3760
+ return web.createComponent(ark.ul, mergedProps);
3761
+ }
3762
+ });
3686
3763
  };
3687
3764
 
3688
3765
  var treeView = /*#__PURE__*/Object.freeze({
@@ -3694,6 +3771,7 @@ var treeView = /*#__PURE__*/Object.freeze({
3694
3771
  BranchText: TreeViewBranchText,
3695
3772
  BranchTrigger: TreeViewBranchTrigger,
3696
3773
  Item: TreeViewItem,
3774
+ ItemIndicator: TreeViewItemIndicator,
3697
3775
  ItemText: TreeViewItemText,
3698
3776
  Label: TreeViewLabel,
3699
3777
  Root: TreeViewRoot,
@@ -3772,6 +3850,7 @@ exports.DatePickerLabel = DatePickerLabel;
3772
3850
  exports.DatePickerMonthSelect = DatePickerMonthSelect;
3773
3851
  exports.DatePickerNextTrigger = DatePickerNextTrigger;
3774
3852
  exports.DatePickerPositioner = DatePickerPositioner;
3853
+ exports.DatePickerPresetTrigger = DatePickerPresetTrigger;
3775
3854
  exports.DatePickerPrevTrigger = DatePickerPrevTrigger;
3776
3855
  exports.DatePickerRangeText = DatePickerRangeText;
3777
3856
  exports.DatePickerRoot = DatePickerRoot;
@@ -3978,6 +4057,7 @@ exports.TreeViewBranchIndicator = TreeViewBranchIndicator;
3978
4057
  exports.TreeViewBranchText = TreeViewBranchText;
3979
4058
  exports.TreeViewBranchTrigger = TreeViewBranchTrigger;
3980
4059
  exports.TreeViewItem = TreeViewItem;
4060
+ exports.TreeViewItemIndicator = TreeViewItemIndicator;
3981
4061
  exports.TreeViewItemText = TreeViewItemText;
3982
4062
  exports.TreeViewLabel = TreeViewLabel;
3983
4063
  exports.TreeViewRoot = TreeViewRoot;