@pzerelles/headlessui-svelte 2.1.2-next.5 → 2.1.2-next.50

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 (267) hide show
  1. package/dist/button/Button.svelte +16 -19
  2. package/dist/button/Button.svelte.d.ts +8 -36
  3. package/dist/button/index.d.ts +1 -1
  4. package/dist/button/index.js +1 -1
  5. package/dist/checkbox/Checkbox.svelte +31 -27
  6. package/dist/checkbox/Checkbox.svelte.d.ts +17 -38
  7. package/dist/checkbox/index.d.ts +1 -1
  8. package/dist/checkbox/index.js +1 -1
  9. package/dist/close-button/CloseButton.svelte +4 -7
  10. package/dist/close-button/CloseButton.svelte.d.ts +3 -46
  11. package/dist/close-button/index.d.ts +1 -0
  12. package/dist/close-button/index.js +1 -0
  13. package/dist/data-interactive/DataInteractive.svelte +6 -22
  14. package/dist/data-interactive/DataInteractive.svelte.d.ts +9 -34
  15. package/dist/data-interactive/index.d.ts +1 -1
  16. package/dist/data-interactive/index.js +1 -1
  17. package/dist/description/Description.svelte +29 -24
  18. package/dist/description/Description.svelte.d.ts +9 -30
  19. package/dist/description/context.svelte.js +14 -16
  20. package/dist/description/index.d.ts +1 -1
  21. package/dist/dialog/Dialog.svelte +315 -31
  22. package/dist/dialog/Dialog.svelte.d.ts +7 -45
  23. package/dist/dialog/DialogBackdrop.svelte +11 -14
  24. package/dist/dialog/DialogBackdrop.svelte.d.ts +8 -33
  25. package/dist/dialog/DialogPanel.svelte +23 -19
  26. package/dist/dialog/DialogPanel.svelte.d.ts +8 -34
  27. package/dist/dialog/DialogTitle.svelte +17 -8
  28. package/dist/dialog/DialogTitle.svelte.d.ts +9 -30
  29. package/dist/dialog/context.svelte.js +2 -2
  30. package/dist/dialog/index.d.ts +4 -4
  31. package/dist/dialog/index.js +4 -4
  32. package/dist/disclosure/Disclosure.svelte +61 -0
  33. package/dist/disclosure/Disclosure.svelte.d.ts +14 -0
  34. package/dist/disclosure/DisclosureButton.svelte +191 -0
  35. package/dist/disclosure/DisclosureButton.svelte.d.ts +19 -0
  36. package/dist/disclosure/DisclosurePanel.svelte +98 -0
  37. package/dist/disclosure/DisclosurePanel.svelte.d.ts +16 -0
  38. package/dist/disclosure/context.svelte.d.ts +32 -0
  39. package/dist/disclosure/context.svelte.js +94 -0
  40. package/dist/disclosure/index.d.ts +3 -0
  41. package/dist/disclosure/index.js +3 -0
  42. package/dist/field/Field.svelte +27 -26
  43. package/dist/field/Field.svelte.d.ts +7 -34
  44. package/dist/field/index.d.ts +1 -1
  45. package/dist/fieldset/Fieldset.svelte +21 -20
  46. package/dist/fieldset/Fieldset.svelte.d.ts +8 -35
  47. package/dist/fieldset/index.d.ts +1 -1
  48. package/dist/focus-trap/FocusTrap.svelte +29 -36
  49. package/dist/focus-trap/FocusTrap.svelte.d.ts +8 -38
  50. package/dist/hooks/use-controllable.svelte.js +3 -2
  51. package/dist/hooks/use-did-element-move.svelte.js +5 -10
  52. package/dist/hooks/use-disabled.d.ts +6 -1
  53. package/dist/hooks/use-disabled.js +10 -5
  54. package/dist/hooks/use-element-size.svelte.js +1 -1
  55. package/dist/hooks/use-event-listener.svelte.d.ts +1 -1
  56. package/dist/hooks/use-event-listener.svelte.js +3 -1
  57. package/dist/hooks/use-focus-ring.svelte.js +1 -1
  58. package/dist/hooks/use-inert-others.svelte.js +10 -10
  59. package/dist/hooks/use-is-top-layer.svelte.js +2 -2
  60. package/dist/hooks/use-resolve-button-type.svelte.js +0 -1
  61. package/dist/hooks/use-root-containers.svelte.d.ts +2 -2
  62. package/dist/hooks/use-root-containers.svelte.js +5 -5
  63. package/dist/hooks/use-tab-direction.svelte.js +1 -1
  64. package/dist/hooks/use-transition.svelte.js +2 -2
  65. package/dist/index.d.ts +6 -2
  66. package/dist/index.js +6 -2
  67. package/dist/input/Input.svelte +28 -21
  68. package/dist/input/Input.svelte.d.ts +16 -33
  69. package/dist/input/index.d.ts +1 -1
  70. package/dist/input/index.js +1 -1
  71. package/dist/internal/FloatingProvider.svelte +17 -0
  72. package/dist/internal/FloatingProvider.svelte.d.ts +8 -0
  73. package/dist/internal/FocusSentinel.svelte +33 -32
  74. package/dist/internal/FocusSentinel.svelte.d.ts +4 -18
  75. package/dist/internal/ForcePortalRoot.svelte.d.ts +4 -18
  76. package/dist/internal/FormFields.svelte +18 -13
  77. package/dist/internal/FormFields.svelte.d.ts +4 -18
  78. package/dist/internal/FormFieldsProvider.svelte +17 -0
  79. package/dist/internal/FormFieldsProvider.svelte.d.ts +7 -0
  80. package/dist/internal/FormResolver.svelte +6 -2
  81. package/dist/internal/FormResolver.svelte.d.ts +4 -18
  82. package/dist/internal/Hidden.svelte +10 -10
  83. package/dist/internal/Hidden.svelte.d.ts +6 -33
  84. package/dist/internal/MainTreeProvider.svelte +1 -1
  85. package/dist/internal/MainTreeProvider.svelte.d.ts +4 -18
  86. package/dist/internal/Portal.svelte.d.ts +4 -18
  87. package/dist/internal/floating-provider.svelte.d.ts +3 -0
  88. package/dist/internal/floating-provider.svelte.js +206 -0
  89. package/dist/internal/floating.svelte.d.ts +46 -22
  90. package/dist/internal/floating.svelte.js +90 -272
  91. package/dist/internal/form-fields.svelte.d.ts +10 -0
  92. package/dist/internal/form-fields.svelte.js +23 -0
  93. package/dist/internal/frozen.svelte.js +1 -1
  94. package/dist/label/Label.svelte +17 -13
  95. package/dist/label/Label.svelte.d.ts +8 -33
  96. package/dist/label/context.svelte.js +1 -1
  97. package/dist/label/index.d.ts +1 -1
  98. package/dist/legend/Legend.svelte +22 -15
  99. package/dist/legend/Legend.svelte.d.ts +10 -34
  100. package/dist/listbox/Listbox.svelte +79 -151
  101. package/dist/listbox/Listbox.svelte.d.ts +16 -91
  102. package/dist/listbox/ListboxButton.svelte +31 -29
  103. package/dist/listbox/ListboxButton.svelte.d.ts +8 -38
  104. package/dist/listbox/ListboxOption.svelte +40 -27
  105. package/dist/listbox/ListboxOption.svelte.d.ts +16 -32
  106. package/dist/listbox/ListboxOptions.svelte +126 -72
  107. package/dist/listbox/ListboxOptions.svelte.d.ts +8 -43
  108. package/dist/listbox/ListboxSelectedOption.svelte +24 -26
  109. package/dist/listbox/ListboxSelectedOption.svelte.d.ts +14 -39
  110. package/dist/listbox/context.svelte.d.ts +76 -0
  111. package/dist/listbox/context.svelte.js +36 -0
  112. package/dist/listbox/index.d.ts +5 -5
  113. package/dist/listbox/index.js +4 -4
  114. package/dist/menu/Menu.svelte +22 -266
  115. package/dist/menu/Menu.svelte.d.ts +7 -37
  116. package/dist/menu/MenuButton.svelte +29 -24
  117. package/dist/menu/MenuButton.svelte.d.ts +8 -39
  118. package/dist/menu/MenuHeading.svelte +12 -16
  119. package/dist/menu/MenuHeading.svelte.d.ts +7 -36
  120. package/dist/menu/MenuItem.svelte +18 -23
  121. package/dist/menu/MenuItem.svelte.d.ts +9 -39
  122. package/dist/menu/MenuItems.svelte +33 -34
  123. package/dist/menu/MenuItems.svelte.d.ts +8 -43
  124. package/dist/menu/MenuSection.svelte +9 -12
  125. package/dist/menu/MenuSection.svelte.d.ts +7 -33
  126. package/dist/menu/MenuSeparator.svelte +9 -12
  127. package/dist/menu/MenuSeparator.svelte.d.ts +7 -33
  128. package/dist/menu/context.svelte.d.ts +2 -1
  129. package/dist/menu/context.svelte.js +212 -2
  130. package/dist/menu/index.d.ts +7 -7
  131. package/dist/menu/index.js +3 -3
  132. package/dist/popover/Popover.svelte +228 -0
  133. package/dist/popover/Popover.svelte.d.ts +15 -0
  134. package/dist/popover/PopoverBackdrop.svelte +83 -0
  135. package/dist/popover/PopoverBackdrop.svelte.d.ts +17 -0
  136. package/dist/popover/PopoverButton.svelte +324 -0
  137. package/dist/popover/PopoverButton.svelte.d.ts +21 -0
  138. package/dist/popover/PopoverGroup.svelte +66 -0
  139. package/dist/popover/PopoverGroup.svelte.d.ts +9 -0
  140. package/dist/popover/PopoverPanel.svelte +359 -0
  141. package/dist/popover/PopoverPanel.svelte.d.ts +22 -0
  142. package/dist/popover/context.svelte.d.ts +51 -0
  143. package/dist/popover/context.svelte.js +108 -0
  144. package/dist/popover/index.d.ts +5 -0
  145. package/dist/popover/index.js +5 -0
  146. package/dist/portal/InternalPortal.svelte +17 -17
  147. package/dist/portal/InternalPortal.svelte.d.ts +6 -33
  148. package/dist/portal/Portal.svelte +7 -6
  149. package/dist/portal/Portal.svelte.d.ts +3 -22
  150. package/dist/portal/PortalGroup.svelte +6 -14
  151. package/dist/portal/PortalGroup.svelte.d.ts +5 -34
  152. package/dist/radio-group/Radio.svelte +142 -0
  153. package/dist/radio-group/Radio.svelte.d.ts +35 -0
  154. package/dist/radio-group/RadioGroup.svelte +222 -0
  155. package/dist/radio-group/RadioGroup.svelte.d.ts +34 -0
  156. package/dist/radio-group/RadioOption.svelte +145 -0
  157. package/dist/radio-group/RadioOption.svelte.d.ts +37 -0
  158. package/dist/radio-group/contest.svelte.d.ts +30 -0
  159. package/dist/radio-group/contest.svelte.js +40 -0
  160. package/dist/radio-group/index.d.ts +3 -0
  161. package/dist/radio-group/index.js +3 -0
  162. package/dist/select/Select.svelte +112 -0
  163. package/dist/select/Select.svelte.d.ts +21 -0
  164. package/dist/select/index.d.ts +1 -0
  165. package/dist/select/index.js +1 -0
  166. package/dist/switch/Switch.svelte +27 -28
  167. package/dist/switch/Switch.svelte.d.ts +9 -42
  168. package/dist/switch/SwitchGroup.svelte +5 -5
  169. package/dist/switch/SwitchGroup.svelte.d.ts +8 -30
  170. package/dist/switch/index.d.ts +1 -1
  171. package/dist/switch/index.js +1 -1
  172. package/dist/tabs/Tab.svelte +28 -31
  173. package/dist/tabs/Tab.svelte.d.ts +8 -36
  174. package/dist/tabs/TabGroup.svelte +42 -264
  175. package/dist/tabs/TabGroup.svelte.d.ts +7 -57
  176. package/dist/tabs/TabList.svelte +13 -16
  177. package/dist/tabs/TabList.svelte.d.ts +8 -31
  178. package/dist/tabs/TabPanel.svelte +20 -20
  179. package/dist/tabs/TabPanel.svelte.d.ts +8 -38
  180. package/dist/tabs/TabPanels.svelte +11 -9
  181. package/dist/tabs/TabPanels.svelte.d.ts +8 -30
  182. package/dist/tabs/context.svelte.d.ts +31 -0
  183. package/dist/tabs/context.svelte.js +134 -0
  184. package/dist/tabs/index.d.ts +5 -5
  185. package/dist/tabs/index.js +4 -4
  186. package/dist/textarea/Textarea.svelte +24 -20
  187. package/dist/textarea/Textarea.svelte.d.ts +18 -30
  188. package/dist/textarea/index.d.ts +1 -1
  189. package/dist/textarea/index.js +1 -1
  190. package/dist/transition/InternalTransitionChild.svelte +36 -22
  191. package/dist/transition/InternalTransitionChild.svelte.d.ts +6 -37
  192. package/dist/transition/Transition.svelte +16 -17
  193. package/dist/transition/Transition.svelte.d.ts +8 -38
  194. package/dist/transition/TransitionChild.svelte +13 -12
  195. package/dist/transition/TransitionChild.svelte.d.ts +11 -38
  196. package/dist/transition/context.svelte.js +11 -11
  197. package/dist/transition/index.d.ts +2 -2
  198. package/dist/transition/index.js +2 -2
  199. package/dist/utils/DisabledProvider.svelte +10 -0
  200. package/dist/utils/DisabledProvider.svelte.d.ts +8 -0
  201. package/dist/utils/ElementOrComponent.svelte +58 -17
  202. package/dist/utils/ElementOrComponent.svelte.d.ts +19 -30
  203. package/dist/utils/StableCollection.svelte.d.ts +4 -18
  204. package/dist/utils/floating-ui/svelte/components/FloatingNode.svelte +32 -0
  205. package/dist/utils/floating-ui/svelte/components/FloatingNode.svelte.d.ts +8 -0
  206. package/dist/utils/floating-ui/svelte/components/FloatingTree.svelte +94 -0
  207. package/dist/utils/floating-ui/svelte/components/FloatingTree.svelte.d.ts +26 -0
  208. package/dist/utils/floating-ui/svelte/hooks/useFloating.svelte.d.ts +6 -0
  209. package/dist/utils/floating-ui/svelte/hooks/useFloating.svelte.js +158 -0
  210. package/dist/utils/floating-ui/svelte/hooks/useFloatingRootContext.svelte.d.ts +11 -0
  211. package/dist/utils/floating-ui/svelte/hooks/useFloatingRootContext.svelte.js +53 -0
  212. package/dist/utils/floating-ui/svelte/hooks/useId.svelte.d.ts +9 -0
  213. package/dist/utils/floating-ui/svelte/hooks/useId.svelte.js +28 -0
  214. package/dist/utils/floating-ui/svelte/hooks/useInteractions.svelte.d.ts +23 -0
  215. package/dist/utils/floating-ui/svelte/hooks/useInteractions.svelte.js +72 -0
  216. package/dist/utils/floating-ui/svelte/index.d.ts +5 -0
  217. package/dist/utils/floating-ui/svelte/index.js +5 -0
  218. package/dist/utils/floating-ui/svelte/inner.svelte.d.ts +83 -0
  219. package/dist/utils/floating-ui/svelte/inner.svelte.js +178 -0
  220. package/dist/utils/floating-ui/svelte/types.d.ts +114 -0
  221. package/dist/utils/floating-ui/svelte/utils/createPubSub.d.ts +5 -0
  222. package/dist/utils/floating-ui/svelte/utils/createPubSub.js +14 -0
  223. package/dist/utils/floating-ui/svelte/utils/getFloatingFocusElement.d.ts +2 -0
  224. package/dist/utils/floating-ui/svelte/utils/getFloatingFocusElement.js +13 -0
  225. package/dist/utils/floating-ui/svelte/utils/log.d.ts +2 -0
  226. package/dist/utils/floating-ui/svelte/utils/log.js +19 -0
  227. package/dist/utils/floating-ui/svelte/utils.d.ts +19 -0
  228. package/dist/utils/floating-ui/svelte/utils.js +136 -0
  229. package/dist/utils/floating-ui/svelte-dom/arrow.d.ts +22 -0
  230. package/dist/utils/floating-ui/svelte-dom/arrow.js +29 -0
  231. package/dist/utils/floating-ui/svelte-dom/index.d.ts +2 -0
  232. package/dist/utils/floating-ui/svelte-dom/index.js +2 -0
  233. package/dist/utils/floating-ui/svelte-dom/types.d.ts +80 -0
  234. package/dist/utils/floating-ui/svelte-dom/types.js +3 -0
  235. package/dist/utils/floating-ui/svelte-dom/useFloating.svelte.d.ts +6 -0
  236. package/dist/utils/floating-ui/svelte-dom/useFloating.svelte.js +183 -0
  237. package/dist/utils/floating-ui/svelte-dom/utils/deepEqual.d.ts +1 -0
  238. package/dist/utils/floating-ui/svelte-dom/utils/deepEqual.js +50 -0
  239. package/dist/utils/floating-ui/svelte-dom/utils/getDPR.d.ts +1 -0
  240. package/dist/utils/floating-ui/svelte-dom/utils/getDPR.js +7 -0
  241. package/dist/utils/floating-ui/svelte-dom/utils/roundByDPR.d.ts +1 -0
  242. package/dist/utils/floating-ui/svelte-dom/utils/roundByDPR.js +5 -0
  243. package/dist/utils/floating-ui/svelte-dom/utils/useLatestRef.d.ts +4 -0
  244. package/dist/utils/floating-ui/svelte-dom/utils/useLatestRef.js +7 -0
  245. package/dist/utils/id.d.ts +1 -1
  246. package/dist/utils/id.js +1 -1
  247. package/dist/utils/index.d.ts +3 -0
  248. package/dist/utils/index.js +3 -0
  249. package/dist/utils/state.js +4 -4
  250. package/dist/utils/style.d.ts +2 -0
  251. package/dist/utils/style.js +6 -0
  252. package/dist/utils/types.d.ts +13 -19
  253. package/package.json +54 -53
  254. package/dist/combobox/Combobox.svelte +0 -53
  255. package/dist/combobox/Combobox.svelte.d.ts +0 -50
  256. package/dist/dialog/InternalDialog.svelte +0 -294
  257. package/dist/dialog/InternalDialog.svelte.d.ts +0 -42
  258. package/dist/internal/HoistFormFields.svelte +0 -14
  259. package/dist/internal/HoistFormFields.svelte.d.ts +0 -21
  260. package/dist/internal/id.d.ts +0 -8
  261. package/dist/internal/id.js +0 -11
  262. package/dist/listbox/ListboxStates.d.ts +0 -12
  263. package/dist/listbox/ListboxStates.js +0 -15
  264. package/dist/utils/Generic.svelte +0 -56
  265. package/dist/utils/Generic.svelte.d.ts +0 -35
  266. package/dist/utils/alternative-types.d.ts +0 -21
  267. /package/dist/utils/{alternative-types.js → floating-ui/svelte/types.js} +0 -0
