@pzerelles/headlessui-svelte 2.1.1-next.1 → 2.1.2-next.11

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 (238) hide show
  1. package/dist/button/Button.svelte +6 -10
  2. package/dist/button/Button.svelte.d.ts +34 -26
  3. package/dist/checkbox/Checkbox.svelte +43 -25
  4. package/dist/checkbox/Checkbox.svelte.d.ts +42 -28
  5. package/dist/close-button/CloseButton.svelte +5 -4
  6. package/dist/close-button/CloseButton.svelte.d.ts +36 -13
  7. package/dist/combobox/Combobox.svelte +2 -2
  8. package/dist/combobox/Combobox.svelte.d.ts +9 -9
  9. package/dist/data-interactive/DataInteractive.svelte +41 -0
  10. package/dist/data-interactive/DataInteractive.svelte.d.ts +39 -0
  11. package/dist/data-interactive/index.d.ts +1 -0
  12. package/dist/data-interactive/index.js +1 -0
  13. package/dist/description/Description.svelte +10 -53
  14. package/dist/description/Description.svelte.d.ts +15 -32
  15. package/dist/description/context.svelte.d.ts +17 -0
  16. package/dist/description/context.svelte.js +51 -0
  17. package/dist/dialog/Dialog.svelte +51 -0
  18. package/dist/dialog/Dialog.svelte.d.ts +60 -0
  19. package/dist/dialog/DialogBackdrop.svelte +39 -0
  20. package/dist/dialog/DialogBackdrop.svelte.d.ts +38 -0
  21. package/dist/dialog/DialogPanel.svelte +46 -0
  22. package/dist/dialog/DialogPanel.svelte.d.ts +40 -0
  23. package/dist/dialog/DialogTitle.svelte +29 -0
  24. package/dist/dialog/DialogTitle.svelte.d.ts +34 -0
  25. package/dist/dialog/InternalDialog.svelte +233 -0
  26. package/dist/dialog/InternalDialog.svelte.d.ts +42 -0
  27. package/dist/dialog/context.svelte.d.ts +15 -0
  28. package/dist/dialog/context.svelte.js +16 -0
  29. package/dist/dialog/index.d.ts +4 -0
  30. package/dist/dialog/index.js +4 -0
  31. package/dist/field/Field.svelte +8 -11
  32. package/dist/field/Field.svelte.d.ts +21 -17
  33. package/dist/fieldset/Fieldset.svelte +11 -9
  34. package/dist/fieldset/Fieldset.svelte.d.ts +21 -17
  35. package/dist/focus-trap/FocusTrap.svelte +325 -0
  36. package/dist/focus-trap/FocusTrap.svelte.d.ts +46 -0
  37. package/dist/focus-trap/FocusTrapFeatures.d.ts +14 -0
  38. package/dist/focus-trap/FocusTrapFeatures.js +15 -0
  39. package/dist/hooks/use-controllable.svelte.d.ts +1 -1
  40. package/dist/hooks/use-controllable.svelte.js +3 -3
  41. package/dist/hooks/use-did-element-move.svelte.js +5 -10
  42. package/dist/hooks/use-escape.svelte.d.ts +5 -0
  43. package/dist/hooks/use-escape.svelte.js +26 -0
  44. package/dist/hooks/use-event-listener.svelte.d.ts +6 -0
  45. package/dist/hooks/use-event-listener.svelte.js +12 -0
  46. package/dist/hooks/use-inert-others.svelte.d.ts +2 -2
  47. package/dist/hooks/use-inert-others.svelte.js +3 -3
  48. package/dist/hooks/use-is-mounted.svelte.d.ts +3 -0
  49. package/dist/hooks/use-is-mounted.svelte.js +14 -0
  50. package/dist/hooks/use-is-touch-device.svelte.d.ts +3 -0
  51. package/dist/hooks/use-is-touch-device.svelte.js +20 -0
  52. package/dist/hooks/use-root-containers.svelte.d.ts +9 -0
  53. package/dist/hooks/use-root-containers.svelte.js +50 -0
  54. package/dist/hooks/use-tab-direction.svelte.d.ts +7 -0
  55. package/dist/hooks/use-tab-direction.svelte.js +25 -0
  56. package/dist/hooks/use-transition.svelte.js +14 -13
  57. package/dist/hooks/use-tree-walker.svelte.d.ts +8 -0
  58. package/dist/hooks/use-tree-walker.svelte.js +19 -0
  59. package/dist/hooks/use-watch.svelte.d.ts +4 -0
  60. package/dist/hooks/use-watch.svelte.js +16 -0
  61. package/dist/hooks/use-window-event.svelte.d.ts +6 -0
  62. package/dist/hooks/use-window-event.svelte.js +12 -0
  63. package/dist/index.d.ts +10 -0
  64. package/dist/index.js +10 -0
  65. package/dist/input/Input.svelte +59 -0
  66. package/dist/input/Input.svelte.d.ts +50 -0
  67. package/dist/input/index.d.ts +1 -0
  68. package/dist/input/index.js +1 -0
  69. package/dist/internal/FloatingProvider.svelte +12 -0
  70. package/dist/internal/FloatingProvider.svelte.d.ts +22 -0
  71. package/dist/internal/FocusSentinel.svelte.d.ts +4 -1
  72. package/dist/internal/ForcePortalRoot.svelte +6 -0
  73. package/dist/internal/ForcePortalRoot.svelte.d.ts +22 -0
  74. package/dist/internal/FormFields.svelte.d.ts +4 -1
  75. package/dist/internal/FormResolver.svelte.d.ts +4 -1
  76. package/dist/internal/Hidden.svelte +6 -14
  77. package/dist/internal/Hidden.svelte.d.ts +19 -15
  78. package/dist/internal/HiddenFeatures.d.ts +5 -0
  79. package/dist/internal/HiddenFeatures.js +9 -0
  80. package/dist/internal/HoistFormFields.svelte.d.ts +4 -1
  81. package/dist/internal/MainTreeProvider.svelte +45 -0
  82. package/dist/internal/MainTreeProvider.svelte.d.ts +31 -0
  83. package/dist/internal/Portal.svelte.d.ts +4 -1
  84. package/dist/internal/close-provider.d.ts +7 -0
  85. package/dist/internal/close-provider.js +7 -0
  86. package/dist/internal/floating-provider.svelte.d.ts +3 -0
  87. package/dist/internal/floating-provider.svelte.js +206 -0
  88. package/dist/internal/floating.svelte.d.ts +50 -20
  89. package/dist/internal/floating.svelte.js +100 -271
  90. package/dist/internal/inner.svelte.d.ts +91 -0
  91. package/dist/internal/inner.svelte.js +202 -0
  92. package/dist/internal/open-closed.d.ts +1 -1
  93. package/dist/internal/open-closed.js +1 -1
  94. package/dist/label/Label.svelte +17 -65
  95. package/dist/label/Label.svelte.d.ts +19 -32
  96. package/dist/label/context.svelte.d.ts +17 -0
  97. package/dist/label/context.svelte.js +56 -0
  98. package/dist/legend/Legend.svelte +4 -3
  99. package/dist/legend/Legend.svelte.d.ts +33 -15
  100. package/dist/listbox/Listbox.svelte +40 -74
  101. package/dist/listbox/Listbox.svelte.d.ts +30 -72
  102. package/dist/listbox/ListboxButton.svelte +16 -18
  103. package/dist/listbox/ListboxButton.svelte.d.ts +16 -7
  104. package/dist/listbox/ListboxOption.svelte +10 -10
  105. package/dist/listbox/ListboxOption.svelte.d.ts +22 -11
  106. package/dist/listbox/ListboxOptions.svelte +62 -60
  107. package/dist/listbox/ListboxOptions.svelte.d.ts +23 -7
  108. package/dist/listbox/ListboxSelectedOption.svelte +15 -7
  109. package/dist/listbox/ListboxSelectedOption.svelte.d.ts +24 -14
  110. package/dist/listbox/context.svelte.d.ts +75 -0
  111. package/dist/listbox/context.svelte.js +36 -0
  112. package/dist/menu/Menu.svelte +235 -0
  113. package/dist/menu/Menu.svelte.d.ts +42 -0
  114. package/dist/menu/MenuButton.svelte +129 -0
  115. package/dist/menu/MenuButton.svelte.d.ts +52 -0
  116. package/dist/menu/MenuHeading.svelte +19 -0
  117. package/dist/menu/MenuHeading.svelte.d.ts +39 -0
  118. package/dist/menu/MenuItem.svelte +114 -0
  119. package/dist/menu/MenuItem.svelte.d.ts +49 -0
  120. package/dist/menu/MenuItems.svelte +248 -0
  121. package/dist/menu/MenuItems.svelte.d.ts +55 -0
  122. package/dist/menu/MenuSection.svelte +14 -0
  123. package/dist/menu/MenuSection.svelte.d.ts +35 -0
  124. package/dist/menu/MenuSeparator.svelte +9 -0
  125. package/dist/menu/MenuSeparator.svelte.d.ts +35 -0
  126. package/dist/menu/context.svelte.d.ts +47 -0
  127. package/dist/menu/context.svelte.js +21 -0
  128. package/dist/menu/index.d.ts +7 -0
  129. package/dist/menu/index.js +7 -0
  130. package/dist/portal/InternalPortal.svelte +22 -33
  131. package/dist/portal/InternalPortal.svelte.d.ts +16 -7
  132. package/dist/portal/Portal.svelte +4 -8
  133. package/dist/portal/Portal.svelte.d.ts +6 -6
  134. package/dist/portal/PortalGroup.svelte +5 -6
  135. package/dist/portal/PortalGroup.svelte.d.ts +16 -7
  136. package/dist/switch/Switch.svelte +41 -37
  137. package/dist/switch/Switch.svelte.d.ts +24 -7
  138. package/dist/switch/SwitchGroup.svelte +7 -8
  139. package/dist/switch/SwitchGroup.svelte.d.ts +14 -7
  140. package/dist/tabs/Tab.svelte +9 -14
  141. package/dist/tabs/Tab.svelte.d.ts +18 -6
  142. package/dist/tabs/TabGroup.svelte +20 -23
  143. package/dist/tabs/TabGroup.svelte.d.ts +19 -6
  144. package/dist/tabs/TabList.svelte +5 -7
  145. package/dist/tabs/TabList.svelte.d.ts +13 -6
  146. package/dist/tabs/TabPanel.svelte +30 -32
  147. package/dist/tabs/TabPanel.svelte.d.ts +19 -6
  148. package/dist/tabs/TabPanels.svelte +5 -6
  149. package/dist/tabs/TabPanels.svelte.d.ts +13 -6
  150. package/dist/textarea/Textarea.svelte +67 -0
  151. package/dist/textarea/Textarea.svelte.d.ts +50 -0
  152. package/dist/textarea/index.d.ts +1 -0
  153. package/dist/textarea/index.js +1 -0
  154. package/dist/transition/InternalTransitionChild.svelte +178 -0
  155. package/dist/transition/InternalTransitionChild.svelte.d.ts +55 -0
  156. package/dist/transition/Transition.svelte +89 -0
  157. package/dist/transition/Transition.svelte.d.ts +42 -0
  158. package/dist/transition/TransitionChild.svelte +16 -0
  159. package/dist/transition/TransitionChild.svelte.d.ts +44 -0
  160. package/dist/transition/context.svelte.d.ts +64 -0
  161. package/dist/transition/context.svelte.js +120 -0
  162. package/dist/transition/index.d.ts +2 -0
  163. package/dist/transition/index.js +2 -0
  164. package/dist/utils/ElementOrComponent.svelte +26 -0
  165. package/dist/utils/ElementOrComponent.svelte.d.ts +56 -0
  166. package/dist/utils/Generic.svelte +44 -0
  167. package/dist/utils/Generic.svelte.d.ts +35 -0
  168. package/dist/utils/StableCollection.svelte +1 -1
  169. package/dist/utils/StableCollection.svelte.d.ts +4 -1
  170. package/dist/utils/active-element-history.d.ts +1 -0
  171. package/dist/utils/active-element-history.js +35 -0
  172. package/dist/utils/alternative-types.d.ts +21 -0
  173. package/dist/utils/alternative-types.js +1 -0
  174. package/dist/utils/class-names.d.ts +1 -0
  175. package/dist/utils/class-names.js +10 -0
  176. package/dist/utils/floating-ui/svelte/components/FloatingNode.svelte +17 -0
  177. package/dist/utils/floating-ui/svelte/components/FloatingNode.svelte.d.ts +23 -0
  178. package/dist/utils/floating-ui/svelte/components/FloatingTree.svelte +50 -0
  179. package/dist/utils/floating-ui/svelte/components/FloatingTree.svelte.d.ts +41 -0
  180. package/dist/utils/floating-ui/svelte/hooks/useFloating.svelte.d.ts +6 -0
  181. package/dist/utils/floating-ui/svelte/hooks/useFloating.svelte.js +158 -0
  182. package/dist/utils/floating-ui/svelte/hooks/useFloatingRootContext.svelte.d.ts +11 -0
  183. package/dist/utils/floating-ui/svelte/hooks/useFloatingRootContext.svelte.js +53 -0
  184. package/dist/utils/floating-ui/svelte/hooks/useId.svelte.d.ts +9 -0
  185. package/dist/utils/floating-ui/svelte/hooks/useId.svelte.js +28 -0
  186. package/dist/utils/floating-ui/svelte/hooks/useInteractions.svelte.d.ts +23 -0
  187. package/dist/utils/floating-ui/svelte/hooks/useInteractions.svelte.js +72 -0
  188. package/dist/utils/floating-ui/svelte/index.d.ts +5 -0
  189. package/dist/utils/floating-ui/svelte/index.js +5 -0
  190. package/dist/utils/floating-ui/svelte/inner.svelte.d.ts +83 -0
  191. package/dist/utils/floating-ui/svelte/inner.svelte.js +178 -0
  192. package/dist/utils/floating-ui/svelte/types.d.ts +114 -0
  193. package/dist/utils/floating-ui/svelte/types.js +1 -0
  194. package/dist/utils/floating-ui/svelte/utils/createPubSub.d.ts +5 -0
  195. package/dist/utils/floating-ui/svelte/utils/createPubSub.js +14 -0
  196. package/dist/utils/floating-ui/svelte/utils/getFloatingFocusElement.d.ts +2 -0
  197. package/dist/utils/floating-ui/svelte/utils/getFloatingFocusElement.js +13 -0
  198. package/dist/utils/floating-ui/svelte/utils/log.d.ts +2 -0
  199. package/dist/utils/floating-ui/svelte/utils/log.js +19 -0
  200. package/dist/utils/floating-ui/svelte/utils.d.ts +19 -0
  201. package/dist/utils/floating-ui/svelte/utils.js +136 -0
  202. package/dist/utils/floating-ui/svelte-dom/arrow.d.ts +22 -0
  203. package/dist/utils/floating-ui/svelte-dom/arrow.js +29 -0
  204. package/dist/utils/floating-ui/svelte-dom/index.d.ts +2 -0
  205. package/dist/utils/floating-ui/svelte-dom/index.js +2 -0
  206. package/dist/utils/floating-ui/svelte-dom/types.d.ts +80 -0
  207. package/dist/utils/floating-ui/svelte-dom/types.js +3 -0
  208. package/dist/utils/floating-ui/svelte-dom/useFloating.svelte.d.ts +6 -0
  209. package/dist/utils/floating-ui/svelte-dom/useFloating.svelte.js +183 -0
  210. package/dist/utils/floating-ui/svelte-dom/utils/deepEqual.d.ts +1 -0
  211. package/dist/utils/floating-ui/svelte-dom/utils/deepEqual.js +50 -0
  212. package/dist/utils/floating-ui/svelte-dom/utils/getDPR.d.ts +1 -0
  213. package/dist/utils/floating-ui/svelte-dom/utils/getDPR.js +7 -0
  214. package/dist/utils/floating-ui/svelte-dom/utils/roundByDPR.d.ts +1 -0
  215. package/dist/utils/floating-ui/svelte-dom/utils/roundByDPR.js +5 -0
  216. package/dist/utils/floating-ui/svelte-dom/utils/useLatestRef.d.ts +4 -0
  217. package/dist/utils/floating-ui/svelte-dom/utils/useLatestRef.js +7 -0
  218. package/dist/utils/focus-management.d.ts +2 -1
  219. package/dist/utils/focus-management.js +13 -13
  220. package/dist/utils/id.d.ts +1 -1
  221. package/dist/utils/id.js +1 -1
  222. package/dist/utils/on-document-ready.d.ts +1 -0
  223. package/dist/utils/on-document-ready.js +12 -0
  224. package/dist/utils/render.d.ts +3 -0
  225. package/dist/utils/render.js +63 -0
  226. package/dist/utils/state.d.ts +7 -1
  227. package/dist/utils/state.js +10 -6
  228. package/dist/utils/style.d.ts +2 -0
  229. package/dist/utils/style.js +6 -0
  230. package/dist/utils/types.d.ts +14 -17
  231. package/dist/utils/types.js +0 -5
  232. package/package.json +33 -31
  233. package/dist/internal/id.d.ts +0 -8
  234. package/dist/internal/id.js +0 -11
  235. package/dist/tabs/Button.svelte +0 -65
  236. package/dist/tabs/Button.svelte.d.ts +0 -39
  237. package/dist/utils/close.d.ts +0 -2
  238. package/dist/utils/close.js +0 -3
