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

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 (114) hide show
  1. package/dist/button/Button.svelte +8 -9
  2. package/dist/button/Button.svelte.d.ts +4 -31
  3. package/dist/checkbox/Checkbox.svelte +14 -11
  4. package/dist/checkbox/Checkbox.svelte.d.ts +14 -31
  5. package/dist/close-button/CloseButton.svelte +4 -7
  6. package/dist/close-button/CloseButton.svelte.d.ts +2 -43
  7. package/dist/data-interactive/DataInteractive.svelte +5 -19
  8. package/dist/data-interactive/DataInteractive.svelte.d.ts +7 -29
  9. package/dist/description/Description.svelte +15 -12
  10. package/dist/description/Description.svelte.d.ts +7 -27
  11. package/dist/dialog/Dialog.svelte +34 -32
  12. package/dist/dialog/Dialog.svelte.d.ts +4 -41
  13. package/dist/dialog/DialogBackdrop.svelte +10 -10
  14. package/dist/dialog/DialogBackdrop.svelte.d.ts +4 -28
  15. package/dist/dialog/DialogPanel.svelte +18 -10
  16. package/dist/dialog/DialogPanel.svelte.d.ts +4 -29
  17. package/dist/dialog/DialogTitle.svelte +19 -7
  18. package/dist/dialog/DialogTitle.svelte.d.ts +6 -26
  19. package/dist/field/Field.svelte +9 -15
  20. package/dist/field/Field.svelte.d.ts +4 -29
  21. package/dist/fieldset/Fieldset.svelte +10 -13
  22. package/dist/fieldset/Fieldset.svelte.d.ts +5 -30
  23. package/dist/focus-trap/FocusTrap.svelte +20 -24
  24. package/dist/focus-trap/FocusTrap.svelte.d.ts +5 -33
  25. package/dist/hooks/use-inert-others.svelte.js +10 -10
  26. package/dist/hooks/use-resolve-button-type.svelte.js +0 -1
  27. package/dist/input/Input.svelte +19 -9
  28. package/dist/input/Input.svelte.d.ts +13 -26
  29. package/dist/internal/FocusSentinel.svelte +33 -32
  30. package/dist/internal/FormResolver.svelte +5 -1
  31. package/dist/internal/Hidden.svelte +9 -23
  32. package/dist/internal/Hidden.svelte.d.ts +4 -29
  33. package/dist/internal/MainTreeProvider.svelte +1 -1
  34. package/dist/label/Label.svelte +19 -13
  35. package/dist/label/Label.svelte.d.ts +7 -31
  36. package/dist/legend/Legend.svelte +20 -6
  37. package/dist/legend/Legend.svelte.d.ts +4 -3
  38. package/dist/listbox/Listbox.svelte +6 -17
  39. package/dist/listbox/Listbox.svelte.d.ts +11 -34
  40. package/dist/listbox/ListboxButton.svelte +14 -13
  41. package/dist/listbox/ListboxButton.svelte.d.ts +5 -31
  42. package/dist/listbox/ListboxOption.svelte +15 -15
  43. package/dist/listbox/ListboxOption.svelte.d.ts +12 -25
  44. package/dist/listbox/ListboxOptions.svelte +13 -11
  45. package/dist/listbox/ListboxOptions.svelte.d.ts +4 -37
  46. package/dist/listbox/ListboxSelectedOption.svelte +15 -17
  47. package/dist/listbox/ListboxSelectedOption.svelte.d.ts +8 -32
  48. package/dist/menu/Menu.svelte +5 -7
  49. package/dist/menu/Menu.svelte.d.ts +3 -30
  50. package/dist/menu/MenuButton.svelte +12 -12
  51. package/dist/menu/MenuButton.svelte.d.ts +4 -33
  52. package/dist/menu/MenuHeading.svelte +10 -9
  53. package/dist/menu/MenuHeading.svelte.d.ts +4 -30
  54. package/dist/menu/MenuItem.svelte +12 -12
  55. package/dist/menu/MenuItem.svelte.d.ts +5 -31
  56. package/dist/menu/MenuItems.svelte +12 -13
  57. package/dist/menu/MenuItems.svelte.d.ts +4 -37
  58. package/dist/menu/MenuSection.svelte +9 -8
  59. package/dist/menu/MenuSection.svelte.d.ts +5 -28
  60. package/dist/menu/MenuSeparator.svelte +9 -7
  61. package/dist/menu/MenuSeparator.svelte.d.ts +5 -27
  62. package/dist/popover/Popover.svelte +8 -8
  63. package/dist/popover/Popover.svelte.d.ts +4 -29
  64. package/dist/popover/PopoverBackdrop.svelte +15 -12
  65. package/dist/popover/PopoverBackdrop.svelte.d.ts +6 -33
  66. package/dist/popover/PopoverButton.svelte +34 -34
  67. package/dist/popover/PopoverButton.svelte.d.ts +6 -28
  68. package/dist/popover/PopoverGroup.svelte +14 -13
  69. package/dist/popover/PopoverGroup.svelte.d.ts +5 -27
  70. package/dist/popover/PopoverPanel.svelte +46 -41
  71. package/dist/popover/PopoverPanel.svelte.d.ts +5 -35
  72. package/dist/popover/index.d.ts +1 -1
  73. package/dist/portal/InternalPortal.svelte +17 -16
  74. package/dist/portal/InternalPortal.svelte.d.ts +4 -29
  75. package/dist/portal/Portal.svelte +7 -6
  76. package/dist/portal/Portal.svelte.d.ts +2 -18
  77. package/dist/portal/PortalGroup.svelte +5 -13
  78. package/dist/portal/PortalGroup.svelte.d.ts +3 -30
  79. package/dist/select/Select.svelte +10 -9
  80. package/dist/select/Select.svelte.d.ts +5 -31
  81. package/dist/switch/Switch.svelte +13 -12
  82. package/dist/switch/Switch.svelte.d.ts +5 -37
  83. package/dist/switch/SwitchGroup.svelte +5 -5
  84. package/dist/switch/SwitchGroup.svelte.d.ts +7 -27
  85. package/dist/tabs/Tab.svelte +12 -12
  86. package/dist/tabs/Tab.svelte.d.ts +4 -31
  87. package/dist/tabs/TabGroup.svelte +8 -8
  88. package/dist/tabs/TabGroup.svelte.d.ts +4 -33
  89. package/dist/tabs/TabList.svelte +7 -8
  90. package/dist/tabs/TabList.svelte.d.ts +5 -27
  91. package/dist/tabs/TabPanel.svelte +11 -11
  92. package/dist/tabs/TabPanel.svelte.d.ts +4 -33
  93. package/dist/tabs/TabPanels.svelte +5 -5
  94. package/dist/tabs/TabPanels.svelte.d.ts +5 -26
  95. package/dist/textarea/Textarea.svelte +12 -10
  96. package/dist/textarea/Textarea.svelte.d.ts +13 -26
  97. package/dist/transition/InternalTransitionChild.svelte +19 -12
  98. package/dist/transition/InternalTransitionChild.svelte.d.ts +3 -32
  99. package/dist/transition/Transition.svelte +12 -21
  100. package/dist/transition/Transition.svelte.d.ts +3 -35
  101. package/dist/transition/TransitionChild.svelte +9 -10
  102. package/dist/transition/TransitionChild.svelte.d.ts +8 -34
  103. package/dist/transition/context.svelte.js +7 -7
  104. package/dist/utils/ElementOrComponent.svelte +56 -15
  105. package/dist/utils/ElementOrComponent.svelte.d.ts +30 -23
  106. package/dist/utils/state.js +4 -4
  107. package/dist/utils/types.d.ts +12 -9
  108. package/package.json +12 -12
  109. package/dist/combobox/Combobox.svelte +0 -53
  110. package/dist/combobox/Combobox.svelte.d.ts +0 -50
  111. package/dist/utils/Generic.svelte +0 -57
  112. package/dist/utils/Generic.svelte.d.ts +0 -31
  113. package/dist/utils/alternative-types.d.ts +0 -20
  114. package/dist/utils/alternative-types.js +0 -1
