@pzerelles/headlessui-svelte 2.1.2-next.32 → 2.1.2-next.34

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 (136) hide show
  1. package/dist/button/Button.svelte +9 -10
  2. package/dist/button/Button.svelte.d.ts +5 -32
  3. package/dist/button/index.d.ts +1 -1
  4. package/dist/checkbox/Checkbox.svelte +15 -12
  5. package/dist/checkbox/Checkbox.svelte.d.ts +15 -32
  6. package/dist/checkbox/index.d.ts +1 -1
  7. package/dist/close-button/CloseButton.svelte +4 -7
  8. package/dist/close-button/CloseButton.svelte.d.ts +2 -43
  9. package/dist/close-button/index.d.ts +1 -0
  10. package/dist/close-button/index.js +1 -0
  11. package/dist/data-interactive/DataInteractive.svelte +6 -20
  12. package/dist/data-interactive/DataInteractive.svelte.d.ts +8 -30
  13. package/dist/data-interactive/index.d.ts +1 -1
  14. package/dist/data-interactive/index.js +1 -1
  15. package/dist/description/Description.svelte +15 -12
  16. package/dist/description/Description.svelte.d.ts +7 -27
  17. package/dist/dialog/Dialog.svelte +34 -32
  18. package/dist/dialog/Dialog.svelte.d.ts +4 -41
  19. package/dist/dialog/DialogBackdrop.svelte +10 -11
  20. package/dist/dialog/DialogBackdrop.svelte.d.ts +5 -29
  21. package/dist/dialog/DialogPanel.svelte +18 -11
  22. package/dist/dialog/DialogPanel.svelte.d.ts +5 -30
  23. package/dist/dialog/DialogTitle.svelte +19 -8
  24. package/dist/dialog/DialogTitle.svelte.d.ts +7 -27
  25. package/dist/dialog/context.svelte.js +1 -1
  26. package/dist/dialog/index.d.ts +4 -4
  27. package/dist/dialog/index.js +3 -3
  28. package/dist/field/Field.svelte +10 -18
  29. package/dist/field/Field.svelte.d.ts +4 -30
  30. package/dist/fieldset/Fieldset.svelte +11 -15
  31. package/dist/fieldset/Fieldset.svelte.d.ts +5 -31
  32. package/dist/focus-trap/FocusTrap.svelte +21 -26
  33. package/dist/focus-trap/FocusTrap.svelte.d.ts +5 -34
  34. package/dist/hooks/use-inert-others.svelte.js +10 -10
  35. package/dist/hooks/use-resolve-button-type.svelte.js +0 -1
  36. package/dist/input/Input.svelte +20 -10
  37. package/dist/input/Input.svelte.d.ts +14 -27
  38. package/dist/input/index.d.ts +1 -1
  39. package/dist/internal/FocusSentinel.svelte +33 -32
  40. package/dist/internal/FormResolver.svelte +5 -1
  41. package/dist/internal/Hidden.svelte +10 -24
  42. package/dist/internal/Hidden.svelte.d.ts +5 -30
  43. package/dist/internal/MainTreeProvider.svelte +1 -1
  44. package/dist/label/Label.svelte +19 -13
  45. package/dist/label/Label.svelte.d.ts +7 -31
  46. package/dist/legend/Legend.svelte +20 -6
  47. package/dist/legend/Legend.svelte.d.ts +4 -3
  48. package/dist/listbox/Listbox.svelte +7 -19
  49. package/dist/listbox/Listbox.svelte.d.ts +12 -35
  50. package/dist/listbox/ListboxButton.svelte +14 -14
  51. package/dist/listbox/ListboxButton.svelte.d.ts +6 -32
  52. package/dist/listbox/ListboxOption.svelte +16 -16
  53. package/dist/listbox/ListboxOption.svelte.d.ts +13 -26
  54. package/dist/listbox/ListboxOptions.svelte +13 -12
  55. package/dist/listbox/ListboxOptions.svelte.d.ts +5 -38
  56. package/dist/listbox/ListboxSelectedOption.svelte +15 -17
  57. package/dist/listbox/ListboxSelectedOption.svelte.d.ts +8 -32
  58. package/dist/listbox/index.d.ts +5 -5
  59. package/dist/listbox/index.js +4 -4
  60. package/dist/menu/Menu.svelte +6 -8
  61. package/dist/menu/Menu.svelte.d.ts +4 -31
  62. package/dist/menu/MenuButton.svelte +13 -13
  63. package/dist/menu/MenuButton.svelte.d.ts +5 -34
  64. package/dist/menu/MenuHeading.svelte +12 -11
  65. package/dist/menu/MenuHeading.svelte.d.ts +4 -31
  66. package/dist/menu/MenuItem.svelte +13 -13
  67. package/dist/menu/MenuItem.svelte.d.ts +6 -32
  68. package/dist/menu/MenuItems.svelte +13 -14
  69. package/dist/menu/MenuItems.svelte.d.ts +5 -38
  70. package/dist/menu/MenuSection.svelte +11 -10
  71. package/dist/menu/MenuSection.svelte.d.ts +5 -29
  72. package/dist/menu/MenuSeparator.svelte +11 -9
  73. package/dist/menu/MenuSeparator.svelte.d.ts +5 -28
  74. package/dist/menu/index.d.ts +4 -4
  75. package/dist/menu/index.js +1 -1
  76. package/dist/popover/Popover.svelte +9 -9
  77. package/dist/popover/Popover.svelte.d.ts +5 -30
  78. package/dist/popover/PopoverBackdrop.svelte +16 -13
  79. package/dist/popover/PopoverBackdrop.svelte.d.ts +7 -34
  80. package/dist/popover/PopoverButton.svelte +34 -34
  81. package/dist/popover/PopoverButton.svelte.d.ts +6 -28
  82. package/dist/popover/PopoverGroup.svelte +15 -17
  83. package/dist/popover/PopoverGroup.svelte.d.ts +5 -28
  84. package/dist/popover/PopoverPanel.svelte +47 -42
  85. package/dist/popover/PopoverPanel.svelte.d.ts +6 -36
  86. package/dist/popover/index.d.ts +4 -4
  87. package/dist/popover/index.js +3 -3
  88. package/dist/portal/InternalPortal.svelte +17 -17
  89. package/dist/portal/InternalPortal.svelte.d.ts +5 -30
  90. package/dist/portal/Portal.svelte +7 -6
  91. package/dist/portal/Portal.svelte.d.ts +2 -18
  92. package/dist/portal/PortalGroup.svelte +6 -14
  93. package/dist/portal/PortalGroup.svelte.d.ts +4 -31
  94. package/dist/select/Select.svelte +11 -10
  95. package/dist/select/Select.svelte.d.ts +6 -32
  96. package/dist/select/index.d.ts +1 -1
  97. package/dist/switch/Switch.svelte +14 -13
  98. package/dist/switch/Switch.svelte.d.ts +6 -38
  99. package/dist/switch/SwitchGroup.svelte +5 -5
  100. package/dist/switch/SwitchGroup.svelte.d.ts +7 -27
  101. package/dist/switch/index.d.ts +1 -1
  102. package/dist/tabs/Tab.svelte +13 -13
  103. package/dist/tabs/Tab.svelte.d.ts +5 -32
  104. package/dist/tabs/TabGroup.svelte +9 -9
  105. package/dist/tabs/TabGroup.svelte.d.ts +5 -34
  106. package/dist/tabs/TabList.svelte +8 -9
  107. package/dist/tabs/TabList.svelte.d.ts +6 -28
  108. package/dist/tabs/TabPanel.svelte +12 -12
  109. package/dist/tabs/TabPanel.svelte.d.ts +5 -34
  110. package/dist/tabs/TabPanels.svelte +6 -6
  111. package/dist/tabs/TabPanels.svelte.d.ts +6 -27
  112. package/dist/tabs/index.d.ts +5 -5
  113. package/dist/tabs/index.js +1 -1
  114. package/dist/textarea/Textarea.svelte +13 -11
  115. package/dist/textarea/Textarea.svelte.d.ts +14 -27
  116. package/dist/textarea/index.d.ts +1 -1
  117. package/dist/transition/InternalTransitionChild.svelte +19 -12
  118. package/dist/transition/InternalTransitionChild.svelte.d.ts +3 -32
  119. package/dist/transition/Transition.svelte +12 -21
  120. package/dist/transition/Transition.svelte.d.ts +3 -35
  121. package/dist/transition/TransitionChild.svelte +9 -10
  122. package/dist/transition/TransitionChild.svelte.d.ts +8 -34
  123. package/dist/transition/context.svelte.js +7 -7
  124. package/dist/transition/index.d.ts +2 -2
  125. package/dist/transition/index.js +1 -1
  126. package/dist/utils/ElementOrComponent.svelte +56 -15
  127. package/dist/utils/ElementOrComponent.svelte.d.ts +30 -23
  128. package/dist/utils/state.js +4 -4
  129. package/dist/utils/types.d.ts +12 -9
  130. package/package.json +12 -12
  131. package/dist/combobox/Combobox.svelte +0 -53
  132. package/dist/combobox/Combobox.svelte.d.ts +0 -50
  133. package/dist/utils/Generic.svelte +0 -57
  134. package/dist/utils/Generic.svelte.d.ts +0 -31
  135. package/dist/utils/alternative-types.d.ts +0 -20
  136. package/dist/utils/alternative-types.js +0 -1
