@ark-ui/solid 1.0.0 → 1.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 (62) hide show
  1. package/CHANGELOG.md +53 -54
  2. package/README.md +43 -40
  3. package/cjs/index.js +263 -38
  4. package/cjs/index.js.map +1 -1
  5. package/esm/index.js +248 -39
  6. package/esm/index.js.map +1 -1
  7. package/package.json +44 -41
  8. package/source/color-picker/color-picker-format-select.jsx +13 -0
  9. package/source/color-picker/color-picker-format-trigger.jsx +8 -0
  10. package/source/color-picker/color-picker-swatch-context.js +5 -0
  11. package/source/color-picker/color-picker-swatch-indicator.jsx +10 -0
  12. package/source/color-picker/color-picker-swatch-trigger.jsx +4 -1
  13. package/source/color-picker/color-picker-swatch.jsx +6 -3
  14. package/source/color-picker/color-picker.jsx +3 -1
  15. package/source/color-picker/index.js +7 -1
  16. package/source/dialog/dialog-backdrop.jsx +4 -3
  17. package/source/dialog/dialog-close-trigger.jsx +1 -1
  18. package/source/dialog/dialog.jsx +4 -2
  19. package/source/file-upload/file-upload-context.js +5 -0
  20. package/source/file-upload/file-upload-dropzone.jsx +11 -0
  21. package/source/file-upload/file-upload-item-context.js +5 -0
  22. package/source/file-upload/file-upload-item-delete-trigger.jsx +10 -0
  23. package/source/file-upload/file-upload-item-group.jsx +10 -0
  24. package/source/file-upload/file-upload-item-name.jsx +12 -0
  25. package/source/file-upload/file-upload-item-preview.jsx +19 -0
  26. package/source/file-upload/file-upload-item-size-text.jsx +12 -0
  27. package/source/file-upload/file-upload-item.jsx +15 -0
  28. package/source/file-upload/file-upload-label.jsx +8 -0
  29. package/source/file-upload/file-upload-trigger.jsx +8 -0
  30. package/source/file-upload/file-upload.jsx +30 -0
  31. package/source/file-upload/index.js +24 -0
  32. package/source/file-upload/use-file-upload.js +10 -0
  33. package/source/index.jsx +1 -0
  34. package/source/menu/menu-trigger.jsx +5 -2
  35. package/source/number-input/number-input.jsx +4 -2
  36. package/source/toast/create-toaster.jsx +6 -7
  37. package/types/color-picker/color-picker-format-select.d.ts +4 -0
  38. package/types/color-picker/color-picker-format-trigger.d.ts +4 -0
  39. package/types/color-picker/color-picker-swatch-context.d.ts +4 -0
  40. package/types/color-picker/color-picker-swatch-indicator.d.ts +4 -0
  41. package/types/color-picker/color-picker-swatch-trigger.d.ts +1 -5
  42. package/types/color-picker/color-picker-transparency-grid.d.ts +2 -5
  43. package/types/color-picker/index.d.ts +10 -3
  44. package/types/color-picker/use-color-picker.d.ts +3 -0
  45. package/types/file-upload/file-upload-context.d.ts +4 -0
  46. package/types/file-upload/file-upload-dropzone.d.ts +4 -0
  47. package/types/file-upload/file-upload-item-context.d.ts +4 -0
  48. package/types/file-upload/file-upload-item-delete-trigger.d.ts +4 -0
  49. package/types/file-upload/file-upload-item-group.d.ts +8 -0
  50. package/types/file-upload/file-upload-item-name.d.ts +4 -0
  51. package/types/file-upload/file-upload-item-preview.d.ts +4 -0
  52. package/types/file-upload/file-upload-item-size-text.d.ts +4 -0
  53. package/types/file-upload/file-upload-item.d.ts +6 -0
  54. package/types/file-upload/file-upload-label.d.ts +4 -0
  55. package/types/file-upload/file-upload-trigger.d.ts +4 -0
  56. package/types/file-upload/file-upload.d.ts +9 -0
  57. package/types/file-upload/index.d.ts +25 -0
  58. package/types/file-upload/use-file-upload.d.ts +9 -0
  59. package/types/index.d.ts +1 -0
  60. package/types/number-input/number-input.d.ts +6 -3
  61. package/types/toast/create-toaster.d.ts +3 -2
  62. package/types/toast/toast-context.d.ts +7 -2
