@ark-ui/solid 3.4.1 → 3.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (233) hide show
  1. package/README.md +3 -0
  2. package/dist/cjs/index.js +774 -37
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/esm/index.js +654 -34
  5. package/dist/esm/index.js.map +1 -1
  6. package/dist/source/components/accordion/accordion.anatomy.js +1 -0
  7. package/dist/source/components/accordion/index.js +1 -0
  8. package/dist/source/components/avatar/avatar.anatomy.js +1 -0
  9. package/dist/source/components/avatar/index.js +1 -0
  10. package/dist/source/components/carousel/carousel-control.jsx +1 -1
  11. package/dist/source/components/carousel/carousel.anatomy.js +2 -0
  12. package/dist/source/components/carousel/index.js +1 -0
  13. package/dist/source/components/checkbox/checkbox-group.jsx +1 -1
  14. package/dist/source/components/checkbox/checkbox.anatomy.js +2 -0
  15. package/dist/source/components/checkbox/index.js +1 -0
  16. package/dist/source/components/clipboard/clipboard.anatomy.js +1 -0
  17. package/dist/source/components/clipboard/index.js +1 -0
  18. package/dist/source/components/collapsible/collapsible.anatomy.js +1 -0
  19. package/dist/source/components/collapsible/index.js +1 -0
  20. package/dist/source/components/color-picker/color-picker-value-text.jsx +3 -4
  21. package/dist/source/components/color-picker/color-picker-view.jsx +1 -1
  22. package/dist/source/components/color-picker/color-picker.anatomy.js +2 -0
  23. package/dist/source/components/color-picker/index.js +1 -0
  24. package/dist/source/components/combobox/combobox.anatomy.js +1 -0
  25. package/dist/source/components/combobox/index.js +1 -0
  26. package/dist/source/components/date-picker/date-picker-view.jsx +1 -1
  27. package/dist/source/components/date-picker/date-picker.anatomy.js +2 -0
  28. package/dist/source/components/date-picker/index.js +1 -0
  29. package/dist/source/components/dialog/dialog.anatomy.js +1 -0
  30. package/dist/source/components/dialog/index.js +1 -0
  31. package/dist/source/components/editable/editable.anatomy.js +1 -0
  32. package/dist/source/components/editable/index.js +1 -0
  33. package/dist/source/components/field/field.anatomy.js +3 -0
  34. package/dist/source/components/field/index.js +1 -0
  35. package/dist/source/components/field/use-field.js +6 -5
  36. package/dist/source/components/fieldset/fieldset-context.jsx +2 -0
  37. package/dist/source/components/fieldset/fieldset-error-text.jsx +11 -0
  38. package/dist/source/components/fieldset/fieldset-helper-text.jsx +8 -0
  39. package/dist/source/components/fieldset/fieldset-legend.jsx +8 -0
  40. package/dist/source/components/fieldset/fieldset-root-provider.jsx +11 -0
  41. package/dist/source/components/fieldset/fieldset-root.jsx +18 -0
  42. package/dist/source/components/fieldset/fieldset.anatomy.js +3 -0
  43. package/dist/source/components/fieldset/fieldset.jsx +6 -0
  44. package/dist/source/components/fieldset/index.js +9 -0
  45. package/dist/source/components/fieldset/use-fieldset-context.js +6 -0
  46. package/dist/source/components/fieldset/use-fieldset.js +65 -0
  47. package/dist/source/components/file-upload/file-upload.anatomy.js +1 -0
  48. package/dist/source/components/file-upload/index.js +1 -0
  49. package/dist/source/components/highlight/highlight.jsx +20 -0
  50. package/dist/source/components/highlight/index.js +2 -0
  51. package/dist/source/components/highlight/use-highlight.js +42 -0
  52. package/dist/source/components/hover-card/hover-card.anatomy.js +1 -0
  53. package/dist/source/components/hover-card/index.js +1 -0
  54. package/dist/source/components/index.js +3 -0
  55. package/dist/source/components/menu/index.js +1 -0
  56. package/dist/source/components/menu/menu.anatomy.js +1 -0
  57. package/dist/source/components/number-input/index.js +2 -0
  58. package/dist/source/components/number-input/number-input-value-text.jsx +8 -0
  59. package/dist/source/components/number-input/number-input.anatomy.js +1 -0
  60. package/dist/source/components/number-input/number-input.js +1 -0
  61. package/dist/source/components/pagination/index.js +1 -0
  62. package/dist/source/components/pagination/pagination.anatomy.js +1 -0
  63. package/dist/source/components/pin-input/index.js +1 -0
  64. package/dist/source/components/pin-input/pin-input.anatomy.js +1 -0
  65. package/dist/source/components/popover/index.js +1 -0
  66. package/dist/source/components/popover/popover.anatomy.js +1 -0
  67. package/dist/source/components/progress/index.js +1 -0
  68. package/dist/source/components/progress/progress.anatomy.js +1 -0
  69. package/dist/source/components/qr-code/index.js +1 -0
  70. package/dist/source/components/qr-code/qr-code.anatomy.js +1 -0
  71. package/dist/source/components/radio-group/index.js +1 -0
  72. package/dist/source/components/radio-group/radio-group.anatomy.js +1 -0
  73. package/dist/source/components/rating-group/index.js +1 -0
  74. package/dist/source/components/rating-group/rating-group.anatomy.js +1 -0
  75. package/dist/source/components/segment-group/index.js +1 -0
  76. package/dist/source/components/segment-group/segment-group-indicator.jsx +2 -2
  77. package/dist/source/components/segment-group/segment-group-item-control.jsx +2 -2
  78. package/dist/source/components/segment-group/segment-group-item-text.jsx +2 -2
  79. package/dist/source/components/segment-group/segment-group-item.jsx +2 -2
  80. package/dist/source/components/segment-group/segment-group-label.jsx +2 -2
  81. package/dist/source/components/segment-group/segment-group-root-provider.jsx +2 -2
  82. package/dist/source/components/segment-group/segment-group-root.jsx +2 -2
  83. package/dist/source/components/segment-group/segment-group.anatomy.js +3 -0
  84. package/dist/source/components/select/index.js +1 -0
  85. package/dist/source/components/select/select-hidden-select.jsx +1 -1
  86. package/dist/source/components/select/select-value-text.jsx +1 -2
  87. package/dist/source/components/select/select.anatomy.js +1 -0
  88. package/dist/source/components/signature-pad/index.js +1 -0
  89. package/dist/source/components/signature-pad/signature-pad.anatomy.js +1 -0
  90. package/dist/source/components/slider/index.js +1 -0
  91. package/dist/source/components/slider/slider.anatomy.js +1 -0
  92. package/dist/source/components/splitter/index.js +1 -0
  93. package/dist/source/components/splitter/splitter.anatomy.js +1 -0
  94. package/dist/source/components/switch/index.js +1 -0
  95. package/dist/source/components/switch/switch.anatomy.js +1 -0
  96. package/dist/source/components/tabs/index.js +1 -0
  97. package/dist/source/components/tabs/tabs.anatomy.js +1 -0
  98. package/dist/source/components/tags-input/index.js +1 -0
  99. package/dist/source/components/tags-input/tags-input.anatomy.js +1 -0
  100. package/dist/source/components/time-picker/index.js +16 -0
  101. package/dist/source/components/time-picker/time-picker-cell.jsx +18 -0
  102. package/dist/source/components/time-picker/time-picker-clear-trigger.jsx +8 -0
  103. package/dist/source/components/time-picker/time-picker-column.jsx +13 -0
  104. package/dist/source/components/time-picker/time-picker-content.jsx +13 -0
  105. package/dist/source/components/time-picker/time-picker-context.jsx +2 -0
  106. package/dist/source/components/time-picker/time-picker-control.jsx +8 -0
  107. package/dist/source/components/time-picker/time-picker-input.jsx +8 -0
  108. package/dist/source/components/time-picker/time-picker-label.jsx +8 -0
  109. package/dist/source/components/time-picker/time-picker-positioner.jsx +13 -0
  110. package/dist/source/components/time-picker/time-picker-root-provider.jsx +16 -0
  111. package/dist/source/components/time-picker/time-picker-root.jsx +39 -0
  112. package/dist/source/components/time-picker/time-picker-spacer.jsx +8 -0
  113. package/dist/source/components/time-picker/time-picker-trigger.jsx +8 -0
  114. package/dist/source/components/time-picker/time-picker.js +13 -0
  115. package/dist/source/components/time-picker/use-time-picker-column-props-context.js +5 -0
  116. package/dist/source/components/time-picker/use-time-picker-context.js +5 -0
  117. package/dist/source/components/time-picker/use-time-picker.js +23 -0
  118. package/dist/source/components/toast/index.js +1 -0
  119. package/dist/source/components/toast/toast.anatomy.js +1 -0
  120. package/dist/source/components/toggle-group/index.js +1 -0
  121. package/dist/source/components/toggle-group/toggle-group.anatomy.js +1 -0
  122. package/dist/source/components/tooltip/index.js +1 -0
  123. package/dist/source/components/tooltip/tooltip-root.jsx +1 -0
  124. package/dist/source/components/tooltip/tooltip.anatomy.js +1 -0
  125. package/dist/source/components/tree-view/index.js +1 -0
  126. package/dist/source/components/tree-view/tree-view.anatomy.js +1 -0
  127. package/dist/types/components/accordion/accordion.anatomy.d.ts +1 -0
  128. package/dist/types/components/accordion/index.d.ts +7 -6
  129. package/dist/types/components/avatar/avatar.anatomy.d.ts +1 -0
  130. package/dist/types/components/avatar/index.d.ts +1 -0
  131. package/dist/types/components/carousel/carousel.anatomy.d.ts +1 -0
  132. package/dist/types/components/carousel/index.d.ts +1 -0
  133. package/dist/types/components/checkbox/checkbox.anatomy.d.ts +1 -0
  134. package/dist/types/components/checkbox/index.d.ts +1 -0
  135. package/dist/types/components/clipboard/clipboard.anatomy.d.ts +1 -0
  136. package/dist/types/components/clipboard/index.d.ts +1 -0
  137. package/dist/types/components/collapsible/collapsible.anatomy.d.ts +1 -0
  138. package/dist/types/components/collapsible/index.d.ts +1 -0
  139. package/dist/types/components/color-picker/color-picker.anatomy.d.ts +1 -0
  140. package/dist/types/components/color-picker/index.d.ts +1 -0
  141. package/dist/types/components/combobox/combobox.anatomy.d.ts +1 -0
  142. package/dist/types/components/combobox/index.d.ts +1 -0
  143. package/dist/types/components/date-picker/date-picker.anatomy.d.ts +1 -0
  144. package/dist/types/components/date-picker/index.d.ts +1 -0
  145. package/dist/types/components/dialog/dialog-root.d.ts +1 -1
  146. package/dist/types/components/dialog/dialog.anatomy.d.ts +1 -0
  147. package/dist/types/components/dialog/index.d.ts +1 -0
  148. package/dist/types/components/editable/editable.anatomy.d.ts +1 -0
  149. package/dist/types/components/editable/index.d.ts +1 -0
  150. package/dist/types/components/field/field.anatomy.d.ts +2 -0
  151. package/dist/types/components/field/index.d.ts +1 -0
  152. package/dist/types/components/fieldset/fieldset-context.d.ts +6 -0
  153. package/dist/types/components/fieldset/fieldset-error-text.d.ts +6 -0
  154. package/dist/types/components/fieldset/fieldset-helper-text.d.ts +6 -0
  155. package/dist/types/components/fieldset/fieldset-legend.d.ts +6 -0
  156. package/dist/types/components/fieldset/fieldset-root-provider.d.ts +11 -0
  157. package/dist/types/components/fieldset/fieldset-root.d.ts +10 -0
  158. package/dist/types/components/fieldset/fieldset.anatomy.d.ts +2 -0
  159. package/dist/types/components/fieldset/fieldset.d.ts +6 -0
  160. package/dist/types/components/fieldset/index.d.ts +9 -0
  161. package/dist/types/components/fieldset/use-fieldset-context.d.ts +4 -0
  162. package/dist/types/components/fieldset/use-fieldset.d.ts +49 -0
  163. package/dist/types/components/file-upload/file-upload.anatomy.d.ts +1 -0
  164. package/dist/types/components/file-upload/index.d.ts +1 -0
  165. package/dist/types/components/highlight/highlight.d.ts +8 -0
  166. package/dist/types/components/highlight/index.d.ts +2 -0
  167. package/dist/types/components/highlight/use-highlight.d.ts +31 -0
  168. package/dist/types/components/hover-card/hover-card.anatomy.d.ts +1 -0
  169. package/dist/types/components/hover-card/index.d.ts +1 -0
  170. package/dist/types/components/index.d.ts +3 -0
  171. package/dist/types/components/menu/index.d.ts +1 -0
  172. package/dist/types/components/menu/menu.anatomy.d.ts +1 -0
  173. package/dist/types/components/number-input/index.d.ts +10 -8
  174. package/dist/types/components/number-input/number-input-value-text.d.ts +6 -0
  175. package/dist/types/components/number-input/number-input.anatomy.d.ts +1 -0
  176. package/dist/types/components/number-input/number-input.d.ts +9 -8
  177. package/dist/types/components/pagination/index.d.ts +1 -0
  178. package/dist/types/components/pagination/pagination.anatomy.d.ts +1 -0
  179. package/dist/types/components/pin-input/index.d.ts +1 -0
  180. package/dist/types/components/pin-input/pin-input.anatomy.d.ts +1 -0
  181. package/dist/types/components/popover/index.d.ts +1 -0
  182. package/dist/types/components/popover/popover.anatomy.d.ts +1 -0
  183. package/dist/types/components/progress/index.d.ts +1 -0
  184. package/dist/types/components/progress/progress.anatomy.d.ts +1 -0
  185. package/dist/types/components/qr-code/index.d.ts +1 -0
  186. package/dist/types/components/qr-code/qr-code.anatomy.d.ts +1 -0
  187. package/dist/types/components/radio-group/index.d.ts +1 -0
  188. package/dist/types/components/radio-group/radio-group.anatomy.d.ts +1 -0
  189. package/dist/types/components/rating-group/index.d.ts +1 -0
  190. package/dist/types/components/rating-group/rating-group.anatomy.d.ts +1 -0
  191. package/dist/types/components/segment-group/index.d.ts +1 -0
  192. package/dist/types/components/segment-group/segment-group.anatomy.d.ts +2 -0
  193. package/dist/types/components/select/index.d.ts +1 -0
  194. package/dist/types/components/select/select.anatomy.d.ts +1 -0
  195. package/dist/types/components/signature-pad/index.d.ts +1 -0
  196. package/dist/types/components/signature-pad/signature-pad.anatomy.d.ts +1 -0
  197. package/dist/types/components/slider/index.d.ts +1 -0
  198. package/dist/types/components/slider/slider.anatomy.d.ts +1 -0
  199. package/dist/types/components/splitter/index.d.ts +1 -0
  200. package/dist/types/components/splitter/splitter.anatomy.d.ts +1 -0
  201. package/dist/types/components/switch/index.d.ts +1 -0
  202. package/dist/types/components/switch/switch.anatomy.d.ts +1 -0
  203. package/dist/types/components/tabs/index.d.ts +1 -0
  204. package/dist/types/components/tabs/tabs.anatomy.d.ts +1 -0
  205. package/dist/types/components/tags-input/index.d.ts +1 -0
  206. package/dist/types/components/tags-input/tags-input.anatomy.d.ts +1 -0
  207. package/dist/types/components/time-picker/index.d.ts +17 -0
  208. package/dist/types/components/time-picker/time-picker-cell.d.ts +12 -0
  209. package/dist/types/components/time-picker/time-picker-clear-trigger.d.ts +7 -0
  210. package/dist/types/components/time-picker/time-picker-column.d.ts +8 -0
  211. package/dist/types/components/time-picker/time-picker-content.d.ts +7 -0
  212. package/dist/types/components/time-picker/time-picker-context.d.ts +6 -0
  213. package/dist/types/components/time-picker/time-picker-control.d.ts +7 -0
  214. package/dist/types/components/time-picker/time-picker-input.d.ts +7 -0
  215. package/dist/types/components/time-picker/time-picker-label.d.ts +7 -0
  216. package/dist/types/components/time-picker/time-picker-positioner.d.ts +6 -0
  217. package/dist/types/components/time-picker/time-picker-root-provider.d.ts +12 -0
  218. package/dist/types/components/time-picker/time-picker-root.d.ts +9 -0
  219. package/dist/types/components/time-picker/time-picker-spacer.d.ts +7 -0
  220. package/dist/types/components/time-picker/time-picker-trigger.d.ts +7 -0
  221. package/dist/types/components/time-picker/time-picker.d.ts +14 -0
  222. package/dist/types/components/time-picker/use-time-picker-column-props-context.d.ts +5 -0
  223. package/dist/types/components/time-picker/use-time-picker-context.d.ts +4 -0
  224. package/dist/types/components/time-picker/use-time-picker.d.ts +31 -0
  225. package/dist/types/components/toast/index.d.ts +2 -1
  226. package/dist/types/components/toast/toast.anatomy.d.ts +1 -0
  227. package/dist/types/components/toggle-group/index.d.ts +1 -0
  228. package/dist/types/components/toggle-group/toggle-group.anatomy.d.ts +1 -0
  229. package/dist/types/components/tooltip/index.d.ts +1 -0
  230. package/dist/types/components/tooltip/tooltip.anatomy.d.ts +1 -0
  231. package/dist/types/components/tree-view/index.d.ts +1 -0
  232. package/dist/types/components/tree-view/tree-view.anatomy.d.ts +1 -0
  233. package/package.json +61 -57
