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

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 (174) 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 +40 -22
  4. package/dist/checkbox/Checkbox.svelte.d.ts +44 -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 -10
  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 +332 -0
  36. package/dist/focus-trap/FocusTrap.svelte.d.ts +58 -0
  37. package/dist/hooks/use-controllable.svelte.d.ts +1 -1
  38. package/dist/hooks/use-controllable.svelte.js +3 -3
  39. package/dist/hooks/use-escape.svelte.d.ts +5 -0
  40. package/dist/hooks/use-escape.svelte.js +26 -0
  41. package/dist/hooks/use-event-listener.svelte.d.ts +6 -0
  42. package/dist/hooks/use-event-listener.svelte.js +12 -0
  43. package/dist/hooks/use-inert-others.svelte.d.ts +2 -2
  44. package/dist/hooks/use-inert-others.svelte.js +3 -3
  45. package/dist/hooks/use-is-mounted.svelte.d.ts +3 -0
  46. package/dist/hooks/use-is-mounted.svelte.js +14 -0
  47. package/dist/hooks/use-is-touch-device.svelte.d.ts +3 -0
  48. package/dist/hooks/use-is-touch-device.svelte.js +20 -0
  49. package/dist/hooks/use-root-containers.svelte.d.ts +9 -0
  50. package/dist/hooks/use-root-containers.svelte.js +50 -0
  51. package/dist/hooks/use-tab-direction.svelte.d.ts +7 -0
  52. package/dist/hooks/use-tab-direction.svelte.js +25 -0
  53. package/dist/hooks/use-transition.svelte.js +14 -13
  54. package/dist/hooks/use-tree-walker.svelte.d.ts +8 -0
  55. package/dist/hooks/use-tree-walker.svelte.js +19 -0
  56. package/dist/hooks/use-watch.svelte.d.ts +4 -0
  57. package/dist/hooks/use-watch.svelte.js +16 -0
  58. package/dist/hooks/use-window-event.svelte.d.ts +6 -0
  59. package/dist/hooks/use-window-event.svelte.js +12 -0
  60. package/dist/index.d.ts +9 -0
  61. package/dist/index.js +9 -0
  62. package/dist/input/Input.svelte +59 -0
  63. package/dist/input/Input.svelte.d.ts +52 -0
  64. package/dist/input/index.d.ts +1 -0
  65. package/dist/input/index.js +1 -0
  66. package/dist/internal/FocusSentinel.svelte.d.ts +4 -1
  67. package/dist/internal/ForcePortalRoot.svelte +6 -0
  68. package/dist/internal/ForcePortalRoot.svelte.d.ts +22 -0
  69. package/dist/internal/FormFields.svelte.d.ts +4 -1
  70. package/dist/internal/FormResolver.svelte.d.ts +4 -1
  71. package/dist/internal/Hidden.svelte +5 -9
  72. package/dist/internal/Hidden.svelte.d.ts +17 -10
  73. package/dist/internal/HoistFormFields.svelte.d.ts +4 -1
  74. package/dist/internal/MainTreeProvider.svelte +45 -0
  75. package/dist/internal/MainTreeProvider.svelte.d.ts +31 -0
  76. package/dist/internal/Portal.svelte.d.ts +4 -1
  77. package/dist/internal/close-provider.d.ts +7 -0
  78. package/dist/internal/close-provider.js +7 -0
  79. package/dist/internal/floating.svelte.d.ts +13 -8
  80. package/dist/internal/floating.svelte.js +197 -186
  81. package/dist/internal/id.d.ts +1 -1
  82. package/dist/internal/open-closed.d.ts +1 -1
  83. package/dist/internal/open-closed.js +1 -1
  84. package/dist/label/Label.svelte +12 -61
  85. package/dist/label/Label.svelte.d.ts +19 -32
  86. package/dist/label/context.svelte.d.ts +17 -0
  87. package/dist/label/context.svelte.js +56 -0
  88. package/dist/legend/Legend.svelte +4 -3
  89. package/dist/legend/Legend.svelte.d.ts +33 -15
  90. package/dist/listbox/Listbox.svelte +6 -9
  91. package/dist/listbox/Listbox.svelte.d.ts +29 -10
  92. package/dist/listbox/ListboxButton.svelte +6 -8
  93. package/dist/listbox/ListboxButton.svelte.d.ts +18 -7
  94. package/dist/listbox/ListboxOption.svelte +4 -6
  95. package/dist/listbox/ListboxOption.svelte.d.ts +22 -11
  96. package/dist/listbox/ListboxOptions.svelte +21 -19
  97. package/dist/listbox/ListboxOptions.svelte.d.ts +23 -7
  98. package/dist/listbox/ListboxSelectedOption.svelte +17 -7
  99. package/dist/listbox/ListboxSelectedOption.svelte.d.ts +23 -13
  100. package/dist/menu/Menu.svelte +235 -0
  101. package/dist/menu/Menu.svelte.d.ts +42 -0
  102. package/dist/menu/MenuButton.svelte +127 -0
  103. package/dist/menu/MenuButton.svelte.d.ts +52 -0
  104. package/dist/menu/MenuHeading.svelte +19 -0
  105. package/dist/menu/MenuHeading.svelte.d.ts +39 -0
  106. package/dist/menu/MenuItem.svelte +114 -0
  107. package/dist/menu/MenuItem.svelte.d.ts +49 -0
  108. package/dist/menu/MenuItems.svelte +244 -0
  109. package/dist/menu/MenuItems.svelte.d.ts +55 -0
  110. package/dist/menu/MenuSection.svelte +14 -0
  111. package/dist/menu/MenuSection.svelte.d.ts +35 -0
  112. package/dist/menu/MenuSeparator.svelte +9 -0
  113. package/dist/menu/MenuSeparator.svelte.d.ts +35 -0
  114. package/dist/menu/context.svelte.d.ts +47 -0
  115. package/dist/menu/context.svelte.js +21 -0
  116. package/dist/menu/index.d.ts +7 -0
  117. package/dist/menu/index.js +7 -0
  118. package/dist/portal/InternalPortal.svelte +22 -33
  119. package/dist/portal/InternalPortal.svelte.d.ts +16 -7
  120. package/dist/portal/Portal.svelte +4 -8
  121. package/dist/portal/Portal.svelte.d.ts +6 -6
  122. package/dist/portal/PortalGroup.svelte +5 -6
  123. package/dist/portal/PortalGroup.svelte.d.ts +16 -7
  124. package/dist/switch/Switch.svelte +11 -17
  125. package/dist/switch/Switch.svelte.d.ts +23 -6
  126. package/dist/switch/SwitchGroup.svelte +7 -8
  127. package/dist/switch/SwitchGroup.svelte.d.ts +14 -7
  128. package/dist/tabs/Tab.svelte +9 -14
  129. package/dist/tabs/Tab.svelte.d.ts +18 -6
  130. package/dist/tabs/TabGroup.svelte +20 -23
  131. package/dist/tabs/TabGroup.svelte.d.ts +19 -6
  132. package/dist/tabs/TabList.svelte +5 -7
  133. package/dist/tabs/TabList.svelte.d.ts +13 -6
  134. package/dist/tabs/TabPanel.svelte +30 -32
  135. package/dist/tabs/TabPanel.svelte.d.ts +19 -6
  136. package/dist/tabs/TabPanels.svelte +5 -6
  137. package/dist/tabs/TabPanels.svelte.d.ts +13 -6
  138. package/dist/transition/InternalTransitionChild.svelte +178 -0
  139. package/dist/transition/InternalTransitionChild.svelte.d.ts +55 -0
  140. package/dist/transition/Transition.svelte +89 -0
  141. package/dist/transition/Transition.svelte.d.ts +42 -0
  142. package/dist/transition/TransitionChild.svelte +16 -0
  143. package/dist/transition/TransitionChild.svelte.d.ts +44 -0
  144. package/dist/transition/context.svelte.d.ts +64 -0
  145. package/dist/transition/context.svelte.js +120 -0
  146. package/dist/transition/index.d.ts +2 -0
  147. package/dist/transition/index.js +2 -0
  148. package/dist/utils/ElementOrComponent.svelte +26 -0
  149. package/dist/utils/ElementOrComponent.svelte.d.ts +56 -0
  150. package/dist/utils/Generic.svelte +44 -0
  151. package/dist/utils/Generic.svelte.d.ts +35 -0
  152. package/dist/utils/StableCollection.svelte +1 -1
  153. package/dist/utils/StableCollection.svelte.d.ts +4 -1
  154. package/dist/utils/active-element-history.d.ts +1 -0
  155. package/dist/utils/active-element-history.js +35 -0
  156. package/dist/utils/alternative-types.d.ts +21 -0
  157. package/dist/utils/alternative-types.js +1 -0
  158. package/dist/utils/class-names.d.ts +1 -0
  159. package/dist/utils/class-names.js +10 -0
  160. package/dist/utils/focus-management.d.ts +2 -1
  161. package/dist/utils/focus-management.js +13 -13
  162. package/dist/utils/on-document-ready.d.ts +1 -0
  163. package/dist/utils/on-document-ready.js +12 -0
  164. package/dist/utils/render.d.ts +3 -0
  165. package/dist/utils/render.js +63 -0
  166. package/dist/utils/state.d.ts +7 -1
  167. package/dist/utils/state.js +10 -6
  168. package/dist/utils/types.d.ts +14 -17
  169. package/dist/utils/types.js +0 -5
  170. package/package.json +26 -25
  171. package/dist/tabs/Button.svelte +0 -65
  172. package/dist/tabs/Button.svelte.d.ts +0 -39
  173. package/dist/utils/close.d.ts +0 -2
  174. package/dist/utils/close.js +0 -3