@@ -1,5 +1,5 @@
1
- export { default as Listbox, type ListboxProps, type ListboxChildren } from "./Listbox.svelte";
2
- export { default as ListboxButton, type ListboxButtonProps, type ListboxButtonChildren } from "./ListboxButton.svelte";
3
- export { default as ListboxOption, type ListboxOptionProps, type ListboxOptionChildren } from "./ListboxOption.svelte";
4
- export { default as ListboxOptions, type ListboxOptionsProps, type ListboxOptionsChildren, } from "./ListboxOptions.svelte";
5
- export { default as ListboxSelectedOption, type ListboxSelectedOptionProps } from "./ListboxSelectedOption.svelte";
1
+ export { default as Listbox, type ListboxProps, type ListboxRenderPropArg as ListboxSlot, type ListboxOwnProps, } from "./Listbox.svelte";
2
+ export { default as ListboxButton, type ListboxButtonProps, type ButtonRenderPropArg as ListboxButtonSlot, type ListboxButtonOwnProps, } from "./ListboxButton.svelte";
3
+ export { default as ListboxOption, type ListboxOptionProps, type OptionRenderPropArg as ListboxOptionSlot, type ListboxOptionOwnProps, } from "./ListboxOption.svelte";
4
+ export { default as ListboxOptions, type ListboxOptionsProps, type OptionsRenderPropArg as ListboxOptionsSlot, type ListboxOptionsOwnProps, } from "./ListboxOptions.svelte";
5
+ export { default as ListboxSelectedOption, type ListboxSelectedOptionProps, type SelectedOptionRenderPropArg as ListboxSelectedOptionSlot, type ListboxSelectedOptionOwnProps, } from "./ListboxSelectedOption.svelte";
@@ -1,5 +1,5 @@
1
- export { default as Listbox } from "./Listbox.svelte";
2
- export { default as ListboxButton } from "./ListboxButton.svelte";
3
- export { default as ListboxOption } from "./ListboxOption.svelte";
1
+ export { default as Listbox, } from "./Listbox.svelte";
2
+ export { default as ListboxButton, } from "./ListboxButton.svelte";
3
+ export { default as ListboxOption, } from "./ListboxOption.svelte";
4
4
  export { default as ListboxOptions, } from "./ListboxOptions.svelte";
