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

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 (238) 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 +43 -25
  4. package/dist/checkbox/Checkbox.svelte.d.ts +42 -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 -11
  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 +325 -0
  36. package/dist/focus-trap/FocusTrap.svelte.d.ts +46 -0
  37. package/dist/focus-trap/FocusTrapFeatures.d.ts +14 -0
  38. package/dist/focus-trap/FocusTrapFeatures.js +15 -0
  39. package/dist/hooks/use-controllable.svelte.d.ts +1 -1
  40. package/dist/hooks/use-controllable.svelte.js +3 -3
  41. package/dist/hooks/use-did-element-move.svelte.js +5 -10
  42. package/dist/hooks/use-escape.svelte.d.ts +5 -0
  43. package/dist/hooks/use-escape.svelte.js +26 -0
  44. package/dist/hooks/use-event-listener.svelte.d.ts +6 -0
  45. package/dist/hooks/use-event-listener.svelte.js +12 -0
  46. package/dist/hooks/use-inert-others.svelte.d.ts +2 -2
  47. package/dist/hooks/use-inert-others.svelte.js +3 -3
  48. package/dist/hooks/use-is-mounted.svelte.d.ts +3 -0
  49. package/dist/hooks/use-is-mounted.svelte.js +14 -0
  50. package/dist/hooks/use-is-touch-device.svelte.d.ts +3 -0
  51. package/dist/hooks/use-is-touch-device.svelte.js +20 -0
  52. package/dist/hooks/use-root-containers.svelte.d.ts +9 -0
  53. package/dist/hooks/use-root-containers.svelte.js +50 -0
  54. package/dist/hooks/use-tab-direction.svelte.d.ts +7 -0
  55. package/dist/hooks/use-tab-direction.svelte.js +25 -0
  56. package/dist/hooks/use-transition.svelte.js +14 -13
  57. package/dist/hooks/use-tree-walker.svelte.d.ts +8 -0
  58. package/dist/hooks/use-tree-walker.svelte.js +19 -0
  59. package/dist/hooks/use-watch.svelte.d.ts +4 -0
  60. package/dist/hooks/use-watch.svelte.js +16 -0
  61. package/dist/hooks/use-window-event.svelte.d.ts +6 -0
  62. package/dist/hooks/use-window-event.svelte.js +12 -0
  63. package/dist/index.d.ts +10 -0
  64. package/dist/index.js +10 -0
  65. package/dist/input/Input.svelte +59 -0
  66. package/dist/input/Input.svelte.d.ts +50 -0
  67. package/dist/input/index.d.ts +1 -0
  68. package/dist/input/index.js +1 -0
  69. package/dist/internal/FloatingProvider.svelte +12 -0
  70. package/dist/internal/FloatingProvider.svelte.d.ts +22 -0
  71. package/dist/internal/FocusSentinel.svelte.d.ts +4 -1
  72. package/dist/internal/ForcePortalRoot.svelte +6 -0
  73. package/dist/internal/ForcePortalRoot.svelte.d.ts +22 -0
  74. package/dist/internal/FormFields.svelte.d.ts +4 -1
  75. package/dist/internal/FormResolver.svelte.d.ts +4 -1
  76. package/dist/internal/Hidden.svelte +6 -14
  77. package/dist/internal/Hidden.svelte.d.ts +19 -15
  78. package/dist/internal/HiddenFeatures.d.ts +5 -0
  79. package/dist/internal/HiddenFeatures.js +9 -0
  80. package/dist/internal/HoistFormFields.svelte.d.ts +4 -1
  81. package/dist/internal/MainTreeProvider.svelte +45 -0
  82. package/dist/internal/MainTreeProvider.svelte.d.ts +31 -0
  83. package/dist/internal/Portal.svelte.d.ts +4 -1
  84. package/dist/internal/close-provider.d.ts +7 -0
  85. package/dist/internal/close-provider.js +7 -0
  86. package/dist/internal/floating-provider.svelte.d.ts +3 -0
  87. package/dist/internal/floating-provider.svelte.js +206 -0
  88. package/dist/internal/floating.svelte.d.ts +50 -20
  89. package/dist/internal/floating.svelte.js +100 -271
  90. package/dist/internal/inner.svelte.d.ts +91 -0
  91. package/dist/internal/inner.svelte.js +202 -0
  92. package/dist/internal/open-closed.d.ts +1 -1
  93. package/dist/internal/open-closed.js +1 -1
  94. package/dist/label/Label.svelte +17 -65
  95. package/dist/label/Label.svelte.d.ts +19 -32
  96. package/dist/label/context.svelte.d.ts +17 -0
  97. package/dist/label/context.svelte.js +56 -0
  98. package/dist/legend/Legend.svelte +4 -3
  99. package/dist/legend/Legend.svelte.d.ts +33 -15
  100. package/dist/listbox/Listbox.svelte +40 -74
  101. package/dist/listbox/Listbox.svelte.d.ts +30 -72
  102. package/dist/listbox/ListboxButton.svelte +16 -18
  103. package/dist/listbox/ListboxButton.svelte.d.ts +16 -7
  104. package/dist/listbox/ListboxOption.svelte +10 -10
  105. package/dist/listbox/ListboxOption.svelte.d.ts +22 -11
  106. package/dist/listbox/ListboxOptions.svelte +62 -60
  107. package/dist/listbox/ListboxOptions.svelte.d.ts +23 -7
  108. package/dist/listbox/ListboxSelectedOption.svelte +15 -7
  109. package/dist/listbox/ListboxSelectedOption.svelte.d.ts +24 -14
  110. package/dist/listbox/context.svelte.d.ts +75 -0
  111. package/dist/listbox/context.svelte.js +36 -0
  112. package/dist/menu/Menu.svelte +235 -0
  113. package/dist/menu/Menu.svelte.d.ts +42 -0
  114. package/dist/menu/MenuButton.svelte +129 -0
  115. package/dist/menu/MenuButton.svelte.d.ts +52 -0
  116. package/dist/menu/MenuHeading.svelte +19 -0
  117. package/dist/menu/MenuHeading.svelte.d.ts +39 -0
  118. package/dist/menu/MenuItem.svelte +114 -0
  119. package/dist/menu/MenuItem.svelte.d.ts +49 -0
  120. package/dist/menu/MenuItems.svelte +248 -0
  121. package/dist/menu/MenuItems.svelte.d.ts +55 -0
  122. package/dist/menu/MenuSection.svelte +14 -0
  123. package/dist/menu/MenuSection.svelte.d.ts +35 -0
  124. package/dist/menu/MenuSeparator.svelte +9 -0
  125. package/dist/menu/MenuSeparator.svelte.d.ts +35 -0
  126. package/dist/menu/context.svelte.d.ts +47 -0
  127. package/dist/menu/context.svelte.js +21 -0
  128. package/dist/menu/index.d.ts +7 -0
  129. package/dist/menu/index.js +7 -0
  130. package/dist/portal/InternalPortal.svelte +22 -33
  131. package/dist/portal/InternalPortal.svelte.d.ts +16 -7
  132. package/dist/portal/Portal.svelte +4 -8
  133. package/dist/portal/Portal.svelte.d.ts +6 -6
  134. package/dist/portal/PortalGroup.svelte +5 -6
  135. package/dist/portal/PortalGroup.svelte.d.ts +16 -7
  136. package/dist/switch/Switch.svelte +41 -37
  137. package/dist/switch/Switch.svelte.d.ts +24 -7
  138. package/dist/switch/SwitchGroup.svelte +7 -8
  139. package/dist/switch/SwitchGroup.svelte.d.ts +14 -7
  140. package/dist/tabs/Tab.svelte +9 -14
  141. package/dist/tabs/Tab.svelte.d.ts +18 -6
  142. package/dist/tabs/TabGroup.svelte +20 -23
  143. package/dist/tabs/TabGroup.svelte.d.ts +19 -6
  144. package/dist/tabs/TabList.svelte +5 -7
  145. package/dist/tabs/TabList.svelte.d.ts +13 -6
  146. package/dist/tabs/TabPanel.svelte +30 -32
  147. package/dist/tabs/TabPanel.svelte.d.ts +19 -6
  148. package/dist/tabs/TabPanels.svelte +5 -6
  149. package/dist/tabs/TabPanels.svelte.d.ts +13 -6
  150. package/dist/textarea/Textarea.svelte +67 -0
  151. package/dist/textarea/Textarea.svelte.d.ts +50 -0
  152. package/dist/textarea/index.d.ts +1 -0
  153. package/dist/textarea/index.js +1 -0
  154. package/dist/transition/InternalTransitionChild.svelte +178 -0
  155. package/dist/transition/InternalTransitionChild.svelte.d.ts +55 -0
  156. package/dist/transition/Transition.svelte +89 -0
  157. package/dist/transition/Transition.svelte.d.ts +42 -0
  158. package/dist/transition/TransitionChild.svelte +16 -0
  159. package/dist/transition/TransitionChild.svelte.d.ts +44 -0
  160. package/dist/transition/context.svelte.d.ts +64 -0
  161. package/dist/transition/context.svelte.js +120 -0
  162. package/dist/transition/index.d.ts +2 -0
  163. package/dist/transition/index.js +2 -0
  164. package/dist/utils/ElementOrComponent.svelte +26 -0
  165. package/dist/utils/ElementOrComponent.svelte.d.ts +56 -0
  166. package/dist/utils/Generic.svelte +44 -0
  167. package/dist/utils/Generic.svelte.d.ts +35 -0
  168. package/dist/utils/StableCollection.svelte +1 -1
  169. package/dist/utils/StableCollection.svelte.d.ts +4 -1
  170. package/dist/utils/active-element-history.d.ts +1 -0
  171. package/dist/utils/active-element-history.js +35 -0
  172. package/dist/utils/alternative-types.d.ts +21 -0
  173. package/dist/utils/alternative-types.js +1 -0
  174. package/dist/utils/class-names.d.ts +1 -0
  175. package/dist/utils/class-names.js +10 -0
  176. package/dist/utils/floating-ui/svelte/components/FloatingNode.svelte +17 -0
  177. package/dist/utils/floating-ui/svelte/components/FloatingNode.svelte.d.ts +23 -0
  178. package/dist/utils/floating-ui/svelte/components/FloatingTree.svelte +50 -0
  179. package/dist/utils/floating-ui/svelte/components/FloatingTree.svelte.d.ts +41 -0
  180. package/dist/utils/floating-ui/svelte/hooks/useFloating.svelte.d.ts +6 -0
  181. package/dist/utils/floating-ui/svelte/hooks/useFloating.svelte.js +158 -0
  182. package/dist/utils/floating-ui/svelte/hooks/useFloatingRootContext.svelte.d.ts +11 -0
  183. package/dist/utils/floating-ui/svelte/hooks/useFloatingRootContext.svelte.js +53 -0
  184. package/dist/utils/floating-ui/svelte/hooks/useId.svelte.d.ts +9 -0
  185. package/dist/utils/floating-ui/svelte/hooks/useId.svelte.js +28 -0
  186. package/dist/utils/floating-ui/svelte/hooks/useInteractions.svelte.d.ts +23 -0
  187. package/dist/utils/floating-ui/svelte/hooks/useInteractions.svelte.js +72 -0
  188. package/dist/utils/floating-ui/svelte/index.d.ts +5 -0
  189. package/dist/utils/floating-ui/svelte/index.js +5 -0
  190. package/dist/utils/floating-ui/svelte/inner.svelte.d.ts +83 -0
  191. package/dist/utils/floating-ui/svelte/inner.svelte.js +178 -0
  192. package/dist/utils/floating-ui/svelte/types.d.ts +114 -0
  193. package/dist/utils/floating-ui/svelte/types.js +1 -0
  194. package/dist/utils/floating-ui/svelte/utils/createPubSub.d.ts +5 -0
  195. package/dist/utils/floating-ui/svelte/utils/createPubSub.js +14 -0
  196. package/dist/utils/floating-ui/svelte/utils/getFloatingFocusElement.d.ts +2 -0
  197. package/dist/utils/floating-ui/svelte/utils/getFloatingFocusElement.js +13 -0
  198. package/dist/utils/floating-ui/svelte/utils/log.d.ts +2 -0
  199. package/dist/utils/floating-ui/svelte/utils/log.js +19 -0
  200. package/dist/utils/floating-ui/svelte/utils.d.ts +19 -0
  201. package/dist/utils/floating-ui/svelte/utils.js +136 -0
  202. package/dist/utils/floating-ui/svelte-dom/arrow.d.ts +22 -0
  203. package/dist/utils/floating-ui/svelte-dom/arrow.js +29 -0
  204. package/dist/utils/floating-ui/svelte-dom/index.d.ts +2 -0
  205. package/dist/utils/floating-ui/svelte-dom/index.js +2 -0
  206. package/dist/utils/floating-ui/svelte-dom/types.d.ts +80 -0
  207. package/dist/utils/floating-ui/svelte-dom/types.js +3 -0
  208. package/dist/utils/floating-ui/svelte-dom/useFloating.svelte.d.ts +6 -0
  209. package/dist/utils/floating-ui/svelte-dom/useFloating.svelte.js +183 -0
  210. package/dist/utils/floating-ui/svelte-dom/utils/deepEqual.d.ts +1 -0
  211. package/dist/utils/floating-ui/svelte-dom/utils/deepEqual.js +50 -0
  212. package/dist/utils/floating-ui/svelte-dom/utils/getDPR.d.ts +1 -0
  213. package/dist/utils/floating-ui/svelte-dom/utils/getDPR.js +7 -0
  214. package/dist/utils/floating-ui/svelte-dom/utils/roundByDPR.d.ts +1 -0
  215. package/dist/utils/floating-ui/svelte-dom/utils/roundByDPR.js +5 -0
  216. package/dist/utils/floating-ui/svelte-dom/utils/useLatestRef.d.ts +4 -0
  217. package/dist/utils/floating-ui/svelte-dom/utils/useLatestRef.js +7 -0
  218. package/dist/utils/focus-management.d.ts +2 -1
  219. package/dist/utils/focus-management.js +13 -13
  220. package/dist/utils/id.d.ts +1 -1
  221. package/dist/utils/id.js +1 -1
  222. package/dist/utils/on-document-ready.d.ts +1 -0
  223. package/dist/utils/on-document-ready.js +12 -0
  224. package/dist/utils/render.d.ts +3 -0
  225. package/dist/utils/render.js +63 -0
  226. package/dist/utils/state.d.ts +7 -1
  227. package/dist/utils/state.js +10 -6
  228. package/dist/utils/style.d.ts +2 -0
  229. package/dist/utils/style.js +6 -0
  230. package/dist/utils/types.d.ts +14 -17
  231. package/dist/utils/types.js +0 -5
  232. package/package.json +33 -31
  233. package/dist/internal/id.d.ts +0 -8
  234. package/dist/internal/id.js +0 -11
  235. package/dist/tabs/Button.svelte +0 -65
  236. package/dist/tabs/Button.svelte.d.ts +0 -39
  237. package/dist/utils/close.d.ts +0 -2
  238. package/dist/utils/close.js +0 -3