@@ -1,51 +1,18 @@
1
- import type { ElementType, Props } from "../utils/types.js";
1
+ import type { Props } from "../utils/types.js";
2
2
  import { type PropsForFeatures } from "../utils/render.js";
3
3
  import { type AnchorPropsWithSelection } from "../internal/floating.svelte.js";
4
4
  declare const DEFAULT_OPTIONS_TAG: "div";
5
5
  type OptionsRenderPropArg = {
6
6
  open: boolean;
7
7
  };
8
- type OptionsPropsWeControl = "aria-activedescendant" | "aria-labelledby" | "aria-multiselectable" | "aria-orientation" | "role" | "tabIndex";
9
8
  declare let OptionsRenderFeatures: number;
10
- export type ListboxOptionsProps<TTag extends ElementType = typeof DEFAULT_OPTIONS_TAG> = Props<TTag, OptionsRenderPropArg, OptionsPropsWeControl, {
9
+ export type ListboxOptionsProps = Props<typeof DEFAULT_OPTIONS_TAG, OptionsRenderPropArg, {
10
+ element?: HTMLElement;
11
11
  id?: string;
12
12
  anchor?: AnchorPropsWithSelection;
13
13
  portal?: boolean;
14
14
  modal?: boolean;
15
15
  transition?: boolean;
16
16
  } & PropsForFeatures<typeof OptionsRenderFeatures>>;
17
- import { type Snippet } from "svelte";
18
- declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_OPTIONS_TAG> {
19
- props(): {
20
- as?: TTag | undefined;
21
- } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("slot" | "as" | "children" | "class" | "ref") | "anchor" | "unmount" | "static" | "id" | "transition" | OptionsPropsWeControl | "portal" | "modal"> 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<[OptionsRenderPropArg & {
23
- props?: Record<string, any>;
24
- }]> | undefined;
25
- class?: string | ((bag: OptionsRenderPropArg) => string) | null | undefined;
26
- ref?: HTMLElement;
27
- } & {
28
- id?: string;
29
- anchor?: AnchorPropsWithSelection;
30
- portal?: boolean;
31
- modal?: boolean;
32
- transition?: boolean;
33
- } & {
34
- static?: boolean | undefined;
35
- unmount?: boolean | undefined;
36
- };
37
- events(): {};
38
- slots(): {};
39
- bindings(): "ref";
40
- exports(): {};
41
- }
42
- interface $$IsomorphicComponent {
43
- new <TTag extends ElementType = typeof DEFAULT_OPTIONS_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']>> & {
44
- $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
45
- } & ReturnType<__sveltets_Render<TTag>['exports']>;
46
- <TTag extends ElementType = typeof DEFAULT_OPTIONS_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
47
- z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
48
- }
49
- declare const ListboxOptions: $$IsomorphicComponent;
50
- type ListboxOptions<TTag extends ElementType = typeof DEFAULT_OPTIONS_TAG> = InstanceType<typeof ListboxOptions<TTag>>;
17
+ declare const ListboxOptions: import("svelte").Component<ListboxOptionsProps, {}, "element">;
51
18
  export default ListboxOptions;
