@pzerelles/headlessui-svelte 2.1.2-next.6 → 2.1.2-next.61

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/button/Button.svelte +16 -19
  2. package/dist/button/Button.svelte.d.ts +8 -36
  3. package/dist/button/index.d.ts +1 -1
  4. package/dist/button/index.js +1 -1
  5. package/dist/checkbox/Checkbox.svelte +31 -27
  6. package/dist/checkbox/Checkbox.svelte.d.ts +17 -38
  7. package/dist/checkbox/index.d.ts +1 -1
  8. package/dist/checkbox/index.js +1 -1
  9. package/dist/close-button/CloseButton.svelte +4 -7
  10. package/dist/close-button/CloseButton.svelte.d.ts +3 -46
  11. package/dist/close-button/index.d.ts +1 -0
  12. package/dist/close-button/index.js +1 -0
  13. package/dist/data-interactive/DataInteractive.svelte +6 -22
  14. package/dist/data-interactive/DataInteractive.svelte.d.ts +9 -34
  15. package/dist/data-interactive/index.d.ts +1 -1
  16. package/dist/data-interactive/index.js +1 -1
  17. package/dist/description/Description.svelte +29 -24
  18. package/dist/description/Description.svelte.d.ts +9 -30
  19. package/dist/description/context.svelte.js +14 -16
  20. package/dist/description/index.d.ts +1 -1
  21. package/dist/dialog/Dialog.svelte +25 -30
  22. package/dist/dialog/Dialog.svelte.d.ts +7 -45
  23. package/dist/dialog/DialogBackdrop.svelte +11 -14
  24. package/dist/dialog/DialogBackdrop.svelte.d.ts +8 -33
  25. package/dist/dialog/DialogPanel.svelte +30 -19
  26. package/dist/dialog/DialogPanel.svelte.d.ts +8 -34
  27. package/dist/dialog/DialogTitle.svelte +17 -8
  28. package/dist/dialog/DialogTitle.svelte.d.ts +9 -30
  29. package/dist/dialog/InternalDialog.svelte +38 -34
  30. package/dist/dialog/InternalDialog.svelte.d.ts +3 -41
  31. package/dist/dialog/context.svelte.js +2 -2
  32. package/dist/dialog/index.d.ts +4 -4
  33. package/dist/dialog/index.js +4 -4
  34. package/dist/disclosure/Disclosure.svelte +61 -0
  35. package/dist/disclosure/Disclosure.svelte.d.ts +14 -0
  36. package/dist/disclosure/DisclosureButton.svelte +191 -0
  37. package/dist/disclosure/DisclosureButton.svelte.d.ts +19 -0
  38. package/dist/disclosure/DisclosurePanel.svelte +99 -0
  39. package/dist/disclosure/DisclosurePanel.svelte.d.ts +16 -0
  40. package/dist/disclosure/context.svelte.d.ts +32 -0
  41. package/dist/disclosure/context.svelte.js +94 -0
  42. package/dist/disclosure/index.d.ts +3 -0
  43. package/dist/disclosure/index.js +3 -0
  44. package/dist/field/Field.svelte +27 -26
  45. package/dist/field/Field.svelte.d.ts +7 -34
  46. package/dist/field/index.d.ts +1 -1
  47. package/dist/fieldset/Fieldset.svelte +21 -20
  48. package/dist/fieldset/Fieldset.svelte.d.ts +8 -35
  49. package/dist/fieldset/index.d.ts +1 -1
  50. package/dist/focus-trap/FocusTrap.svelte +29 -36
  51. package/dist/focus-trap/FocusTrap.svelte.d.ts +8 -38
  52. package/dist/hooks/use-controllable.svelte.js +3 -2
  53. package/dist/hooks/use-did-element-move.svelte.js +5 -10
  54. package/dist/hooks/use-disabled.d.ts +6 -1
  55. package/dist/hooks/use-disabled.js +10 -5
  56. package/dist/hooks/use-element-size.svelte.js +1 -1
  57. package/dist/hooks/use-event-listener.svelte.d.ts +1 -1
  58. package/dist/hooks/use-event-listener.svelte.js +3 -1
  59. package/dist/hooks/use-focus-ring.svelte.js +1 -1
  60. package/dist/hooks/use-inert-others.svelte.js +10 -10
  61. package/dist/hooks/use-is-top-layer.svelte.js +2 -2
  62. package/dist/hooks/use-resolve-button-type.svelte.js +0 -1
  63. package/dist/hooks/use-root-containers.svelte.d.ts +2 -2
  64. package/dist/hooks/use-root-containers.svelte.js +7 -6
  65. package/dist/hooks/use-tab-direction.svelte.js +1 -1
  66. package/dist/hooks/use-transition.svelte.d.ts +1 -0
  67. package/dist/hooks/use-transition.svelte.js +32 -7
  68. package/dist/index.d.ts +11 -2
  69. package/dist/index.js +11 -2
  70. package/dist/input/Input.svelte +28 -21
  71. package/dist/input/Input.svelte.d.ts +16 -33
  72. package/dist/input/index.d.ts +1 -1
  73. package/dist/input/index.js +1 -1
  74. package/dist/internal/FloatingProvider.svelte +17 -0
  75. package/dist/internal/FloatingProvider.svelte.d.ts +8 -0
  76. package/dist/internal/FocusSentinel.svelte +33 -32
  77. package/dist/internal/FocusSentinel.svelte.d.ts +4 -18
  78. package/dist/internal/ForcePortalRoot.svelte.d.ts +4 -18
  79. package/dist/internal/FormFields.svelte +18 -13
  80. package/dist/internal/FormFields.svelte.d.ts +4 -18
  81. package/dist/internal/FormFieldsProvider.svelte +17 -0
  82. package/dist/internal/FormFieldsProvider.svelte.d.ts +7 -0
  83. package/dist/internal/FormResolver.svelte +6 -2
  84. package/dist/internal/FormResolver.svelte.d.ts +4 -18
  85. package/dist/internal/Hidden.svelte +10 -10
  86. package/dist/internal/Hidden.svelte.d.ts +6 -33
  87. package/dist/internal/MainTreeProvider.svelte +2 -2
  88. package/dist/internal/MainTreeProvider.svelte.d.ts +4 -18
  89. package/dist/internal/Portal.svelte.d.ts +4 -18
  90. package/dist/internal/floating-provider.svelte.d.ts +3 -0
  91. package/dist/internal/floating-provider.svelte.js +206 -0
  92. package/dist/internal/floating.svelte.d.ts +47 -23
  93. package/dist/internal/floating.svelte.js +90 -272
  94. package/dist/internal/form-fields.svelte.d.ts +10 -0
  95. package/dist/internal/form-fields.svelte.js +23 -0
  96. package/dist/internal/frozen.svelte.js +1 -1
  97. package/dist/label/Label.svelte +15 -11
  98. package/dist/label/Label.svelte.d.ts +8 -33
  99. package/dist/label/context.svelte.js +1 -1
  100. package/dist/label/index.d.ts +1 -1
  101. package/dist/legend/Legend.svelte +22 -15
  102. package/dist/legend/Legend.svelte.d.ts +10 -34
  103. package/dist/listbox/Listbox.svelte +79 -151
  104. package/dist/listbox/Listbox.svelte.d.ts +16 -91
  105. package/dist/listbox/ListboxButton.svelte +31 -29
  106. package/dist/listbox/ListboxButton.svelte.d.ts +8 -38
  107. package/dist/listbox/ListboxOption.svelte +40 -27
  108. package/dist/listbox/ListboxOption.svelte.d.ts +16 -32
  109. package/dist/listbox/ListboxOptions.svelte +126 -72
  110. package/dist/listbox/ListboxOptions.svelte.d.ts +8 -43
  111. package/dist/listbox/ListboxSelectedOption.svelte +24 -26
  112. package/dist/listbox/ListboxSelectedOption.svelte.d.ts +14 -39
  113. package/dist/listbox/context.svelte.d.ts +76 -0
  114. package/dist/listbox/context.svelte.js +36 -0
  115. package/dist/listbox/index.d.ts +5 -5
  116. package/dist/listbox/index.js +4 -4
  117. package/dist/menu/Menu.svelte +22 -266
  118. package/dist/menu/Menu.svelte.d.ts +7 -37
  119. package/dist/menu/MenuButton.svelte +29 -24
  120. package/dist/menu/MenuButton.svelte.d.ts +8 -39
  121. package/dist/menu/MenuHeading.svelte +12 -16
  122. package/dist/menu/MenuHeading.svelte.d.ts +7 -36
  123. package/dist/menu/MenuItem.svelte +18 -23
  124. package/dist/menu/MenuItem.svelte.d.ts +9 -39
  125. package/dist/menu/MenuItems.svelte +33 -34
  126. package/dist/menu/MenuItems.svelte.d.ts +8 -43
  127. package/dist/menu/MenuSection.svelte +9 -12
  128. package/dist/menu/MenuSection.svelte.d.ts +7 -33
  129. package/dist/menu/MenuSeparator.svelte +9 -12
  130. package/dist/menu/MenuSeparator.svelte.d.ts +7 -33
  131. package/dist/menu/context.svelte.d.ts +2 -1
  132. package/dist/menu/context.svelte.js +212 -2
  133. package/dist/menu/index.d.ts +7 -7
  134. package/dist/menu/index.js +3 -3
  135. package/dist/popover/Popover.svelte +231 -0
  136. package/dist/popover/Popover.svelte.d.ts +15 -0
  137. package/dist/popover/PopoverBackdrop.svelte +83 -0
  138. package/dist/popover/PopoverBackdrop.svelte.d.ts +17 -0
  139. package/dist/popover/PopoverButton.svelte +324 -0
  140. package/dist/popover/PopoverButton.svelte.d.ts +21 -0
  141. package/dist/popover/PopoverGroup.svelte +66 -0
  142. package/dist/popover/PopoverGroup.svelte.d.ts +9 -0
  143. package/dist/popover/PopoverPanel.svelte +359 -0
  144. package/dist/popover/PopoverPanel.svelte.d.ts +22 -0
  145. package/dist/popover/context.svelte.d.ts +51 -0
  146. package/dist/popover/context.svelte.js +108 -0
  147. package/dist/popover/index.d.ts +5 -0
  148. package/dist/popover/index.js +5 -0
  149. package/dist/portal/InternalPortal.svelte +18 -19
  150. package/dist/portal/InternalPortal.svelte.d.ts +7 -34
  151. package/dist/portal/Portal.svelte +7 -6
  152. package/dist/portal/Portal.svelte.d.ts +3 -22
  153. package/dist/portal/PortalGroup.svelte +6 -14
  154. package/dist/portal/PortalGroup.svelte.d.ts +5 -34
  155. package/dist/portal/PortalWrapper.svelte +10 -0
  156. package/dist/portal/PortalWrapper.svelte.d.ts +9 -0
  157. package/dist/radio-group/Radio.svelte +142 -0
  158. package/dist/radio-group/Radio.svelte.d.ts +35 -0
  159. package/dist/radio-group/RadioGroup.svelte +222 -0
  160. package/dist/radio-group/RadioGroup.svelte.d.ts +34 -0
  161. package/dist/radio-group/RadioOption.svelte +145 -0
  162. package/dist/radio-group/RadioOption.svelte.d.ts +37 -0
  163. package/dist/radio-group/contest.svelte.d.ts +30 -0
  164. package/dist/radio-group/contest.svelte.js +40 -0
  165. package/dist/radio-group/index.d.ts +3 -0
  166. package/dist/radio-group/index.js +3 -0
  167. package/dist/select/Select.svelte +112 -0
  168. package/dist/select/Select.svelte.d.ts +21 -0
  169. package/dist/select/index.d.ts +1 -0
  170. package/dist/select/index.js +1 -0
  171. package/dist/switch/Switch.svelte +27 -28
  172. package/dist/switch/Switch.svelte.d.ts +9 -42
  173. package/dist/switch/SwitchGroup.svelte +5 -5
  174. package/dist/switch/SwitchGroup.svelte.d.ts +8 -30
  175. package/dist/switch/index.d.ts +1 -1
  176. package/dist/switch/index.js +1 -1
  177. package/dist/tabs/Tab.svelte +28 -31
  178. package/dist/tabs/Tab.svelte.d.ts +8 -36
  179. package/dist/tabs/TabGroup.svelte +42 -264
  180. package/dist/tabs/TabGroup.svelte.d.ts +7 -57
  181. package/dist/tabs/TabList.svelte +13 -16
  182. package/dist/tabs/TabList.svelte.d.ts +8 -31
  183. package/dist/tabs/TabPanel.svelte +20 -20
  184. package/dist/tabs/TabPanel.svelte.d.ts +8 -38
  185. package/dist/tabs/TabPanels.svelte +11 -9
  186. package/dist/tabs/TabPanels.svelte.d.ts +8 -30
  187. package/dist/tabs/context.svelte.d.ts +31 -0
  188. package/dist/tabs/context.svelte.js +134 -0
  189. package/dist/tabs/index.d.ts +5 -5
  190. package/dist/tabs/index.js +4 -4
  191. package/dist/textarea/Textarea.svelte +24 -20
  192. package/dist/textarea/Textarea.svelte.d.ts +17 -29
  193. package/dist/textarea/index.d.ts +1 -1
  194. package/dist/textarea/index.js +1 -1
  195. package/dist/transition/InternalTransitionChild.svelte +36 -22
  196. package/dist/transition/InternalTransitionChild.svelte.d.ts +6 -37
  197. package/dist/transition/Transition.svelte +16 -17
  198. package/dist/transition/Transition.svelte.d.ts +8 -38
  199. package/dist/transition/TransitionChild.svelte +13 -12
  200. package/dist/transition/TransitionChild.svelte.d.ts +11 -38
  201. package/dist/transition/context.svelte.js +11 -11
  202. package/dist/transition/index.d.ts +2 -2
  203. package/dist/transition/index.js +2 -2
  204. package/dist/utils/DisabledProvider.svelte +10 -0
  205. package/dist/utils/DisabledProvider.svelte.d.ts +8 -0
  206. package/dist/utils/ElementOrComponent.svelte +58 -17
  207. package/dist/utils/ElementOrComponent.svelte.d.ts +19 -30
  208. package/dist/utils/StableCollection.svelte.d.ts +4 -18
  209. package/dist/utils/floating-ui/svelte/components/FloatingNode.svelte +32 -0
  210. package/dist/utils/floating-ui/svelte/components/FloatingNode.svelte.d.ts +8 -0
  211. package/dist/utils/floating-ui/svelte/components/FloatingTree.svelte +94 -0
  212. package/dist/utils/floating-ui/svelte/components/FloatingTree.svelte.d.ts +26 -0
  213. package/dist/utils/floating-ui/svelte/hooks/useFloating.svelte.d.ts +6 -0
  214. package/dist/utils/floating-ui/svelte/hooks/useFloating.svelte.js +158 -0
  215. package/dist/utils/floating-ui/svelte/hooks/useFloatingRootContext.svelte.d.ts +11 -0
  216. package/dist/utils/floating-ui/svelte/hooks/useFloatingRootContext.svelte.js +53 -0
  217. package/dist/utils/floating-ui/svelte/hooks/useId.svelte.d.ts +9 -0
  218. package/dist/utils/floating-ui/svelte/hooks/useId.svelte.js +28 -0
  219. package/dist/utils/floating-ui/svelte/hooks/useInteractions.svelte.d.ts +23 -0
  220. package/dist/utils/floating-ui/svelte/hooks/useInteractions.svelte.js +72 -0
  221. package/dist/utils/floating-ui/svelte/index.d.ts +5 -0
  222. package/dist/utils/floating-ui/svelte/index.js +5 -0
  223. package/dist/utils/floating-ui/svelte/inner.svelte.d.ts +83 -0
  224. package/dist/utils/floating-ui/svelte/inner.svelte.js +178 -0
  225. package/dist/utils/floating-ui/svelte/types.d.ts +114 -0
  226. package/dist/utils/floating-ui/svelte/utils/createPubSub.d.ts +5 -0
  227. package/dist/utils/floating-ui/svelte/utils/createPubSub.js +14 -0
  228. package/dist/utils/floating-ui/svelte/utils/getFloatingFocusElement.d.ts +2 -0
  229. package/dist/utils/floating-ui/svelte/utils/getFloatingFocusElement.js +13 -0
  230. package/dist/utils/floating-ui/svelte/utils/log.d.ts +2 -0
  231. package/dist/utils/floating-ui/svelte/utils/log.js +19 -0
  232. package/dist/utils/floating-ui/svelte/utils.d.ts +19 -0
  233. package/dist/utils/floating-ui/svelte/utils.js +136 -0
  234. package/dist/utils/floating-ui/svelte-dom/arrow.d.ts +22 -0
  235. package/dist/utils/floating-ui/svelte-dom/arrow.js +29 -0
  236. package/dist/utils/floating-ui/svelte-dom/index.d.ts +2 -0
  237. package/dist/utils/floating-ui/svelte-dom/index.js +2 -0
  238. package/dist/utils/floating-ui/svelte-dom/types.d.ts +80 -0
  239. package/dist/utils/floating-ui/svelte-dom/types.js +3 -0
  240. package/dist/utils/floating-ui/svelte-dom/useFloating.svelte.d.ts +6 -0
  241. package/dist/utils/floating-ui/svelte-dom/useFloating.svelte.js +183 -0
  242. package/dist/utils/floating-ui/svelte-dom/utils/deepEqual.d.ts +1 -0
  243. package/dist/utils/floating-ui/svelte-dom/utils/deepEqual.js +50 -0
  244. package/dist/utils/floating-ui/svelte-dom/utils/getDPR.d.ts +1 -0
  245. package/dist/utils/floating-ui/svelte-dom/utils/getDPR.js +7 -0
  246. package/dist/utils/floating-ui/svelte-dom/utils/roundByDPR.d.ts +1 -0
  247. package/dist/utils/floating-ui/svelte-dom/utils/roundByDPR.js +5 -0
  248. package/dist/utils/floating-ui/svelte-dom/utils/useLatestRef.d.ts +4 -0
  249. package/dist/utils/floating-ui/svelte-dom/utils/useLatestRef.js +7 -0
  250. package/dist/utils/id.d.ts +1 -1
  251. package/dist/utils/id.js +1 -1
  252. package/dist/utils/index.d.ts +3 -0
  253. package/dist/utils/index.js +3 -0
  254. package/dist/utils/state.js +4 -4
  255. package/dist/utils/style.d.ts +2 -0
  256. package/dist/utils/style.js +6 -0
  257. package/dist/utils/types.d.ts +13 -19
  258. package/package.json +55 -54
  259. package/dist/combobox/Combobox.svelte +0 -53
  260. package/dist/combobox/Combobox.svelte.d.ts +0 -50
  261. package/dist/internal/HoistFormFields.svelte +0 -14
  262. package/dist/internal/HoistFormFields.svelte.d.ts +0 -21
  263. package/dist/internal/id.d.ts +0 -8
  264. package/dist/internal/id.js +0 -11
  265. package/dist/listbox/ListboxStates.d.ts +0 -12
  266. package/dist/listbox/ListboxStates.js +0 -15
  267. package/dist/utils/Generic.svelte +0 -56
  268. package/dist/utils/Generic.svelte.d.ts +0 -35
  269. package/dist/utils/alternative-types.d.ts +0 -21
  270. /package/dist/utils/{alternative-types.js → floating-ui/svelte/types.js} +0 -0