package/cjs/index.js CHANGED
@@ -14,6 +14,7 @@ var combobox = require('@zag-js/combobox');
14
14
  var datePicker = require('@zag-js/date-picker');
15
15
  var dialog = require('@zag-js/dialog');
16
16
  var editable = require('@zag-js/editable');
17
+ var fileUpload = require('@zag-js/file-upload');
17
18
  var hoverCard = require('@zag-js/hover-card');
18
19
  var menu = require('@zag-js/menu');
19
20
  var numberInput = require('@zag-js/number-input');
@@ -59,6 +60,7 @@ var combobox__namespace = /*#__PURE__*/_interopNamespaceDefault(combobox);
59
60
  var datePicker__namespace = /*#__PURE__*/_interopNamespaceDefault(datePicker);
60
61
  var dialog__namespace = /*#__PURE__*/_interopNamespaceDefault(dialog);
61
62
  var editable__namespace = /*#__PURE__*/_interopNamespaceDefault(editable);
63
+ var fileUpload__namespace = /*#__PURE__*/_interopNamespaceDefault(fileUpload);
62
64
  var hoverCard__namespace = /*#__PURE__*/_interopNamespaceDefault(hoverCard);
63
65
  var menu__namespace = /*#__PURE__*/_interopNamespaceDefault(menu);
64
66
  var numberInput__namespace = /*#__PURE__*/_interopNamespaceDefault(numberInput);
@@ -533,7 +535,7 @@ const [EnvironmentProvider, useEnvironmentContext] = createContext({
533
535
  strict: false
534
536
  });
535
537
 