@@ -1,19 +1,18 @@
1
- <script lang="ts" context="module">const DEFAULT_BUTTON_TAG = "button";
1
+ <script lang="ts" module>const DEFAULT_BUTTON_TAG = "button";
2
2
  </script>
3
3
 
4
- <script lang="ts" generics="TTag extends keyof SvelteHTMLElements, TType">import { useActivePress } from "../hooks/use-active-press.svelte.js";
4
+ <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_BUTTON_TAG">import { useActivePress } from "../hooks/use-active-press.svelte.js";
5
5
  import { useFocusRing } from "../hooks/use-focus-ring.svelte.js";
6
6
  import { useDisabled } from "../hooks/use-disabled.js";
7
- import { stateFromSlot } from "../utils/state.js";
8
7
  import { useHover } from "../hooks/use-hover.svelte.js";
9
8
  import { mergeProps } from "../utils/render.js";
9
+ import ElementOrComponent from "../utils/ElementOrComponent.svelte";
10
10
  const providedDisabled = useDisabled();
11
11
  let {
12
- as,
12
+ ref = $bindable(),
13
13
  disabled: ownDisabled = false,
14
14
  autofocus = false,
15
15
  type = "button",
16
- children,
17
16
  ...theirProps
18
17
  } = $props();
19
18
  const disabled = $derived(providedDisabled.value || ownDisabled);