@@ -0,0 +1 @@
1
+ export { anatomy as accordionAnatomy } from '@zag-js/accordion';
@@ -9,4 +9,5 @@ export { AccordionRootProvider, } from './accordion-root-provider';
9
9
  export { useAccordion } from './use-accordion';
10
10
  export { useAccordionContext } from './use-accordion-context';
11
11
  export { useAccordionItemContext } from './use-accordion-item-context';
12
+ export { accordionAnatomy } from './accordion.anatomy';
12
13
  export * as Accordion from './accordion';
@@ -0,0 +1 @@
1
+ export { anatomy as avatarAnatomy } from '@zag-js/avatar';
@@ -5,4 +5,5 @@ export { AvatarRoot, } from './avatar-root';
5
5
  export { AvatarRootProvider, } from './avatar-root-provider';
6
6
  export { useAvatar } from './use-avatar';
7
7
  export { useAvatarContext } from './use-avatar-context';
8
+ export { avatarAnatomy } from './avatar.anatomy';
8
9
  export * as Avatar from './avatar';
@@ -1,6 +1,6 @@
1
- import { carouselAnatomy } from '@ark-ui/anatomy';
2
1
  import { mergeProps } from '@zag-js/solid';
3
2
  import { ark } from '../factory';
3
+ import { carouselAnatomy } from './carousel.anatomy';
4
4
  export const CarouselControl = (props) => {
5
5
  const mergedProps = mergeProps(() => carouselAnatomy.build().control.attrs, props);
6
6
  return <ark.div {...mergedProps}/>;
@@ -0,0 +1,2 @@
1
+ import { anatomy } from '@zag-js/carousel';
2
+ export const carouselAnatomy = anatomy.extendWith('control');
@@ -11,4 +11,5 @@ export { CarouselRootProvider, } from './carousel-root-provider';
11
11
  export { CarouselViewport, } from './carousel-viewport';
12
12
  export { useCarousel } from './use-carousel';
13
13
  export { useCarouselContext } from './use-carousel-context';
14
+ export { carouselAnatomy } from './carousel.anatomy';
14
15
  export * as Carousel from './carousel';
@@ -1,6 +1,6 @@
1
- import { checkboxAnatomy } from '@ark-ui/anatomy';
2
1
  import { createSplitProps } from '../../utils/create-split-props';
3
2
  import { ark } from '../factory';
3
+ import { checkboxAnatomy } from './checkbox.anatomy';
4
4
  import { useCheckboxGroup } from './use-checkbox-group';
5
5
  import { CheckboxGroupContextProvider } from './use-checkbox-group-context';
6
6
  export const CheckboxGroup = (props) => {
@@ -0,0 +1,2 @@
1
+ import { anatomy } from '@zag-js/checkbox';
2
+ export const checkboxAnatomy = anatomy.extendWith('group');
@@ -10,4 +10,5 @@ export { useCheckbox } from './use-checkbox';
10
10
  export { useCheckboxContext } from './use-checkbox-context';
11
11
  export { useCheckboxGroup, } from './use-checkbox-group';
12
12
  export { useCheckboxGroupContext } from './use-checkbox-group-context';
13
+ export { checkboxAnatomy } from './checkbox.anatomy';
13
14
  export * as Checkbox from './checkbox';
@@ -0,0 +1 @@
1
+ export { anatomy as clipboardAnatomy } from '@zag-js/clipboard';
@@ -8,4 +8,5 @@ export { ClipboardRootProvider, } from './clipboard-root-provider';
8
8
  export { ClipboardTrigger, } from './clipboard-trigger';
9
9
  export { useClipboard } from './use-clipboard';
10
10
  export { useClipboardContext } from './use-clipboard-context';
11
+ export { clipboardAnatomy } from './clipboard.anatomy';
11
12
  export * as Clipboard from './clipboard';
@@ -0,0 +1 @@
1
+ export { anatomy as collapsibleAnatomy } from '@zag-js/collapsible';
@@ -5,4 +5,5 @@ export { CollapsibleRootProvider, } from './collapsible-root-provider';
5
5
  export { CollapsibleTrigger, } from './collapsible-trigger';
6
6
  export { useCollapsible, } from './use-collapsible';
7
7
  export { useCollapsibleContext } from './use-collapsible-context';
8
+ export { collapsibleAnatomy } from './collapsible.anatomy';
8
9
  export * as Collapsible from './collapsible';
@@ -1,9 +1,8 @@
1
- import { colorPickerAnatomy } from '@ark-ui/anatomy';
2
1
  import { mergeProps } from '@zag-js/solid';
3
2
  import { ark } from '../factory';
4
3
  import { useColorPickerContext } from './use-color-picker-context';
5
4
  export const ColorPickerValueText = (props) => {
6
- const api = useColorPickerContext();
7
- const mergedProps = mergeProps(() => colorPickerAnatomy.build().valueText.attrs, props);
8
- return <ark.span {...mergedProps}>{api().valueAsString || props.children}</ark.span>;
5
+ const colorPicker = useColorPickerContext();
6
+ const mergedProps = mergeProps(() => colorPicker().getValueTextProps(), props);
7
+ return <ark.span {...mergedProps}>{colorPicker().valueAsString || props.children}</ark.span>;
9
8
  };
@@ -1,8 +1,8 @@
1
- import { colorPickerAnatomy } from '@ark-ui/anatomy';
2
1
  import { mergeProps } from '@zag-js/solid';
3
2
  import { Show } from 'solid-js';
4
3
  import { createSplitProps } from '../../utils/create-split-props';
5
4
  import { ark } from '../factory';
5
+ import { colorPickerAnatomy } from './color-picker.anatomy';
6
6
  import { useColorPickerContext } from './use-color-picker-context';
7
7
  import { ColorPickerFormatPropsProvider } from './use-color-picker-format-context';
8
8
  export const ColorPickerView = (props) => {
@@ -0,0 +1,2 @@
1
+ import { anatomy } from '@zag-js/color-picker';
2
+ export const colorPickerAnatomy = anatomy.extendWith('view');
@@ -29,4 +29,5 @@ export { ColorPickerValueText, } from './color-picker-value-text';
29
29
  export { ColorPickerView, } from './color-picker-view';
30
30
  export { useColorPicker, } from './use-color-picker';
31
31
  export { useColorPickerContext } from './use-color-picker-context';
32
+ export { colorPickerAnatomy } from './color-picker.anatomy';
32
33
  export * as ColorPicker from './color-picker';
@@ -0,0 +1 @@
1
+ export { anatomy as comboboxAnatomy } from '@zag-js/combobox';
@@ -18,4 +18,5 @@ export { ComboboxTrigger, } from './combobox-trigger';
18
18
  export { useCombobox } from './use-combobox';
19
19
  export { useComboboxContext } from './use-combobox-context';
20
20
  export { useComboboxItemContext } from './use-combobox-item-context';
21
+ export { comboboxAnatomy } from './combobox.anatomy';
21
22
  export * as Combobox from './combobox';
@@ -1,7 +1,7 @@
1
- import { datePickerAnatomy } from '@ark-ui/anatomy';
2
1
  import { mergeProps } from '@zag-js/solid';
3
2
  import { createSplitProps } from '../../utils/create-split-props';
4
3
  import { ark } from '../factory';
4
+ import { datePickerAnatomy } from './date-picker.anatomy';
5
5
  import { useDatePickerContext } from './use-date-picker-context';
6
6
  import { DatePickerViewProvider } from './use-date-picker-view-props-context';
7
7
  export const DatePickerView = (props) => {
@@ -0,0 +1,2 @@
1
+ import { anatomy } from '@zag-js/date-picker';
2
+ export const datePickerAnatomy = anatomy.extendWith('view');
@@ -26,4 +26,5 @@ export { DatePickerViewTrigger, } from './date-picker-view-trigger';
26
26
  export { DatePickerYearSelect, } from './date-picker-year-select';
27
27
  export { useDatePicker } from './use-date-picker';
28
28
  export { useDatePickerContext } from './use-date-picker-context';
29
+ export { datePickerAnatomy } from './date-picker.anatomy';
29
30
  export * as DatePicker from './date-picker';
@@ -0,0 +1 @@
1
+ export { anatomy as dialogAnatomy } from '@zag-js/dialog';
@@ -10,4 +10,5 @@ export { DialogTitle, } from './dialog-title';
10
10
  export { DialogTrigger, } from './dialog-trigger';
11
11
  export { useDialog } from './use-dialog';
12
12
  export { useDialogContext } from './use-dialog-context';
13
+ export { dialogAnatomy } from './dialog.anatomy';
13
14
  export * as Dialog from './dialog';
@@ -0,0 +1 @@
1
+ export { anatomy as editableAnatomy } from '@zag-js/editable';
@@ -11,4 +11,5 @@ export { EditableRootProvider, } from './editable-root-provider';
11
11
  export { EditableSubmitTrigger, } from './editable-submit-trigger';
12
12
  export { useEditable } from './use-editable';
13
13
  export { useEditableContext } from './use-editable-context';
14
+ export { editableAnatomy } from './editable.anatomy';
14
15
  export * as Editable from './editable';
@@ -0,0 +1,3 @@
1
+ import { createAnatomy } from '@zag-js/anatomy';
2
+ export const fieldAnatomy = createAnatomy('field').parts('root', 'errorText', 'helperText', 'input', 'label', 'select', 'textarea');
3
+ export const parts = fieldAnatomy.build();
@@ -8,4 +8,5 @@ export { FieldRoot } from './field-root';
8
8
  export { FieldRootProvider, } from './field-root-provider';
9
9
  export { FieldTextarea, } from './field-textarea';
10
10
  export { useFieldContext } from './use-field-context';
11
+ export { fieldAnatomy } from './field.anatomy';
11
12
  export * as Field from './field';
@@ -1,12 +1,13 @@
1
- import { fieldAnatomy } from '@ark-ui/anatomy';
2
1
  import { getWindow } from '@zag-js/dom-query';
3
- import { createEffect, createMemo, createSignal, onCleanup } from 'solid-js';
4
- const parts = fieldAnatomy.build();
2
+ import { createEffect, createMemo, createSignal, createUniqueId, onCleanup } from 'solid-js';
3
+ import { useFieldsetContext } from '../fieldset';
4
+ import { parts } from './field.anatomy';
5
5
  export const useField = (props) => {
6
- const { required = false, disabled = false, invalid = false, readOnly = false } = props;
6
+ const fieldset = useFieldsetContext();
7
+ const { disabled = Boolean(fieldset?.().disabled), invalid = false, readOnly = false, required = false, } = props;
7
8
  const [hasErrorText, setHasErrorText] = createSignal(false);
8
9
  const [hasHelperText, setHasHelperText] = createSignal(false);
9
- const id = props.id ?? `field-${Math.random().toString(36).substr(2, 9)}`;
10
+ const id = props.id ?? createUniqueId();
10
11
  let rootRef;
11
12
  const errorTextId = `field::${id}::error-text`;
12
13
  const helperTextId = `field::${id}::helper-text`;
@@ -0,0 +1,2 @@
1
+ import { useFieldsetContext } from './use-fieldset-context';
2
+ export const FieldsetContext = (props) => props.children(useFieldsetContext());
@@ -0,0 +1,11 @@
1
+ import { mergeProps } from '@zag-js/solid';
2
+ import { Show } from 'solid-js';
3
+ import { ark } from '../factory';
4
+ import { useFieldsetContext } from './use-fieldset-context';
5
+ export const FieldsetErrorText = (props) => {
6
+ const fieldset = useFieldsetContext();
7
+ const mergedProps = mergeProps(() => fieldset().getErrorTextProps(), props);
8
+ return (<Show when={fieldset().invalid}>
9
+ <ark.span {...mergedProps}/>
10
+ </Show>);
11
+ };
@@ -0,0 +1,8 @@
1
+ import { mergeProps } from '@zag-js/solid';
2
+ import { ark } from '../factory';
3
+ import { useFieldsetContext } from './use-fieldset-context';
4
+ export const FieldsetHelperText = (props) => {
5
+ const fieldset = useFieldsetContext();
6
+ const mergedProps = mergeProps(() => fieldset().getHelperTextProps(), props);
7
+ return <ark.span {...mergedProps}/>;
8
+ };
@@ -0,0 +1,8 @@
1
+ import { mergeProps } from '@zag-js/solid';
2
+ import { ark } from '../factory';
3
+ import { useFieldsetContext } from './use-fieldset-context';
4
+ export const FieldsetLegend = (props) => {
5
+ const fieldset = useFieldsetContext();
6
+ const mergedProps = mergeProps(() => fieldset().getLegendProps(), props);
7
+ return <ark.legend {...mergedProps}/>;
8
+ };
@@ -0,0 +1,11 @@
1
+ import { mergeProps } from '@zag-js/solid';
2
+ import { createSplitProps } from '../../utils/create-split-props';
3
+ import { ark } from '../factory';
4
+ import { FieldsetProvider } from './use-fieldset-context';
5
+ export const FieldsetRootProvider = (props) => {
6
+ const [{ value: fieldset }, localProps] = createSplitProps()(props, ['value']);
7
+ const mergedProps = mergeProps(() => fieldset().getRootProps(), localProps);
8
+ return (<FieldsetProvider value={fieldset}>
9
+ <ark.fieldset {...mergedProps}/>
10
+ </FieldsetProvider>);
11
+ };
@@ -0,0 +1,18 @@
1
+ import { mergeProps } from '@zag-js/solid';
2
+ import { createSplitProps } from '../../utils/create-split-props';
3
+ import { ark } from '../factory';
4
+ import { useFieldset } from './use-fieldset';
5
+ import { FieldsetProvider } from './use-fieldset-context';
6
+ export const FieldsetRoot = (props) => {
7
+ const [useFieldsetProps, localProps] = createSplitProps()(props, [
8
+ 'id',
9
+ 'disabled',
10
+ 'invalid',
11
+ ]);
12
+ const fieldset = useFieldset(useFieldsetProps);
13
+ const mergedProps = mergeProps(() => fieldset().getRootProps(), localProps);
14
+ return (<FieldsetProvider value={fieldset}>
15
+ <ark.fieldset {...mergedProps}/>
16
+ </FieldsetProvider>);
17
+ };
18
+ FieldsetRoot.displayName = 'FieldsetRoot';
@@ -0,0 +1,3 @@
1
+ import { createAnatomy } from '@zag-js/anatomy';
2
+ export const fieldsetAnatomy = createAnatomy('fieldset').parts('root', 'errorText', 'helperText', 'legend');
3
+ export const parts = fieldsetAnatomy.build();
@@ -0,0 +1,6 @@
1
+ export { FieldsetRoot as Root, } from './fieldset-root';
2
+ export { FieldsetRootProvider as RootProvider, } from './fieldset-root-provider';
3
+ export { FieldsetLegend as Legend, } from './fieldset-legend';
4
+ export { FieldsetHelperText as HelperText, } from './fieldset-helper-text';
5
+ export { FieldsetErrorText as ErrorText, } from './fieldset-error-text';
6
+ export { FieldsetContext as Context, } from './fieldset-context';
@@ -0,0 +1,9 @@
1
+ export { FieldsetContext } from './fieldset-context';
2
+ export { FieldsetErrorText, } from './fieldset-error-text';
3
+ export { FieldsetHelperText, } from './fieldset-helper-text';
4
+ export { FieldsetRoot } from './fieldset-root';
5
+ export { FieldsetRootProvider, } from './fieldset-root-provider';
6
+ export { FieldsetLegend, } from './fieldset-legend';
7
+ export { fieldsetAnatomy } from './fieldset.anatomy';
8
+ export { useFieldsetContext } from './use-fieldset-context';
9
+ export * as Fieldset from './fieldset';
@@ -0,0 +1,6 @@
1
+ import { createContext } from '../../utils/create-context';
2
+ export const [FieldsetProvider, useFieldsetContext] = createContext({
3
+ hookName: 'useFieldsetContext',
4
+ providerName: '<FieldsetProvider />',
5
+ strict: false,
6
+ });
@@ -0,0 +1,65 @@
1
+ import { getWindow } from '@zag-js/dom-query';
2
+ import { createEffect, createMemo, createSignal, createUniqueId, onCleanup } from 'solid-js';
3
+ import { parts } from './fieldset.anatomy';
4
+ export const useFieldset = (props) => {
5
+ const { disabled = false, invalid = false } = props;
6
+ let rootRef;
7
+ const id = props.id ?? createUniqueId();
8
+ const errorTextId = `fieldset::${id}::error-text`;
9
+ const helperTextId = `fieldset::${id}::helper-text`;
10
+ const [hasErrorText, setHasErrorText] = createSignal(false);
11
+ const [hasHelperText, setHasHelperText] = createSignal(false);
12
+ createEffect(() => {
13
+ const rootNode = rootRef;
14
+ if (!rootNode)
15
+ return;
16
+ const win = getWindow(rootNode);
17
+ const doc = win.document;
18
+ const checkTextElements = () => {
19
+ setHasErrorText(!!doc.getElementById(errorTextId));
20
+ setHasHelperText(!!doc.getElementById(helperTextId));
21
+ };
22
+ checkTextElements();
23
+ const observer = new win.MutationObserver(checkTextElements);
24
+ observer.observe(rootNode, { childList: true, subtree: true });
25
+ onCleanup(() => observer.disconnect());
26
+ });
27
+ const labelIds = [];
28
+ if (hasErrorText() && invalid)
29
+ labelIds.push(errorTextId);
30
+ if (hasHelperText())
31
+ labelIds.push(helperTextId);
32
+ const getRootProps = () => ({
33
+ ...parts.root.attrs,
34
+ disabled,
35
+ 'data-disabled': dataAttr(disabled),
36
+ 'data-invalid': dataAttr(invalid),
37
+ 'aria-describedby': labelIds.join(' ') || undefined,
38
+ });
39
+ const getLegendProps = () => ({
40
+ ...parts.legend.attrs,
41
+ 'data-disabled': dataAttr(disabled),
42
+ 'data-invalid': dataAttr(invalid),
43
+ });
44
+ const getHelperTextProps = () => ({
45
+ id: helperTextId,
46
+ ...parts.helperText.attrs,
47
+ });
48
+ const getErrorTextProps = () => ({
49
+ id: errorTextId,
50
+ ...parts.errorText.attrs,
51
+ 'aria-live': 'polite',
52
+ });
53
+ return createMemo(() => ({
54
+ refs: {
55
+ rootRef,
56
+ },
57
+ disabled,
58
+ invalid,
59
+ getRootProps,
60
+ getLegendProps,
61
+ getHelperTextProps,
62
+ getErrorTextProps,
63
+ }));
64
+ };
65
+ const dataAttr = (condition) => (condition ? '' : undefined);
@@ -0,0 +1 @@
1
+ export { anatomy as fileUploadAnatomy } from '@zag-js/file-upload';
@@ -14,4 +14,5 @@ export { FileUploadRootProvider, } from './file-upload-root-provider';
14
14
  export { FileUploadTrigger, } from './file-upload-trigger';
15
15
  export { useFileUpload } from './use-file-upload';
16
16
  export { useFileUploadContext } from './use-file-upload-context';
17
+ export { fileUploadAnatomy } from './file-upload.anatomy';
17
18
  export * as FileUpload from './file-upload';
@@ -0,0 +1,20 @@
1
+ import { For, Show } from 'solid-js';
2
+ import { createSplitProps } from '../../utils/create-split-props';
3
+ import { useHighlight } from './use-highlight';
4
+ export const Highlight = (props) => {
5
+ if (typeof props.text !== 'string') {
6
+ throw new Error('[ark-ui/highlight] text must be a string');
7
+ }
8
+ const [highlightProps, localProps] = createSplitProps()(props, [
9
+ 'query',
10
+ 'text',
11
+ 'ignoreCase',
12
+ 'matchAll',
13
+ ]);
14
+ const chunks = useHighlight(highlightProps);
15
+ return (<For each={chunks()}>
16
+ {(chunk) => (<Show when={chunk.match} fallback={chunk.text}>
17
+ <mark {...localProps}>{chunk.text}</mark>
18
+ </Show>)}
19
+ </For>);
20
+ };
@@ -0,0 +1,2 @@
1
+ export { Highlight } from './highlight';
2
+ export { useHighlight } from './use-highlight';
@@ -0,0 +1,42 @@
1
+ import { createMemo } from 'solid-js';
2
+ const escapeRegexp = (term) => term.replace(/[|\\{}()[\]^$+*?.-]/g, (char) => `\\${char}`);
3
+ const buildRegex = (queryProp, flags) => {
4
+ const query = queryProp.filter(Boolean).map((text) => escapeRegexp(text));
5
+ return new RegExp(`(${query.join('|')})`, flags);
6
+ };
7
+ const getRegexFlags = (ignoreCase = true, matchAll = true) => `${ignoreCase ? 'i' : ''}${matchAll ? 'g' : ''}`;
8
+ const normalizeSpan = (spans, len) => {
9
+ const result = [];
10
+ const append = (start, end, match) => {
11
+ if (end - start > 0)
12
+ result.push({ start, end, match });
13
+ };
14
+ if (spans.length === 0) {
15
+ append(0, len, false);
16
+ }
17
+ else {
18
+ let lastIndex = 0;
19
+ for (const chunk of spans) {
20
+ append(lastIndex, chunk.start, false);
21
+ append(chunk.start, chunk.end, true);
22
+ lastIndex = chunk.end;
23
+ }
24
+ append(lastIndex, len, false);
25
+ }
26
+ return result;
27
+ };
28
+ const highlightWords = (props) => {
29
+ const flags = getRegexFlags(props.ignoreCase, props.matchAll);
30
+ const regex = buildRegex(Array.isArray(props.query) ? props.query : [props.query], flags);
31
+ const spans = [...props.text.matchAll(regex)].map((match) => ({
32
+ start: match.index || 0,
33
+ end: (match.index || 0) + match[0].length,
34
+ }));
35
+ return normalizeSpan(spans, props.text.length).map((chunk) => ({
36
+ text: props.text.slice(chunk.start, chunk.end),
37
+ match: !!chunk.match,
38
+ }));
39
+ };
40
+ export const useHighlight = (props) => {
41
+ return createMemo(() => highlightWords(props));
42
+ };
@@ -0,0 +1 @@
1
+ export { anatomy as hoverCardAnatomy } from '@zag-js/hover-card';
@@ -8,4 +8,5 @@ export { HoverCardRootProvider, } from './hover-card-root-provider';
8
8
  export { HoverCardTrigger, } from './hover-card-trigger';
9
9
  export { useHoverCard } from './use-hover-card';
10
10
  export { useHoverCardContext } from './use-hover-card-context';
11
+ export { hoverCardAnatomy } from './hover-card.anatomy';
11
12
  export * as HoverCard from './hover-card';
@@ -11,8 +11,10 @@ export * from './dialog';
11
11
  export * from './editable';
12
12
  export * from './factory';
13
13
  export * from './field';
14
+ export * from './fieldset';
14
15
  export * from './file-upload';
15
16
  export * from './format';
17
+ export * from './highlight';
16
18
  export * from './hover-card';
17
19
  export * from './menu';
18
20
  export * from './number-input';
@@ -32,6 +34,7 @@ export * from './splitter';
32
34
  export * from './switch';
33
35
  export * from './tabs';
34
36
  export * from './tags-input';
37
+ export * from './time-picker';
35
38
  export * from './toast';
36
39
  export * from './toggle-group';
37
40
  export * from './tooltip';
@@ -22,4 +22,5 @@ export { MenuTriggerItem, } from './menu-trigger-item';
22
22
  export { useMenu } from './use-menu';
23
23
  export { useMenuContext } from './use-menu-context';
24
24
  export { useMenuItemContext } from './use-menu-item-context';
25
+ export { menuAnatomy } from './menu.anatomy';
25
26
  export * as Menu from './menu';
@@ -0,0 +1 @@
1
+ export { anatomy as menuAnatomy } from '@zag-js/menu';
@@ -7,6 +7,8 @@ export { NumberInputLabel, } from './number-input-label';
7
7
  export { NumberInputRoot, } from './number-input-root';
8
8
  export { NumberInputRootProvider, } from './number-input-root-provider';
9
9
  export { NumberInputScrubber, } from './number-input-scrubber';
10
+ export { NumberInputValueText, } from './number-input-value-text';
10
11
  export { useNumberInput, } from './use-number-input';
11
12
  export { useNumberInputContext } from './use-number-input-context';
13
+ export { numberInputAnatomy } from './number-input.anatomy';
12
14
  export * as NumberInput from './number-input';
@@ -0,0 +1,8 @@
1
+ import { mergeProps } from '@zag-js/solid';
2
+ import { ark } from '../factory';
3
+ import { useNumberInputContext } from './use-number-input-context';
4
+ export const NumberInputValueText = (props) => {
5
+ const numberInput = useNumberInputContext();
6
+ const mergedProps = mergeProps(() => numberInput().getValueTextProps(), props);
7
+ return <ark.span {...mergedProps}/>;
8
+ };
@@ -0,0 +1 @@
1
+ export { anatomy as numberInputAnatomy } from '@zag-js/number-input';
@@ -7,3 +7,4 @@ export { NumberInputLabel as Label, } from './number-input-label';
7
7
  export { NumberInputRoot as Root, } from './number-input-root';
8
8
  export { NumberInputRootProvider as RootProvider, } from './number-input-root-provider';
9
9
  export { NumberInputScrubber as Scrubber, } from './number-input-scrubber';
10
+ export { NumberInputValueText as ValueText, } from './number-input-value-text';
@@ -7,4 +7,5 @@ export { PaginationRoot, } from './pagination-root';
7
7
  export { PaginationRootProvider, } from './pagination-root-provider';
8
8
  export { usePagination } from './use-pagination';
9
9
  export { usePaginationContext } from './use-pagination-context';
10
+ export { paginationAnatomy } from './pagination.anatomy';
10
11
  export * as Pagination from './pagination';
@@ -0,0 +1 @@
1
+ export { anatomy as paginationAnatomy } from '@zag-js/pagination';
@@ -7,4 +7,5 @@ export { PinInputRoot, } from './pin-input-root';
7
7
  export { PinInputRootProvider, } from './pin-input-root-provider';
8
8
  export { usePinInput } from './use-pin-input';
9
9
  export { usePinInputContext } from './use-pin-input-context';
10
+ export { pinInputAnatomy } from './pin-input.anatomy';
10
11
  export * as PinInput from './pin-input';
@@ -0,0 +1 @@
1
+ export { anatomy as pinInputAnatomy } from '@zag-js/pin-input';
@@ -13,4 +13,5 @@ export { PopoverTitle, } from './popover-title';
13
13
  export { PopoverTrigger, } from './popover-trigger';
14
14
  export { usePopover } from './use-popover';
15
15
  export { usePopoverContext } from './use-popover-context';
16
+ export { popoverAnatomy } from './popover.anatomy';
16
17
  export * as Popover from './popover';
@@ -0,0 +1 @@
1
+ export { anatomy as popoverAnatomy } from '@zag-js/popover';
@@ -11,4 +11,5 @@ export { ProgressValueText, } from './progress-value-text';
11
11
  export { ProgressView, } from './progress-view';
12
12
  export { useProgress } from './use-progress';
13
13
  export { useProgressContext } from './use-progress-context';
14
+ export { progressAnatomy } from './progress.anatomy';
14
15
  export * as Progress from './progress';
@@ -0,0 +1 @@
1
+ export { anatomy as progressAnatomy } from '@zag-js/progress';
@@ -6,4 +6,5 @@ export { QrCodeRoot, } from './qr-code-root';
6
6
  export { QrCodeRootProvider, } from './qr-code-root-provider';
7
7
  export { useQrCode } from './use-qr-code';
8
8
  export { useQrCodeContext } from './use-qr-code-context';
9
+ export { qrCodeAnatomy } from './qr-code.anatomy';
9
10
  export * as QrCode from './qr-code';
@@ -0,0 +1 @@
1
+ export { anatomy as qrCodeAnatomy } from '@zag-js/qr-code';
@@ -11,4 +11,5 @@ export { RadioGroupRootProvider, } from './radio-group-root-provider';
11
11
  export { useRadioGroup } from './use-radio-group';
12
12
  export { useRadioGroupContext } from './use-radio-group-context';
13
13
  export { useRadioGroupItemContext, } from './use-radio-group-item-context';
14
+ export { radioGroupAnatomy } from './radio-group.anatomy';
14
15
  export * as RadioGroup from './radio-group';
@@ -0,0 +1 @@
1
+ export { anatomy as radioGroupAnatomy } from '@zag-js/radio-group';
@@ -9,4 +9,5 @@ export { RatingGroupRootProvider, } from './rating-group-root-provider';
9
9
  export { useRatingGroup, } from './use-rating-group';
10
10
  export { useRatingGroupContext } from './use-rating-group-context';
11
11
  export { useRatingGroupItemContext, } from './use-rating-group-item-context';
12
+ export { ratingGroupAnatomy } from './rating-group.anatomy';
12
13
  export * as RatingGroup from './rating-group';
@@ -0,0 +1 @@
1
+ export { anatomy as ratingGroupAnatomy } from '@zag-js/rating-group';
@@ -11,4 +11,5 @@ export { SegmentGroupRootProvider, } from './segment-group-root-provider';
11
11
  export { useSegmentGroup, } from './use-segment-group';
12
12
  export { useSegmentGroupContext } from './use-segment-group-context';
13
13
  export { useSegmentGroupItemContext, } from './use-segment-group-item-context';
14
+ export { segmentGroupAnatomy } from './segment-group.anatomy';
14
15
  export * as SegmentGroup from './segment-group';