@ark-ui/solid 1.0.1 → 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 (59) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/README.md +43 -40
  3. package/cjs/index.js +243 -31
  4. package/cjs/index.js.map +1 -1
  5. package/esm/index.js +228 -32
  6. package/esm/index.js.map +1 -1
  7. package/package.json +43 -40
  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-close-trigger.jsx +1 -1
  17. package/source/file-upload/file-upload-context.js +5 -0
  18. package/source/file-upload/file-upload-dropzone.jsx +11 -0
  19. package/source/file-upload/file-upload-item-context.js +5 -0
  20. package/source/file-upload/file-upload-item-delete-trigger.jsx +10 -0
  21. package/source/file-upload/file-upload-item-group.jsx +10 -0
  22. package/source/file-upload/file-upload-item-name.jsx +12 -0
  23. package/source/file-upload/file-upload-item-preview.jsx +19 -0
  24. package/source/file-upload/file-upload-item-size-text.jsx +12 -0
  25. package/source/file-upload/file-upload-item.jsx +15 -0
  26. package/source/file-upload/file-upload-label.jsx +8 -0
  27. package/source/file-upload/file-upload-trigger.jsx +8 -0
  28. package/source/file-upload/file-upload.jsx +30 -0
  29. package/source/file-upload/index.js +24 -0
  30. package/source/file-upload/use-file-upload.js +10 -0
  31. package/source/index.jsx +1 -0
  32. package/source/number-input/number-input.jsx +4 -2
  33. package/source/toast/create-toaster.jsx +6 -7
  34. package/types/color-picker/color-picker-format-select.d.ts +4 -0
  35. package/types/color-picker/color-picker-format-trigger.d.ts +4 -0
  36. package/types/color-picker/color-picker-swatch-context.d.ts +4 -0
  37. package/types/color-picker/color-picker-swatch-indicator.d.ts +4 -0
  38. package/types/color-picker/color-picker-swatch-trigger.d.ts +1 -5
  39. package/types/color-picker/color-picker-transparency-grid.d.ts +2 -5
  40. package/types/color-picker/index.d.ts +10 -3
  41. package/types/color-picker/use-color-picker.d.ts +3 -0
  42. package/types/file-upload/file-upload-context.d.ts +4 -0
  43. package/types/file-upload/file-upload-dropzone.d.ts +4 -0
  44. package/types/file-upload/file-upload-item-context.d.ts +4 -0
  45. package/types/file-upload/file-upload-item-delete-trigger.d.ts +4 -0
  46. package/types/file-upload/file-upload-item-group.d.ts +8 -0
  47. package/types/file-upload/file-upload-item-name.d.ts +4 -0
  48. package/types/file-upload/file-upload-item-preview.d.ts +4 -0
  49. package/types/file-upload/file-upload-item-size-text.d.ts +4 -0
  50. package/types/file-upload/file-upload-item.d.ts +6 -0
  51. package/types/file-upload/file-upload-label.d.ts +4 -0
  52. package/types/file-upload/file-upload-trigger.d.ts +4 -0
  53. package/types/file-upload/file-upload.d.ts +9 -0
  54. package/types/file-upload/index.d.ts +25 -0
  55. package/types/file-upload/use-file-upload.d.ts +9 -0
  56. package/types/index.d.ts +1 -0
  57. package/types/number-input/number-input.d.ts +6 -3
  58. package/types/toast/create-toaster.d.ts +3 -2
  59. package/types/toast/toast-context.d.ts +7 -2
