@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,9 +1,9 @@
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
6
- type ItemRenderPropArg = {
5
+ const DEFAULT_ITEM_TAG = "button" as const
6
+ export type ItemRenderPropArg = {
7
7
  /** @deprecated use `focus` instead */
8
8
  active: boolean
9
9
  focus: 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,6 +1,6 @@
1
- import type { Props, ElementType } from "../utils/types.js";
2
- declare const DEFAULT_ITEM_TAG: "svelte:fragment";
3
- type ItemRenderPropArg = {
1
+ import type { Props } from "../utils/types.js";
2
+ declare const DEFAULT_ITEM_TAG: "button";
3
+ export type ItemRenderPropArg = {
4
4
  /** @deprecated use `focus` instead */
5
5
  active: boolean;
6
6
  focus: 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;
@@ -1,5 +1,5 @@
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 { mergeProps, RenderFeatures, type PropsForFeatures } from "../utils/render.js"
4
4
  import {
5
5
  useFloatingPanel,
@@ -9,18 +9,18 @@
9
9
  } from "../internal/floating.svelte.js"
10
10
 
11
11
  const DEFAULT_ITEMS_TAG = "div" as const
12
- type ItemsRenderPropArg = {
12
+ export type ItemsRenderPropArg = {
13
13
  open: boolean
14
14
  }
15
15
  type ItemsPropsWeControl = "aria-activedescendant" | "aria-labelledby" | "role" | "tabIndex"
16
16
 
17
17
  let ItemsRenderFeatures = RenderFeatures.RenderStrategy | RenderFeatures.Static
18
18
 
19
- export type MenuItemsProps<TTag extends ElementType = typeof DEFAULT_ITEMS_TAG> = Props<
20
- TTag,
19
+ export type MenuItemsProps = Props<
20
+ typeof DEFAULT_ITEMS_TAG,
21
21
  ItemsRenderPropArg,
22
- ItemsPropsWeControl,
23
22
  {
23
+ element?: HTMLElement
24
24
  id?: string
25
25
  anchor?: AnchorProps
26
26
  portal?: boolean
@@ -30,7 +30,7 @@
30
30
  >
31
31
  </script>
32
32
 
33
- <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_ITEMS_TAG">
33
+ <script lang="ts">
34
34
  import { useId } from "../hooks/use-id.js"
35
35
  import { getOwnerDocument } from "../utils/owner.js"
36
36
  import { State, useOpenClosed } from "../internal/open-closed.js"
@@ -43,7 +43,7 @@
43
43
  import { Focus } from "../utils/calculate-active-index.js"
44
44
  import { focusFrom, Focus as FocusManagementFocus, restoreFocusIfNecessary } from "../utils/focus-management.js"
45
45
  import { useElementSize } from "../hooks/use-element-size.svelte.js"
46
- import { tick, untrack, type Snippet } from "svelte"
46
+ import { tick, untrack } from "svelte"
47
47
  import Portal from "../portal/Portal.svelte"
48
48
  import { MenuStates, useMenuContext } from "./context.svelte.js"
49
49
  import { useTreeWalker } from "../hooks/use-tree-walker.svelte.js"
@@ -51,15 +51,14 @@
51
51
 
52
52
  const internalId = useId()
53
53
  let {
54
- as = DEFAULT_ITEMS_TAG as TTag,
55
- ref = $bindable(),
54
+ element = $bindable(),
56
55
  id = `headlessui-menu-items-${internalId}`,
57
56
  anchor: rawAnchor,
58
57
  portal = false,
59
58
  modal = true,
60
59
  transition = false,
61
60
  ...theirProps
62
- }: { as?: TTag } & MenuItemsProps<TTag> = $props()
61
+ }: MenuItemsProps = $props()
63
62
  const resolvedAnchor = useResolvedAnchor({
64
63
  get anchor() {
65
64
  return rawAnchor
@@ -76,8 +75,8 @@
76
75
  const getFloatingPanelProps = useFloatingPanelProps()
77
76
 
78
77
  $effect(() => {
79
- untrack(() => _state.setItemsElement(ref ?? null))
80
- if (anchor) setFloating(ref ?? null)
78
+ untrack(() => _state.setItemsElement(element ?? null))
79
+ if (anchor) setFloating(element ?? null)
81
80
  })
82
81
  const ownerDocument = $derived(getOwnerDocument(_state.itemsElement))
83
82
 
@@ -99,7 +98,7 @@
99
98
  return transition
100
99
  },
101
100
  get element() {
102
- return ref
101
+ return element
103
102
  },
104
103
  get show() {
105
104
  return show
@@ -315,6 +314,6 @@
315
314
  features={ItemsRenderFeatures}
316
315
  visible={panelEnabled}
317
316
  name="MenuItems"
318
- bind:ref
317
+ bind:element
319
318
  />
320
319
  </Portal>
@@ -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 AnchorProps } from "../internal/floating.svelte.js";
4
4
  declare const DEFAULT_ITEMS_TAG: "div";
5
- type ItemsRenderPropArg = {
5
+ export type ItemsRenderPropArg = {
6
6
  open: boolean;
7
7
  };
8
- type ItemsPropsWeControl = "aria-activedescendant" | "aria-labelledby" | "role" | "tabIndex";
9
8
  declare let ItemsRenderFeatures: number;
10
- export type MenuItemsProps<TTag extends ElementType = typeof DEFAULT_ITEMS_TAG> = Props<TTag, ItemsRenderPropArg, ItemsPropsWeControl, {
9
+ export type MenuItemsProps = Props<typeof DEFAULT_ITEMS_TAG, ItemsRenderPropArg, {
10
+ element?: HTMLElement;
11
11
  id?: string;
12
12
  anchor?: AnchorProps;
13
13
  portal?: boolean;
14
14
  modal?: boolean;
15
15
  transition?: boolean;
16
16
  } & PropsForFeatures<typeof ItemsRenderFeatures>>;
17
- import { type Snippet } from "svelte";
18
- declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_ITEMS_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" | "portal" | "modal" | ItemsPropsWeControl> 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<[ItemsRenderPropArg & {
23
- props?: Record<string, any>;
24
- }]> | undefined;
25
- class?: string | ((bag: ItemsRenderPropArg) => string) | null | undefined;
26
- ref?: HTMLElement;
27
- } & {
28
- id?: string;
29
- anchor?: AnchorProps;
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_ITEMS_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_ITEMS_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 MenuItems: $$IsomorphicComponent;
50
- type MenuItems<TTag extends ElementType = typeof DEFAULT_ITEMS_TAG> = InstanceType<typeof MenuItems<TTag>>;
17
+ declare const MenuItems: import("svelte").Component<MenuItemsProps, {}, "element">;
51
18
  export default MenuItems;
@@ -1,29 +1,30 @@
1
1
  <script lang="ts" module>
2
- import type { Snippet } from "svelte"
3
- import type { ElementType, Props } from "../utils/types.js"
2
+ import type { Props } from "../utils/types.js"
4
3
 
5
4
  const DEFAULT_SECTION_TAG = "div" as const
6
- type SectionRenderPropArg = {}
5
+
7
6
  type SectionPropsWeControl = "role" | "aria-labelledby"
8
7
 
9
- export type MenuSectionProps<TTag extends ElementType = typeof DEFAULT_SECTION_TAG> = Props<
10
- TTag,
11
- SectionRenderPropArg,
12
- SectionPropsWeControl
8
+ export type MenuSectionProps = Props<
9
+ typeof DEFAULT_SECTION_TAG,
10
+ {},
11
+ {
12
+ element?: HTMLElement
13
+ }
13
14
  >
14
15
  </script>
15
16
 
16
- <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_SECTION_TAG">
17
+ <script lang="ts">
17
18
  import { useLabels } from "../label/context.svelte.js"
18
19
  import ElementOrComponent from "../utils/ElementOrComponent.svelte"
19
20
 
20
21
  const labelledby = useLabels()
21
22
 
22
- let { ref = $bindable(), ...theirProps }: { as?: TTag } & MenuSectionProps<TTag> = $props()
23
+ let { element = $bindable(), ...theirProps }: MenuSectionProps = $props()
23
24
  const ourProps = $derived({
24
25
  "aria-labelledby": labelledby,
25
26
  role: "group",
26
27
  })
27
28
  </script>
28
29
 
29
- <ElementOrComponent {ourProps} {theirProps} defaultTag={DEFAULT_SECTION_TAG} name="MenuSection" bind:ref />
30
+ <ElementOrComponent {ourProps} {theirProps} defaultTag={DEFAULT_SECTION_TAG} name="MenuSection" bind:element />
@@ -1,31 +1,7 @@
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_SECTION_TAG: "div";
4
- type SectionRenderPropArg = {};
5
- type SectionPropsWeControl = "role" | "aria-labelledby";
6
- export type MenuSectionProps<TTag extends ElementType = typeof DEFAULT_SECTION_TAG> = Props<TTag, SectionRenderPropArg, SectionPropsWeControl>;
7
- declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_SECTION_TAG> {
8
- props(): {
9
- as?: TTag | undefined;
10
- } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("slot" | "as" | "children" | "class" | "ref") | SectionPropsWeControl> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
11
- children?: Snippet<[{
12
- props?: Record<string, any>;
13
- }]> | undefined;
14
- class?: string | ((bag: SectionRenderPropArg) => string) | null | undefined;
15
- ref?: HTMLElement;
16
- };
17
- events(): {};
18
- slots(): {};
19
- bindings(): "ref";
20
- exports(): {};
21
- }
22
- interface $$IsomorphicComponent {
23
- new <TTag extends ElementType = typeof DEFAULT_SECTION_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']>> & {
24
- $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
25
- } & ReturnType<__sveltets_Render<TTag>['exports']>;
26
- <TTag extends ElementType = typeof DEFAULT_SECTION_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
27
- z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
28
- }
29
- declare const MenuSection: $$IsomorphicComponent;
30
- type MenuSection<TTag extends ElementType = typeof DEFAULT_SECTION_TAG> = InstanceType<typeof MenuSection<TTag>>;
3
+ export type MenuSectionProps = Props<typeof DEFAULT_SECTION_TAG, {}, {
4
+ element?: HTMLElement;
5
+ }>;
6
+ declare const MenuSection: import("svelte").Component<MenuSectionProps, {}, "element">;
31
7
  export default MenuSection;
@@ -1,22 +1,24 @@
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_SEPARATOR_TAG = "div" as const
5
- type SeparatorRenderPropArg = {}
5
+
6
6
  type SeparatorPropsWeControl = "role"
7
7
 
8
- export type MenuSeparatorProps<TTag extends ElementType = typeof DEFAULT_SEPARATOR_TAG> = Props<
9
- TTag,
10
- SeparatorRenderPropArg,
11
- SeparatorPropsWeControl
8
+ export type MenuSeparatorProps = Props<
9
+ typeof DEFAULT_SEPARATOR_TAG,
10
+ {},
11
+ {
12
+ element?: HTMLElement
13
+ }
12
14
  >
13
15
  </script>
14
16
 
15
- <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_SEPARATOR_TAG">
17
+ <script lang="ts">
16
18
  import ElementOrComponent from "../utils/ElementOrComponent.svelte"
17
19
 
18
- let { ref = $bindable(), ...theirProps }: { as?: TTag } & MenuSeparatorProps<TTag> = $props()
20
+ let { element = $bindable(), ...theirProps }: MenuSeparatorProps = $props()
19
21
  const ourProps = { role: "separator" }
20
22
  </script>
21
23
 
22
- <ElementOrComponent {ourProps} {theirProps} defaultTag={DEFAULT_SEPARATOR_TAG} name="MenuSeparator" bind:ref />
24
+ <ElementOrComponent {ourProps} {theirProps} defaultTag={DEFAULT_SEPARATOR_TAG} name="MenuSeparator" bind:element />
@@ -1,30 +1,7 @@
1
- import type { ElementType, Props } from "../utils/types.js";
1
+ import type { Props } from "../utils/types.js";
2
2
  declare const DEFAULT_SEPARATOR_TAG: "div";
3
- type SeparatorRenderPropArg = {};
4
- type SeparatorPropsWeControl = "role";
5
- export type MenuSeparatorProps<TTag extends ElementType = typeof DEFAULT_SEPARATOR_TAG> = Props<TTag, SeparatorRenderPropArg, SeparatorPropsWeControl>;
6
- declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_SEPARATOR_TAG> {
7
- props(): {
8
- as?: TTag | undefined;
9
- } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("slot" | "as" | "children" | "class" | "ref") | "role"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
10
- children?: import("svelte").Snippet<[{
11
- props?: Record<string, any>;
12
- }]> | undefined;
13
- class?: string | ((bag: SeparatorRenderPropArg) => string) | null | undefined;
14
- ref?: HTMLElement;
15
- };
16
- events(): {};
17
- slots(): {};
18
- bindings(): "ref";
19
- exports(): {};
20
- }
21
- interface $$IsomorphicComponent {
22
- new <TTag extends ElementType = typeof DEFAULT_SEPARATOR_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']>> & {
23
- $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
24
- } & ReturnType<__sveltets_Render<TTag>['exports']>;
25
- <TTag extends ElementType = typeof DEFAULT_SEPARATOR_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
26
- z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
27
- }
28
- declare const MenuSeparator: $$IsomorphicComponent;
29
- type MenuSeparator<TTag extends ElementType = typeof DEFAULT_SEPARATOR_TAG> = InstanceType<typeof MenuSeparator<TTag>>;
3
+ export type MenuSeparatorProps = Props<typeof DEFAULT_SEPARATOR_TAG, {}, {
4
+ element?: HTMLElement;
5
+ }>;
6
+ declare const MenuSeparator: import("svelte").Component<MenuSeparatorProps, {}, "element">;
30
7
  export default MenuSeparator;
@@ -1,7 +1,7 @@
1
- export { default as Menu, type MenuProps } from "./Menu.svelte";
2
- export { default as MenuButton, type MenuButtonProps } from "./MenuButton.svelte";
1
+ export { default as Menu, type MenuProps, type MenuRenderPropArg as MenuSlot } from "./Menu.svelte";
2
+ export { default as MenuButton, type MenuButtonProps, type ButtonRenderPropArg as MenuButtonSlot, } from "./MenuButton.svelte";
3
3
  export { default as MenuHeading, type MenuHeadingProps } from "./MenuHeading.svelte";
4
- export { default as MenuItem, type MenuItemProps } from "./MenuItem.svelte";
5
- export { default as MenuItems, type MenuItemsProps } from "./MenuItems.svelte";
4
+ export { default as MenuItem, type MenuItemProps, type ItemRenderPropArg as MenuItemSlot } from "./MenuItem.svelte";
5
+ export { default as MenuItems, type MenuItemsProps, type ItemsRenderPropArg as MenuItemsSlot } from "./MenuItems.svelte";
6
6
  export { default as MenuSection, type MenuSectionProps } from "./MenuSection.svelte";
7
7
  export { default as MenuSeparator, type MenuSeparatorProps } from "./MenuSeparator.svelte";
@@ -1,5 +1,5 @@
1
1
  export { default as Menu } from "./Menu.svelte";
2
- export { default as MenuButton } from "./MenuButton.svelte";
2
+ export { default as MenuButton, } from "./MenuButton.svelte";
3
3
  export { default as MenuHeading } from "./MenuHeading.svelte";
4
4
  export { default as MenuItem } from "./MenuItem.svelte";
5
5
  export { default as MenuItems } from "./MenuItems.svelte";
@@ -1,24 +1,24 @@
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
  export const DEFAULT_POPOVER_TAG = "div" as const
5
- type PopoverRenderPropArg = {
5
+ export type PopoverRenderPropArg = {
6
6
  open: boolean
7
7
  close(focusableElement?: HTMLElement | MouseEvent<HTMLElement>): void
8
8
  }
9
9
  type PopoverPropsWeControl = never
10
10
 
11
- export type PopoverProps<TTag extends ElementType = typeof DEFAULT_POPOVER_TAG> = Props<
12
- TTag,
11
+ export type PopoverProps = Props<
12
+ typeof DEFAULT_POPOVER_TAG,
13
13
  PopoverRenderPropArg,
14
- PopoverPropsWeControl,
15
14
  {
15
+ element?: HTMLElement
16
16
  __demoMode?: boolean
17
17
  }
18
18
  >
19
19
  </script>
20
20
 
21
- <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_POPOVER_TAG">
21
+ <script lang="ts">
22
22
  import { getOwnerDocument } from "../utils/owner.js"
23
23
 
24
24
  import { setContext, untrack } from "svelte"
@@ -41,7 +41,7 @@
41
41
  import { createOpenClosedContext, State } from "../internal/open-closed.js"
42
42
  import ElementOrComponent from "../utils/ElementOrComponent.svelte"
43
43
 
44
- let { ref = $bindable(), __demoMode = false, ...theirProps }: { as?: TTag } & PopoverProps<TTag> = $props()
44
+ let { element = $bindable(), __demoMode = false, ...theirProps }: PopoverProps = $props()
45
45
 
46
46
  let buttons = $state([])
47
47
  const context = createPopoverContext({
@@ -60,7 +60,7 @@
60
60
  afterButtonSentinel,
61
61
  } = $derived(context)
62
62
 
63
- const ownerDocument = $derived(getOwnerDocument(ref ?? button))
63
+ const ownerDocument = $derived(getOwnerDocument(element ?? button))
64
64
 
65
65
  const isPortalled = $derived.by(() => {
66
66
  if (!button) return false
@@ -223,5 +223,5 @@
223
223
  </script>
224
224
 
225
225
  <MainTreeProvider node={mainTreeNode.node}>
226
- <ElementOrComponent {theirProps} slots={slot} defaultTag={DEFAULT_POPOVER_TAG} name="Popover" bind:ref />
226
+ <ElementOrComponent {theirProps} slots={slot} defaultTag={DEFAULT_POPOVER_TAG} name="Popover" bind:element />
227
227
  </MainTreeProvider>
@@ -1,38 +1,13 @@
1
- import type { ElementType, Props } from "../utils/types.js";
1
+ import type { Props } from "../utils/types.js";
2
2
  export declare const DEFAULT_POPOVER_TAG: "div";
3
- type PopoverRenderPropArg = {
3
+ export type PopoverRenderPropArg = {
4
4
  open: boolean;
5
5
  close(focusableElement?: HTMLElement | MouseEvent<HTMLElement>): void;
6
6
  };
7
- type PopoverPropsWeControl = never;
8
- export type PopoverProps<TTag extends ElementType = typeof DEFAULT_POPOVER_TAG> = Props<TTag, PopoverRenderPropArg, PopoverPropsWeControl, {
7
+ export type PopoverProps = Props<typeof DEFAULT_POPOVER_TAG, PopoverRenderPropArg, {
8
+ element?: HTMLElement;
9
9
  __demoMode?: boolean;
10
10
  }>;
11
11
  import { type MouseEvent } from "./context.svelte.js";
12
- declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_POPOVER_TAG> {
13
- props(): {
14
- as?: TTag | undefined;
15
- } & (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) & {
16
- children?: import("svelte").Snippet<[PopoverRenderPropArg & {
17
- props?: Record<string, any>;
18
- }]> | undefined;
19
- class?: string | ((bag: PopoverRenderPropArg) => string) | null | undefined;
20
- ref?: HTMLElement;
21
- } & {
22
- __demoMode?: boolean;
23
- };
24
- events(): {};
25
- slots(): {};
26
- bindings(): "ref";
27
- exports(): {};
28
- }
29
- interface $$IsomorphicComponent {
30
- new <TTag extends ElementType = typeof DEFAULT_POPOVER_TAG>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TTag>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TTag>['props']>, ReturnType<__sveltets_Render<TTag>['events']>, ReturnType<__sveltets_Render<TTag>['slots']>> & {
31
- $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
32
- } & ReturnType<__sveltets_Render<TTag>['exports']>;
33
- <TTag extends ElementType = typeof DEFAULT_POPOVER_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
34
- z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
35
- }
36
- declare const Popover: $$IsomorphicComponent;
37
- type Popover<TTag extends ElementType = typeof DEFAULT_POPOVER_TAG> = InstanceType<typeof Popover<TTag>>;
12
+ declare const Popover: import("svelte").Component<PopoverProps, {}, "element">;
38
13
  export default Popover;
@@ -1,26 +1,29 @@
1
1
  <script lang="ts" module>
2
- import type { ElementType, Props, PropsOf } from "../utils/types.js"
2
+ import type { Props } from "../utils/types.js"
3
3
  import { RenderFeatures, type PropsForFeatures } from "../utils/render.js"
4
4
 
5
5
  let DEFAULT_BACKDROP_TAG = "div" as const
6
- type BackdropRenderPropArg = {
6
+ export type BackdropRenderPropArg = {
7
7
  open: boolean
8
8
  }
9
9
  type BackdropPropsWeControl = "aria-hidden"
10
10
 
11
11
  const BackdropRenderFeatures = RenderFeatures.RenderStrategy | RenderFeatures.Static
12
12
 
13
- export type PopoverBackdropProps<TTag extends ElementType = typeof DEFAULT_BACKDROP_TAG> = Props<
14
- TTag,
13
+ export type PopoverBackdropProps = Props<
14
+ typeof DEFAULT_BACKDROP_TAG,
15
15
  BackdropRenderPropArg,
16
- BackdropPropsWeControl,
17
- { transition?: boolean } & PropsForFeatures<typeof BackdropRenderFeatures>
16
+ {
17
+ element?: HTMLElement
18
+ id?: string
19
+ transition?: boolean
20
+ } & PropsForFeatures<typeof BackdropRenderFeatures>
18
21
  >
19
22
 
20
- export type PopoverOverlayProps<TTag extends ElementType = typeof DEFAULT_BACKDROP_TAG> = PopoverBackdropProps<TTag>
23
+ export type PopoverOverlayProps = PopoverBackdropProps
21
24
  </script>
22
25
 
23
- <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_BACKDROP_TAG">
26
+ <script lang="ts">
24
27
  import ElementOrComponent from "../utils/ElementOrComponent.svelte"
25
28
  import { useId } from "../hooks/use-id.js"
26
29
  import { PopoverStates, usePopoverContext } from "./context.svelte.js"
@@ -29,11 +32,11 @@
29
32
 
30
33
  const internalId = useId()
31
34
  let {
32
- ref = $bindable(),
33
- id = `headlessui-popover-backdrop-${internalId}` as PropsOf<TTag>["id"],
35
+ element = $bindable(),
36
+ id = `headlessui-popover-backdrop-${internalId}`,
34
37
  transition = false,
35
38
  ...theirProps
36
- }: { as?: TTag } & PopoverBackdropProps<TTag> = $props()
39
+ }: PopoverBackdropProps = $props()
37
40
  const context = usePopoverContext("PopoverBackdrop")
38
41
  const { popoverState } = $derived(context)
39
42
 
@@ -43,7 +46,7 @@
43
46
  return transition
44
47
  },
45
48
  get element() {
46
- return ref
49
+ return element
47
50
  },
48
51
  get show() {
49
52
  return usesOpenClosedState !== null
@@ -78,5 +81,5 @@
78
81
  features={BackdropRenderFeatures}
79
82
  name="PopoverBackdrop"
80
83
  {visible}
81
- bind:ref
84
+ bind:element
82
85
  />