@pzerelles/headlessui-svelte 2.1.2-next.8 → 2.1.3-next.1

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 (275) hide show
  1. package/dist/button/Button.svelte +82 -55
  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 +180 -122
  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 +10 -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 +49 -37
  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 +40 -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 +67 -37
  22. package/dist/dialog/Dialog.svelte.d.ts +7 -45
  23. package/dist/dialog/DialogBackdrop.svelte +30 -16
  24. package/dist/dialog/DialogBackdrop.svelte.d.ts +8 -33
  25. package/dist/dialog/DialogPanel.svelte +63 -29
  26. package/dist/dialog/DialogPanel.svelte.d.ts +8 -34
  27. package/dist/dialog/DialogTitle.svelte +48 -24
  28. package/dist/dialog/DialogTitle.svelte.d.ts +9 -30
  29. package/dist/dialog/InternalDialog.svelte +286 -221
  30. package/dist/dialog/InternalDialog.svelte.d.ts +3 -41
  31. package/dist/dialog/context.svelte.js +2 -2
  32. package/dist/dialog/index.d.ts +4 -4
  33. package/dist/dialog/index.js +4 -4
  34. package/dist/disclosure/Disclosure.svelte +59 -0
  35. package/dist/disclosure/Disclosure.svelte.d.ts +13 -0
  36. package/dist/disclosure/DisclosureButton.svelte +191 -0
  37. package/dist/disclosure/DisclosureButton.svelte.d.ts +19 -0
  38. package/dist/disclosure/DisclosurePanel.svelte +99 -0
  39. package/dist/disclosure/DisclosurePanel.svelte.d.ts +16 -0
  40. package/dist/disclosure/context.svelte.d.ts +32 -0
  41. package/dist/disclosure/context.svelte.js +94 -0
  42. package/dist/disclosure/index.d.ts +3 -0
  43. package/dist/disclosure/index.js +3 -0
  44. package/dist/field/Field.svelte +51 -27
  45. package/dist/field/Field.svelte.d.ts +7 -34
  46. package/dist/field/index.d.ts +1 -1
  47. package/dist/fieldset/Fieldset.svelte +46 -30
  48. package/dist/fieldset/Fieldset.svelte.d.ts +8 -35
  49. package/dist/fieldset/index.d.ts +1 -1
  50. package/dist/focus-trap/FocusTrap.svelte +428 -299
  51. package/dist/focus-trap/FocusTrap.svelte.d.ts +9 -39
  52. package/dist/{internal/close-provider.d.ts → hooks/use-close.svelte.d.ts} +1 -1
  53. package/dist/hooks/use-controllable.svelte.js +3 -2
  54. package/dist/hooks/use-did-element-move.svelte.js +5 -10
  55. package/dist/hooks/use-disabled.d.ts +6 -1
  56. package/dist/hooks/use-disabled.js +10 -5
  57. package/dist/hooks/use-element-size.svelte.js +1 -1
  58. package/dist/hooks/use-event-listener.svelte.d.ts +1 -1
  59. package/dist/hooks/use-event-listener.svelte.js +3 -1
  60. package/dist/hooks/use-focus-ring.svelte.js +1 -1
  61. package/dist/hooks/use-inert-others.svelte.js +10 -10
  62. package/dist/hooks/use-is-top-layer.svelte.js +2 -2
  63. package/dist/hooks/use-resolve-button-type.svelte.js +0 -1
  64. package/dist/hooks/use-root-containers.svelte.d.ts +2 -2
  65. package/dist/hooks/use-root-containers.svelte.js +7 -6
  66. package/dist/hooks/use-tab-direction.svelte.js +1 -1
  67. package/dist/hooks/use-transition.svelte.d.ts +1 -0
  68. package/dist/hooks/use-transition.svelte.js +32 -7
  69. package/dist/index.d.ts +1 -20
  70. package/dist/index.js +2 -20
  71. package/dist/input/Input.svelte +93 -54
  72. package/dist/input/Input.svelte.d.ts +17 -32
  73. package/dist/input/index.d.ts +1 -1
  74. package/dist/input/index.js +1 -1
  75. package/dist/internal/FloatingProvider.svelte +17 -0
  76. package/dist/internal/FloatingProvider.svelte.d.ts +8 -0
  77. package/dist/internal/FocusSentinel.svelte +49 -40
  78. package/dist/internal/FocusSentinel.svelte.d.ts +4 -18
  79. package/dist/internal/ForcePortalRoot.svelte +11 -3
  80. package/dist/internal/ForcePortalRoot.svelte.d.ts +4 -18
  81. package/dist/internal/FormFields.svelte +31 -20
  82. package/dist/internal/FormFields.svelte.d.ts +4 -18
  83. package/dist/internal/FormFieldsProvider.svelte +23 -0
  84. package/dist/internal/FormFieldsProvider.svelte.d.ts +10 -0
  85. package/dist/internal/FormResolver.svelte +21 -16
  86. package/dist/internal/FormResolver.svelte.d.ts +4 -18
  87. package/dist/internal/Hidden.svelte +48 -24
  88. package/dist/internal/Hidden.svelte.d.ts +8 -35
  89. package/dist/internal/HoistFormFields.svelte +7 -4
  90. package/dist/internal/HoistFormFields.svelte.d.ts +4 -18
  91. package/dist/internal/MainTreeProvider.svelte +91 -38
  92. package/dist/internal/MainTreeProvider.svelte.d.ts +4 -18
  93. package/dist/internal/Portal.svelte +18 -14
  94. package/dist/internal/Portal.svelte.d.ts +4 -18
  95. package/dist/internal/floating-provider.svelte.d.ts +3 -0
  96. package/dist/internal/floating-provider.svelte.js +206 -0
  97. package/dist/internal/floating.svelte.d.ts +47 -23
  98. package/dist/internal/floating.svelte.js +90 -272
  99. package/dist/internal/frozen.svelte.js +1 -1
  100. package/dist/label/Label.svelte +96 -58
  101. package/dist/label/Label.svelte.d.ts +8 -33
  102. package/dist/label/context.svelte.js +1 -1
  103. package/dist/label/index.d.ts +1 -1
  104. package/dist/legend/Legend.svelte +26 -4
  105. package/dist/legend/Legend.svelte.d.ts +10 -34
  106. package/dist/listbox/Listbox.svelte +518 -397
  107. package/dist/listbox/Listbox.svelte.d.ts +15 -91
  108. package/dist/listbox/ListboxButton.svelte +179 -128
  109. package/dist/listbox/ListboxButton.svelte.d.ts +8 -38
  110. package/dist/listbox/ListboxOption.svelte +183 -126
  111. package/dist/listbox/ListboxOption.svelte.d.ts +16 -32
  112. package/dist/listbox/ListboxOptions.svelte +409 -259
  113. package/dist/listbox/ListboxOptions.svelte.d.ts +8 -43
  114. package/dist/listbox/ListboxSelectedOption.svelte +44 -23
  115. package/dist/listbox/ListboxSelectedOption.svelte.d.ts +14 -39
  116. package/dist/listbox/context.svelte.d.ts +76 -0
  117. package/dist/listbox/context.svelte.js +36 -0
  118. package/dist/listbox/index.d.ts +5 -5
  119. package/dist/listbox/index.js +4 -4
  120. package/dist/menu/Menu.svelte +70 -225
  121. package/dist/menu/Menu.svelte.d.ts +7 -37
  122. package/dist/menu/MenuButton.svelte +163 -116
  123. package/dist/menu/MenuButton.svelte.d.ts +8 -39
  124. package/dist/menu/MenuHeading.svelte +31 -15
  125. package/dist/menu/MenuHeading.svelte.d.ts +7 -36
  126. package/dist/menu/MenuItem.svelte +141 -108
  127. package/dist/menu/MenuItem.svelte.d.ts +9 -39
  128. package/dist/menu/MenuItems.svelte +298 -225
  129. package/dist/menu/MenuItems.svelte.d.ts +8 -43
  130. package/dist/menu/MenuSection.svelte +24 -10
  131. package/dist/menu/MenuSection.svelte.d.ts +7 -33
  132. package/dist/menu/MenuSeparator.svelte +18 -5
  133. package/dist/menu/MenuSeparator.svelte.d.ts +7 -33
  134. package/dist/menu/context.svelte.d.ts +2 -1
  135. package/dist/menu/context.svelte.js +213 -2
  136. package/dist/menu/index.d.ts +7 -7
  137. package/dist/menu/index.js +3 -3
  138. package/dist/popover/Popover.svelte +231 -0
  139. package/dist/popover/Popover.svelte.d.ts +15 -0
  140. package/dist/popover/PopoverBackdrop.svelte +83 -0
  141. package/dist/popover/PopoverBackdrop.svelte.d.ts +17 -0
  142. package/dist/popover/PopoverButton.svelte +324 -0
  143. package/dist/popover/PopoverButton.svelte.d.ts +21 -0
  144. package/dist/popover/PopoverGroup.svelte +66 -0
  145. package/dist/popover/PopoverGroup.svelte.d.ts +9 -0
  146. package/dist/popover/PopoverHoverArea.svelte +169 -0
  147. package/dist/popover/PopoverHoverArea.svelte.d.ts +18 -0
  148. package/dist/popover/PopoverPanel.svelte +359 -0
  149. package/dist/popover/PopoverPanel.svelte.d.ts +22 -0
  150. package/dist/popover/context.svelte.d.ts +51 -0
  151. package/dist/popover/context.svelte.js +108 -0
  152. package/dist/popover/index.d.ts +7 -0
  153. package/dist/popover/index.js +7 -0
  154. package/dist/portal/InternalPortal.svelte +149 -86
  155. package/dist/portal/InternalPortal.svelte.d.ts +7 -34
  156. package/dist/portal/Portal.svelte +8 -4
  157. package/dist/portal/Portal.svelte.d.ts +3 -22
  158. package/dist/portal/PortalGroup.svelte +23 -10
  159. package/dist/portal/PortalGroup.svelte.d.ts +5 -34
  160. package/dist/portal/PortalWrapper.svelte +10 -0
  161. package/dist/portal/PortalWrapper.svelte.d.ts +9 -0
  162. package/dist/radio-group/Radio.svelte +142 -0
  163. package/dist/radio-group/Radio.svelte.d.ts +35 -0
  164. package/dist/radio-group/RadioGroup.svelte +222 -0
  165. package/dist/radio-group/RadioGroup.svelte.d.ts +34 -0
  166. package/dist/radio-group/RadioOption.svelte +145 -0
  167. package/dist/radio-group/RadioOption.svelte.d.ts +37 -0
  168. package/dist/radio-group/contest.svelte.d.ts +30 -0
  169. package/dist/radio-group/contest.svelte.js +40 -0
  170. package/dist/radio-group/index.d.ts +3 -0
  171. package/dist/radio-group/index.js +3 -0
  172. package/dist/select/Select.svelte +112 -0
  173. package/dist/select/Select.svelte.d.ts +21 -0
  174. package/dist/select/index.d.ts +1 -0
  175. package/dist/select/index.js +1 -0
  176. package/dist/switch/Switch.svelte +179 -133
  177. package/dist/switch/Switch.svelte.d.ts +9 -42
  178. package/dist/switch/SwitchGroup.svelte +45 -32
  179. package/dist/switch/SwitchGroup.svelte.d.ts +8 -30
  180. package/dist/switch/index.d.ts +1 -1
  181. package/dist/switch/index.js +1 -1
  182. package/dist/tabs/Tab.svelte +193 -144
  183. package/dist/tabs/Tab.svelte.d.ts +8 -36
  184. package/dist/tabs/TabGroup.svelte +78 -213
  185. package/dist/tabs/TabGroup.svelte.d.ts +7 -57
  186. package/dist/tabs/TabList.svelte +29 -12
  187. package/dist/tabs/TabList.svelte.d.ts +8 -31
  188. package/dist/tabs/TabPanel.svelte +71 -46
  189. package/dist/tabs/TabPanel.svelte.d.ts +8 -38
  190. package/dist/tabs/TabPanels.svelte +21 -8
  191. package/dist/tabs/TabPanels.svelte.d.ts +8 -30
  192. package/dist/tabs/context.svelte.d.ts +31 -0
  193. package/dist/tabs/context.svelte.js +134 -0
  194. package/dist/tabs/index.d.ts +5 -5
  195. package/dist/tabs/index.js +4 -4
  196. package/dist/textarea/Textarea.svelte +89 -55
  197. package/dist/textarea/Textarea.svelte.d.ts +17 -32
  198. package/dist/textarea/index.d.ts +1 -1
  199. package/dist/textarea/index.js +1 -1
  200. package/dist/transition/InternalTransitionChild.svelte +274 -171
  201. package/dist/transition/InternalTransitionChild.svelte.d.ts +6 -37
  202. package/dist/transition/Transition.svelte +97 -68
  203. package/dist/transition/Transition.svelte.d.ts +8 -38
  204. package/dist/transition/TransitionChild.svelte +33 -12
  205. package/dist/transition/TransitionChild.svelte.d.ts +11 -38
  206. package/dist/transition/context.svelte.js +11 -11
  207. package/dist/transition/index.d.ts +2 -2
  208. package/dist/transition/index.js +2 -2
  209. package/dist/utils/DisabledProvider.svelte +10 -0
  210. package/dist/utils/DisabledProvider.svelte.d.ts +8 -0
  211. package/dist/utils/ElementOrComponent.svelte +86 -24
  212. package/dist/utils/ElementOrComponent.svelte.d.ts +19 -30
  213. package/dist/utils/StableCollection.svelte +54 -36
  214. package/dist/utils/StableCollection.svelte.d.ts +4 -18
  215. package/dist/utils/floating-ui/svelte/components/FloatingNode.svelte +32 -0
  216. package/dist/utils/floating-ui/svelte/components/FloatingNode.svelte.d.ts +8 -0
  217. package/dist/utils/floating-ui/svelte/components/FloatingTree.svelte +94 -0
  218. package/dist/utils/floating-ui/svelte/components/FloatingTree.svelte.d.ts +26 -0
  219. package/dist/utils/floating-ui/svelte/hooks/useFloating.svelte.d.ts +6 -0
  220. package/dist/utils/floating-ui/svelte/hooks/useFloating.svelte.js +158 -0
  221. package/dist/utils/floating-ui/svelte/hooks/useFloatingRootContext.svelte.d.ts +11 -0
  222. package/dist/utils/floating-ui/svelte/hooks/useFloatingRootContext.svelte.js +53 -0
  223. package/dist/utils/floating-ui/svelte/hooks/useId.svelte.d.ts +9 -0
  224. package/dist/utils/floating-ui/svelte/hooks/useId.svelte.js +28 -0
  225. package/dist/utils/floating-ui/svelte/hooks/useInteractions.svelte.d.ts +23 -0
  226. package/dist/utils/floating-ui/svelte/hooks/useInteractions.svelte.js +72 -0
  227. package/dist/utils/floating-ui/svelte/index.d.ts +4 -0
  228. package/dist/utils/floating-ui/svelte/index.js +4 -0
  229. package/dist/utils/floating-ui/svelte/inner.svelte.d.ts +83 -0
  230. package/dist/utils/floating-ui/svelte/inner.svelte.js +178 -0
  231. package/dist/utils/floating-ui/svelte/types.d.ts +114 -0
  232. package/dist/utils/floating-ui/svelte/utils/createPubSub.d.ts +5 -0
  233. package/dist/utils/floating-ui/svelte/utils/createPubSub.js +14 -0
  234. package/dist/utils/floating-ui/svelte/utils/getFloatingFocusElement.d.ts +2 -0
  235. package/dist/utils/floating-ui/svelte/utils/getFloatingFocusElement.js +13 -0
  236. package/dist/utils/floating-ui/svelte/utils/log.d.ts +2 -0
  237. package/dist/utils/floating-ui/svelte/utils/log.js +19 -0
  238. package/dist/utils/floating-ui/svelte/utils.d.ts +19 -0
  239. package/dist/utils/floating-ui/svelte/utils.js +136 -0
  240. package/dist/utils/floating-ui/svelte-dom/arrow.d.ts +22 -0
  241. package/dist/utils/floating-ui/svelte-dom/arrow.js +29 -0
  242. package/dist/utils/floating-ui/svelte-dom/index.d.ts +1 -0
  243. package/dist/utils/floating-ui/svelte-dom/index.js +1 -0
  244. package/dist/utils/floating-ui/svelte-dom/types.d.ts +80 -0
  245. package/dist/utils/floating-ui/svelte-dom/types.js +3 -0
  246. package/dist/utils/floating-ui/svelte-dom/useFloating.svelte.d.ts +6 -0
  247. package/dist/utils/floating-ui/svelte-dom/useFloating.svelte.js +183 -0
  248. package/dist/utils/floating-ui/svelte-dom/utils/deepEqual.d.ts +1 -0
  249. package/dist/utils/floating-ui/svelte-dom/utils/deepEqual.js +50 -0
  250. package/dist/utils/floating-ui/svelte-dom/utils/getDPR.d.ts +1 -0
  251. package/dist/utils/floating-ui/svelte-dom/utils/getDPR.js +7 -0
  252. package/dist/utils/floating-ui/svelte-dom/utils/roundByDPR.d.ts +1 -0
  253. package/dist/utils/floating-ui/svelte-dom/utils/roundByDPR.js +5 -0
  254. package/dist/utils/floating-ui/svelte-dom/utils/useLatestRef.d.ts +4 -0
  255. package/dist/utils/floating-ui/svelte-dom/utils/useLatestRef.js +7 -0
  256. package/dist/utils/id.d.ts +1 -1
  257. package/dist/utils/id.js +1 -1
  258. package/dist/utils/index.d.ts +3 -0
  259. package/dist/utils/index.js +3 -0
  260. package/dist/utils/state.js +4 -4
  261. package/dist/utils/style.d.ts +2 -0
  262. package/dist/utils/style.js +6 -0
  263. package/dist/utils/types.d.ts +13 -19
  264. package/package.json +319 -55
  265. package/dist/combobox/Combobox.svelte +0 -6
  266. package/dist/combobox/Combobox.svelte.d.ts +0 -50
  267. package/dist/internal/id.d.ts +0 -8
  268. package/dist/internal/id.js +0 -11
  269. package/dist/listbox/ListboxStates.d.ts +0 -12
  270. package/dist/listbox/ListboxStates.js +0 -15
  271. package/dist/utils/Generic.svelte +0 -44
  272. package/dist/utils/Generic.svelte.d.ts +0 -35
  273. package/dist/utils/alternative-types.d.ts +0 -21
  274. /package/dist/{internal/close-provider.js → hooks/use-close.svelte.js} +0 -0
  275. /package/dist/utils/{alternative-types.js → floating-ui/svelte/types.js} +0 -0