5
- export { default as ListboxSelectedOption } from "./ListboxSelectedOption.svelte";
5
+ export { default as ListboxSelectedOption, } from "./ListboxSelectedOption.svelte";
@@ -1,275 +1,32 @@
1
1
  <script lang="ts" module>
2
- import { useOutsideClick } from "../hooks/use-outside-click.svelte.js"
3
- import { createFloatingContext } from "../internal/floating.svelte.js"
4
- import { createOpenClosedContext, State } from "../internal/open-closed.js"
5
- import { calculateActiveIndex, Focus } from "../utils/calculate-active-index.js"
6
- import ElementOrComponent from "../utils/ElementOrComponent.svelte"
7
- import { FocusableMode, isFocusableElement, sortByDomNode } from "../utils/focus-management.js"
8
- import { match } from "../utils/match.js"
9
- import type { ElementType, Props } from "../utils/types.js"
10
- import type { Snippet } from "svelte"
2
+ import type { PropsAsChild } from "../utils/types.js"
11
3
 
12
4
  let DEFAULT_MENU_TAG = "svelte:fragment"
13
- type MenuRenderPropArg = {
5
+ export type MenuRenderPropArg = {
14
6
  open: boolean
15
7
  close: () => void
16
8
  }
17
9
  type MenuPropsWeControl = never
18
10
 
19
- export type MenuProps<TTag extends ElementType = typeof DEFAULT_MENU_TAG> = Props<
20
- TTag,
21
- MenuRenderPropArg,
22
- MenuPropsWeControl,
23
- {
24
- __demoMode?: boolean
25
- }
26
- >
27
-
28
- export type MenuChildren<T> = Snippet<[MenuRenderPropArg]>
29
- </script>
30
-
31
- <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_MENU_TAG">
32
- import { setContext } from "svelte"
33
- import {
34
- ActivationTrigger,
35
- MenuStates,
36
- type MenuContext,
37
- type MenuItemDataRef,
38
- type StateDefinition,
39
- } from "./context.svelte.js"
40
-
41
- function adjustOrderedState(
42
- state: StateDefinition,
43
- adjustment: (items: StateDefinition["items"]) => StateDefinition["items"] = (i) => i
44
- ) {
45
- let currentActiveItem = state.activeItemIndex !== null ? state.items[state.activeItemIndex] : null
46
-
47
- let sortedItems = sortByDomNode(adjustment(state.items.slice()), (item) => item.dataRef.current.domRef.current)
48
-
49
- // If we inserted an item before the current active item then the active item index
50
- // would be wrong. To fix this, we will re-lookup the correct index.
51
- let adjustedActiveItemIndex = currentActiveItem ? sortedItems.indexOf(currentActiveItem) : null
52
-
53
- // Reset to `null` in case the currentActiveItem was removed.
54
- if (adjustedActiveItemIndex === -1) {
55
- adjustedActiveItemIndex = null
56
- }
57
-
58
- return {
59
- items: sortedItems,
60
- activeItemIndex: adjustedActiveItemIndex,
61
- }
11
+ export type MenuOwnProps = {
12
+ __demoMode?: boolean
62
13
  }
63
14
 
64
- const stateReducer = (initialState: StateDefinition) => {
65
- let _state = $state(initialState)
66
- return {
67
- get menuState() {
68
- return _state.menuState
69
- },
70
- get buttonElement() {
71
- return _state.buttonElement
72
- },
73
- get itemsElement() {
74
- return _state.itemsElement
75
- },
76
- get items() {
77
- return _state.items
78
- },
79
- get searchQuery() {
80
- return _state.searchQuery
81
- },
82
- get activeItemIndex() {
83
- return _state.activeItemIndex
84
- },
85
- get activationTrigger() {
86
- return _state.activationTrigger
87
- },
88
- get __demoMode() {
89
- return _state.__demoMode
90
- },
91
- closeMenu() {
92
- if (_state.menuState === MenuStates.Closed) return _state
93
- _state.activeItemIndex = null
94
- _state.menuState = MenuStates.Closed
95
- return _state
96
- },
97
- openMenu() {
98
- if (_state.menuState === MenuStates.Open) return _state
99
- /* We can turn off demo mode once we re-open the `Menu` */
100
- _state.__demoMode = false
101
- _state.menuState = MenuStates.Open
102
- return _state
103
- },
104
- goToItem(
105
- action:
106
- | { focus: Focus.Specific; id: string; trigger?: ActivationTrigger }
107
- | { focus: Exclude<Focus, Focus.Specific>; trigger?: ActivationTrigger }
108
- ) {
109
- if (_state.menuState === MenuStates.Closed) return _state
110
-
111
- _state.searchQuery = ""
112
- _state.activationTrigger = action.trigger ?? ActivationTrigger.Other
113
- _state.__demoMode = false
114
-
115
- // Optimization:
116
- //
117
- // There is no need to sort the DOM nodes if we know that we don't want to focus anything
118
- if (action.focus === Focus.Nothing) {
119
- _state.activeItemIndex = null
120
- return _state
121
- }
122
-
123
- // Optimization:
124
- //
125
- // There is no need to sort the DOM nodes if we know exactly where to go
126
- if (action.focus === Focus.Specific) {
127
- _state.activeItemIndex = _state.items.findIndex((o) => o.id === action.id)
128
- return _state
129
- }
130
-
131
- // Optimization:
132
- //
133
- // If the current DOM node and the previous DOM node are next to each other,
134
- // or if the previous DOM node is already the first DOM node, then we don't
135
- // have to sort all the DOM nodes.
136
- else if (action.focus === Focus.Previous) {
137
- let activeItemIdx = _state.activeItemIndex
138
- if (activeItemIdx !== null) {
139
- let currentDom = _state.items[activeItemIdx].dataRef.current.domRef
140
- let previousItemIndex = calculateActiveIndex(action, {
141
- resolveItems: () => _state.items,
142
- resolveActiveIndex: () => _state.activeItemIndex,
143
- resolveId: (item) => item.id,
144
- resolveDisabled: (item) => item.dataRef.current.disabled,
145
- })
146
- if (previousItemIndex !== null) {
147
- let previousDom = _state.items[previousItemIndex].dataRef.current.domRef
148
- if (
149
- // Next to each other
150
- currentDom.current?.previousElementSibling === previousDom.current ||
151
- // Or already the first element
152
- previousDom.current?.previousElementSibling === null
153
- ) {
154
- _state.activeItemIndex = previousItemIndex
155
- return _state
156
- }
157
- }
158
- }
159
- }
160
-
161
- // Optimization:
162
- //
163
- // If the current DOM node and the next DOM node are next to each other, or
164
- // if the next DOM node is already the last DOM node, then we don't have to
165
- // sort all the DOM nodes.
166
- else if (action.focus === Focus.Next) {
167
- let activeItemIdx = _state.activeItemIndex
168
- if (activeItemIdx !== null) {
169
- let currentDom = _state.items[activeItemIdx].dataRef.current.domRef
170
- let nextItemIndex = calculateActiveIndex(action, {
171
- resolveItems: () => _state.items,
172
- resolveActiveIndex: () => _state.activeItemIndex,
173
- resolveId: (item) => item.id,
174
- resolveDisabled: (item) => item.dataRef.current.disabled,
175
- })
176
- if (nextItemIndex !== null) {
177
- let nextDom = _state.items[nextItemIndex].dataRef.current.domRef
178
- if (
179
- // Next to each other
180
- currentDom.current?.nextElementSibling === nextDom.current ||
181
- // Or already the last element
182
- nextDom.current?.nextElementSibling === null
183
- ) {
184
- _state.activeItemIndex = nextItemIndex
185
- return _state
186
- }
187
- }
188
- }
189
- }
190
-
191
- // Slow path:
192
- //
193
- // Ensure all the items are correctly sorted according to DOM position
194
- let adjustedState = adjustOrderedState(_state)
195
- let activeItemIndex = calculateActiveIndex(action, {
196
- resolveItems: () => adjustedState.items,
197
- resolveActiveIndex: () => adjustedState.activeItemIndex,
198
- resolveId: (item) => item.id,
199
- resolveDisabled: (item) => item.dataRef.current.disabled,
200
- })
201
-
202
- _state.items = adjustedState.items
203
- _state.activeItemIndex = activeItemIndex
204
- return _state
205
- },
206
- search(value: string) {
207
- let wasAlreadySearching = _state.searchQuery !== ""
208
- let offset = wasAlreadySearching ? 0 : 1
209
- let searchQuery = _state.searchQuery + value.toLowerCase()
210
-
211
- let reOrderedItems =
212
- _state.activeItemIndex !== null
213
- ? _state.items
214
- .slice(_state.activeItemIndex + offset)
215
- .concat(_state.items.slice(0, _state.activeItemIndex + offset))
216
- : _state.items
217
-
218
- let matchingItem = reOrderedItems.find(
219
- (item) => item.dataRef.current.textValue?.startsWith(searchQuery) && !item.dataRef.current.disabled
220
- )
221
-
222
- let matchIdx = matchingItem ? _state.items.indexOf(matchingItem) : -1
223
- if (matchIdx === -1 || matchIdx === _state.activeItemIndex) {
224
- _state.searchQuery = searchQuery
225
- return _state
226
- }
227
- _state.searchQuery = searchQuery
228
- _state.activeItemIndex = matchIdx
229
- _state.activationTrigger = ActivationTrigger.Other
230
- return _state
231
- },
232
- clearSearch() {
233
- if (_state.searchQuery === "") return _state
234
- _state.searchQuery = ""
235
- return _state
236
- },
237
- registerItem(id: string, dataRef: MenuItemDataRef) {
238
- let item = { id, dataRef }
239
- let adjustedState = adjustOrderedState(_state, (items) => [...items, item])
240
-
241
- _state.items = adjustedState.items
242
- _state.activeItemIndex = adjustedState.activeItemIndex
243
- return _state
244
- },
245
- unregisterItem(id: string) {
246
- let adjustedState = adjustOrderedState(_state, (items) => {
247
- let idx = items.findIndex((a) => a.id === id)
248
- if (idx !== -1) items.splice(idx, 1)
249
- return items
250
- })
15
+ export type MenuProps = PropsAsChild<MenuRenderPropArg, MenuOwnProps>
16
+ </script>
251
17
 
252
- _state.items = adjustedState.items
253
- _state.activeItemIndex = adjustedState.activeItemIndex
254
- _state.activationTrigger = ActivationTrigger.Other
255
- return _state
256
- },
257
- setButtonElement(element: HTMLButtonElement | null) {
258
- if (_state.buttonElement === element) return _state
259
- _state.buttonElement = element
260
- return _state
261
- },
262
- setItemsElement(element: HTMLElement | null) {
263
- if (_state.itemsElement === element) return _state
264
- _state.itemsElement = element
265
- return _state
266
- },
267
- }
268
- }
18
+ <script lang="ts">
19
+ import { ActivationTrigger, createMenuContext, MenuStates, type StateDefinition } from "./context.svelte.js"
20
+ import { useOutsideClick } from "../hooks/use-outside-click.svelte.js"
21
+ import { useFloatingProvider } from "../internal/floating-provider.svelte.js"
22
+ import { createOpenClosedContext, State } from "../internal/open-closed.js"
23
+ import ElementOrComponent from "../utils/ElementOrComponent.svelte"
24
+ import { FocusableMode, isFocusableElement } from "../utils/focus-management.js"
25
+ import { match } from "../utils/match.js"
269
26
 
270
- let { ref = $bindable(), __demoMode = false, ...theirProps }: { as?: TTag } & MenuProps<TTag> = $props()
27
+ let { __demoMode = false, ...theirProps }: MenuProps = $props()
271
28
 
272
- const _state = stateReducer({
29
+ const context = createMenuContext({
273
30
  __demoMode,
274
31
  menuState: __demoMode ? MenuStates.Open : MenuStates.Closed,
275
32
  buttonElement: null,
@@ -279,8 +36,7 @@
279
36
  activeItemIndex: null,
280
37
  activationTrigger: ActivationTrigger.Other,
281
38
  } as StateDefinition)
282
- const { menuState, itemsElement, buttonElement } = $derived(_state)
283
- setContext<MenuContext>("MenuContext", _state)
39
+ const { menuState, itemsElement, buttonElement } = $derived(context)
284
40
 
285
41
  // Handle outside click
286
42
  const outsideClickEnabled = $derived(menuState === MenuStates.Open)
@@ -292,7 +48,7 @@
292
48
  return [buttonElement, itemsElement]
293
49
  },
294
50
  cb: (event, target) => {
295
- _state.closeMenu()
51
+ context.closeMenu()
296
52
 
297
53
  if (!isFocusableElement(target, FocusableMode.Loose)) {
298
54
  event.preventDefault()
@@ -302,11 +58,11 @@
302
58
  })
303
59
 
304
60
  const slot = $derived({
305
- open: _state.menuState === MenuStates.Open,
306
- close: _state.closeMenu,
61
+ open: context.menuState === MenuStates.Open,
62
+ close: context.closeMenu,
307
63
  } satisfies MenuRenderPropArg)
308
64
 
309
- createFloatingContext()
65
+ useFloatingProvider()
310
66
 
311
67
  const openClosed = $derived(
312
68
  match(menuState, {
@@ -321,4 +77,4 @@
321
77
  })
322
78
  </script>
323
79
 
324
- <ElementOrComponent {theirProps} {slot} defaultTag={DEFAULT_MENU_TAG} name="Menu" bind:ref />
80
+ <ElementOrComponent {theirProps} slots={slot} name="Menu" />
@@ -1,42 +1,12 @@
1
- import type { ElementType, Props } from "../utils/types.js";
2
- import type { Snippet } from "svelte";
3
- declare let DEFAULT_MENU_TAG: string;
4
- type MenuRenderPropArg = {
1
+ import type { PropsAsChild } from "../utils/types.js";
2
+ export type MenuRenderPropArg = {
5
3
  open: boolean;
6
4
  close: () => void;
7
5
  };
8
- type MenuPropsWeControl = never;
9
- export type MenuProps<TTag extends ElementType = typeof DEFAULT_MENU_TAG> = Props<TTag, MenuRenderPropArg, MenuPropsWeControl, {
6
+ export type MenuOwnProps = {
10
7
  __demoMode?: boolean;
11
- }>;
12
- export type MenuChildren<T> = Snippet<[MenuRenderPropArg]>;
13
- declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_MENU_TAG> {
14
- props(): {
15
- as?: TTag | undefined;
16
- } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("as" | "children" | "refName" | "class") | "__demoMode"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
17
- children?: import("../utils/types.js").Children<MenuRenderPropArg> | undefined;
18
- ref?: HTMLElement;
19
- } & (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) ? {
20
- class?: import("../utils/types.js").PropsOf<TTag>["class"] | ((bag: MenuRenderPropArg) => string) | undefined;
21
- } : {}) & {
22
- __demoMode?: boolean;
23
- };
24
- events(): {} & {
25
- [evt: string]: CustomEvent<any>;
26
- };
27
- slots(): {};
28
- bindings(): "ref";
29
- exports(): {};
30
- }
31
- interface $$IsomorphicComponent {
32
- new <TTag extends ElementType = typeof DEFAULT_MENU_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']>> & {
33
- $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
34
- } & ReturnType<__sveltets_Render<TTag>['exports']>;
35
- <TTag extends ElementType = typeof DEFAULT_MENU_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
36
- $$events?: ReturnType<__sveltets_Render<TTag>['events']>;
37
- }): ReturnType<__sveltets_Render<TTag>['exports']>;
38
- z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
39
- }
40
- declare const Menu: $$IsomorphicComponent;
41
- type Menu<TTag extends ElementType = typeof DEFAULT_MENU_TAG> = InstanceType<typeof Menu<TTag>>;
8
+ };
9
+ export type MenuProps = PropsAsChild<MenuRenderPropArg, MenuOwnProps>;
10
+ declare const Menu: import("svelte").Component<MenuProps, {}, "">;
11
+ type Menu = ReturnType<typeof Menu>;
42
12
  export default Menu;