@@ -54,12 +53,9 @@ const ourProps = $derived(
54
53
  },
55
54
  focusProps,
56
55
  hoverProps,
57
- pressProps,
58
- stateFromSlot(slot)
56
+ pressProps
59
57
  )
60
58
  );
61
59
  </script>
62
60
 
63
- <svelte:element this={as ?? DEFAULT_BUTTON_TAG} {...ourProps} {...theirProps}>
64
- {#if children}{@render children(slot)}{/if}
65
- </svelte:element>
61
+ <ElementOrComponent {ourProps} {theirProps} {slot} defaultTag={DEFAULT_BUTTON_TAG} name="Button" bind:ref />
@@ -1,39 +1,47 @@
1
- import type { SvelteHTMLElements } from "svelte/elements";
2
- export type ButtonProps<TTag extends keyof SvelteHTMLElements = typeof DEFAULT_BUTTON_TAG> = SvelteHTMLElements[TTag] & {
3
- as?: TTag;
1
+ import type { Props, ElementType } from "../utils/types.js";
2
+ declare const DEFAULT_BUTTON_TAG: "button";
3
+ type ButtonRenderPropArg = {
4
+ disabled: boolean;
5
+ hover: boolean;
6
+ focus: boolean;
7
+ active: boolean;
8
+ autofocus: boolean;
9
+ };
10
+ type ButtonPropsWeControl = never;
11
+ export type ButtonProps<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG> = Props<TTag, ButtonRenderPropArg, ButtonPropsWeControl, {
4
12
  disabled?: boolean;
5
13
  autofocus?: boolean;
6
14
  type?: "button" | "submit" | "reset";
7
- children?: Snippet<[
8
- {
9
- disabled: boolean;
10
- hover: boolean;
11
- focus: boolean;
12
- active: boolean;
13
- autofocus: boolean;
14
- }
15
- ]>;
16
- };
17
- declare const DEFAULT_BUTTON_TAG: "button";
18
- import type { Snippet } from "svelte";
19
- declare class __sveltets_Render<TTag extends keyof SvelteHTMLElements, TType> {
20
- props(): ButtonProps<TTag>;
15
+ }>;
16
+ declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG> {
17
+ props(): {
18
+ as?: TTag | undefined;
19
+ } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("as" | "children" | "refName" | "class") | "disabled" | "autofocus" | "type"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
20
+ children?: import("../utils/types.js").Children<ButtonRenderPropArg> | undefined;
21
+ ref?: HTMLElement;
22
+ } & (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) ? {
23
+ class?: import("../utils/types.js").PropsOf<TTag>["class"] | ((bag: ButtonRenderPropArg) => string) | undefined;
24
+ } : {}) & {
25
+ disabled?: boolean;
26
+ autofocus?: boolean;
27
+ type?: "button" | "submit" | "reset";
28
+ };
21
29
  events(): {} & {
22
30
  [evt: string]: CustomEvent<any>;
23
31
  };
24
32
  slots(): {};
25
- bindings(): "";
33
+ bindings(): "ref";
26
34
  exports(): {};
27
35
  }
28
36
  interface $$IsomorphicComponent {
29
- new <TTag extends keyof SvelteHTMLElements, TType>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TTag, TType>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TTag, TType>['props']>, ReturnType<__sveltets_Render<TTag, TType>['events']>, ReturnType<__sveltets_Render<TTag, TType>['slots']>> & {
30
- $$bindings?: ReturnType<__sveltets_Render<TTag, TType>['bindings']>;
31
- } & ReturnType<__sveltets_Render<TTag, TType>['exports']>;
32
- <TTag extends keyof SvelteHTMLElements, TType>(internal: unknown, props: ReturnType<__sveltets_Render<TTag, TType>['props']> & {
33
- $$events?: ReturnType<__sveltets_Render<TTag, TType>['events']>;
34
- }): ReturnType<__sveltets_Render<TTag, TType>['exports']>;
35
- z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
37
+ new <TTag extends ElementType = typeof DEFAULT_BUTTON_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']>> & {
38
+ $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
39
+ } & ReturnType<__sveltets_Render<TTag>['exports']>;
40
+ <TTag extends ElementType = typeof DEFAULT_BUTTON_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
41
+ $$events?: ReturnType<__sveltets_Render<TTag>['events']>;
42
+ }): ReturnType<__sveltets_Render<TTag>['exports']>;
43
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
36
44
  }
