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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (174) hide show
  1. package/dist/button/Button.svelte +6 -10
  2. package/dist/button/Button.svelte.d.ts +34 -26
  3. package/dist/checkbox/Checkbox.svelte +40 -22
  4. package/dist/checkbox/Checkbox.svelte.d.ts +44 -28
  5. package/dist/close-button/CloseButton.svelte +5 -4
  6. package/dist/close-button/CloseButton.svelte.d.ts +36 -13
  7. package/dist/combobox/Combobox.svelte +2 -2
  8. package/dist/combobox/Combobox.svelte.d.ts +9 -9
  9. package/dist/data-interactive/DataInteractive.svelte +41 -0
  10. package/dist/data-interactive/DataInteractive.svelte.d.ts +39 -0
  11. package/dist/data-interactive/index.d.ts +1 -0
  12. package/dist/data-interactive/index.js +1 -0
  13. package/dist/description/Description.svelte +10 -53
  14. package/dist/description/Description.svelte.d.ts +15 -32
  15. package/dist/description/context.svelte.d.ts +17 -0
  16. package/dist/description/context.svelte.js +51 -0
  17. package/dist/dialog/Dialog.svelte +51 -0
  18. package/dist/dialog/Dialog.svelte.d.ts +60 -0
  19. package/dist/dialog/DialogBackdrop.svelte +39 -0
  20. package/dist/dialog/DialogBackdrop.svelte.d.ts +38 -0
  21. package/dist/dialog/DialogPanel.svelte +46 -0
  22. package/dist/dialog/DialogPanel.svelte.d.ts +40 -0
  23. package/dist/dialog/DialogTitle.svelte +29 -0
  24. package/dist/dialog/DialogTitle.svelte.d.ts +34 -0
  25. package/dist/dialog/InternalDialog.svelte +233 -0
  26. package/dist/dialog/InternalDialog.svelte.d.ts +42 -0
  27. package/dist/dialog/context.svelte.d.ts +15 -0
  28. package/dist/dialog/context.svelte.js +16 -0
  29. package/dist/dialog/index.d.ts +4 -0
  30. package/dist/dialog/index.js +4 -0
  31. package/dist/field/Field.svelte +8 -10
  32. package/dist/field/Field.svelte.d.ts +21 -17
  33. package/dist/fieldset/Fieldset.svelte +11 -9
  34. package/dist/fieldset/Fieldset.svelte.d.ts +21 -17
  35. package/dist/focus-trap/FocusTrap.svelte +332 -0
  36. package/dist/focus-trap/FocusTrap.svelte.d.ts +58 -0
  37. package/dist/hooks/use-controllable.svelte.d.ts +1 -1
  38. package/dist/hooks/use-controllable.svelte.js +3 -3
  39. package/dist/hooks/use-escape.svelte.d.ts +5 -0
  40. package/dist/hooks/use-escape.svelte.js +26 -0
  41. package/dist/hooks/use-event-listener.svelte.d.ts +6 -0
  42. package/dist/hooks/use-event-listener.svelte.js +12 -0
  43. package/dist/hooks/use-inert-others.svelte.d.ts +2 -2
  44. package/dist/hooks/use-inert-others.svelte.js +3 -3
  45. package/dist/hooks/use-is-mounted.svelte.d.ts +3 -0
  46. package/dist/hooks/use-is-mounted.svelte.js +14 -0
  47. package/dist/hooks/use-is-touch-device.svelte.d.ts +3 -0
  48. package/dist/hooks/use-is-touch-device.svelte.js +20 -0
  49. package/dist/hooks/use-root-containers.svelte.d.ts +9 -0
  50. package/dist/hooks/use-root-containers.svelte.js +50 -0
  51. package/dist/hooks/use-tab-direction.svelte.d.ts +7 -0
  52. package/dist/hooks/use-tab-direction.svelte.js +25 -0
  53. package/dist/hooks/use-transition.svelte.js +14 -13
  54. package/dist/hooks/use-tree-walker.svelte.d.ts +8 -0
  55. package/dist/hooks/use-tree-walker.svelte.js +19 -0
  56. package/dist/hooks/use-watch.svelte.d.ts +4 -0
  57. package/dist/hooks/use-watch.svelte.js +16 -0
  58. package/dist/hooks/use-window-event.svelte.d.ts +6 -0
  59. package/dist/hooks/use-window-event.svelte.js +12 -0
  60. package/dist/index.d.ts +9 -0
  61. package/dist/index.js +9 -0
  62. package/dist/input/Input.svelte +59 -0
  63. package/dist/input/Input.svelte.d.ts +52 -0
  64. package/dist/input/index.d.ts +1 -0
  65. package/dist/input/index.js +1 -0
  66. package/dist/internal/FocusSentinel.svelte.d.ts +4 -1
  67. package/dist/internal/ForcePortalRoot.svelte +6 -0
  68. package/dist/internal/ForcePortalRoot.svelte.d.ts +22 -0
  69. package/dist/internal/FormFields.svelte.d.ts +4 -1
  70. package/dist/internal/FormResolver.svelte.d.ts +4 -1
  71. package/dist/internal/Hidden.svelte +5 -9
  72. package/dist/internal/Hidden.svelte.d.ts +17 -10
  73. package/dist/internal/HoistFormFields.svelte.d.ts +4 -1
  74. package/dist/internal/MainTreeProvider.svelte +45 -0
  75. package/dist/internal/MainTreeProvider.svelte.d.ts +31 -0
  76. package/dist/internal/Portal.svelte.d.ts +4 -1
  77. package/dist/internal/close-provider.d.ts +7 -0
  78. package/dist/internal/close-provider.js +7 -0
  79. package/dist/internal/floating.svelte.d.ts +13 -8
  80. package/dist/internal/floating.svelte.js +197 -186
  81. package/dist/internal/id.d.ts +1 -1
  82. package/dist/internal/open-closed.d.ts +1 -1
  83. package/dist/internal/open-closed.js +1 -1
  84. package/dist/label/Label.svelte +12 -61
  85. package/dist/label/Label.svelte.d.ts +19 -32
  86. package/dist/label/context.svelte.d.ts +17 -0
  87. package/dist/label/context.svelte.js +56 -0
  88. package/dist/legend/Legend.svelte +4 -3
  89. package/dist/legend/Legend.svelte.d.ts +33 -15
  90. package/dist/listbox/Listbox.svelte +6 -9
  91. package/dist/listbox/Listbox.svelte.d.ts +29 -10
  92. package/dist/listbox/ListboxButton.svelte +6 -8
  93. package/dist/listbox/ListboxButton.svelte.d.ts +18 -7
  94. package/dist/listbox/ListboxOption.svelte +4 -6
  95. package/dist/listbox/ListboxOption.svelte.d.ts +22 -11
  96. package/dist/listbox/ListboxOptions.svelte +21 -19
  97. package/dist/listbox/ListboxOptions.svelte.d.ts +23 -7
  98. package/dist/listbox/ListboxSelectedOption.svelte +17 -7
  99. package/dist/listbox/ListboxSelectedOption.svelte.d.ts +23 -13
  100. package/dist/menu/Menu.svelte +235 -0
  101. package/dist/menu/Menu.svelte.d.ts +42 -0
  102. package/dist/menu/MenuButton.svelte +127 -0
  103. package/dist/menu/MenuButton.svelte.d.ts +52 -0
  104. package/dist/menu/MenuHeading.svelte +19 -0
  105. package/dist/menu/MenuHeading.svelte.d.ts +39 -0
  106. package/dist/menu/MenuItem.svelte +114 -0
  107. package/dist/menu/MenuItem.svelte.d.ts +49 -0
  108. package/dist/menu/MenuItems.svelte +244 -0
  109. package/dist/menu/MenuItems.svelte.d.ts +55 -0
  110. package/dist/menu/MenuSection.svelte +14 -0
  111. package/dist/menu/MenuSection.svelte.d.ts +35 -0
  112. package/dist/menu/MenuSeparator.svelte +9 -0
  113. package/dist/menu/MenuSeparator.svelte.d.ts +35 -0
  114. package/dist/menu/context.svelte.d.ts +47 -0
  115. package/dist/menu/context.svelte.js +21 -0
  116. package/dist/menu/index.d.ts +7 -0
  117. package/dist/menu/index.js +7 -0
  118. package/dist/portal/InternalPortal.svelte +22 -33
  119. package/dist/portal/InternalPortal.svelte.d.ts +16 -7
  120. package/dist/portal/Portal.svelte +4 -8
  121. package/dist/portal/Portal.svelte.d.ts +6 -6
  122. package/dist/portal/PortalGroup.svelte +5 -6
  123. package/dist/portal/PortalGroup.svelte.d.ts +16 -7
  124. package/dist/switch/Switch.svelte +11 -17
  125. package/dist/switch/Switch.svelte.d.ts +23 -6
  126. package/dist/switch/SwitchGroup.svelte +7 -8
  127. package/dist/switch/SwitchGroup.svelte.d.ts +14 -7
  128. package/dist/tabs/Tab.svelte +9 -14
  129. package/dist/tabs/Tab.svelte.d.ts +18 -6
  130. package/dist/tabs/TabGroup.svelte +20 -23
  131. package/dist/tabs/TabGroup.svelte.d.ts +19 -6
  132. package/dist/tabs/TabList.svelte +5 -7
  133. package/dist/tabs/TabList.svelte.d.ts +13 -6
  134. package/dist/tabs/TabPanel.svelte +30 -32
  135. package/dist/tabs/TabPanel.svelte.d.ts +19 -6
  136. package/dist/tabs/TabPanels.svelte +5 -6
  137. package/dist/tabs/TabPanels.svelte.d.ts +13 -6
  138. package/dist/transition/InternalTransitionChild.svelte +178 -0
  139. package/dist/transition/InternalTransitionChild.svelte.d.ts +55 -0
  140. package/dist/transition/Transition.svelte +89 -0
  141. package/dist/transition/Transition.svelte.d.ts +42 -0
  142. package/dist/transition/TransitionChild.svelte +16 -0
  143. package/dist/transition/TransitionChild.svelte.d.ts +44 -0
  144. package/dist/transition/context.svelte.d.ts +64 -0
  145. package/dist/transition/context.svelte.js +120 -0
  146. package/dist/transition/index.d.ts +2 -0
  147. package/dist/transition/index.js +2 -0
  148. package/dist/utils/ElementOrComponent.svelte +26 -0
  149. package/dist/utils/ElementOrComponent.svelte.d.ts +56 -0
  150. package/dist/utils/Generic.svelte +44 -0
  151. package/dist/utils/Generic.svelte.d.ts +35 -0
  152. package/dist/utils/StableCollection.svelte +1 -1
  153. package/dist/utils/StableCollection.svelte.d.ts +4 -1
  154. package/dist/utils/active-element-history.d.ts +1 -0
  155. package/dist/utils/active-element-history.js +35 -0
  156. package/dist/utils/alternative-types.d.ts +21 -0
  157. package/dist/utils/alternative-types.js +1 -0
  158. package/dist/utils/class-names.d.ts +1 -0
  159. package/dist/utils/class-names.js +10 -0
  160. package/dist/utils/focus-management.d.ts +2 -1
  161. package/dist/utils/focus-management.js +13 -13
  162. package/dist/utils/on-document-ready.d.ts +1 -0
  163. package/dist/utils/on-document-ready.js +12 -0
  164. package/dist/utils/render.d.ts +3 -0
  165. package/dist/utils/render.js +63 -0
  166. package/dist/utils/state.d.ts +7 -1
  167. package/dist/utils/state.js +10 -6
  168. package/dist/utils/types.d.ts +14 -17
  169. package/dist/utils/types.js +0 -5
  170. package/package.json +26 -25
  171. package/dist/tabs/Button.svelte +0 -65
  172. package/dist/tabs/Button.svelte.d.ts +0 -39
  173. package/dist/utils/close.d.ts +0 -2
  174. package/dist/utils/close.js +0 -3