@@ -1,9 +1,9 @@
1
1
  <script lang="ts" module>
2
- import { tick, type Snippet } from "svelte"
3
- import type { Props, ElementType } from "../utils/types.js"
2
+ import { tick } from "svelte"
3
+ import type { Props } from "../utils/types.js"
4
4
 
5
5
  const DEFAULT_BUTTON_TAG = "button" as const
6
- type ButtonRenderPropArg = {
6
+ export type ButtonRenderPropArg = {
7
7
  open: boolean
8
8
  active: boolean
9
9
  hover: boolean
@@ -13,28 +13,24 @@
13
13
  }
14
14
  type ButtonPropsWeControl = "aria-controls" | "aria-expanded" | "aria-haspopup"
15
15
 
16
- export type MenuButtonProps<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG> = Props<
17
- TTag,
18
- ButtonRenderPropArg,
19
- ButtonPropsWeControl,
20
- {
21
- id?: string
22
- disabled?: boolean
23
- autofocus?: boolean
24
- type?: string
25
- }
26
- >
16
+ export type MenuButtonOwnProps = {
17
+ element?: HTMLElement
18
+ id?: string
19
+ disabled?: boolean
20
+ autofocus?: boolean
21
+ type?: string
22
+ }
27
23
 
28
- export type MenuButtonChildren = Snippet<[ButtonRenderPropArg]>
24
+ export type MenuButtonProps = Props<typeof DEFAULT_BUTTON_TAG, ButtonRenderPropArg, MenuButtonOwnProps>
29
25
  </script>
30
26
 
31
- <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_BUTTON_TAG">
27
+ <script lang="ts">
32
28
  import { useId } from "../hooks/use-id.js"
33
29
  import { Focus } from "../utils/calculate-active-index.js"
34
30
  import { useFocusRing } from "../hooks/use-focus-ring.svelte.js"
35
31
  import { useActivePress } from "../hooks/use-active-press.svelte.js"
36
32
  import { useResolveButtonType } from "../hooks/use-resolve-button-type.svelte.js"
37
- import { useFloating } from "../internal/floating.svelte.js"
33
+ import { useFloatingReference, useFloatingReferenceProps } from "../internal/floating.svelte.js"
38
34
  import { useHover } from "../hooks/use-hover.svelte.js"
39
35
  import { mergeProps } from "../utils/render.js"
40
36
  import { MenuStates, useMenuContext } from "./context.svelte.js"
@@ -43,17 +39,19 @@
43
39
 
44
40
  const internalId = useId()
45
41
  let {
46
- ref = $bindable(),
42
+ element = $bindable(),
47
43
  id = `headlessui-menu-button-${internalId}`,
48
44
  disabled = false,
49
45
  autofocus = false,
50
46
  ...theirProps
51
- }: { as?: TTag } & MenuButtonProps<TTag> = $props()
47
+ }: MenuButtonProps = $props()
52
48
  const _state = useMenuContext("MenuButton")