@@ -1,61 +1,88 @@
1
- <script lang="ts" module>const DEFAULT_BUTTON_TAG = "button";
1
+ <script lang="ts" module>
2
+ import type { Props } from "../utils/types.js"
3
+
4
+ const DEFAULT_BUTTON_TAG = "button" as const
5
+
6
+ export type ButtonRenderPropArg = {
7
+ disabled: boolean
8
+ hover: boolean
9
+ focus: boolean
10
+ active: boolean
11
+ autofocus: boolean
12
+ }
13
+
14
+ export type ButtonOwnProps = {
15
+ element?: HTMLElement
16
+ disabled?: boolean
17
+ autofocus?: boolean
18
+ type?: "button" | "submit" | "reset"
19
+ }
20
+
21
+ export type ButtonProps = Props<typeof DEFAULT_BUTTON_TAG, ButtonRenderPropArg, ButtonOwnProps>
2
22
  </script>
3
23
 
4
- <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_BUTTON_TAG">import { useActivePress } from "../hooks/use-active-press.svelte.js";
5
- import { useFocusRing } from "../hooks/use-focus-ring.svelte.js";
6
- import { useDisabled } from "../hooks/use-disabled.js";
7
- import { useHover } from "../hooks/use-hover.svelte.js";
8
- import { mergeProps } from "../utils/render.js";
9
- import ElementOrComponent from "../utils/ElementOrComponent.svelte";
10
- const providedDisabled = useDisabled();
11
- let {
12
- ref = $bindable(),
13
- disabled: ownDisabled = false,
14
- autofocus = false,
15
- type = "button",
16
- ...theirProps
17
- } = $props();
18
- const disabled = $derived(providedDisabled.value || ownDisabled);
19
- const { isHovered: hover, hoverProps } = $derived(
20
- useHover({
21
- get disabled() {
22
- return disabled;
23
- }
24
- })
25
- );
26
- const { pressed: active, pressProps } = $derived(
27
- useActivePress({
28
- get disabled() {
29
- return disabled;
30
- }
31
- })
32
- );
33
- const { isFocusVisible: focus, focusProps } = $derived(
34
- useFocusRing({
35
- get autofocus() {
36
- return autofocus;
37
- }
24
+ <script lang="ts">
25
+ import { useActivePress } from "../hooks/use-active-press.svelte.js"
26
+ import { useFocusRing } from "../hooks/use-focus-ring.svelte.js"
27
+ import { useDisabled } from "../hooks/use-disabled.js"
28
+ import { useHover } from "../hooks/use-hover.svelte.js"
29
+ import { mergeProps } from "../utils/render.js"
30
+ import ElementOrComponent from "../utils/ElementOrComponent.svelte"
31
+
32
+ const providedDisabled = useDisabled()
33
+
34
+ let {
35
+ element = $bindable(),
36
+ disabled: ownDisabled = false,
37
+ autofocus = false,
38
+ type = "button",
39
+ ...theirProps
40
+ }: ButtonProps = $props()
41
+
42
+ const disabled = $derived(providedDisabled.current || ownDisabled)
43
+
44
+ const { isHovered: hover, hoverProps } = $derived(
45
+ useHover({
46
+ get disabled() {
47
+ return disabled
48
+ },
49
+ })
50
+ )
51
+ const { pressed: active, pressProps } = $derived(
52
+ useActivePress({
53
+ get disabled() {
54
+ return disabled
55
+ },
56
+ })
57
+ )
58
+ const { isFocusVisible: focus, focusProps } = $derived(
59
+ useFocusRing({
60
+ get autofocus() {
61
+ return autofocus
62
+ },
63
+ })
64
+ )
65
+
66
+ const slots = $derived({
67
+ disabled,
68
+ hover,
69
+ focus,
70
+ active,
71
+ autofocus,
38
72
  })
39
- );
40
- const slot = $derived({
41
- disabled,
42
- hover,
43
- focus,
44
- active,
45
- autofocus
46
- });
47
- const ourProps = $derived(
48
- mergeProps(
49
- {
50
- type,
51
- disabled: disabled || void 0,
52
- autofocus
53
- },
54
- focusProps,
55
- hoverProps,
56
- pressProps
73
+
74
+ const ourProps = $derived(
75
+ mergeProps(
76
+ {
77
+ type,
78
+ disabled: disabled || undefined,
79
+ autofocus,
80
+ },
81
+ focusProps,
82
+ hoverProps,
83
+ pressProps
84
+ )
57
85
  )
58
- );
59
86
  </script>
60
87
 
61
- <ElementOrComponent {ourProps} {theirProps} {slot} defaultTag={DEFAULT_BUTTON_TAG} name="Button" bind:ref />
88
+ <ElementOrComponent {ourProps} {theirProps} {slots} defaultTag={DEFAULT_BUTTON_TAG} name="Button" bind:element />
@@ -1,47 +1,19 @@
1
- import type { Props, ElementType } from "../utils/types.js";
1
+ import type { Props } from "../utils/types.js";
2
2
  declare const DEFAULT_BUTTON_TAG: "button";
3
- type ButtonRenderPropArg = {
3
+ export type ButtonRenderPropArg = {
4
4
  disabled: boolean;
5
5
  hover: boolean;
6
6
  focus: boolean;
7
7
  active: boolean;
8
8
  autofocus: boolean;
9
9
  };
10
- type ButtonPropsWeControl = never;
11
- export type ButtonProps<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG> = Props<TTag, ButtonRenderPropArg, ButtonPropsWeControl, {
10
+ export type ButtonOwnProps = {
11
+ element?: HTMLElement;
12
12
  disabled?: boolean;
13
13
  autofocus?: boolean;
14
14
  type?: "button" | "submit" | "reset";
15
- }>;
16
- declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG> {
17
- props(): {
18
- as?: TTag | undefined;
19
- } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("as" | "children" | "refName" | "class") | "disabled" | "autofocus" | "type"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
20
- children?: import("../utils/types.js").Children<ButtonRenderPropArg> | undefined;
21
- ref?: HTMLElement;
22
- } & (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) ? {
23
- class?: import("../utils/types.js").PropsOf<TTag>["class"] | ((bag: ButtonRenderPropArg) => string) | undefined;
24
- } : {}) & {
25
- disabled?: boolean;
26
- autofocus?: boolean;
27
- type?: "button" | "submit" | "reset";
28
- };
29
- events(): {} & {
30
- [evt: string]: CustomEvent<any>;
31
- };
32
- slots(): {};
33
- bindings(): "ref";
34
- exports(): {};
35
- }
36
- interface $$IsomorphicComponent {
37
- 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']>> & {
38
- $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
39
- } & ReturnType<__sveltets_Render<TTag>['exports']>;
40
- <TTag extends ElementType = typeof DEFAULT_BUTTON_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
41
- $$events?: ReturnType<__sveltets_Render<TTag>['events']>;
42
- }): ReturnType<__sveltets_Render<TTag>['exports']>;
43
- z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
44
- }
45
- declare const Button: $$IsomorphicComponent;
46
- type Button<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG> = InstanceType<typeof Button<TTag>>;
15
+ };
16
+ export type ButtonProps = Props<typeof DEFAULT_BUTTON_TAG, ButtonRenderPropArg, ButtonOwnProps>;
17
+ declare const Button: import("svelte").Component<ButtonProps, {}, "element">;
18
+ type Button = ReturnType<typeof Button>;
47
19
  export default Button;