package/CHANGELOG.md CHANGED
@@ -6,6 +6,52 @@ description: All notable changes to this project will be documented in this file
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [1.1.0] - 2023-11-21
10
+
11
+ ### Added
12
+
13
+ - Added render function to the `NumberInput` component
14
+ - Added `FileUpload` component
15
+
16
+ ## Changed
17
+
18
+ - Revised the `ColorPicker` component. Check out the [documentation](https://ark-ui.com/docs/components/color-picker) for more information.
19
+
20
+ ### Fixed
21
+
22
+ - Resolved a problem where the `Dialog.CloseTrigger` was assigned to the wrong `data-part`.
23
+ - Fixed various issues for the `Toast` component that were caused by the API not being wrapped in an `Accessor`.
24
+
25
+ ```jsx
26
+ // before
27
+ const [Toaster, toast] = createToaster({
28
+ placement: 'top-end',
29
+ render(toast) {
30
+ return (
31
+ <Toast.Root>
32
+ <Toast.Title>{toast.title}</Toast.Title>
33
+ <Toast.Description>{toast.description}</Toast.Description>
34
+ <Toast.CloseTrigger>Close</Toast.CloseTrigger>
35
+ </Toast.Root>
36
+ )
37
+ },
38
+ })
39
+
40
+ // after
41
+ const [Toaster, toast] = createToaster({
42
+ placement: 'top-end',
43
+ render(toast) {
44
+ return (
45
+ <Toast.Root>
46
+ <Toast.Title>{toast().title}</Toast.Title>
47
+ <Toast.Description>{toast().description}</Toast.Description>
48
+ <Toast.CloseTrigger>Close</Toast.CloseTrigger>
49
+ </Toast.Root>
50
+ )
51
+ },
52
+ })
53
+ ```
54
+
9
55
  ## [1.0.1] - 2023-11-10
10
56
 
11
57
  ### Fixed
@@ -200,3 +246,7 @@ With the release of version 1.0.0, we are moving towards a more stable version o
200
246
  [0.10.0]: https://github.com/chakra-ui/ark/releases/tag/@ark-ui/solid@0.10.0
201
247
  [0.10.1]: https://github.com/chakra-ui/ark/releases/tag/@ark-ui/solid@0.10.1
202
248
  [0.11.0]: https://github.com/chakra-ui/ark/releases/tag/@ark-ui/solid@0.11.0
249
+
250
+ ```
251
+
252
+ ```
package/README.md CHANGED
@@ -1,47 +1,46 @@
1
- # @ark-ui/solid
1
+ # Welcome to Ark UI
2
2
 
3
- `@ark-ui/solid` is an open-source UI component library designed to make building high-quality, accessible web applications easier. The library focuses on providing low-level UI components with an emphasis on accessibility, customization, and developer experience.
3
+ Ark UI is a headless, open-source UI library with over 30+ components designed for building reusable, scalable Design Systems. It supports a wide range of JavaScript frameworks, offering dedciated packages for each supported framework.
4
4
 
5
- ## Key Features
5
+ ## Supported Frameworks
6
6
 
7
- - **Accessible**: Components in Ark UI are designed with accessibility in mind, adhering to WAI-ARIA design patterns and handling implementation details such as aria and role attributes, focus management, and keyboard navigation.
8
- - **Headless**: Components are shipped without styles, giving developers full control over styling.
9
- - **Customizable**: The open component architecture allows for customization and customization, providing granular access to each component part.
10
- - **Powered by state machines**: Predictable, simplified, and robust component behavior.
11
- - **Developer Experience**: The library provides a fully-typed API with a consistent and predictable experience.
7
+ Ark UI is available for the following JavaScript frameworks:
8
+
9
+ - **React**: `@ark-ui/react`
10
+ - **Solid**: `@ark-ui/solid`
11
+ - **Vue**: `@ark-ui/vue`
12
12
 
13
13
  ## Available Components
14
14
 
15
- At the moment, `@ark-ui/solid`offers the following components:
16
-
17
- - [Accordion](https://ark-ui.com/docs/solid/components/accordion)
18
- - [Avatar](https://ark-ui.com/docs/solid/components/avatar)
19
- - [Carousel](https://ark-ui.com/docs/solid/components/carousel)
20
- - [Checkbox](https://ark-ui.com/docs/solid/components/checkbox)
21
- - [Color Picker](https://ark-ui.com/docs/solid/components/color-picker)
22
- - [Combobox](https://ark-ui.com/docs/solid/components/combobox)
23
- - [Date Picker](https://ark-ui.com/docs/solid/components/date-picker)
24
- - [Dialog](https://ark-ui.com/docs/solid/components/dialog)
25
- - [Editable](https://ark-ui.com/docs/solid/components/editable)
26
- - [Hover Card](https://ark-ui.com/docs/solid/components/hover-card)
27
- - [Menu](https://ark-ui.com/docs/solid/components/menu)
28
- - [Number Input](https://ark-ui.com/docs/solid/components/number-input)
29
- - [Pagination](https://ark-ui.com/docs/solid/components/pagination)
30
- - [Pin Input](https://ark-ui.com/docs/solid/components/pin-input)
31
- - [Popover](https://ark-ui.com/docs/solid/components/popover)
32
- - [Pressable](https://ark-ui.com/docs/solid/components/pressable)
33
- - [Radio Group](https://ark-ui.com/docs/solid/components/radio-group)
34
- - [Range Slider](https://ark-ui.com/docs/solid/components/range-slider)
35
- - [Rating Group](https://ark-ui.com/docs/solid/components/rating-group)
36
- - [Segment Group](https://ark-ui.com/docs/solid/components/segment-group)
37
- - [Select](https://ark-ui.com/docs/solid/components/select)
38
- - [Slider](https://ark-ui.com/docs/solid/components/slider)
39
- - [Splitter](https://ark-ui.com/docs/solid/components/splitter)
40
- - [Switch](https://ark-ui.com/docs/solid/components/switch)
41
- - [Tabs](https://ark-ui.com/docs/solid/components/tabs)
42
- - [Tags Input](https://ark-ui.com/docs/solid/components/tags-input)
43
- - [Toast](https://ark-ui.com/docs/solid/components/toast)
44
- - [Tooltip](https://ark-ui.com/docs/solid/components/tooltip)
15
+ - [Accordion](https://ark-ui.com/docs/components/accordion)
16
+ - [Avatar](https://ark-ui.com/docs/components/avatar)
17
+ - [Carousel](https://ark-ui.com/docs/components/carousel)
18
+ - [Checkbox](https://ark-ui.com/docs/components/checkbox)
19
+ - [Color Picker](https://ark-ui.com/docs/components/color-picker)
20
+ - [Combobox](https://ark-ui.com/docs/components/combobox)
21
+ - [Date Picker](https://ark-ui.com/docs/components/date-picker)
22
+ - [Dialog](https://ark-ui.com/docs/components/dialog)
23
+ - [Editable](https://ark-ui.com/docs/components/editable)
24
+ - [File Upload](https://ark-ui.com/docs/components/file-upload)
25
+ - [Hover Card](https://ark-ui.com/docs/components/hover-card)
26
+ - [Menu](https://ark-ui.com/docs/components/menu)
27
+ - [Number Input](https://ark-ui.com/docs/components/number-input)
28
+ - [Pagination](https://ark-ui.com/docs/components/pagination)
29
+ - [Pin Input](https://ark-ui.com/docs/components/pin-input)
30
+ - [Popover](https://ark-ui.com/docs/components/popover)
31
+ - [Radio Group](https://ark-ui.com/docs/components/radio-group)
32
+ - [Range Slider](https://ark-ui.com/docs/components/slider)
33
+ - [Rating Group](https://ark-ui.com/docs/components/rating-group)
34
+ - [Segment Group](https://ark-ui.com/docs/components/segment-group)
35
+ - [Select](https://ark-ui.com/docs/components/select)
36
+ - [Slider](https://ark-ui.com/docs/components/slider)
37
+ - [Splitter](https://ark-ui.com/docs/components/splitter)
38
+ - [Switch](https://ark-ui.com/docs/components/switch)
39
+ - [Tabs](https://ark-ui.com/docs/components/tabs)
40
+ - [Tags Input](https://ark-ui.com/docs/components/tags-input)
41
+ - [Toast](https://ark-ui.com/docs/components/toast)
42
+ - [Toggle Group](https://ark-ui.com/docs/components/toggle-group)
43
+ - [Tooltip](https://ark-ui.com/docs/components/tooltip)
45
44
 
46
45
  ## Installation
47
46
 
@@ -95,10 +94,14 @@ export const MySlider = () => {
95
94
 
96
95
  For more detailed documentation and examples, please visit the [official documentation](https://ark-ui.com/).
97
96
 
97
+ ## Roadmap
98
+
99
+ You can request, vote for, and check upcoming features on our [roadmap](https://ark-ui.canny.io/).
100
+
98
101
  ## Contribution
99
102
 
100
- We welcome contributions to `@ark-ui/solid`. Please read our [contributing guidelines](https://github.com/chakra-ui/ark/blob/main/CONTRIBUTING.md) for more information on how to contribute.
103
+ We welcome contributions to Ark UI. Please read our [contributing guidelines](https://github.com/chakra-ui/ark/blob/main/CONTRIBUTING.md) for more information on how to contribute.
101
104
 
102
- ## Licence
105
+ ## License
103
106
 
104
107
  This project is licensed under the terms of the [MIT license](https://github.com/chakra-ui/ark/blob/main/LICENSE).
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$;
@@ -1680,7 +1728,7 @@ const DialogBackdrop = props => {
1680
1728
 
1681
1729
  const DialogCloseTrigger = props => {
1682
1730
  const dialog = useDialogContext();
1683
- const mergedProps = solid.mergeProps(() => dialog().triggerProps, props);
1731
+ const mergedProps = solid.mergeProps(() => dialog().closeTriggerProps, props);
1684
1732
  return web.createComponent(ark.button, mergedProps);
1685
1733
  };
1686
1734
 
@@ -1841,6 +1889,157 @@ const Editable = Object.assign(Editable$1, {
1841
1889
  SubmitTrigger: EditableSubmitTrigger
1842
1890
  });
1843
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
+
1844
2043
  const [HoverCardProvider, useHoverCardContext] = createContext({
1845
2044
  hookName: 'useHoverCardContext',
1846
2045
  providerName: '<HoverCardProvider />'
@@ -2149,10 +2348,15 @@ const NumberInput$1 = props => {
2149
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']);
2150
2349
  const api = useNumberInput(useNumberInputProps);
2151
2350
  const mergedProps = solid.mergeProps(() => api().rootProps, localProps);
2351
+ const getChildren = () => runIfFn(localProps.children, api);
2152
2352
  return web.createComponent(NumberInputProvider, {
2153
2353
  value: api,
2154
2354
  get children() {
2155
- return web.createComponent(ark.div, mergedProps);
2355
+ return web.createComponent(ark.div, web.mergeProps(mergedProps, {
2356
+ get children() {
2357
+ return getChildren();
2358
+ }
2359
+ }));
2156
2360
  }
2157
2361
  });
2158
2362
  };
@@ -3347,18 +3551,13 @@ const [ToastProvider, useToastContext] = createContext({
3347
3551
  });
3348
3552
 
3349
3553
  const createToaster = props => {
3350
- const {
3351
- placement,
3352
- ...rest
3353
- } = props;
3354
3554
  const service = toast__namespace.group.machine({
3355
3555
  id: '1',
3356
- placement,
3357
- ...rest
3556
+ ...props
3358
3557
  }).start();
3359
3558
  const [state, send] = solid.useActor(service);
3360
3559
  const api = solidJs.createMemo(() => toast__namespace.group.connect(state, send, solid.normalizeProps));
3361
- const Toaster = props => {
3560
+ const Toaster = toasterProps => {
3362
3561
  const getRootNode = useEnvironmentContext();
3363
3562
  solidJs.createEffect(() => {
3364
3563
  service.setContext({
@@ -3367,13 +3566,13 @@ const createToaster = props => {
3367
3566
  solidJs.onCleanup(() => service.stop());
3368
3567
  });
3369
3568
  const mergedProps = solid.mergeProps(() => api().getGroupProps({
3370
- placement
3371
- }), props);
3569
+ placement: props.placement
3570
+ }), toasterProps);
3372
3571
  return web.createComponent(ark.ol, web.mergeProps(mergedProps, {
3373
3572
  get children() {
3374
3573
  return web.createComponent(solidJs.Index, {
3375
3574
  get each() {
3376
- return api().toastsByPlacement[placement];
3575
+ return api().toastsByPlacement[props.placement];
3377
3576
  },
3378
3577
  children: toast => web.createComponent(ToastProviderFactory, {
3379
3578
  get service() {
@@ -3388,11 +3587,9 @@ const createToaster = props => {
3388
3587
  };
3389
3588
  const ToastProviderFactory = props => {
3390
3589
  const [state, send] = solid.useActor(props.service);
3391
- const api = toast__namespace.connect(state, send, solid.normalizeProps);
3590
+ const api = solidJs.createMemo(() => toast__namespace.connect(state, send, solid.normalizeProps));
3392
3591
  return web.createComponent(ToastProvider, {
3393
- get value() {
3394
- return solidJs.createMemo(() => api);
3395
- },
3592
+ value: api,
3396
3593
  get children() {
3397
3594
  return state.context.render?.(api);
3398
3595
  }
@@ -3596,14 +3793,18 @@ exports.ColorPickerChannelSliderTrack = ColorPickerChannelSliderTrack;
3596
3793
  exports.ColorPickerContent = ColorPickerContent;
3597
3794
  exports.ColorPickerControl = ColorPickerControl;
3598
3795
  exports.ColorPickerEyeDropperTrigger = ColorPickerEyeDropperTrigger;
3796
+ exports.ColorPickerFormatSelect = ColorPickerFormatSelect;
3797
+ exports.ColorPickerFormatTrigger = ColorPickerFormatTrigger;
3599
3798
  exports.ColorPickerLabel = ColorPickerLabel;
3600
3799
  exports.ColorPickerPositioner = ColorPickerPositioner;
3601
3800
  exports.ColorPickerSwatch = ColorPickerSwatch;
3602
3801
  exports.ColorPickerSwatchGroup = ColorPickerSwatchGroup;
3802
+ exports.ColorPickerSwatchIndicator = ColorPickerSwatchIndicator;
3603
3803
  exports.ColorPickerSwatchTrigger = ColorPickerSwatchTrigger;
3604
3804
  exports.ColorPickerTransparencyGrid = ColorPickerTransparencyGrid;
3605
3805
  exports.ColorPickerTrigger = ColorPickerTrigger;
3606
3806
  exports.ColorPickerValueText = ColorPickerValueText;
3807
+ exports.ColorPickerView = ColorPickerView;
3607
3808
  exports.Combobox = Combobox;
3608
3809
  exports.ComboboxClearTrigger = ComboboxClearTrigger;
3609
3810
  exports.ComboboxContent = ComboboxContent;
@@ -3658,6 +3859,16 @@ exports.EditableLabel = EditableLabel;
3658
3859
  exports.EditablePreview = EditablePreview;
3659
3860
  exports.EditableSubmitTrigger = EditableSubmitTrigger;
3660
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;
3661
3872
  exports.HoverCard = HoverCard;
3662
3873
  exports.HoverCardArrow = HoverCardArrow;
3663
3874
  exports.HoverCardArrowTip = HoverCardArrowTip;
@@ -3797,6 +4008,7 @@ exports.useDatePickerViewContext = useDatePickerViewContext;
3797
4008
  exports.useDialogContext = useDialogContext;
3798
4009
  exports.useEditableContext = useEditableContext;
3799
4010
  exports.useEnvironmentContext = useEnvironmentContext;
4011
+ exports.useFileUploadContext = useFileUploadContext;
3800
4012
  exports.useHoverCardContext = useHoverCardContext;
3801
4013
  exports.useMenuContext = useMenuContext;
3802
4014
  exports.useNumberInputContext = useNumberInputContext;