53
- const { setReference, getReferenceProps: getFloatingReferenceProps } = useFloating()
49
+ const floatingReference = useFloatingReference()
50
+ const { setReference } = $derived(floatingReference)
51
+ const { getReferenceProps: getFloatingReferenceProps } = useFloatingReferenceProps()
54
52
  $effect(() => {
55
- untrack(() => _state.setButtonElement(ref ? (ref as HTMLButtonElement) : null))
56
- setReference(ref)
53
+ untrack(() => _state.setButtonElement(element ? (element as HTMLButtonElement) : null))
54
+ setReference(element)
57
55
  })
58
56
 
59
57
  const handleKeyDown = async (event: KeyboardEvent) => {
@@ -137,7 +135,7 @@
137
135
 
138
136
  const buttonType = useResolveButtonType({
139
137
  get props() {
140
- return { type: theirProps.type, as: theirProps.as }
138
+ return { type: theirProps.type, as: DEFAULT_BUTTON_TAG }
141
139
  },
142
140
  get ref() {
143
141
  return { current: _state.buttonElement }
@@ -166,4 +164,11 @@
166
164
  )
167
165
  </script>
168
166
 
169
- <ElementOrComponent {ourProps} {theirProps} {slot} defaultTag={DEFAULT_BUTTON_TAG} name="MenuButton" bind:ref />
167
+ <ElementOrComponent
168
+ {ourProps}
169
+ {theirProps}
170
+ slots={slot}
171
+ defaultTag={DEFAULT_BUTTON_TAG}
172
+ name="MenuButton"
173
+ bind:element
174
+ />
@@ -1,7 +1,6 @@
1
- import { type Snippet } from "svelte";
2
- import type { Props, ElementType } from "../utils/types.js";
1
+ import type { Props } from "../utils/types.js";
3
2
  declare const DEFAULT_BUTTON_TAG: "button";
4
- type ButtonRenderPropArg = {
3
+ export type ButtonRenderPropArg = {
5
4
  open: boolean;
6
5
  active: boolean;
7
6
  hover: boolean;
@@ -9,44 +8,14 @@ type ButtonRenderPropArg = {
9
8
  disabled: boolean;
10
9
  autofocus: boolean;
11
10
  };
12
- type ButtonPropsWeControl = "aria-controls" | "aria-expanded" | "aria-haspopup";
13
- export type MenuButtonProps<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG> = Props<TTag, ButtonRenderPropArg, ButtonPropsWeControl, {
11
+ export type MenuButtonOwnProps = {
12
+ element?: HTMLElement;
14
13
  id?: string;
15
14
  disabled?: boolean;
16
15
  autofocus?: boolean;
17
16
  type?: string;
18
- }>;
19
- export type MenuButtonChildren = Snippet<[ButtonRenderPropArg]>;
20
- declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG> {
21
- props(): {
22
- as?: TTag | undefined;
23
- } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("as" | "children" | "refName" | "class") | "disabled" | "autofocus" | "type" | "id" | ButtonPropsWeControl> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
24
- children?: import("../utils/types.js").Children<ButtonRenderPropArg> | undefined;
25
- ref?: HTMLElement;
26
- } & (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) ? {
27
- class?: import("../utils/types.js").PropsOf<TTag>["class"] | ((bag: ButtonRenderPropArg) => string) | undefined;
28
- } : {}) & {
29
- id?: string;
30
- disabled?: boolean;
31
- autofocus?: boolean;
32
- type?: string;
33
- };
34
- events(): {} & {
35
- [evt: string]: CustomEvent<any>;
36
- };
37
- slots(): {};
38
- bindings(): "ref";
39
- exports(): {};
40
- }
41
- interface $$IsomorphicComponent {
42
- 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']>> & {
43
- $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
44
- } & ReturnType<__sveltets_Render<TTag>['exports']>;
45
- <TTag extends ElementType = typeof DEFAULT_BUTTON_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
46
- $$events?: ReturnType<__sveltets_Render<TTag>['events']>;
47
- }): ReturnType<__sveltets_Render<TTag>['exports']>;
48
- z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
49
- }
50
- declare const MenuButton: $$IsomorphicComponent;
51
- type MenuButton<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG> = InstanceType<typeof MenuButton<TTag>>;
17
+ };
18
+ export type MenuButtonProps = Props<typeof DEFAULT_BUTTON_TAG, ButtonRenderPropArg, MenuButtonOwnProps>;
19
+ declare const MenuButton: import("svelte").Component<MenuButtonProps, {}, "element">;
20
+ type MenuButton = ReturnType<typeof MenuButton>;
52
21
  export default MenuButton;