@@ -1,54 +1,23 @@
1
- <script lang="ts" context="module">import { useByComparator } from "../hooks/use-by-comparator.js";
1
+ <script lang="ts" module>import { useByComparator } from "../hooks/use-by-comparator.js";
2
2
  import { useControllable } from "../hooks/use-controllable.svelte.js";
3
3
  import { useDisabled } from "../hooks/use-disabled.js";
4
4
  import { calculateActiveIndex, Focus } from "../utils/calculate-active-index.js";
5
5
  import { FocusableMode, isFocusableElement, sortByDomNode } from "../utils/focus-management.js";
6
6
  import { match } from "../utils/match.js";
7
- import { useRef } from "../utils/ref.svelte.js";
8
- import { getContext, setContext } from "svelte";
7
+ import { setContext } from "svelte";
8
+ import { ActivationTrigger, ListboxStates, ValueMode } from "./context.svelte.js";
9
9
  let DEFAULT_LISTBOX_TAG = "svelte:fragment";
10
- export var ListboxStates = /* @__PURE__ */ ((ListboxStates2) => {
11
- ListboxStates2[ListboxStates2["Open"] = 0] = "Open";
12
- ListboxStates2[ListboxStates2["Closed"] = 1] = "Closed";
13
- return ListboxStates2;
14
- })(ListboxStates || {});
15
- export var ValueMode = /* @__PURE__ */ ((ValueMode2) => {
16
- ValueMode2[ValueMode2["Single"] = 0] = "Single";
17
- ValueMode2[ValueMode2["Multi"] = 1] = "Multi";
18
- return ValueMode2;
19
- })(ValueMode || {});
20
- export var ActivationTrigger = /* @__PURE__ */ ((ActivationTrigger2) => {
21
- ActivationTrigger2[ActivationTrigger2["Pointer"] = 0] = "Pointer";
22
- ActivationTrigger2[ActivationTrigger2["Other"] = 1] = "Other";
23
- return ActivationTrigger2;
24
- })(ActivationTrigger || {});
25
- export function useActions(component) {
26
- const context = getContext("ListboxActionsContext");
27
- if (!context) {
28
- let err = new Error(`<${component} /> is missing a parent <Listbox /> component.`);
29
- if (Error.captureStackTrace) Error.captureStackTrace(err, useActions);
30
- throw err;
31
- }
32
- return context;
33
- }
34
- export function useData(component) {
35
- const context = getContext("ListboxData");
36
- if (context === null) {
37
- let err = new Error(`<${component} /> is missing a parent <Listbox /> component.`);
38
- if (Error.captureStackTrace) Error.captureStackTrace(err, useData);
39
- throw err;
40
- }
41
- return context;
42
- }
10
+ export * from "./context.svelte.js";
43
11
  </script>