@@ -1,33 +1,30 @@
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
  import type { Snippet } from "svelte"
4
4
 
5
- const DEFAULT_SELECTED_OPTION_TAG = "svelte:fragment"
6
- type SelectedOptionRenderPropArg = {}
5
+ const DEFAULT_SELECTED_OPTION_TAG = "span"
6
+ type SelectedOptionRenderPropArg = {
7
+ option: Snippet
8
+ }
7
9
  type SelectedOptionPropsWeControl = never
8
10
 
9
- export type ListboxSelectedOptionProps<TTag extends ElementType = typeof DEFAULT_SELECTED_OPTION_TAG> = Props<
10
- TTag,
11
+ export type ListboxSelectedOptionProps = Props<
12
+ typeof DEFAULT_SELECTED_OPTION_TAG,
11
13
  SelectedOptionRenderPropArg,
12
- SelectedOptionPropsWeControl,
13
14
  {
15
+ element?: HTMLElement
14
16
  options: Snippet
15
17
  placeholder?: Snippet
16
18
  }
17
19
  >
18
20
  </script>
19
21
 
20
- <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_SELECTED_OPTION_TAG">
22
+ <script lang="ts">
21
23
  import { useData, ValueMode } from "./Listbox.svelte"
22
24
  import { setContext } from "svelte"
23
25
  import ElementOrComponent from "../utils/ElementOrComponent.svelte"
24
26
 
25
- let {
26
- ref = $bindable(),
27
- options,
28
- placeholder,
29
- ...theirProps
30
- }: { as?: TTag } & ListboxSelectedOptionProps<TTag> = $props()
27
+ let { element = $bindable(), options, placeholder, ...theirProps }: ListboxSelectedOptionProps = $props()
31
28
 
32
29
  const data = useData("ListboxSelectedOption")
33
30
 
@@ -40,7 +37,7 @@
40
37
  setContext("SelectedOptionContext", true)
41
38
  </script>
42
39
 