@@ -1,34 +1,30 @@
1
1
  <script lang="ts" module>
2
- import { onMount, type Snippet } from "svelte"
3
- import type { ElementType, Props } from "../utils/types.js"
2
+ import { onMount } from "svelte"
3
+ import type { Props } from "../utils/types.js"
4
4
 
5
5
  const DEFAULT_HEADING_TAG = "header" as const
6
- type HeadingRenderPropArg = {}
6
+
7
7
  type HeadingPropsWeControl = "role"
8
8
 
9
- export type MenuHeadingProps<TTag extends ElementType = typeof DEFAULT_HEADING_TAG> = Props<
10
- TTag,
11
- HeadingRenderPropArg,
12
- HeadingPropsWeControl,
13
- {
14
- id?: string
15
- }
16
- >
9
+ export type MenuHeadingOwnProps = {
10
+ element?: HTMLElement
11
+ id?: string
12
+ }
17
13
 
18
- export type MenuHeadingChildren = Snippet<[HeadingRenderPropArg]>
14
+ export type MenuHeadingProps = Props<typeof DEFAULT_HEADING_TAG, {}, MenuHeadingOwnProps>
19
15
  </script>
20
16
 
21
- <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_HEADING_TAG">
17
+ <script lang="ts">
22
18
  import { useId } from "../hooks/use-id.js"