536
- const _tmpl$$b = /*#__PURE__*/web.template(`<span hidden>`);
538
+ const _tmpl$$c = /*#__PURE__*/web.template(`<span hidden>`);
537
539
  const Environment$1 = props => {
538
540
  // eslint-disable-next-line prefer-const
539
541
  let spanRef = undefined;
@@ -544,7 +546,7 @@ const Environment$1 = props => {
544
546
  },
545
547
  get children() {
546
548
  return [web.memo(() => props.children), web.memo(() => web.memo(() => !!!props.value)() && (() => {
547
- const _el$ = _tmpl$$b();
549
+ const _el$ = _tmpl$$c();
548
550
  const _ref$ = spanRef;
549
551
  typeof _ref$ === "function" ? web.use(_ref$, _el$) : spanRef = _el$;
550
552
  return _el$;
@@ -839,12 +841,12 @@ const Checkbox$1 = props => {
839
841
  });
840
842
  };
841
843
 
842
- const _tmpl$$a = /*#__PURE__*/web.template(`<input>`);
844
+ const _tmpl$$b = /*#__PURE__*/web.template(`<input>`);
843
845
  const CheckboxControl = props => {
844
846
  const api = useCheckboxContext();
845
847
  const mergedProps = solid.mergeProps(() => api().controlProps, props);
846
848
  return [web.createComponent(ark.div, mergedProps), (() => {
847
- const _el$ = _tmpl$$a();
849
+ const _el$ = _tmpl$$b();
848
850
  web.spread(_el$, web.mergeProps(() => api().hiddenInputProps), false, false);
849
851
  return _el$;
850
852
  })()];
@@ -888,10 +890,10 @@ const useColorPicker = props => {
888
890
  return solidJs.createMemo(() => colorPicker__namespace.connect(state, send, solid.normalizeProps));
889
891
  };
890
892
 
891
- const _tmpl$$9 = /*#__PURE__*/web.template(`<input>`);
893
+ const _tmpl$$a = /*#__PURE__*/web.template(`<input>`);
892
894
  const ColorPicker$1 = props => {
893
895
  const [presenceProps, colorPickerProps] = splitPresenceProps(props);
894
- const [useColorPickerProps, localProps] = createSplitProps()(colorPickerProps, ['autoFocus', 'dir', 'disabled', 'getRootNode', 'id', 'ids', 'initialFocusEl', 'name', 'name', 'onFocusOutside', 'onInteractOutside', 'onOpenChange', 'onPointerDownOutside', 'onValueChange', 'onValueChangeEnd', 'open', 'positioning', 'readOnly', 'value']);
896
+ 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']);
895
897
  const api = useColorPicker(useColorPickerProps);
896
898
  const apiPresence = usePresence(solid.mergeProps(presenceProps, () => ({
897
899
  present: api().isOpen
@@ -911,7 +913,7 @@ const ColorPicker$1 = props => {
911
913
  }));
912
914
  }
913
915
  }), (() => {
914
- const _el$ = _tmpl$$9();
916
+ const _el$ = _tmpl$$a();
915
917
  web.spread(_el$, web.mergeProps(() => api().hiddenInputProps), false, false);
916
918
  return _el$;
917
919
  })()];
@@ -1014,6 +1016,32 @@ const ColorPickerEyeDropperTrigger = props => {
1014
1016
  return web.createComponent(ark.button, mergedProps);
1015
1017
  };
1016
1018
 
1019
+ const ColorPickerFormatSelect = props => {
1020
+ const api = useColorPickerContext();
1021
+ const mergedProps = solid.mergeProps(() => api().formatSelectProps, props);
1022
+ return web.createComponent(ark.select, web.mergeProps(mergedProps, {
1023
+ get children() {
1024
+ return web.createComponent(solidJs.Index, {
1025
+ each: ['rgba', 'hsla', 'hsba'],
1026
+ children: format => web.createComponent(ark.option, {
1027
+ get value() {
1028
+ return format();
1029
+ },
1030
+ get children() {
1031
+ return format();
1032
+ }
1033
+ })
1034
+ });
1035
+ }
1036
+ }));
1037
+ };
1038
+
1039
+ const ColorPickerFormatTrigger = props => {
1040
+ const api = useColorPickerContext();
1041
+ const mergedProps = solid.mergeProps(() => api().formatTriggerProps, props);
1042
+ return web.createComponent(ark.button, mergedProps);
1043
+ };
1044
+
1017
1045
  const ColorPickerLabel = props => {
1018
1046
  const api = useColorPickerContext();
1019
1047
  const mergedProps = solid.mergeProps(() => api().labelProps, props);
@@ -1034,11 +1062,21 @@ const ColorPickerPositioner = props => {
1034
1062
  });
1035
1063
  };
1036
1064
 
1065
+ const [ColorPickerSwatchProvider, useColorPickerSwatchContext] = createContext({
1066
+ hookName: 'useColorPickerSwatchContext',
1067
+ providerName: '<ColorPickerSwatchProvider />'
1068
+ });
1069
+
1037
1070
  const ColorPickerSwatch = props => {
1038
- const [colorSwatchProps, localProps] = createSplitProps()(props, ['respectAlpha', 'value']);
1071
+ const [swatchProps, localProps] = createSplitProps()(props, ['respectAlpha', 'value']);
1039
1072
  const api = useColorPickerContext();
1040
- const mergedProps = solid.mergeProps(() => api().getSwatchProps(colorSwatchProps), localProps);
1041
- return web.createComponent(ark.div, mergedProps);
1073
+ const mergedProps = solid.mergeProps(() => api().getSwatchProps(swatchProps), localProps);
1074
+ return web.createComponent(ColorPickerSwatchProvider, {
1075
+ value: swatchProps,
1076
+ get children() {
1077
+ return web.createComponent(ark.div, mergedProps);
1078
+ }
1079
+ });
1042
1080
  };
1043
1081
 
1044
1082
  const ColorPickerSwatchGroup = props => {
@@ -1047,8 +1085,15 @@ const ColorPickerSwatchGroup = props => {
1047
1085
  return web.createComponent(ark.div, mergedProps);
1048
1086
  };
1049
1087
 
1088
+ const ColorPickerSwatchIndicator = props => {
1089
+ const api = useColorPickerContext();
1090
+ const swatchProps = useColorPickerSwatchContext();
1091
+ const mergedProps = solid.mergeProps(() => api().getSwatchIndicatorProps(swatchProps), props);
1092
+ return web.createComponent(ark.div, mergedProps);
1093
+ };
1094
+
1050
1095
  const ColorPickerSwatchTrigger = props => {
1051
- const [triggerProps, localProps] = createSplitProps()(props, ['value']);
1096
+ const [triggerProps, localProps] = createSplitProps()(props, ['value', 'disabled']);
1052
1097
  const api = useColorPickerContext();
1053
1098
  const mergedProps = solid.mergeProps(() => api().getSwatchTriggerProps(triggerProps), localProps);
1054
1099
  return web.createComponent(ark.button, mergedProps);
@@ -1108,10 +1153,13 @@ const ColorPicker = Object.assign(ColorPicker$1, {
1108
1153
  Content: ColorPickerContent,
1109
1154
  Control: ColorPickerControl,
1110
1155
  EyeDropperTrigger: ColorPickerEyeDropperTrigger,
1156
+ FormatTrigger: ColorPickerFormatTrigger,
1157
+ FormatSelect: ColorPickerFormatSelect,
1111
1158
  Label: ColorPickerLabel,
1112
1159
  Positioner: ColorPickerPositioner,
1113
1160
  Swatch: ColorPickerSwatch,
1114
1161
  SwatchGroup: ColorPickerSwatchGroup,
1162
+ SwatchIndicator: ColorPickerSwatchIndicator,
1115
1163
  SwatchTrigger: ColorPickerSwatchTrigger,
1116
1164
  TransparencyGrid: ColorPickerTransparencyGrid,
1117
1165
  Trigger: ColorPickerTrigger,
@@ -1376,14 +1424,14 @@ const DatePickerLabel = props => {
1376
1424
  return web.createComponent(ark.label, mergedProps);
1377
1425
  };
1378
1426
 
1379
- const _tmpl$$8 = /*#__PURE__*/web.template(`<option>`);
1427
+ const _tmpl$$9 = /*#__PURE__*/web.template(`<option>`);
1380
1428
  const DatePickerMonthSelect = props => {
1381
1429
  const api = useDatePickerContext();
1382
1430
  const mergedProps = solid.mergeProps(() => api().monthSelectProps, props);
1383
1431
  return web.createComponent(ark.select, web.mergeProps(mergedProps, {
1384
1432
  get children() {
1385
1433
  return api().getMonths().map(month => (() => {
1386
- const _el$ = _tmpl$$8();
1434
+ const _el$ = _tmpl$$9();
1387
1435
  web.insert(_el$, () => month.label);
1388
1436
  web.effect(() => _el$.value = month.value);
1389
1437
  return _el$;
@@ -1566,7 +1614,7 @@ const DatePickerViewTrigger = props => {
1566
1614
  return web.createComponent(ark.button, mergedProps);
1567
1615
  };
1568
1616
 
1569
- const _tmpl$$7 = /*#__PURE__*/web.template(`<option>`);
1617
+ const _tmpl$$8 = /*#__PURE__*/web.template(`<option>`);
1570
1618
  const DatePickerYearSelect = props => {
1571
1619
  const api = useDatePickerContext();
1572
1620
  const mergedProps = solid.mergeProps(() => api().yearSelectProps, props);
@@ -1576,7 +1624,7 @@ const DatePickerYearSelect = props => {
1576
1624
  from: 1_000,
1577
1625
  to: 4_000
1578
1626
  }).map(year => (() => {
1579
- const _el$ = _tmpl$$7();
1627
+ const _el$ = _tmpl$$8();
1580
1628
  _el$.value = year;
1581
1629
  web.insert(_el$, year);
1582
1630
  return _el$;
@@ -1646,10 +1694,15 @@ const Dialog$1 = props => {
1646
1694
  return web.createComponent(DialogProvider, {
1647
1695
  value: api,
1648
1696
  get children() {
1649
- return web.createComponent(PresenceProvider, {
1650
- value: apiPresence,
1697
+ return web.createComponent(PresencePropsProvider, {
1698
+ value: presenceProps,
1651
1699
  get children() {
1652
- return getChildren();
1700
+ return web.createComponent(PresenceProvider, {
1701
+ value: apiPresence,
1702
+ get children() {
1703
+ return getChildren();
1704
+ }
1705
+ });
1653
1706
  }
1654
1707
  });
1655
1708
  }
@@ -1658,8 +1711,11 @@ const Dialog$1 = props => {
1658
1711
 
1659
1712
  const DialogBackdrop = props => {
1660
1713
  const api = useDialogContext();
1661
- const presenceApi = usePresenceContext();
1662
- const mergedProps = solid.mergeProps(() => api().backdropProps, props);
1714
+ const presenceProps = usePresencePropsContext();
1715
+ const presenceApi = usePresence(solid.mergeProps(presenceProps, () => ({
1716
+ present: api().isOpen
1717
+ })));
1718
+ const mergedProps = solid.mergeProps(() => api().backdropProps, () => presenceApi().presenceProps, props);
1663
1719
  return web.createComponent(solidJs.Show, {
1664
1720
  get when() {
1665
1721
  return !presenceApi().isUnmounted;
@@ -1672,7 +1728,7 @@ const DialogBackdrop = props => {
1672
1728
 
1673
1729
  const DialogCloseTrigger = props => {
1674
1730
  const dialog = useDialogContext();
1675
- const mergedProps = solid.mergeProps(() => dialog().triggerProps, props);
1731
+ const mergedProps = solid.mergeProps(() => dialog().closeTriggerProps, props);
1676
1732
  return web.createComponent(ark.button, mergedProps);
1677
1733
  };
1678
1734
 
@@ -1833,6 +1889,157 @@ const Editable = Object.assign(Editable$1, {
1833
1889
  SubmitTrigger: EditableSubmitTrigger
1834
1890
  });
1835
1891
 
1892
+ const [FileUploadProvider, useFileUploadContext] = createContext({
1893
+ hookName: 'useFileUploadContext',
1894
+ providerName: '<FileUploadProvider />'
1895
+ });
1896
+
1897
+ const useFileUpload = props => {
1898
+ const getRootNode = useEnvironmentContext();
1899
+ const context = solid.mergeProps({
1900
+ id: solidJs.createUniqueId(),
1901
+ getRootNode
1902
+ }, props);
1903
+ const [state, send] = solid.useMachine(fileUpload__namespace.machine(context), {
1904
+ context
1905
+ });
1906
+ return solidJs.createMemo(() => fileUpload__namespace.connect(state, send, solid.normalizeProps));
1907
+ };
1908
+
1909
+ const FileUpload$1 = props => {
1910
+ const [fileUploadProps, localProps] = createSplitProps()(props, ['accept', 'allowDrop', 'dir', 'disabled', 'files', 'getRootNode', 'id', 'isValidFile', 'locale', 'maxFiles', 'maxFileSize', 'minFileSize', 'name', 'onFilesChange']);
1911
+ const api = useFileUpload(fileUploadProps);
1912
+ const mergedProps = solid.mergeProps(() => api().rootProps, localProps);
1913
+ const getChildren = () => runIfFn(localProps.children, api);
1914
+ return web.createComponent(FileUploadProvider, {
1915
+ value: api,
1916
+ get children() {
1917
+ return web.createComponent(ark.div, web.mergeProps(mergedProps, {
1918
+ get children() {
1919
+ return getChildren();
1920
+ }
1921
+ }));
1922
+ }
1923
+ });
1924
+ };
1925
+
1926
+ const _tmpl$$7 = /*#__PURE__*/web.template(`<input>`);
1927
+ const FileUploadDropzone = props => {
1928
+ const api = useFileUploadContext();
1929
+ const mergedProps = solid.mergeProps(() => api().dropzoneProps, props);
1930
+ return [web.createComponent(ark.div, mergedProps), (() => {
1931
+ const _el$ = _tmpl$$7();
1932
+ web.spread(_el$, web.mergeProps(() => api().hiddenInputProps), false, false);
1933
+ return _el$;
1934
+ })()];
1935
+ };
1936
+
1937
+ const [FileUploadItemProvider, useFileUploadItemContext] = createContext({
1938
+ hookName: 'useFileUploadItemContext',
1939
+ providerName: '<FileUploadItemProvider />'
1940
+ });
1941
+
1942
+ const FileUploadItem = props => {
1943
+ const [itemProps, localProps] = createSplitProps()(props, ['file']);
1944
+ const api = useFileUploadContext();
1945
+ const mergedProps = solid.mergeProps(() => api().getItemProps(itemProps), localProps);
1946
+ const getChildren = () => runIfFn(localProps.children);
1947
+ return web.createComponent(FileUploadItemProvider, {
1948
+ value: itemProps,
1949
+ get children() {
1950
+ return web.createComponent(ark.li, web.mergeProps(mergedProps, {
1951
+ get children() {
1952
+ return getChildren();
1953
+ }
1954
+ }));
1955
+ }
1956
+ });
1957
+ };
1958
+
1959
+ const FileUploadItemDeleteTrigger = props => {
1960
+ const api = useFileUploadContext();
1961
+ const item = useFileUploadItemContext();
1962
+ const mergedProps = solid.mergeProps(() => api().getItemDeleteTriggerProps(item), props);
1963
+ return web.createComponent(ark.button, mergedProps);
1964
+ };
1965
+
1966
+ const FileUploadItemGroup = props => {
1967
+ const api = useFileUploadContext();
1968
+ const mergedProps = solid.mergeProps(() => api().itemGroupProps, props);
1969
+ const getChildren = () => runIfFn(props.children, () => api().files);
1970
+ return web.createComponent(ark.ul, web.mergeProps(mergedProps, {
1971
+ get children() {
1972
+ return getChildren();
1973
+ }
1974
+ }));
1975
+ };
1976
+
1977
+ const FileUploadItemName = props => {
1978
+ const api = useFileUploadContext();
1979
+ const item = useFileUploadItemContext();
1980
+ const mergedProps = solid.mergeProps(() => api().getItemNameProps(item), props);
1981
+ const getChildren = solidJs.children(() => props.children);
1982
+ return web.createComponent(ark.div, web.mergeProps(mergedProps, {
1983
+ get children() {
1984
+ return getChildren() || item.file.name;
1985
+ }
1986
+ }));
1987
+ };
1988
+
1989
+ const FileUploadItemPreview = props => {
1990
+ const api = useFileUploadContext();
1991
+ const item = useFileUploadItemContext();
1992
+ const [url, setUrl] = solidJs.createSignal('');
1993
+ api().createFileUrl(item.file, url => setUrl(url));
1994
+ try {
1995
+ const mergedProps = solid.mergeProps(api().getItemPreviewProps({
1996
+ ...item,
1997
+ url: url()
1998
+ }), props);
1999
+ return web.createComponent(ark.img, mergedProps);
2000
+ } catch (e) {
2001
+ // TODO We could render a fallback component
2002
+ return null;
2003
+ }
2004
+ };
2005
+
2006
+ const FileUploadItemSizeText = props => {
2007
+ const api = useFileUploadContext();
2008
+ const item = useFileUploadItemContext();
2009
+ const mergedProps = solid.mergeProps(() => api().getItemSizeTextProps(item), props);
2010
+ const getChildren = solidJs.children(() => props.children);
2011
+ return web.createComponent(ark.div, web.mergeProps(mergedProps, {
2012
+ get children() {
2013
+ return getChildren() || api().getFileSize(item.file);
2014
+ }
2015
+ }));
2016
+ };
2017
+
2018
+ const FileUploadLabel = props => {
2019
+ const api = useFileUploadContext();
2020
+ const mergedProps = solid.mergeProps(() => api().labelProps, props);
2021
+ return web.createComponent(ark.label, mergedProps);
2022
+ };
2023
+
2024
+ const FileUploadTrigger = props => {
2025
+ const api = useFileUploadContext();
2026
+ const mergedProps = solid.mergeProps(() => api().triggerProps, props);
2027
+ return web.createComponent(ark.button, mergedProps);
2028
+ };
2029
+
2030
+ const FileUpload = Object.assign(FileUpload$1, {
2031
+ Root: FileUpload$1,
2032
+ Dropzone: FileUploadDropzone,
2033
+ Label: FileUploadLabel,
2034
+ Trigger: FileUploadTrigger,
2035
+ ItemGroup: FileUploadItemGroup,
2036
+ Item: FileUploadItem,
2037
+ ItemName: FileUploadItemName,
2038
+ ItemPreview: FileUploadItemPreview,
2039
+ ItemSizeText: FileUploadItemSizeText,
2040
+ ItemDeleteTrigger: FileUploadItemDeleteTrigger
2041
+ });
2042
+
1836
2043
  const [HoverCardProvider, useHoverCardContext] = createContext({
1837
2044
  hookName: 'useHoverCardContext',
1838
2045
  providerName: '<HoverCardProvider />'
@@ -2088,8 +2295,13 @@ const MenuSeparator = props => {
2088
2295
  };
2089
2296
 
2090
2297
  const MenuTrigger = props => {
2091
- const menu = useMenuContext();
2092
- const mergedProps = solid.mergeProps(() => menu?.().triggerProps, props);
2298
+ const api = useMenuContext();
2299
+ const presenceApi = usePresenceContext();
2300
+ const mergedProps = solid.mergeProps(() => api().triggerProps, () => ({
2301
+ 'aria-controls': presenceApi().isUnmounted && null
2302
+ }), props);
2303
+
2304
+ // @ts-expect-error we want aria-controls to be null to remove them if the popover if lazy mounted
2093
2305
  return web.createComponent(ark.button, mergedProps);
2094
2306
  };
2095
2307
 
@@ -2136,10 +2348,15 @@ const NumberInput$1 = props => {
2136
2348
  const [useNumberInputProps, localProps] = createSplitProps()(props, ['allowMouseWheel', 'allowOverflow', 'clampValueOnBlur', 'dir', 'disabled', 'focusInputOnChange', 'form', 'formatOptions', 'getRootNode', 'id', 'ids', 'inputMode', 'invalid', 'locale', 'max', 'min', 'name', 'onFocusChange', 'onValueChange', 'onValueInvalid', 'pattern', 'readOnly', 'spinOnPress', 'step', 'translations', 'value']);
2137
2349
  const api = useNumberInput(useNumberInputProps);
2138
2350
  const mergedProps = solid.mergeProps(() => api().rootProps, localProps);
2351
+ const getChildren = () => runIfFn(localProps.children, api);
2139
2352
  return web.createComponent(NumberInputProvider, {
2140
2353
  value: api,
2141
2354
  get children() {
2142
- return web.createComponent(ark.div, mergedProps);
2355
+ return web.createComponent(ark.div, web.mergeProps(mergedProps, {
2356
+ get children() {
2357
+ return getChildren();
2358
+ }
2359
+ }));
2143
2360
  }
2144
2361
  });
2145
2362
  };
@@ -3334,18 +3551,13 @@ const [ToastProvider, useToastContext] = createContext({
3334
3551
  });
3335
3552
 
3336
3553
  const createToaster = props => {
3337
- const {
3338
- placement,
3339
- ...rest
3340
- } = props;
3341
3554
  const service = toast__namespace.group.machine({
3342
3555
  id: '1',
3343
- placement,
3344
- ...rest
3556
+ ...props
3345
3557
  }).start();
3346
3558
  const [state, send] = solid.useActor(service);
3347
3559
  const api = solidJs.createMemo(() => toast__namespace.group.connect(state, send, solid.normalizeProps));
3348
- const Toaster = props => {
3560
+ const Toaster = toasterProps => {
3349
3561
  const getRootNode = useEnvironmentContext();
3350
3562
  solidJs.createEffect(() => {
3351
3563
  service.setContext({
@@ -3354,13 +3566,13 @@ const createToaster = props => {
3354
3566
  solidJs.onCleanup(() => service.stop());
3355
3567
  });
3356
3568
  const mergedProps = solid.mergeProps(() => api().getGroupProps({
3357
- placement
3358
- }), props);
3569
+ placement: props.placement
3570
+ }), toasterProps);
3359
3571
  return web.createComponent(ark.ol, web.mergeProps(mergedProps, {
3360
3572
  get children() {
3361
3573
  return web.createComponent(solidJs.Index, {
3362
3574
  get each() {
3363
- return api().toastsByPlacement[placement];
3575
+ return api().toastsByPlacement[props.placement];
3364
3576
  },
3365
3577
  children: toast => web.createComponent(ToastProviderFactory, {
3366
3578
  get service() {
@@ -3375,11 +3587,9 @@ const createToaster = props => {
3375
3587
  };
3376
3588
  const ToastProviderFactory = props => {
3377
3589
  const [state, send] = solid.useActor(props.service);
3378
- const api = toast__namespace.connect(state, send, solid.normalizeProps);
3590
+ const api = solidJs.createMemo(() => toast__namespace.connect(state, send, solid.normalizeProps));
3379
3591
  return web.createComponent(ToastProvider, {
3380
- get value() {
3381
- return solidJs.createMemo(() => api);
3382
- },
3592
+ value: api,
3383
3593
  get children() {
3384
3594
  return state.context.render?.(api);
3385
3595
  }
@@ -3583,14 +3793,18 @@ exports.ColorPickerChannelSliderTrack = ColorPickerChannelSliderTrack;
3583
3793
  exports.ColorPickerContent = ColorPickerContent;
3584
3794
  exports.ColorPickerControl = ColorPickerControl;
3585
3795
  exports.ColorPickerEyeDropperTrigger = ColorPickerEyeDropperTrigger;
3796
+ exports.ColorPickerFormatSelect = ColorPickerFormatSelect;
3797
+ exports.ColorPickerFormatTrigger = ColorPickerFormatTrigger;
3586
3798
  exports.ColorPickerLabel = ColorPickerLabel;
3587
3799
  exports.ColorPickerPositioner = ColorPickerPositioner;
3588
3800
  exports.ColorPickerSwatch = ColorPickerSwatch;
3589
3801
  exports.ColorPickerSwatchGroup = ColorPickerSwatchGroup;
3802
+ exports.ColorPickerSwatchIndicator = ColorPickerSwatchIndicator;
3590
3803
  exports.ColorPickerSwatchTrigger = ColorPickerSwatchTrigger;
3591
3804
  exports.ColorPickerTransparencyGrid = ColorPickerTransparencyGrid;
3592
3805
  exports.ColorPickerTrigger = ColorPickerTrigger;
3593
3806
  exports.ColorPickerValueText = ColorPickerValueText;
3807
+ exports.ColorPickerView = ColorPickerView;
3594
3808
  exports.Combobox = Combobox;
3595
3809
  exports.ComboboxClearTrigger = ComboboxClearTrigger;
3596
3810
  exports.ComboboxContent = ComboboxContent;
@@ -3645,6 +3859,16 @@ exports.EditableLabel = EditableLabel;
3645
3859
  exports.EditablePreview = EditablePreview;
3646
3860
  exports.EditableSubmitTrigger = EditableSubmitTrigger;
3647
3861
  exports.Environment = Environment;
3862
+ exports.FileUpload = FileUpload;
3863
+ exports.FileUploadDropzone = FileUploadDropzone;
3864
+ exports.FileUploadItem = FileUploadItem;
3865
+ exports.FileUploadItemDeleteTrigger = FileUploadItemDeleteTrigger;
3866
+ exports.FileUploadItemGroup = FileUploadItemGroup;
3867
+ exports.FileUploadItemName = FileUploadItemName;
3868
+ exports.FileUploadItemPreview = FileUploadItemPreview;
3869
+ exports.FileUploadItemSizeText = FileUploadItemSizeText;
3870
+ exports.FileUploadLabel = FileUploadLabel;
3871
+ exports.FileUploadTrigger = FileUploadTrigger;
3648
3872
  exports.HoverCard = HoverCard;
3649
3873
  exports.HoverCardArrow = HoverCardArrow;
3650
3874
  exports.HoverCardArrowTip = HoverCardArrowTip;
@@ -3784,6 +4008,7 @@ exports.useDatePickerViewContext = useDatePickerViewContext;
3784
4008
  exports.useDialogContext = useDialogContext;
3785
4009
  exports.useEditableContext = useEditableContext;
3786
4010
  exports.useEnvironmentContext = useEnvironmentContext;
4011
+ exports.useFileUploadContext = useFileUploadContext;
3787
4012
  exports.useHoverCardContext = useHoverCardContext;
3788
4013
  exports.useMenuContext = useMenuContext;
3789
4014
  exports.useNumberInputContext = useNumberInputContext;