ui-ingredients 0.31.2 → 1.0.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 (270) hide show
  1. package/dist/accordion/accordion-item.svelte +3 -0
  2. package/dist/accordion/accordion-root.svelte +13 -7
  3. package/dist/accordion/accordion-root.svelte.d.ts +2 -2
  4. package/dist/accordion/create-accordion.svelte.d.ts +1 -2
  5. package/dist/accordion/create-accordion.svelte.js +7 -13
  6. package/dist/alert/alert-root.svelte +11 -5
  7. package/dist/alert/alert-root.svelte.d.ts +2 -2
  8. package/dist/alert/create-alert.svelte.d.ts +1 -1
  9. package/dist/alert/create-alert.svelte.js +3 -5
  10. package/dist/alert-dialog/alert-dialog-anatomy.js +1 -1
  11. package/dist/alert-dialog/alert-dialog-root.svelte +9 -3
  12. package/dist/alert-dialog/alert-dialog-root.svelte.d.ts +2 -1
  13. package/dist/alert-dialog/create-alert-dialog.svelte.d.ts +1 -3
  14. package/dist/alert-dialog/create-alert-dialog.svelte.js +11 -16
  15. package/dist/angle-slider/angle-slider-root.svelte +10 -5
  16. package/dist/angle-slider/angle-slider-root.svelte.d.ts +2 -2
  17. package/dist/angle-slider/create-angle-slider.svelte.d.ts +1 -2
  18. package/dist/angle-slider/create-angle-slider.svelte.js +3 -7
  19. package/dist/avatar/avatar-root.svelte +12 -4
  20. package/dist/avatar/avatar-root.svelte.d.ts +2 -2
  21. package/dist/avatar/create-avatar.svelte.d.ts +1 -2
  22. package/dist/avatar/create-avatar.svelte.js +3 -7
  23. package/dist/breadcrumbs/breadcrumbs-anatomy.d.ts +3 -0
  24. package/dist/breadcrumbs/breadcrumbs-anatomy.js +3 -0
  25. package/dist/breadcrumbs/breadcrumbs-context.svelte.d.ts +3 -0
  26. package/dist/breadcrumbs/breadcrumbs-context.svelte.js +3 -0
  27. package/dist/breadcrumbs/breadcrumbs-item.svelte +5 -0
  28. package/dist/breadcrumbs/breadcrumbs-item.svelte.d.ts +1 -0
  29. package/dist/breadcrumbs/breadcrumbs-link.svelte +5 -0
  30. package/dist/breadcrumbs/breadcrumbs-link.svelte.d.ts +1 -0
  31. package/dist/breadcrumbs/breadcrumbs-list.svelte +5 -0
  32. package/dist/breadcrumbs/breadcrumbs-list.svelte.d.ts +1 -0
  33. package/dist/breadcrumbs/breadcrumbs-root.svelte +5 -0
  34. package/dist/breadcrumbs/breadcrumbs-root.svelte.d.ts +1 -0
  35. package/dist/breadcrumbs/breadcrumbs-separator.svelte +5 -0
  36. package/dist/breadcrumbs/breadcrumbs-separator.svelte.d.ts +1 -0
  37. package/dist/breadcrumbs/create-breadcrumbs.d.ts +6 -0
  38. package/dist/breadcrumbs/create-breadcrumbs.js +3 -0
  39. package/dist/carousel/carousel-root.svelte +11 -5
  40. package/dist/carousel/carousel-root.svelte.d.ts +2 -2
  41. package/dist/carousel/create-carousel.svelte.d.ts +1 -2
  42. package/dist/carousel/create-carousel.svelte.js +3 -7
  43. package/dist/checkbox/checkbox-root.svelte +10 -5
  44. package/dist/checkbox/checkbox-root.svelte.d.ts +2 -2
  45. package/dist/checkbox/create-checkbox.svelte.d.ts +1 -2
  46. package/dist/checkbox/create-checkbox.svelte.js +5 -9
  47. package/dist/clipboard/clipboard-root.svelte +11 -5
  48. package/dist/clipboard/clipboard-root.svelte.d.ts +2 -2
  49. package/dist/clipboard/create-clipboard.svelte.d.ts +1 -2
  50. package/dist/clipboard/create-clipboard.svelte.js +2 -6
  51. package/dist/collapsible/collapsible-root.svelte +13 -8
  52. package/dist/collapsible/collapsible-root.svelte.d.ts +2 -2
  53. package/dist/collapsible/create-collapsible.svelte.d.ts +1 -3
  54. package/dist/collapsible/create-collapsible.svelte.js +3 -8
  55. package/dist/color-picker/color-picker-channel-slider-value-text.svelte +1 -1
  56. package/dist/color-picker/color-picker-root.svelte +15 -8
  57. package/dist/color-picker/color-picker-root.svelte.d.ts +2 -2
  58. package/dist/color-picker/create-color-picker.svelte.d.ts +5 -5
  59. package/dist/color-picker/create-color-picker.svelte.js +9 -13
  60. package/dist/combobox/combobox-item-group.svelte +2 -2
  61. package/dist/combobox/combobox-root.svelte +16 -8
  62. package/dist/combobox/combobox-root.svelte.d.ts +2 -2
  63. package/dist/combobox/create-combobox.svelte.d.ts +1 -5
  64. package/dist/combobox/create-combobox.svelte.js +6 -14
  65. package/dist/date-picker/create-date-picker.svelte.d.ts +1 -7
  66. package/dist/date-picker/create-date-picker.svelte.js +4 -24
  67. package/dist/date-picker/date-picker-anatomy.d.ts +1 -2
  68. package/dist/date-picker/date-picker-anatomy.js +1 -3
  69. package/dist/date-picker/date-picker-root.svelte +20 -11
  70. package/dist/date-picker/date-picker-root.svelte.d.ts +2 -2
  71. package/dist/dialog/create-dialog.svelte.d.ts +1 -3
  72. package/dist/dialog/create-dialog.svelte.js +3 -8
  73. package/dist/dialog/dialog-root.svelte +9 -3
  74. package/dist/dialog/dialog-root.svelte.d.ts +2 -1
  75. package/dist/drawer/create-drawer.svelte.d.ts +8 -3
  76. package/dist/drawer/create-drawer.svelte.js +38 -20
  77. package/dist/drawer/drawer-root.svelte +9 -3
  78. package/dist/drawer/drawer-root.svelte.d.ts +2 -1
  79. package/dist/editable/create-editable.svelte.d.ts +1 -3
  80. package/dist/editable/create-editable.svelte.js +5 -10
  81. package/dist/editable/editable-root.svelte +12 -6
  82. package/dist/editable/editable-root.svelte.d.ts +2 -2
  83. package/dist/field/create-field.svelte.d.ts +2 -1
  84. package/dist/field/create-field.svelte.js +11 -3
  85. package/dist/field/field-root.svelte +12 -7
  86. package/dist/field/field-root.svelte.d.ts +2 -2
  87. package/dist/file-upload/create-file-upload.svelte.d.ts +1 -2
  88. package/dist/file-upload/create-file-upload.svelte.js +5 -9
  89. package/dist/file-upload/file-upload-root.svelte +9 -6
  90. package/dist/file-upload/file-upload-root.svelte.d.ts +2 -2
  91. package/dist/floating-panel/create-floating-panel.svelte.d.ts +1 -2
  92. package/dist/floating-panel/create-floating-panel.svelte.js +3 -7
  93. package/dist/floating-panel/floating-panel-anatomy.d.ts +1 -1
  94. package/dist/floating-panel/floating-panel-anatomy.js +1 -1
  95. package/dist/floating-panel/floating-panel-root.svelte +6 -3
  96. package/dist/floating-panel/floating-panel-root.svelte.d.ts +2 -1
  97. package/dist/focus-trap/focus-trap.svelte +104 -0
  98. package/dist/focus-trap/focus-trap.svelte.d.ts +11 -0
  99. package/dist/focus-trap/index.d.ts +1 -0
  100. package/dist/focus-trap/index.js +1 -0
  101. package/dist/highlight/highlight.svelte +8 -2
  102. package/dist/hover-card/create-hover-card.svelte.d.ts +1 -3
  103. package/dist/hover-card/create-hover-card.svelte.js +3 -8
  104. package/dist/hover-card/hover-card-root.svelte +14 -6
  105. package/dist/hover-card/hover-card-root.svelte.d.ts +2 -1
  106. package/dist/index.d.ts +1 -1
  107. package/dist/index.js +1 -1
  108. package/dist/locale-provider/index.d.ts +2 -2
  109. package/dist/locale-provider/index.js +2 -2
  110. package/dist/locale-provider/{local-provider.svelte → locale-provider.svelte} +1 -1
  111. package/dist/locale-provider/locale-provider.svelte.d.ts +8 -0
  112. package/dist/menu/create-menu.svelte.d.ts +2 -4
  113. package/dist/menu/create-menu.svelte.js +4 -9
  114. package/dist/menu/menu-arrow-tip.svelte +1 -1
  115. package/dist/menu/menu-arrow.svelte +1 -1
  116. package/dist/menu/menu-content.svelte +5 -1
  117. package/dist/menu/menu-context-trigger.svelte +3 -1
  118. package/dist/menu/menu-indicator.svelte +3 -1
  119. package/dist/menu/menu-item-group-label.svelte +1 -1
  120. package/dist/menu/menu-item-group.svelte +3 -3
  121. package/dist/menu/menu-item.svelte +9 -2
  122. package/dist/menu/menu-option-item-indicator.svelte +1 -1
  123. package/dist/menu/menu-option-item-text.svelte +1 -1
  124. package/dist/menu/menu-option-item.svelte +10 -2
  125. package/dist/menu/menu-positioner.svelte +5 -1
  126. package/dist/menu/menu-root.svelte +13 -8
  127. package/dist/menu/menu-root.svelte.d.ts +2 -1
  128. package/dist/menu/menu-separator.svelte +3 -1
  129. package/dist/menu/menu-trigger.svelte +1 -1
  130. package/dist/number-input/create-number-input.svelte.d.ts +1 -2
  131. package/dist/number-input/create-number-input.svelte.js +5 -9
  132. package/dist/number-input/number-input-root.svelte +10 -5
  133. package/dist/number-input/number-input-root.svelte.d.ts +2 -2
  134. package/dist/pagination/create-pagination.svelte.d.ts +1 -2
  135. package/dist/pagination/create-pagination.svelte.js +3 -7
  136. package/dist/pagination/pagination-root.svelte +11 -5
  137. package/dist/pagination/pagination-root.svelte.d.ts +2 -2
  138. package/dist/pin-input/create-pin-input.svelte.d.ts +1 -4
  139. package/dist/pin-input/create-pin-input.svelte.js +5 -19
  140. package/dist/pin-input/index.d.ts +0 -1
  141. package/dist/pin-input/pin-input-anatomy.d.ts +1 -2
  142. package/dist/pin-input/pin-input-anatomy.js +1 -3
  143. package/dist/pin-input/pin-input-root.svelte +11 -5
  144. package/dist/pin-input/pin-input-root.svelte.d.ts +2 -2
  145. package/dist/pin-input/pin-input.d.ts +0 -1
  146. package/dist/pin-input/pin-input.js +0 -1
  147. package/dist/popover/create-popover.svelte.d.ts +1 -3
  148. package/dist/popover/create-popover.svelte.js +3 -8
  149. package/dist/popover/popover-root.svelte +11 -6
  150. package/dist/popover/popover-root.svelte.d.ts +2 -1
  151. package/dist/presence/create-presence.svelte.d.ts +2 -2
  152. package/dist/presence/create-presence.svelte.js +5 -13
  153. package/dist/presence/presence.svelte +10 -1
  154. package/dist/progress/create-progress.svelte.d.ts +1 -2
  155. package/dist/progress/create-progress.svelte.js +4 -7
  156. package/dist/progress/progress-root.svelte +12 -5
  157. package/dist/progress/progress-root.svelte.d.ts +2 -2
  158. package/dist/qr-code/create-qr-code.svelte.d.ts +1 -2
  159. package/dist/qr-code/create-qr-code.svelte.js +3 -7
  160. package/dist/qr-code/qr-code-root.svelte +11 -5
  161. package/dist/qr-code/qr-code-root.svelte.d.ts +2 -2
  162. package/dist/radio-group/create-radio-group.svelte.d.ts +1 -2
  163. package/dist/radio-group/create-radio-group.svelte.js +3 -7
  164. package/dist/radio-group/radio-group-root.svelte +11 -5
  165. package/dist/radio-group/radio-group-root.svelte.d.ts +2 -2
  166. package/dist/rating-group/create-rating-group.svelte.d.ts +1 -2
  167. package/dist/rating-group/create-rating-group.svelte.js +5 -9
  168. package/dist/rating-group/rating-group-root.svelte +11 -5
  169. package/dist/rating-group/rating-group-root.svelte.d.ts +2 -2
  170. package/dist/segment-group/create-segment-group.svelte.d.ts +1 -2
  171. package/dist/segment-group/create-segment-group.svelte.js +28 -15
  172. package/dist/segment-group/segment-group-root.svelte +11 -5
  173. package/dist/segment-group/segment-group-root.svelte.d.ts +2 -2
  174. package/dist/select/create-select.svelte.d.ts +1 -5
  175. package/dist/select/create-select.svelte.js +6 -11
  176. package/dist/select/select-item-group.svelte +2 -2
  177. package/dist/select/select-root.svelte +17 -8
  178. package/dist/select/select-root.svelte.d.ts +2 -2
  179. package/dist/signature-pad/create-signature-pad.svelte.d.ts +1 -2
  180. package/dist/signature-pad/create-signature-pad.svelte.js +3 -7
  181. package/dist/signature-pad/signature-pad-root.svelte +9 -5
  182. package/dist/signature-pad/signature-pad-root.svelte.d.ts +2 -2
  183. package/dist/slider/create-slider.svelte.d.ts +1 -2
  184. package/dist/slider/create-slider.svelte.js +3 -7
  185. package/dist/slider/slider-root.svelte +11 -5
  186. package/dist/slider/slider-root.svelte.d.ts +2 -2
  187. package/dist/splitter/create-splitter.svelte.d.ts +1 -2
  188. package/dist/splitter/create-splitter.svelte.js +3 -7
  189. package/dist/splitter/splitter-root.svelte +11 -5
  190. package/dist/splitter/splitter-root.svelte.d.ts +2 -2
  191. package/dist/steps/create-steps.svelte.d.ts +1 -2
  192. package/dist/steps/create-steps.svelte.js +3 -7
  193. package/dist/steps/steps-root.svelte +13 -7
  194. package/dist/steps/steps-root.svelte.d.ts +2 -2
  195. package/dist/switch/create-switch.svelte.d.ts +1 -2
  196. package/dist/switch/create-switch.svelte.js +5 -9
  197. package/dist/switch/switch-root.svelte +11 -5
  198. package/dist/switch/switch-root.svelte.d.ts +2 -2
  199. package/dist/tabs/create-tabs.svelte.d.ts +1 -2
  200. package/dist/tabs/create-tabs.svelte.js +3 -7
  201. package/dist/tabs/tabs-root.svelte +9 -5
  202. package/dist/tabs/tabs-root.svelte.d.ts +2 -2
  203. package/dist/tabs/tabs-trigger.svelte +10 -3
  204. package/dist/tabs/tabs-trigger.svelte.d.ts +6 -1
  205. package/dist/tags-input/create-tags-input.svelte.d.ts +1 -2
  206. package/dist/tags-input/create-tags-input.svelte.js +5 -9
  207. package/dist/tags-input/tags-input-root.svelte +11 -5
  208. package/dist/tags-input/tags-input-root.svelte.d.ts +2 -2
  209. package/dist/time-picker/create-time-picker.svelte.d.ts +1 -3
  210. package/dist/time-picker/create-time-picker.svelte.js +3 -8
  211. package/dist/time-picker/time-picker-root.svelte +16 -8
  212. package/dist/time-picker/time-picker-root.svelte.d.ts +2 -2
  213. package/dist/timer/create-timer.svelte.d.ts +1 -2
  214. package/dist/timer/create-timer.svelte.js +2 -6
  215. package/dist/timer/timer-root.svelte +10 -5
  216. package/dist/timer/timer-root.svelte.d.ts +2 -2
  217. package/dist/toast/create-toaster.svelte.d.ts +4 -7
  218. package/dist/toast/create-toaster.svelte.js +3 -9
  219. package/dist/toast/index.d.ts +1 -3
  220. package/dist/toast/index.js +1 -3
  221. package/dist/toast/toast-anatomy.d.ts +1 -1
  222. package/dist/toast/toast-anatomy.js +1 -1
  223. package/dist/toast/toast-context.svelte.js +1 -0
  224. package/dist/toast/toast-provider.svelte +27 -0
  225. package/dist/toast/toast-provider.svelte.d.ts +11 -0
  226. package/dist/toast/toast-root.svelte +2 -2
  227. package/dist/toast/toast-root.svelte.d.ts +2 -2
  228. package/dist/toast/toaster.svelte +23 -37
  229. package/dist/toast/toaster.svelte.d.ts +7 -6
  230. package/dist/toggle/create-toggle.svelte.d.ts +3 -13
  231. package/dist/toggle/create-toggle.svelte.js +4 -31
  232. package/dist/toggle/index.d.ts +1 -0
  233. package/dist/toggle/toggle-anatomy.d.ts +1 -2
  234. package/dist/toggle/toggle-anatomy.js +1 -3
  235. package/dist/toggle/toggle-indicator.svelte +29 -0
  236. package/dist/toggle/toggle-indicator.svelte.d.ts +6 -0
  237. package/dist/toggle/toggle-root.svelte +1 -0
  238. package/dist/toggle/toggle.d.ts +1 -0
  239. package/dist/toggle/toggle.js +1 -0
  240. package/dist/toggle-group/create-toggle-group.svelte.d.ts +1 -2
  241. package/dist/toggle-group/create-toggle-group.svelte.js +3 -7
  242. package/dist/toggle-group/toggle-group-root.svelte +11 -5
  243. package/dist/toggle-group/toggle-group-root.svelte.d.ts +2 -2
  244. package/dist/tooltip/create-tooltip.svelte.d.ts +1 -3
  245. package/dist/tooltip/create-tooltip.svelte.js +3 -8
  246. package/dist/tooltip/tooltip-root.svelte +9 -3
  247. package/dist/tooltip/tooltip-root.svelte.d.ts +2 -1
  248. package/dist/tour/create-tour.svelte.d.ts +7 -3
  249. package/dist/tour/create-tour.svelte.js +9 -12
  250. package/dist/tour/tour-root.svelte +9 -3
  251. package/dist/tour/tour-root.svelte.d.ts +2 -1
  252. package/dist/tree-view/create-tree-view.svelte.d.ts +1 -2
  253. package/dist/tree-view/create-tree-view.svelte.js +3 -7
  254. package/dist/tree-view/tree-view-branch.svelte +3 -0
  255. package/dist/tree-view/tree-view-root.svelte +14 -7
  256. package/dist/tree-view/tree-view-root.svelte.d.ts +2 -2
  257. package/dist/types.d.ts +1 -0
  258. package/package.json +403 -403
  259. package/dist/create-unique-id.d.ts +0 -1
  260. package/dist/create-unique-id.js +0 -15
  261. package/dist/locale-provider/local-provider.svelte.d.ts +0 -8
  262. package/dist/pin-input/pin-input-clear-trigger.svelte +0 -31
  263. package/dist/pin-input/pin-input-clear-trigger.svelte.d.ts +0 -6
  264. package/dist/toast/create-toast.svelte.d.ts +0 -6
  265. package/dist/toast/create-toast.svelte.js +0 -6
  266. package/dist/toast/toast-actor.svelte +0 -19
  267. package/dist/toast/toast-actor.svelte.d.ts +0 -10
  268. package/dist/toast/toast-context.svelte.d.ts +0 -2
  269. /package/dist/locale-provider/{local-provider-context.svelte.d.ts → locale-provider-context.svelte.d.ts} +0 -0
  270. /package/dist/locale-provider/{local-provider-context.svelte.js → locale-provider-context.svelte.js} +0 -0