@@ -0,0 +1,21 @@
1
+ import { getContext } from "svelte";
2
+ export var MenuStates;
3
+ (function (MenuStates) {
4
+ MenuStates[MenuStates["Open"] = 0] = "Open";
5
+ MenuStates[MenuStates["Closed"] = 1] = "Closed";
6
+ })(MenuStates || (MenuStates = {}));
7
+ export var ActivationTrigger;
8
+ (function (ActivationTrigger) {
9
+ ActivationTrigger[ActivationTrigger["Pointer"] = 0] = "Pointer";
10
+ ActivationTrigger[ActivationTrigger["Other"] = 1] = "Other";
11
+ })(ActivationTrigger || (ActivationTrigger = {}));
12
+ export function useMenuContext(component) {
13
+ const context = getContext("MenuContext");
14
+ if (!context) {
15
+ let err = new Error(`<${component} /> is missing a parent <Menu /> component.`);
16
+ if (Error.captureStackTrace)
17
+ Error.captureStackTrace(err, useMenuContext);
18
+ throw err;
19
+ }
20
+ return context;
21
+ }
@@ -0,0 +1,7 @@
1
+ export { default as Menu, type MenuProps, type MenuChildren } from "./Menu.svelte";
2
+ export { default as MenuButton, type MenuButtonProps, type MenuButtonChildren } from "./MenuButton.svelte";
3
+ export { default as MenuHeading, type MenuHeadingProps, type MenuHeadingChildren } from "./MenuHeading.svelte";
4
+ export { default as MenuItem, type MenuItemProps, type MenuItemChildren } from "./MenuItem.svelte";
5
+ export { default as MenuItems, type MenuItemsProps, type MenuItemsChildren } from "./MenuItems.svelte";
6
+ export { default as MenuSection, type MenuSectionProps, type MenuSectionChildren } from "./MenuSection.svelte";
7
+ export { default as MenuSeparator, type MenuSeparatorProps, type MenuSeparatorChildren } from "./MenuSeparator.svelte";
@@ -0,0 +1,7 @@
1
+ export { default as Menu } from "./Menu.svelte";
2
+ export { default as MenuButton } from "./MenuButton.svelte";
3
+ export { default as MenuHeading } from "./MenuHeading.svelte";
4
+ export { default as MenuItem } from "./MenuItem.svelte";
5
+ export { default as MenuItems } from "./MenuItems.svelte";
6
+ export { default as MenuSection } from "./MenuSection.svelte";
7
+ export { default as MenuSeparator } from "./MenuSeparator.svelte";
@@ -1,15 +1,15 @@
1
- <script lang="ts" context="module">import { usePortalRoot } from "../internal/portal-force-root.svelte.js";
1
+ <script lang="ts" module>import { usePortalRoot } from "../internal/portal-force-root.svelte.js";
2
2
  import { getOwnerDocument } from "../utils/owner.js";
