@pzerelles/headlessui-svelte 2.1.2-next.31 → 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 (123) hide show
  1. package/dist/button/Button.svelte +84 -55
  2. package/dist/button/Button.svelte.d.ts +4 -32
  3. package/dist/checkbox/Checkbox.svelte +177 -121
  4. package/dist/checkbox/Checkbox.svelte.d.ts +14 -32
  5. package/dist/close-button/CloseButton.svelte +10 -7
  6. package/dist/close-button/CloseButton.svelte.d.ts +2 -44
  7. package/dist/data-interactive/DataInteractive.svelte +49 -37
  8. package/dist/data-interactive/DataInteractive.svelte.d.ts +7 -30
  9. package/dist/description/Description.svelte +35 -22
  10. package/dist/description/Description.svelte.d.ts +7 -28
  11. package/dist/dialog/Dialog.svelte +326 -232
  12. package/dist/dialog/Dialog.svelte.d.ts +4 -42
  13. package/dist/dialog/DialogBackdrop.svelte +33 -16
  14. package/dist/dialog/DialogBackdrop.svelte.d.ts +4 -29
  15. package/dist/dialog/DialogPanel.svelte +60 -29
  16. package/dist/dialog/DialogPanel.svelte.d.ts +4 -30
  17. package/dist/dialog/DialogTitle.svelte +51 -24
  18. package/dist/dialog/DialogTitle.svelte.d.ts +6 -27
  19. package/dist/field/Field.svelte +44 -28
  20. package/dist/field/Field.svelte.d.ts +4 -30
  21. package/dist/fieldset/Fieldset.svelte +48 -30
  22. package/dist/fieldset/Fieldset.svelte.d.ts +5 -31
  23. package/dist/focus-trap/FocusTrap.svelte +430 -298
  24. package/dist/focus-trap/FocusTrap.svelte.d.ts +5 -34
  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 +95 -54
  28. package/dist/input/Input.svelte.d.ts +13 -27
  29. package/dist/internal/FloatingProvider.svelte +14 -9
  30. package/dist/internal/FocusSentinel.svelte +49 -40
  31. package/dist/internal/ForcePortalRoot.svelte +7 -3
  32. package/dist/internal/FormFields.svelte +47 -34
  33. package/dist/internal/FormFieldsProvider.svelte +9 -5
  34. package/dist/internal/FormResolver.svelte +25 -16
  35. package/dist/internal/Hidden.svelte +45 -38
  36. package/dist/internal/Hidden.svelte.d.ts +4 -30
  37. package/dist/internal/MainTreeProvider.svelte +90 -37
  38. package/dist/internal/Portal.svelte +18 -14
  39. package/dist/label/Label.svelte +100 -59
  40. package/dist/label/Label.svelte.d.ts +7 -32
  41. package/dist/legend/Legend.svelte +27 -4
  42. package/dist/legend/Legend.svelte.d.ts +4 -3
  43. package/dist/listbox/Listbox.svelte +518 -391
  44. package/dist/listbox/Listbox.svelte.d.ts +11 -35
  45. package/dist/listbox/ListboxButton.svelte +175 -128
  46. package/dist/listbox/ListboxButton.svelte.d.ts +5 -32
  47. package/dist/listbox/ListboxOption.svelte +171 -130
  48. package/dist/listbox/ListboxOption.svelte.d.ts +12 -26
  49. package/dist/listbox/ListboxOptions.svelte +403 -305
  50. package/dist/listbox/ListboxOptions.svelte.d.ts +4 -38
  51. package/dist/listbox/ListboxSelectedOption.svelte +40 -19
  52. package/dist/listbox/ListboxSelectedOption.svelte.d.ts +8 -33
  53. package/dist/menu/Menu.svelte +76 -52
  54. package/dist/menu/Menu.svelte.d.ts +3 -31
  55. package/dist/menu/MenuButton.svelte +158 -118
  56. package/dist/menu/MenuButton.svelte.d.ts +4 -34
  57. package/dist/menu/MenuHeading.svelte +34 -15
  58. package/dist/menu/MenuHeading.svelte.d.ts +4 -31
  59. package/dist/menu/MenuItem.svelte +143 -108
  60. package/dist/menu/MenuItem.svelte.d.ts +5 -32
  61. package/dist/menu/MenuItems.svelte +301 -230
  62. package/dist/menu/MenuItems.svelte.d.ts +4 -38
  63. package/dist/menu/MenuSection.svelte +26 -10
  64. package/dist/menu/MenuSection.svelte.d.ts +5 -29
  65. package/dist/menu/MenuSeparator.svelte +20 -5
  66. package/dist/menu/MenuSeparator.svelte.d.ts +5 -28
  67. package/dist/popover/Popover.svelte +217 -151
  68. package/dist/popover/Popover.svelte.d.ts +4 -30
  69. package/dist/popover/PopoverBackdrop.svelte +71 -42
  70. package/dist/popover/PopoverBackdrop.svelte.d.ts +6 -34
  71. package/dist/popover/PopoverButton.svelte +302 -222
  72. package/dist/popover/PopoverButton.svelte.d.ts +6 -29
  73. package/dist/popover/PopoverGroup.svelte +64 -36
  74. package/dist/popover/PopoverGroup.svelte.d.ts +5 -28
  75. package/dist/popover/PopoverPanel.svelte +335 -248
  76. package/dist/popover/PopoverPanel.svelte.d.ts +5 -36
  77. package/dist/popover/index.d.ts +1 -1
  78. package/dist/portal/InternalPortal.svelte +143 -86
  79. package/dist/portal/InternalPortal.svelte.d.ts +4 -30
  80. package/dist/portal/Portal.svelte +8 -4
  81. package/dist/portal/Portal.svelte.d.ts +2 -18
  82. package/dist/portal/PortalGroup.svelte +23 -10
  83. package/dist/portal/PortalGroup.svelte.d.ts +3 -31
  84. package/dist/select/Select.svelte +100 -69
  85. package/dist/select/Select.svelte.d.ts +5 -32
  86. package/dist/switch/Switch.svelte +181 -133
  87. package/dist/switch/Switch.svelte.d.ts +5 -38
  88. package/dist/switch/SwitchGroup.svelte +45 -32
  89. package/dist/switch/SwitchGroup.svelte.d.ts +7 -28
  90. package/dist/tabs/Tab.svelte +195 -143
  91. package/dist/tabs/Tab.svelte.d.ts +4 -32
  92. package/dist/tabs/TabGroup.svelte +87 -57
  93. package/dist/tabs/TabGroup.svelte.d.ts +4 -34
  94. package/dist/tabs/TabList.svelte +31 -12
  95. package/dist/tabs/TabList.svelte.d.ts +5 -28
  96. package/dist/tabs/TabPanel.svelte +69 -44
  97. package/dist/tabs/TabPanel.svelte.d.ts +4 -34
  98. package/dist/tabs/TabPanels.svelte +19 -8
  99. package/dist/tabs/TabPanels.svelte.d.ts +5 -27
  100. package/dist/textarea/Textarea.svelte +87 -54
  101. package/dist/textarea/Textarea.svelte.d.ts +13 -27
  102. package/dist/transition/InternalTransitionChild.svelte +267 -171
  103. package/dist/transition/InternalTransitionChild.svelte.d.ts +3 -33
  104. package/dist/transition/Transition.svelte +88 -67
  105. package/dist/transition/Transition.svelte.d.ts +3 -36
  106. package/dist/transition/TransitionChild.svelte +31 -12
  107. package/dist/transition/TransitionChild.svelte.d.ts +8 -35
  108. package/dist/transition/context.svelte.js +7 -7
  109. package/dist/utils/DisabledProvider.svelte +7 -3
  110. package/dist/utils/ElementOrComponent.svelte +88 -24
  111. package/dist/utils/ElementOrComponent.svelte.d.ts +32 -27
  112. package/dist/utils/StableCollection.svelte +54 -36
  113. package/dist/utils/floating-ui/svelte/components/FloatingNode.svelte +27 -12
  114. package/dist/utils/floating-ui/svelte/components/FloatingTree.svelte +88 -44
  115. package/dist/utils/state.js +4 -4
  116. package/dist/utils/types.d.ts +14 -12
  117. package/package.json +12 -12
  118. package/dist/combobox/Combobox.svelte +0 -6
  119. package/dist/combobox/Combobox.svelte.d.ts +0 -50
  120. package/dist/utils/Generic.svelte +0 -46
  121. package/dist/utils/Generic.svelte.d.ts +0 -32
  122. package/dist/utils/alternative-types.d.ts +0 -20
  123. package/dist/utils/alternative-types.js +0 -1