@@ -1,43 +1,16 @@
1
- import type { ElementType, Props } from "../utils/types.js";
2
- type PortalParentContext = {
1
+ import type { Props } from "../utils/types.js";
2
+ export type PortalParentContext = {
3
3
  register: (portal: HTMLElement) => () => void;
4
4
  unregister: (portal: HTMLElement) => void;
5
5
  readonly portals: HTMLElement[];
6
6
  };
7
7
  export declare function useNestedPortals(): PortalParentContext;
8
8
  export declare const DEFAULT_PORTAL_TAG = "div";
9
- type PortalRenderPropArg = {};
10
- type PortalPropsWeControl = never;
11
- export type PortalProps<TTag extends ElementType = typeof DEFAULT_PORTAL_TAG> = Props<TTag, PortalRenderPropArg, PortalPropsWeControl, {
9
+ export type PortalRenderPropArg = {};
10
+ export type PortalProps = Props<typeof DEFAULT_PORTAL_TAG, PortalRenderPropArg, {
11
+ element?: HTMLElement;
12
12
  enabled?: boolean;
13
13
  }>;
14
- declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_PORTAL_TAG> {
15
- props(): {
16
- as?: TTag | undefined;
17
- } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("as" | "children" | "refName" | "class") | "enabled"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
18
- children?: import("../utils/types.js").Children<PortalRenderPropArg> | undefined;
19
- ref?: HTMLElement;
20
- } & (true extends (import("../utils/types.js").PropsOf<TTag> extends infer T_1 ? T_1 extends import("../utils/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) ? {
21
- class?: import("../utils/types.js").PropsOf<TTag>["class"] | ((bag: PortalRenderPropArg) => string) | undefined;
22
- } : {}) & {
23
- enabled?: boolean;
24
- };
25
- events(): {} & {
26
- [evt: string]: CustomEvent<any>;
27
- };
28
- slots(): {};
29
- bindings(): "ref";
30
- exports(): {};
31
- }
32
- interface $$IsomorphicComponent {
33
- new <TTag extends ElementType = typeof DEFAULT_PORTAL_TAG>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TTag>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TTag>['props']>, ReturnType<__sveltets_Render<TTag>['events']>, ReturnType<__sveltets_Render<TTag>['slots']>> & {
34
- $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
35
- } & ReturnType<__sveltets_Render<TTag>['exports']>;
36
- <TTag extends ElementType = typeof DEFAULT_PORTAL_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
37
- $$events?: ReturnType<__sveltets_Render<TTag>['events']>;
38
- }): ReturnType<__sveltets_Render<TTag>['exports']>;
39
- z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
40
- }
41
- declare const InternalPortal: $$IsomorphicComponent;
42
- type InternalPortal<TTag extends ElementType = typeof DEFAULT_PORTAL_TAG> = InstanceType<typeof InternalPortal<TTag>>;
14
+ declare const InternalPortal: import("svelte").Component<PortalProps, {}, "element">;
15
+ type InternalPortal = ReturnType<typeof InternalPortal>;
43
16
  export default InternalPortal;
