@typed/ui 1.0.0-beta.1 → 1.0.0-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +54 -10
- package/dist/Alert.d.ts +72 -0
- package/dist/Alert.d.ts.map +1 -0
- package/dist/Alert.js +40 -0
- package/dist/Button.d.ts +100 -0
- package/dist/Button.d.ts.map +1 -0
- package/dist/Button.js +42 -0
- package/dist/Carousel.d.ts +346 -0
- package/dist/Carousel.d.ts.map +1 -0
- package/dist/Carousel.js +264 -0
- package/dist/Checkbox.d.ts +168 -0
- package/dist/Checkbox.d.ts.map +1 -0
- package/dist/Checkbox.js +146 -0
- package/dist/Collection.d.ts +254 -0
- package/dist/Collection.d.ts.map +1 -0
- package/dist/Collection.js +218 -0
- package/dist/Combobox.d.ts +367 -0
- package/dist/Combobox.d.ts.map +1 -0
- package/dist/Combobox.js +300 -0
- package/dist/Composite.d.ts +823 -0
- package/dist/Composite.d.ts.map +1 -0
- package/dist/Composite.js +615 -0
- package/dist/Dialog.d.ts +544 -0
- package/dist/Dialog.d.ts.map +1 -0
- package/dist/Dialog.js +357 -0
- package/dist/Disclosure.d.ts +219 -0
- package/dist/Disclosure.d.ts.map +1 -0
- package/dist/Disclosure.js +128 -0
- package/dist/Dom/Events.d.ts +122 -0
- package/dist/Dom/Events.d.ts.map +1 -0
- package/dist/Dom/Events.js +192 -0
- package/dist/Dom/Props.d.ts +161 -0
- package/dist/Dom/Props.d.ts.map +1 -0
- package/dist/Dom/Props.js +110 -0
- package/dist/Dom/Refs.d.ts +58 -0
- package/dist/Dom/Refs.d.ts.map +1 -0
- package/dist/Dom/Refs.js +61 -0
- package/dist/Dom/Render.d.ts +59 -0
- package/dist/Dom/Render.d.ts.map +1 -0
- package/dist/Dom/Render.js +71 -0
- package/dist/Dom/Types.d.ts +570 -0
- package/dist/Dom/Types.d.ts.map +1 -0
- package/dist/Dom/Types.js +1 -0
- package/dist/Dom/index.d.ts +20 -0
- package/dist/Dom/index.d.ts.map +1 -0
- package/dist/Dom/index.js +8 -0
- package/dist/Dom.d.ts +14 -0
- package/dist/Dom.d.ts.map +1 -0
- package/dist/Dom.js +13 -0
- package/dist/Focusable.d.ts +85 -0
- package/dist/Focusable.d.ts.map +1 -0
- package/dist/Focusable.js +35 -0
- package/dist/Form.d.ts +1727 -0
- package/dist/Form.d.ts.map +1 -0
- package/dist/Form.js +1142 -0
- package/dist/Grid.d.ts +388 -0
- package/dist/Grid.d.ts.map +1 -0
- package/dist/Grid.js +284 -0
- package/dist/Group.d.ts +128 -0
- package/dist/Group.d.ts.map +1 -0
- package/dist/Group.js +71 -0
- package/dist/Heading.d.ts +87 -0
- package/dist/Heading.d.ts.map +1 -0
- package/dist/Heading.js +58 -0
- package/dist/Hovercard.d.ts +297 -0
- package/dist/Hovercard.d.ts.map +1 -0
- package/dist/Hovercard.js +188 -0
- package/dist/HttpRouter.d.ts +129 -6
- package/dist/HttpRouter.d.ts.map +1 -1
- package/dist/HttpRouter.js +198 -55
- package/dist/Link.d.ts +63 -28
- package/dist/Link.d.ts.map +1 -1
- package/dist/Link.js +84 -37
- package/dist/Listbox.d.ts +305 -0
- package/dist/Listbox.d.ts.map +1 -0
- package/dist/Listbox.js +245 -0
- package/dist/Menu.d.ts +663 -0
- package/dist/Menu.d.ts.map +1 -0
- package/dist/Menu.js +569 -0
- package/dist/Menubar.d.ts +249 -0
- package/dist/Menubar.d.ts.map +1 -0
- package/dist/Menubar.js +207 -0
- package/dist/Meter.d.ts +157 -0
- package/dist/Meter.d.ts.map +1 -0
- package/dist/Meter.js +87 -0
- package/dist/NativeDetails.d.ts +41 -0
- package/dist/NativeDetails.d.ts.map +1 -0
- package/dist/NativeDetails.js +40 -0
- package/dist/NativeDialog.d.ts +66 -0
- package/dist/NativeDialog.d.ts.map +1 -0
- package/dist/NativeDialog.js +88 -0
- package/dist/NativePopover.d.ts +43 -0
- package/dist/NativePopover.d.ts.map +1 -0
- package/dist/NativePopover.js +84 -0
- package/dist/Popover.d.ts +240 -0
- package/dist/Popover.d.ts.map +1 -0
- package/dist/Popover.js +140 -0
- package/dist/RadioGroup.d.ts +330 -0
- package/dist/RadioGroup.d.ts.map +1 -0
- package/dist/RadioGroup.js +241 -0
- package/dist/Role.d.ts +64 -0
- package/dist/Role.d.ts.map +1 -0
- package/dist/Role.js +27 -0
- package/dist/Select.d.ts +418 -0
- package/dist/Select.d.ts.map +1 -0
- package/dist/Select.js +357 -0
- package/dist/Separator.d.ts +58 -0
- package/dist/Separator.d.ts.map +1 -0
- package/dist/Separator.js +32 -0
- package/dist/Slider.d.ts +141 -0
- package/dist/Slider.d.ts.map +1 -0
- package/dist/Slider.js +101 -0
- package/dist/SpinButton.d.ts +141 -0
- package/dist/SpinButton.d.ts.map +1 -0
- package/dist/SpinButton.js +101 -0
- package/dist/Storybook.d.ts +76 -0
- package/dist/Storybook.d.ts.map +1 -0
- package/dist/Storybook.js +102 -0
- package/dist/Switch.d.ts +148 -0
- package/dist/Switch.d.ts.map +1 -0
- package/dist/Switch.js +110 -0
- package/dist/Tab.d.ts +26 -0
- package/dist/Tab.d.ts.map +1 -0
- package/dist/Tab.js +25 -0
- package/dist/Tabs.d.ts +411 -0
- package/dist/Tabs.d.ts.map +1 -0
- package/dist/Tabs.js +262 -0
- package/dist/Toolbar.d.ts +248 -0
- package/dist/Toolbar.d.ts.map +1 -0
- package/dist/Toolbar.js +187 -0
- package/dist/Tooltip.d.ts +296 -0
- package/dist/Tooltip.d.ts.map +1 -0
- package/dist/Tooltip.js +172 -0
- package/dist/Tree.d.ts +405 -0
- package/dist/Tree.d.ts.map +1 -0
- package/dist/Tree.js +333 -0
- package/dist/TreeGrid.d.ts +426 -0
- package/dist/TreeGrid.d.ts.map +1 -0
- package/dist/TreeGrid.js +308 -0
- package/dist/VisuallyHidden.d.ts +68 -0
- package/dist/VisuallyHidden.d.ts.map +1 -0
- package/dist/VisuallyHidden.js +44 -0
- package/dist/WindowSplitter.d.ts +336 -0
- package/dist/WindowSplitter.d.ts.map +1 -0
- package/dist/WindowSplitter.js +305 -0
- package/dist/index.d.ts +48 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +48 -0
- package/package.json +48 -20
- package/src/HttpRouter.test.ts +0 -294
- package/src/HttpRouter.ts +0 -168
- package/src/Link.test.ts +0 -84
- package/src/Link.ts +0 -107
- package/src/index.ts +0 -2
package/dist/Dialog.d.ts
ADDED
|
@@ -0,0 +1,544 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Scope from "effect/Scope";
|
|
3
|
+
import * as Schema from "effect/Schema";
|
|
4
|
+
import type { Fx } from "@typed/fx/Fx";
|
|
5
|
+
import { RefSubject } from "@typed/fx";
|
|
6
|
+
import { EventHandler, type Renderable, type RenderEvent, type RenderTemplate } from "@typed/template";
|
|
7
|
+
import * as Dom from "./Dom.js";
|
|
8
|
+
import type { HostResult } from "./Dom/Types.js";
|
|
9
|
+
/** Current renderer-independent dialog visibility.
|
|
10
|
+
* @remarks
|
|
11
|
+
* ## Why
|
|
12
|
+
* State can be controlled and tested without mounting a dialog.
|
|
13
|
+
* ## Ownership and lifetime
|
|
14
|
+
* Plain data retains no resources; RefSubject lifetime is Scope-owned.
|
|
15
|
+
* @since 1.0.0
|
|
16
|
+
* @category Open state
|
|
17
|
+
*/
|
|
18
|
+
export interface State {
|
|
19
|
+
/** Whether the native dialog is open.
|
|
20
|
+
* @remarks
|
|
21
|
+
* ## Why
|
|
22
|
+
* One value coordinates triggers, native lifecycle, and application state.
|
|
23
|
+
* ## Ownership and lifetime
|
|
24
|
+
* Plain data acquires no resources.
|
|
25
|
+
* @since 1.0.0
|
|
26
|
+
* @category Open state
|
|
27
|
+
*/
|
|
28
|
+
readonly open: boolean;
|
|
29
|
+
}
|
|
30
|
+
/** Optional initial dialog state.
|
|
31
|
+
* @remarks
|
|
32
|
+
* ## Why
|
|
33
|
+
* Omission provides a deterministic closed hydration snapshot.
|
|
34
|
+
* ## Ownership and lifetime
|
|
35
|
+
* Configuration is inert.
|
|
36
|
+
* @since 1.0.0
|
|
37
|
+
* @category Open state
|
|
38
|
+
*/
|
|
39
|
+
export interface InitialState {
|
|
40
|
+
/** Initial open state, defaulting to false.
|
|
41
|
+
* @remarks
|
|
42
|
+
* ## Why
|
|
43
|
+
* The value seeds the serializable server/client contract.
|
|
44
|
+
* ## Ownership and lifetime
|
|
45
|
+
* Plain data retains no resources.
|
|
46
|
+
* @since 1.0.0
|
|
47
|
+
* @category Open state
|
|
48
|
+
*/
|
|
49
|
+
readonly open?: boolean;
|
|
50
|
+
}
|
|
51
|
+
/** Schema for dialog hydration state.
|
|
52
|
+
* @remarks
|
|
53
|
+
* ## Why
|
|
54
|
+
* Shared encoding keeps server and browser state compatible.
|
|
55
|
+
* ## Ownership and lifetime
|
|
56
|
+
* The immutable schema acquires no resources.
|
|
57
|
+
* @since 1.0.0
|
|
58
|
+
* @category Open state
|
|
59
|
+
*/
|
|
60
|
+
export declare const StateSchema: Schema.Struct<{
|
|
61
|
+
readonly open: Schema.Boolean;
|
|
62
|
+
}>;
|
|
63
|
+
/** Creates hydrated dialog state independent of rendering.
|
|
64
|
+
* @remarks
|
|
65
|
+
* ## Why
|
|
66
|
+
* Application transitions can be composed and tested before a native dialog
|
|
67
|
+
* element exists.
|
|
68
|
+
* ## Ownership and lifetime
|
|
69
|
+
* The calling Effect Scope owns the returned RefSubject.
|
|
70
|
+
* @example
|
|
71
|
+
* ```ts
|
|
72
|
+
* import { Effect } from "effect"
|
|
73
|
+
* import * as Dialog from "@typed/ui/Dialog"
|
|
74
|
+
*
|
|
75
|
+
* const program = Effect.gen(function* () {
|
|
76
|
+
* return yield* Dialog.makeState()
|
|
77
|
+
* })
|
|
78
|
+
* ```
|
|
79
|
+
* @since 1.0.0
|
|
80
|
+
* @category Open state
|
|
81
|
+
*/
|
|
82
|
+
export declare function makeState(initial?: InitialState): Effect.Effect<RefSubject.HydratedRefSubject<{
|
|
83
|
+
readonly open: boolean;
|
|
84
|
+
}, Schema.SchemaError, never, never>, never, Scope.Scope>;
|
|
85
|
+
/** Sets desired dialog visibility.
|
|
86
|
+
* @remarks
|
|
87
|
+
* ## Why
|
|
88
|
+
* Explicit state transitions stay outside renderers and retain Effect typing.
|
|
89
|
+
* ## Ownership and lifetime
|
|
90
|
+
* The Effect uses the existing RefSubject lifetime and acquires no resource.
|
|
91
|
+
* @example
|
|
92
|
+
* ```ts
|
|
93
|
+
* import { Effect } from "effect"
|
|
94
|
+
* import * as Dialog from "@typed/ui/Dialog"
|
|
95
|
+
*
|
|
96
|
+
* const program = Effect.gen(function* () {
|
|
97
|
+
* const state = yield* Dialog.makeState()
|
|
98
|
+
* yield* Dialog.setOpen(state, true)
|
|
99
|
+
* })
|
|
100
|
+
* ```
|
|
101
|
+
* @since 1.0.0
|
|
102
|
+
* @category Open state
|
|
103
|
+
*/
|
|
104
|
+
export declare function setOpen<E, R>(state: RefSubject.RefSubject<State, E, R>, open: boolean): Effect.Effect<State, E, R>;
|
|
105
|
+
/** Marks dialog state closed without requesting native cancellation.
|
|
106
|
+
* @remarks
|
|
107
|
+
* ## Why
|
|
108
|
+
* Programmatic close is distinct from `requestClose`, which runs the browser's
|
|
109
|
+
* cancelable close-request lifecycle.
|
|
110
|
+
* ## Ownership and lifetime
|
|
111
|
+
* The Effect updates existing state and acquires no resource.
|
|
112
|
+
* @example
|
|
113
|
+
* ```ts
|
|
114
|
+
* import { Effect } from "effect"
|
|
115
|
+
* import * as Dialog from "@typed/ui/Dialog"
|
|
116
|
+
*
|
|
117
|
+
* const program = Effect.gen(function* () {
|
|
118
|
+
* const state = yield* Dialog.makeState({ open: true })
|
|
119
|
+
* yield* Dialog.close(state)
|
|
120
|
+
* })
|
|
121
|
+
* ```
|
|
122
|
+
* @since 1.0.0
|
|
123
|
+
* @category Direct dismissal
|
|
124
|
+
*/
|
|
125
|
+
export declare function close<E, R>(state: RefSubject.RefSubject<State, E, R>): Effect.Effect<State, E, R>;
|
|
126
|
+
/**
|
|
127
|
+
* Requests the native dialog close lifecycle, including its cancel event.
|
|
128
|
+
* @remarks
|
|
129
|
+
* ## Why
|
|
130
|
+
* The browser's `requestClose()` is cancelable. The fallback dispatches a real
|
|
131
|
+
* cancelable `cancel` event and calls `close()` only when it is accepted, so
|
|
132
|
+
* user handlers retain the same veto point.
|
|
133
|
+
* ## Ownership and lifetime
|
|
134
|
+
* The Effect consults the dialog currently registered for the hydrated state;
|
|
135
|
+
* registration is removed when `Content`'s Scope closes. No dialog is retained
|
|
136
|
+
* after that finalizer.
|
|
137
|
+
* @example
|
|
138
|
+
* ```ts
|
|
139
|
+
* import { Effect } from "effect"
|
|
140
|
+
* import * as Dialog from "@typed/ui/Dialog"
|
|
141
|
+
*
|
|
142
|
+
* const program = Effect.gen(function* () {
|
|
143
|
+
* const state = yield* Dialog.makeState({ open: true })
|
|
144
|
+
* yield* Dialog.requestClose(state)
|
|
145
|
+
* })
|
|
146
|
+
* ```
|
|
147
|
+
* @since 1.0.0
|
|
148
|
+
* @category Cancelable dismissal
|
|
149
|
+
*/
|
|
150
|
+
export declare function requestClose(state: RefSubject.HydratedRefSubject<State, Schema.SchemaError>, returnValue?: string): Effect.Effect<void>;
|
|
151
|
+
/** Options for a dialog-opening button.
|
|
152
|
+
* @remarks
|
|
153
|
+
* ## Why
|
|
154
|
+
* The trigger exposes dialog relationship and expanded state to the platform.
|
|
155
|
+
* ## Ownership and lifetime
|
|
156
|
+
* Options are inert; rendering owns listeners/subscriptions by Scope.
|
|
157
|
+
* @since 1.0.0
|
|
158
|
+
* @category Opening controls
|
|
159
|
+
*/
|
|
160
|
+
export interface TriggerOptions extends Dom.HostOptions<HTMLButtonElement> {
|
|
161
|
+
/** Hydrated state shared with dialog content.
|
|
162
|
+
* @remarks
|
|
163
|
+
* ## Why
|
|
164
|
+
* One source drives `aria-expanded` and dialog visibility.
|
|
165
|
+
* ## Ownership and lifetime
|
|
166
|
+
* The trigger borrows state; its originating Scope owns it.
|
|
167
|
+
* @since 1.0.0
|
|
168
|
+
* @category State connection
|
|
169
|
+
*/
|
|
170
|
+
readonly state: RefSubject.HydratedRefSubject<State, Schema.SchemaError>;
|
|
171
|
+
/** Dialog id targeted by native command attributes.
|
|
172
|
+
* @remarks
|
|
173
|
+
* ## Why
|
|
174
|
+
* With an id, the trigger emits `commandfor` and `command="show-modal"` and
|
|
175
|
+
* deliberately omits its Fx click fallback. That form therefore requires
|
|
176
|
+
* browser support for native command attributes. Without `controls`, Typed
|
|
177
|
+
* installs the state-driven click fallback instead.
|
|
178
|
+
* ## Ownership and lifetime
|
|
179
|
+
* The string is reflected and retains no resources.
|
|
180
|
+
* @since 1.0.0
|
|
181
|
+
* @category Identity and relationships
|
|
182
|
+
*/
|
|
183
|
+
readonly controls?: string;
|
|
184
|
+
/** Visible trigger content and accessible name.
|
|
185
|
+
* @remarks
|
|
186
|
+
* ## Why
|
|
187
|
+
* A dialog trigger must be discoverable to assistive technology.
|
|
188
|
+
* ## Ownership and lifetime
|
|
189
|
+
* Dynamic content follows the trigger Scope.
|
|
190
|
+
* @since 1.0.0
|
|
191
|
+
* @category Rendered content
|
|
192
|
+
*/
|
|
193
|
+
readonly content: Renderable.Any;
|
|
194
|
+
}
|
|
195
|
+
declare function triggerInternalProps<const Options extends TriggerOptions>(options: Options): ({ property }: Dom.InternalPropsHelpers<Options>) => {
|
|
196
|
+
readonly type: "button";
|
|
197
|
+
readonly "aria-haspopup": "dialog";
|
|
198
|
+
readonly "aria-expanded": RefSubject.Computed<boolean, Schema.SchemaError, never>;
|
|
199
|
+
readonly "aria-controls": Exclude<Dom.Property<Options, "controls">, Dom.Nullish> | undefined;
|
|
200
|
+
readonly commandfor: Exclude<Dom.Property<Options, "controls">, Dom.Nullish> | undefined;
|
|
201
|
+
readonly command: "show-modal" | undefined;
|
|
202
|
+
readonly onclick: Effect.Effect<State, Schema.SchemaError, never> | undefined;
|
|
203
|
+
};
|
|
204
|
+
type TriggerInternalProps<Options extends TriggerOptions> = ReturnType<ReturnType<typeof triggerInternalProps<Options>>>;
|
|
205
|
+
/** Renders a native button that opens dialog content.
|
|
206
|
+
* @remarks
|
|
207
|
+
* ## Why
|
|
208
|
+
* It preserves button semantics, real events, and ARIA relationship state.
|
|
209
|
+
* Supplying `controls` selects native `commandfor` / `show-modal` behavior and
|
|
210
|
+
* disables the Fx click fallback, so that form requires browser command support.
|
|
211
|
+
* Omitting `controls` installs the portable state-driven click handler.
|
|
212
|
+
* ## Ownership and lifetime
|
|
213
|
+
* Running the Fx owns reactive props/listeners in its Scope. A custom host must
|
|
214
|
+
* preserve button type, ARIA, command, click props, and content.
|
|
215
|
+
* @example
|
|
216
|
+
* ```ts
|
|
217
|
+
* import { Effect } from "effect"
|
|
218
|
+
* import * as Dialog from "@typed/ui/Dialog"
|
|
219
|
+
*
|
|
220
|
+
* const program = Effect.gen(function* () {
|
|
221
|
+
* const state = yield* Dialog.makeState()
|
|
222
|
+
* // Omitting controls selects the Fx state fallback.
|
|
223
|
+
* return Dialog.Trigger({ state, content: "Open" })
|
|
224
|
+
* })
|
|
225
|
+
* ```
|
|
226
|
+
* @since 1.0.0
|
|
227
|
+
* @category Opening controls
|
|
228
|
+
*/
|
|
229
|
+
export declare function Trigger<const Options extends TriggerOptions, const Host extends HostResult = never>(options: Options, host?: Dom.HostOverride<Dom.RenderHostProps<Options, TriggerInternalProps<Options>>, Options["content"], Host>): Fx<RenderEvent, Renderable.Error<Options | Host>, Renderable.Services<Options | Host> | Scope.Scope | RenderTemplate>;
|
|
230
|
+
interface ContentOptionsBase extends Dom.HostOptions<HTMLDialogElement> {
|
|
231
|
+
readonly state: RefSubject.HydratedRefSubject<State, Schema.SchemaError>;
|
|
232
|
+
readonly content: Renderable.Any;
|
|
233
|
+
readonly id?: string;
|
|
234
|
+
readonly describedBy?: Renderable.Any<string | null | undefined>;
|
|
235
|
+
readonly modal?: boolean;
|
|
236
|
+
}
|
|
237
|
+
type AccessibleName = {
|
|
238
|
+
readonly label: Renderable.Any<string | null | undefined>;
|
|
239
|
+
readonly labelledBy?: never;
|
|
240
|
+
} | {
|
|
241
|
+
readonly label?: never;
|
|
242
|
+
readonly labelledBy: Renderable.Any<string | null | undefined>;
|
|
243
|
+
};
|
|
244
|
+
/**
|
|
245
|
+
* Dialog content options with exactly one accessible naming strategy.
|
|
246
|
+
* @remarks
|
|
247
|
+
* ## Why
|
|
248
|
+
* A dialog requires an accessible name. The union makes `label` and
|
|
249
|
+
* `labelledBy` mutually exclusive at compile time instead of silently choosing.
|
|
250
|
+
*
|
|
251
|
+
* ## Options
|
|
252
|
+
*
|
|
253
|
+
* `state` synchronizes the native element, `content` renders its subtree, `id`
|
|
254
|
+
* provides a target for browsers supporting native commands, `describedBy`
|
|
255
|
+
* connects supporting text, and
|
|
256
|
+
* `modal` selects `showModal()` by default or `show()` when explicitly false.
|
|
257
|
+
* The supplied label values may be reactive, but the command target id is a
|
|
258
|
+
* stable string so the server and client address the same element.
|
|
259
|
+
* ## Ownership and lifetime
|
|
260
|
+
* Options are inert; rendering owns dynamic values and native synchronization
|
|
261
|
+
* for its Effect Scope.
|
|
262
|
+
* @since 1.0.0
|
|
263
|
+
* @category Native content host
|
|
264
|
+
*/
|
|
265
|
+
export type ContentOptions = ContentOptionsBase & AccessibleName;
|
|
266
|
+
declare function contentInternalProps<const Options extends ContentOptions>(options: Options): ({ property }: Dom.InternalPropsHelpers<Options>) => {
|
|
267
|
+
id: Exclude<Dom.Property<Options, "id">, Dom.Nullish> | undefined;
|
|
268
|
+
"aria-labelledby": Exclude<Dom.Property<Options, "labelledBy">, Dom.Nullish> | undefined;
|
|
269
|
+
"aria-describedby": Exclude<Dom.Property<Options, "describedBy">, Dom.Nullish> | undefined;
|
|
270
|
+
"aria-label": Exclude<Dom.Property<Options, "label">, Dom.Nullish> | undefined;
|
|
271
|
+
oncancel: Effect.Effect<State, Schema.SchemaError, never>;
|
|
272
|
+
onclose: EventHandler.EventHandler<Event, Schema.SchemaError, never>;
|
|
273
|
+
ontoggle: EventHandler.EventHandler<Event, Schema.SchemaError, never>;
|
|
274
|
+
ref: import("./Dom/Refs.js").ComposedRef<RefSubject.HydratedRefSubject<State, Schema.SchemaError, never, never>, (element: HTMLDialogElement) => Effect.Effect<void, Schema.SchemaError, Scope.Scope>> | undefined;
|
|
275
|
+
};
|
|
276
|
+
type ContentInternalProps<Options extends ContentOptions> = ReturnType<ReturnType<typeof contentInternalProps<Options>>>;
|
|
277
|
+
/**
|
|
278
|
+
* Renders native dialog content synchronized with hydrated state.
|
|
279
|
+
* @remarks
|
|
280
|
+
* ## Why
|
|
281
|
+
* `Content` uses a real `<dialog>` and its `show()`, `showModal()`, `close()`,
|
|
282
|
+
* `cancel`, `close`, and `toggle` lifecycle. The browser therefore owns focus,
|
|
283
|
+
* top-layer placement, modal inertness, and default Escape behavior.
|
|
284
|
+
* ## Ownership and lifetime
|
|
285
|
+
* Running the Fx owns native listeners, dialog registration, and the
|
|
286
|
+
* NativeDialog observer in its Effect Scope. Finalization removes registration
|
|
287
|
+
* only when it still points at this element. A custom host must preserve native
|
|
288
|
+
* dialog identity, naming props, lifecycle handlers, and exactly one hydration
|
|
289
|
+
* ref owner.
|
|
290
|
+
* @example
|
|
291
|
+
* ```ts
|
|
292
|
+
* import { Effect } from "effect"
|
|
293
|
+
* import * as Dialog from "@typed/ui/Dialog"
|
|
294
|
+
*
|
|
295
|
+
* const program = Effect.gen(function* () {
|
|
296
|
+
* const state = yield* Dialog.makeState()
|
|
297
|
+
* return Dialog.Content({
|
|
298
|
+
* state,
|
|
299
|
+
* id: "confirm",
|
|
300
|
+
* label: "Confirm",
|
|
301
|
+
* content: "Continue?"
|
|
302
|
+
* })
|
|
303
|
+
* })
|
|
304
|
+
* ```
|
|
305
|
+
* @since 1.0.0
|
|
306
|
+
* @category Native content host
|
|
307
|
+
*/
|
|
308
|
+
export declare function Content<const Options extends ContentOptions, const Host extends HostResult = never>(options: Options, host?: Dom.HostOverride<Dom.RenderHostProps<Options, ContentInternalProps<Options>>, Options["content"], Host>): Fx<RenderEvent, Renderable.Error<Options | Host>, Renderable.Services<Options | Host> | Scope.Scope | RenderTemplate>;
|
|
309
|
+
/** Canonical widget alias for `Content`.
|
|
310
|
+
* @remarks
|
|
311
|
+
* ## Why
|
|
312
|
+
* The alias provides the widget name while `Content` identifies compound use.
|
|
313
|
+
* ## Ownership and lifetime
|
|
314
|
+
* It has exactly the same native element and Scope ownership as `Content`.
|
|
315
|
+
* @since 1.0.0
|
|
316
|
+
* @category Native content host
|
|
317
|
+
*/
|
|
318
|
+
export declare const Dialog: typeof Content;
|
|
319
|
+
/** Options for dialog close and close-request buttons.
|
|
320
|
+
* @remarks
|
|
321
|
+
* ## Why
|
|
322
|
+
* Supplying `controls` selects native commands and removes the Fx click
|
|
323
|
+
* fallback, requiring command-attribute browser support. Omitting it keeps the
|
|
324
|
+
* state-driven close or request-close handler.
|
|
325
|
+
* ## Ownership and lifetime
|
|
326
|
+
* Options are inert; rendering owns listeners and dynamic content by Scope.
|
|
327
|
+
* @since 1.0.0
|
|
328
|
+
* @category Direct dismissal
|
|
329
|
+
*/
|
|
330
|
+
export interface CloseOptions extends Dom.HostOptions<HTMLButtonElement> {
|
|
331
|
+
/** Hydrated state for fallback close behavior.
|
|
332
|
+
* @remarks
|
|
333
|
+
* ## Why
|
|
334
|
+
* Closing remains available when no native command target id is supplied.
|
|
335
|
+
* ## Ownership and lifetime
|
|
336
|
+
* The button borrows state; its original Scope owns it.
|
|
337
|
+
* @since 1.0.0
|
|
338
|
+
* @category State connection
|
|
339
|
+
*/
|
|
340
|
+
readonly state: RefSubject.HydratedRefSubject<State, Schema.SchemaError>;
|
|
341
|
+
/** Dialog id targeted by native command attributes.
|
|
342
|
+
* @remarks
|
|
343
|
+
* ## Why
|
|
344
|
+
* Native command routing preserves the dialog's platform lifecycle, but
|
|
345
|
+
* selecting it omits the component's click fallback. Use it only where
|
|
346
|
+
* `commandfor` and the requested dialog command are supported; otherwise
|
|
347
|
+
* omit `controls`.
|
|
348
|
+
* ## Ownership and lifetime
|
|
349
|
+
* The string is reflected and retains no resources.
|
|
350
|
+
* @since 1.0.0
|
|
351
|
+
* @category Identity and relationships
|
|
352
|
+
*/
|
|
353
|
+
readonly controls?: string;
|
|
354
|
+
/** Visible button content and accessible name.
|
|
355
|
+
* @remarks
|
|
356
|
+
* ## Why
|
|
357
|
+
* Every close action needs a discoverable label.
|
|
358
|
+
* ## Ownership and lifetime
|
|
359
|
+
* Dynamic content follows the button Scope.
|
|
360
|
+
* @since 1.0.0
|
|
361
|
+
* @category Rendered content
|
|
362
|
+
*/
|
|
363
|
+
readonly content: Renderable.Any;
|
|
364
|
+
}
|
|
365
|
+
declare function closeInternalProps<const Options extends CloseOptions>(options: Options, requestCloseLifecycle: boolean): ({ property }: Dom.InternalPropsHelpers<Options>) => {
|
|
366
|
+
readonly type: "button";
|
|
367
|
+
readonly commandfor: Exclude<Dom.Property<Options, "controls">, Dom.Nullish> | undefined;
|
|
368
|
+
readonly command: "close" | "request-close" | undefined;
|
|
369
|
+
readonly onclick: Effect.Effect<void, never, never> | Effect.Effect<State, Schema.SchemaError, never> | undefined;
|
|
370
|
+
};
|
|
371
|
+
type CloseInternalProps<Options extends CloseOptions> = ReturnType<ReturnType<typeof closeInternalProps<Options>>>;
|
|
372
|
+
/** Renders a button that closes a dialog without a cancel request.
|
|
373
|
+
* @remarks
|
|
374
|
+
* ## Why
|
|
375
|
+
* Accepted actions need a direct close path distinct from cancelable dismissal.
|
|
376
|
+
* `controls` selects native `command="close"` and disables the Fx click
|
|
377
|
+
* fallback; omit it when native dialog commands are unavailable.
|
|
378
|
+
* ## Ownership and lifetime
|
|
379
|
+
* Running the Fx owns handlers/dynamic content by Scope. Custom hosts must
|
|
380
|
+
* preserve type, command or fallback click behavior, and content.
|
|
381
|
+
* @example
|
|
382
|
+
* ```ts
|
|
383
|
+
* import { Effect } from "effect"
|
|
384
|
+
* import * as Dialog from "@typed/ui/Dialog"
|
|
385
|
+
*
|
|
386
|
+
* const program = Effect.gen(function* () {
|
|
387
|
+
* const state = yield* Dialog.makeState({ open: true })
|
|
388
|
+
* return Dialog.Close({ state, content: "Done" })
|
|
389
|
+
* })
|
|
390
|
+
* ```
|
|
391
|
+
* @since 1.0.0
|
|
392
|
+
* @category Direct dismissal
|
|
393
|
+
*/
|
|
394
|
+
export declare function Close<const Options extends CloseOptions, const Host extends HostResult = never>(options: Options, host?: Dom.HostOverride<Dom.RenderHostProps<Options, CloseInternalProps<Options>>, Options["content"], Host>): Fx<RenderEvent, Renderable.Error<Options | Host>, Renderable.Services<Options | Host> | Scope.Scope | RenderTemplate>;
|
|
395
|
+
/** Alias for direct `Close` behavior.
|
|
396
|
+
* @remarks
|
|
397
|
+
* ## Why
|
|
398
|
+
* The alias supports dismissal vocabulary without introducing another lifecycle.
|
|
399
|
+
* ## Ownership and lifetime
|
|
400
|
+
* It has exactly the same Scope and native button ownership as `Close`.
|
|
401
|
+
* @since 1.0.0
|
|
402
|
+
* @category Direct dismissal
|
|
403
|
+
*/
|
|
404
|
+
export declare const Dismiss: typeof Close;
|
|
405
|
+
/** Renders a button that starts the cancelable native close-request lifecycle.
|
|
406
|
+
* @remarks
|
|
407
|
+
* ## Why
|
|
408
|
+
* Consumers can intercept a real `cancel` event before the dialog closes.
|
|
409
|
+
* `controls` selects native `command="request-close"` and disables the Fx click
|
|
410
|
+
* fallback; omit it when native dialog commands are unavailable.
|
|
411
|
+
* ## Ownership and lifetime
|
|
412
|
+
* Running the Fx owns handlers by Scope; dialog registration remains owned by
|
|
413
|
+
* the corresponding `Content` Scope.
|
|
414
|
+
* @example
|
|
415
|
+
* ```ts
|
|
416
|
+
* import { Effect } from "effect"
|
|
417
|
+
* import * as Dialog from "@typed/ui/Dialog"
|
|
418
|
+
*
|
|
419
|
+
* const program = Effect.gen(function* () {
|
|
420
|
+
* const state = yield* Dialog.makeState({ open: true })
|
|
421
|
+
* return Dialog.RequestClose({ state, content: "Cancel" })
|
|
422
|
+
* })
|
|
423
|
+
* ```
|
|
424
|
+
* @since 1.0.0
|
|
425
|
+
* @category Cancelable dismissal
|
|
426
|
+
*/
|
|
427
|
+
export declare function RequestClose<const Options extends CloseOptions, const Host extends HostResult = never>(options: Options, host?: Dom.HostOverride<Dom.RenderHostProps<Options, CloseInternalProps<Options>>, Options["content"], Host>): Fx<RenderEvent, Renderable.Error<Options | Host>, Renderable.Services<Options | Host> | Scope.Scope | RenderTemplate>;
|
|
428
|
+
/** Options for an accessible dialog heading.
|
|
429
|
+
* @remarks
|
|
430
|
+
* ## Why
|
|
431
|
+
* A stable id can serve as the dialog's `aria-labelledby` target.
|
|
432
|
+
* ## Ownership and lifetime
|
|
433
|
+
* Options are inert; dynamic values follow the component Scope.
|
|
434
|
+
* @since 1.0.0
|
|
435
|
+
* @category Dialog naming and description
|
|
436
|
+
*/
|
|
437
|
+
export interface HeadingOptions extends Dom.HostOptions<HTMLHeadingElement> {
|
|
438
|
+
/** Heading content.
|
|
439
|
+
* @remarks
|
|
440
|
+
* ## Why
|
|
441
|
+
* Visible text supplies the dialog's accessible name when referenced.
|
|
442
|
+
* ## Ownership and lifetime
|
|
443
|
+
* Dynamic content follows the heading Scope.
|
|
444
|
+
* @since 1.0.0
|
|
445
|
+
* @category Rendered content
|
|
446
|
+
*/
|
|
447
|
+
readonly content: Renderable.Any;
|
|
448
|
+
/** Optional id referenced by `Content.labelledBy`.
|
|
449
|
+
* @remarks
|
|
450
|
+
* ## Why
|
|
451
|
+
* Stable relationships are required for accessible naming and hydration.
|
|
452
|
+
* ## Ownership and lifetime
|
|
453
|
+
* The id is reflected and retains no resources.
|
|
454
|
+
* @since 1.0.0
|
|
455
|
+
* @category Identity and relationships
|
|
456
|
+
*/
|
|
457
|
+
readonly id?: string;
|
|
458
|
+
/** ARIA heading level, defaulting to two.
|
|
459
|
+
* @remarks
|
|
460
|
+
* ## Why
|
|
461
|
+
* The level preserves document hierarchy independently of visual style.
|
|
462
|
+
* ## Ownership and lifetime
|
|
463
|
+
* The value is reflected and retains no resources.
|
|
464
|
+
* @since 1.0.0
|
|
465
|
+
* @category Accessible naming
|
|
466
|
+
*/
|
|
467
|
+
readonly level?: 1 | 2 | 3 | 4 | 5 | 6;
|
|
468
|
+
}
|
|
469
|
+
declare function headingInternalProps<const Options extends HeadingOptions>(): ({ property }: Dom.InternalPropsHelpers<Options>) => {
|
|
470
|
+
readonly id: Exclude<Dom.Property<Options, "id">, Dom.Nullish> | undefined;
|
|
471
|
+
readonly role: "heading";
|
|
472
|
+
readonly "aria-level": 2 | Exclude<Dom.Property<Options, "level">, Dom.Nullish>;
|
|
473
|
+
};
|
|
474
|
+
type HeadingInternalProps<Options extends HeadingOptions> = ReturnType<ReturnType<typeof headingInternalProps<Options>>>;
|
|
475
|
+
/** Renders a dialog heading with explicit ARIA level semantics.
|
|
476
|
+
* @remarks
|
|
477
|
+
* ## Why
|
|
478
|
+
* The helper creates a reliable naming target and preserves heading hierarchy.
|
|
479
|
+
* ## Ownership and lifetime
|
|
480
|
+
* Running the Fx owns dynamic content by Scope. A custom host must preserve id,
|
|
481
|
+
* role, and `aria-level`.
|
|
482
|
+
* @example
|
|
483
|
+
* ```ts
|
|
484
|
+
* import { Heading } from "@typed/ui/Dialog"
|
|
485
|
+
*
|
|
486
|
+
* const title = Heading({ id: "confirm-title", content: "Confirm" })
|
|
487
|
+
* ```
|
|
488
|
+
* @since 1.0.0
|
|
489
|
+
* @category Dialog naming and description
|
|
490
|
+
*/
|
|
491
|
+
export declare function Heading<const Options extends HeadingOptions, const Host extends HostResult = never>(options: Options, host?: Dom.HostOverride<Dom.RenderHostProps<Options, HeadingInternalProps<Options>>, Options["content"], Host>): Fx<RenderEvent, Renderable.Error<Options | Host>, Renderable.Services<Options | Host> | Scope.Scope | RenderTemplate>;
|
|
492
|
+
/** Options for descriptive dialog text.
|
|
493
|
+
* @remarks
|
|
494
|
+
* ## Why
|
|
495
|
+
* A stable id lets dialog content establish `aria-describedby` explicitly.
|
|
496
|
+
* ## Ownership and lifetime
|
|
497
|
+
* Options are inert; dynamic content follows the component Scope.
|
|
498
|
+
* @since 1.0.0
|
|
499
|
+
* @category Dialog naming and description
|
|
500
|
+
*/
|
|
501
|
+
export interface DescriptionOptions extends Dom.HostOptions<HTMLParagraphElement> {
|
|
502
|
+
/** Descriptive content.
|
|
503
|
+
* @remarks
|
|
504
|
+
* ## Why
|
|
505
|
+
* Referenced text supplies context beyond the dialog's accessible name.
|
|
506
|
+
* ## Ownership and lifetime
|
|
507
|
+
* Dynamic content follows the description Scope.
|
|
508
|
+
* @since 1.0.0
|
|
509
|
+
* @category Rendered content
|
|
510
|
+
*/
|
|
511
|
+
readonly content: Renderable.Any;
|
|
512
|
+
/** Optional id referenced by `Content.describedBy`.
|
|
513
|
+
* @remarks
|
|
514
|
+
* ## Why
|
|
515
|
+
* A stable DOM relationship exposes the description to assistive technology.
|
|
516
|
+
* ## Ownership and lifetime
|
|
517
|
+
* The id is reflected and retains no resources.
|
|
518
|
+
* @since 1.0.0
|
|
519
|
+
* @category Identity and relationships
|
|
520
|
+
*/
|
|
521
|
+
readonly id?: string;
|
|
522
|
+
}
|
|
523
|
+
declare function descriptionInternalProps<const Options extends DescriptionOptions>(): ({ property }: Dom.InternalPropsHelpers<Options>) => {
|
|
524
|
+
readonly id: Exclude<Dom.Property<Options, "id">, Dom.Nullish> | undefined;
|
|
525
|
+
};
|
|
526
|
+
type DescriptionInternalProps<Options extends DescriptionOptions> = ReturnType<ReturnType<typeof descriptionInternalProps<Options>>>;
|
|
527
|
+
/** Renders descriptive dialog text with an optional relationship id.
|
|
528
|
+
* @remarks
|
|
529
|
+
* ## Why
|
|
530
|
+
* The helper keeps accessible description wiring explicit and platform-native.
|
|
531
|
+
* ## Ownership and lifetime
|
|
532
|
+
* Running the Fx owns dynamic content by Scope. A custom host must preserve id.
|
|
533
|
+
* @example
|
|
534
|
+
* ```ts
|
|
535
|
+
* import { Description } from "@typed/ui/Dialog"
|
|
536
|
+
*
|
|
537
|
+
* const detail = Description({ id: "confirm-detail", content: "This cannot be undone." })
|
|
538
|
+
* ```
|
|
539
|
+
* @since 1.0.0
|
|
540
|
+
* @category Dialog naming and description
|
|
541
|
+
*/
|
|
542
|
+
export declare function Description<const Options extends DescriptionOptions, const Host extends HostResult = never>(options: Options, host?: Dom.HostOverride<Dom.RenderHostProps<Options, DescriptionInternalProps<Options>>, Options["content"], Host>): Fx<RenderEvent, Renderable.Error<Options | Host>, Renderable.Services<Options | Host> | Scope.Scope | RenderTemplate>;
|
|
543
|
+
export {};
|
|
544
|
+
//# sourceMappingURL=Dialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../src/Dialog.ts"],"names":[],"mappings":"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"}
|