@@ -1,33 +1,10 @@
1
- import type { ElementType, Props } from "../utils/types.js";
1
+ import type { Props } from "../utils/types.js";
2
2
  declare const DEFAULT_LIST_TAG: "div";
3
3
  type ListRenderPropArg = {
4
4
  selectedIndex: number;
5
5
  };
6
- type ListPropsWeControl = "aria-orientation" | "role";
7
- export type TabListProps<TTag extends ElementType = typeof DEFAULT_LIST_TAG> = Props<TTag, ListRenderPropArg, ListPropsWeControl, {}>;
8
- declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_LIST_TAG> {
9
- props(): {
10
- as?: TTag | undefined;
11
- } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("slot" | "as" | "children" | "class" | "ref") | ListPropsWeControl> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
12
- children?: import("svelte").Snippet<[{
13
- slot: ListRenderPropArg;
14
- props: Record<string, any>;
15
- }]> | undefined;
16
- class?: string | ((bag: ListRenderPropArg) => string) | null | undefined;
17
- ref?: HTMLElement;
18
- };
19
- events(): {};
20
- slots(): {};
21
- bindings(): "ref";
22
- exports(): {};
23
- }
24
- interface $$IsomorphicComponent {
25
- new <TTag extends ElementType = typeof DEFAULT_LIST_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']>> & {
26
- $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
27
- } & ReturnType<__sveltets_Render<TTag>['exports']>;
28
- <TTag extends ElementType = typeof DEFAULT_LIST_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
29
- z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
30
- }
31
- declare const TabList: $$IsomorphicComponent;
32
- type TabList<TTag extends ElementType = typeof DEFAULT_LIST_TAG> = InstanceType<typeof TabList<TTag>>;
6
+ export type TabListProps = Props<typeof DEFAULT_LIST_TAG, ListRenderPropArg, {
7
+ element?: HTMLElement;
8
+ }>;
9
+ declare const TabList: import("svelte").Component<TabListProps, {}, "element">;
33
10
  export default TabList;