@@ -1,10 +1,11 @@
1
- <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_PORTAL_TAG">
2
- import type { ElementType } from "../utils/types.js"
3
- import InternalPortal, { DEFAULT_PORTAL_TAG, type PortalProps } from "./InternalPortal.svelte"
1
+ <script lang="ts">
2
+ import InternalPortal, { type PortalProps } from "./InternalPortal.svelte"
4
3
 
5
- let { ref = $bindable(), enabled = true, ...theirProps }: PortalProps<TTag> = $props()
4
+ let { element = $bindable(), enabled = true, ...theirProps }: PortalProps = $props()
6
5
  </script>
7
6
 
8
7
  {#if enabled}
9
- <InternalPortal {...theirProps} bind:ref />
10
- {:else if theirProps.children}{@render theirProps.children()}{/if}
8
+ <InternalPortal {...theirProps} bind:element />
9
+ {:else}
10
+ {@render theirProps.children?.({})}
11
+ {/if}
@@ -1,23 +1,4 @@
1
- import type { ElementType } from "../utils/types.js";
2
- import { DEFAULT_PORTAL_TAG, type PortalProps } from "./InternalPortal.svelte";
3
- declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_PORTAL_TAG> {
4
- props(): PortalProps<TTag>;
5
- events(): {} & {
6
- [evt: string]: CustomEvent<any>;
7
- };
8
- slots(): {};
9
- bindings(): "ref";
10
- exports(): {};
11
- }
12
- interface $$IsomorphicComponent {
13
- new <TTag extends ElementType = typeof DEFAULT_PORTAL_TAG>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TTag>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TTag>['props']>, ReturnType<__sveltets_Render<TTag>['events']>, ReturnType<__sveltets_Render<TTag>['slots']>> & {
14
- $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
15
- } & ReturnType<__sveltets_Render<TTag>['exports']>;
16
- <TTag extends ElementType = typeof DEFAULT_PORTAL_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
17
- $$events?: ReturnType<__sveltets_Render<TTag>['events']>;
18
- }): ReturnType<__sveltets_Render<TTag>['exports']>;
19
- z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
20
- }
21
- declare const Portal: $$IsomorphicComponent;
22
- type Portal<TTag extends ElementType = typeof DEFAULT_PORTAL_TAG> = InstanceType<typeof Portal<TTag>>;
1
+ import { type PortalProps } from "./InternalPortal.svelte";
2
+ declare const Portal: import("svelte").Component<PortalProps, {}, "element">;
3
+ type Portal = ReturnType<typeof Portal>;
23
4
  export default Portal;