@@ -1 +1 @@
1
- export { default as Button, type ButtonProps } from "./Button.svelte";
1
+ export { default as Button, type ButtonProps, type ButtonRenderPropArg as ButtonSlot, type ButtonOwnProps, } from "./Button.svelte";
@@ -1 +1 @@
1
- export { default as Button } from "./Button.svelte";
1
+ export { default as Button, } from "./Button.svelte";
@@ -1,129 +1,186 @@
1
- <script lang="ts" module>let DEFAULT_CHECKBOX_TAG = "span";
1
+ <script lang="ts" module>
2
+ import type { Props } from "../utils/types.js"
3
+
4
+ const DEFAULT_CHECKBOX_TAG = "span" as const
5
+
6
+ export type CheckboxRenderPropArg = {
7
+ checked: boolean
8
+ changing: boolean
9
+ focus: boolean
10
+ active: boolean
11
+ hover: boolean
12
+ autofocus: boolean
13
+ disabled: boolean
14
+ indeterminate: boolean
15
+ }
16
+
17
+ type CheckboxPropsWeControl =
18
+ | "aria-checked"
19
+ | "aria-describedby"
20
+ | "aria-disabled"
21
+ | "aria-labelledby"
22
+ | "role"
23
+ | "tabIndex"
24
+
25
+ export type CheckboxOwnProps<TType = string> = {
26
+ element?: HTMLElement
27
+ id?: string
28
+ value?: TType
29
+ disabled?: boolean
30
+ indeterminate?: boolean
31
+ checked?: boolean
32
+ defaultChecked?: boolean
33
+ autofocus?: boolean
34
+ form?: string
35
+ name?: string
36
+ onchange?: (checked: boolean) => void
37
+ }
38
+
39
+ export type CheckboxProps<TType = string> = Props<
40
+ typeof DEFAULT_CHECKBOX_TAG,
41
+ CheckboxRenderPropArg,
42
+ CheckboxOwnProps<TType>
43
+ >
2
44
  </script>