23
19
  import { useLabelContext } from "../label/context.svelte.js"
24
20
  import ElementOrComponent from "../utils/ElementOrComponent.svelte"
25
21
 
26
22
  const internalId = useId()
27
23
  let {
28
- ref = $bindable(),
24
+ element = $bindable(),
29
25
  id = `headlessui-menu-heading-${internalId}`,
30
26
  ...theirProps
31
- }: { as?: TTag } & MenuHeadingProps<TTag> = $props()
27
+ }: MenuHeadingProps = $props()
32
28
 
33
29
  const context = useLabelContext()
34
30
  onMount(() => context.register(id))
@@ -36,4 +32,4 @@
36
32
  const ourProps = $derived({ id, role: "presentation", ...context.props })
37
33
  </script>
38
34
 
39
- <ElementOrComponent {ourProps} {theirProps} defaultTag={DEFAULT_HEADING_TAG} name="MenuItem" bind:ref />
35
+ <ElementOrComponent {ourProps} {theirProps} defaultTag={DEFAULT_HEADING_TAG} name="MenuItem" bind:element />
@@ -1,39 +1,10 @@
1
- import { type Snippet } from "svelte";
2
- import type { ElementType, Props } from "../utils/types.js";
1
+ import type { Props } from "../utils/types.js";
3
2
  declare const DEFAULT_HEADING_TAG: "header";