@@ -0,0 +1,56 @@
1
+ import type { ElementType } from "./types.js";
2
+ import { RenderFeatures } from "./render.js";
3
+ declare class __sveltets_Render<TFeature extends RenderFeatures, TTag extends ElementType, TSlot, TValue> {
4
+ props(): {
5
+ ourProps?: Expand<{
6
+ [x: string]: any;
7
+ [x: number]: any;
8
+ } & {
9
+ children?: import("./types.js").Children<TSlot> | undefined;
10
+ ref?: HTMLElement;
11
+ } & {
12
+ class?: any;
13
+ } & Expand<((TFeature extends RenderFeatures.Static ? {
14
+ static?: boolean;
15
+ } : {}) extends infer T ? T extends (TFeature extends RenderFeatures.Static ? {
16
+ static?: boolean;
17
+ } : {}) ? T extends any ? (x: T) => any : never : never : never) | ((TFeature extends RenderFeatures.RenderStrategy ? {
18
+ unmount?: boolean;
19
+ } : {}) extends infer T_1 ? T_1 extends (TFeature extends RenderFeatures.RenderStrategy ? {
20
+ unmount?: boolean;
21
+ } : {}) ? T_1 extends any ? (x: T_1) => any : never : never : never) extends (x: infer R) => any ? R : never>> | undefined;
22
+ theirProps: {
23
+ as?: TTag | undefined;
24
+ children?: import("./types.js").Children<TSlot> | undefined;
25
+ ref?: HTMLElement | undefined;
26
+ class?: any;
27
+ };
28
+ slot?: TSlot | undefined;
29
+ slots?: TSlot | undefined;
30
+ defaultTag: ElementType;
31
+ features?: TFeature | undefined;
32
+ visible?: boolean;
33
+ name: string;
34
+ ref?: HTMLElement;
35
+ value?: TValue | undefined;
36
+ checked?: boolean;
37
+ };
38
+ events(): {} & {
39
+ [evt: string]: CustomEvent<any>;
40
+ };
41
+ slots(): {};
42
+ bindings(): "ref" | "value" | "checked";
43
+ exports(): {};
44
+ }
45
+ interface $$IsomorphicComponent {
46
+ new <TFeature extends RenderFeatures, TTag extends ElementType, TSlot, TValue>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TFeature, TTag, TSlot, TValue>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TFeature, TTag, TSlot, TValue>['props']>, ReturnType<__sveltets_Render<TFeature, TTag, TSlot, TValue>['events']>, ReturnType<__sveltets_Render<TFeature, TTag, TSlot, TValue>['slots']>> & {
47
+ $$bindings?: ReturnType<__sveltets_Render<TFeature, TTag, TSlot, TValue>['bindings']>;
48
+ } & ReturnType<__sveltets_Render<TFeature, TTag, TSlot, TValue>['exports']>;
49
+ <TFeature extends RenderFeatures, TTag extends ElementType, TSlot, TValue>(internal: unknown, props: ReturnType<__sveltets_Render<TFeature, TTag, TSlot, TValue>['props']> & {
50
+ $$events?: ReturnType<__sveltets_Render<TFeature, TTag, TSlot, TValue>['events']>;
51
+ }): ReturnType<__sveltets_Render<TFeature, TTag, TSlot, TValue>['exports']>;
52
+ z_$$bindings?: ReturnType<__sveltets_Render<any, any, any, any>['bindings']>;
53
+ }
54
+ declare const ElementOrComponent: $$IsomorphicComponent;
55
+ type ElementOrComponent<TFeature extends RenderFeatures, TTag extends ElementType, TSlot, TValue> = InstanceType<typeof ElementOrComponent<TFeature, TTag, TSlot, TValue>>;
56
+ export default ElementOrComponent;
@@ -0,0 +1,44 @@
1
+ <script lang="ts" generics="TTag extends keyof SvelteHTMLProps, TSlot, TValue">import { stateFromSlot } from "./state.js";
2
+ let {
3
+ slot = {},
4
+ tag,
5
+ name,
6
+ ref = $bindable(),
7
+ value = $bindable(),
8
+ checked = $bindable(),
9
+ children,
10
+ as = tag,
11
+ unmount,
12
+ static: isStatic,
13
+ ...props
14
+ } = $props();
15
+ const resolvedClass = $derived(
16
+ typeof props.class === "function" ? props.class(slot) : props.class
17
+ );
18
+ </script>
19
+
20
+ {#if as === "svelte:fragment"}
21
+ {#if children}{@render children(slot, {
22
+ ...props,
23
+ ...(resolvedClass ? { class: resolvedClass } : {}),
24
+ ...stateFromSlot(slot),
25
+ })}{/if}
26
+ {:else if children}
27
+ {#if as === "select"}
28
+ <select bind:this={ref} {...props} class={resolvedClass} {...stateFromSlot(slot)} bind:value>
29
+ {@render children(slot, {})}
30
+ </select>
31
+ {:else}
32
+ <svelte:element this={as} bind:this={ref} {...props} class={resolvedClass} {...stateFromSlot(slot)}>
33
+ {@render children(slot, {})}
34
+ </svelte:element>
35
+ {/if}
36
+ {:else if as === "input" && props.type === "checkbox"}
37
+ <input type="checkbox" bind:this={ref} {...props} class={resolvedClass} {...stateFromSlot(slot)} bind:checked />
38
+ {:else if as === "input"}
39
+ <input bind:this={ref} {...props} class={resolvedClass} {...stateFromSlot(slot)} bind:value />
40
+ {:else if as === "textarea"}
41
+ <textarea bind:this={ref} {...props} class={resolvedClass} {...stateFromSlot(slot)} bind:value></textarea>
42
+ {:else}
43
+ <svelte:element this={as} bind:this={ref} {...props} class={resolvedClass} {...stateFromSlot(slot)} />
44
+ {/if}
@@ -0,0 +1,35 @@
1
+ import type { ElementType, SvelteHTMLProps } from "./types.js";
2
+ declare class __sveltets_Render<TTag extends keyof SvelteHTMLProps, TSlot, TValue> {
3
+ props(): {
4
+ as?: TTag | undefined;
5
+ slot: TSlot;
6
+ tag: ElementType;
7
+ name: string;
8
+ ref?: HTMLElement;
9
+ value?: TValue | undefined;
10
+ checked?: boolean;
11
+ } & (Exclude<keyof import("./types.js").PropsOf<TTag>, "as" | "children" | "refName" | "class"> extends infer T extends keyof import("./types.js").PropsOf<TTag> ? { [P in T]: import("./types.js").PropsOf<TTag>[P]; } : never) & {
12
+ children?: import("./types.js").Children<TSlot> | undefined;
13
+ ref?: HTMLElement;
14
+ } & (true extends (import("./types.js").PropsOf<TTag> extends infer T_1 ? T_1 extends import("./types.js").PropsOf<TTag> ? T_1 extends never ? never : "class" extends infer T_2 ? T_2 extends "class" ? T_2 extends keyof T_1 ? true : never : never : never : never : never) ? {
15
+ class?: import("./types.js").PropsOf<TTag>["class"] | ((bag: TSlot) => string) | undefined;
16
+ } : {});
17
+ events(): {} & {
18
+ [evt: string]: CustomEvent<any>;
19
+ };
20
+ slots(): {};
21
+ bindings(): "ref" | "value" | "checked";
22
+ exports(): {};
23
+ }
24
+ interface $$IsomorphicComponent {
25
+ new <TTag extends keyof SvelteHTMLProps, TSlot, TValue>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TTag, TSlot, TValue>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TTag, TSlot, TValue>['props']>, ReturnType<__sveltets_Render<TTag, TSlot, TValue>['events']>, ReturnType<__sveltets_Render<TTag, TSlot, TValue>['slots']>> & {
26
+ $$bindings?: ReturnType<__sveltets_Render<TTag, TSlot, TValue>['bindings']>;
27
+ } & ReturnType<__sveltets_Render<TTag, TSlot, TValue>['exports']>;
28
+ <TTag extends keyof SvelteHTMLProps, TSlot, TValue>(internal: unknown, props: ReturnType<__sveltets_Render<TTag, TSlot, TValue>['props']> & {
29
+ $$events?: ReturnType<__sveltets_Render<TTag, TSlot, TValue>['events']>;
30
+ }): ReturnType<__sveltets_Render<TTag, TSlot, TValue>['exports']>;
31
+ z_$$bindings?: ReturnType<__sveltets_Render<any, any, any>['bindings']>;
32
+ }
33
+ declare const Generic: $$IsomorphicComponent;
34
+ type Generic<TTag extends keyof SvelteHTMLProps, TSlot, TValue> = InstanceType<typeof Generic<TTag, TSlot, TValue>>;
35
+ export default Generic;
@@ -1,4 +1,4 @@
1
- <script lang="ts" context="module">import { useId } from "../hooks/use-id.js";
1
+ <script lang="ts" module>import { useId } from "../hooks/use-id.js";
2
2
  import { getContext, setContext } from "svelte";
3
3
  function createCollection() {
4
4
  return {
@@ -7,7 +7,10 @@ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> =
7
7
  (internal: unknown, props: Props & {
8
8
  $$events?: Events;
9
9
  $$slots?: Slots;
10
- }): Exports;
10
+ }): Exports & {
11
+ $set?: any;
12
+ $on?: any;
13
+ };
11
14
  z_$$bindings?: Bindings;
12
15
  }