37
45
  declare const Button: $$IsomorphicComponent;
38
- type Button<TTag extends keyof SvelteHTMLElements, TType> = InstanceType<typeof Button<TTag, TType>>;
46
+ type Button<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG> = InstanceType<typeof Button<TTag>>;
39
47
  export default Button;
@@ -1,36 +1,50 @@
1
- <script lang="ts" context="module">const DEFAULT_CHECKBOX_TAG = "div";
1
+ <script lang="ts" module>let DEFAULT_CHECKBOX_TAG = "span";
2
2
  </script>
3
3
 
4
- <script lang="ts" generics="TTag extends keyof SvelteHTMLElements, TType">import { tick } from "svelte";
4
+ <script lang="ts" generics="TType, TTag extends ElementType = typeof DEFAULT_CHECKBOX_TAG">import { tick } from "svelte";
5
5
  import { attemptSubmit } from "../utils/form.js";
6
6
  import { getIdContext, htmlid } from "../utils/id.js";
7
7
  import { useActivePress } from "../hooks/use-active-press.svelte.js";
8
8
  import { useFocusRing } from "../hooks/use-focus-ring.svelte.js";
9
9
  import FormFields from "../internal/FormFields.svelte";
10
10
  import { useDisabled } from "../hooks/use-disabled.js";
11
- import { stateFromSlot } from "../utils/state.js";
12
- import { useLabelledBy } from "../label/Label.svelte";
13
- import { useDescribedBy } from "../description/Description.svelte";
11
+ import { useLabelledBy } from "../label/context.svelte.js";
12
+ import { useDescribedBy } from "../description/context.svelte.js";
14
13
  import { useHover } from "../hooks/use-hover.svelte.js";
15
14
  import { mergeProps } from "../utils/render.js";
15
+ import ElementOrComponent from "../utils/ElementOrComponent.svelte";
16
+ import { useControllable } from "../hooks/use-controllable.svelte.js";
16
17
  const internalId = htmlid();
17
18
  const providedId = getIdContext();
18
19
  const providedDisabled = useDisabled();
19
20
  let {
21
+ ref = $bindable(),
20
22
  id = providedId || `headlessui-checkbox-${internalId}`,
21
- as,
22
- value,
23
23
  disabled: ownDisabled = false,
24
- indeterminate = false,
25
- defaultChecked,
26
- checked = $bindable(defaultChecked ?? false),
27
- autofocus,
28
- form,
24
+ autofocus = false,
25
+ checked: controlledChecked = $bindable(),
26
+ defaultChecked: _defaultChecked,
27
+ onchange: controlledOnChange,
29
28
  name,
30
- onchange,
31
- children,
29
+ value,
30
+ form,
31
+ indeterminate = false,
32
32
  ...theirProps
33
33
  } = $props();
34
+ const defaultChecked = _defaultChecked;
35
+ const controllable = useControllable(
36
+ {
37
+ get controlledValue() {
38
+ return controlledChecked;
39
+ },
40
+ set controlledValue(checked2) {
41
+ controlledChecked = checked2;
42
+ }
43
+ },
44
+ controlledOnChange,
45
+ defaultChecked ?? false
46
+ );
47
+ const { value: checked, onchange } = $derived(controllable);
34
48
  const disabled = $derived(providedDisabled.value || ownDisabled);
