@pzerelles/headlessui-svelte 2.1.2-next.32 → 2.1.2-next.34

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 (136) hide show
  1. package/dist/button/Button.svelte +9 -10
  2. package/dist/button/Button.svelte.d.ts +5 -32
  3. package/dist/button/index.d.ts +1 -1
  4. package/dist/checkbox/Checkbox.svelte +15 -12
  5. package/dist/checkbox/Checkbox.svelte.d.ts +15 -32
  6. package/dist/checkbox/index.d.ts +1 -1
  7. package/dist/close-button/CloseButton.svelte +4 -7
  8. package/dist/close-button/CloseButton.svelte.d.ts +2 -43
  9. package/dist/close-button/index.d.ts +1 -0
  10. package/dist/close-button/index.js +1 -0
  11. package/dist/data-interactive/DataInteractive.svelte +6 -20
  12. package/dist/data-interactive/DataInteractive.svelte.d.ts +8 -30
  13. package/dist/data-interactive/index.d.ts +1 -1
  14. package/dist/data-interactive/index.js +1 -1
  15. package/dist/description/Description.svelte +15 -12
  16. package/dist/description/Description.svelte.d.ts +7 -27
  17. package/dist/dialog/Dialog.svelte +34 -32
  18. package/dist/dialog/Dialog.svelte.d.ts +4 -41
  19. package/dist/dialog/DialogBackdrop.svelte +10 -11
  20. package/dist/dialog/DialogBackdrop.svelte.d.ts +5 -29
  21. package/dist/dialog/DialogPanel.svelte +18 -11
  22. package/dist/dialog/DialogPanel.svelte.d.ts +5 -30
  23. package/dist/dialog/DialogTitle.svelte +19 -8
  24. package/dist/dialog/DialogTitle.svelte.d.ts +7 -27
  25. package/dist/dialog/context.svelte.js +1 -1
  26. package/dist/dialog/index.d.ts +4 -4
  27. package/dist/dialog/index.js +3 -3
  28. package/dist/field/Field.svelte +10 -18
  29. package/dist/field/Field.svelte.d.ts +4 -30
  30. package/dist/fieldset/Fieldset.svelte +11 -15
  31. package/dist/fieldset/Fieldset.svelte.d.ts +5 -31
  32. package/dist/focus-trap/FocusTrap.svelte +21 -26
  33. package/dist/focus-trap/FocusTrap.svelte.d.ts +5 -34
  34. package/dist/hooks/use-inert-others.svelte.js +10 -10
  35. package/dist/hooks/use-resolve-button-type.svelte.js +0 -1
  36. package/dist/input/Input.svelte +20 -10
  37. package/dist/input/Input.svelte.d.ts +14 -27
  38. package/dist/input/index.d.ts +1 -1
  39. package/dist/internal/FocusSentinel.svelte +33 -32
  40. package/dist/internal/FormResolver.svelte +5 -1
  41. package/dist/internal/Hidden.svelte +10 -24
  42. package/dist/internal/Hidden.svelte.d.ts +5 -30
  43. package/dist/internal/MainTreeProvider.svelte +1 -1
  44. package/dist/label/Label.svelte +19 -13
  45. package/dist/label/Label.svelte.d.ts +7 -31
  46. package/dist/legend/Legend.svelte +20 -6
  47. package/dist/legend/Legend.svelte.d.ts +4 -3
  48. package/dist/listbox/Listbox.svelte +7 -19
  49. package/dist/listbox/Listbox.svelte.d.ts +12 -35
  50. package/dist/listbox/ListboxButton.svelte +14 -14
  51. package/dist/listbox/ListboxButton.svelte.d.ts +6 -32
  52. package/dist/listbox/ListboxOption.svelte +16 -16
  53. package/dist/listbox/ListboxOption.svelte.d.ts +13 -26
  54. package/dist/listbox/ListboxOptions.svelte +13 -12
  55. package/dist/listbox/ListboxOptions.svelte.d.ts +5 -38
  56. package/dist/listbox/ListboxSelectedOption.svelte +15 -17
  57. package/dist/listbox/ListboxSelectedOption.svelte.d.ts +8 -32
  58. package/dist/listbox/index.d.ts +5 -5
  59. package/dist/listbox/index.js +4 -4
  60. package/dist/menu/Menu.svelte +6 -8
  61. package/dist/menu/Menu.svelte.d.ts +4 -31
  62. package/dist/menu/MenuButton.svelte +13 -13
  63. package/dist/menu/MenuButton.svelte.d.ts +5 -34
  64. package/dist/menu/MenuHeading.svelte +12 -11
  65. package/dist/menu/MenuHeading.svelte.d.ts +4 -31
  66. package/dist/menu/MenuItem.svelte +13 -13
  67. package/dist/menu/MenuItem.svelte.d.ts +6 -32
  68. package/dist/menu/MenuItems.svelte +13 -14
  69. package/dist/menu/MenuItems.svelte.d.ts +5 -38
  70. package/dist/menu/MenuSection.svelte +11 -10
  71. package/dist/menu/MenuSection.svelte.d.ts +5 -29
  72. package/dist/menu/MenuSeparator.svelte +11 -9
  73. package/dist/menu/MenuSeparator.svelte.d.ts +5 -28
  74. package/dist/menu/index.d.ts +4 -4
  75. package/dist/menu/index.js +1 -1
  76. package/dist/popover/Popover.svelte +9 -9
  77. package/dist/popover/Popover.svelte.d.ts +5 -30
  78. package/dist/popover/PopoverBackdrop.svelte +16 -13
  79. package/dist/popover/PopoverBackdrop.svelte.d.ts +7 -34
  80. package/dist/popover/PopoverButton.svelte +34 -34
  81. package/dist/popover/PopoverButton.svelte.d.ts +6 -28
  82. package/dist/popover/PopoverGroup.svelte +15 -17
  83. package/dist/popover/PopoverGroup.svelte.d.ts +5 -28
  84. package/dist/popover/PopoverPanel.svelte +47 -42
  85. package/dist/popover/PopoverPanel.svelte.d.ts +6 -36
  86. package/dist/popover/index.d.ts +4 -4
  87. package/dist/popover/index.js +3 -3
  88. package/dist/portal/InternalPortal.svelte +17 -17
  89. package/dist/portal/InternalPortal.svelte.d.ts +5 -30
  90. package/dist/portal/Portal.svelte +7 -6
  91. package/dist/portal/Portal.svelte.d.ts +2 -18
  92. package/dist/portal/PortalGroup.svelte +6 -14
  93. package/dist/portal/PortalGroup.svelte.d.ts +4 -31
  94. package/dist/select/Select.svelte +11 -10
  95. package/dist/select/Select.svelte.d.ts +6 -32
  96. package/dist/select/index.d.ts +1 -1
  97. package/dist/switch/Switch.svelte +14 -13
  98. package/dist/switch/Switch.svelte.d.ts +6 -38
  99. package/dist/switch/SwitchGroup.svelte +5 -5
  100. package/dist/switch/SwitchGroup.svelte.d.ts +7 -27
  101. package/dist/switch/index.d.ts +1 -1
  102. package/dist/tabs/Tab.svelte +13 -13
  103. package/dist/tabs/Tab.svelte.d.ts +5 -32
  104. package/dist/tabs/TabGroup.svelte +9 -9
  105. package/dist/tabs/TabGroup.svelte.d.ts +5 -34
  106. package/dist/tabs/TabList.svelte +8 -9
  107. package/dist/tabs/TabList.svelte.d.ts +6 -28
  108. package/dist/tabs/TabPanel.svelte +12 -12
  109. package/dist/tabs/TabPanel.svelte.d.ts +5 -34
  110. package/dist/tabs/TabPanels.svelte +6 -6
  111. package/dist/tabs/TabPanels.svelte.d.ts +6 -27
  112. package/dist/tabs/index.d.ts +5 -5
  113. package/dist/tabs/index.js +1 -1
  114. package/dist/textarea/Textarea.svelte +13 -11
  115. package/dist/textarea/Textarea.svelte.d.ts +14 -27
  116. package/dist/textarea/index.d.ts +1 -1
  117. package/dist/transition/InternalTransitionChild.svelte +19 -12
  118. package/dist/transition/InternalTransitionChild.svelte.d.ts +3 -32
  119. package/dist/transition/Transition.svelte +12 -21
  120. package/dist/transition/Transition.svelte.d.ts +3 -35
  121. package/dist/transition/TransitionChild.svelte +9 -10
  122. package/dist/transition/TransitionChild.svelte.d.ts +8 -34
  123. package/dist/transition/context.svelte.js +7 -7
  124. package/dist/transition/index.d.ts +2 -2
  125. package/dist/transition/index.js +1 -1
  126. package/dist/utils/ElementOrComponent.svelte +56 -15
  127. package/dist/utils/ElementOrComponent.svelte.d.ts +30 -23
  128. package/dist/utils/state.js +4 -4
  129. package/dist/utils/types.d.ts +12 -9
  130. package/package.json +12 -12
  131. package/dist/combobox/Combobox.svelte +0 -53
  132. package/dist/combobox/Combobox.svelte.d.ts +0 -50
  133. package/dist/utils/Generic.svelte +0 -57
  134. package/dist/utils/Generic.svelte.d.ts +0 -31
  135. package/dist/utils/alternative-types.d.ts +0 -20
  136. package/dist/utils/alternative-types.js +0 -1