44
12
 
45
- <script lang="ts" generics="TTag extends ElementType, TType, TActualType">import { disposables } from "../utils/disposables.js";
13
+ <script lang="ts" generics="TType, TActualType, TTag extends ElementType = typeof DEFAULT_LISTBOX_TAG">import { disposables } from "../utils/disposables.js";
46
14
  import FormFields from "../internal/FormFields.svelte";
47
- import { createFloatingContext } from "../internal/floating.svelte.js";
15
+ import { useFloatingProvider } from "../internal/floating.svelte.js";
48
16
  import { createOpenClosedContext, State } from "../internal/open-closed.js";
49
- import { stateFromSlot } from "../utils/state.js";
50
- import { useLabels } from "../label/Label.svelte";
17
+ import { useLabels } from "../label/context.svelte.js";
51
18
  import { useOutsideClick } from "../hooks/use-outside-click.svelte.js";
19
+ import ElementOrComponent from "../utils/ElementOrComponent.svelte";
20
+ import { SvelteMap } from "svelte/reactivity";
52
21
  function adjustOrderedState(state, adjustment = (i) => i) {
53
22
  let currentActiveOption = state.activeOptionIndex !== null ? state.options[state.activeOptionIndex] : null;
54
23
  let sortedOptions = sortByDomNode(
@@ -202,11 +171,11 @@ const stateReducer = (initialState) => {
202
171
  _state2.searchQuery = "";
203
172
  return _state2;
204
173
  },
205
- registerOption(action) {
206
- let option = { id: action.id, dataRef: action.dataRef };
174
+ registerOption(id, dataRef) {
175
+ let option = { id, dataRef };
207
176
  let adjustedState = adjustOrderedState(_state2, (options) => [...options, option]);
208
177
  if (_state2.activeOptionIndex === null) {
209
- if (isSelected(action.dataRef.current.value)) {
178
+ if (isSelected(dataRef.current.value)) {
210
179
  adjustedState.activeOptionIndex = adjustedState.options.indexOf(option);
211
180
  }
212
181
  }
@@ -214,9 +183,9 @@ const stateReducer = (initialState) => {
214
183
  _state2.activeOptionIndex = adjustedState.activeOptionIndex;
215
184
  return _state2;
216
185
  },
217
- unregisterOption(action) {
186
+ unregisterOption(id) {
218
187
  let adjustedState = adjustOrderedState(_state2, (options) => {
219
- let idx = options.findIndex((a) => a.id === action.id);
188
+ let idx = options.findIndex((a) => a.id === id);
220
189
  if (idx !== -1) options.splice(idx, 1);
221
190
  return options;
222
191
  });
@@ -227,12 +196,8 @@ const stateReducer = (initialState) => {
227
196
  }
228
197
  };
229
198
  };
230
- const listboxActionsContext = null;
231
- setContext("ListboxActionsContext", listboxActionsContext);
232
- const listboxDataContext = null;
233
- setContext("ListboxDataContext", listboxDataContext);
234
199
  let {
235
- as,
200
+ ref = $bindable(),
236
201
  value: controlledValue,
237
202
  defaultValue,
238
203
  form,
@@ -244,7 +209,6 @@ let {
244
209
  horizontal = false,
245
210
  multiple = false,
246
211
  __demoMode = false,
247
- children,
248
212
  ...theirProps
249
213
  } = $props();
250
214
  const providedDisabled = useDisabled();
@@ -269,10 +233,10 @@ const _state = stateReducer({
269
233
  optionsVisible: false,
270
234
  __demoMode
271
235
  });
272
- const optionsPropsRef = useRef({ static: false, hold: false });
273
- const buttonRef = useRef(null);
274
- const optionsRef = useRef(null);
275
- const listRef = useRef(/* @__PURE__ */ new Map());
236
+ const optionsProps = $state({ static: false, hold: false });
237
+ let buttonElement = $state(null);
238
+ let optionsElement = $state(null);
239
+ const listElements = new SvelteMap();
276
240
  const compare = useByComparator(by);
277
241
  const isSelected = (compareValue) => match(data.mode, {
278
242
  [ValueMode.Multi]: () => {
@@ -318,34 +282,39 @@ const data = {
318
282
  },
319
283
  compare,
320
284
  isSelected,
321
- get optionsPropsRef() {
322
- return optionsPropsRef;
285
+ get optionsProps() {
286
+ return optionsProps;
287
+ },
288
+ get buttonElement() {
289
+ return buttonElement;
290
+ },
291
+ set buttonElement(value2) {
292
+ buttonElement = value2;
323
293
  },
324
- get buttonRef() {
325
- return buttonRef;
294
+ get optionsElement() {
295
+ return optionsElement;
326
296
  },
327
- get optionsRef() {
328
- return optionsRef;
297
+ set optionsElement(value2) {
298
+ optionsElement = value2;
329
299
  },
330
- get listRef() {
331
- return listRef;
300
+ get listElements() {
301
+ return listElements;
332
302
  }
333
303
  };
334
304
  setContext("ListboxDataContext", data);
335
- setContext("ListboxData", data);
336
305
  const outsideClickEnabled = $derived(data.listboxState === ListboxStates.Open);
337
306
  useOutsideClick({
338
307
  get enabled() {
339
308
  return outsideClickEnabled;
340
309
  },
341
310
  get containers() {
342
- return [data.buttonRef, data.optionsRef];
311
+ return [data.buttonElement, data.optionsElement];
343
312
  },
344
313
  cb: (event, target) => {
345
314
  _state.closeListbox();
346
315
  if (!isFocusableElement(target, FocusableMode.Loose)) {
347
316
  event.preventDefault();
348
- data.buttonRef.current?.focus();
317
+ data.buttonElement?.focus();
349
318
  }
350
319
  }
351
320
  });
@@ -377,8 +346,8 @@ const goToOption = (focus, id, trigger) => {
377
346
  });
378
347
  };
379
348
  const registerOption = (id, dataRef) => {
380
- _state.registerOption({ id, dataRef });
381
- return () => _state.unregisterOption({ id });
349
+ _state.registerOption(id, dataRef);
350
+ return () => _state.unregisterOption(id);
382
351
  };
383
352
  const onChange = (value2) => {
384
353
  return match(data.mode, {
@@ -408,7 +377,7 @@ setContext("ListboxActionsContext", {
408
377
  search: _state.search,
409
378
  clearSearch: _state.clearSearch
410
379
  });
411
- createFloatingContext();
380
+ useFloatingProvider();
412
381
  const openClosed = $derived(
413
382
  match(data.listboxState, {
414
383
  [ListboxStates.Open]: State.Open,
@@ -424,7 +393,7 @@ useLabels({
424
393
  inherit: true,
425
394
  props: {
426
395
  get htmlFor() {
427
- return data.buttonRef.current?.id;
396
+ return data.buttonElement?.id;
428
397
  }
429
398
  },
430
399
  slot: {
@@ -436,7 +405,6 @@ useLabels({
436
405
  }
437
406
  }
438
407
  });
439
- const ourProps = $derived(stateFromSlot(slot));
440
408
  const reset = () => {
441
409
  if (defaultValue === void 0) return;
442
410
  return theirOnChange?.(defaultValue);
@@ -446,6 +414,4 @@ const reset = () => {
446
414
  {#if name && value}
447
415
  <FormFields {disabled} data={{ [name]: value }} {form} onReset={reset} />
448
416
  {/if}
449
- <svelte:element this={as ?? DEFAULT_LISTBOX_TAG} {...ourProps} {...theirProps}>
450
- {#if children}{@render children(slot)}{/if}
451
- </svelte:element>
417
+ <ElementOrComponent {theirProps} slots={slot} defaultTag={DEFAULT_LISTBOX_TAG} name="Listbox" bind:ref />
@@ -1,6 +1,4 @@
1
1
  import { type ByComparator } from "../hooks/use-by-comparator.js";
2
- import { Focus } from "../utils/calculate-active-index.js";
3
- import { type MutableRefObject } from "../utils/ref.svelte.js";
4
2
  import type { ElementType, Props } from "../utils/types.js";
5
3
  import { type Snippet } from "svelte";
6
4
  declare let DEFAULT_LISTBOX_TAG: string;
@@ -24,84 +22,44 @@ export type ListboxProps<TTag extends ElementType = typeof DEFAULT_LISTBOX_TAG,
24
22
  __demoMode?: boolean;
25
23
  }>;
26
24
  export type ListboxChildren<T> = Snippet<[ListboxRenderPropArg<T>]>;
27
- export declare enum ListboxStates {
28
- Open = 0,
29
- Closed = 1
30
- }
31
- export declare enum ValueMode {
32
- Single = 0,
33
- Multi = 1
34
- }
35
- export declare enum ActivationTrigger {
36
- Pointer = 0,
37
- Other = 1
38
- }
39
- export type ListboxOptionDataRef<T> = MutableRefObject<{
40
- textValue?: string;
41
- disabled: boolean;
42
- value: T;
43
- domRef: MutableRefObject<HTMLElement | null>;
44
- }>;
45
- interface StateDefinition<T> {
46
- listboxState: ListboxStates;
47
- options: {
48
- id: string;
49
- dataRef: ListboxOptionDataRef<T>;
50
- }[];
51
- searchQuery: string;
52
- activeOptionIndex: number | null;
53
- activationTrigger: ActivationTrigger;
54
- __demoMode: boolean;
55
- }
56
- type ListboxActionsContext = {
57
- openListbox(): void;
58
- closeListbox(): void;
59
- registerOption(id: string, dataRef: ListboxOptionDataRef<unknown>): () => void;
60
- goToOption(focus: Focus.Specific, id: string, trigger?: ActivationTrigger): void;
61
- goToOption(focus: Focus, id?: string, trigger?: ActivationTrigger): void;
62
- selectOption(id: string): void;
63
- selectActiveOption(): void;
64
- onChange(value: unknown): void;
65
- search(query: string): void;
66
- clearSearch(): void;
67
- };
68
- export declare function useActions(component: string): ListboxActionsContext;
69
- export type ListboxDataContext = {
70
- value: unknown;
71
- disabled: boolean;
72
- invalid: boolean;
73
- mode: ValueMode;
74
- orientation: "horizontal" | "vertical";
75
- activeOptionIndex: number | null;
76
- compare(a: unknown, z: unknown): boolean;
77
- isSelected(value: unknown): boolean;
78
- optionsPropsRef: MutableRefObject<{
79
- static: boolean;
80
- hold: boolean;
81
- }>;
82
- listRef: MutableRefObject<Map<string, HTMLElement | null>>;
83
- buttonRef: MutableRefObject<HTMLElement | null>;
84
- optionsRef: MutableRefObject<HTMLElement | null>;
85
- } & Omit<StateDefinition<unknown>, "dataRef">;
86
- export declare function useData(component: string): ListboxDataContext;
87
- declare class __sveltets_Render<TTag extends ElementType, TType, TActualType> {
88
- props(): ListboxProps<TTag, TType, TActualType>;
25
+ export * from "./context.svelte.js";
26
+ declare class __sveltets_Render<TType, TActualType, TTag extends ElementType = typeof DEFAULT_LISTBOX_TAG> {
27
+ props(): {
28
+ as?: TTag | undefined;
29
+ } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, "form" | ("as" | "children" | "refName" | "class") | "invalid" | "disabled" | "name" | "value" | "onchange" | "multiple" | "__demoMode" | "horizontal" | "defaultValue" | "by"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
30
+ children?: import("../utils/types.js").Children<ListboxRenderPropArg<TType>> | undefined;
31
+ ref?: HTMLElement;
32
+ } & (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) ? {
33
+ class?: import("../utils/types.js").PropsOf<TTag>["class"] | ((bag: ListboxRenderPropArg<TType>) => string) | undefined;
34
+ } : {}) & {
35
+ value?: TType | undefined;
36
+ defaultValue?: TType | undefined;
37
+ onchange?: ((value: TType) => void) | undefined;
38
+ by?: ByComparator<TActualType> | undefined;
39
+ disabled?: boolean;
40
+ invalid?: boolean;
41
+ horizontal?: boolean;
42
+ form?: string;
43
+ name?: string;
44
+ multiple?: boolean;
45
+ __demoMode?: boolean;
46
+ };
89
47
  events(): {} & {
90
48
  [evt: string]: CustomEvent<any>;
91
49
  };
92
50
  slots(): {};
93
- bindings(): "";
51
+ bindings(): "ref";
94
52
  exports(): {};
95
53
  }
96
54
  interface $$IsomorphicComponent {
97
- new <TTag extends ElementType, TType, TActualType>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TTag, TType, TActualType>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TTag, TType, TActualType>['props']>, ReturnType<__sveltets_Render<TTag, TType, TActualType>['events']>, ReturnType<__sveltets_Render<TTag, TType, TActualType>['slots']>> & {
98
- $$bindings?: ReturnType<__sveltets_Render<TTag, TType, TActualType>['bindings']>;
99
- } & ReturnType<__sveltets_Render<TTag, TType, TActualType>['exports']>;
100
- <TTag extends ElementType, TType, TActualType>(internal: unknown, props: ReturnType<__sveltets_Render<TTag, TType, TActualType>['props']> & {
101
- $$events?: ReturnType<__sveltets_Render<TTag, TType, TActualType>['events']>;
102
- }): ReturnType<__sveltets_Render<TTag, TType, TActualType>['exports']>;
55
+ new <TType, TActualType, TTag extends ElementType = typeof DEFAULT_LISTBOX_TAG>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TType, TActualType, TTag>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TType, TActualType, TTag>['props']>, ReturnType<__sveltets_Render<TType, TActualType, TTag>['events']>, ReturnType<__sveltets_Render<TType, TActualType, TTag>['slots']>> & {
56
+ $$bindings?: ReturnType<__sveltets_Render<TType, TActualType, TTag>['bindings']>;
57
+ } & ReturnType<__sveltets_Render<TType, TActualType, TTag>['exports']>;
58
+ <TType, TActualType, TTag extends ElementType = typeof DEFAULT_LISTBOX_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TType, TActualType, TTag>['props']> & {
59
+ $$events?: ReturnType<__sveltets_Render<TType, TActualType, TTag>['events']>;
60
+ }): ReturnType<__sveltets_Render<TType, TActualType, TTag>['exports']>;
103
61
  z_$$bindings?: ReturnType<__sveltets_Render<any, any, any>['bindings']>;
104
62
  }
105
63
  declare const Listbox: $$IsomorphicComponent;
106
- type Listbox<TTag extends ElementType, TType, TActualType> = InstanceType<typeof Listbox<TTag, TType, TActualType>>;
64
+ type Listbox<TType, TActualType, TTag extends ElementType = typeof DEFAULT_LISTBOX_TAG> = InstanceType<typeof Listbox<TType, TActualType, TTag>>;
107
65
  export default Listbox;
@@ -1,36 +1,36 @@
1
- <script lang="ts" context="module">import { useId } from "../hooks/use-id.js";
2
- import { getIdContext } from "../utils/id.js";
1
+ <script lang="ts" module>import { useId } from "../hooks/use-id.js";
2
+ import { useProvidedId } from "../utils/id.js";
3
3
  import { ListboxStates, useActions, useData } from "./Listbox.svelte";
4
4
  import { attemptSubmit } from "../utils/form.js";
5
5
  import { Focus } from "../utils/calculate-active-index.js";
6
6
  import { useFocusRing } from "../hooks/use-focus-ring.svelte.js";
7
7
  import { useActivePress } from "../hooks/use-active-press.svelte.js";
8
8
  import { useResolveButtonType } from "../hooks/use-resolve-button-type.svelte.js";
9
- import { useFloating } from "../internal/floating.svelte.js";
9
+ import { useFloatingReference, useFloatingReferenceProps } from "../internal/floating.svelte.js";
10
10
  import { stateFromSlot } from "../utils/state.js";
11
- import { useLabelledBy } from "../label/Label.svelte";
12
- import { useDescribedBy } from "../description/Description.svelte";
11
+ import { useLabelledBy } from "../label/context.svelte.js";
12
+ import { useDescribedBy } from "../description/context.svelte.js";
13
13
  import { useHover } from "../hooks/use-hover.svelte.js";
14
14
  import { mergeProps } from "../utils/render.js";
15
+ import ElementOrComponent from "../utils/ElementOrComponent.svelte";
15
16
  const DEFAULT_BUTTON_TAG = "button";
16
17
  </script>
17
18
 
18
- <script lang="ts" generics="TTag extends ElementType">const data = useData("ListboxButton");
19
+ <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_BUTTON_TAG">const data = useData("ListboxButton");
19
20
  const actions = useActions("ListboxButton");
20
21
  const internalId = useId();
21
- const providedId = getIdContext();
22
+ const providedId = useProvidedId();
22
23
  let {
23
- as = DEFAULT_BUTTON_TAG,
24
24
  ref = $bindable(),
25
25
  id = providedId || `headlessui-listbox-button-${internalId}`,
26
26
  disabled: ownDisabled = false,
27
27
  autofocus = false,
28
- children,
29
28
  ...theirProps
30
29
  } = $props();
31
- const { setReference, getReferenceProps: getFloatingReferenceProps } = useFloating();
30
+ const { setReference } = useFloatingReference();
31
+ const { getReferenceProps: getFloatingReferenceProps } = useFloatingReferenceProps();
32
32
  $effect(() => {
33
- data.buttonRef.current = ref || null;
33
+ data.buttonElement = ref || null;
34
34
  setReference(ref);
35
35
  });
36
36
  const disabled = $derived(data.disabled || ownDisabled);
@@ -62,7 +62,7 @@ const handleKeyUp = (event) => {
62
62
  const handleClick = (event) => {
63
63
  if (data.listboxState === ListboxStates.Open) {
64
64
  actions.closeListbox();
65
- data.buttonRef.current?.focus({ preventScroll: true });
65
+ data.buttonElement?.focus({ preventScroll: true });
66
66
  } else {
67
67
  event.preventDefault();
68
68
  actions.openListbox();
@@ -104,10 +104,10 @@ const slot = $derived({
104
104
  });
105
105
  const buttonType = useResolveButtonType({
106
106
  get props() {
107
- return { type: theirProps.type, as };
107
+ return { type: theirProps.type, as: theirProps.as };
108
108
  },
109
109
  get ref() {
110
- return data.buttonRef;
110
+ return { current: data.buttonElement };
111
111
  }
112
112
  });
113
113
  const ourProps = $derived(
@@ -117,7 +117,7 @@ const ourProps = $derived(
117
117
  id,
118
118
  type: buttonType.type,
119
119
  "aria-haspopup": "listbox",
120
- "aria-controls": data.optionsRef.current?.id,
120
+ "aria-controls": data.optionsElement?.id,
121
121
  "aria-expanded": data.listboxState === ListboxStates.Open,
122
122
  "aria-labelledby": labelledBy.value,
123
123
  "aria-describedby": describedBy.value,
@@ -136,6 +136,4 @@ const ourProps = $derived(
136
136
  );
137
137
  </script>
138
138
 
139
- <svelte:element this={as} bind:this={ref} {...ourProps} {...theirProps}>
140
- {#if children}{@render children(slot)}{/if}
141
- </svelte:element>
139
+ <ElementOrComponent {ourProps} {theirProps} {slot} defaultTag={DEFAULT_BUTTON_TAG} name="ListboxButton" bind:ref />
@@ -1,4 +1,4 @@
1
- import type { ElementType, HTMLElementType, Props } from "../utils/types.js";
1
+ import type { ElementType, Props, PropsOf } from "../utils/types.js";
2
2
  import type { Snippet } from "svelte";
3
3
  declare const DEFAULT_BUTTON_TAG: "button";
4
4
  type ButtonRenderPropArg = {
@@ -15,11 +15,20 @@ type ButtonPropsWeControl = "aria-controls" | "aria-expanded" | "aria-haspopup"
15
15
  export type ListboxButtonProps<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG> = Props<TTag, ButtonRenderPropArg, ButtonPropsWeControl, {
16
16
  autofocus?: boolean;
17
17
  disabled?: boolean;
18
- ref?: HTMLElementType<TTag> | null;
19
18
  }>;
20
19
  export type ListboxButtonChildren = Snippet<[ButtonRenderPropArg]>;
21
- declare class __sveltets_Render<TTag extends ElementType> {
22
- props(): ListboxButtonProps<TTag>;
20
+ declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG> {
21
+ props(): {
22
+ as?: TTag | undefined;
23
+ } & (Exclude<keyof PropsOf<TTag>, ("as" | "children" | "refName" | "class") | "autofocus" | ButtonPropsWeControl> extends infer T extends keyof PropsOf<TTag> ? { [P in T]: PropsOf<TTag>[P]; } : never) & {
24
+ children?: import("../utils/types.js").Children<ButtonRenderPropArg> | undefined;
25
+ ref?: HTMLElement;
26
+ } & (true extends (PropsOf<TTag> extends infer T_1 ? T_1 extends 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) ? {
27
+ class?: PropsOf<TTag>["class"] | ((bag: ButtonRenderPropArg) => string) | undefined;
28
+ } : {}) & {
29
+ autofocus?: boolean;
30
+ disabled?: boolean;
31
+ };
23
32
  events(): {} & {
24
33
  [evt: string]: CustomEvent<any>;
25
34
  };
@@ -28,14 +37,14 @@ declare class __sveltets_Render<TTag extends ElementType> {
28
37
  exports(): {};
29
38
  }
30
39
  interface $$IsomorphicComponent {
31
- 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']>> & {
40
+ new <TTag extends ElementType = typeof DEFAULT_BUTTON_TAG>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TTag>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TTag>['props']>, ReturnType<__sveltets_Render<TTag>['events']>, ReturnType<__sveltets_Render<TTag>['slots']>> & {
32
41
  $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
33
42
  } & ReturnType<__sveltets_Render<TTag>['exports']>;
34
- <TTag extends ElementType>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
43
+ <TTag extends ElementType = typeof DEFAULT_BUTTON_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
35
44
  $$events?: ReturnType<__sveltets_Render<TTag>['events']>;
36
45
  }): ReturnType<__sveltets_Render<TTag>['exports']>;
37
46
  z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
38
47
  }
39
48
  declare const ListboxButton: $$IsomorphicComponent;
40
- type ListboxButton<TTag extends ElementType> = InstanceType<typeof ListboxButton<TTag>>;
49
+ type ListboxButton<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG> = InstanceType<typeof ListboxButton<TTag>>;
41
50
  export default ListboxButton;
@@ -1,7 +1,7 @@
1
- <script lang="ts" context="module">const DEFAULT_OPTION_TAG = "div";
1
+ <script lang="ts" module>const DEFAULT_OPTION_TAG = "div";
2
2
  </script>
3
3
 
4
- <script lang="ts" generics="TTag extends ElementType, TType">import { useId } from "../hooks/use-id.js";
4
+ <script lang="ts" generics="TType, TTag extends ElementType = typeof DEFAULT_OPTION_TAG">import { useId } from "../hooks/use-id.js";
5
5
  import {
6
6
  ActivationTrigger,
7
7
  ListboxStates,
@@ -15,14 +15,13 @@ import { getContext, onMount } from "svelte";
15
15
  import { useTextValue } from "../hooks/use-text-value.svelte.js";
16
16
  import { useTrackedPointer } from "../hooks/use-tracked-pointer.js";
17
17
  import { stateFromSlot } from "../utils/state.js";
18
+ import ElementOrComponent from "../utils/ElementOrComponent.svelte";
18
19
  const internalId = useId();
19
20
  let {
20
- as = DEFAULT_OPTION_TAG,
21
21
  ref = $bindable(),
22
22
  id = `headlessui-listbox-option-${internalId}`,
23
23
  disabled = false,
24
24
  value,
25
- children,
26
25
  ...theirProps
27
26
  } = $props();
28
27
  const usedInSelectedOption = getContext("SelectedOptionContext") === true;
@@ -45,10 +44,13 @@ const bag = $derived({
45
44
  });
46
45
  $effect(() => {
47
46
  if (!ref) {
48
- data.listRef.current.delete(id);
47
+ data.listElements.delete(id);
49
48
  } else {
50
- data.listRef.current.set(id, ref);
49
+ data.listElements.set(id, ref);
51
50
  }
51
+ return () => {
52
+ if (ref) data.listElements.delete(id);
53
+ };
52
54
  });
53
55
  $effect(() => {
54
56
  if (data.__demoMode) return;
@@ -73,7 +75,7 @@ const handleClick = (event) => {
73
75
  actions.onChange(value);
74
76
  if (data.mode === ValueMode.Single) {
75
77
  actions.closeListbox();
76
- data.buttonRef.current?.focus({ preventScroll: true });
78
+ data.buttonElement?.focus({ preventScroll: true });
77
79
  }
78
80
  };
79
81
  const handleFocus = () => {
@@ -132,7 +134,5 @@ const ourProps = $derived(
132
134
  </script>
133
135
 
134
136
  {#if selected || !usedInSelectedOption}
135
- <svelte:element this={as} bind:this={ref} {...ourProps} {...theirProps}>
136
- {#if children}{@render children(slot)}{/if}
137
- </svelte:element>
137
+ <ElementOrComponent {ourProps} {theirProps} {slot} defaultTag={DEFAULT_OPTION_TAG} name="Listbox" bind:ref />
138
138
  {/if}
@@ -1,4 +1,4 @@
1
- import type { ElementType, HTMLElementType, Props } from "../utils/types.js";
1
+ import type { ElementType, Props } from "../utils/types.js";
2
2
  declare const DEFAULT_OPTION_TAG: "div";
3
3
  type OptionRenderPropArg = {
4
4
  /** @deprecated use `focus` instead */
@@ -10,14 +10,25 @@ type OptionRenderPropArg = {
10
10
  };
11
11
  type OptionPropsWeControl = "aria-disabled" | "aria-selected" | "role" | "tabIndex";
12
12
  export type ListboxOptionProps<TTag extends ElementType = typeof DEFAULT_OPTION_TAG, TType = string> = Props<TTag, OptionRenderPropArg, OptionPropsWeControl, {
13
+ id?: string;
13
14
  disabled?: boolean;
14
15
  value: TType;
15
- ref?: HTMLElementType<TTag> | null;
16
16
  }>;
17
17
  export type ListboxOptionChildren = Snippet<[OptionRenderPropArg]>;
18
18
  import { type Snippet } from "svelte";
19
- declare class __sveltets_Render<TTag extends ElementType, TType> {
20
- props(): ListboxOptionProps<TTag, TType>;
19
+ declare class __sveltets_Render<TType, TTag extends ElementType = typeof DEFAULT_OPTION_TAG> {
20
+ props(): {
21
+ as?: TTag | undefined;
22
+ } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("as" | "children" | "refName" | "class") | "disabled" | "value" | "id" | OptionPropsWeControl> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
23
+ children?: import("../utils/types.js").Children<OptionRenderPropArg> | undefined;
24
+ ref?: HTMLElement;
25
+ } & (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) ? {
26
+ class?: import("../utils/types.js").PropsOf<TTag>["class"] | ((bag: OptionRenderPropArg) => string) | undefined;
27
+ } : {}) & {
28
+ id?: string;
29
+ disabled?: boolean;
30
+ value: TType;
31
+ };
21
32
  events(): {} & {
22
33
  [evt: string]: CustomEvent<any>;
23
34
  };
@@ -26,14 +37,14 @@ declare class __sveltets_Render<TTag extends ElementType, TType> {
26
37
  exports(): {};
27
38
  }
28
39
  interface $$IsomorphicComponent {
29
- new <TTag extends ElementType, TType>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TTag, TType>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TTag, TType>['props']>, ReturnType<__sveltets_Render<TTag, TType>['events']>, ReturnType<__sveltets_Render<TTag, TType>['slots']>> & {
30
- $$bindings?: ReturnType<__sveltets_Render<TTag, TType>['bindings']>;
31
- } & ReturnType<__sveltets_Render<TTag, TType>['exports']>;
32
- <TTag extends ElementType, TType>(internal: unknown, props: ReturnType<__sveltets_Render<TTag, TType>['props']> & {
33
- $$events?: ReturnType<__sveltets_Render<TTag, TType>['events']>;
34
- }): ReturnType<__sveltets_Render<TTag, TType>['exports']>;
40
+ new <TType, TTag extends ElementType = typeof DEFAULT_OPTION_TAG>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TType, TTag>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TType, TTag>['props']>, ReturnType<__sveltets_Render<TType, TTag>['events']>, ReturnType<__sveltets_Render<TType, TTag>['slots']>> & {
41
+ $$bindings?: ReturnType<__sveltets_Render<TType, TTag>['bindings']>;
42
+ } & ReturnType<__sveltets_Render<TType, TTag>['exports']>;
43
+ <TType, TTag extends ElementType = typeof DEFAULT_OPTION_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TType, TTag>['props']> & {
44
+ $$events?: ReturnType<__sveltets_Render<TType, TTag>['events']>;
45
+ }): ReturnType<__sveltets_Render<TType, TTag>['exports']>;
35
46
  z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
36
47
  }
37
48
  declare const ListboxOption: $$IsomorphicComponent;
38
- type ListboxOption<TTag extends ElementType, TType> = InstanceType<typeof ListboxOption<TTag, TType>>;
49
+ type ListboxOption<TType, TTag extends ElementType = typeof DEFAULT_OPTION_TAG> = InstanceType<typeof ListboxOption<TType, TTag>>;
39
50
  export default ListboxOption;