13
16
  declare const StableCollection: $$__sveltets_2_IsomorphicComponent<{
@@ -0,0 +1 @@
1
+ export declare let history: HTMLElement[];
@@ -0,0 +1,35 @@
1
+ import { focusableSelector } from "./focus-management.js";
2
+ import { onDocumentReady } from "./on-document-ready.js";
3
+ export let history = [];
4
+ onDocumentReady(() => {
5
+ function handle(e) {
6
+ if (!(e.target instanceof HTMLElement))
7
+ return;
8
+ if (e.target === document.body)
9
+ return;
10
+ if (history[0] === e.target)
11
+ return;
12
+ let focusableElement = e.target;
13
+ // Figure out the closest focusable element, this is needed in a situation
14
+ // where you click on a non-focusable element inside a focusable element.
15
+ //
16
+ // E.g.:
17
+ //
18
+ // ```html
19
+ // <button>
20
+ // <span>Click me</span>
21
+ // </button>
22
+ // ```
23
+ focusableElement = focusableElement.closest(focusableSelector);
24
+ history.unshift(focusableElement ?? e.target);
25
+ // Filter out DOM Nodes that don't exist anymore
26
+ history = history.filter((x) => x != null && x.isConnected);
27
+ history.splice(10); // Only keep the 10 most recent items
28
+ }
29
+ window.addEventListener("click", handle, { capture: true });
30
+ window.addEventListener("mousedown", handle, { capture: true });
31
+ window.addEventListener("focus", handle, { capture: true });
32
+ document.body.addEventListener("click", handle, { capture: true });
33
+ document.body.addEventListener("mousedown", handle, { capture: true });
34
+ document.body.addEventListener("focus", handle, { capture: true });
35
+ });
@@ -0,0 +1,21 @@
1
+ import type { Snippet } from "svelte";
2
+ import type { SvelteHTMLElements } from "svelte/elements";
3
+ export interface SvelteHTMLProps extends SvelteHTMLElements {
4
+ "svelte:fragment": {};
5
+ }
6
+ export type ElementType = keyof SvelteHTMLProps;
7
+ export type Expand<T> = T extends infer O ? {
8
+ [K in keyof O]: O[K];
9
+ } : never;
10
+ export type Children<TSlot> = Snippet | Snippet<[TSlot, Record<string, any>]>;
11
+ type OurProps<TSlot> = {
12
+ children?: Children<TSlot>;
13
+ ref?: HTMLElement;
14
+ class?: string | null | ((bag: TSlot) => string);
15
+ };
16
+ type MergeProps3<T, U, V> = {
17
+ [K in keyof T | keyof U | keyof V]?: K extends keyof V ? V[K] : K extends keyof U ? U[K] : K extends keyof T ? T[K] : never;
18
+ };
19
+ export type Props<TTag extends ElementType, TSlot = {}, TOmittableProps extends PropertyKey = never, Overrides = {}> = MergeProps3<SvelteHTMLProps[TTag], OurProps<TSlot>, Overrides>;
20
+ export type EnsureArray<T> = T extends any[] ? T : Expand<T>[];
21
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export declare function classNames(...classes: (false | null | undefined | string)[]): string;
@@ -0,0 +1,10 @@
1
+ export function classNames(...classes) {
2
+ return Array.from(new Set(classes.flatMap((value) => {
3
+ if (typeof value === "string") {
4
+ return value.split(" ");
5
+ }
6
+ return [];
7
+ })))
8
+ .filter(Boolean)
9
+ .join(" ");
10
+ }
@@ -0,0 +1,17 @@
1
+ <script lang="ts" module></script>
2
+
3
+ <script lang="ts">import { setContext } from "svelte";
4
+ import { useFloatingParentNodeId } from "./FloatingTree.svelte";
5
+ const { children, id } = $props();
6
+ const parentId = useFloatingParentNodeId();
7
+ setContext("FloatingNodeContext", {
8
+ get id() {
9
+ return id;
10
+ },
11
+ get parentId() {
12
+ return parentId.value;
13
+ }
14
+ });
15
+ </script>
16
+
17
+ {#if children}{@render children()}{/if}
@@ -0,0 +1,23 @@
1
+ import type { Snippet } from "svelte";
2
+ export interface FloatingNodeProps {
3
+ children?: Snippet;
4
+ id: string;
5
+ }
6
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
7
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
8
+ $$bindings?: Bindings;
9
+ } & Exports;
10
+ (internal: unknown, props: Props & {
11
+ $$events?: Events;
12
+ $$slots?: Slots;
13
+ }): Exports & {
14
+ $set?: any;
15
+ $on?: any;
16
+ };
17
+ z_$$bindings?: Bindings;
18
+ }
19
+ declare const FloatingNode: $$__sveltets_2_IsomorphicComponent<FloatingNodeProps, {
20
+ [evt: string]: CustomEvent<any>;
21
+ }, {}, {}, "">;
22
+ type FloatingNode = InstanceType<typeof FloatingNode>;
23
+ export default FloatingNode;
@@ -0,0 +1,50 @@
1
+ <script lang="ts" module>import { getContext } from "svelte";
2
+ import { useId } from "../hooks/useId.svelte.js";
3
+ import { createPubSub } from "../utils/createPubSub.js";
4
+ export const useFloatingParentNodeId = () => {
5
+ const context = getContext("FloatingNodeContext");
6
+ return {
7
+ get value() {
8
+ return context?.id ?? null;
9
+ }
10
+ };
11
+ };
12
+ export const useFloatingTree = () => getContext("FloatingTreeContext") ?? null;
13
+ export function useFloatingNodeId(options) {
14
+ const { customParentId } = $derived(options);
15
+ const id = useId();
16
+ const tree = useFloatingTree();
17
+ const reactParentId = useFloatingParentNodeId();
18
+ const parentId = $derived(customParentId || reactParentId.value);
19
+ $effect(() => {
20
+ const node = { id, parentId };
21
+ tree?.addNode(node);
22
+ return () => {
23
+ tree?.removeNode(node);
24
+ };
25
+ });
26
+ return id;
27
+ }
28
+ </script>
29
+
30
+ <script lang="ts">import { setContext } from "svelte";
31
+ const { children } = $props();
32
+ const nodesRef = $state({ current: [] });
33
+ const addNode = (node) => {
34
+ nodesRef.current = [...nodesRef.current, node];
35
+ };
36
+ const removeNode = (node) => {
37
+ nodesRef.current = nodesRef.current.filter((n) => n !== node);
38
+ };
39
+ const events = createPubSub();
40
+ setContext("FloatingTreeContext", {
41
+ get nodesRef() {
42
+ return nodesRef;
43
+ },
44
+ addNode,
45
+ removeNode,
46
+ events
47
+ });
48
+ </script>
49
+
50
+ {#if children}{@render children()}{/if}
@@ -0,0 +1,41 @@
1
+ import { type Snippet } from "svelte";
2
+ import type { FloatingTreeType, ReferenceType } from "../types.js";
3
+ /**
4
+ * Returns the parent node id for nested floating elements, if available.
5
+ * Returns `null` for top-level floating elements.
6
+ */
7
+ export declare const useFloatingParentNodeId: () => {
8
+ readonly value: string | null;
9
+ };
10
+ /**
11
+ * Returns the nearest floating tree context, if available.
12
+ */
13
+ export declare const useFloatingTree: <RT extends ReferenceType = ReferenceType>() => FloatingTreeType<RT> | null;
14
+ /**
15
+ * Registers a node into the `FloatingTree`, returning its id.
16
+ * @see https://floating-ui.com/docs/FloatingTree
17
+ */
18
+ export declare function useFloatingNodeId(options: {
19
+ customParentId?: string;
20
+ }): string;
21
+ export interface FloatingTreeProps {
22
+ children?: Snippet;
23
+ }
24
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
25
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
26
+ $$bindings?: Bindings;
27
+ } & Exports;
28
+ (internal: unknown, props: Props & {
29
+ $$events?: Events;
30
+ $$slots?: Slots;
31
+ }): Exports & {
32
+ $set?: any;
33
+ $on?: any;
34
+ };
35
+ z_$$bindings?: Bindings;
36
+ }
37
+ declare const FloatingTree: $$__sveltets_2_IsomorphicComponent<FloatingTreeProps, {
38
+ [evt: string]: CustomEvent<any>;
39
+ }, {}, {}, "">;
40
+ type FloatingTree = InstanceType<typeof FloatingTree>;
41
+ export default FloatingTree;
@@ -0,0 +1,6 @@
1
+ import type { ReferenceType, UseFloatingOptions, UseFloatingReturn } from "../types.js";
2
+ /**
3
+ * Provides data to position a floating element and context to add interactions.
4
+ * @see https://floating-ui.com/docs/useFloating
5
+ */
6
+ export declare function useFloating<RT extends ReferenceType = ReferenceType>(options?: UseFloatingOptions): UseFloatingReturn<RT>;
@@ -0,0 +1,158 @@
1
+ import { useFloating as usePosition } from "../../svelte-dom/index.js";
2
+ import { isElement } from "@floating-ui/utils/dom";
3
+ import { useFloatingTree } from "../components/FloatingTree.svelte";
4
+ import { useFloatingRootContext } from "./useFloatingRootContext.svelte.js";
5
+ /**
6
+ * Provides data to position a floating element and context to add interactions.
7
+ * @see https://floating-ui.com/docs/useFloating
8
+ */
9
+ export function useFloating(options = {}) {
10
+ const { nodeId } = $derived(options);
11
+ const internalRootContext = useFloatingRootContext({
12
+ get open() {
13
+ return options.open;
14
+ },
15
+ get onOpenChange() {
16
+ return options.onOpenChange;
17
+ },
18
+ get elements() {
19
+ return {
20
+ reference: null,
21
+ floating: null,
22
+ ...options.elements,
23
+ };
24
+ },
25
+ });
26
+ const rootContext = $derived(options.rootContext || internalRootContext);
27
+ const computedElements = $derived(rootContext.elements);
28
+ let _domReference = $state(null);
29
+ const setDomReference = (value) => (_domReference = value);
30
+ let positionReference = $state(null);
31
+ const _setPositionReference = (value) => (positionReference = value);
32
+ const optionDomReference = $derived(computedElements?.reference);
33
+ const domReference = $derived((optionDomReference || _domReference));
34
+ const domReferenceRef = $state({ current: null });
35
+ const tree = useFloatingTree();
36
+ $effect(() => {
37
+ if (domReference) {
38
+ domReferenceRef.current = domReference;
39
+ }
40
+ });
41
+ const position = usePosition({
42
+ get placement() {
43
+ return options.placement;
44
+ },
45
+ get strategy() {
46
+ return options.strategy;
47
+ },
48
+ get middleware() {
49
+ return options.middleware;
50
+ },
51
+ get platform() {
52
+ return options.platform;
53
+ },
54
+ get whileElementsMounted() {
55
+ return options.whileElementsMounted;
56
+ },
57
+ get open() {
58
+ return options.open;
59
+ },
60
+ get transform() {
61
+ return options.transform;
62
+ },
63
+ get elements() {
64
+ return {
65
+ ...computedElements,
66
+ ...(positionReference && { reference: positionReference }),
67
+ };
68
+ },
69
+ });
70
+ const setPositionReference = (node) => {
71
+ const computedPositionReference = isElement(node)
72
+ ? {
73
+ getBoundingClientRect: () => node.getBoundingClientRect(),
74
+ contextElement: node,
75
+ }
76
+ : node;
77
+ // Store the positionReference in state if the DOM reference is specified externally via the
78
+ // `elements.reference` option. This ensures that it won't be overridden on future renders.
79
+ _setPositionReference(computedPositionReference);
80
+ position.refs.setReference(computedPositionReference);
81
+ };
82
+ const setReference = (node) => {
83
+ if (isElement(node) || node === null) {
84
+ ;
85
+ domReferenceRef.current = node;
86
+ setDomReference(node);
87
+ }
88
+ // Backwards-compatibility for passing a virtual element to `reference`
89
+ // after it has set the DOM reference.
90
+ if (isElement(position.refs.reference.current) ||
91
+ position.refs.reference.current === null ||
92
+ // Don't allow setting virtual elements using the old technique back to
93
+ // `null` to support `positionReference` + an unstable `reference`
94
+ // callback ref.
95
+ (node !== null && !isElement(node))) {
96
+ position.refs.setReference(node);
97
+ }
98
+ };
99
+ const refs = $derived({
100
+ ...position.refs,
101
+ setReference,
102
+ setPositionReference,
103
+ domReference: domReferenceRef,
104
+ });
105
+ const elements = $derived({
106
+ ...position.elements,
107
+ domReference: domReference,
108
+ });
109
+ const context = $derived({
110
+ ...position,
111
+ ...rootContext,
112
+ refs,
113
+ elements,
114
+ nodeId,
115
+ });
116
+ $effect(() => {
117
+ rootContext.dataRef.current.floatingContext = context;
118
+ const node = tree?.nodesRef.current.find((node) => node.id === nodeId);
119
+ if (node) {
120
+ node.context = context;
121
+ }
122
+ });
123
+ return {
124
+ get placement() {
125
+ return position.placement;
126
+ },
127
+ get strategy() {
128
+ return position.strategy;
129
+ },
130
+ get middlewareData() {
131
+ return position.middlewareData;
132
+ },
133
+ get x() {
134
+ return position.x;
135
+ },
136
+ get y() {
137
+ return position.y;
138
+ },
139
+ get isPositioned() {
140
+ return position.isPositioned;
141
+ },
142
+ get update() {
143
+ return position.update;
144
+ },
145
+ get floatingStyles() {
146
+ return position.floatingStyles;
147
+ },
148
+ get context() {
149
+ return context;
150
+ },
151
+ get refs() {
152
+ return refs;
153
+ },
154
+ get elements() {
155
+ return elements;
156
+ },
157
+ };
158
+ }
@@ -0,0 +1,11 @@
1
+ import type { FloatingRootContext } from "../types.js";
2
+ import type { OpenChangeReason } from "../types.js";
3
+ export interface UseFloatingRootContextOptions {
4
+ open?: boolean;
5
+ onOpenChange?: (open: boolean, event?: Event, reason?: OpenChangeReason) => void;
6
+ elements: {
7
+ reference: Element | null;
8
+ floating: HTMLElement | null;
9
+ };
10
+ }
11
+ export declare function useFloatingRootContext(options: UseFloatingRootContextOptions): FloatingRootContext;
@@ -0,0 +1,53 @@
1
+ import { isElement } from "@floating-ui/utils/dom";
2
+ //import { useEffectEvent } from "./utils/useEffectEvent"
3
+ import { createPubSub } from "../utils/createPubSub.js";
4
+ import { useId } from "./useId.svelte.js";
5
+ import { useFloatingParentNodeId } from "../components/FloatingTree.svelte";
6
+ import { error } from "../utils/log.js";
7
+ import { DEV } from "esm-env";
8
+ export function useFloatingRootContext(options) {
9
+ const { open = false, onOpenChange: onOpenChangeProp, elements: elementsProp } = options;
10
+ const floatingId = useId();
11
+ const dataRef = $state({ current: {} });
12
+ const events = createPubSub();
13
+ const nested = useFloatingParentNodeId() != null;
14
+ if (DEV) {
15
+ const optionDomReference = elementsProp.reference;
16
+ if (optionDomReference && !isElement(optionDomReference)) {
17
+ error("Cannot pass a virtual element to the `elements.reference` option,", "as it must be a real DOM element. Use `refs.setPositionReference()`", "instead.");
18
+ }
19
+ }
20
+ let positionReference = $state(elementsProp.reference);
21
+ const onOpenChange = (open, event, reason) => {
22
+ dataRef.current.openEvent = open ? event : undefined;
23
+ events.emit("openchange", { open, event, reason, nested });
24
+ onOpenChangeProp?.(open, event, reason);
25
+ };
26
+ const refs = {
27
+ setPositionReference: (value) => {
28
+ positionReference = value;
29
+ },
30
+ };
31
+ const elements = $derived({
32
+ reference: positionReference || elementsProp.reference || null,
33
+ floating: elementsProp.floating || null,
34
+ domReference: elementsProp.reference,
35
+ });
36
+ return {
37
+ get dataRef() {
38
+ return dataRef;
39
+ },
40
+ get open() {
41
+ return open;
42
+ },
43
+ onOpenChange,
44
+ get elements() {
45
+ return elements;
46
+ },
47
+ events,
48
+ get floatingId() {
49
+ return floatingId;
50
+ },
51
+ refs,
52
+ };
53
+ }
@@ -0,0 +1,9 @@
1
+ declare function useFloatingId(): string;
2
+ /**
3
+ * Uses React 18's built-in `useId()` when available, or falls back to a
4
+ * slightly less performant (requiring a double render) implementation for
5
+ * earlier React versions.
6
+ * @see https://floating-ui.com/docs/react-utils#useid
7
+ */
8
+ export declare const useId: typeof useFloatingId;
9
+ export {};
@@ -0,0 +1,28 @@
1
+ let serverHandoffComplete = false;
2
+ let count = 0;
3
+ const genId = () =>
4
+ // Ensure the id is unique with multiple independent versions of Floating UI
5
+ // on <React 18
6
+ `floating-ui-${Math.random().toString(36).slice(2, 6)}${count++}`;
7
+ function useFloatingId() {
8
+ /*let id = $state(serverHandoffComplete ? genId() : undefined)
9
+
10
+ $effect(() => {
11
+ if (id == null) {
12
+ id = genId()
13
+ }
14
+ })
15
+
16
+ $effect(() => {
17
+ serverHandoffComplete = true
18
+ })*/
19
+ return genId();
20
+ }
21
+ //const useReactId = SafeReact.useId as () => string
22
+ /**
23
+ * Uses React 18's built-in `useId()` when available, or falls back to a
24
+ * slightly less performant (requiring a double render) implementation for
25
+ * earlier React versions.
26
+ * @see https://floating-ui.com/docs/react-utils#useid
27
+ */
28
+ export const useId = /*useReactId ||*/ useFloatingId;