@@ -1,36 +1,11 @@
1
- import type { ElementType, Props } from "../utils/types.js";
1
+ import type { Props } from "../utils/types.js";
2
2
  import { HiddenFeatures } from "./HiddenFeatures.js";
3
3
  export * from "./HiddenFeatures.js";
4
4
  declare const DEFAULT_VISUALLY_HIDDEN_TAG: "span";
5
- type HiddenRenderPropArg = {};
6
- type HiddenPropsWeControl = never;
7
- export type HiddenProps<TTag extends ElementType = typeof DEFAULT_VISUALLY_HIDDEN_TAG> = Props<TTag, HiddenRenderPropArg, HiddenPropsWeControl, {
5
+ export type HiddenRenderPropArg = {};
6
+ export type HiddenProps = Props<typeof DEFAULT_VISUALLY_HIDDEN_TAG, HiddenRenderPropArg, {
7
+ element?: HTMLElement;
8
8
  features?: HiddenFeatures;
9
9
  }>;
10
- declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_VISUALLY_HIDDEN_TAG> {
11
- props(): {
12
- as?: TTag | undefined;
13
- } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("slot" | "as" | "children" | "class" | "ref") | "features"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
14
- children?: import("svelte").Snippet<[{
15
- props?: Record<string, any>;
16
- }]> | undefined;
17
- class?: string | ((bag: HiddenRenderPropArg) => string) | null | undefined;
18
- ref?: HTMLElement;
19
- } & {
20
- features?: HiddenFeatures;
21
- };
22
- events(): {};
23
- slots(): {};
24
- bindings(): "ref";
25
- exports(): {};
26
- }
27
- interface $$IsomorphicComponent {
28
- new <TTag extends ElementType = typeof DEFAULT_VISUALLY_HIDDEN_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']>> & {
29
- $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
30
- } & ReturnType<__sveltets_Render<TTag>['exports']>;
31
- <TTag extends ElementType = typeof DEFAULT_VISUALLY_HIDDEN_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
32
- z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
33
- }
34
- declare const Hidden: $$IsomorphicComponent;
35
- type Hidden<TTag extends ElementType = typeof DEFAULT_VISUALLY_HIDDEN_TAG> = InstanceType<typeof Hidden<TTag>>;
10
+ declare const Hidden: import("svelte").Component<HiddenProps, {}, "element">;
36
11
  export default Hidden;