3
3
  import { getContext, onMount, setContext } from "svelte";
4
4
  import { env } from "../utils/env.js";
5
- import Portal from "../internal/Portal.svelte";
6
5
  function usePortalTarget(options) {
7
6
  const { element } = $derived(options);
8
7
  const forceInRoot = usePortalRoot();
9
- const groupTarget = getContext("PortalGroupContext");
8
+ const portalGroupContext = getContext("PortalGroupContext");
9
+ const { target: groupTarget } = $derived(portalGroupContext ?? {});
10
10
  const ownerDocument = $derived(getOwnerDocument(element));
11
11
  const initialTarget = () => {
12
- if (!forceInRoot && groupTarget !== null) return groupTarget.current ?? null;
12
+ if (!forceInRoot?.force && groupTarget) return groupTarget ?? null;
13
13
  if (env.isServer) return null;
14
14
  let existingRoot = ownerDocument?.getElementById("headlessui-portal-root");
15
15
  if (existingRoot) return existingRoot;
@@ -20,15 +20,15 @@ function usePortalTarget(options) {
20
20
  };
21
21
  let target = $state(initialTarget());
22
22
  $effect(() => {
23
- if (target === null) return;
23
+ if (!target) return;
24
24
  if (!ownerDocument?.body.contains(target)) {
25
25
  ownerDocument?.body.appendChild(target);
26
26
  }
27
27
  });
28
28
  $effect(() => {
29
- if (forceInRoot) return;
30
- if (groupTarget === null) return;
31
- target = groupTarget.current;
29
+ if (forceInRoot?.force) return;
30
+ if (!groupTarget) return;
31
+ target = groupTarget;
32
32
  });
33
33
  return {
34
34
  get target() {
@@ -59,38 +59,31 @@ export function useNestedPortals() {
59
59
  setContext("PortalParentContext", context);
60
60
  return context;
61
61
  }
62
- export const DEFAULT_PORTAL_TAG = "svelte:fragment";
62
+ export const DEFAULT_PORTAL_TAG = "div";
63
63
  </script>
64
64
 
65
- <script lang="ts" generics="TTag extends ElementType">let { as = DEFAULT_PORTAL_TAG, children, ...theirProps } = $props();
66
- let internalPortalRootRef = $state(null);
67
- const portalRef = $derived(internalPortalRootRef);
68
- const ownerDocument = $derived(getOwnerDocument(internalPortalRootRef));
65
+ <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_PORTAL_TAG">import ElementOrComponent from "../utils/ElementOrComponent.svelte";
66
+ let { ref = $bindable(), ...theirProps } = $props();
69
67
  const portalTarget = usePortalTarget({
70
68
  get element() {
71
- return internalPortalRootRef;
69
+ return ref ?? null;
72
70
  }
73
71
  });
74
72
  const { target } = $derived(portalTarget);
75
- const element = $derived(env.isServer ? null : ownerDocument?.createElement("div") ?? null);
76
73
  const parent = getContext("PortalParentContext");
77
74
  $effect(() => {
78
- if (!target || !element) return;
79
- if (!target.contains(element)) {
80
- element.setAttribute("data-headlessui-portal", "");
81
- target.appendChild(element);
75
+ if (!target || !ref) return;
76
+ if (ref.parentNode !== target) {
77
+ ref.setAttribute("data-headlessui-portal", "");
78
+ target.appendChild(ref);
82
79
  }
83
80
  });
84
- $effect(() => {
85
- if (!element) return;
86
- if (!parent) return;
87
- return parent.register(element);
88
- });
89
81
  onMount(() => {
82
+ if (parent) parent.register(ref);
90
83
  return () => {
91
- if (!target || !element) return;
92
- if (element instanceof Node && target.contains(element)) {
93
- target.removeChild(element);
84
+ if (!target || !ref) return;
85
+ if (ref instanceof Node && target.contains(ref)) {
86
+ target.removeChild(ref);
94
87
  }
95
88
  if (target.childNodes.length <= 0) {
96
89
  target.parentElement?.removeChild(target);
@@ -99,10 +92,6 @@ onMount(() => {
99
92
  });
100
93
  </script>
101
94
 
102
- {#if target && element}
103
- <Portal target={element}>
104
- <svelte:element this={as} bind:this={internalPortalRootRef} {...theirProps}>
105
- {#if children}{@render children({})}{/if}
106
- </svelte:element>
107
- </Portal>
95
+ {#if target}
96
+ <ElementOrComponent {theirProps} defaultTag={DEFAULT_PORTAL_TAG} name="InternalPortal" bind:ref />
108
97
  {/if}
@@ -5,30 +5,39 @@ type PortalParentContext = {
5
5
  readonly portals: HTMLElement[];
6
6
  };
7
7
  export declare function useNestedPortals(): PortalParentContext;
8
- export declare const DEFAULT_PORTAL_TAG = "svelte:fragment";
8
+ export declare const DEFAULT_PORTAL_TAG = "div";
9
9
  type PortalRenderPropArg = {};
10
10
  type PortalPropsWeControl = never;
11
11
  export type PortalProps<TTag extends ElementType = typeof DEFAULT_PORTAL_TAG> = Props<TTag, PortalRenderPropArg, PortalPropsWeControl, {
12
12
  enabled?: boolean;
13
13
  }>;
14
- declare class __sveltets_Render<TTag extends ElementType> {
15
- props(): PortalProps<TTag>;
14
+ declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_PORTAL_TAG> {
15
+ props(): {
16
+ as?: TTag | undefined;
17
+ } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("as" | "children" | "refName" | "class") | "enabled"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
18
+ children?: import("../utils/types.js").Children<PortalRenderPropArg> | undefined;
19
+ ref?: HTMLElement;
20
+ } & (true extends (import("../utils/types.js").PropsOf<TTag> extends infer T_1 ? T_1 extends import("../utils/types.js").PropsOf<TTag> ? T_1 extends never ? never : "class" extends infer T_2 ? T_2 extends "class" ? T_2 extends keyof T_1 ? true : never : never : never : never : never) ? {
21
+ class?: import("../utils/types.js").PropsOf<TTag>["class"] | ((bag: PortalRenderPropArg) => string) | undefined;
22
+ } : {}) & {
23
+ enabled?: boolean;
24
+ };
16
25
  events(): {} & {
17
26
  [evt: string]: CustomEvent<any>;
18
27
  };
19
28
  slots(): {};
20
- bindings(): "";
29
+ bindings(): "ref";
21
30
  exports(): {};
22
31
  }
23
32
  interface $$IsomorphicComponent {
24
- new <TTag extends ElementType>(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']>> & {
33
+ new <TTag extends ElementType = typeof DEFAULT_PORTAL_TAG>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TTag>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TTag>['props']>, ReturnType<__sveltets_Render<TTag>['events']>, ReturnType<__sveltets_Render<TTag>['slots']>> & {
25
34
  $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
26
35
  } & ReturnType<__sveltets_Render<TTag>['exports']>;
27
- <TTag extends ElementType>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
36
+ <TTag extends ElementType = typeof DEFAULT_PORTAL_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
28
37
  $$events?: ReturnType<__sveltets_Render<TTag>['events']>;
29
38
  }): ReturnType<__sveltets_Render<TTag>['exports']>;
30
39
  z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
31
40
  }
32
41
  declare const InternalPortal: $$IsomorphicComponent;
33
- type InternalPortal<TTag extends ElementType> = InstanceType<typeof InternalPortal<TTag>>;
42
+ type InternalPortal<TTag extends ElementType = typeof DEFAULT_PORTAL_TAG> = InstanceType<typeof InternalPortal<TTag>>;
34
43
  export default InternalPortal;
@@ -1,11 +1,7 @@
1
- <script lang="ts" generics="TTag extends ElementType">import InternalPortal, { DEFAULT_PORTAL_TAG } from "./InternalPortal.svelte";
2
- let { as = DEFAULT_PORTAL_TAG, enabled = true, children, ...theirProps } = $props();
1
+ <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_PORTAL_TAG">import InternalPortal, { DEFAULT_PORTAL_TAG } from "./InternalPortal.svelte";
2
+ let { ref = $bindable(), enabled = true, ...theirProps } = $props();
3
3
  </script>
4
4
 
5
5
  {#if enabled}
6
- <InternalPortal {...theirProps} />
7
- {:else}
8
- <svelte:element this={as} {...theirProps}>
9
- {#if children}{@render children({})}{/if}
10
- </svelte:element>
11
- {/if}
6
+ <InternalPortal {...theirProps} bind:ref />
7
+ {:else if theirProps.children}{@render theirProps.children()}{/if}
@@ -1,23 +1,23 @@
1
1
  import type { ElementType } from "../utils/types.js";
2
- import { type PortalProps } from "./InternalPortal.svelte";
3
- declare class __sveltets_Render<TTag extends ElementType> {
2
+ import { DEFAULT_PORTAL_TAG, type PortalProps } from "./InternalPortal.svelte";
3
+ declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_PORTAL_TAG> {
4
4
  props(): PortalProps<TTag>;
5
5
  events(): {} & {
6
6
  [evt: string]: CustomEvent<any>;
7
7
  };
8
8
  slots(): {};
9
- bindings(): "";
9
+ bindings(): "ref";
10
10
  exports(): {};
11
11
  }
12
12
  interface $$IsomorphicComponent {
13
- new <TTag extends ElementType>(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']>> & {
13
+ new <TTag extends ElementType = typeof DEFAULT_PORTAL_TAG>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TTag>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TTag>['props']>, ReturnType<__sveltets_Render<TTag>['events']>, ReturnType<__sveltets_Render<TTag>['slots']>> & {
14
14
  $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
15
15
  } & ReturnType<__sveltets_Render<TTag>['exports']>;
16
- <TTag extends ElementType>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
16
+ <TTag extends ElementType = typeof DEFAULT_PORTAL_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
17
17
  $$events?: ReturnType<__sveltets_Render<TTag>['events']>;
18
18
  }): ReturnType<__sveltets_Render<TTag>['exports']>;
19
19
  z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
20
20
  }
21
21
  declare const Portal: $$IsomorphicComponent;
22
- type Portal<TTag extends ElementType> = InstanceType<typeof Portal<TTag>>;
22
+ type Portal<TTag extends ElementType = typeof DEFAULT_PORTAL_TAG> = InstanceType<typeof Portal<TTag>>;
23
23
  export default Portal;
@@ -1,8 +1,9 @@
1
- <script lang="ts" context="module">const DEFAULT_GROUP_TAG = "svelte:fragment";
1
+ <script lang="ts" module>const DEFAULT_GROUP_TAG = "svelte:fragment";
2
2
  </script>
3
3
 
4
- <script lang="ts" generics="TTag extends ElementType">import { setContext } from "svelte";
5
- let { as = DEFAULT_GROUP_TAG, target, children, ...theirProps } = $props();
4
+ <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_GROUP_TAG">import ElementOrComponent from "../utils/ElementOrComponent.svelte";
5
+ import { setContext } from "svelte";
6
+ let { ref = $bindable(), target, ...theirProps } = $props();
6
7
  setContext("PortalGroupContext", {
7
8
  get target() {
8
9
  return target;
@@ -10,6 +11,4 @@ setContext("PortalGroupContext", {
10
11
  });
11
12
  </script>
12
13
 
13
- <svelte:element this={as} {...theirProps}>
14
- {#if children}{@render children({})}{/if}
15
- </svelte:element>
14
+ <ElementOrComponent {theirProps} defaultTag={DEFAULT_GROUP_TAG} name="PortalGroup" bind:ref />
@@ -3,29 +3,38 @@ declare const DEFAULT_GROUP_TAG = "svelte:fragment";
3
3
  type GroupRenderPropArg = {};
4
4
  type GroupPropsWeControl = never;
5
5
  export type PortalGroupContext = {
6
- readonly element: HTMLElement | null;
6
+ readonly target: HTMLElement | null;
7
7
  };
8
8
  export type PortalGroupProps<TTag extends ElementType = typeof DEFAULT_GROUP_TAG> = Props<TTag, GroupRenderPropArg, GroupPropsWeControl, {
9
9
  target: HTMLElement | null;
10
10
  }>;
11
- declare class __sveltets_Render<TTag extends ElementType> {
12
- props(): PortalGroupProps<TTag>;
11
+ declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_GROUP_TAG> {
12
+ props(): {
13
+ as?: TTag | undefined;
14
+ } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("as" | "children" | "refName" | "class") | "target"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
15
+ children?: import("../utils/types.js").Children<GroupRenderPropArg> | undefined;
16
+ ref?: HTMLElement;
17
+ } & (true extends (import("../utils/types.js").PropsOf<TTag> extends infer T_1 ? T_1 extends import("../utils/types.js").PropsOf<TTag> ? T_1 extends never ? never : "class" extends infer T_2 ? T_2 extends "class" ? T_2 extends keyof T_1 ? true : never : never : never : never : never) ? {
18
+ class?: import("../utils/types.js").PropsOf<TTag>["class"] | ((bag: GroupRenderPropArg) => string) | undefined;
19
+ } : {}) & {
20
+ target: HTMLElement | null;
21
+ };
13
22
  events(): {} & {
14
23
  [evt: string]: CustomEvent<any>;
15
24
  };
16
25
  slots(): {};
17
- bindings(): "";
26
+ bindings(): "ref";
18
27
  exports(): {};
19
28
  }
20
29
  interface $$IsomorphicComponent {
21
- new <TTag extends ElementType>(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
+ new <TTag extends ElementType = typeof DEFAULT_GROUP_TAG>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TTag>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TTag>['props']>, ReturnType<__sveltets_Render<TTag>['events']>, ReturnType<__sveltets_Render<TTag>['slots']>> & {
22
31
  $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
23
32
  } & ReturnType<__sveltets_Render<TTag>['exports']>;
24
- <TTag extends ElementType>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
33
+ <TTag extends ElementType = typeof DEFAULT_GROUP_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
25
34
  $$events?: ReturnType<__sveltets_Render<TTag>['events']>;
26
35
  }): ReturnType<__sveltets_Render<TTag>['exports']>;
27
36
  z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
28
37
  }
29
38
  declare const PortalGroup: $$IsomorphicComponent;
30
- type PortalGroup<TTag extends ElementType> = InstanceType<typeof PortalGroup<TTag>>;
39
+ type PortalGroup<TTag extends ElementType = typeof DEFAULT_GROUP_TAG> = InstanceType<typeof PortalGroup<TTag>>;
31
40
  export default PortalGroup;
@@ -1,27 +1,26 @@
1
- <script lang="ts" context="module">const DEFAULT_SWITCH_TAG = "button";
1
+ <script lang="ts" module>const DEFAULT_SWITCH_TAG = "button";
2
2
  </script>
3
3
 
4
- <script lang="ts" generics="TTag extends ElementType">import { useId } from "../hooks/use-id.js";
4
+ <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_SWITCH_TAG">import { useId } from "../hooks/use-id.js";
5
5
  import { useDisabled } from "../hooks/use-disabled.js";
6
6
  import { useProvidedId } from "../internal/id.js";
7
7
  import { getContext } from "svelte";
8
- import { useControllable } from "../hooks/use-controllable.svelte.js";
9
8
  import { useDisposables } from "../utils/disposables.js";
10
9
  import { attemptSubmit } from "../utils/form.js";
11
- import { useLabelledBy } from "../label/Label.svelte";
12
- import { useDescribedBy } from "../description/Description.svelte";
10
+ import { useLabelledBy } from "../label/context.svelte.js";
11
+ import { useDescribedBy } from "../description/context.svelte.js";
13
12
  import { mergeProps } from "../utils/render.js";
14
13
  import { useResolveButtonType } from "../hooks/use-resolve-button-type.svelte.js";
15
14
  import { useFocusRing } from "../hooks/use-focus-ring.svelte.js";
16
15
  import { useHover } from "../hooks/use-hover.svelte.js";
17
16
  import { useActivePress } from "../hooks/use-active-press.svelte.js";
18
- import { stateFromSlot } from "../utils/state.js";
19
17
  import FormFields from "../internal/FormFields.svelte";
18
+ import ElementOrComponent from "../utils/ElementOrComponent.svelte";
20
19
  const internalId = useId();
21
20
  let providedId = useProvidedId();
22
21
  let { value: providedDisabled } = $derived(useDisabled());
23
22
  let {
24
- as = DEFAULT_SWITCH_TAG,
23
+ ref = $bindable(),
25
24
  id: ownId,
26
25
  disabled: ownDisabled,
27
26
  defaultChecked,
@@ -32,17 +31,14 @@ let {
32
31
  form,
33
32
  autofocus = false,
34
33
  tabIndex,
35
- children,
36
34
  ...theirProps
37
35
  } = $props();
38
36
  const id = $derived(ownId || providedId || `headlessui-switch-${internalId}`);
39
37
  const disabled = $derived(ownDisabled || providedDisabled || false);
40
38
  const groupContext = getContext("GroupContext");
41
- let ref = $state(null);
42
39
  $effect(() => {
43
- if (groupContext) groupContext.switchElement = ref;
40
+ if (groupContext) groupContext.switchElement = ref ?? null;
44
41
  });
45
- $inspect(providedDisabled);
46
42
  const d = useDisposables();
47
43
  let changing = $state(false);
48
44
  const toggle = () => {
@@ -100,7 +96,7 @@ const slot = $derived({
100
96
  });
101
97
  const buttonType = useResolveButtonType({
102
98
  get props() {
103
- return { type: theirProps.type, as };
99
+ return { type: theirProps.type, as: theirProps.as };
104
100
  },
105
101
  get ref() {
106
102
  return { current: ref };
@@ -124,8 +120,7 @@ const ourProps = $derived(
124
120
  },
125
121
  focusProps,
126
122
  hoverProps,
127
- pressProps,
128
- stateFromSlot(slot)
123
+ pressProps
129
124
  )
130
125
  );
131
126
  const reset = () => {
@@ -144,6 +139,5 @@ const reset = () => {
144
139
  onReset={reset}
145
140
  />
146
141
  {/if}
147
- <svelte:element this={as} {...ourProps} {...theirProps}>
148
- {#if children}{@render children(slot)}{/if}
149
- </svelte:element>
142
+
143
+ <ElementOrComponent {ourProps} {theirProps} {slot} defaultTag={DEFAULT_SWITCH_TAG} name="Switch" bind:ref />
@@ -21,24 +21,41 @@ export type SwitchProps<TTag extends ElementType = typeof DEFAULT_SWITCH_TAG> =
21
21
  disabled?: boolean;
22
22
  tabIndex?: number;
23
23
  }>;
24
- declare class __sveltets_Render<TTag extends ElementType> {
25
- props(): SwitchProps<TTag>;
24
+ declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_SWITCH_TAG> {
25
+ props(): {
26
+ as?: TTag | undefined;
27
+ } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, "form" | ("as" | "children" | "refName" | "class") | "disabled" | "autofocus" | "name" | "value" | "checked" | "onchange" | "tabIndex" | "defaultChecked" | SwitchPropsWeControl> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
28
+ children?: import("../utils/types.js").Children<SwitchRenderPropArg> | undefined;
29
+ ref?: HTMLElement;
30
+ } & (true extends (import("../utils/types.js").PropsOf<TTag> extends infer T_1 ? T_1 extends import("../utils/types.js").PropsOf<TTag> ? T_1 extends never ? never : "class" extends infer T_2 ? T_2 extends "class" ? T_2 extends keyof T_1 ? true : never : never : never : never : never) ? {
31
+ class?: import("../utils/types.js").PropsOf<TTag>["class"] | ((bag: SwitchRenderPropArg) => string) | undefined;
32
+ } : {}) & {
33
+ checked?: boolean;
34
+ defaultChecked?: boolean;
35
+ onchange?(checked: boolean): void;
36
+ name?: string;
37
+ value?: string;
38
+ form?: string;
39
+ autofocus?: boolean;
40
+ disabled?: boolean;
41
+ tabIndex?: number;
42
+ };
26
43
  events(): {} & {
27
44
  [evt: string]: CustomEvent<any>;
28
45
  };
29
46
  slots(): {};
30
- bindings(): "checked";
47
+ bindings(): "ref" | "checked";
31
48
  exports(): {};
32
49
  }
33
50
  interface $$IsomorphicComponent {
34
- new <TTag extends ElementType>(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']>> & {
51
+ new <TTag extends ElementType = typeof DEFAULT_SWITCH_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']>> & {
35
52
  $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
36
53
  } & ReturnType<__sveltets_Render<TTag>['exports']>;
37
- <TTag extends ElementType>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
54
+ <TTag extends ElementType = typeof DEFAULT_SWITCH_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
38
55
  $$events?: ReturnType<__sveltets_Render<TTag>['events']>;
39
56
  }): ReturnType<__sveltets_Render<TTag>['exports']>;
40
57
  z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
41
58
  }
42
59
  declare const Switch: $$IsomorphicComponent;
43
- type Switch<TTag extends ElementType> = InstanceType<typeof Switch<TTag>>;
60
+ type Switch<TTag extends ElementType = typeof DEFAULT_SWITCH_TAG> = InstanceType<typeof Switch<TTag>>;
44
61
  export default Switch;
@@ -1,9 +1,10 @@
1
- <script lang="ts" context="module">const DEFAULT_GROUP_TAG = "svelte:fragment";
1
+ <script lang="ts" module>const DEFAULT_GROUP_TAG = "svelte:fragment";
2
2
  </script>
3
3
 
4
- <script lang="ts" generics="TTag extends ElementType">import { setContext } from "svelte";
5
- import { useLabels } from "../label/Label.svelte";
6
- import { useDescriptions } from "../description/Description.svelte";
4
+ <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_GROUP_TAG">import { setContext } from "svelte";
5
+ import { useLabels } from "../label/context.svelte.js";
6
+ import { useDescriptions } from "../description/context.svelte.js";
7
+ import ElementOrComponent from "../utils/ElementOrComponent.svelte";
7
8
  let switchElement = $state(null);
8
9
  useLabels({
9
10
  name: "SwitchGroup",
@@ -30,9 +31,7 @@ setContext("GroupContext", {
30
31
  switchElement = element;
31
32
  }
32
33
  });
33
- const { as = DEFAULT_GROUP_TAG, children, ...theirProps } = $props();
34
+ let { ref = $bindable(), ...theirProps } = $props();
34
35
  </script>
35
36
 
36
- <svelte:element this={as} {...theirProps}>
37
- {#if children}{@render children({})}{/if}
38
- </svelte:element>
37
+ <ElementOrComponent {theirProps} defaultTag={DEFAULT_GROUP_TAG} name="SwitchGroup" bind:ref />
@@ -2,26 +2,33 @@ import type { ElementType, Props } from "../utils/types.js";
2
2
  declare const DEFAULT_GROUP_TAG = "svelte:fragment";
3
3
  export type SwitchGroupProps<TTag extends ElementType = typeof DEFAULT_GROUP_TAG> = Props<TTag>;
4
4
  export type GroupContext = {
5
- switchElement: HTMLButtonElement | null;
5
+ switchElement: HTMLElement | null;
6
6
  };
7
- declare class __sveltets_Render<TTag extends ElementType> {
8
- props(): SwitchGroupProps<TTag>;
7
+ declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_GROUP_TAG> {
8
+ props(): {
9
+ as?: TTag | undefined;
10
+ } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, "as" | "children" | "refName" | "class"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
11
+ children?: import("../utils/types.js").Children<{}> | undefined;
12
+ ref?: HTMLElement;
13
+ } & (true extends (import("../utils/types.js").PropsOf<TTag> extends infer T_1 ? T_1 extends import("../utils/types.js").PropsOf<TTag> ? T_1 extends never ? never : "class" extends infer T_2 ? T_2 extends "class" ? T_2 extends keyof T_1 ? true : never : never : never : never : never) ? {
14
+ class?: import("../utils/types.js").PropsOf<TTag>["class"] | ((bag: {}) => string) | undefined;
15
+ } : {});
9
16
  events(): {} & {
10
17
  [evt: string]: CustomEvent<any>;
11
18
  };
12
19
  slots(): {};
13
- bindings(): "";
20
+ bindings(): "ref";
14
21
  exports(): {};
15
22
  }
16
23
  interface $$IsomorphicComponent {
17
- new <TTag extends ElementType>(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
+ new <TTag extends ElementType = typeof DEFAULT_GROUP_TAG>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TTag>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TTag>['props']>, ReturnType<__sveltets_Render<TTag>['events']>, ReturnType<__sveltets_Render<TTag>['slots']>> & {
18
25
  $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
19
26
  } & ReturnType<__sveltets_Render<TTag>['exports']>;
20
- <TTag extends ElementType>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
27
+ <TTag extends ElementType = typeof DEFAULT_GROUP_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
21
28
  $$events?: ReturnType<__sveltets_Render<TTag>['events']>;
22
29
  }): ReturnType<__sveltets_Render<TTag>['exports']>;
23
30
  z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
24
31
  }
25
32
  declare const SwitchGroup: $$IsomorphicComponent;
26
- type SwitchGroup<TTag extends ElementType> = InstanceType<typeof SwitchGroup<TTag>>;
33
+ type SwitchGroup<TTag extends ElementType = typeof DEFAULT_GROUP_TAG> = InstanceType<typeof SwitchGroup<TTag>>;
27
34
  export default SwitchGroup;
@@ -1,7 +1,7 @@
1
- <script lang="ts" context="module">const DEFAULT_TAB_TAG = "button";
1
+ <script lang="ts" module>const DEFAULT_TAB_TAG = "button";
2
2
  </script>
3
3
 
4
- <script lang="ts" generics="TTag extends ElementType">import { useId } from "../hooks/use-id.js";
4
+ <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_TAB_TAG">import { useId } from "../hooks/use-id.js";
5
5
  import { useActions, useData } from "./TabGroup.svelte";
6
6
  import { useStableCollectionIndex } from "../utils/StableCollection.svelte";
7
7
  import { Focus, focusIn, FocusResult } from "../utils/focus-management.js";
@@ -11,28 +11,26 @@ import { microTask } from "../utils/microTask.js";
11
11
  import { useActivePress } from "../hooks/use-active-press.svelte.js";
12
12
  import { useFocusRing } from "../hooks/use-focus-ring.svelte.js";
13
13
  import { useResolveButtonType } from "../hooks/use-resolve-button-type.svelte.js";
14
- import { stateFromSlot } from "../utils/state.js";
15
14
  import { onMount } from "svelte";
16
15
  import { useHover } from "../hooks/use-hover.svelte.js";
17
16
  import { mergeProps } from "../utils/render.js";
17
+ import ElementOrComponent from "../utils/ElementOrComponent.svelte";
18
18
  const internalId = useId();
19
- const {
20
- as,
19
+ let {
20
+ ref = $bindable(),
21
21
  id = `headlessui-tabs-tab-${internalId}`,
22
22
  disabled = false,
23
23
  autofocus = false,
24
- children,
25
24
  ...theirProps
26
25
  } = $props();
27
26
  const data = useData("Tab");
28
27
  const { orientation, activation, selectedIndex, tabs, panels } = $derived(data);
29
28
  const actions = useActions("Tab");
30
- let ref = $state();
31
29
  const tabRef = $derived({ current: ref });
32
30
  onMount(() => actions.registerTab(tabRef));
33
31
  const mySSRIndex = useStableCollectionIndex("tabs");
34
32
  const myIndex = $derived.by(() => {
35
- const index = tabs.findIndex((tab) => $state.is(tab, tabRef));
33
+ const index = tabs.findIndex((tab) => tab === tabRef);
36
34
  return index === -1 ? mySSRIndex : index;
37
35
  });
38
36
  const selected = $derived(myIndex === selectedIndex);
@@ -127,7 +125,7 @@ const slot = $derived({
127
125
  });
128
126
  const resolvedType = useResolveButtonType({
129
127
  get props() {
130
- return { type: theirProps.type, as };
128
+ return { type: theirProps.type, as: theirProps.as };
131
129
  },
132
130
  get ref() {
133
131
  return tabRef;
@@ -150,12 +148,9 @@ const ourProps = $derived(
150
148
  },
151
149
  focusProps,
152
150
  hoverProps,
153
- pressProps,
154
- stateFromSlot(slot)
151
+ pressProps
155
152
  )
156
153
  );
157
154
  </script>
158
155
 
159
- <svelte:element this={as ?? DEFAULT_TAB_TAG} bind:this={ref} {...ourProps} {...theirProps}>
160
- {#if children}{@render children(slot)}{/if}
161
- </svelte:element>
156
+ <ElementOrComponent {ourProps} {theirProps} {slot} defaultTag={DEFAULT_TAB_TAG} name="Tab" bind:ref />
@@ -10,27 +10,39 @@ type TabRenderPropArg = {
10
10
  };
11
11
  type TabPropsWeControl = "aria-controls" | "aria-selected" | "role" | "tabIndex";
12
12
  export type TabProps<TTag extends ElementType = typeof DEFAULT_TAB_TAG> = Props<TTag, TabRenderPropArg, TabPropsWeControl, {
13
+ id?: string;
13
14
  autofocus?: boolean;
14
15
  disabled?: boolean;
15
16
  }>;
16
- declare class __sveltets_Render<TTag extends ElementType> {
17
- props(): TabProps<TTag>;
17
+ declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_TAB_TAG> {
18
+ props(): {
19
+ as?: TTag | undefined;
20
+ } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("as" | "children" | "refName" | "class") | "disabled" | "autofocus" | "id" | TabPropsWeControl> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
21
+ children?: import("../utils/types.js").Children<TabRenderPropArg> | undefined;
22
+ ref?: HTMLElement;
23
+ } & (true extends (import("../utils/types.js").PropsOf<TTag> extends infer T_1 ? T_1 extends import("../utils/types.js").PropsOf<TTag> ? T_1 extends never ? never : "class" extends infer T_2 ? T_2 extends "class" ? T_2 extends keyof T_1 ? true : never : never : never : never : never) ? {
24
+ class?: import("../utils/types.js").PropsOf<TTag>["class"] | ((bag: TabRenderPropArg) => string) | undefined;
25
+ } : {}) & {
26
+ id?: string;
27
+ autofocus?: boolean;
28
+ disabled?: boolean;
29
+ };
18
30
  events(): {} & {
19
31
  [evt: string]: CustomEvent<any>;
20
32
  };
21
33
  slots(): {};
22
- bindings(): "";
34
+ bindings(): "ref";
23
35
  exports(): {};
24
36
  }
25
37
  interface $$IsomorphicComponent {
26
- new <TTag extends ElementType>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TTag>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TTag>['props']>, ReturnType<__sveltets_Render<TTag>['events']>, ReturnType<__sveltets_Render<TTag>['slots']>> & {
38
+ new <TTag extends ElementType = typeof DEFAULT_TAB_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
39
  $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
28
40
  } & ReturnType<__sveltets_Render<TTag>['exports']>;
29
- <TTag extends ElementType>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
41
+ <TTag extends ElementType = typeof DEFAULT_TAB_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
30
42
  $$events?: ReturnType<__sveltets_Render<TTag>['events']>;
31
43
  }): ReturnType<__sveltets_Render<TTag>['exports']>;
32
44
  z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
33
45
  }
34
46
  declare const Tab: $$IsomorphicComponent;
35
- type Tab<TTag extends ElementType> = InstanceType<typeof Tab<TTag>>;
47
+ type Tab<TTag extends ElementType = typeof DEFAULT_TAB_TAG> = InstanceType<typeof Tab<TTag>>;
36
48
  export default Tab;