@@ -1,52 +1,77 @@
1
- <script lang="ts" module>const DEFAULT_PANEL_TAG = "div";
2
- const PanelRenderFeatures = RenderFeatures.RenderStrategy | RenderFeatures.Static;
1
+ <script lang="ts" module>
2
+ import type { Props } from "../utils/types.js"
3
+ import type { SvelteHTMLElements } from "svelte/elements"
4
+
5
+ const DEFAULT_PANEL_TAG = "div" as const
6
+ type PanelRenderPropArg = {
7
+ selected: boolean
8
+ focus: boolean
9
+ }
10
+ type PanelPropsWeControl = "role" | "aria-labelledby"
11
+ const PanelRenderFeatures = RenderFeatures.RenderStrategy | RenderFeatures.Static
12
+
13
+ export type TabPanelProps = Props<
14
+ typeof DEFAULT_PANEL_TAG,
15
+ PanelRenderPropArg,
16
+ PropsForFeatures<typeof PanelRenderFeatures> & { element?: HTMLElement; id?: string; tabIndex?: number }
17
+ >
3
18
  </script>
4
19
 
5
- <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_PANEL_TAG">import { useId } from "../hooks/use-id.js";
6
- import { mergeProps, RenderFeatures } from "../utils/render.js";
7
- import { useStableCollectionIndex } from "../utils/StableCollection.svelte";
8
- import { useFocusRing } from "../hooks/use-focus-ring.svelte.js";
9
- import Hidden from "../internal/Hidden.svelte";
10
- import { onMount } from "svelte";
11
- import ElementOrComponent from "../utils/ElementOrComponent.svelte";
12
- import { useTabs } from "./context.svelte.js";
13
- const internalId = useId();
14
- let {
15
- ref = $bindable(),
16
- id = `headlessui-tabs-panel-${internalId}`,
17
- tabIndex = 0,
18
- ...theirProps
19
- } = $props();
20
- const context = useTabs("TabPanel");
21
- const { selectedIndex, tabs, panels, registerPanel } = $derived(context);
22
- const panelRef = $derived({ current: ref });
23
- onMount(() => registerPanel(panelRef));
24
- const mySSRIndex = useStableCollectionIndex("panels");
25
- const myIndex = $derived.by(() => {
26
- const index = tabs.findIndex((panel) => panel === panelRef);
27
- return index === -1 ? mySSRIndex : index;
28
- });
29
- const selected = $derived(myIndex === selectedIndex);
30
- const { isFocusVisible: focus, focusProps } = $derived(useFocusRing());
31
- const slot = $derived({
32
- selected,
33
- focus
34
- });
35
- const ourProps = $derived(
36
- mergeProps(
37
- {
38
- id,
39
- role: "tabpanel",
40
- "aria-labelledby": tabs[myIndex]?.current?.id,
41
- tabIndex: selected ? 0 : -1
42
- },
43
- focusProps
20
+ <script lang="ts">
21
+ import { useId } from "../hooks/use-id.js"
22
+ import { mergeProps, RenderFeatures, type PropsForFeatures } from "../utils/render.js"
23
+ import { useStableCollectionIndex } from "../utils/StableCollection.svelte"
24
+ import { useFocusRing } from "../hooks/use-focus-ring.svelte.js"
25
+ import Hidden from "../internal/Hidden.svelte"
26
+ import type { MutableRefObject } from "../utils/ref.svelte.js"
27
+ import { onMount } from "svelte"
28
+ import ElementOrComponent from "../utils/ElementOrComponent.svelte"
29
+ import { useTabs } from "./context.svelte.js"
30
+
31
+ const internalId = useId()
32
+ let {
33
+ element = $bindable(),
34
+ id = `headlessui-tabs-panel-${internalId}`,
35
+ tabIndex = 0,
36
+ ...theirProps
37
+ }: TabPanelProps = $props()
38
+ const context = useTabs("TabPanel")
39
+ const { selectedIndex, tabs, panels, registerPanel } = $derived(context)
40
+
41
+ const panelRef = $derived<MutableRefObject<HTMLElement | undefined>>({ current: element })
42
+
43
+ onMount(() => registerPanel(panelRef))
44
+
45
+ const mySSRIndex = useStableCollectionIndex("panels")
46
+
47
+ const myIndex = $derived.by(() => {
48
+ const index = tabs.findIndex((panel) => panel === panelRef)
49
+ return index === -1 ? mySSRIndex : index
50
+ })
51
+
52
+ const selected = $derived(myIndex === selectedIndex)
53
+
54
+ const { isFocusVisible: focus, focusProps } = $derived(useFocusRing())
55
+ const slot = $derived({
56
+ selected,
57
+ focus,
58
+ } satisfies PanelRenderPropArg)
59
+
60
+ const ourProps = $derived(
61
+ mergeProps(
62
+ {
63
+ id,
64
+ role: "tabpanel",
65
+ "aria-labelledby": tabs[myIndex]?.current?.id,
66
+ tabIndex: selected ? 0 : -1,
67
+ },
68
+ focusProps
69
+ )
44
70
  )
45
- );
46
71
  </script>
47
72
 
48
73
  {#if !selected && (theirProps.unmount ?? true) && !(theirProps.static ?? false)}
49
- <Hidden aria-hidden="true" {...ourProps} bind:ref />
74
+ <Hidden aria-hidden="true" {...ourProps} bind:element />
50
75
  {:else}
51
76
  <ElementOrComponent
52
77
  {ourProps}
@@ -55,6 +80,6 @@ const ourProps = $derived(
55
80
  defaultTag={DEFAULT_PANEL_TAG}
56
81
  features={PanelRenderFeatures}
57
82
  name="TabPanel"
58
- bind:ref
83
+ bind:element
59
84
  />
60
85
  {/if}
@@ -1,45 +1,15 @@
1
- import type { ElementType, Props } from "../utils/types.js";
1
+ import type { Props } from "../utils/types.js";
2
2
  declare const DEFAULT_PANEL_TAG: "div";
3
3
  type PanelRenderPropArg = {
4
4
  selected: boolean;
5
5
  focus: boolean;
6
6
  };
7
- type PanelPropsWeControl = "role" | "aria-labelledby";
8
7
  declare const PanelRenderFeatures: number;
9
- export type TabPanelProps<TTag extends ElementType = typeof DEFAULT_PANEL_TAG> = Props<TTag, PanelRenderPropArg, PanelPropsWeControl, PropsForFeatures<typeof PanelRenderFeatures> & {
8
+ export type TabPanelProps = Props<typeof DEFAULT_PANEL_TAG, PanelRenderPropArg, PropsForFeatures<typeof PanelRenderFeatures> & {
9
+ element?: HTMLElement;
10
10
  id?: string;
11
11
  tabIndex?: number;
12
12
  }>;
13
13
  import { type PropsForFeatures } from "../utils/render.js";
14
- declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_PANEL_TAG> {
15
- props(): {
16
- as?: TTag | undefined;
17
- } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("slot" | "as" | "children" | "class" | "ref") | "unmount" | "static" | "id" | "tabIndex" | PanelPropsWeControl> 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("svelte").Snippet<[{
19
- slot: PanelRenderPropArg;
20
- props: Record<string, any>;
21
- }]> | undefined;
22
- class?: string | ((bag: PanelRenderPropArg) => string) | null | undefined;
23
- ref?: HTMLElement;
24
- } & {
25
- static?: boolean | undefined;
26
- unmount?: boolean | undefined;
27
- } & {
28
- id?: string;
29
- tabIndex?: number;
30
- };
31
- events(): {};
32
- slots(): {};
33
- bindings(): "ref";
34
- exports(): {};
35
- }
36
- interface $$IsomorphicComponent {
37
- new <TTag extends ElementType = typeof DEFAULT_PANEL_TAG>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TTag>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TTag>['props']>, ReturnType<__sveltets_Render<TTag>['events']>, ReturnType<__sveltets_Render<TTag>['slots']>> & {
38
- $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
39
- } & ReturnType<__sveltets_Render<TTag>['exports']>;
40
- <TTag extends ElementType = typeof DEFAULT_PANEL_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
41
- z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
42
- }
43
- declare const TabPanel: $$IsomorphicComponent;
44
- type TabPanel<TTag extends ElementType = typeof DEFAULT_PANEL_TAG> = InstanceType<typeof TabPanel<TTag>>;
14
+ declare const TabPanel: import("svelte").Component<TabPanelProps, {}, "element">;
45
15
  export default TabPanel;
@@ -1,12 +1,23 @@
1
- <script lang="ts" module>import ElementOrComponent from "../utils/ElementOrComponent.svelte";
2
- import { useTabs } from "./context.svelte.js";
3
- let DEFAULT_PANELS_TAG = "div";
1
+ <script lang="ts" module>
2
+ import ElementOrComponent from "../utils/ElementOrComponent.svelte"
3
+ import type { Props } from "../utils/types.js"
4
+ import { useTabs } from "./context.svelte.js"
5
+
6
+ let DEFAULT_PANELS_TAG = "div" as const
7
+ type PanelsRenderPropArg = {
8
+ selectedIndex: number
9
+ }
10
+
11
+ export type TabPanelsProps = Props<typeof DEFAULT_PANELS_TAG, PanelsRenderPropArg, { element?: HTMLElement }>
4
12
  </script>
5
13
 
6
- <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_PANELS_TAG">const context = useTabs("TabPanels");
7
- const { selectedIndex } = $derived(context);
8
- const slot = $derived({ selectedIndex });
9
- let { ref = $bindable(), ...theirProps } = $props();
14
+ <script lang="ts">
15
+ const context = useTabs("TabPanels")
16
+ const { selectedIndex } = $derived(context)
17
+
18
+ const slot = $derived({ selectedIndex } satisfies PanelsRenderPropArg)
19
+
20
+ let { element = $bindable(), ...theirProps }: TabPanelsProps = $props()
10
21
  </script>
11
22
 
12
- <ElementOrComponent {theirProps} {slot} defaultTag={DEFAULT_PANELS_TAG} name="TabPanel" bind:ref />
23
+ <ElementOrComponent {theirProps} {slot} defaultTag={DEFAULT_PANELS_TAG} name="TabPanel" bind:element />
@@ -1,32 +1,10 @@
1
- import type { ElementType, Props } from "../utils/types.js";
1
+ import type { Props } from "../utils/types.js";
2
2
  declare let DEFAULT_PANELS_TAG: "div";
3
3
  type PanelsRenderPropArg = {
4
4
  selectedIndex: number;
5
5
  };
6
- export type TabPanelsProps<TTag extends ElementType = typeof DEFAULT_PANELS_TAG> = Props<TTag, PanelsRenderPropArg>;
7
- declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_PANELS_TAG> {
8
- props(): {
9
- as?: TTag | undefined;
10
- } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, "slot" | "as" | "children" | "class" | "ref"> 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("svelte").Snippet<[{
12
- slot: PanelsRenderPropArg;
13
- props: Record<string, any>;
14
- }]> | undefined;
15
- class?: string | ((bag: PanelsRenderPropArg) => string) | null | undefined;
16
- ref?: HTMLElement;
17
- };
18
- events(): {};
19
- slots(): {};
20
- bindings(): "ref";
21
- exports(): {};
22
- }
23
- interface $$IsomorphicComponent {
24
- new <TTag extends ElementType = typeof DEFAULT_PANELS_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
- $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
26
- } & ReturnType<__sveltets_Render<TTag>['exports']>;
27
- <TTag extends ElementType = typeof DEFAULT_PANELS_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
28
- z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
29
- }
30
- declare const TabPanels: $$IsomorphicComponent;
31
- type TabPanels<TTag extends ElementType = typeof DEFAULT_PANELS_TAG> = InstanceType<typeof TabPanels<TTag>>;
6
+ export type TabPanelsProps = Props<typeof DEFAULT_PANELS_TAG, PanelsRenderPropArg, {
7
+ element?: HTMLElement;
8
+ }>;
9
+ declare const TabPanels: import("svelte").Component<TabPanelsProps, {}, "element">;
32
10
  export default TabPanels;
@@ -1,59 +1,92 @@
1
- <script lang="ts" module>const DEFAULT_TEXTAREA_TAG = "textarea";
2
- </script>
1
+ <script lang="ts" module>
2
+ import type { Props } from "../utils/types.js"
3
+ import type { SvelteHTMLElements } from "svelte/elements"
3
4
 
4
- <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_TEXTAREA_TAG, TValue = string">import { htmlid } from "../utils/id.js";
5
- import { useDisabled } from "../hooks/use-disabled.js";
6
- import { useProvidedId } from "../utils/id.js";
7
- import { useLabelledBy } from "../label/context.svelte.js";
8
- import { useDescribedBy } from "../description/context.svelte.js";
9
- import { useHover } from "../hooks/use-hover.svelte.js";
10
- import { useFocusRing } from "../hooks/use-focus-ring.svelte.js";
11
- import { mergeProps } from "../utils/render.js";
12
- import ElementOrComponent from "../utils/ElementOrComponent.svelte";
13
- const internalId = htmlid();
14
- const providedId = useProvidedId();
15
- const providedDisabled = useDisabled();
16
- let {
17
- ref = $bindable(),
18
- value = $bindable(),
19
- id = providedId || `headlessui-input-${internalId}`,
20
- disabled: theirDisabled = false,
21
- autofocus = false,
22
- invalid = false,
23
- ...theirProps
24
- } = $props();
25
- const disabled = $derived(providedDisabled.current || theirDisabled);
26
- const labelledBy = useLabelledBy();
27
- const describedBy = useDescribedBy();
28
- const { isFocusVisible: focus, focusProps } = $derived(
29
- useFocusRing({
30
- get autofocus() {
31
- return autofocus;
32
- }
33
- })
34
- );
35
- const { isHovered: hover, hoverProps } = $derived(
36
- useHover({
37
- get disabled() {
38
- return disabled;
39
- }
40
- })
41
- );
42
- const ourProps = $derived(
43
- mergeProps(
5
+ const DEFAULT_TEXTAREA_TAG = "textarea" as const
6
+
7
+ type TextareaRenderPropArg = {
8
+ disabled: boolean
9
+ hover: boolean
10
+ focus: boolean
11
+ autofocus: boolean
12
+ invalid: boolean
13
+ }
14
+ type TextareaPropsWeControl = "aria-labelledby" | "aria-describedby"
15
+
16
+ export type TextareaProps<TValue = string> = Props<
17
+ typeof DEFAULT_TEXTAREA_TAG,
18
+ TextareaRenderPropArg,
44
19
  {
45
- id,
46
- "aria-labelledby": labelledBy?.value,
47
- "aria-describedby": describedBy?.value,
48
- "aria-invalid": invalid ? "" : void 0,
49
- disabled: disabled || void 0,
50
- autofocus
51
- },
52
- focusProps,
53
- hoverProps
20
+ element?: HTMLElement
21
+ id?: string
22
+ value?: TValue
23
+ disabled?: boolean
24
+ invalid?: boolean
25
+ autofocus?: boolean
26
+ }
27
+ >
28
+ </script>
29
+
30
+ <script lang="ts" generics="TValue = string">
31
+ import { htmlid } from "../utils/id.js"
32
+ import { useDisabled } from "../hooks/use-disabled.js"
33
+ import { useProvidedId } from "../utils/id.js"
34
+ import { useLabelledBy } from "../label/context.svelte.js"
35
+ import { useDescribedBy } from "../description/context.svelte.js"
36
+ import { useHover } from "../hooks/use-hover.svelte.js"
37
+ import { useFocusRing } from "../hooks/use-focus-ring.svelte.js"
38
+ import { mergeProps } from "../utils/render.js"
39
+ import ElementOrComponent from "../utils/ElementOrComponent.svelte"
40
+
41
+ const internalId = htmlid()
42
+ const providedId = useProvidedId()
43
+ const providedDisabled = useDisabled()
44
+
45
+ let {
46
+ element = $bindable(),
47
+ value = $bindable(),
48
+ id = providedId || `headlessui-input-${internalId}`,
49
+ disabled: theirDisabled = false,
50
+ autofocus = false,
51
+ invalid = false,
52
+ ...theirProps
53
+ }: TextareaProps<TValue> = $props()
54
+ const disabled = $derived(providedDisabled.current || theirDisabled)
55
+
56
+ const labelledBy = useLabelledBy()
57
+ const describedBy = useDescribedBy()
58
+
59
+ const { isFocusVisible: focus, focusProps } = $derived(
60
+ useFocusRing({
61
+ get autofocus() {
62
+ return autofocus
63
+ },
64
+ })
54
65
  )
55
- );
56
- const slot = $derived({ disabled, invalid, hover, focus, autofocus });
66
+ const { isHovered: hover, hoverProps } = $derived(
67
+ useHover({
68
+ get disabled() {
69
+ return disabled
70
+ },
71
+ })
72
+ )
73
+
74
+ const ourProps = $derived(
75
+ mergeProps(
76
+ {
77
+ id,
78
+ "aria-labelledby": labelledBy?.value,
79
+ "aria-describedby": describedBy?.value,
80
+ "aria-invalid": invalid ? "" : undefined,
81
+ disabled: disabled || undefined,
82
+ autofocus,
83
+ },
84
+ focusProps,
85
+ hoverProps
86
+ )
87
+ )
88
+
89
+ const slot = $derived({ disabled, invalid, hover, focus, autofocus } satisfies TextareaRenderPropArg)
57
90
  </script>
58
91
 
59
92
  <ElementOrComponent
@@ -62,6 +95,6 @@ const slot = $derived({ disabled, invalid, hover, focus, autofocus });
62
95
  {slot}
63
96
  defaultTag={DEFAULT_TEXTAREA_TAG}
64
97
  name="Textarea"
65
- bind:ref
98
+ bind:element
66
99
  bind:value
67
100
  />
@@ -1,4 +1,4 @@
1
- import type { ElementType, Props, PropsOf } from "../utils/types.js";
1
+ import type { Props } from "../utils/types.js";
2
2
  declare const DEFAULT_TEXTAREA_TAG: "textarea";
3
3
  type TextareaRenderPropArg = {
4
4
  disabled: boolean;
@@ -7,42 +7,28 @@ type TextareaRenderPropArg = {
7
7
  autofocus: boolean;
8
8
  invalid: boolean;
9
9
  };
10
- type TextareaPropsWeControl = "aria-labelledby" | "aria-describedby";
11
- export type TextareaProps<TTag extends ElementType = typeof DEFAULT_TEXTAREA_TAG, TValue = string> = Props<TTag, TextareaRenderPropArg, TextareaPropsWeControl, {
10
+ export type TextareaProps<TValue = string> = Props<typeof DEFAULT_TEXTAREA_TAG, TextareaRenderPropArg, {
11
+ element?: HTMLElement;
12
+ id?: string;
12
13
  value?: TValue;
13
14
  disabled?: boolean;
14
15
  invalid?: boolean;
15
16
  autofocus?: boolean;
16
17
  }>;
17
- declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_TEXTAREA_TAG, TValue = string> {
18
- props(): {
19
- as?: TTag | undefined;
20
- value?: TValue | undefined;
21
- } & (Exclude<keyof PropsOf<TTag>, ("slot" | "as" | "children" | "class" | "ref") | "invalid" | "disabled" | "autofocus" | "value" | TextareaPropsWeControl> extends infer T extends keyof PropsOf<TTag> ? { [P in T]: PropsOf<TTag>[P]; } : never) & {
22
- children?: import("svelte").Snippet<[{
23
- slot: TextareaRenderPropArg;
24
- props: Record<string, any>;
25
- }]> | undefined;
26
- class?: string | ((bag: TextareaRenderPropArg) => string) | null | undefined;
27
- ref?: HTMLElement;
28
- } & {
29
- value?: TValue | undefined;
30
- disabled?: boolean;
31
- invalid?: boolean;
32
- autofocus?: boolean;
33
- };
18
+ declare class __sveltets_Render<TValue = string> {
19
+ props(): TextareaProps<TValue>;
34
20
  events(): {};
35
21
  slots(): {};
36
- bindings(): "ref" | "value";
22
+ bindings(): "element" | "value";
37
23
  exports(): {};
38
24
  }
39
25
  interface $$IsomorphicComponent {
40
- new <TTag extends ElementType = typeof DEFAULT_TEXTAREA_TAG, TValue = string>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TTag, TValue>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TTag, TValue>['props']>, ReturnType<__sveltets_Render<TTag, TValue>['events']>, ReturnType<__sveltets_Render<TTag, TValue>['slots']>> & {
41
- $$bindings?: ReturnType<__sveltets_Render<TTag, TValue>['bindings']>;
42
- } & ReturnType<__sveltets_Render<TTag, TValue>['exports']>;
43
- <TTag extends ElementType = typeof DEFAULT_TEXTAREA_TAG, TValue = string>(internal: unknown, props: ReturnType<__sveltets_Render<TTag, TValue>['props']> & {}): ReturnType<__sveltets_Render<TTag, TValue>['exports']>;
44
- z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
26
+ new <TValue = string>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TValue>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TValue>['props']>, ReturnType<__sveltets_Render<TValue>['events']>, ReturnType<__sveltets_Render<TValue>['slots']>> & {
27
+ $$bindings?: ReturnType<__sveltets_Render<TValue>['bindings']>;
28
+ } & ReturnType<__sveltets_Render<TValue>['exports']>;
29
+ <TValue = string>(internal: unknown, props: ReturnType<__sveltets_Render<TValue>['props']> & {}): ReturnType<__sveltets_Render<TValue>['exports']>;
30
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
45
31
  }
46
32
  declare const Textarea: $$IsomorphicComponent;
47
- type Textarea<TTag extends ElementType = typeof DEFAULT_TEXTAREA_TAG, TValue = string> = InstanceType<typeof Textarea<TTag, TValue>>;
33
+ type Textarea<TValue = string> = InstanceType<typeof Textarea<TValue>>;
48
34
  export default Textarea;