@@ -94,5 +94,5 @@
94
94
 
95
95
  {#if children}{@render children()}{/if}
96
96
  {#if resolvedMainTreeNode === null}
97
- <Hidden features={HiddenFeatures.Hidden} bind:ref={el} />
97
+ <Hidden features={HiddenFeatures.Hidden} bind:element={el} />
98
98
  {/if}
@@ -1,15 +1,21 @@
1
1
  <script lang="ts" module>
2
- import type { ElementType, Props, PropsOf } from "../utils/types.js"
3
-
4
- let DEFAULT_LABEL_TAG = "label" as const
5
-
6
- export type LabelProps<TTag extends ElementType = typeof DEFAULT_LABEL_TAG> = Props<TTag> & {
7
- passive?: boolean
8
- htmlFor?: string
9
- }
2
+ import type { Props } from "../utils/types.js"
3
+
4
+ const DEFAULT_LABEL_TAG = "label" as const
5
+
6
+ export type LabelProps = Props<
7
+ typeof DEFAULT_LABEL_TAG,
8
+ {},
9
+ {
10
+ element?: HTMLElement
11
+ id?: string
12
+ passive?: boolean
13
+ htmlFor?: string
14
+ }
15
+ >
10
16
  </script>
11
17
 
12
- <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_LABEL_TAG">
18
+ <script lang="ts">
13
19
  import { onMount } from "svelte"
14
20
  import { useProvidedId, htmlid } from "../utils/id.js"
15
21
  import { useDisabled } from "../hooks/use-disabled.js"
@@ -23,12 +29,12 @@
23
29
  const providedDisabled = useDisabled()
24
30
 
25
31
  let {
26
- ref = $bindable(),
27
- id = `headlessui-label-${internalId}` as PropsOf<TTag>["id"],
32
+ element = $bindable(),
33
+ id = `headlessui-label-${internalId}`,
28
34
  htmlFor = providedHtmlFor,
29
35
  passive = false,
30
36
  ...theirOriginalProps
31
- }: { as?: TTag } & LabelProps<TTag> = $props()
37
+ }: LabelProps = $props()
32
38
 
33
39
  onMount(() => {
34
40
  context.register(id)
@@ -103,5 +109,5 @@
103
109
  {theirProps}
104
110
  defaultTag={htmlFor ? DEFAULT_LABEL_TAG : "div"}
105
111
  name={context.name || "Label"}
106
- bind:ref
112
+ bind:element
107
113
  />
@@ -1,34 +1,10 @@
1
- import type { ElementType, Props, PropsOf } from "../utils/types.js";
2
- declare let DEFAULT_LABEL_TAG: "label";
3
- export type LabelProps<TTag extends ElementType = typeof DEFAULT_LABEL_TAG> = Props<TTag> & {
1
+ import type { Props } from "../utils/types.js";
2
+ declare const DEFAULT_LABEL_TAG: "label";
3
+ export type LabelProps = Props<typeof DEFAULT_LABEL_TAG, {}, {
4
+ element?: HTMLElement;
5
+ id?: string;
4
6
  passive?: boolean;
5
7
  htmlFor?: string;
6
- };
7
- declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_LABEL_TAG> {
8
- props(): {
9
- as?: TTag | undefined;
10
- } & (Exclude<keyof PropsOf<TTag>, "slot" | "as" | "children" | "class" | "ref"> extends infer T extends keyof PropsOf<TTag> ? { [P in T]: PropsOf<TTag>[P]; } : never) & {
11
- children?: import("svelte").Snippet<[{
12
- props?: Record<string, any>;
13
- }]> | undefined;
14
- class?: string | ((bag: {}) => string) | null | undefined;
15
- ref?: HTMLElement;
16
- } & {
17
- passive?: boolean;
18
- htmlFor?: string;
19
- };
20
- events(): {};
21
- slots(): {};
22
- bindings(): "ref";
23
- exports(): {};
24
- }
25
- interface $$IsomorphicComponent {
26
- new <TTag extends ElementType = typeof DEFAULT_LABEL_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']>> & {
27
- $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
28
- } & ReturnType<__sveltets_Render<TTag>['exports']>;
29
- <TTag extends ElementType = typeof DEFAULT_LABEL_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
30
- z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
31
- }
32
- declare const Label: $$IsomorphicComponent;
33
- type Label<TTag extends ElementType = typeof DEFAULT_LABEL_TAG> = InstanceType<typeof Label<TTag>>;
8
+ }>;
9
+ declare const Label: import("svelte").Component<LabelProps, {}, "element">;
34
10
  export default Label;
@@ -4,14 +4,28 @@
4
4
 
5
5
  const DEFAULT_LEGEND_TAG = "div" as const
6
6
 
7
- type LegendRenderPropArg = {}
8
- type LegendPropsWeControl = never
9
-
10
- export type LegendProps = Props<typeof DEFAULT_LEGEND_TAG, LegendRenderPropArg, LegendPropsWeControl, {}>
7
+ export type LegendProps = Props<
8
+ typeof DEFAULT_LEGEND_TAG,
9
+ {},
10
+ {
11
+ element?: HTMLElement
12
+ class?: string
13
+ }
14
+ >
11
15
  </script>
12
16
 
13
17
  <script lang="ts">
14
- let { ...props }: LegendProps = $props()
18
+ let { asChild, children: theirChildren, ...props }: LegendProps = $props()
15
19
  </script>
16
20
 
17
- <Label as="div" {...props} />
21
+ <Label asChild>
22
+ {#snippet children({ props: childProps })}
23
+ {#if asChild}
24
+ {@render theirChildren?.({ props: { ...props, ...childProps } })}
25
+ {:else}
26
+ <div {...props} {...childProps}>
27
+ {@render theirChildren?.({ props: {} })}
28
+ </div>
29
+ {/if}
30
+ {/snippet}
31
+ </Label>
@@ -1,7 +1,8 @@
1
1
  import type { Props } from "../utils/types.js";
2
2
  declare const DEFAULT_LEGEND_TAG: "div";
3
- type LegendRenderPropArg = {};
4
- type LegendPropsWeControl = never;
5
- export type LegendProps = Props<typeof DEFAULT_LEGEND_TAG, LegendRenderPropArg, LegendPropsWeControl, {}>;
3
+ export type LegendProps = Props<typeof DEFAULT_LEGEND_TAG, {}, {
4
+ element?: HTMLElement;
5
+ class?: string;
6
+ }>;
6
7
  declare const Legend: import("svelte").Component<LegendProps, {}, "">;
7
8
  export default Legend;
@@ -5,26 +5,19 @@
5
5
  import { calculateActiveIndex, Focus } from "../utils/calculate-active-index.js"
6
6
  import { FocusableMode, isFocusableElement, sortByDomNode } from "../utils/focus-management.js"
7
7
  import { match } from "../utils/match.js"
8
- import type { ElementType, EnsureArray, Props } from "../utils/types.js"
9
- import { setContext, type Snippet } from "svelte"
8
+ import type { EnsureArray, PropsAsChild } from "../utils/types.js"
9
+ import { setContext } from "svelte"
10
10
  import { ActivationTrigger, ListboxStates, ValueMode } from "./context.svelte.js"
11
11
 
12
- let DEFAULT_LISTBOX_TAG = "svelte:fragment"
13
- type ListboxRenderPropArg<T> = {
12
+ export type ListboxRenderPropArg<T> = {
14
13
  open: boolean
15
14
  disabled: boolean
16
15
  invalid: boolean
17
16
  value: T
18
17
  }
19
18
 
20
- export type ListboxProps<
21
- TTag extends ElementType = typeof DEFAULT_LISTBOX_TAG,
22
- TType = string,
23
- TActualType = TType extends (infer U)[] ? U : TType,
24
- > = Props<
25
- TTag,
19
+ export type ListboxProps<TType = string, TActualType = TType extends (infer U)[] ? U : TType> = PropsAsChild<
26
20
  ListboxRenderPropArg<TType>,
27
- "value" | "defaultValue" | "onchange" | "by" | "disabled" | "horizontal" | "name" | "multiple",
28
21
  {
29
22
  value?: TType
30
23
  defaultValue?: TType
@@ -37,7 +30,6 @@
37
30
  name?: string
38
31
  multiple?: boolean
39
32
  closeOnSelect?: boolean
40
-
41
33
  __demoMode?: boolean
42
34
  }
43
35
  >
@@ -45,10 +37,7 @@
45
37
  export * from "./context.svelte.js"
46
38
  </script>
47
39
 
48
- <script
49
- lang="ts"
50
- generics="TTag extends ElementType = typeof DEFAULT_LISTBOX_TAG, TType = string, TActualType = TType extends (infer U)[] ? U : TType"
51
- >
40
+ <script lang="ts" generics="TType = string, TActualType = TType extends (infer U)[] ? U : TType">
52
41
  import { disposables } from "../utils/disposables.js"
53
42
  import FormFields from "../internal/FormFields.svelte"
54
43
  import { useFloatingProvider } from "../internal/floating-provider.svelte.js"
@@ -304,7 +293,6 @@
304
293
  }
305
294
 
306
295
  let {
307
- ref = $bindable(),
308
296
  value: controlledValue = $bindable(),
309
297
  defaultValue,
310
298
  form,
@@ -318,7 +306,7 @@
318
306
  closeOnSelect,
319
307
  __demoMode = false,
320
308
  ...theirProps
321
- }: { as?: TTag } & ListboxProps<TTag, TType, TActualType> = $props()
309
+ }: ListboxProps<TType, TActualType> = $props()
322
310
 
323
311
  const providedDisabled = useDisabled()
324
312
  const disabled = $derived(providedDisabled.current || ownDisabled)
@@ -562,4 +550,4 @@
562
550
  {#if name && value}
563
551
  <FormFields {disabled} data={{ [name]: value }} {form} onReset={reset} />
564
552
  {/if}
565
- <ElementOrComponent {theirProps} slots={slot} defaultTag={DEFAULT_LISTBOX_TAG} name="Listbox" bind:ref />
553
+ <ElementOrComponent {theirProps} slots={slot} name="Listbox" />
@@ -1,14 +1,12 @@
1
1
  import { type ByComparator } from "../hooks/use-by-comparator.js";
2
- import type { ElementType, Props } from "../utils/types.js";
3
- import { type Snippet } from "svelte";
4
- declare let DEFAULT_LISTBOX_TAG: string;
5
- type ListboxRenderPropArg<T> = {
2
+ import type { PropsAsChild } from "../utils/types.js";
3
+ export type ListboxRenderPropArg<T> = {
6
4
  open: boolean;
7
5
  disabled: boolean;
8
6
  invalid: boolean;
9
7
  value: T;
10
8
  };
11
- export type ListboxProps<TTag extends ElementType = typeof DEFAULT_LISTBOX_TAG, TType = string, TActualType = TType extends (infer U)[] ? U : TType> = Props<TTag, ListboxRenderPropArg<TType>, "value" | "defaultValue" | "onchange" | "by" | "disabled" | "horizontal" | "name" | "multiple", {
9
+ export type ListboxProps<TType = string, TActualType = TType extends (infer U)[] ? U : TType> = PropsAsChild<ListboxRenderPropArg<TType>, {
12
10
  value?: TType;
13
11
  defaultValue?: TType;
14
12
  onchange?: (value: TType) => void;
@@ -23,41 +21,20 @@ export type ListboxProps<TTag extends ElementType = typeof DEFAULT_LISTBOX_TAG,
23
21
  __demoMode?: boolean;
24
22
  }>;
25
23
  export * from "./context.svelte.js";
26
- declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_LISTBOX_TAG, TType = string, TActualType = TType extends (infer U)[] ? U : TType> {
27
- props(): {
28
- as?: TTag | undefined;
29
- } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, "form" | ("slot" | "as" | "children" | "class" | "ref") | "invalid" | "disabled" | "value" | "name" | "onchange" | "multiple" | "__demoMode" | "horizontal" | "defaultValue" | "by" | "closeOnSelect"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
30
- children?: Snippet<[ListboxRenderPropArg<TType> & {
31
- props?: Record<string, any>;
32
- }]> | undefined;
33
- class?: string | ((bag: ListboxRenderPropArg<TType>) => string) | null | undefined;
34
- ref?: HTMLElement;
35
- } & {
36
- value?: TType | undefined;
37
- defaultValue?: TType | undefined;
38
- onchange?: ((value: TType) => void) | undefined;
39
- by?: ByComparator<TActualType> | undefined;
40
- disabled?: boolean;
41
- invalid?: boolean;
42
- horizontal?: boolean;
43
- form?: string;
44
- name?: string;
45
- multiple?: boolean;
46
- closeOnSelect?: boolean;
47
- __demoMode?: boolean;
48
- };
24
+ declare class __sveltets_Render<TType = string, TActualType = TType extends (infer U)[] ? U : TType> {
25
+ props(): ListboxProps<TType, TActualType>;
49
26
  events(): {};
50
27
  slots(): {};
51
- bindings(): "ref" | "value";
28
+ bindings(): "value";
52
29
  exports(): {};
53
30
  }
54
31
  interface $$IsomorphicComponent {
55
- new <TTag extends ElementType = typeof DEFAULT_LISTBOX_TAG, TType = string, TActualType = TType extends (infer U)[] ? U : TType>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TTag, TType, TActualType>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TTag, TType, TActualType>['props']>, ReturnType<__sveltets_Render<TTag, TType, TActualType>['events']>, ReturnType<__sveltets_Render<TTag, TType, TActualType>['slots']>> & {
56
- $$bindings?: ReturnType<__sveltets_Render<TTag, TType, TActualType>['bindings']>;
57
- } & ReturnType<__sveltets_Render<TTag, TType, TActualType>['exports']>;
58
- <TTag extends ElementType = typeof DEFAULT_LISTBOX_TAG, TType = string, TActualType = TType extends (infer U)[] ? U : TType>(internal: unknown, props: ReturnType<__sveltets_Render<TTag, TType, TActualType>['props']> & {}): ReturnType<__sveltets_Render<TTag, TType, TActualType>['exports']>;
59
- z_$$bindings?: ReturnType<__sveltets_Render<any, any, any>['bindings']>;
32
+ new <TType = string, TActualType = TType extends (infer U)[] ? U : TType>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TType, TActualType>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TType, TActualType>['props']>, ReturnType<__sveltets_Render<TType, TActualType>['events']>, ReturnType<__sveltets_Render<TType, TActualType>['slots']>> & {
33
+ $$bindings?: ReturnType<__sveltets_Render<TType, TActualType>['bindings']>;
34
+ } & ReturnType<__sveltets_Render<TType, TActualType>['exports']>;
35
+ <TType = string, TActualType = TType extends (infer U)[] ? U : TType>(internal: unknown, props: ReturnType<__sveltets_Render<TType, TActualType>['props']> & {}): ReturnType<__sveltets_Render<TType, TActualType>['exports']>;
36
+ z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
60
37
  }
61
38
  declare const Listbox: $$IsomorphicComponent;
62
- type Listbox<TTag extends ElementType = typeof DEFAULT_LISTBOX_TAG, TType = string, TActualType = TType extends (infer U)[] ? U : TType> = InstanceType<typeof Listbox<TTag, TType, TActualType>>;
39
+ type Listbox<TType = string, TActualType = TType extends (infer U)[] ? U : TType> = InstanceType<typeof Listbox<TType, TActualType>>;
63
40
  export default Listbox;
@@ -1,7 +1,7 @@
1
1
  <script lang="ts" module>
2
2
  import { useId } from "../hooks/use-id.js"
3
3
  import { useProvidedId } from "../utils/id.js"
4
- import type { ElementType, Props, PropsOf } from "../utils/types.js"
4
+ import type { Props } from "../utils/types.js"
5
5
  import { ListboxStates, useActions, useData } from "./Listbox.svelte"
6
6
  import { attemptSubmit } from "../utils/form.js"
7
7
  import { Focus } from "../utils/calculate-active-index.js"
@@ -10,7 +10,6 @@
10
10
  import { useResolveButtonType } from "../hooks/use-resolve-button-type.svelte.js"
11
11
  import { useFloatingReference, useFloatingReferenceProps } from "../internal/floating.svelte.js"
12
12
  import { stateFromSlot } from "../utils/state.js"
13
- import type { Snippet } from "svelte"
14
13
  import { useLabelledBy } from "../label/context.svelte.js"
15
14
  import { useDescribedBy } from "../description/context.svelte.js"
16
15
  import { useHover } from "../hooks/use-hover.svelte.js"
@@ -18,7 +17,7 @@
18
17
  import ElementOrComponent from "../utils/ElementOrComponent.svelte"
19
18
 
20
19
  const DEFAULT_BUTTON_TAG = "button" as const
21
- type ButtonRenderPropArg = {
20
+ export type ButtonRenderPropArg = {
22
21
  disabled: boolean
23
22
  invalid: boolean
24
23
  hover: boolean
@@ -30,35 +29,36 @@
30
29
  }
31
30
  type ButtonPropsWeControl = "aria-controls" | "aria-expanded" | "aria-haspopup" | "aria-labelledby" | "disabled"
32
31
 
33
- export type ListboxButtonProps<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG> = Props<
34
- TTag,
32
+ export type ListboxButtonProps = Props<
33
+ typeof DEFAULT_BUTTON_TAG,
35
34
  ButtonRenderPropArg,
36
- ButtonPropsWeControl,
37
35
  {
36
+ element?: HTMLElement
37
+ id?: string
38
38
  autofocus?: boolean
39
39
  disabled?: boolean
40
40
  }
41
41
  >
42
42
  </script>
43
43
 
44
- <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_BUTTON_TAG">
44
+ <script lang="ts">
45
45
  const data = useData("ListboxButton")
46
46
  const actions = useActions("ListboxButton")
47
47
 
48
48
  const internalId = useId()
49
49
  const providedId = useProvidedId()
50
50
  let {
51
- ref = $bindable(),
52
- id = (providedId || `headlessui-listbox-button-${internalId}`) as PropsOf<TTag>["id"],
51
+ element = $bindable(),
52
+ id = providedId || `headlessui-listbox-button-${internalId}`,
53
53
  disabled: ownDisabled = false,
54
54
  autofocus = false,
55
55
  ...theirProps
56
- }: { as?: TTag } & ListboxButtonProps<TTag> = $props()
56
+ }: ListboxButtonProps = $props()
57
57
  const { setReference } = useFloatingReference()
58
58
  const { getReferenceProps: getFloatingReferenceProps } = useFloatingReferenceProps()
59
59
  $effect(() => {
60
- data.buttonElement = ref || null
61
- setReference(ref)
60
+ data.buttonElement = element || null
61
+ setReference(element)
62
62
  })
63
63
 
64
64
  const disabled = $derived(data.disabled || ownDisabled)
@@ -149,7 +149,7 @@
149
149
 
150
150
  const buttonType = useResolveButtonType({
151
151
  get props() {
152
- return { type: theirProps.type, as: theirProps.as }
152
+ return { type: theirProps.type ?? undefined, as: DEFAULT_BUTTON_TAG }
153
153
  },
154
154
  get ref() {
155
155
  return { current: data.buttonElement }
@@ -182,4 +182,4 @@
182
182
  )
183
183
  </script>
184
184
 
185
- <ElementOrComponent {ourProps} {theirProps} {slot} defaultTag={DEFAULT_BUTTON_TAG} name="ListboxButton" bind:ref />
185
+ <ElementOrComponent {ourProps} {theirProps} {slot} defaultTag={DEFAULT_BUTTON_TAG} name="ListboxButton" bind:element />
@@ -1,7 +1,6 @@
1
- import type { ElementType, Props, PropsOf } from "../utils/types.js";
2
- import type { Snippet } from "svelte";
1
+ import type { Props } from "../utils/types.js";
3
2
  declare const DEFAULT_BUTTON_TAG: "button";
4
- type ButtonRenderPropArg = {
3
+ export type ButtonRenderPropArg = {
5
4
  disabled: boolean;
6
5
  invalid: boolean;
7
6
  hover: boolean;
@@ -11,36 +10,11 @@ type ButtonRenderPropArg = {
11
10
  active: boolean;
12
11
  value: any;
13
12
  };
14
- type ButtonPropsWeControl = "aria-controls" | "aria-expanded" | "aria-haspopup" | "aria-labelledby" | "disabled";
15
- export type ListboxButtonProps<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG> = Props<TTag, ButtonRenderPropArg, ButtonPropsWeControl, {
13
+ export type ListboxButtonProps = Props<typeof DEFAULT_BUTTON_TAG, ButtonRenderPropArg, {
14
+ element?: HTMLElement;
15
+ id?: string;
16
16
  autofocus?: boolean;
17
17
  disabled?: boolean;
18
18
  }>;
19
- declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG> {
20
- props(): {
21
- as?: TTag | undefined;
22
- } & (Exclude<keyof PropsOf<TTag>, ("slot" | "as" | "children" | "class" | "ref") | "autofocus" | ButtonPropsWeControl> extends infer T extends keyof PropsOf<TTag> ? { [P in T]: PropsOf<TTag>[P]; } : never) & {
23
- children?: Snippet<[ButtonRenderPropArg & {
24
- props?: Record<string, any>;
25
- }]> | undefined;
26
- class?: string | ((bag: ButtonRenderPropArg) => string) | null | undefined;
27
- ref?: HTMLElement;
28
- } & {
29
- autofocus?: boolean;
30
- disabled?: boolean;
31
- };
32
- events(): {};
33
- slots(): {};
34
- bindings(): "ref";
35
- exports(): {};
36
- }
37
- interface $$IsomorphicComponent {
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']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
42
- z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
43
- }
44
- declare const ListboxButton: $$IsomorphicComponent;
45
- type ListboxButton<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG> = InstanceType<typeof ListboxButton<TTag>>;
19
+ declare const ListboxButton: import("svelte").Component<ListboxButtonProps, {}, "element">;
46
20
  export default ListboxButton;
@@ -1,8 +1,8 @@
1
1
  <script lang="ts" module>
2
- import type { ElementType, Props } from "../utils/types.js"
2
+ import type { Props } from "../utils/types.js"
3
3
 
4
4
  const DEFAULT_OPTION_TAG = "div" as const
5
- type OptionRenderPropArg = {
5
+ export type OptionRenderPropArg = {
6
6
  /** @deprecated use `focus` instead */
7
7
  active: boolean
8
8
  focus: boolean
@@ -13,11 +13,11 @@
13
13
  }
14
14
  type OptionPropsWeControl = "aria-disabled" | "aria-selected" | "role" | "tabIndex"
15
15
 
16
- export type ListboxOptionProps<TTag extends ElementType = typeof DEFAULT_OPTION_TAG, TType = string> = Props<
17
- TTag,
16
+ export type ListboxOptionProps<TType = string> = Props<
17
+ typeof DEFAULT_OPTION_TAG,
18
18
  OptionRenderPropArg,
19
- OptionPropsWeControl,
20
19
  {
20
+ element?: HTMLElement
21
21
  id?: string
22
22
  disabled?: boolean
23
23
  value: TType
@@ -25,7 +25,7 @@
25
25
  >
26
26
  </script>
27
27
 
28
- <script lang="ts" generics="TType, TTag extends ElementType = typeof DEFAULT_OPTION_TAG">
28
+ <script lang="ts" generics="TType">
29
29
  import { useId } from "../hooks/use-id.js"
30
30
  import {
31
31
  ActivationTrigger,
@@ -37,7 +37,7 @@
37
37
  } from "./Listbox.svelte"
38
38
  import { disposables } from "../utils/disposables.js"
39
39
  import { Focus } from "../utils/calculate-active-index.js"
40
- import { getContext, onMount, type Snippet } from "svelte"
40
+ import { getContext, onMount } from "svelte"
41
41
  import { useTextValue } from "../hooks/use-text-value.svelte.js"
42
42
  import { useTrackedPointer } from "../hooks/use-tracked-pointer.js"
43
43
  import { stateFromSlot } from "../utils/state.js"
@@ -45,12 +45,12 @@
45
45
 
46
46
  const internalId = useId()
47
47
  let {
48
- ref = $bindable(),
48
+ element = $bindable(),
49
49
  id = `headlessui-listbox-option-${internalId}`,
50
50
  disabled = false,
51
51
  value,
52
52
  ...theirProps
53
- }: { as?: TTag } & ListboxOptionProps<TTag, TType> = $props()
53
+ }: ListboxOptionProps<TType> = $props()
54
54
  const usedInSelectedOption = getContext<boolean>("SelectedOptionContext") === true
55
55
  const data = useData("ListboxOption")
56
56
  const actions = useActions("ListboxOption")
@@ -62,13 +62,13 @@
62
62
  const selected = $derived(data.isSelected(value))
63
63
  const getTextValue = useTextValue({
64
64
  get element() {
65
- return ref as HTMLElement
65
+ return element as HTMLElement
66
66
  },
67
67
  })
68
68
  const bag: ListboxOptionDataRef<TType>["current"] = $derived({
69
69
  disabled,
70
70
  value,
71
- domRef: { current: ref || null },
71
+ domRef: { current: element || null },
72
72
  get textValue() {
73
73
  return getTextValue()
74
74
  },
@@ -76,14 +76,14 @@
76
76
 
77
77
  $effect(() => {
78
78
  if (usedInSelectedOption) return
79
- if (!ref) {
79
+ if (!element) {
80
80
  data.listElements.delete(id)
81
81
  } else {
82
- data.listElements.set(id, ref)
82
+ data.listElements.set(id, element)
83
83
  }
84
84
 
85
85
  return () => {
86
- if (ref) data.listElements.delete(id)
86
+ if (element) data.listElements.delete(id)
87
87
  }
88
88
  })
89
89
 
@@ -93,7 +93,7 @@
93
93
  if (!active) return
94
94
  if (data.activationTrigger === ActivationTrigger.Pointer) return
95
95
  return disposables().requestAnimationFrame(() => {
96
- ;(ref as HTMLElement)?.scrollIntoView?.({ block: "nearest" })
96
+ ;(element as HTMLElement)?.scrollIntoView?.({ block: "nearest" })
97
97
  })
98
98
  })
99
99
 
@@ -177,5 +177,5 @@
177
177
  </script>
178
178
 
179
179
  {#if selected || !usedInSelectedOption}
180
- <ElementOrComponent {ourProps} {theirProps} {slot} defaultTag={DEFAULT_OPTION_TAG} name="Listbox" bind:ref />
180
+ <ElementOrComponent {ourProps} {theirProps} {slot} defaultTag={DEFAULT_OPTION_TAG} name="Listbox" bind:element />
181
181
  {/if}
@@ -1,6 +1,6 @@
1
- import type { ElementType, Props } from "../utils/types.js";
1
+ import type { Props } from "../utils/types.js";
2
2
  declare const DEFAULT_OPTION_TAG: "div";
3
- type OptionRenderPropArg = {
3
+ export type OptionRenderPropArg = {
4
4
  /** @deprecated use `focus` instead */
5
5
  active: boolean;
6
6
  focus: boolean;
@@ -8,39 +8,26 @@ type OptionRenderPropArg = {
8
8
  disabled: boolean;
9
9
  selectedOption: boolean;
10
10
  };
11
- type OptionPropsWeControl = "aria-disabled" | "aria-selected" | "role" | "tabIndex";
12
- export type ListboxOptionProps<TTag extends ElementType = typeof DEFAULT_OPTION_TAG, TType = string> = Props<TTag, OptionRenderPropArg, OptionPropsWeControl, {
11
+ export type ListboxOptionProps<TType = string> = Props<typeof DEFAULT_OPTION_TAG, OptionRenderPropArg, {
12
+ element?: HTMLElement;
13
13
  id?: string;
14
14
  disabled?: boolean;
15
15
  value: TType;
16
16
  }>;
17
- import { type Snippet } from "svelte";
18
- declare class __sveltets_Render<TType, TTag extends ElementType = typeof DEFAULT_OPTION_TAG> {
19
- props(): {
20
- as?: TTag | undefined;
21
- } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("slot" | "as" | "children" | "class" | "ref") | "disabled" | "value" | "id" | OptionPropsWeControl> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
22
- children?: Snippet<[OptionRenderPropArg & {
23
- props?: Record<string, any>;
24
- }]> | undefined;
25
- class?: string | ((bag: OptionRenderPropArg) => string) | null | undefined;
26
- ref?: HTMLElement;
27
- } & {
28
- id?: string;
29
- disabled?: boolean;
30
- value: TType;
31
- };
17
+ declare class __sveltets_Render<TType> {
18
+ props(): ListboxOptionProps<TType>;
32
19
  events(): {};
33
20
  slots(): {};
34
- bindings(): "ref";
21
+ bindings(): "element";
35
22
  exports(): {};
36
23
  }
37
24
  interface $$IsomorphicComponent {
38
- new <TType, TTag extends ElementType = typeof DEFAULT_OPTION_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']>> & {
39
- $$bindings?: ReturnType<__sveltets_Render<TType, TTag>['bindings']>;
40
- } & ReturnType<__sveltets_Render<TType, TTag>['exports']>;
41
- <TType, TTag extends ElementType = typeof DEFAULT_OPTION_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TType, TTag>['props']> & {}): ReturnType<__sveltets_Render<TType, TTag>['exports']>;
42
- z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
25
+ new <TType>(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']>> & {
26
+ $$bindings?: ReturnType<__sveltets_Render<TType>['bindings']>;
27
+ } & ReturnType<__sveltets_Render<TType>['exports']>;
28
+ <TType>(internal: unknown, props: ReturnType<__sveltets_Render<TType>['props']> & {}): ReturnType<__sveltets_Render<TType>['exports']>;
29
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
43
30
  }
44
31
  declare const ListboxOption: $$IsomorphicComponent;
45
- type ListboxOption<TType, TTag extends ElementType = typeof DEFAULT_OPTION_TAG> = InstanceType<typeof ListboxOption<TType, TTag>>;
32
+ type ListboxOption<TType> = InstanceType<typeof ListboxOption<TType>>;
46
33
  export default ListboxOption;