@@ -1,29 +1,21 @@
1
1
  <script lang="ts" module>
2
- import type { ElementType, Props } from "../utils/types.js"
2
+ import type { PropsAsChild } from "../utils/types.js"
3
3
 
4
4
  const DEFAULT_GROUP_TAG = "svelte:fragment"
5
- type GroupRenderPropArg = {}
6
- type GroupPropsWeControl = never
5
+ export type GroupRenderPropArg = {}
7
6
 
8
7
  export type PortalGroupContext = {
9
8
  readonly target: HTMLElement | null
10
9
  }
11
10
 
12
- export type PortalGroupProps<TTag extends ElementType = typeof DEFAULT_GROUP_TAG> = Props<
13
- TTag,
14
- GroupRenderPropArg,
15
- GroupPropsWeControl,
16
- {
17
- target: HTMLElement | null
18
- }
19
- >
11
+ export type PortalGroupProps = PropsAsChild<GroupRenderPropArg, { target: HTMLElement | null }>
20
12
  </script>
21
13
 
22
- <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_GROUP_TAG">
14
+ <script lang="ts">
23
15
  import ElementOrComponent from "../utils/ElementOrComponent.svelte"
24
16
  import { setContext } from "svelte"
25
17
 
26
- let { ref = $bindable(), target, ...theirProps }: { as?: TTag } & PortalGroupProps<TTag> = $props()
18
+ let { target, ...theirProps }: PortalGroupProps = $props()
27
19
 