@@ -1,5 +1,5 @@
1
1
  <script lang="ts" module>
2
- import type {Assign, HtmlIngredientProps} from '../types.js';
2
+ import type {Assign, HtmlIngredientProps, Optional} from '../types.js';
3
3
  import type {
4
4
  CreateEditableProps,
5
5
  CreateEditableReturn,
@@ -8,7 +8,7 @@
8
8
  export interface EditableProps
9
9
  extends Assign<
10
10
  HtmlIngredientProps<'div', HTMLDivElement, CreateEditableReturn>,
11
- CreateEditableProps
11
+ Optional<CreateEditableProps, 'id'>
12
12
  > {}
13
13
  </script>
14
14
 
@@ -20,22 +20,25 @@
20
20
  import {setEditableContext} from './editable-context.svelte.js';
21
21
 
22
22
  let {
23
+ id,
23
24
  ref = $bindable(null),
24
25
  asChild,
25
26
  children,
26
27
  ...props
27
28
  }: EditableProps = $props();
28
29
 
30
+ let uid = $props.id();
31
+
29
32
  let [createEditableProps, localProps] = $derived(
30
- createSplitProps<CreateEditableProps>([
33
+ createSplitProps<Omit<CreateEditableProps, 'id'>>([
31
34
  'activationMode',
32
35
  'autoResize',
36
+ 'defaultEdit',
37
+ 'defaultValue',
33
38
  'disabled',
34
39
  'edit',
35
- 'editControlled',
36
40
  'finalFocusEl',
37
41
  'form',
38
- 'id',
39
42
  'ids',
40
43
  'invalid',
41
44
  'maxLength',
@@ -57,7 +60,10 @@
57
60
  ])(props),
58
61
  );
59
62
 
60
- let editable = createEditable(reflect(() => createEditableProps));
63
+ let editable = createEditable(
64
+ reflect(() => ({...createEditableProps, id: id ?? uid})),
65
+ );
66
+
61
67
  let mergedProps = $derived(mergeProps(editable.getRootProps(), localProps));
62
68
 
63
69
  setEditableContext(editable);
@@ -1,6 +1,6 @@
1
- import type { Assign, HtmlIngredientProps } from '../types.js';
1
+ import type { Assign, HtmlIngredientProps, Optional } from '../types.js';
2
2
  import type { CreateEditableProps, CreateEditableReturn } from './create-editable.svelte.js';
3
- export interface EditableProps extends Assign<HtmlIngredientProps<'div', HTMLDivElement, CreateEditableReturn>, CreateEditableProps> {
3
+ export interface EditableProps extends Assign<HtmlIngredientProps<'div', HTMLDivElement, CreateEditableReturn>, Optional<CreateEditableProps, 'id'>> {
4
4
  }
5
5
  declare const EditableRoot: import("svelte").Component<EditableProps, {}, "ref">;
6
6
  type EditableRoot = ReturnType<typeof EditableRoot>;
@@ -5,9 +5,10 @@ interface ElementIds {
5
5
  control?: string;
6
6
  errorText?: string;
7
7
  helperText?: string;
8
+ requiredIndicator?: string;
8
9
  }
9
10
  export interface CreateFieldProps {
10
- id?: string;
11
+ id: string;
11
12
  ids?: ElementIds;
12
13
  invalid?: boolean;
13
14
  required?: boolean;
@@ -1,21 +1,22 @@
1
+ import { getLocaleContext } from '../locale-provider/locale-provider-context.svelte.js';
1
2
  import { ariaAttr, dataAttr, getDocument, getWindow } from '@zag-js/dom-query';
2
3
  import { reflect } from '@zag-js/svelte';
3
- import { createUniqueId } from '../create-unique-id.js';
4
4
  import { getEnvironmentContext } from '../environment-provider/enviroment-provider-context.svelte.js';
5
5
  import { parts } from './field-anatomy.js';
6
6
  export function createField(props) {
7
+ const locale = getLocaleContext();
7
8
  const environment = getEnvironmentContext();
8
- const id_ = createUniqueId();
9
9
  const {
10
10
  /**/
11
11
  ids, invalid, disabled, required, readOnly, } = $derived.by(() => {
12
- const id = props.id ?? id_;
12
+ const id = props.id;
13
13
  const ids = {
14
14
  root: props.ids?.root ?? `field:${id}`,
15
15
  label: props.ids?.label ?? `field:${id}:label`,
16
16
  control: props.ids?.control ?? `field:${id}:control`,
17
17
  errorText: props.ids?.errorText ?? `field:${id}:error-text`,
18
18
  helperText: props.ids?.helperText ?? `field:${id}:helper-text`,
19
+ requiredIndicator: props.ids?.requiredIndicator ?? `field:${id}:required-indicator`,
19
20
  };
20
21
  return {
21
22
  ids,
@@ -41,6 +42,7 @@ export function createField(props) {
41
42
  return {
42
43
  ...parts.root.attrs,
43
44
  id: ids.root,
45
+ dir: locale?.dir,
44
46
  role: 'group',
45
47
  'data-invalid': dataAttr(invalid),
46
48
  'data-disabled': dataAttr(disabled),
@@ -52,6 +54,7 @@ export function createField(props) {
52
54
  return {
53
55
  ...parts.label.attrs,
54
56
  id: ids.label,
57
+ dir: locale?.dir,
55
58
  for: ids.control,
56
59
  'data-invalid': dataAttr(invalid),
57
60
  'data-disabled': dataAttr(disabled),
@@ -62,6 +65,8 @@ export function createField(props) {
62
65
  function getRequiredIndicatorProps() {
63
66
  return {
64
67
  ...parts.requiredIndicator.attrs,
68
+ id: ids.requiredIndicator,
69
+ dir: locale?.dir,
65
70
  hidden: !required,
66
71
  'aria-hidden': true,
67
72
  'data-invalid': dataAttr(invalid),
@@ -73,6 +78,7 @@ export function createField(props) {
73
78
  return {
74
79
  ...parts.errorText.attrs,
75
80
  id: ids.errorText,
81
+ dir: locale?.dir,
76
82
  hidden: !hasErrorText,
77
83
  'aria-live': 'polite',
78
84
  'data-invalid': dataAttr(invalid),
@@ -85,6 +91,7 @@ export function createField(props) {
85
91
  return {
86
92
  ...parts.helperText.attrs,
87
93
  id: ids.helperText,
94
+ dir: locale?.dir,
88
95
  'data-invalid': dataAttr(invalid),
89
96
  'data-disabled': dataAttr(disabled),
90
97
  'data-required': dataAttr(required),
@@ -94,6 +101,7 @@ export function createField(props) {
94
101
  function getControlProps() {
95
102
  return {
96
103
  id: ids.control,
104
+ dir: locale?.dir,
97
105
  disabled,
98
106
  required,
99
107
  'aria-describedby': ariaDescribedby,
@@ -1,5 +1,5 @@
1
1
  <script lang="ts" module>
2
- import type {Assign, HtmlIngredientProps} from '../types.js';
2
+ import type {Assign, HtmlIngredientProps, Optional} from '../types.js';
3
3
  import type {
4
4
  CreateFieldProps,
5
5
  CreateFieldReturn,
@@ -8,7 +8,7 @@
8
8
  export interface FieldProps
9
9
  extends Assign<
10
10
  HtmlIngredientProps<'div', HTMLDivElement, CreateFieldReturn>,
11
- CreateFieldProps
11
+ Optional<CreateFieldProps, 'id'>
12
12
  >,
13
13
  PresenceStrategyProps {}
14
14
  </script>
@@ -23,30 +23,35 @@
23
23
  import {setFieldContext} from './field-context.svelte.js';
24
24
 
25
25
  let {
26
+ id,
26
27
  ref = $bindable(null),
27
28
  asChild,
28
29
  children,
29
30
  ...props
30
31
  }: FieldProps = $props();
31
32
 
32
- let [presenceStrategyProps, rest] = $derived(
33
+ let uid = $props.id();
34
+
35
+ let [presenceStrategyProps, fieldProps] = $derived(
33
36
  createSplitProps<PresenceStrategyProps>(['keepMounted', 'lazyMount'])(
34
37
  props,
35
38
  ),
36
39
  );
37
40
 
38
41
  let [createFieldProps, localProps] = $derived(
39
- createSplitProps<CreateFieldProps>([
40
- 'id',
42
+ createSplitProps<Omit<CreateFieldProps, 'id'>>([
41
43
  'ids',
42
44
  'invalid',
43
45
  'disabled',
44
46
  'readOnly',
45
47
  'required',
46
- ])(rest),
48
+ ])(fieldProps),
49
+ );
50
+
51
+ let field = createField(
52
+ reflect(() => ({...createFieldProps, id: id ?? uid})),
47
53
  );
48
54
 
49
- let field = createField(reflect(() => createFieldProps));
50
55
  let mergedProps = $derived(mergeProps(field.getRootProps(), localProps));
51
56
 
52
57
  setFieldContext(field);
@@ -1,6 +1,6 @@
1
- import type { Assign, HtmlIngredientProps } from '../types.js';
1
+ import type { Assign, HtmlIngredientProps, Optional } from '../types.js';
2
2
  import type { CreateFieldProps, CreateFieldReturn } from './create-field.svelte.js';
3
- export interface FieldProps extends Assign<HtmlIngredientProps<'div', HTMLDivElement, CreateFieldReturn>, CreateFieldProps>, PresenceStrategyProps {
3
+ export interface FieldProps extends Assign<HtmlIngredientProps<'div', HTMLDivElement, CreateFieldReturn>, Optional<CreateFieldProps, 'id'>>, PresenceStrategyProps {
4
4
  }
5
5
  import type { PresenceStrategyProps } from '../presence/create-presence.svelte.js';
6
6
  declare const FieldRoot: import("svelte").Component<FieldProps, {}, "ref">;
@@ -1,6 +1,5 @@
1
1
  import * as fileUpload from '@zag-js/file-upload';
2
- export interface CreateFileUploadProps extends Omit<fileUpload.Context, 'id' | 'dir' | 'getRootNode'> {
3
- id?: string;
2
+ export interface CreateFileUploadProps extends Omit<fileUpload.Props, 'dir' | 'getRootNode'> {
4
3
  }
5
4
  export interface CreateFileUploadReturn extends fileUpload.Api<any> {
6
5
  }
@@ -1,16 +1,13 @@
1
1
  import * as fileUpload from '@zag-js/file-upload';
2
2
  import { normalizeProps, reflect, useMachine } from '@zag-js/svelte';
3
- import { createUniqueId } from '../create-unique-id.js';
4
3
  import { getEnvironmentContext } from '../environment-provider/enviroment-provider-context.svelte.js';
5
4
  import { getFieldContext } from '../field/field-context.svelte.js';
6
- import { getLocaleContext } from '../locale-provider/local-provider-context.svelte.js';
5
+ import { getLocaleContext } from '../locale-provider/locale-provider-context.svelte.js';
7
6
  export function createFileUpload(props) {
8
7
  const field = getFieldContext();
9
8
  const locale = getLocaleContext();
10
9
  const environment = getEnvironmentContext();
11
- const id = createUniqueId();
12
- const context = reflect(() => ({
13
- id,
10
+ const service = useMachine(fileUpload.machine, () => ({
14
11
  dir: locale?.dir,
15
12
  ids: {
16
13
  label: field?.ids.label,
@@ -23,15 +20,14 @@ export function createFileUpload(props) {
23
20
  getRootNode: environment?.getRootNode,
24
21
  ...props,
25
22
  }));
26
- const [state, send] = useMachine(fileUpload.machine(context), { context });
27
23
  return reflect(() => {
28
- const o = fileUpload.connect(state, send, normalizeProps);
24
+ const api = fileUpload.connect(service, normalizeProps);
29
25
  return {
30
- ...o,
26
+ ...api,
31
27
  getHiddenInputProps() {
32
28
  return {
33
29
  'aria-describedby': field?.['aria-describedby'],
34
- ...o.getHiddenInputProps(),
30
+ ...api.getHiddenInputProps(),
35
31
  };
36
32
  },
37
33
  };
@@ -1,5 +1,5 @@
1
1
  <script lang="ts" module>
2
- import type {Assign, HtmlIngredientProps} from '../types.js';
2
+ import type {Assign, HtmlIngredientProps, Optional} from '../types.js';
3
3
  import type {
4
4
  CreateFileUploadProps,
5
5
  CreateFileUploadReturn,
@@ -8,7 +8,7 @@
8
8
  export interface FileUploadProps
9
9
  extends Assign<
10
10
  HtmlIngredientProps<'div', HTMLDivElement, CreateFileUploadReturn>,
11
- CreateFileUploadProps
11
+ Optional<CreateFileUploadProps, 'id'>
12
12
  > {}
13
13
  </script>
14
14
 
@@ -20,27 +20,28 @@
20
20
  import {setFileUploadContext} from './file-upload-context.svelte.js';
21
21
 
22
22
  let {
23
+ id,
23
24
  ref = $bindable(null),
24
25
  asChild,
25
26
  children,
26
27
  ...props
27
28
  }: FileUploadProps = $props();
28
29
 
30
+ let uid = $props.id();
31
+
29
32
  let [createFileUploadProps, localProps] = $derived(
30
- createSplitProps<CreateFileUploadProps>([
33
+ createSplitProps<Omit<CreateFileUploadProps, 'id'>>([
31
34
  'accept',
32
35
  'allowDrop',
33
36
  'capture',
34
37
  'directory',
35
38
  'disabled',
36
- 'id',
37
39
  'ids',
38
40
  'invalid',
39
41
  'locale',
40
42
  'maxFileSize',
41
43
  'maxFiles',
42
44
  'minFileSize',
43
- 'minFileSize',
44
45
  'name',
45
46
  'onFileAccept',
46
47
  'onFileChange',
@@ -52,7 +53,9 @@
52
53
  ])(props),
53
54
  );
54
55
 
55
- let fileUpload = createFileUpload(reflect(() => createFileUploadProps));
56
+ let fileUpload = createFileUpload(
57
+ reflect(() => ({...createFileUploadProps, id: id ?? uid})),
58
+ );
56
59
 
57
60
  let mergedProps = $derived(mergeProps(fileUpload.getRootProps(), localProps));
58
61
 
@@ -1,6 +1,6 @@
1
- import type { Assign, HtmlIngredientProps } from '../types.js';
1
+ import type { Assign, HtmlIngredientProps, Optional } from '../types.js';
2
2
  import type { CreateFileUploadProps, CreateFileUploadReturn } from './create-file-upload.svelte.js';
3
- export interface FileUploadProps extends Assign<HtmlIngredientProps<'div', HTMLDivElement, CreateFileUploadReturn>, CreateFileUploadProps> {
3
+ export interface FileUploadProps extends Assign<HtmlIngredientProps<'div', HTMLDivElement, CreateFileUploadReturn>, Optional<CreateFileUploadProps, 'id'>> {
4
4
  }
5
5
  declare const FileUploadRoot: import("svelte").Component<FileUploadProps, {}, "ref">;
6
6
  type FileUploadRoot = ReturnType<typeof FileUploadRoot>;
@@ -1,6 +1,5 @@
1
1
  import * as floatingPanel from '@zag-js/floating-panel';
2
- export interface CreateFloatingPanelProps extends Omit<floatingPanel.Context, 'id' | 'dir' | 'getRootNode'> {
3
- id?: string;
2
+ export interface CreateFloatingPanelProps extends Omit<floatingPanel.Props, 'dir' | 'getRootNode'> {
4
3
  }
5
4
  export interface CreateFloatingPanelReturn extends floatingPanel.Api {
6
5
  }
@@ -1,18 +1,14 @@
1
1
  import * as floatingPanel from '@zag-js/floating-panel';
2
2
  import { normalizeProps, reflect, useMachine } from '@zag-js/svelte';
3
- import { createUniqueId } from '../create-unique-id.js';
4
3
  import { getEnvironmentContext } from '../environment-provider/enviroment-provider-context.svelte.js';
5
- import { getLocaleContext } from '../locale-provider/local-provider-context.svelte.js';
4
+ import { getLocaleContext } from '../locale-provider/locale-provider-context.svelte.js';
6
5
  export function createFloatingPanel(props) {
7
6
  const locale = getLocaleContext();
8
7
  const environment = getEnvironmentContext();
9
- const id = createUniqueId();
10
- const context = reflect(() => ({
11
- id,
8
+ const service = useMachine(floatingPanel.machine, () => ({
12
9
  dir: locale?.dir,
13
10
  getRootNode: environment?.getRootNode,
14
11
  ...props,
15
12
  }));
16
- const [state, send] = useMachine(floatingPanel.machine(context), { context });
17
- return reflect(() => floatingPanel.connect(state, send, normalizeProps));
13
+ return reflect(() => floatingPanel.connect(service, normalizeProps));
18
14
  }
@@ -1 +1 @@
1
- export { anatomy } from '@zag-js/floating-panel';
1
+ export { floating as anatomy } from '@zag-js/floating-panel';
@@ -1 +1 @@
1
- export { anatomy } from '@zag-js/floating-panel';
1
+ export { floating as anatomy } from '@zag-js/floating-panel';
@@ -1,13 +1,14 @@
1
1
  <script lang="ts" module>
2
2
  import type {Snippet} from 'svelte';
3
3
  import type {PresenceStrategyProps} from '../presence/create-presence.svelte.js';
4
+ import type {Optional} from '../types.js';
4
5
  import type {
5
6
  CreateFloatingPanelProps,
6
7
  CreateFloatingPanelReturn,
7
8
  } from './create-floating-panel.svelte.js';
8
9
 
9
10
  export interface FloatingPanelProps
10
- extends CreateFloatingPanelProps,
11
+ extends Optional<CreateFloatingPanelProps, 'id'>,
11
12
  PresenceStrategyProps {
12
13
  children?: Snippet<[CreateFloatingPanelReturn]>;
13
14
  }
@@ -21,7 +22,9 @@
21
22
  import {createFloatingPanel} from './create-floating-panel.svelte.js';
22
23
  import {setFloatingPanelContext} from './floating-panel-context.svelte.js';
23
24
 
24
- let {children, ...props}: FloatingPanelProps = $props();
25
+ let {id, children, ...props}: FloatingPanelProps = $props();
26
+
27
+ let uid = $props.id();
25
28
 
26
29
  let [presenceStrategyProps, createFloatingPanelProps] = $derived(
27
30
  createSplitProps<PresenceStrategyProps>(['lazyMount', 'keepMounted'])(
@@ -30,7 +33,7 @@
30
33
  );
31
34
 
32
35
  let floatingPanel = createFloatingPanel(
33
- reflect(() => createFloatingPanelProps),
36
+ reflect(() => ({...createFloatingPanelProps, id: id ?? uid})),
34
37
  );
35
38
 
36
39
  let presence = createPresence(
@@ -1,7 +1,8 @@
1
1
  import type { Snippet } from 'svelte';
2
2
  import type { PresenceStrategyProps } from '../presence/create-presence.svelte.js';
3
+ import type { Optional } from '../types.js';
3
4
  import type { CreateFloatingPanelProps, CreateFloatingPanelReturn } from './create-floating-panel.svelte.js';
4
- export interface FloatingPanelProps extends CreateFloatingPanelProps, PresenceStrategyProps {
5
+ export interface FloatingPanelProps extends Optional<CreateFloatingPanelProps, 'id'>, PresenceStrategyProps {
5
6
  children?: Snippet<[CreateFloatingPanelReturn]>;
6
7
  }
7
8
  declare const FloatingPanelRoot: import("svelte").Component<FloatingPanelProps, {}, "">;
@@ -0,0 +1,104 @@
1
+ <script module>
2
+ import * as focusTrap from '@zag-js/focus-trap';
3
+
4
+ interface FocusTrapOptions
5
+ extends Omit<focusTrap.FocusTrapOptions, 'document'> {
6
+ disabled?: boolean;
7
+ }
8
+
9
+ export interface FocusTrapProps
10
+ extends Assign<
11
+ HtmlIngredientProps<'div', HTMLDivElement, never, Action>,
12
+ FocusTrapOptions
13
+ > {}
14
+
15
+ function noop() {}
16
+
17
+ const trapFocus: Action<HTMLElement, FocusTrapOptions> = (node, options) => {
18
+ let destroy: () => void = noop;
19
+
20
+ function update(newOptions: FocusTrapOptions) {
21
+ if (newOptions.disabled) {
22
+ destroy();
23
+ destroy = noop;
24
+ } else {
25
+ destroy = focusTrap.trapFocus(node, newOptions);
26
+ }
27
+ }
28
+
29
+ update(options);
30
+
31
+ return {
32
+ update,
33
+ destroy,
34
+ };
35
+ };
36
+ </script>
37
+
38
+ <script lang="ts">
39
+ import {browser} from '$app/environment';
40
+ import {getEnvironmentContext} from '../environment-provider/enviroment-provider-context.svelte.js';
41
+ import type {Action, ActionReturn} from 'svelte/action';
42
+ import {createSplitProps} from '../create-split-props.js';
43
+ import type {Assign, HtmlIngredientProps} from '../types.js';
44
+
45
+ let {
46
+ ref = $bindable(null),
47
+ asChild,
48
+ children,
49
+ ...props
50
+ }: FocusTrapProps = $props();
51
+
52
+ let [focusTrapProps, localProps] = $derived(
53
+ createSplitProps<FocusTrapOptions>([
54
+ 'allowOutsideClick',
55
+ 'checkCanFocusTrap',
56
+ 'checkCanReturnFocus',
57
+ 'clickOutsideDeactivates',
58
+ 'delayInitialFocus',
59
+ 'disabled',
60
+ 'escapeDeactivates',
61
+ 'fallbackFocus',
62
+ 'initialFocus',
63
+ 'isKeyBackward',
64
+ 'isKeyForward',
65
+ 'onActivate',
66
+ 'onDeactivate',
67
+ 'onPause',
68
+ 'onPostActivate',
69
+ 'onPostDeactivate',
70
+ 'onPostPause',
71
+ 'onPostUnpause',
72
+ 'onUnpause',
73
+ 'preventScroll',
74
+ 'returnFocusOnDeactivate',
75
+ 'setReturnFocus',
76
+ 'trapStack',
77
+ ])(props),
78
+ );
79
+
80
+ let environment = getEnvironmentContext();
81
+
82
+ let focusTrapOptions: focusTrap.FocusTrapOptions = $derived({
83
+ ...focusTrapProps,
84
+ document: browser ? environment?.getDocument() : undefined,
85
+ });
86
+
87
+ let mergedProps = $derived({
88
+ ...localProps,
89
+ 'data-scope': 'focus-trap',
90
+ 'data-part': 'root',
91
+ });
92
+ </script>
93
+
94
+ {#if asChild}
95
+ {@render asChild(
96
+ (node: HTMLElement) =>
97
+ trapFocus(node, focusTrapOptions) as unknown as ActionReturn,
98
+ mergedProps,
99
+ )}
100
+ {:else}
101
+ <div bind:this={ref} use:trapFocus={focusTrapOptions} {...mergedProps}>
102
+ {@render children?.()}
103
+ </div>
104
+ {/if}
@@ -0,0 +1,11 @@
1
+ import * as focusTrap from '@zag-js/focus-trap';
2
+ interface FocusTrapOptions extends Omit<focusTrap.FocusTrapOptions, 'document'> {
3
+ disabled?: boolean;
4
+ }
5
+ export interface FocusTrapProps extends Assign<HtmlIngredientProps<'div', HTMLDivElement, never, Action>, FocusTrapOptions> {
6
+ }
7
+ import type { Action } from 'svelte/action';
8
+ import type { Assign, HtmlIngredientProps } from '../types.js';
9
+ declare const FocusTrap: import("svelte").Component<FocusTrapProps, {}, "ref">;
10
+ type FocusTrap = ReturnType<typeof FocusTrap>;
11
+ export default FocusTrap;
@@ -0,0 +1 @@
1
+ export { default as FocusTrap, type FocusTrapProps } from './focus-trap.svelte';
@@ -0,0 +1 @@
1
+ export { default as FocusTrap } from './focus-trap.svelte';
@@ -25,12 +25,18 @@
25
25
  );
26
26
 
27
27
  let chunks = $derived(highlightWord(highlightWordProps));
28
+
29
+ let mergedProps = $derived({
30
+ ...localProps,
31
+ 'data-scope': 'highlight',
32
+ 'data-part': 'root',
33
+ });
28
34
  </script>
29
35
 
30
36
  {#if asChild}
31
- {@render asChild(localProps)}
37
+ {@render asChild(mergedProps)}
32
38
  {:else}
33
- <div bind:this={ref} data-scope="highlight" data-part="root" {...localProps}>
39
+ <div bind:this={ref} {...mergedProps}>
34
40
  {#each chunks as chunk}
35
41
  {#if chunk.match}
36
42
  <mark>{chunk.text}</mark>
@@ -1,7 +1,5 @@
1
1
  import * as hoverCard from '@zag-js/hover-card';
2
- export interface CreateHoverCardProps extends Omit<hoverCard.Context, 'id' | 'dir' | 'getRootNode' | 'open.controlled'> {
3
- id?: string;
4
- openControlled?: boolean;
2
+ export interface CreateHoverCardProps extends Omit<hoverCard.Props, 'dir' | 'getRootNode'> {
5
3
  }
6
4
  export interface CreateHoverCardReturn extends hoverCard.Api {
7
5
  }
@@ -1,19 +1,14 @@
1
1
  import * as hoverCard from '@zag-js/hover-card';
2
2
  import { normalizeProps, reflect, useMachine } from '@zag-js/svelte';
3
- import { createUniqueId } from '../create-unique-id.js';
4
3
  import { getEnvironmentContext } from '../environment-provider/enviroment-provider-context.svelte.js';
5
- import { getLocaleContext } from '../locale-provider/local-provider-context.svelte.js';
4
+ import { getLocaleContext } from '../locale-provider/locale-provider-context.svelte.js';
6
5
  export function createHoverCard(props) {
7
6
  const locale = getLocaleContext();
8
7
  const environment = getEnvironmentContext();
9
- const id = createUniqueId();
10
- const context = reflect(() => ({
11
- id,
8
+ const service = useMachine(hoverCard.machine, () => ({
12
9
  dir: locale?.dir,
13
10
  getRootNode: environment?.getRootNode,
14
- 'open.controlled': props.openControlled,
15
11
  ...props,
16
12
  }));
17
- const [state, send] = useMachine(hoverCard.machine(context), { context });
18
- return reflect(() => hoverCard.connect(state, send, normalizeProps));
13
+ return reflect(() => hoverCard.connect(service, normalizeProps));
19
14
  }
@@ -1,13 +1,14 @@
1
1
  <script lang="ts" module>
2
2
  import type {Snippet} from 'svelte';
3
3
  import type {PresenceStrategyProps} from '../presence/create-presence.svelte.js';
4
+ import type {Optional} from '../types.js';
4
5
  import type {
5
6
  CreateHoverCardProps,
6
7
  CreateHoverCardReturn,
7
8
  } from './create-hover-card.svelte.js';
8
9
 
9
10
  export interface HoverCardProps
10
- extends CreateHoverCardProps,
11
+ extends Optional<CreateHoverCardProps, 'id'>,
11
12
  PresenceStrategyProps {
12
13
  children?: Snippet<[CreateHoverCardReturn]>;
13
14
  }
@@ -21,22 +22,29 @@
21
22
  import {createHoverCard} from './create-hover-card.svelte.js';
22
23
  import {setHoverCardContext} from './hover-card-context.svelte.js';
23
24
 
24
- let {children, ...props}: HoverCardProps = $props();
25
+ let {id, children, ...props}: HoverCardProps = $props();
26
+
27
+ let uid = $props.id();
25
28
 
26
29
  let [createHoverCardProps, presenceStrategyProps] = $derived(
27
- createSplitProps<CreateHoverCardProps>([
30
+ createSplitProps<Omit<CreateHoverCardProps, 'id'>>([
28
31
  'closeDelay',
29
- 'id',
32
+ 'defaultOpen',
30
33
  'ids',
34
+ 'onFocusOutside',
35
+ 'onInteractOutside',
31
36
  'onOpenChange',
37
+ 'onPointerDownOutside',
32
38
  'open',
33
- 'openControlled',
34
39
  'openDelay',
35
40
  'positioning',
36
41
  ])(props),
37
42
  );
38
43
 
39
- let hoverCard = createHoverCard(reflect(() => createHoverCardProps));
44
+ let hoverCard = createHoverCard(
45
+ reflect(() => ({...createHoverCardProps, id: id ?? uid})),
46
+ );
47
+
40
48
  let presence = createPresence(
41
49
  reflect(() => ({
42
50
  ...presenceStrategyProps,
@@ -1,7 +1,8 @@
1
1
  import type { Snippet } from 'svelte';
2
2
  import type { PresenceStrategyProps } from '../presence/create-presence.svelte.js';
3
+ import type { Optional } from '../types.js';
3
4
  import type { CreateHoverCardProps, CreateHoverCardReturn } from './create-hover-card.svelte.js';
4
- export interface HoverCardProps extends CreateHoverCardProps, PresenceStrategyProps {
5
+ export interface HoverCardProps extends Optional<CreateHoverCardProps, 'id'>, PresenceStrategyProps {
5
6
  children?: Snippet<[CreateHoverCardReturn]>;
6
7
  }
7
8
  declare const HoverCardRoot: import("svelte").Component<HoverCardProps, {}, "">;