3
45
 
4
- <script lang="ts" generics="TType, TTag extends ElementType = typeof DEFAULT_CHECKBOX_TAG">import { tick } from "svelte";
5
- import { attemptSubmit } from "../utils/form.js";
6
- import { getIdContext, htmlid } from "../utils/id.js";
7
- import { useActivePress } from "../hooks/use-active-press.svelte.js";
8
- import { useFocusRing } from "../hooks/use-focus-ring.svelte.js";
9
- import FormFields from "../internal/FormFields.svelte";
10
- import { useDisabled } from "../hooks/use-disabled.js";
11
- import { useLabelledBy } from "../label/context.svelte.js";
12
- import { useDescribedBy } from "../description/context.svelte.js";
13
- import { useHover } from "../hooks/use-hover.svelte.js";
14
- import { mergeProps } from "../utils/render.js";
15
- import ElementOrComponent from "../utils/ElementOrComponent.svelte";
16
- import { useControllable } from "../hooks/use-controllable.svelte.js";
17
- const internalId = htmlid();
18
- const providedId = getIdContext();
19
- const providedDisabled = useDisabled();
20
- let {
21
- ref = $bindable(),
22
- id = providedId || `headlessui-checkbox-${internalId}`,
23
- disabled: theirDisabled = false,
24
- autofocus = false,
25
- checked: controlledChecked = $bindable(),
26
- defaultChecked: _defaultChecked,
27
- onchange: controlledOnChange,
28
- name,
29
- value,
30
- form,
31
- indeterminate = false,
32
- ...theirProps
33
- } = $props();
34
- const defaultChecked = _defaultChecked;
35
- const controllable = useControllable(
36
- {
37
- get controlledValue() {
38
- return controlledChecked;
46
+ <script lang="ts" generics="TType">
47
+ import { tick } from "svelte"
48
+ import { attemptSubmit } from "../utils/form.js"
49
+ import { useProvidedId, htmlid } from "../utils/id.js"
50
+ import { useActivePress } from "../hooks/use-active-press.svelte.js"
51
+ import { useFocusRing } from "../hooks/use-focus-ring.svelte.js"
52
+ import FormFields from "../internal/FormFields.svelte"
53
+ import { useDisabled } from "../hooks/use-disabled.js"
54
+ import { useLabelledBy } from "../label/context.svelte.js"
55
+ import { useDescribedBy } from "../description/context.svelte.js"
56
+ import { useHover } from "../hooks/use-hover.svelte.js"
57
+ import { mergeProps } from "../utils/render.js"
58
+ import ElementOrComponent from "../utils/ElementOrComponent.svelte"
59
+ import { useControllable } from "../hooks/use-controllable.svelte.js"
60
+
61
+ const internalId = htmlid()
62
+ const providedId = useProvidedId()
63
+ const providedDisabled = useDisabled()
64
+
65
+ let {
66
+ element = $bindable(),
67
+ id = providedId || `headlessui-checkbox-${internalId}`,
68
+ disabled: theirDisabled = false,
69
+ autofocus = false,
70
+ checked: controlledChecked = $bindable(),
71
+ defaultChecked: _defaultChecked,
72
+ onchange: controlledOnChange,
73
+ name,
74
+ value,
75
+ form,
76
+ indeterminate = false,
77
+ ...theirProps
78
+ }: CheckboxProps<TType> = $props()
79
+
80
+ const defaultChecked = $derived(_defaultChecked)
81
+ const controllable = useControllable(
82
+ {
83
+ get controlledValue() {
84
+ return controlledChecked
85
+ },
86
+ set controlledValue(checked) {
87
+ controlledChecked = checked
88
+ },
39
89
  },
40
- set controlledValue(checked2) {
41
- controlledChecked = checked2;
42
- }
43
- },
44
- controlledOnChange,
45
- defaultChecked ?? false
46
- );
47
- const { value: checked, onchange } = $derived(controllable);
48
- const disabled = $derived(providedDisabled?.value ?? theirDisabled);
49
- const { isHovered: hover, hoverProps } = $derived(
50
- useHover({
51
- get disabled() {
52
- return disabled;
53
- }
54
- })
55
- );
56
- const { pressed: active, pressProps } = $derived(
57
- useActivePress({
58
- get disabled() {
59
- return disabled;
60
- }
61
- })
62
- );
63
- const { isFocusVisible: focus, focusProps } = $derived(
64
- useFocusRing({
65
- get autofocus() {
66
- return autofocus;
90
+ (() => controlledOnChange)(),
91
+ (() => defaultChecked)() ?? false
92
+ )
93
+ const { value: checked, onchange } = $derived(controllable)
94
+
95
+ const disabled = $derived(providedDisabled.current || theirDisabled)
96
+
97
+ const { isHovered: hover, hoverProps } = $derived(
98
+ useHover({
99
+ get disabled() {
100
+ return disabled
101
+ },
102
+ })
103
+ )
104
+ const { pressed: active, pressProps } = $derived(
105
+ useActivePress({
106
+ get disabled() {
107
+ return disabled
108
+ },
109
+ })
110
+ )
111
+ const { isFocusVisible: focus, focusProps } = $derived(
112
+ useFocusRing({
113
+ get autofocus() {
114
+ return autofocus
115
+ },
116
+ })
117
+ )
118
+
119
+ const labelledBy = useLabelledBy()
120
+ const describedBy = useDescribedBy()
121
+
122
+ let changing = $state(false)
123
+
124
+ const toggle = () => {
125
+ changing = true
126
+ onchange?.(!checked)
127
+ tick().then(() => {
128
+ changing = false
129
+ })
130
+ }
131
+
132
+ const handleClick = (event: MouseEvent) => {
133
+ if (disabled) return event.preventDefault()
134
+ event.preventDefault()
135
+ toggle()
136
+ }
137
+
138
+ const handleKeyUp = (event: KeyboardEvent) => {
139
+ if (event.key === " ") {
140
+ event.preventDefault()
141
+ toggle()
142
+ } else if (event.key === "Enter") {
143
+ if (event.currentTarget) attemptSubmit(event.currentTarget as HTMLElement)
67
144
  }
68
- })
69
- );
70
- const labelledBy = useLabelledBy();
71
- const describedBy = useDescribedBy();
72
- let changing = $state(false);
73
- const toggle = () => {
74
- changing = true;
75
- onchange?.(!checked);
76
- tick().then(() => {
77
- changing = false;
78
- });
79
- };
80
- const handleClick = (event) => {
81
- if (disabled) return event.preventDefault();
82
- event.preventDefault();
83
- toggle();
84
- };
85
- const handleKeyUp = (event) => {
86
- if (event.key === " ") {
87
- event.preventDefault();
88
- toggle();
89
- } else if (event.key === "Enter") {
90
- if (event.currentTarget) attemptSubmit(event.currentTarget);
91
145
  }
92
- };
93
- const handleKeyPress = (event) => event.preventDefault();
94
- const slot = $derived({
95
- checked,
96
- changing,
97
- focus,
98
- active,
99
- hover,
100
- autofocus: autofocus ?? false,
101
- disabled,
102
- indeterminate
103
- });
104
- const ourProps = $derived(
105
- mergeProps(
106
- {
107
- id,
108
- role: "checkbox",
109
- "aria-checked": indeterminate ? "mixed" : checked ? true : false,
110
- "aria-labelledby": labelledBy.value,
111
- "aria-describedby": describedBy.value,
112
- "aria-disabled": disabled ? true : void 0,
113
- tabindex: disabled ? void 0 : 0,
114
- onkeyup: disabled ? void 0 : handleKeyUp,
115
- onkeypress: disabled ? void 0 : handleKeyPress,
116
- onclick: disabled ? void 0 : handleClick
117
- },
118
- focusProps,
119
- hoverProps,
120
- pressProps
146
+
147
+ const handleKeyPress = (event: KeyboardEvent) => event.preventDefault()
148
+
149
+ const slot = $derived({
150
+ checked,
151
+ changing,
152
+ focus,
153
+ active,
154
+ hover,
155
+ autofocus: autofocus ?? false,
156
+ disabled,
157
+ indeterminate,
158
+ })
159
+
160
+ const ourProps = $derived(
161
+ mergeProps(
162
+ {
163
+ id,
164
+ role: "checkbox",
165
+ "aria-checked": indeterminate ? ("mixed" as "mixed") : checked ? true : false,
166
+ "aria-labelledby": labelledBy.value,
167
+ "aria-describedby": describedBy.value,
168
+ "aria-disabled": disabled ? true : undefined,
169
+ tabindex: disabled ? undefined : 0,
170
+ onkeyup: disabled ? undefined : handleKeyUp,
171
+ onkeypress: disabled ? undefined : handleKeyPress,
172
+ onclick: disabled ? undefined : handleClick,
173
+ },
174
+ focusProps,
175
+ hoverProps,
176
+ pressProps
177
+ )
121
178
  )
122
- );
123
- const reset = $derived(() => {
124
- if (defaultChecked === void 0) return;
125
- return onchange?.(defaultChecked);
126
- });
179
+
180
+ const reset = $derived(() => {
181
+ if (defaultChecked === undefined) return
182
+ return onchange?.(defaultChecked)
183
+ })
127
184
  </script>
128
185
 
129
186
  {#if name}
@@ -135,12 +192,13 @@ const reset = $derived(() => {
135
192
  onReset={reset}
136
193
  />
137
194
  {/if}
195
+
138
196
  <ElementOrComponent
139
197
  {ourProps}
140
198
  {theirProps}
141
- {slot}
199
+ slots={slot}
142
200
  defaultTag={DEFAULT_CHECKBOX_TAG}
143
201
  name="Checkbox"
144
- bind:ref
202
+ bind:element
145
203
  bind:value
146
204
  />
@@ -1,6 +1,6 @@
1
- import type { ElementType, Props } from "../utils/types.js";
2
- declare let DEFAULT_CHECKBOX_TAG: "span";
3
- type CheckboxRenderPropArg = {
1
+ import type { Props } from "../utils/types.js";
2
+ declare const DEFAULT_CHECKBOX_TAG: "span";
3
+ export type CheckboxRenderPropArg = {
4
4
  checked: boolean;
5
5
  changing: boolean;
6
6
  focus: boolean;
@@ -10,8 +10,8 @@ type CheckboxRenderPropArg = {
10
10
  disabled: boolean;
11
11
  indeterminate: boolean;
12
12
  };
13
- type CheckboxPropsWeControl = "aria-checked" | "aria-describedby" | "aria-disabled" | "aria-labelledby" | "role" | "tabIndex";
14
- export type CheckboxProps<TTag extends ElementType = typeof DEFAULT_CHECKBOX_TAG, TType = string> = Props<TTag, CheckboxRenderPropArg, CheckboxPropsWeControl, {
13
+ export type CheckboxOwnProps<TType = string> = {
14
+ element?: HTMLElement;
15
15
  id?: string;
16
16
  value?: TType;
17
17
  disabled?: boolean;
@@ -22,43 +22,22 @@ export type CheckboxProps<TTag extends ElementType = typeof DEFAULT_CHECKBOX_TAG
22
22
  form?: string;
23
23
  name?: string;
24
24
  onchange?: (checked: boolean) => void;
25
- }>;
26
- declare class __sveltets_Render<TType, TTag extends ElementType = typeof DEFAULT_CHECKBOX_TAG> {
27
- props(): {
28
- as?: TTag | undefined;
29
- } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, "form" | ("as" | "children" | "refName" | "class") | "disabled" | "autofocus" | "name" | "value" | "checked" | "id" | "onchange" | "indeterminate" | CheckboxPropsWeControl | "defaultChecked"> 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<CheckboxRenderPropArg> | 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: CheckboxRenderPropArg) => string) | undefined;
34
- } : {}) & {
35
- id?: string;
36
- value?: TType | undefined;
37
- disabled?: boolean;
38
- indeterminate?: boolean;
39
- checked?: boolean;
40
- defaultChecked?: boolean;
41
- autofocus?: boolean;
42
- form?: string;
43
- name?: string;
44
- onchange?: (checked: boolean) => void;
45
- };
46
- events(): {} & {
47
- [evt: string]: CustomEvent<any>;
48
- };
25
+ };
26
+ export type CheckboxProps<TType = string> = Props<typeof DEFAULT_CHECKBOX_TAG, CheckboxRenderPropArg, CheckboxOwnProps<TType>>;
27
+ declare class __sveltets_Render<TType> {
28
+ props(): CheckboxProps<TType>;
29
+ events(): {};
49
30
  slots(): {};
50
- bindings(): "ref" | "checked";
31
+ bindings(): "element" | "checked";
51
32
  exports(): {};
52
33
  }
53
34
  interface $$IsomorphicComponent {
54
- new <TType, TTag extends ElementType = typeof DEFAULT_CHECKBOX_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']>> & {
55
- $$bindings?: ReturnType<__sveltets_Render<TType, TTag>['bindings']>;
56
- } & ReturnType<__sveltets_Render<TType, TTag>['exports']>;
57
- <TType, TTag extends ElementType = typeof DEFAULT_CHECKBOX_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TType, TTag>['props']> & {
58
- $$events?: ReturnType<__sveltets_Render<TType, TTag>['events']>;
59
- }): ReturnType<__sveltets_Render<TType, TTag>['exports']>;
60
- z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
35
+ new <TType>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TType>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TType>['props']>, ReturnType<__sveltets_Render<TType>['events']>, ReturnType<__sveltets_Render<TType>['slots']>> & {
36
+ $$bindings?: ReturnType<__sveltets_Render<TType>['bindings']>;
37
+ } & ReturnType<__sveltets_Render<TType>['exports']>;
38
+ <TType>(internal: unknown, props: ReturnType<__sveltets_Render<TType>['props']> & {}): ReturnType<__sveltets_Render<TType>['exports']>;
39
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
61
40
  }
62
41
  declare const Checkbox: $$IsomorphicComponent;
63
- type Checkbox<TType, TTag extends ElementType = typeof DEFAULT_CHECKBOX_TAG> = InstanceType<typeof Checkbox<TType, TTag>>;
42
+ type Checkbox<TType> = InstanceType<typeof Checkbox<TType>>;
64
43
  export default Checkbox;
@@ -1 +1 @@
1
- export { default as Checkbox, type CheckboxProps } from "./Checkbox.svelte";
1
+ export { default as Checkbox, type CheckboxProps, type CheckboxRenderPropArg as CheckboxSlot, type CheckboxOwnProps, } from "./Checkbox.svelte";
@@ -1 +1 @@
1
- export { default as Checkbox } from "./Checkbox.svelte";
1
+ export { default as Checkbox, } from "./Checkbox.svelte";
@@ -1,11 +1,14 @@
1
- <script lang="ts" module>import Button, {} from "../button/Button.svelte";
2
- import { useClose } from "../internal/close-provider.js";
3
- let DEFAULT_BUTTON_TAG = "button";
1
+ <script lang="ts" module>
2
+ import Button, { type ButtonProps } from "../button/Button.svelte"
3
+ import { useClose } from "../hooks/use-close.svelte.js"
4
+
5
+ export type CloseButtonProps = ButtonProps
4
6
  </script>
5
7
 
6
- <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_BUTTON_TAG">const closeContext = useClose();
7
- const close = $derived(closeContext?.close);
8
- let { ...props } = $props();
8
+ <script lang="ts">
9
+ const closeContext = useClose()
10
+ const close = $derived(closeContext?.close)
11
+ let { element = $bindable(), ...props }: CloseButtonProps = $props()
9
12
  </script>
10
13
 
11
- <Button onclick={close} {...props} />
14
+ <Button {...props} onclick={close} bind:element />