43
- {#snippet children()}
40
+ {#snippet option()}
44
41
  {#if placeholder && shouldShowPlaceholder}
45
42
  {@render placeholder()}
46
43
  {:else}
@@ -49,8 +46,9 @@
49
46
  {/snippet}
50
47
 
51
48
  <ElementOrComponent
52
- theirProps={{ ...theirProps, children }}
49
+ theirProps={{ ...theirProps, ...(theirProps.asChild ? {} : { children: option }) }}
50
+ slot={{ option }}
53
51
  defaultTag={DEFAULT_SELECTED_OPTION_TAG}
54
52
  name="ListboxSelectedOption"
55
- bind:ref
56
- ></ElementOrComponent>
53
+ bind:element
54
+ />
@@ -1,37 +1,13 @@
1
- import type { ElementType, Props } from "../utils/types.js";
1
+ import type { Props } from "../utils/types.js";
2
2
  import type { Snippet } from "svelte";
3
- declare const DEFAULT_SELECTED_OPTION_TAG = "svelte:fragment";
4
- type SelectedOptionRenderPropArg = {};
5
- type SelectedOptionPropsWeControl = never;
6
- export type ListboxSelectedOptionProps<TTag extends ElementType = typeof DEFAULT_SELECTED_OPTION_TAG> = Props<TTag, SelectedOptionRenderPropArg, SelectedOptionPropsWeControl, {
3
+ declare const DEFAULT_SELECTED_OPTION_TAG = "span";
4
+ type SelectedOptionRenderPropArg = {
5
+ option: Snippet;
6
+ };
7
+ export type ListboxSelectedOptionProps = Props<typeof DEFAULT_SELECTED_OPTION_TAG, SelectedOptionRenderPropArg, {
8
+ element?: HTMLElement;
7
9
  options: Snippet;
8
10
  placeholder?: Snippet;
9
11
  }>;
10
- declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_SELECTED_OPTION_TAG> {
11
- props(): {
12
- as?: TTag | undefined;
13
- } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("slot" | "as" | "children" | "class" | "ref") | "placeholder" | "options"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
14
- children?: Snippet<[{
15
- props?: Record<string, any>;
16
- }]> | undefined;
17
- class?: string | ((bag: SelectedOptionRenderPropArg) => string) | null | undefined;
18
- ref?: HTMLElement;
19
- } & {
20
- options: Snippet;
21
- placeholder?: Snippet;
22
- };
23
- events(): {};
24
- slots(): {};
25
- bindings(): "ref";
26
- exports(): {};
27
- }
28
- interface $$IsomorphicComponent {
29
- new <TTag extends ElementType = typeof DEFAULT_SELECTED_OPTION_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_SELECTED_OPTION_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
33
- z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
34
- }
35
- declare const ListboxSelectedOption: $$IsomorphicComponent;
36
- type ListboxSelectedOption<TTag extends ElementType = typeof DEFAULT_SELECTED_OPTION_TAG> = InstanceType<typeof ListboxSelectedOption<TTag>>;
12
+ declare const ListboxSelectedOption: import("svelte").Component<ListboxSelectedOptionProps, {}, "element">;
37
13
  export default ListboxSelectedOption;
@@ -1,5 +1,5 @@
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
  let DEFAULT_MENU_TAG = "svelte:fragment"
5
5
  type MenuRenderPropArg = {
@@ -8,17 +8,15 @@
8
8
  }
9
9
  type MenuPropsWeControl = never
10
10
 
11
- export type MenuProps<TTag extends ElementType = typeof DEFAULT_MENU_TAG> = Props<
12
- TTag,
11
+ export type MenuProps = PropsAsChild<
13
12
  MenuRenderPropArg,
14
- MenuPropsWeControl,
15
13
  {
16
14
  __demoMode?: boolean
17
15
  }
18
16
  >
19
17
  </script>
20
18
 
21
- <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_MENU_TAG">
19
+ <script lang="ts">
22
20
  import { ActivationTrigger, createMenuContext, MenuStates, type StateDefinition } from "./context.svelte.js"
23
21
  import { useOutsideClick } from "../hooks/use-outside-click.svelte.js"
24
22
  import { useFloatingProvider } from "../internal/floating-provider.svelte.js"
@@ -27,7 +25,7 @@
27
25
  import { FocusableMode, isFocusableElement } from "../utils/focus-management.js"
28
26
  import { match } from "../utils/match.js"
29
27
 
30
- let { ref = $bindable(), __demoMode = false, ...theirProps }: { as?: TTag } & MenuProps<TTag> = $props()
28
+ let { __demoMode = false, ...theirProps }: MenuProps = $props()
31
29
 
32
30
  const context = createMenuContext({
33
31
  __demoMode,
@@ -80,4 +78,4 @@
80
78
  })
81
79
  </script>
82
80
 
83
- <ElementOrComponent {theirProps} {slot} defaultTag={DEFAULT_MENU_TAG} name="Menu" bind:ref />
81
+ <ElementOrComponent {theirProps} {slot} name="Menu" />
@@ -1,37 +1,10 @@
1
- import type { ElementType, Props } from "../utils/types.js";
2
- declare let DEFAULT_MENU_TAG: string;
1
+ import type { PropsAsChild } from "../utils/types.js";
3
2
  type MenuRenderPropArg = {
4
3
  open: boolean;
5
4
  close: () => void;
6
5
  };
7
- type MenuPropsWeControl = never;
8
- export type MenuProps<TTag extends ElementType = typeof DEFAULT_MENU_TAG> = Props<TTag, MenuRenderPropArg, MenuPropsWeControl, {
6
+ export type MenuProps = PropsAsChild<MenuRenderPropArg, {
9
7
  __demoMode?: boolean;
10
8
  }>;
11
- declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_MENU_TAG> {
12
- props(): {
13
- as?: TTag | undefined;
14
- } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("slot" | "as" | "children" | "class" | "ref") | "__demoMode"> 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("svelte").Snippet<[MenuRenderPropArg & {
16
- props?: Record<string, any>;
17
- }]> | undefined;
18
- class?: string | ((bag: MenuRenderPropArg) => string) | null | undefined;
19
- ref?: HTMLElement;
20
- } & {
21
- __demoMode?: boolean;
22
- };
23
- events(): {};
24
- slots(): {};
25
- bindings(): "ref";
26
- exports(): {};
27
- }
28
- interface $$IsomorphicComponent {
29
- new <TTag extends ElementType = typeof DEFAULT_MENU_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_MENU_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
33
- z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
34
- }
35
- declare const Menu: $$IsomorphicComponent;
36
- type Menu<TTag extends ElementType = typeof DEFAULT_MENU_TAG> = InstanceType<typeof Menu<TTag>>;
9
+ declare const Menu: import("svelte").Component<MenuProps, {}, "">;
37
10
  export default Menu;
@@ -1,6 +1,6 @@
1
1
  <script lang="ts" module>
2
- import { tick, type Snippet } from "svelte"
3
- import type { Props, ElementType } from "../utils/types.js"
2
+ import { tick } from "svelte"
3
+ import type { Props } from "../utils/types.js"
4
4
 
5
5
  const DEFAULT_BUTTON_TAG = "button" as const
6
6
  type ButtonRenderPropArg = {
@@ -13,11 +13,11 @@
13
13
  }
14
14
  type ButtonPropsWeControl = "aria-controls" | "aria-expanded" | "aria-haspopup"
15
15
 
16
- export type MenuButtonProps<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG> = Props<
17
- TTag,
16
+ export type MenuButtonProps = Props<
17
+ typeof DEFAULT_BUTTON_TAG,
18
18
  ButtonRenderPropArg,
19
- ButtonPropsWeControl,
20
19
  {
20
+ element?: HTMLElement
21
21
  id?: string
22
22
  disabled?: boolean
23
23
  autofocus?: boolean
@@ -26,7 +26,7 @@
26
26
  >
27
27
  </script>
28
28
 
29
- <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_BUTTON_TAG">
29
+ <script lang="ts">
30
30
  import { useId } from "../hooks/use-id.js"
31
31
  import { Focus } from "../utils/calculate-active-index.js"
32
32
  import { useFocusRing } from "../hooks/use-focus-ring.svelte.js"
@@ -41,19 +41,19 @@
41
41
 
42
42
  const internalId = useId()
43
43
  let {
44
- ref = $bindable(),
44
+ element = $bindable(),
45
45
  id = `headlessui-menu-button-${internalId}`,
46
46
  disabled = false,
47
47
  autofocus = false,
48
48
  ...theirProps
49
- }: { as?: TTag } & MenuButtonProps<TTag> = $props()
49
+ }: MenuButtonProps = $props()
50
50
  const _state = useMenuContext("MenuButton")
51
51
  const floatingReference = useFloatingReference()
52
52
  const { setReference } = $derived(floatingReference)
53
53
  const { getReferenceProps: getFloatingReferenceProps } = useFloatingReferenceProps()
54
54
  $effect(() => {
55
- untrack(() => _state.setButtonElement(ref ? (ref as HTMLButtonElement) : null))
56
- setReference(ref)
55
+ untrack(() => _state.setButtonElement(element ? (element as HTMLButtonElement) : null))
56
+ setReference(element)
57
57
  })
58
58
 
59
59
  const handleKeyDown = async (event: KeyboardEvent) => {
@@ -137,7 +137,7 @@
137
137
 
138
138
  const buttonType = useResolveButtonType({
139
139
  get props() {
140
- return { type: theirProps.type, as: theirProps.as }
140
+ return { type: theirProps.type, as: DEFAULT_BUTTON_TAG }
141
141
  },
142
142
  get ref() {
143
143
  return { current: _state.buttonElement }
@@ -166,4 +166,4 @@
166
166
  )
167
167
  </script>
168
168
 
169
- <ElementOrComponent {ourProps} {theirProps} {slot} defaultTag={DEFAULT_BUTTON_TAG} name="MenuButton" bind:ref />
169
+ <ElementOrComponent {ourProps} {theirProps} {slot} defaultTag={DEFAULT_BUTTON_TAG} name="MenuButton" bind:element />
@@ -1,5 +1,4 @@
1
- import { type Snippet } from "svelte";
2
- import type { Props, ElementType } from "../utils/types.js";
1
+ import type { Props } from "../utils/types.js";
3
2
  declare const DEFAULT_BUTTON_TAG: "button";
4
3
  type ButtonRenderPropArg = {
5
4
  open: boolean;
@@ -9,40 +8,12 @@ type ButtonRenderPropArg = {
9
8
  disabled: boolean;
10
9
  autofocus: boolean;
11
10
  };
12
- type ButtonPropsWeControl = "aria-controls" | "aria-expanded" | "aria-haspopup";
13
- export type MenuButtonProps<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG> = Props<TTag, ButtonRenderPropArg, ButtonPropsWeControl, {
11
+ export type MenuButtonProps = Props<typeof DEFAULT_BUTTON_TAG, ButtonRenderPropArg, {
12
+ element?: HTMLElement;
14
13
  id?: string;
15
14
  disabled?: boolean;
16
15
  autofocus?: boolean;
17
16
  type?: string;
18
17
  }>;
19
- declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG> {
20
- props(): {
21
- as?: TTag | undefined;
22
- } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("slot" | "as" | "children" | "class" | "ref") | "disabled" | "autofocus" | "type" | "id" | ButtonPropsWeControl> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").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
- id?: string;
30
- disabled?: boolean;
31
- autofocus?: boolean;
32
- type?: string;
33
- };
34
- events(): {};
35
- slots(): {};
36
- bindings(): "ref";
37
- exports(): {};
38
- }
39
- interface $$IsomorphicComponent {
40
- 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']>> & {
41
- $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
42
- } & ReturnType<__sveltets_Render<TTag>['exports']>;
43
- <TTag extends ElementType = typeof DEFAULT_BUTTON_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
44
- z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
45
- }
46
- declare const MenuButton: $$IsomorphicComponent;
47
- type MenuButton<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG> = InstanceType<typeof MenuButton<TTag>>;
18
+ declare const MenuButton: import("svelte").Component<MenuButtonProps, {}, "element">;
48
19
  export default MenuButton;
@@ -1,32 +1,33 @@
1
1
  <script lang="ts" module>
2
- import { onMount, type Snippet } from "svelte"
3
- import type { ElementType, Props } from "../utils/types.js"
2
+ import { onMount } from "svelte"
3
+ import type { SvelteHTMLElements } from "svelte/elements"
4
+ import type { Props } from "../utils/types.js"
4
5
 
5
6
  const DEFAULT_HEADING_TAG = "header" as const
6
7
  type HeadingRenderPropArg = {}
7
8
  type HeadingPropsWeControl = "role"
8
9
 
9
- export type MenuHeadingProps<TTag extends ElementType = typeof DEFAULT_HEADING_TAG> = Props<
10
- TTag,
10
+ export type MenuHeadingProps = Props<
11
+ typeof DEFAULT_HEADING_TAG,
11
12
  HeadingRenderPropArg,
12
- HeadingPropsWeControl,
13
13
  {
14
+ element?: HTMLElement
14
15
  id?: string
15
16
  }
16
17
  >
17
18
  </script>
18
19
 
19
- <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_HEADING_TAG">
20
+ <script lang="ts">
20
21
  import { useId } from "../hooks/use-id.js"
21
22
  import { useLabelContext } from "../label/context.svelte.js"
22
23
  import ElementOrComponent from "../utils/ElementOrComponent.svelte"
23
24
 
24
25
  const internalId = useId()
25
26
  let {
26
- ref = $bindable(),
27
+ element = $bindable(),
27
28
  id = `headlessui-menu-heading-${internalId}`,
28
29
  ...theirProps
29
- }: { as?: TTag } & MenuHeadingProps<TTag> = $props()
30
+ }: MenuHeadingProps = $props()
30
31
 
31
32
  const context = useLabelContext()
32
33
  onMount(() => context.register(id))
@@ -34,4 +35,4 @@
34
35
  const ourProps = $derived({ id, role: "presentation", ...context.props })
35
36
  </script>
36
37
 
37
- <ElementOrComponent {ourProps} {theirProps} defaultTag={DEFAULT_HEADING_TAG} name="MenuItem" bind:ref />
38
+ <ElementOrComponent {ourProps} {theirProps} defaultTag={DEFAULT_HEADING_TAG} name="MenuItem" bind:element />
@@ -1,35 +1,9 @@
1
- import { type Snippet } from "svelte";
2
- import type { ElementType, Props } from "../utils/types.js";
1
+ import type { Props } from "../utils/types.js";
3
2
  declare const DEFAULT_HEADING_TAG: "header";
4
3
  type HeadingRenderPropArg = {};
5
- type HeadingPropsWeControl = "role";
6
- export type MenuHeadingProps<TTag extends ElementType = typeof DEFAULT_HEADING_TAG> = Props<TTag, HeadingRenderPropArg, HeadingPropsWeControl, {
4
+ export type MenuHeadingProps = Props<typeof DEFAULT_HEADING_TAG, HeadingRenderPropArg, {
5
+ element?: HTMLElement;
7
6
  id?: string;
8
7
  }>;
9
- declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_HEADING_TAG> {
10
- props(): {
11
- as?: TTag | undefined;
12
- } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("slot" | "as" | "children" | "class" | "ref") | "id" | "role"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
13
- children?: Snippet<[{
14
- props?: Record<string, any>;
15
- }]> | undefined;
16
- class?: string | ((bag: HeadingRenderPropArg) => string) | null | undefined;
17
- ref?: HTMLElement;
18
- } & {
19
- id?: string;
20
- };
21
- events(): {};
22
- slots(): {};
23
- bindings(): "ref";
24
- exports(): {};
25
- }
26
- interface $$IsomorphicComponent {
27
- new <TTag extends ElementType = typeof DEFAULT_HEADING_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']>> & {
28
- $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
29
- } & ReturnType<__sveltets_Render<TTag>['exports']>;
30
- <TTag extends ElementType = typeof DEFAULT_HEADING_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
31
- z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
32
- }
33
- declare const MenuHeading: $$IsomorphicComponent;
34
- type MenuHeading<TTag extends ElementType = typeof DEFAULT_HEADING_TAG> = InstanceType<typeof MenuHeading<TTag>>;
8
+ declare const MenuHeading: import("svelte").Component<MenuHeadingProps, {}, "element">;
35
9
  export default MenuHeading;
@@ -1,8 +1,8 @@
1
1
  <script lang="ts" module>
2
- import type { Props, ElementType } from "../utils/types.js"
2
+ import type { Props } from "../utils/types.js"
3
3
  import { onMount } from "svelte"
4
4
 
5
- const DEFAULT_ITEM_TAG = "svelte:fragment" as const
5
+ const DEFAULT_ITEM_TAG = "button" as const
6
6
  type ItemRenderPropArg = {
7
7
  /** @deprecated use `focus` instead */
8
8
  active: boolean
@@ -13,18 +13,18 @@
13
13
  }
14
14
  type ItemPropsWeControl = "aria-describedby" | "aria-disabled" | "aria-labelledby" | "role" | "tabIndex"
15
15
 
16
- export type MenuItemProps<TTag extends ElementType = typeof DEFAULT_ITEM_TAG> = Props<
17
- TTag,
16
+ export type MenuItemProps = Props<
17
+ typeof DEFAULT_ITEM_TAG,
18
18
  ItemRenderPropArg,
19
- ItemPropsWeControl,
20
19
  {
20
+ element?: HTMLElement
21
21
  id?: string
22
22
  disabled?: boolean
23
23
  }
24
24
  >
25
25
  </script>
26
26
 
27
- <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_ITEM_TAG">
27
+ <script lang="ts">
28
28
  import { useId } from "../hooks/use-id.js"
29
29
  import { ActivationTrigger, MenuStates, useMenuContext, type MenuItemDataRef } from "./context.svelte.js"
30
30
  import { disposables } from "../utils/disposables.js"
@@ -39,11 +39,11 @@
39
39
 
40
40
  const internalId = useId()
41
41
  let {
42
- ref = $bindable(),
42
+ element = $bindable(),
43
43
  id = `headlessui-menu-item-${internalId}`,
44
44
  disabled = false,
45
45
  ...theirProps
46
- }: { as?: TTag } & MenuItemProps<TTag> = $props()
46
+ }: MenuItemProps = $props()
47
47
  const _state = useMenuContext("MenuItem")
48
48
  const active = $derived(_state.activeItemIndex !== null ? _state.items[_state.activeItemIndex].id === id : false)
49
49
 
@@ -55,19 +55,19 @@
55
55
  if (!active) return
56
56
  if (_state.activationTrigger === ActivationTrigger.Pointer) return
57
57
  return disposables().requestAnimationFrame(() => {
58
- ;(ref as HTMLElement)?.scrollIntoView?.({ block: "nearest" })
58
+ ;(element as HTMLElement)?.scrollIntoView?.({ block: "nearest" })
59
59
  })
60
60
  })
61
61
 
62
62
  const getTextValue = useTextValue({
63
63
  get element() {
64
- return ref || null
64
+ return element || null
65
65
  },
66
66
  })
67
67
 
68
68
  const bag: MenuItemDataRef["current"] = $derived({
69
69
  disabled,
70
- domRef: { current: ref || null },
70
+ domRef: { current: element || null },
71
71
  get textValue() {
72
72
  return getTextValue()
73
73
  },
@@ -146,4 +146,4 @@
146
146
  )
147
147
  </script>
148
148
 
149
- <ElementOrComponent {ourProps} {theirProps} {slot} defaultTag={DEFAULT_ITEM_TAG} name="MenuItem" bind:ref />
149
+ <ElementOrComponent {ourProps} {theirProps} {slot} defaultTag={DEFAULT_ITEM_TAG} name="MenuItem" bind:element />
@@ -1,5 +1,5 @@
1
- import type { Props, ElementType } from "../utils/types.js";
2
- declare const DEFAULT_ITEM_TAG: "svelte:fragment";
1
+ import type { Props } from "../utils/types.js";
2
+ declare const DEFAULT_ITEM_TAG: "button";
3
3
  type ItemRenderPropArg = {
4
4
  /** @deprecated use `focus` instead */
5
5
  active: boolean;
@@ -8,36 +8,10 @@ type ItemRenderPropArg = {
8
8
  close: () => void;
9
9
  props?: Record<string, any>;
10
10
  };
11
- type ItemPropsWeControl = "aria-describedby" | "aria-disabled" | "aria-labelledby" | "role" | "tabIndex";
12
- export type MenuItemProps<TTag extends ElementType = typeof DEFAULT_ITEM_TAG> = Props<TTag, ItemRenderPropArg, ItemPropsWeControl, {
11
+ export type MenuItemProps = Props<typeof DEFAULT_ITEM_TAG, ItemRenderPropArg, {
12
+ element?: HTMLElement;
13
13
  id?: string;
14
14
  disabled?: boolean;
15
15
  }>;
16
- declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_ITEM_TAG> {
17
- props(): {
18
- as?: TTag | undefined;
19
- } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("slot" | "as" | "children" | "class" | "ref") | "disabled" | "id" | ItemPropsWeControl> 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("svelte").Snippet<[ItemRenderPropArg & {
21
- props?: Record<string, any>;
22
- }]> | undefined;
23
- class?: string | ((bag: ItemRenderPropArg) => string) | null | undefined;
24
- ref?: HTMLElement;
25
- } & {
26
- id?: string;
27
- disabled?: boolean;
28
- };
29
- events(): {};
30
- slots(): {};
31
- bindings(): "ref";
32
- exports(): {};
33
- }
34
- interface $$IsomorphicComponent {
35
- new <TTag extends ElementType = typeof DEFAULT_ITEM_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']>> & {
36
- $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
37
- } & ReturnType<__sveltets_Render<TTag>['exports']>;
38
- <TTag extends ElementType = typeof DEFAULT_ITEM_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
39
- z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
40
- }
41
- declare const MenuItem: $$IsomorphicComponent;
42
- type MenuItem<TTag extends ElementType = typeof DEFAULT_ITEM_TAG> = InstanceType<typeof MenuItem<TTag>>;
16
+ declare const MenuItem: import("svelte").Component<MenuItemProps, {}, "element">;
43
17
  export default MenuItem;