28
20
  setContext("PortalGroupContext", {
29
21
  get target() {
@@ -32,4 +24,4 @@
32
24
  })
33
25
  </script>
34
26
 
35
- <ElementOrComponent {theirProps} defaultTag={DEFAULT_GROUP_TAG} name="PortalGroup" bind:ref />
27
+ <ElementOrComponent {theirProps} name="PortalGroup" />
@@ -1,40 +1,11 @@
1
- import type { ElementType, Props } from "../utils/types.js";
2
- declare const DEFAULT_GROUP_TAG = "svelte:fragment";
3
- type GroupRenderPropArg = {};
4
- type GroupPropsWeControl = never;
1
+ import type { PropsAsChild } from "../utils/types.js";
2
+ export type GroupRenderPropArg = {};
5
3
  export type PortalGroupContext = {
6
4
  readonly target: HTMLElement | null;
7
5
  };
8
- export type PortalGroupProps<TTag extends ElementType = typeof DEFAULT_GROUP_TAG> = Props<TTag, GroupRenderPropArg, GroupPropsWeControl, {
6
+ export type PortalGroupProps = PropsAsChild<GroupRenderPropArg, {
9
7
  target: HTMLElement | null;
10
8
  }>;
11
- declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_GROUP_TAG> {
12
- props(): {
13
- as?: TTag | undefined;
14
- } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("as" | "children" | "refName" | "class") | "target"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
15
- children?: import("../utils/types.js").Children<GroupRenderPropArg> | undefined;
16
- ref?: HTMLElement;
17
- } & (true extends (import("../utils/types.js").PropsOf<TTag> extends infer T_1 ? T_1 extends import("../utils/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) ? {
18
- class?: import("../utils/types.js").PropsOf<TTag>["class"] | ((bag: GroupRenderPropArg) => string) | undefined;
19
- } : {}) & {
20
- target: HTMLElement | null;
21
- };
22
- events(): {} & {
23
- [evt: string]: CustomEvent<any>;
24
- };
25
- slots(): {};
26
- bindings(): "ref";
27
- exports(): {};
28
- }
29
- interface $$IsomorphicComponent {
30
- new <TTag extends ElementType = typeof DEFAULT_GROUP_TAG>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TTag>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TTag>['props']>, ReturnType<__sveltets_Render<TTag>['events']>, ReturnType<__sveltets_Render<TTag>['slots']>> & {
31
- $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
32
- } & ReturnType<__sveltets_Render<TTag>['exports']>;
33
- <TTag extends ElementType = typeof DEFAULT_GROUP_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
34
- $$events?: ReturnType<__sveltets_Render<TTag>['events']>;
35
- }): ReturnType<__sveltets_Render<TTag>['exports']>;
36
- z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
37
- }
38
- declare const PortalGroup: $$IsomorphicComponent;
39
- type PortalGroup<TTag extends ElementType = typeof DEFAULT_GROUP_TAG> = InstanceType<typeof PortalGroup<TTag>>;
9
+ declare const PortalGroup: import("svelte").Component<PortalGroupProps, {}, "">;
10
+ type PortalGroup = ReturnType<typeof PortalGroup>;
40
11
  export default PortalGroup;