35
49
  const { isHovered: hover, hoverProps } = $derived(
36
50
  useHover({
@@ -58,8 +72,7 @@ const describedBy = useDescribedBy();
58
72
  let changing = $state(false);
59
73
  const toggle = () => {
60
74
  changing = true;
61
- checked = !checked;
62
- onchange?.(checked);
75
+ onchange?.(!checked);
63
76
  tick().then(() => {
64
77
  changing = false;
65
78
  });
@@ -88,7 +101,7 @@ const slot = $derived({
88
101
  disabled,
89
102
  indeterminate
90
103
  });
91
- const ownProps = $derived(
104
+ const ourProps = $derived(
92
105
  mergeProps(
93
106
  {
94
107
  id,
@@ -104,8 +117,7 @@ const ownProps = $derived(
104
117
  },
105
118
  focusProps,
106
119
  hoverProps,
107
- pressProps,
108
- stateFromSlot(slot)
120
+ pressProps
109
121
  )
110
122
  );
111
123
  const reset = $derived(() => {
@@ -123,6 +135,12 @@ const reset = $derived(() => {
123
135
  onReset={reset}
124
136
  />
125
137
  {/if}
126
- <svelte:element this={as ?? DEFAULT_CHECKBOX_TAG} {...ownProps} {...theirProps}>
127
- {#if children}{@render children(slot)}{/if}
128
- </svelte:element>
138
+ <ElementOrComponent
139
+ {ourProps}
140
+ {theirProps}
141
+ {slot}
142
+ defaultTag={DEFAULT_CHECKBOX_TAG}
143
+ name="Checkbox"
144
+ bind:ref
145
+ bind:value
146
+ />
@@ -1,6 +1,18 @@
1
- import type { SvelteHTMLElements } from "svelte/elements";
2
- export type CheckboxProps<TType = string, TTag extends keyof SvelteHTMLElements = typeof DEFAULT_CHECKBOX_TAG> = SvelteHTMLElements[TTag] & {
3
- as?: TTag;
1
+ import type { ElementType, Props } from "../utils/types.js";
2
+ declare let DEFAULT_CHECKBOX_TAG: "span";
3
+ type CheckboxRenderPropArg = {
4
+ checked: boolean;
5
+ changing: boolean;
6
+ focus: boolean;
7
+ active: boolean;
8
+ hover: boolean;
9
+ autofocus: boolean;
10
+ disabled: boolean;
11
+ indeterminate: boolean;
12
+ };
13
+ type CheckboxPropsWeControl = "aria-checked" | "aria-describedby" | "aria-disabled" | "aria-labelledby" | "role" | "tabIndex";
14
+ export type CheckboxProps<TTag extends ElementType = typeof DEFAULT_CHECKBOX_TAG, TType = string> = Props<TTag, CheckboxRenderPropArg, CheckboxPropsWeControl, {
15
+ id?: string;
4
16
  value?: TType;
5
17
  disabled?: boolean;
6
18
  indeterminate?: boolean;
@@ -10,39 +22,43 @@ export type CheckboxProps<TType = string, TTag extends keyof SvelteHTMLElements
10
22
  form?: string;
11
23
  name?: string;
12
24
  onchange?: (checked: boolean) => void;
13
- children?: Snippet<[
14
- {
15
- checked: boolean;
16
- changing: boolean;
17
- focus: boolean;
18
- active: boolean;
19
- hover: boolean;
20
- autofocus: boolean;
21
- disabled: boolean;
22
- indeterminate: boolean;
23
- }
24
- ]>;
25
- };
26
- declare const DEFAULT_CHECKBOX_TAG: "div";
27
- import { type Snippet } from "svelte";
28
- declare class __sveltets_Render<TTag extends keyof SvelteHTMLElements, TType> {
29
- props(): CheckboxProps<TType, TTag>;
25
+ }>;
26
+ declare class __sveltets_Render<TType, TTag extends ElementType = typeof DEFAULT_CHECKBOX_TAG> {
27
+ props(): {
28
+ as?: TTag | undefined;
29
+ } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, "form" | ("as" | "children" | "refName" | "class") | "disabled" | "autofocus" | "name" | "value" | "checked" | "id" | "onchange" | "indeterminate" | CheckboxPropsWeControl | "defaultChecked"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
30
+ children?: import("../utils/types.js").Children<CheckboxRenderPropArg> | undefined;
31
+ ref?: HTMLElement;
32
+ } & (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) ? {
33
+ class?: import("../utils/types.js").PropsOf<TTag>["class"] | ((bag: CheckboxRenderPropArg) => string) | undefined;
34
+ } : {}) & {
35
+ id?: string;
36
+ value?: TType | undefined;
37
+ disabled?: boolean;
38
+ indeterminate?: boolean;
39
+ checked?: boolean;
40
+ defaultChecked?: boolean;
41
+ autofocus?: boolean;
42
+ form?: string;
43
+ name?: string;
44
+ onchange?: (checked: boolean) => void;
45
+ };
30
46
  events(): {} & {
31
47
  [evt: string]: CustomEvent<any>;
32
48
  };
33
49
  slots(): {};
34
- bindings(): "checked";
50
+ bindings(): "ref" | "checked";
35
51
  exports(): {};
36
52
  }
37
53
  interface $$IsomorphicComponent {
38
- new <TTag extends keyof SvelteHTMLElements, TType>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TTag, TType>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TTag, TType>['props']>, ReturnType<__sveltets_Render<TTag, TType>['events']>, ReturnType<__sveltets_Render<TTag, TType>['slots']>> & {
39
- $$bindings?: ReturnType<__sveltets_Render<TTag, TType>['bindings']>;
40
- } & ReturnType<__sveltets_Render<TTag, TType>['exports']>;
41
- <TTag extends keyof SvelteHTMLElements, TType>(internal: unknown, props: ReturnType<__sveltets_Render<TTag, TType>['props']> & {
42
- $$events?: ReturnType<__sveltets_Render<TTag, TType>['events']>;
43
- }): ReturnType<__sveltets_Render<TTag, TType>['exports']>;
54
+ new <TType, TTag extends ElementType = typeof DEFAULT_CHECKBOX_TAG>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TType, TTag>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TType, TTag>['props']>, ReturnType<__sveltets_Render<TType, TTag>['events']>, ReturnType<__sveltets_Render<TType, TTag>['slots']>> & {
55
+ $$bindings?: ReturnType<__sveltets_Render<TType, TTag>['bindings']>;
56
+ } & ReturnType<__sveltets_Render<TType, TTag>['exports']>;
57
+ <TType, TTag extends ElementType = typeof DEFAULT_CHECKBOX_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TType, TTag>['props']> & {
58
+ $$events?: ReturnType<__sveltets_Render<TType, TTag>['events']>;
59
+ }): ReturnType<__sveltets_Render<TType, TTag>['exports']>;
44
60
  z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
45
61
  }
46
62
  declare const Checkbox: $$IsomorphicComponent;
47
- type Checkbox<TTag extends keyof SvelteHTMLElements, TType> = InstanceType<typeof Checkbox<TTag, TType>>;
63
+ type Checkbox<TType, TTag extends ElementType = typeof DEFAULT_CHECKBOX_TAG> = InstanceType<typeof Checkbox<TType, TTag>>;
48
64
  export default Checkbox;
@@ -1,9 +1,10 @@
1
- <script lang="ts" context="module">import Button, {} from "../button/Button.svelte";
2
- import { getCloseContext } from "../utils/close.js";
3
- const DEFAULT_BUTTON_TAG = "button";
1
+ <script lang="ts" module>import Button, {} from "../button/Button.svelte";
2
+ import { useClose } from "../internal/close-provider.js";
3
+ let DEFAULT_BUTTON_TAG = "button";
4
4
  </script>
5
5
 
6
- <script lang="ts" generics="TTag extends keyof SvelteHTMLElements, TType">const close = getCloseContext();
6
+ <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_BUTTON_TAG">const closeContext = useClose();
7
+ const close = $derived(closeContext?.close);
7
8
  let { ...props } = $props();
8
9
  </script>
9
10
 
@@ -1,9 +1,32 @@
1
- import type { SvelteHTMLElements } from "svelte/elements";
2
1
  import { type ButtonProps } from "../button/Button.svelte";
3
- export type CloseButtonProps<TTag extends keyof SvelteHTMLElements = typeof DEFAULT_BUTTON_TAG> = ButtonProps<TTag>;
4
- declare const DEFAULT_BUTTON_TAG: "button";
5
- declare class __sveltets_Render<TTag extends keyof SvelteHTMLElements, TType> {
6
- props(): CloseButtonProps<TTag>;
2
+ import type { ElementType } from "../utils/types.js";
3
+ declare let DEFAULT_BUTTON_TAG: "button";
4
+ export type CloseButtonProps<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG> = ButtonProps<TTag>;
5
+ declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG> {
6
+ props(): {
7
+ as?: TTag | undefined;
8
+ } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("as" | "children" | "refName" | "class") | "disabled" | "autofocus" | "type"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
9
+ children?: import("../utils/types.js").Children<{
10
+ disabled: boolean;
11
+ hover: boolean;
12
+ focus: boolean;
13
+ active: boolean;
14
+ autofocus: boolean;
15
+ }> | 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: {
19
+ disabled: boolean;
20
+ hover: boolean;
21
+ focus: boolean;
22
+ active: boolean;
23
+ autofocus: boolean;
24
+ }) => string) | undefined;
25
+ } : {}) & {
26
+ disabled?: boolean;
27
+ autofocus?: boolean;
28
+ type?: "button" | "submit" | "reset";
29
+ };
7
30
  events(): {} & {
8
31
  [evt: string]: CustomEvent<any>;
9
32
  };
@@ -12,14 +35,14 @@ declare class __sveltets_Render<TTag extends keyof SvelteHTMLElements, TType> {
12
35
  exports(): {};
13
36
  }
14
37
  interface $$IsomorphicComponent {
15
- new <TTag extends keyof SvelteHTMLElements, TType>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TTag, TType>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TTag, TType>['props']>, ReturnType<__sveltets_Render<TTag, TType>['events']>, ReturnType<__sveltets_Render<TTag, TType>['slots']>> & {
16
- $$bindings?: ReturnType<__sveltets_Render<TTag, TType>['bindings']>;
17
- } & ReturnType<__sveltets_Render<TTag, TType>['exports']>;
18
- <TTag extends keyof SvelteHTMLElements, TType>(internal: unknown, props: ReturnType<__sveltets_Render<TTag, TType>['props']> & {
19
- $$events?: ReturnType<__sveltets_Render<TTag, TType>['events']>;
20
- }): ReturnType<__sveltets_Render<TTag, TType>['exports']>;
21
- z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
38
+ new <TTag extends ElementType = typeof DEFAULT_BUTTON_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']>> & {
39
+ $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
40
+ } & ReturnType<__sveltets_Render<TTag>['exports']>;
41
+ <TTag extends ElementType = typeof DEFAULT_BUTTON_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
42
+ $$events?: ReturnType<__sveltets_Render<TTag>['events']>;
43
+ }): ReturnType<__sveltets_Render<TTag>['exports']>;
44
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
22
45
  }
23
46
  declare const CloseButton: $$IsomorphicComponent;
24
- type CloseButton<TTag extends keyof SvelteHTMLElements, TType> = InstanceType<typeof CloseButton<TTag, TType>>;
47
+ type CloseButton<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG> = InstanceType<typeof CloseButton<TTag>>;
25
48
  export default CloseButton;
@@ -1,6 +1,6 @@
1
- <script lang="ts" context="module">const DEFAULT_COMBOBOX_TAG = "svelte:fragment";
1
+ <script lang="ts" module>const DEFAULT_COMBOBOX_TAG = "svelte:fragment";
2
2
  </script>
3
3
 
4
- <script lang="ts" generics="TTag extends ElementType, TType">import { useDisabled } from "../hooks/use-disabled.js";
4
+ <script lang="ts" generics="TType, TTag extends ElementType = typeof DEFAULT_COMBOBOX_TAG">import { useDisabled } from "../hooks/use-disabled.js";
5
5
  const providedDisabled = useDisabled();
6
6
  </script>
@@ -24,10 +24,10 @@ export type CheckboxProps<TValue, TMultiple extends boolean | undefined, TTag ex
24
24
  options: NoInfer<TValue>[];
25
25
  disabled?: (value: NoInfer<TValue>) => boolean;
26
26
  } | null;
27
- onClose?(): void;
27
+ onclose?(): void;
28
28
  __demoMode?: boolean;
29
29
  }>;
30
- declare class __sveltets_Render<TTag extends ElementType, TType> {
30
+ declare class __sveltets_Render<TType, TTag extends ElementType = typeof DEFAULT_COMBOBOX_TAG> {
31
31
  props(): Record<string, never>;
32
32
  events(): {} & {
33
33
  [evt: string]: CustomEvent<any>;
@@ -37,14 +37,14 @@ declare class __sveltets_Render<TTag extends ElementType, TType> {
37
37
  exports(): {};
38
38
  }
39
39
  interface $$IsomorphicComponent {
40
- new <TTag extends ElementType, TType>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TTag, TType>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TTag, TType>['props']>, ReturnType<__sveltets_Render<TTag, TType>['events']>, ReturnType<__sveltets_Render<TTag, TType>['slots']>> & {
41
- $$bindings?: ReturnType<__sveltets_Render<TTag, TType>['bindings']>;
42
- } & ReturnType<__sveltets_Render<TTag, TType>['exports']>;
43
- <TTag extends ElementType, TType>(internal: unknown, props: {
44
- $$events?: ReturnType<__sveltets_Render<TTag, TType>['events']>;
45
- }): ReturnType<__sveltets_Render<TTag, TType>['exports']>;
40
+ new <TType, TTag extends ElementType = typeof DEFAULT_COMBOBOX_TAG>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TType, TTag>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TType, TTag>['props']>, ReturnType<__sveltets_Render<TType, TTag>['events']>, ReturnType<__sveltets_Render<TType, TTag>['slots']>> & {
41
+ $$bindings?: ReturnType<__sveltets_Render<TType, TTag>['bindings']>;
42
+ } & ReturnType<__sveltets_Render<TType, TTag>['exports']>;
43
+ <TType, TTag extends ElementType = typeof DEFAULT_COMBOBOX_TAG>(internal: unknown, props: {
44
+ $$events?: ReturnType<__sveltets_Render<TType, TTag>['events']>;
45
+ }): ReturnType<__sveltets_Render<TType, TTag>['exports']>;
46
46
  z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
47
47
  }
48
48
  declare const Combobox: $$IsomorphicComponent;
49
- type Combobox<TTag extends ElementType, TType> = InstanceType<typeof Combobox<TTag, TType>>;
49
+ type Combobox<TType, TTag extends ElementType = typeof DEFAULT_COMBOBOX_TAG> = InstanceType<typeof Combobox<TType, TTag>>;
50
50
  export default Combobox;
@@ -0,0 +1,41 @@
1
+ <script lang="ts" module>import { useFocusRing } from "../hooks/use-focus-ring.svelte.js";
2
+ import { useActivePress } from "../hooks/use-active-press.svelte.js";
3
+ import { useHover } from "../hooks/use-hover.svelte.js";
4
+ import { mergeProps } from "../utils/render.js";
5
+ import ElementOrComponent from "../utils/ElementOrComponent.svelte";
6
+ const DEFAULT_DATA_INTERACTIVE_TAG = "svelte:fragment";
7
+ </script>
8
+
9
+ <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_DATA_INTERACTIVE_TAG">let { ref = $bindable(), ...theirProps } = $props();
10
+ const disabled = false;
11
+ const { isHovered: hover, hoverProps } = $derived(
12
+ useHover({
13
+ get disabled() {
14
+ return disabled;
15
+ }
16
+ })
17
+ );
18
+ const { pressed: active, pressProps } = $derived(
19
+ useActivePress({
20
+ get disabled() {
21
+ return disabled;
22
+ }
23
+ })
24
+ );
25
+ const { isFocusVisible: focus, focusProps } = $derived(useFocusRing());
26
+ const slot = $derived({
27
+ hover,
28
+ focus,
29
+ active
30
+ });
31
+ const ourProps = $derived(mergeProps(focusProps, hoverProps, pressProps));
32
+ </script>
33
+
34
+ <ElementOrComponent
35
+ {ourProps}
36
+ {theirProps}
37
+ {slot}
38
+ defaultTag={DEFAULT_DATA_INTERACTIVE_TAG}
39
+ name="DataInteractive"
40
+ bind:ref
41
+ />
@@ -0,0 +1,39 @@
1
+ import type { Props, ElementType } from "../utils/types.js";
2
+ import type { Snippet } from "svelte";
3
+ declare const DEFAULT_DATA_INTERACTIVE_TAG: "svelte:fragment";
4
+ type DataInteractiveRenderPropArg = {
5
+ hover: boolean;
6
+ focus: boolean;
7
+ active: boolean;
8
+ };
9
+ type DataInteractivePropsWeControl = never;
10
+ export type DataInteractiveProps<TTag extends ElementType = typeof DEFAULT_DATA_INTERACTIVE_TAG> = Props<TTag, DataInteractiveRenderPropArg, DataInteractivePropsWeControl, {}>;
11
+ export type DataInteractiveChildren = Snippet<[DataInteractiveRenderPropArg]>;
12
+ declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_DATA_INTERACTIVE_TAG> {
13
+ props(): {
14
+ as?: TTag | undefined;
15
+ } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, "as" | "children" | "refName" | "class"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
16
+ children?: import("../utils/types.js").Children<DataInteractiveRenderPropArg> | undefined;
17
+ ref?: HTMLElement;
18
+ } & (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) ? {
19
+ class?: import("../utils/types.js").PropsOf<TTag>["class"] | ((bag: DataInteractiveRenderPropArg) => string) | undefined;
20
+ } : {});
21
+ events(): {} & {
22
+ [evt: string]: CustomEvent<any>;
23
+ };
24
+ slots(): {};
25
+ bindings(): "ref";
26
+ exports(): {};
27
+ }
28
+ interface $$IsomorphicComponent {
29
+ new <TTag extends ElementType = typeof DEFAULT_DATA_INTERACTIVE_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']>> & {
30
+ $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
31
+ } & ReturnType<__sveltets_Render<TTag>['exports']>;
32
+ <TTag extends ElementType = typeof DEFAULT_DATA_INTERACTIVE_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
33
+ $$events?: ReturnType<__sveltets_Render<TTag>['events']>;
34
+ }): ReturnType<__sveltets_Render<TTag>['exports']>;
35
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
36
+ }
37
+ declare const DataInteractive: $$IsomorphicComponent;
38
+ type DataInteractive<TTag extends ElementType = typeof DEFAULT_DATA_INTERACTIVE_TAG> = InstanceType<typeof DataInteractive<TTag>>;
39
+ export default DataInteractive;
@@ -0,0 +1 @@
1
+ export { default as DataInteractive, type DataInteractiveProps } from "./DataInteractive.svelte";
@@ -0,0 +1 @@
1
+ export { default as DataInteractive } from "./DataInteractive.svelte";
@@ -1,62 +1,19 @@
1
- <script lang="ts" context="module">import { getContext, setContext } from "svelte";
2
- const DEFAULT_DESCRIPTION_TAG = "p";
3
- export function useDescriptionContext() {
4
- let context = getContext("DescriptionContext");
5
- if (context === null) {
6
- let err = new Error("You used a <Description /> component, but it is not inside a relevant parent.");
7
- if (Error.captureStackTrace) Error.captureStackTrace(err, useDescriptionContext);
8
- throw err;
9
- }
10
- return context;
11
- }
12
- export function useDescribedBy() {
13
- const context = getContext("DescriptionContext");
14
- return {
15
- get value() {
16
- return context?.value;
17
- }
18
- };
19
- }
20
- export const useDescriptions = (options = {}) => {
21
- const { slot, name, props, inherit } = $derived(options);
22
- let descriptionIds = $state([]);
23
- const value = $derived(descriptionIds.length > 0 ? descriptionIds.join(" ") : void 0);
24
- const context = {
25
- get slot() {
26
- return slot;
27
- },
28
- get name() {
29
- return name;
30
- },
31
- get props() {
32
- return props;
33
- },
34
- get value() {
35
- return value;
36
- },
37
- register(value2) {
38
- descriptionIds.push(value2);
39
- return () => {
40
- const clone = descriptionIds.slice();
41
- const idx = clone.indexOf(value2);
42
- if (idx !== -1) clone.splice(idx, 1);
43
- descriptionIds = clone;
44
- return descriptionIds;
45
- };
46
- }
47
- };
48
- setContext("DescriptionContext", context);
49
- return context;
50
- };
1
+ <script lang="ts" module>let DEFAULT_DESCRIPTION_TAG = "p";
51
2
  </script>