@@ -1,8 +1,10 @@
1
1
  <script lang="ts" module>
2
- import type { ElementType, Props } from "../utils/types.js"
2
+ import type { Props } from "../utils/types.js"
3
3
  import { RenderFeatures, type PropsForFeatures } from "../utils/render.js"
4
+ import type { SvelteHTMLElements } from "svelte/elements"
4
5
 
5
6
  export const DEFAULT_DIALOG_TAG = "div" as const
7
+
6
8
  export type DialogRenderPropArg = {
7
9
  open: boolean
8
10
  }
@@ -10,12 +12,11 @@
10
12
 
11
13
  export const DialogRenderFeatures = RenderFeatures.RenderStrategy | RenderFeatures.Static
12
14
 
13
- export type DialogProps<TTag extends ElementType = typeof DEFAULT_DIALOG_TAG> = Props<
14
- TTag,
15
+ export type DialogProps = Props<
16
+ typeof DEFAULT_DIALOG_TAG,
15
17
  DialogRenderPropArg,
16
- DialogPropsWeControl,
17
18
  PropsForFeatures<typeof DialogRenderFeatures> & {
18
- as?: TTag
19
+ element?: HTMLElement
19
20
  id?: string
20
21
  open?: boolean
21
22
  onclose(value: boolean): void
@@ -28,7 +29,7 @@
28
29
  >
29
30
  </script>
30
31
 
31
- <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_DIALOG_TAG">
32
+ <script lang="ts">
32
33
  import { useId } from "../hooks/use-id.js"
33
34
  import { useMainTreeNode, useRootContainers } from "../hooks/use-root-containers.svelte.js"
34
35
  import { clearOpenClosedContext, State, useOpenClosed } from "../internal/open-closed.js"
@@ -51,26 +52,14 @@
51
52
  import { useDescriptions } from "../description/context.svelte.js"
52
53
  import MainTreeProvider from "../internal/MainTreeProvider.svelte"
53
54
  import Transition from "../transition/Transition.svelte"
55
+ import { BROWSER } from "esm-env"
54
56
 
55
- const internalId = useId()
56
- let {
57
- ref = $bindable(),
58
- id = `headlessui-dialog-${internalId}`,
59
- open: theirOpen,
60
- onclose,
61
- initialFocus,
62
- role: theirRole = "dialog",
63
- autofocus = true,
64
- __demoMode = false,
65
- unmount = false,
66
- transition = false,
67
- ...theirProps
68
- }: { as?: TTag } & DialogProps<TTag> = $props()
57
+ let { element = $bindable(), transition = false, open: theirOpen, ...rest }: DialogProps = $props()
69
58
 
70
59
  // Validations
71
60
  const usesOpenClosedState = useOpenClosed()
72
61
  const hasOpen = $derived(theirOpen !== undefined || usesOpenClosedState)
73
- const hasOnClose = $derived(theirProps.hasOwnProperty("onclose"))
62
+ const hasOnClose = $derived(rest.hasOwnProperty("onclose"))
74
63
 
75
64
  $effect(() => {
76
65
  if (!hasOpen && !hasOnClose) {
@@ -91,13 +80,25 @@
91
80
  )
92
81
  }
93
82
 
94
- if (typeof theirProps.onclose !== "function") {
83
+ if (typeof rest.onclose !== "function") {
95
84
  throw new Error(
96
- `You provided an \`onclose\` prop to the \`Dialog\`, but the value is not a function. Received: ${theirProps.onclose}`
85
+ `You provided an \`onclose\` prop to the \`Dialog\`, but the value is not a function. Received: ${rest.onclose}`
97
86
  )
98
87
  }
99
88
  })
100
89
 
90
+ const internalId = useId()
91
+ let {
92
+ id = `headlessui-dialog-${internalId}`,
93
+ onclose,
94
+ initialFocus,
95
+ role: theirRole = "dialog",
96
+ autofocus = true,
97
+ __demoMode = false,
98
+ unmount = false,
99
+ ...theirProps
100
+ } = $derived(rest)
101
+
101
102
  let didWarnOnRole = $state(false)
102
103
 
103
104
  const role = $derived.by(() => {
@@ -122,7 +123,7 @@
122
123
  : theirOpen
123
124
  )
124
125
 
125
- const ownerDocument = $derived(getOwnerDocument(ref))
126
+ const ownerDocument = $derived(getOwnerDocument(element))
126
127
 
127
128
  const dialogState = $derived(open ? DialogStates.Open : DialogStates.Closed)
128
129
 
@@ -135,7 +136,8 @@
135
136
 
136
137
  const setTitleId = (id: string | null) => (_state.titleId = id)
137
138
 
138
- const enabled = $derived(dialogState === DialogStates.Open)
139
+ const ready = BROWSER
140
+ const enabled = $derived(ready ? dialogState === DialogStates.Open : false)
139
141
  const nestedPortals = useNestedPortals()
140
142
  const { portals } = $derived(nestedPortals)
141
143
 
@@ -145,7 +147,7 @@
145
147
  // `<Dialog.Title>` because they cause the parent to re-render
146
148
  const defaultContainer: { readonly current: HTMLElement | undefined } = {
147
149
  get current() {
148
- return _state.panelRef ?? ref
150
+ return _state.panelRef ?? element
149
151
  },
150
152
  }
151
153
 
@@ -184,7 +186,7 @@
184
186
  return [
185
187
  // Allow the headlessui-portal of the Dialog to be interactive. This
186
188
  // contains the current dialog and the necessary focus guard elements.
187
- ref?.closest<HTMLElement>("[data-headlessui-portal]") ?? null,
189
+ element?.closest<HTMLElement>("[data-headlessui-portal]") ?? null,
188
190
  ]
189
191
  },
190
192
  get disallowed() {
@@ -260,7 +262,7 @@
260
262
  return enabled
261
263
  },
262
264
  get ref() {
263
- return ref
265
+ return element
264
266
  },
265
267
  get ondisappear() {
266
268
  return close
@@ -331,11 +333,11 @@
331
333
  {#snippet internal(transitionProps?: Record<string, any>)}
332
334
  <ForcePortalRoot force={true}>
333
335
  <Portal>
334
- <PortalGroup target={ref ?? null}>
336
+ <PortalGroup target={element ?? null}>
335
337
  <ForcePortalRoot force={false}>
336
338
  <FocusTrap
337
339
  {initialFocus}
338
- initialFocusFallback={ref}
340
+ initialFocusFallback={element}
339
341
  containers={resolvedRootContainers}
340
342
  features={focusTrapFeatures}
341
343
  >
@@ -347,7 +349,7 @@
347
349
  features={DialogRenderFeatures}
348
350
  visible={dialogState === DialogStates.Open}
349
351
  name="Dialog"
350
- bind:ref
352
+ bind:element
351
353
  />
352
354
  </FocusTrap>
353
355
  </ForcePortalRoot>
@@ -358,7 +360,7 @@
358
360
 
359
361
  {#if (open !== undefined || transition) && !theirProps.static}
360
362
  <MainTreeProvider>
361
- <Transition show={open} {transition} unmount={theirProps.unmount} {ref}>
363
+ <Transition asChild show={open} {transition} unmount={rest.unmount} {element}>
362
364
  {#snippet children({ props })}
363
365
  {@render internal(props)}
364
366
  {/snippet}
@@ -1,13 +1,12 @@
1
- import type { ElementType, Props } from "../utils/types.js";
1
+ import type { Props } from "../utils/types.js";
2
2
  import { type PropsForFeatures } from "../utils/render.js";
3
3
  export declare const DEFAULT_DIALOG_TAG: "div";
4
4
  export type DialogRenderPropArg = {
5
5
  open: boolean;
6
6
  };
7
- type DialogPropsWeControl = "aria-describedby" | "aria-labelledby" | "aria-modal";
8
7
  export declare const DialogRenderFeatures: number;
9
- export type DialogProps<TTag extends ElementType = typeof DEFAULT_DIALOG_TAG> = Props<TTag, DialogRenderPropArg, DialogPropsWeControl, PropsForFeatures<typeof DialogRenderFeatures> & {
10
- as?: TTag;
8
+ export type DialogProps = Props<typeof DEFAULT_DIALOG_TAG, DialogRenderPropArg, PropsForFeatures<typeof DialogRenderFeatures> & {
9
+ element?: HTMLElement;
11
10
  id?: string;
12
11
  open?: boolean;
13
12
  onclose(value: boolean): void;
@@ -17,41 +16,5 @@ export type DialogProps<TTag extends ElementType = typeof DEFAULT_DIALOG_TAG> =
17
16
  transition?: boolean;
18
17
  __demoMode?: boolean;
19
18
  }>;
20
- declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_DIALOG_TAG> {
21
- props(): {
22
- as?: TTag | undefined;
23
- } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("slot" | "as" | "children" | "class" | "ref") | "autofocus" | "unmount" | "static" | "id" | "role" | "onclose" | "initialFocus" | "transition" | DialogPropsWeControl | "open" | "__demoMode"> 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("svelte").Snippet<[DialogRenderPropArg & {
25
- props?: Record<string, any>;
26
- }]> | undefined;
27
- class?: string | ((bag: DialogRenderPropArg) => string) | null | undefined;
28
- ref?: HTMLElement;
29
- } & {
30
- static?: boolean | undefined;
31
- unmount?: boolean | undefined;
32
- } & {
33
- as?: TTag | undefined;
34
- id?: string;
35
- open?: boolean;
36
- onclose(value: boolean): void;
37
- initialFocus?: HTMLElement;
38
- role?: "dialog" | "alertdialog";
39
- autofocus?: boolean;
40
- transition?: boolean;
41
- __demoMode?: boolean;
42
- };
43
- events(): {};
44
- slots(): {};
45
- bindings(): "ref";
46
- exports(): {};
47
- }
48
- interface $$IsomorphicComponent {
49
- new <TTag extends ElementType = typeof DEFAULT_DIALOG_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']>> & {
50
- $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
51
- } & ReturnType<__sveltets_Render<TTag>['exports']>;
52
- <TTag extends ElementType = typeof DEFAULT_DIALOG_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
53
- z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
54
- }
55
- declare const Dialog: $$IsomorphicComponent;
56
- type Dialog<TTag extends ElementType = typeof DEFAULT_DIALOG_TAG> = InstanceType<typeof Dialog<TTag>>;
19
+ declare const Dialog: import("svelte").Component<DialogProps, {}, "element">;
57
20
  export default Dialog;
@@ -1,26 +1,25 @@
1
1
  <script lang="ts" module>
2
- import type { ElementType, Props } from "../utils/types.js"
2
+ import type { Props } from "../utils/types.js"
3
3
 
4
4
  let DEFAULT_BACKDROP_TAG = "div" as const
5
- type BackdropRenderPropArg = {
5
+ export type BackdropRenderPropArg = {
6
6
  open: boolean
7
7
  }
8
8
 
9
- export type DialogBackdropProps<TTag extends ElementType = typeof DEFAULT_BACKDROP_TAG> = Props<
10
- TTag,
9
+ export type DialogBackdropProps = Props<
10
+ typeof DEFAULT_BACKDROP_TAG,
11
11
  BackdropRenderPropArg,
12
- never,
13
- { transition?: boolean }
12
+ { transition?: boolean; element?: HTMLElement }
14
13
  >
15
14
  </script>
16
15
 
17
- <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_BACKDROP_TAG">
16
+ <script lang="ts">
18
17
  import { DialogStates, useDialogContext } from "./context.svelte.js"
19
18
  import ElementOrComponent from "../utils/ElementOrComponent.svelte"
20
19
  import { mergeProps } from "../utils/render.js"
21
20
  import TransitionChild from "../transition/TransitionChild.svelte"
22
21
 
23
- let { ref = $bindable(), transition = false, ...theirProps }: { as?: TTag } & DialogBackdropProps<TTag> = $props()
22
+ let { element = $bindable(), transition = false, ...theirProps }: DialogBackdropProps = $props()
24
23
  const _state = useDialogContext("Dialog.Panel")
25
24
  const { dialogState, unmount } = $derived(_state)
26
25
 
@@ -32,7 +31,7 @@
32
31
  </script>
33
32
 
34
33
  {#if transition}
35
- <TransitionChild {unmount} {ref}>
34
+ <TransitionChild asChild {unmount} {element}>
36
35
  {#snippet children({ props, ...slot })}
37
36
  <ElementOrComponent
38
37
  ourProps={{ ...ourProps, ...props }}
@@ -40,7 +39,7 @@
40
39
  slots={slot}
41
40
  defaultTag={DEFAULT_BACKDROP_TAG}
42
41
  name="DialogBackdrop"
43
- bind:ref
42
+ bind:element
44
43
  />
45
44
  {/snippet}
46
45
  </TransitionChild>
@@ -51,6 +50,6 @@
51
50
  slots={slot}
52
51
  defaultTag={DEFAULT_BACKDROP_TAG}
53
52
  name="DialogBackdrop"
54
- bind:ref
53
+ bind:element
55
54
  />
56
55
  {/if}
@@ -1,35 +1,11 @@
1
- import type { ElementType, Props } from "../utils/types.js";
1
+ import type { Props } from "../utils/types.js";
2
2
  declare let DEFAULT_BACKDROP_TAG: "div";
3
- type BackdropRenderPropArg = {
3
+ export type BackdropRenderPropArg = {
4
4
  open: boolean;
5
5
  };
6
- export type DialogBackdropProps<TTag extends ElementType = typeof DEFAULT_BACKDROP_TAG> = Props<TTag, BackdropRenderPropArg, never, {
6
+ export type DialogBackdropProps = Props<typeof DEFAULT_BACKDROP_TAG, BackdropRenderPropArg, {
7
7
  transition?: boolean;
8
+ element?: HTMLElement;
8
9
  }>;
9
- declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_BACKDROP_TAG> {
10
- props(): {
11
- as?: TTag | undefined;
12
- } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("slot" | "as" | "children" | "class" | "ref") | "transition"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
13
- children?: import("svelte").Snippet<[BackdropRenderPropArg & {
14
- props?: Record<string, any>;
15
- }]> | undefined;
16
- class?: string | ((bag: BackdropRenderPropArg) => string) | null | undefined;
17
- ref?: HTMLElement;
18
- } & {
19
- transition?: boolean;
20
- };
21
- events(): {};
22
- slots(): {};
23
- bindings(): "ref";
24
- exports(): {};
25
- }
26
- interface $$IsomorphicComponent {
27
- new <TTag extends ElementType = typeof DEFAULT_BACKDROP_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']>> & {
28
- $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
29
- } & ReturnType<__sveltets_Render<TTag>['exports']>;
30
- <TTag extends ElementType = typeof DEFAULT_BACKDROP_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
31
- z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
32
- }
33
- declare const DialogBackdrop: $$IsomorphicComponent;
34
- type DialogBackdrop<TTag extends ElementType = typeof DEFAULT_BACKDROP_TAG> = InstanceType<typeof DialogBackdrop<TTag>>;
10
+ declare const DialogBackdrop: import("svelte").Component<DialogBackdropProps, {}, "element">;
35
11
  export default DialogBackdrop;
@@ -1,23 +1,23 @@
1
1
  <script lang="ts" module>
2
- import type { ElementType, Props } from "../utils/types.js"
2
+ import type { Props } from "../utils/types.js"
3
3
 
4
4
  let DEFAULT_PANEL_TAG = "div" as const
5
- type PanelRenderPropArg = {
5
+ export type PanelRenderPropArg = {
6
6
  open: boolean
7
7
  }
8
8
 
9
- export type DialogPanelProps<TTag extends ElementType = typeof DEFAULT_PANEL_TAG> = Props<
10
- TTag,
9
+ export type DialogPanelProps = Props<
10
+ typeof DEFAULT_PANEL_TAG,
11
11
  PanelRenderPropArg,
12
- never,
13
12
  {
13
+ element?: HTMLElement
14
14
  id?: string
15
15
  transition?: boolean
16
16
  }
17
17
  >
18
18
  </script>
19
19
 
20
- <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_PANEL_TAG">
20
+ <script lang="ts">
21
21
  import { useId } from "../hooks/use-id.js"
22
22
  import { DialogStates, useDialogContext } from "./context.svelte.js"
23
23
  import ElementOrComponent from "../utils/ElementOrComponent.svelte"
@@ -26,11 +26,11 @@
26
26
 
27
27
  let internalId = useId()
28
28
  let {
29
- ref = $bindable(),
29
+ element = $bindable(),
30
30
  id = `headlessui-dialog-panel-${internalId}`,
31
31
  transition = false,
32
32
  ...theirProps
33
- }: { as?: TTag } & DialogPanelProps<TTag> = $props()
33
+ }: DialogPanelProps = $props()
34
34
  const _state = useDialogContext("Dialog.Panel")
35
35
  const { dialogState, unmount } = $derived(_state)
36
36
 
@@ -51,7 +51,7 @@
51
51
  </script>
52
52
 
53
53
  {#if transition}
54
- <TransitionChild {unmount} {ref}>
54
+ <TransitionChild asChild {unmount} {element}>
55
55
  {#snippet children({ props, ...slot })}
56
56
  <ElementOrComponent
57
57
  ourProps={{ ...ourProps, ...props }}
@@ -59,10 +59,17 @@
59
59
  slots={slot}
60
60
  defaultTag={DEFAULT_PANEL_TAG}
61
61
  name="DialogPanel"
62
- bind:ref
62
+ bind:element
63
63
  />
64
64
  {/snippet}
65
65
  </TransitionChild>
66
66
  {:else}
67
- <ElementOrComponent {ourProps} {theirProps} slots={slot} defaultTag={DEFAULT_PANEL_TAG} name="DialogPanel" bind:ref />
67
+ <ElementOrComponent
68
+ {ourProps}
69
+ {theirProps}
70
+ slots={slot}
71
+ defaultTag={DEFAULT_PANEL_TAG}
72
+ name="DialogPanel"
73
+ bind:element
74
+ />
68
75
  {/if}
@@ -1,37 +1,12 @@
1
- import type { ElementType, Props } from "../utils/types.js";
1
+ import type { Props } from "../utils/types.js";
2
2
  declare let DEFAULT_PANEL_TAG: "div";
3
- type PanelRenderPropArg = {
3
+ export type PanelRenderPropArg = {
4
4
  open: boolean;
5
5
  };
6
- export type DialogPanelProps<TTag extends ElementType = typeof DEFAULT_PANEL_TAG> = Props<TTag, PanelRenderPropArg, never, {
6
+ export type DialogPanelProps = Props<typeof DEFAULT_PANEL_TAG, PanelRenderPropArg, {
7
+ element?: HTMLElement;
7
8
  id?: string;
8
9
  transition?: boolean;
9
10
  }>;
10
- declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_PANEL_TAG> {
11
- props(): {
12
- as?: TTag | undefined;
13
- } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("slot" | "as" | "children" | "class" | "ref") | "id" | "transition"> 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("svelte").Snippet<[PanelRenderPropArg & {
15
- props?: Record<string, any>;
16
- }]> | undefined;
17
- class?: string | ((bag: PanelRenderPropArg) => string) | null | undefined;
18
- ref?: HTMLElement;
19
- } & {
20
- id?: string;
21
- transition?: boolean;
22
- };
23
- events(): {};
24
- slots(): {};
25
- bindings(): "ref";
26
- exports(): {};
27
- }
28
- interface $$IsomorphicComponent {
29
- new <TTag extends ElementType = typeof DEFAULT_PANEL_TAG>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TTag>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TTag>['props']>, ReturnType<__sveltets_Render<TTag>['events']>, ReturnType<__sveltets_Render<TTag>['slots']>> & {
30
- $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
31
- } & ReturnType<__sveltets_Render<TTag>['exports']>;
32
- <TTag extends ElementType = typeof DEFAULT_PANEL_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
33
- z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
34
- }
35
- declare const DialogPanel: $$IsomorphicComponent;
36
- type DialogPanel<TTag extends ElementType = typeof DEFAULT_PANEL_TAG> = InstanceType<typeof DialogPanel<TTag>>;
11
+ declare const DialogPanel: import("svelte").Component<DialogPanelProps, {}, "element">;
37
12
  export default DialogPanel;
@@ -1,17 +1,21 @@
1
1
  <script lang="ts" module>
2
- import type { ElementType, Props, PropsOf } from "../utils/types.js"
2
+ import type { Props } from "../utils/types.js"
3
3
 
4
4
  let DEFAULT_TITLE_TAG = "h2" as const
5
- type TitleRenderPropArg = {
5
+ export type TitleRenderPropArg = {
6
6
  open: boolean
7
7
  }
8
8
 
9
- export type DialogTitleProps<TTag extends ElementType = typeof DEFAULT_TITLE_TAG> = Props<TTag, TitleRenderPropArg>
9
+ export type DialogTitleProps = Props<
10
+ typeof DEFAULT_TITLE_TAG,
11
+ TitleRenderPropArg,
12
+ { id?: string; element?: HTMLElement }
13
+ >
10
14
 
11
15
  //
12
16
  </script>
13
17
 
14
- <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_TITLE_TAG">
18
+ <script lang="ts">
15
19
  import { useId } from "../hooks/use-id.js"
16
20
  import { DialogStates, useDialogContext } from "./context.svelte.js"
17
21
  import { onMount } from "svelte"
@@ -20,10 +24,10 @@
20
24
 
21
25
  const internalId = useId()
22
26
  let {
23
- ref = $bindable(),
24
- id = `headlessui-dialog-title-${internalId}` as PropsOf<TTag>[string],
27
+ element = $bindable(),
28
+ id = `headlessui-dialog-title-${internalId}`,
25
29
  ...theirProps
26
- }: { as?: TTag } & DialogTitleProps<TTag> = $props()
30
+ }: DialogTitleProps = $props()
27
31
  const _state = useDialogContext("Dialog.Panel")
28
32
  const { dialogState, setTitleId } = $derived(_state)
29
33
 
@@ -41,4 +45,11 @@
41
45
  )
42
46
  </script>
43
47
 
44
- <ElementOrComponent {ourProps} {theirProps} slots={slot} defaultTag={DEFAULT_TITLE_TAG} name="DialogTitle" bind:ref />
48
+ <ElementOrComponent
49
+ {ourProps}
50
+ {theirProps}
51
+ slots={slot}
52
+ defaultTag={DEFAULT_TITLE_TAG}
53
+ name="DialogTitle"
54
+ bind:element
55
+ />
@@ -1,31 +1,11 @@
1
- import type { ElementType, Props, PropsOf } from "../utils/types.js";
1
+ import type { Props } from "../utils/types.js";
2
2
  declare let DEFAULT_TITLE_TAG: "h2";
3
- type TitleRenderPropArg = {
3
+ export type TitleRenderPropArg = {
4
4
  open: boolean;
5
5
  };
6
- export type DialogTitleProps<TTag extends ElementType = typeof DEFAULT_TITLE_TAG> = Props<TTag, TitleRenderPropArg>;
7
- declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_TITLE_TAG> {
8
- props(): {
9
- as?: TTag | undefined;
10
- } & (Exclude<keyof PropsOf<TTag>, "slot" | "as" | "children" | "class" | "ref"> extends infer T extends keyof PropsOf<TTag> ? { [P in T]: PropsOf<TTag>[P]; } : never) & {
11
- children?: import("svelte").Snippet<[TitleRenderPropArg & {
12
- props?: Record<string, any>;
13
- }]> | undefined;
14
- class?: string | ((bag: TitleRenderPropArg) => string) | null | undefined;
15
- ref?: HTMLElement;
16
- };
17
- events(): {};
18
- slots(): {};
19
- bindings(): "ref";
20
- exports(): {};
21
- }
22
- interface $$IsomorphicComponent {
23
- new <TTag extends ElementType = typeof DEFAULT_TITLE_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']>> & {
24
- $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
25
- } & ReturnType<__sveltets_Render<TTag>['exports']>;
26
- <TTag extends ElementType = typeof DEFAULT_TITLE_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
27
- z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
28
- }
29
- declare const DialogTitle: $$IsomorphicComponent;
30
- type DialogTitle<TTag extends ElementType = typeof DEFAULT_TITLE_TAG> = InstanceType<typeof DialogTitle<TTag>>;
6
+ export type DialogTitleProps = Props<typeof DEFAULT_TITLE_TAG, TitleRenderPropArg, {
7
+ id?: string;
8
+ element?: HTMLElement;
9
+ }>;
10
+ declare const DialogTitle: import("svelte").Component<DialogTitleProps, {}, "element">;
31
11
  export default DialogTitle;
@@ -7,7 +7,7 @@ export var DialogStates;
7
7
  export function useDialogContext(component) {
8
8
  const context = getContext("DialogContext");
9
9
  if (!context) {
10
- let err = new Error(`<${component} /> is missing a parent <Dialog /> component.`);
10
+ const err = new Error(`<${component} /> is missing a parent <Dialog /> component.`);
11
11
  if (Error.captureStackTrace)
12
12
  Error.captureStackTrace(err, useDialogContext);
13
13
  throw err;
@@ -1,4 +1,4 @@
1
- export { default as Dialog, type DialogProps } from "./Dialog.svelte";
2
- export { default as DialogBackdrop, type DialogBackdropProps } from "./DialogBackdrop.svelte";
3
- export { default as DialogPanel, type DialogPanelProps } from "./DialogPanel.svelte";
4
- export { default as DialogTitle, type DialogTitleProps } from "./DialogTitle.svelte";
1
+ export { default as Dialog, type DialogProps, type DialogRenderPropArg as DialogSlot } from "./Dialog.svelte";
2
+ export { default as DialogBackdrop, type DialogBackdropProps, type BackdropRenderPropArg as DialogBackdropSlot, } from "./DialogBackdrop.svelte";
3
+ export { default as DialogPanel, type DialogPanelProps, type PanelRenderPropArg as DialogPanelSlot, } from "./DialogPanel.svelte";
4
+ export { default as DialogTitle, type DialogTitleProps, type TitleRenderPropArg as DialogTitleSlot, } from "./DialogTitle.svelte";
@@ -1,4 +1,4 @@
1
1
  export { default as Dialog } from "./Dialog.svelte";
2
- export { default as DialogBackdrop } from "./DialogBackdrop.svelte";
3
- export { default as DialogPanel } from "./DialogPanel.svelte";
4
- export { default as DialogTitle } from "./DialogTitle.svelte";
2
+ export { default as DialogBackdrop, } from "./DialogBackdrop.svelte";
3
+ export { default as DialogPanel, } from "./DialogPanel.svelte";
4
+ export { default as DialogTitle, } from "./DialogTitle.svelte";
@@ -1,22 +1,19 @@
1
1
  <script lang="ts" module>
2
- import type { ElementType, Props } from "../utils/types.js"
2
+ import type { Props } from "../utils/types.js"
3
3
 
4
4
  let DEFAULT_FIELD_TAG = "div" as const
5
5
 
6
- type FieldRenderPropArg = {}
7
- type FieldPropsWeControl = never
8
-
9
- export type FieldProps<TTag extends ElementType = typeof DEFAULT_FIELD_TAG> = Props<
10
- TTag,
11
- FieldRenderPropArg,
12
- FieldPropsWeControl,
6
+ export type FieldProps = Props<
7
+ typeof DEFAULT_FIELD_TAG,
8
+ {},
13
9
  {
10
+ element?: HTMLElement
14
11
  disabled?: boolean
15
12
  }
16
13
  >
17
14
  </script>
18
15
 
19
- <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_FIELD_TAG">
16
+ <script lang="ts">
20
17
  import { provideDisabled } from "../hooks/use-disabled.js"
21
18
  import { createIdContext } from "../utils/id.js"
22
19
  import { nanoid } from "nanoid"
@@ -25,12 +22,7 @@
25
22
  import ElementOrComponent from "../utils/ElementOrComponent.svelte"
26
23
  import FormFieldsProvider from "../internal/FormFieldsProvider.svelte"
27
24
 
28
- let {
29
- ref = $bindable(),
30
- disabled: ownDisabled = false,
31
- children,
32
- ...theirProps
33
- }: { as?: TTag } & FieldProps<TTag> = $props()
25
+ let { element = $bindable(), disabled: ownDisabled = false, children, ...theirProps }: FieldProps = $props()
34
26
 
35
27
  const inputId = `headlessui-control-${nanoid(8)}`
36
28
  createIdContext(inputId)
@@ -49,9 +41,9 @@
49
41
  })
50
42
  </script>
51
43
 
52
- {#snippet wrapper(args: Parameters<Exclude<typeof children, undefined>>[0])}
44
+ {#snippet wrapper(args: { props: Record<string, any> })}
53
45
  <FormFieldsProvider>
54
- {#if children}{@render children(args)}{/if}
46
+ {@render children?.(args)}
55
47
  </FormFieldsProvider>
56
48
  {/snippet}
57
49
 
@@ -61,5 +53,5 @@
61
53
  {slot}
62
54
  defaultTag={DEFAULT_FIELD_TAG}
63
55
  name="Field"
64
- bind:ref
56
+ bind:element
65
57
  />