@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,143 +1,191 @@
1
- <script lang="ts" module>const DEFAULT_SWITCH_TAG = "button";
2
- </script>
1
+ <script lang="ts" module>
2
+ import type { Props } from "../utils/types.js"
3
3
 
4
- <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_SWITCH_TAG">import { useId } from "../hooks/use-id.js";
5
- import { useDisabled } from "../hooks/use-disabled.js";
6
- import { useProvidedId } from "../utils/id.js";
7
- import { getContext, tick } from "svelte";
8
- import { attemptSubmit } from "../utils/form.js";
9
- import { useLabelledBy } from "../label/context.svelte.js";
10
- import { useDescribedBy } from "../description/context.svelte.js";
11
- import { mergeProps } from "../utils/render.js";
12
- import { useResolveButtonType } from "../hooks/use-resolve-button-type.svelte.js";
13
- import { useFocusRing } from "../hooks/use-focus-ring.svelte.js";
14
- import { useHover } from "../hooks/use-hover.svelte.js";
15
- import { useActivePress } from "../hooks/use-active-press.svelte.js";
16
- import { useControllable } from "../hooks/use-controllable.svelte.js";
17
- import FormFields from "../internal/FormFields.svelte";
18
- import ElementOrComponent from "../utils/ElementOrComponent.svelte";
19
- const internalId = useId();
20
- const providedId = useProvidedId();
21
- const providedDisabled = useDisabled();
22
- let {
23
- ref = $bindable(),
24
- id = providedId || `headlessui-switch-${internalId}`,
25
- disabled: theirDisabled = false,
26
- checked: controlledChecked = $bindable(),
27
- defaultChecked: _defaultChecked,
28
- onchange: controlledOnChange,
29
- name,
30
- value,
31
- form,
32
- autofocus = false,
33
- tabIndex,
34
- ...theirProps
35
- } = $props();
36
- const disabled = $derived(providedDisabled.current ?? theirDisabled);
37
- const groupContext = getContext("GroupContext");
38
- $effect(() => {
39
- if (groupContext) groupContext.switchElement = ref ?? null;
40
- });
41
- const defaultChecked = _defaultChecked;
42
- const controllable = useControllable(
43
- {
44
- get controlledValue() {
45
- return controlledChecked;
46
- },
47
- set controlledValue(checked2) {
48
- controlledChecked = checked2;
49
- }
50
- },
51
- controlledOnChange,
52
- defaultChecked ?? false
53
- );
54
- const { value: checked, onchange } = $derived(controllable);
55
- let changing = $state(false);
56
- const toggle = () => {
57
- changing = true;
58
- onchange?.(!checked);
59
- tick().then(() => {
60
- changing = false;
61
- });
62
- };
63
- const handleClick = (event) => {
64
- event.preventDefault();
65
- toggle();
66
- };
67
- const handleKeyUp = (event) => {
68
- if (event.key === " ") {
69
- event.preventDefault();
70
- toggle();
71
- } else if (event.key === "Enter") {
72
- attemptSubmit(event.currentTarget);
4
+ const DEFAULT_SWITCH_TAG = "button" as const
5
+ type SwitchRenderPropArg = {
6
+ checked: boolean
7
+ hover: boolean
8
+ focus: boolean
9
+ active: boolean
10
+ autofocus: boolean
11
+ changing: boolean
12
+ disabled: boolean
73
13
  }
74
- };
75
- const handleKeyPress = (event) => event.preventDefault();
76
- let labelledBy = useLabelledBy();
77
- let describedBy = useDescribedBy();
78
- const { isFocusVisible: focus, focusProps } = $derived(
79
- useFocusRing({
80
- get autofocus() {
81
- return autofocus;
82
- }
83
- })
84
- );
85
- const { isHovered: hover, hoverProps } = $derived(
86
- useHover({
87
- get disabled() {
88
- return disabled;
14
+ type SwitchPropsWeControl = "aria-checked" | "aria-describedby" | "aria-labelledby" | "role"
15
+
16
+ export type SwitchProps = Props<
17
+ typeof DEFAULT_SWITCH_TAG,
18
+ SwitchRenderPropArg,
19
+ {
20
+ element?: HTMLElement
21
+ id?: string
22
+ checked?: boolean
23
+ defaultChecked?: boolean
24
+ onchange?(checked: boolean): void
25
+ name?: string
26
+ value?: string
27
+ form?: string
28
+ autofocus?: boolean
29
+ disabled?: boolean
30
+ tabIndex?: number
89
31
  }
32
+ >
33
+ </script>
34
+
35
+ <script lang="ts">
36
+ import { useId } from "../hooks/use-id.js"
37
+ import { useDisabled } from "../hooks/use-disabled.js"
38
+ import { useProvidedId } from "../utils/id.js"
39
+ import { getContext, tick } from "svelte"
40
+ import type { GroupContext } from "./SwitchGroup.svelte"
41
+ import { attemptSubmit } from "../utils/form.js"
42
+ import { useLabelledBy } from "../label/context.svelte.js"
43
+ import { useDescribedBy } from "../description/context.svelte.js"
44
+ import { mergeProps } from "../utils/render.js"
45
+ import { useResolveButtonType } from "../hooks/use-resolve-button-type.svelte.js"
46
+ import { useFocusRing } from "../hooks/use-focus-ring.svelte.js"
47
+ import { useHover } from "../hooks/use-hover.svelte.js"
48
+ import { useActivePress } from "../hooks/use-active-press.svelte.js"
49
+ import { useControllable } from "../hooks/use-controllable.svelte.js"
50
+ import FormFields from "../internal/FormFields.svelte"
51
+ import ElementOrComponent from "../utils/ElementOrComponent.svelte"
52
+
53
+ const internalId = useId()
54
+ const providedId = useProvidedId()
55
+ const providedDisabled = useDisabled()
56
+ let {
57
+ element = $bindable(),
58
+ id = providedId || `headlessui-switch-${internalId}`,
59
+ disabled: theirDisabled = false,
60
+ checked: controlledChecked = $bindable(),
61
+ defaultChecked: _defaultChecked,
62
+ onchange: controlledOnChange,
63
+ name,
64
+ value,
65
+ form,
66
+ autofocus = false,
67
+ tabIndex,
68
+ ...theirProps
69
+ }: SwitchProps = $props()
70
+ const disabled = $derived(providedDisabled.current ?? theirDisabled)
71
+ const groupContext = getContext<GroupContext>("GroupContext")
72
+ $effect(() => {
73
+ if (groupContext) groupContext.switchElement = element ?? null
90
74
  })
91
- );
92
- const { pressed: active, pressProps } = $derived(
93
- useActivePress({
94
- get disabled() {
95
- return disabled;
75
+
76
+ const defaultChecked = _defaultChecked
77
+ const controllable = useControllable(
78
+ {
79
+ get controlledValue() {
80
+ return controlledChecked
81
+ },
82
+ set controlledValue(checked) {
83
+ controlledChecked = checked
84
+ },
85
+ },
86
+ controlledOnChange,
87
+ defaultChecked ?? false
88
+ )
89
+ const { value: checked, onchange } = $derived(controllable)
90
+
91
+ let changing = $state(false)
92
+
93
+ const toggle = () => {
94
+ changing = true
95
+ onchange?.(!checked)
96
+ tick().then(() => {
97
+ changing = false
98
+ })
99
+ }
100
+
101
+ const handleClick = (event: MouseEvent) => {
102
+ //if (isDisabledReactIssue7711(event.currentTarget)) return event.preventDefault()
103
+ event.preventDefault()
104
+ toggle()
105
+ }
106
+
107
+ const handleKeyUp = (event: KeyboardEvent) => {
108
+ if (event.key === " ") {
109
+ event.preventDefault()
110
+ toggle()
111
+ } else if (event.key === "Enter") {
112
+ attemptSubmit(event.currentTarget as HTMLElement)
96
113
  }
97
- })
98
- );
99
- const slot = $derived({
100
- checked,
101
- disabled,
102
- hover,
103
- focus,
104
- active,
105
- autofocus,
106
- changing
107
- });
108
- const buttonType = useResolveButtonType({
109
- get props() {
110
- return { type: theirProps.type, as: theirProps.as };
111
- },
112
- get ref() {
113
- return { current: ref };
114
114
  }
115
- });
116
- const ourProps = $derived(
117
- mergeProps(
118
- {
119
- id,
120
- role: "switch",
121
- type: buttonType.type,
122
- tabIndex: tabIndex === -1 ? 0 : tabIndex ?? 0,
123
- "aria-checked": checked,
124
- "aria-labelledby": labelledBy.value,
125
- "aria-describedby": describedBy.value,
126
- disabled: disabled || void 0,
127
- autofocus,
128
- onclick: handleClick,
129
- onkeyup: handleKeyUp,
130
- onkeypress: handleKeyPress
115
+
116
+ // This is needed so that we can "cancel" the click event when we use the `Enter` key on a button.
117
+ const handleKeyPress = (event: KeyboardEvent) => event.preventDefault()
118
+
119
+ let labelledBy = useLabelledBy()
120
+ let describedBy = useDescribedBy()
121
+
122
+ const { isFocusVisible: focus, focusProps } = $derived(
123
+ useFocusRing({
124
+ get autofocus() {
125
+ return autofocus
126
+ },
127
+ })
128
+ )
129
+ const { isHovered: hover, hoverProps } = $derived(
130
+ useHover({
131
+ get disabled() {
132
+ return disabled
133
+ },
134
+ })
135
+ )
136
+ const { pressed: active, pressProps } = $derived(
137
+ useActivePress({
138
+ get disabled() {
139
+ return disabled
140
+ },
141
+ })
142
+ )
143
+
144
+ const slot = $derived({
145
+ checked,
146
+ disabled,
147
+ hover,
148
+ focus,
149
+ active,
150
+ autofocus,
151
+ changing,
152
+ } satisfies SwitchRenderPropArg)
153
+
154
+ const buttonType = useResolveButtonType({
155
+ get props() {
156
+ return { type: theirProps.type ?? undefined, as: element ? element.tagName.toLowerCase() : DEFAULT_SWITCH_TAG }
157
+ },
158
+ get ref() {
159
+ return { current: element }
131
160
  },
132
- focusProps,
133
- hoverProps,
134
- pressProps
161
+ })
162
+
163
+ const ourProps = $derived(
164
+ mergeProps(
165
+ {
166
+ id,
167
+ role: "switch",
168
+ type: buttonType.type,
169
+ tabIndex: tabIndex === -1 ? 0 : (tabIndex ?? 0),
170
+ "aria-checked": checked,
171
+ "aria-labelledby": labelledBy.value,
172
+ "aria-describedby": describedBy.value,
173
+ disabled: disabled || undefined,
174
+ autofocus,
175
+ onclick: handleClick,
176
+ onkeyup: handleKeyUp,
177
+ onkeypress: handleKeyPress,
178
+ },
179
+ focusProps,
180
+ hoverProps,
181
+ pressProps
182
+ )
135
183
  )
136
- );
137
- const reset = $derived(() => {
138
- if (defaultChecked === void 0) return;
139
- return onchange?.(defaultChecked);
140
- });
184
+
185
+ const reset = $derived(() => {
186
+ if (defaultChecked === undefined) return
187
+ return onchange?.(defaultChecked)
188
+ })
141
189
  </script>
142
190
 
143
191
  {#if name}
@@ -150,4 +198,4 @@ const reset = $derived(() => {
150
198
  />
151
199
  {/if}
152
200
 
153
- <ElementOrComponent {ourProps} {theirProps} {slot} defaultTag={DEFAULT_SWITCH_TAG} name="Switch" bind:ref />
201
+ <ElementOrComponent {ourProps} {theirProps} {slot} defaultTag={DEFAULT_SWITCH_TAG} name="Switch" bind:element />
@@ -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_SWITCH_TAG: "button";
3
3
  type SwitchRenderPropArg = {
4
4
  checked: boolean;
@@ -9,8 +9,9 @@ type SwitchRenderPropArg = {
9
9
  changing: boolean;
10
10
  disabled: boolean;
11
11
  };
12
- type SwitchPropsWeControl = "aria-checked" | "aria-describedby" | "aria-labelledby" | "role";
13
- export type SwitchProps<TTag extends ElementType = typeof DEFAULT_SWITCH_TAG> = Props<TTag, SwitchRenderPropArg, SwitchPropsWeControl, {
12
+ export type SwitchProps = Props<typeof DEFAULT_SWITCH_TAG, SwitchRenderPropArg, {
13
+ element?: HTMLElement;
14
+ id?: string;
14
15
  checked?: boolean;
15
16
  defaultChecked?: boolean;
16
17
  onchange?(checked: boolean): void;
@@ -21,39 +22,5 @@ export type SwitchProps<TTag extends ElementType = typeof DEFAULT_SWITCH_TAG> =
21
22
  disabled?: boolean;
22
23
  tabIndex?: number;
23
24
  }>;
24
- declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_SWITCH_TAG> {
25
- props(): {
26
- as?: TTag | undefined;
27
- } & (Exclude<keyof PropsOf<TTag>, "form" | ("slot" | "as" | "children" | "class" | "ref") | "disabled" | "autofocus" | "value" | "checked" | "name" | "onchange" | "tabIndex" | "defaultChecked" | SwitchPropsWeControl> extends infer T extends keyof PropsOf<TTag> ? { [P in T]: PropsOf<TTag>[P]; } : never) & {
28
- children?: import("svelte").Snippet<[{
29
- slot: SwitchRenderPropArg;
30
- props: Record<string, any>;
31
- }]> | undefined;
32
- class?: string | ((bag: SwitchRenderPropArg) => string) | null | undefined;
33
- ref?: HTMLElement;
34
- } & {
35
- checked?: boolean;
36
- defaultChecked?: boolean;
37
- onchange?(checked: boolean): void;
38
- name?: string;
39
- value?: string;
40
- form?: string;
41
- autofocus?: boolean;
42
- disabled?: boolean;
43
- tabIndex?: number;
44
- };
45
- events(): {};
46
- slots(): {};
47
- bindings(): "ref" | "checked";
48
- exports(): {};
49
- }
50
- interface $$IsomorphicComponent {
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']>> & {
52
- $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
53
- } & ReturnType<__sveltets_Render<TTag>['exports']>;
54
- <TTag extends ElementType = typeof DEFAULT_SWITCH_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
55
- z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
56
- }
57
- declare const Switch: $$IsomorphicComponent;
58
- type Switch<TTag extends ElementType = typeof DEFAULT_SWITCH_TAG> = InstanceType<typeof Switch<TTag>>;
25
+ declare const Switch: import("svelte").Component<SwitchProps, {}, "element" | "checked">;
59
26
  export default Switch;
@@ -1,37 +1,50 @@
1
- <script lang="ts" module>const DEFAULT_GROUP_TAG = "svelte:fragment";
1
+ <script lang="ts" module>
2
+ import type { PropsAsChild } from "../utils/types.js"
3
+
4
+ const DEFAULT_GROUP_TAG = "svelte:fragment"
5
+
6
+ export type SwitchGroupProps = PropsAsChild
7
+
8
+ export type GroupContext = {
9
+ switchElement: HTMLElement | null
10
+ }
2
11
  </script>
3
12
 
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";
8
- let switchElement = $state(null);
9
- useLabels({
10
- name: "SwitchGroup",
11
- props: {
12
- get htmlFor() {
13
- return switchElement?.id;
13
+ <script lang="ts">
14
+ import { setContext } from "svelte"
15
+ import { useLabels } from "../label/context.svelte.js"
16
+ import { useDescriptions } from "../description/context.svelte.js"
17
+ import ElementOrComponent from "../utils/ElementOrComponent.svelte"
18
+
19
+ let switchElement = $state<HTMLElement | null>(null)
20
+ useLabels({
21
+ name: "SwitchGroup",
22
+ props: {
23
+ get htmlFor() {
24
+ return switchElement?.id
25
+ },
26
+ onclick: (event: MouseEvent) => {
27
+ if (!switchElement) return
28
+ if (event.currentTarget instanceof HTMLLabelElement) {
29
+ event.preventDefault()
30
+ }
31
+ switchElement.click()
32
+ switchElement.focus({ preventScroll: true })
33
+ },
14
34
  },
15
- onclick: (event) => {
16
- if (!switchElement) return;
17
- if (event.currentTarget instanceof HTMLLabelElement) {
18
- event.preventDefault();
19
- }
20
- switchElement.click();
21
- switchElement.focus({ preventScroll: true });
22
- }
23
- }
24
- });
25
- useDescriptions();
26
- setContext("GroupContext", {
27
- get switchElement() {
28
- return switchElement;
29
- },
30
- set switchElement(element) {
31
- switchElement = element;
32
- }
33
- });
34
- let { ref = $bindable(), ...theirProps } = $props();
35
+ })
36
+ useDescriptions()
37
+
38
+ setContext<GroupContext>("GroupContext", {
39
+ get switchElement() {
40
+ return switchElement
41
+ },
42
+ set switchElement(element) {
43
+ switchElement = element
44
+ },
45
+ })
46
+
47
+ let { ...theirProps }: SwitchGroupProps = $props()
35
48
  </script>
36
49
 
37
- <ElementOrComponent {theirProps} defaultTag={DEFAULT_GROUP_TAG} name="SwitchGroup" bind:ref />
50
+ <ElementOrComponent {theirProps} name="SwitchGroup" />
@@ -1,32 +1,11 @@
1
- import type { ElementType, Props } from "../utils/types.js";
2
- declare const DEFAULT_GROUP_TAG = "svelte:fragment";
3
- export type SwitchGroupProps<TTag extends ElementType = typeof DEFAULT_GROUP_TAG> = Props<TTag>;
1
+ import type { PropsAsChild } from "../utils/types.js";
2
+ export type SwitchGroupProps = PropsAsChild;
4
3
  export type GroupContext = {
5
4
  switchElement: HTMLElement | null;
6
5
  };
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>, "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: {};
13
- props: Record<string, any>;
14
- }]> | undefined;
15
- class?: string | ((bag: {}) => 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_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']>> & {
25
- $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
26
- } & ReturnType<__sveltets_Render<TTag>['exports']>;
27
- <TTag extends ElementType = typeof DEFAULT_GROUP_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 SwitchGroup: $$IsomorphicComponent;
31
- type SwitchGroup<TTag extends ElementType = typeof DEFAULT_GROUP_TAG> = InstanceType<typeof SwitchGroup<TTag>>;
6
+ declare const SwitchGroup: import("svelte").Component<{
7
+ children?: import("svelte").Snippet<[{
8
+ props?: Record<string, any>;
9
+ }]> | undefined;
10
+ }, {}, "">;
32
11
  export default SwitchGroup;