@@ -0,0 +1,10 @@
1
+ <script lang="ts">
2
+ import { setContext, type Snippet } from "svelte"
3
+ import type { PortalParentContext } from "./InternalPortal.svelte"
4
+
5
+ const { context, children }: { context: PortalParentContext; children: Snippet } = $props()
6
+
7
+ setContext("PortalParentContext", context)
8
+ </script>
9
+
10
+ {@render children()}
@@ -0,0 +1,9 @@
1
+ import { type Snippet } from "svelte";
2
+ import type { PortalParentContext } from "./InternalPortal.svelte";
3
+ type $$ComponentProps = {
4
+ context: PortalParentContext;
5
+ children: Snippet;
6
+ };
7
+ declare const PortalWrapper: import("svelte").Component<$$ComponentProps, {}, "">;
8
+ type PortalWrapper = ReturnType<typeof PortalWrapper>;
9
+ export default PortalWrapper;
@@ -0,0 +1,142 @@
1
+ <script lang="ts" module>
2
+ import type { Props } from "../utils/types.js"
3
+
4
+ const DEFAULT_RADIO_TAG = "span" as const
5
+
6
+ export type RadioRenderPropArg = {
7
+ checked: boolean
8
+ hover: boolean
9
+ focus: boolean
10
+ autofocus: boolean
11
+ disabled: boolean
12
+ }
13
+
14
+ export type RadioOwnProps<TType> = {
15
+ element?: HTMLElement
16
+ value: TType
17
+ disabled?: boolean
18
+ autofocus?: boolean
19
+ }
20
+
21
+ export type RadioProps<TType = string> = Props<typeof DEFAULT_RADIO_TAG, RadioRenderPropArg, RadioOwnProps<TType>>
22
+ </script>
23
+
24
+ <script lang="ts" generics="TType = ComponentProps<typeof RadioGroup>['value']">
25
+ import { default as RadioGroup } from "./RadioGroup.svelte"
26
+ import { useActions, useData } from "./contest.svelte.js"
27
+ import { useId } from "../hooks/use-id.js"
28
+ import { useLabelledBy } from "../label/context.svelte.js"
29
+ import { useDescribedBy } from "../description/context.svelte.js"
30
+ import { onMount, type ComponentProps } from "svelte"
31
+ import ElementOrComponent from "../utils/ElementOrComponent.svelte"
32
+ import { useFocusRing } from "../hooks/use-focus-ring.svelte.js"
33
+ import { useHover } from "../hooks/use-hover.svelte.js"
34
+ import { mergeProps } from "../utils/render.js"
35
+ import { useProvidedId } from "../utils/id.js"
36
+ import { useDisabled } from "../hooks/use-disabled.js"
37
+
38
+ const data = useData("Radio")
39
+ const actions = useActions<TType>("Radio")
40
+
41
+ const internalId = useId()
42
+ const providedId = useProvidedId()
43
+ const providedDisabled = useDisabled()
44
+ let {
45
+ element = $bindable(),
46
+ id: theirId,
47
+ value,
48
+ disabled: theirDisabled = false,
49
+ autofocus = false,
50
+ ...theirProps
51
+ }: RadioProps<TType> = $props()
52
+ const id = $derived(theirId || providedId || `headlessui-radio-${internalId}`)
53
+ const disabled = $derived(data.disabled || providedDisabled.current || theirDisabled)
54
+
55
+ const labelledby = useLabelledBy()
56
+ const describedby = useDescribedBy()
57
+
58
+ const propsRef = {
59
+ get value() {
60
+ return value
61
+ },
62
+ get disabled() {
63
+ return disabled
64
+ },
65
+ }
66
+
67
+ onMount(() => {
68
+ return actions.registerOption({
69
+ id,
70
+ get element() {
71
+ return element
72
+ },
73
+ get propsRef() {
74
+ return propsRef
75
+ },
76
+ })
77
+ })
78
+
79
+ const handleClick = (event: MouseEvent) => {
80
+ //if (isDisabledReactIssue7711(event.currentTarget)) return event.preventDefault()
81
+ if (!actions.change(value)) return
82
+ element?.focus()
83
+ }
84
+
85
+ const { isFocusVisible: focus, focusProps } = $derived(
86
+ useFocusRing({
87
+ get autofocus() {
88
+ return autofocus
89
+ },
90
+ })
91
+ )
92
+ const { isHovered: hover, hoverProps } = $derived(
93
+ useHover({
94
+ get disabled() {
95
+ return disabled
96
+ },
97
+ })
98
+ )
99
+
100
+ const isFirstOption = $derived(data.firstOption?.id === id)
101
+
102
+ const checked = $derived(data.compare(data.value as TType, value))
103
+ const ourProps = $derived(
104
+ mergeProps(
105
+ {
106
+ id,
107
+ role: "radio",
108
+ "aria-checked": checked ? "true" : "false",
109
+ "aria-labelledby": labelledby.value,
110
+ "aria-describedby": describedby.value,
111
+ "aria-disabled": disabled ? true : undefined,
112
+ tabIndex: (() => {
113
+ if (disabled) return -1
114
+ if (checked) return 0
115
+ if (!data.containsCheckedOption && isFirstOption) return 0
116
+ return -1
117
+ })(),
118
+ autofocus,
119
+ onclick: disabled ? undefined : handleClick,
120
+ },
121
+ focusProps,
122
+ hoverProps
123
+ )
124
+ )
125
+
126
+ const slot = $derived({
127
+ checked,
128
+ disabled,
129
+ hover,
130
+ focus,
131
+ autofocus,
132
+ } satisfies RadioRenderPropArg)
133
+ </script>
134
+
135
+ <ElementOrComponent
136
+ {ourProps}
137
+ {theirProps}
138
+ slots={slot}
139
+ defaultTag={DEFAULT_RADIO_TAG}
140
+ bind:element
141
+ name="RadioOption"
142
+ />
@@ -0,0 +1,35 @@
1
+ import type { Props } from "../utils/types.js";
2
+ declare const DEFAULT_RADIO_TAG: "span";
3
+ export type RadioRenderPropArg = {
4
+ checked: boolean;
5
+ hover: boolean;
6
+ focus: boolean;
7
+ autofocus: boolean;
8
+ disabled: boolean;
9
+ };
10
+ export type RadioOwnProps<TType> = {
11
+ element?: HTMLElement;
12
+ value: TType;
13
+ disabled?: boolean;
14
+ autofocus?: boolean;
15
+ };
16
+ export type RadioProps<TType = string> = Props<typeof DEFAULT_RADIO_TAG, RadioRenderPropArg, RadioOwnProps<TType>>;
17
+ import { default as RadioGroup } from "./RadioGroup.svelte";
18
+ import { type ComponentProps } from "svelte";
19
+ declare class __sveltets_Render<TType = ComponentProps<typeof RadioGroup>['value']> {
20
+ props(): RadioProps<TType>;
21
+ events(): {};
22
+ slots(): {};
23
+ bindings(): "element";
24
+ exports(): {};
25
+ }
26
+ interface $$IsomorphicComponent {
27
+ new <TType = ComponentProps<typeof RadioGroup>['value']>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TType>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TType>['props']>, ReturnType<__sveltets_Render<TType>['events']>, ReturnType<__sveltets_Render<TType>['slots']>> & {
28
+ $$bindings?: ReturnType<__sveltets_Render<TType>['bindings']>;
29
+ } & ReturnType<__sveltets_Render<TType>['exports']>;
30
+ <TType = ComponentProps<typeof RadioGroup>['value']>(internal: unknown, props: ReturnType<__sveltets_Render<TType>['props']> & {}): ReturnType<__sveltets_Render<TType>['exports']>;
31
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
32
+ }
33
+ declare const Radio: $$IsomorphicComponent;
34
+ type Radio<TType = ComponentProps<typeof RadioGroup>['value']> = InstanceType<typeof Radio<TType>>;
35
+ export default Radio;
@@ -0,0 +1,222 @@
1
+ <script lang="ts" module>
2
+ import { useByComparator, type ByComparator } from "../hooks/use-by-comparator.js"
3
+ import type { Props } from "../utils/types.js"
4
+
5
+ const DEFAULT_RADIO_GROUP_TAG = "div" as const
6
+
7
+ export type RadioGroupRenderPropArg<TType> = {
8
+ value: TType
9
+ }
10
+
11
+ export type RadioGroupOwnProps<TType = string> = {
12
+ element?: HTMLElement
13
+ value?: TType
14
+ defaultValue?: TType
15
+ onchange?(value: TType): void
16
+ by?: ByComparator<TType>
17
+ disabled?: boolean
18
+ form?: string
19
+ name?: string
20
+ }
21
+
22
+ export type RadioGroupProps<TType = string> = Props<
23
+ typeof DEFAULT_RADIO_GROUP_TAG,
24
+ RadioGroupRenderPropArg<TType>,
25
+ RadioGroupOwnProps<TType>
26
+ >
27
+ </script>
28
+
29
+ <script lang="ts" generics="TType = string">
30
+ import { createState, type RadioGroupActionsContext, type RadioGroupDataContext } from "./contest.svelte.js"
31
+ import { useId } from "../hooks/use-id.js"
32
+ import { useDisabled } from "../hooks/use-disabled.js"
33
+ import { useLabelledBy } from "../label/context.svelte.js"
34
+ import { useDescribedBy } from "../description/context.svelte.js"
35
+ import { useControllable } from "../hooks/use-controllable.svelte.js"
36
+ import { getOwnerDocument } from "../utils/owner.js"
37
+ import { attemptSubmit } from "../utils/form.js"
38
+ import { Focus, focusIn, FocusResult } from "../utils/focus-management.js"
39
+ import { setContext } from "svelte"
40
+ import FormFields from "../internal/FormFields.svelte"
41
+ import ElementOrComponent from "../utils/ElementOrComponent.svelte"
42
+
43
+ const internalId = useId()
44
+ const providedDisabled = useDisabled()
45
+ let {
46
+ element = $bindable(),
47
+ id = `headlessui-radiogroup-${internalId}`,
48
+ value: controlledValue = $bindable(),
49
+ form,
50
+ name,
51
+ onchange: controlledOnChange,
52
+ by,
53
+ disabled: theirDisabled = false,
54
+ defaultValue,
55
+ ...theirProps
56
+ }: RadioGroupProps<TType> = $props()
57
+
58
+ const compare = useByComparator(by)
59
+ let _state = createState<TType>()
60
+ const options = $derived(_state.options)
61
+
62
+ const disabled = $derived(providedDisabled.current || theirDisabled)
63
+ const labelledBy = useLabelledBy()
64
+ const describedBy = useDescribedBy()
65
+
66
+ const controllable = useControllable<any>(
67
+ {
68
+ get controlledValue() {
69
+ return controlledValue
70
+ },
71
+ set controlledValue(value) {
72
+ controlledValue = value
73
+ },
74
+ },
75
+ controlledOnChange,
76
+ defaultValue
77
+ )
78
+ const { value, onchange } = $derived(controllable)
79
+
80
+ const firstOption = $derived(
81
+ options.find((option) => {
82
+ if (option.propsRef.disabled) return false
83
+ return true
84
+ })
85
+ )
86
+ const containsCheckedOption = $derived(options.some((option) => compare(option.propsRef.value as TType, value)))
87
+
88
+ const triggerChange = (nextValue: TType) => {
89
+ if (disabled) return false
90
+ if (compare(nextValue, value)) return false
91
+ let nextOption = options.find((option) => compare(option.propsRef.value as TType, nextValue))?.propsRef
92
+ if (nextOption?.disabled) return false
93
+
94
+ onchange?.(nextValue)
95
+
96
+ return true
97
+ }
98
+
99
+ const handleKeyDown = (event: KeyboardEvent) => {
100
+ let container = element
101
+ if (!container) return
102
+
103
+ let ownerDocument = getOwnerDocument(container)
104
+
105
+ let all = options
106
+ .filter((option) => option.propsRef.disabled === false)
107
+ .map((radio) => radio.element) as HTMLElement[]
108
+
109
+ switch (event.key) {
110
+ case "Enter":
111
+ attemptSubmit(event.currentTarget as HTMLElement)
112
+ break
113
+ case "ArrowLeft":
114
+ case "ArrowUp":
115
+ {
116
+ event.preventDefault()
117
+ event.stopPropagation()
118
+
119
+ let result = focusIn(all, Focus.Previous | Focus.WrapAround)
120
+
121
+ if (result === FocusResult.Success) {
122
+ let activeOption = options.find((option) => option.element === ownerDocument?.activeElement)
123
+ if (activeOption) triggerChange(activeOption.propsRef.value)
124
+ }
125
+ }
126
+ break
127
+
128
+ case "ArrowRight":
129
+ case "ArrowDown":
130
+ {
131
+ event.preventDefault()
132
+ event.stopPropagation()
133
+
134
+ let result = focusIn(all, Focus.Next | Focus.WrapAround)
135
+
136
+ if (result === FocusResult.Success) {
137
+ let activeOption = options.find((option) => option.element === ownerDocument?.activeElement)
138
+ if (activeOption) triggerChange(activeOption.propsRef.value)
139
+ }
140
+ }
141
+ break
142
+
143
+ case " ":
144
+ {
145
+ event.preventDefault()
146
+ event.stopPropagation()
147
+
148
+ let activeOption = options.find((option) => option.element === ownerDocument?.activeElement)
149
+ if (activeOption) triggerChange(activeOption.propsRef.value)
150
+ }
151
+ break
152
+ }
153
+ }
154
+
155
+ const dataContext: RadioGroupDataContext = {
156
+ get value() {
157
+ return value
158
+ },
159
+ get firstOption() {
160
+ return firstOption
161
+ },
162
+ get containsCheckedOption() {
163
+ return containsCheckedOption
164
+ },
165
+ get disabled() {
166
+ return disabled
167
+ },
168
+ get compare() {
169
+ return compare
170
+ },
171
+ get options() {
172
+ return options
173
+ },
174
+ }
175
+ setContext("RadioGroupDataContext", dataContext)
176
+
177
+ const actionContext: RadioGroupActionsContext<TType> = {
178
+ registerOption(option) {
179
+ _state.registerOption(option)
180
+ return () => {
181
+ _state.unregisterOption(option.id)
182
+ }
183
+ },
184
+ change: triggerChange,
185
+ }
186
+ setContext("RadioGroupActionsContext", actionContext)
187
+
188
+ const ourProps = $derived({
189
+ id,
190
+ role: "radiogroup",
191
+ "aria-labelledby": labelledBy.value,
192
+ "aria-describedby": describedBy.value,
193
+ onkeydown: handleKeyDown,
194
+ })
195
+
196
+ const slot = $derived({
197
+ value,
198
+ } satisfies RadioGroupRenderPropArg<TType>)
199
+
200
+ const reset = () => {
201
+ if (defaultValue === undefined) return
202
+ return triggerChange(defaultValue)
203
+ }
204
+ </script>
205
+
206
+ {#if name}
207
+ <FormFields
208
+ {disabled}
209
+ data={{ [name]: value || "on" }}
210
+ overrides={{ type: "radio", checked: value != null && value !== undefined }}
211
+ {form}
212
+ onReset={reset}
213
+ />
214
+ {/if}
215
+ <ElementOrComponent
216
+ {ourProps}
217
+ {theirProps}
218
+ slots={slot}
219
+ defaultTag={DEFAULT_RADIO_GROUP_TAG}
220
+ bind:element
221
+ name="RadioGroup"
222
+ />
@@ -0,0 +1,34 @@
1
+ import { type ByComparator } from "../hooks/use-by-comparator.js";
2
+ import type { Props } from "../utils/types.js";
3
+ declare const DEFAULT_RADIO_GROUP_TAG: "div";
4
+ export type RadioGroupRenderPropArg<TType> = {
5
+ value: TType;
6
+ };
7
+ export type RadioGroupOwnProps<TType = string> = {
8
+ element?: HTMLElement;
9
+ value?: TType;
10
+ defaultValue?: TType;
11
+ onchange?(value: TType): void;
12
+ by?: ByComparator<TType>;
13
+ disabled?: boolean;
14
+ form?: string;
15
+ name?: string;
16
+ };
17
+ export type RadioGroupProps<TType = string> = Props<typeof DEFAULT_RADIO_GROUP_TAG, RadioGroupRenderPropArg<TType>, RadioGroupOwnProps<TType>>;
18
+ declare class __sveltets_Render<TType = string> {
19
+ props(): RadioGroupProps<TType>;
20
+ events(): {};
21
+ slots(): {};
22
+ bindings(): "element" | "value";
23
+ exports(): {};
24
+ }
25
+ interface $$IsomorphicComponent {
26
+ new <TType = string>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TType>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TType>['props']>, ReturnType<__sveltets_Render<TType>['events']>, ReturnType<__sveltets_Render<TType>['slots']>> & {
27
+ $$bindings?: ReturnType<__sveltets_Render<TType>['bindings']>;
28
+ } & ReturnType<__sveltets_Render<TType>['exports']>;
29
+ <TType = string>(internal: unknown, props: ReturnType<__sveltets_Render<TType>['props']> & {}): ReturnType<__sveltets_Render<TType>['exports']>;
30
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
31
+ }
32
+ declare const RadioGroup: $$IsomorphicComponent;
33
+ type RadioGroup<TType = string> = InstanceType<typeof RadioGroup<TType>>;
34
+ export default RadioGroup;