52
3
 
53
- <script lang="ts" generics="TTag extends keyof SvelteHTMLElements">import { htmlid } from "../utils/id.js";
4
+ <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_DESCRIPTION_TAG">import { htmlid } from "../utils/id.js";
54
5
  import { stateFromSlot } from "../utils/state.js";
55
6
  import { useDisabled } from "../hooks/use-disabled.js";
56
7
  import { onMount } from "svelte";
8
+ import { useDescriptionContext } from "./context.svelte.js";
57
9
  const internalId = htmlid();
58
10
  const providedDisabled = useDisabled();
59
- let { as, id = `headlessui-description-${internalId}`, children, ...theirProps } = $props();
11
+ let {
12
+ as,
13
+ id = `headlessui-description-${internalId}`,
14
+ children,
15
+ ...theirProps
16
+ } = $props();
60
17
  const context = useDescriptionContext();
61
18
  onMount(() => {
62
19
  context.register(id);
@@ -67,5 +24,5 @@ const ourProps = $derived({ id, ...stateFromSlot(slot) });
67
24
  </script>
68
25
 
69
26
  <svelte:element this={as ?? DEFAULT_DESCRIPTION_TAG} {...ourProps} {...theirProps}>
70
- {#if children}{@render children(slot)}{/if}
27
+ {#if children}{@render children(slot, {})}{/if}
71
28
  </svelte:element>