4
- type HeadingRenderPropArg = {};
5
- type HeadingPropsWeControl = "role";
6
- export type MenuHeadingProps<TTag extends ElementType = typeof DEFAULT_HEADING_TAG> = Props<TTag, HeadingRenderPropArg, HeadingPropsWeControl, {
3
+ export type MenuHeadingOwnProps = {
4
+ element?: HTMLElement;
7
5
  id?: string;
8
- }>;
9
- export type MenuHeadingChildren = Snippet<[HeadingRenderPropArg]>;
10
- declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_HEADING_TAG> {
11
- props(): {
12
- as?: TTag | undefined;
13
- } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("as" | "children" | "refName" | "class") | "id" | "role"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
14
- children?: import("../utils/types.js").Children<HeadingRenderPropArg> | undefined;
15
- ref?: HTMLElement;
16
- } & (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) ? {
17
- class?: import("../utils/types.js").PropsOf<TTag>["class"] | ((bag: HeadingRenderPropArg) => string) | undefined;
18
- } : {}) & {
19
- id?: string;
20
- };
21
- events(): {} & {
22
- [evt: string]: CustomEvent<any>;
23
- };
24
- slots(): {};
25
- bindings(): "ref";
26
- exports(): {};
27
- }
28
- interface $$IsomorphicComponent {
29
- new <TTag extends ElementType = typeof DEFAULT_HEADING_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']>> & {
30
- $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
31
- } & ReturnType<__sveltets_Render<TTag>['exports']>;
32
- <TTag extends ElementType = typeof DEFAULT_HEADING_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
33
- $$events?: ReturnType<__sveltets_Render<TTag>['events']>;
34
- }): ReturnType<__sveltets_Render<TTag>['exports']>;
35
- z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
36
- }
37
- declare const MenuHeading: $$IsomorphicComponent;
38
- type MenuHeading<TTag extends ElementType = typeof DEFAULT_HEADING_TAG> = InstanceType<typeof MenuHeading<TTag>>;
6
+ };
7
+ export type MenuHeadingProps = Props<typeof DEFAULT_HEADING_TAG, {}, MenuHeadingOwnProps>;
8
+ declare const MenuHeading: import("svelte").Component<MenuHeadingProps, {}, "element">;
9
+ type MenuHeading = ReturnType<typeof MenuHeading>;
39
10
  export default MenuHeading;