@typed/ui 1.0.0-beta.4 → 1.0.0-beta.6

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 (157) hide show
  1. package/README.md +53 -9
  2. package/dist/Alert.d.ts +78 -0
  3. package/dist/Alert.d.ts.map +1 -0
  4. package/dist/Alert.js +37 -0
  5. package/dist/Button.d.ts +144 -0
  6. package/dist/Button.d.ts.map +1 -0
  7. package/dist/Button.js +38 -0
  8. package/dist/Carousel.d.ts +547 -0
  9. package/dist/Carousel.d.ts.map +1 -0
  10. package/dist/Carousel.js +387 -0
  11. package/dist/Checkbox.d.ts +203 -0
  12. package/dist/Checkbox.d.ts.map +1 -0
  13. package/dist/Checkbox.js +140 -0
  14. package/dist/Collection.d.ts +254 -0
  15. package/dist/Collection.d.ts.map +1 -0
  16. package/dist/Collection.js +218 -0
  17. package/dist/Combobox.d.ts +516 -0
  18. package/dist/Combobox.d.ts.map +1 -0
  19. package/dist/Combobox.js +371 -0
  20. package/dist/Component.d.ts +127 -0
  21. package/dist/Component.d.ts.map +1 -0
  22. package/dist/Component.js +60 -0
  23. package/dist/Composite.d.ts +823 -0
  24. package/dist/Composite.d.ts.map +1 -0
  25. package/dist/Composite.js +615 -0
  26. package/dist/Dialog.d.ts +544 -0
  27. package/dist/Dialog.d.ts.map +1 -0
  28. package/dist/Dialog.js +355 -0
  29. package/dist/Disclosure.d.ts +219 -0
  30. package/dist/Disclosure.d.ts.map +1 -0
  31. package/dist/Disclosure.js +128 -0
  32. package/dist/Dom/Events.d.ts +122 -0
  33. package/dist/Dom/Events.d.ts.map +1 -0
  34. package/dist/Dom/Events.js +192 -0
  35. package/dist/Dom/Props.d.ts +161 -0
  36. package/dist/Dom/Props.d.ts.map +1 -0
  37. package/dist/Dom/Props.js +110 -0
  38. package/dist/Dom/Refs.d.ts +58 -0
  39. package/dist/Dom/Refs.d.ts.map +1 -0
  40. package/dist/Dom/Refs.js +61 -0
  41. package/dist/Dom/Render.d.ts +59 -0
  42. package/dist/Dom/Render.d.ts.map +1 -0
  43. package/dist/Dom/Render.js +71 -0
  44. package/dist/Dom/Types.d.ts +570 -0
  45. package/dist/Dom/Types.d.ts.map +1 -0
  46. package/dist/Dom/Types.js +1 -0
  47. package/dist/Dom/index.d.ts +20 -0
  48. package/dist/Dom/index.d.ts.map +1 -0
  49. package/dist/Dom/index.js +8 -0
  50. package/dist/Dom.d.ts +14 -0
  51. package/dist/Dom.d.ts.map +1 -0
  52. package/dist/Dom.js +13 -0
  53. package/dist/Focusable.d.ts +85 -0
  54. package/dist/Focusable.d.ts.map +1 -0
  55. package/dist/Focusable.js +35 -0
  56. package/dist/Form.d.ts +1695 -0
  57. package/dist/Form.d.ts.map +1 -0
  58. package/dist/Form.js +987 -0
  59. package/dist/Grid.d.ts +569 -0
  60. package/dist/Grid.d.ts.map +1 -0
  61. package/dist/Grid.js +379 -0
  62. package/dist/Group.d.ts +147 -0
  63. package/dist/Group.d.ts.map +1 -0
  64. package/dist/Group.js +63 -0
  65. package/dist/Heading.d.ts +86 -0
  66. package/dist/Heading.d.ts.map +1 -0
  67. package/dist/Heading.js +48 -0
  68. package/dist/Hovercard.d.ts +297 -0
  69. package/dist/Hovercard.d.ts.map +1 -0
  70. package/dist/Hovercard.js +188 -0
  71. package/dist/HttpRouter.d.ts +129 -6
  72. package/dist/HttpRouter.d.ts.map +1 -1
  73. package/dist/HttpRouter.js +196 -53
  74. package/dist/Link.d.ts +67 -28
  75. package/dist/Link.d.ts.map +1 -1
  76. package/dist/Link.js +91 -37
  77. package/dist/Listbox.d.ts +437 -0
  78. package/dist/Listbox.d.ts.map +1 -0
  79. package/dist/Listbox.js +316 -0
  80. package/dist/Menu.d.ts +972 -0
  81. package/dist/Menu.d.ts.map +1 -0
  82. package/dist/Menu.js +731 -0
  83. package/dist/Menubar.d.ts +367 -0
  84. package/dist/Menubar.d.ts.map +1 -0
  85. package/dist/Menubar.js +265 -0
  86. package/dist/Meter.d.ts +217 -0
  87. package/dist/Meter.d.ts.map +1 -0
  88. package/dist/Meter.js +94 -0
  89. package/dist/NativeDetails.d.ts +41 -0
  90. package/dist/NativeDetails.d.ts.map +1 -0
  91. package/dist/NativeDetails.js +40 -0
  92. package/dist/NativeDialog.d.ts +64 -0
  93. package/dist/NativeDialog.d.ts.map +1 -0
  94. package/dist/NativeDialog.js +50 -0
  95. package/dist/NativePopover.d.ts +41 -0
  96. package/dist/NativePopover.d.ts.map +1 -0
  97. package/dist/NativePopover.js +46 -0
  98. package/dist/Popover.d.ts +241 -0
  99. package/dist/Popover.d.ts.map +1 -0
  100. package/dist/Popover.js +141 -0
  101. package/dist/RadioGroup.d.ts +432 -0
  102. package/dist/RadioGroup.d.ts.map +1 -0
  103. package/dist/RadioGroup.js +291 -0
  104. package/dist/Role.d.ts +64 -0
  105. package/dist/Role.d.ts.map +1 -0
  106. package/dist/Role.js +27 -0
  107. package/dist/Select.d.ts +529 -0
  108. package/dist/Select.d.ts.map +1 -0
  109. package/dist/Select.js +407 -0
  110. package/dist/Separator.d.ts +54 -0
  111. package/dist/Separator.d.ts.map +1 -0
  112. package/dist/Separator.js +26 -0
  113. package/dist/Slider.d.ts +188 -0
  114. package/dist/Slider.d.ts.map +1 -0
  115. package/dist/Slider.js +96 -0
  116. package/dist/SpinButton.d.ts +188 -0
  117. package/dist/SpinButton.d.ts.map +1 -0
  118. package/dist/SpinButton.js +96 -0
  119. package/dist/Storybook.d.ts +76 -0
  120. package/dist/Storybook.d.ts.map +1 -0
  121. package/dist/Storybook.js +102 -0
  122. package/dist/Switch.d.ts +187 -0
  123. package/dist/Switch.d.ts.map +1 -0
  124. package/dist/Switch.js +116 -0
  125. package/dist/Tab.d.ts +26 -0
  126. package/dist/Tab.d.ts.map +1 -0
  127. package/dist/Tab.js +25 -0
  128. package/dist/Tabs.d.ts +591 -0
  129. package/dist/Tabs.d.ts.map +1 -0
  130. package/dist/Tabs.js +346 -0
  131. package/dist/Toolbar.d.ts +366 -0
  132. package/dist/Toolbar.d.ts.map +1 -0
  133. package/dist/Toolbar.js +245 -0
  134. package/dist/Tooltip.d.ts +296 -0
  135. package/dist/Tooltip.d.ts.map +1 -0
  136. package/dist/Tooltip.js +172 -0
  137. package/dist/Tree.d.ts +591 -0
  138. package/dist/Tree.d.ts.map +1 -0
  139. package/dist/Tree.js +434 -0
  140. package/dist/TreeGrid.d.ts +645 -0
  141. package/dist/TreeGrid.d.ts.map +1 -0
  142. package/dist/TreeGrid.js +420 -0
  143. package/dist/VisuallyHidden.d.ts +54 -0
  144. package/dist/VisuallyHidden.d.ts.map +1 -0
  145. package/dist/VisuallyHidden.js +27 -0
  146. package/dist/WindowSplitter.d.ts +376 -0
  147. package/dist/WindowSplitter.d.ts.map +1 -0
  148. package/dist/WindowSplitter.js +222 -0
  149. package/dist/index.d.ts +49 -0
  150. package/dist/index.d.ts.map +1 -1
  151. package/dist/index.js +49 -0
  152. package/package.json +45 -18
  153. package/src/HttpRouter.test.ts +0 -256
  154. package/src/HttpRouter.ts +0 -165
  155. package/src/Link.test.ts +0 -84
  156. package/src/Link.ts +0 -107
  157. package/src/index.ts +0 -2
@@ -0,0 +1,645 @@
1
+ /**
2
+ * TreeGrid combines tree expansion with virtual-focus grid movement. Rows carry hierarchy and
3
+ * expansion, cells carry column positions, and the root retains focus while aria-activedescendant
4
+ * identifies the active cell.
5
+ *
6
+ * @remarks
7
+ * The module keeps policy, state transitions, and DOM rendering separable so applications can use
8
+ * the state and pure operations without mounting UI, or supply custom hosts without replacing native
9
+ * events and browser-owned focus.
10
+ *
11
+ * @since 1.0.0
12
+ * @category modules
13
+ * @packageDocumentation
14
+ */
15
+ import * as Effect from "effect/Effect";
16
+ import type * as Scope from "effect/Scope";
17
+ import * as Schema from "effect/Schema";
18
+ import type { Fx } from "@typed/fx/Fx";
19
+ import { RefSubject } from "@typed/fx";
20
+ import { EventHandler, type Renderable, type RenderEvent, type RenderTemplate } from "@typed/template";
21
+ import * as Collection from "./Collection.js";
22
+ import * as Dom from "./Dom.js";
23
+ import * as Grid from "./Grid.js";
24
+ import type { HostResult } from "./Dom/Types.js";
25
+ import * as Tree from "./Tree.js";
26
+ /**
27
+ * Complete renderer-independent state for TreeGrid.
28
+ *
29
+ * @remarks
30
+ * ## Why
31
+ *
32
+ * Applications can inspect, update, and test TreeGrid behavior without mounting or coupling the
33
+ * state to a renderer.
34
+ *
35
+ * ## Ownership and lifetime
36
+ *
37
+ * This declaration is data or schema metadata and acquires no resources.
38
+ *
39
+ * ## Example
40
+ *
41
+ * Import with `import type { State } from "@typed/ui/TreeGrid";` Extend the [TreeGrid.makeState
42
+ * runnable setup](/reference/%40typed%2Fui%2FTreeGrid%23makeState). Inside the linked program,
43
+ * `const snapshot: State = yield* state` exposes active and expanded ids using Tree state
44
+ * semantics.
45
+ * @since 1.0.0
46
+ * @category models
47
+ */
48
+ export type State = Tree.State;
49
+ /**
50
+ * Initial TreeGrid values. Uses Tree state and defaults.
51
+ *
52
+ * @remarks
53
+ * ## Why
54
+ *
55
+ * Making initialization explicit documents hydration-sensitive defaults and lets servers and
56
+ * clients construct matching state.
57
+ *
58
+ * ## Ownership and lifetime
59
+ *
60
+ * This declaration is data or schema metadata and acquires no resources.
61
+ *
62
+ * ## Example
63
+ *
64
+ * Import with `import type { InitialState } from "@typed/ui/TreeGrid";` Extend the
65
+ * [TreeGrid.makeState runnable setup](/reference/%40typed%2Fui%2FTreeGrid%23makeState). Construct
66
+ * an expanded row with
67
+ * `const initial: InitialState = { activeId: "src-name", expandedIds: ["src"] }; const state = yield* TreeGrid.makeState(initial)`.
68
+ * @since 1.0.0
69
+ * @category models
70
+ */
71
+ export type InitialState = Tree.InitialState;
72
+ /**
73
+ * Effect Schema used by makeState to encode, decode, and hydrate TreeGrid state.
74
+ *
75
+ * @remarks
76
+ * ## Why
77
+ *
78
+ * A public schema makes hydration and serialized state use the same runtime validation as direct
79
+ * construction.
80
+ *
81
+ * ## Ownership and lifetime
82
+ *
83
+ * This declaration is data or schema metadata and acquires no resources.
84
+ *
85
+ * @example
86
+ * ```ts
87
+ * import * as Schema from "effect/Schema";
88
+ * import * as TreeGrid from "@typed/ui/TreeGrid";
89
+ *
90
+ * const decodeState = Schema.decodeUnknownEffect(TreeGrid.StateSchema);
91
+ * ```
92
+ * @since 1.0.0
93
+ * @category schemas
94
+ */
95
+ export declare const StateSchema: Schema.Struct<{
96
+ readonly activeId: Schema.NullOr<Schema.String>;
97
+ readonly expandedIds: Schema.$Array<Schema.String>;
98
+ readonly loop: Schema.Boolean;
99
+ }>;
100
+ /**
101
+ * Creates hydrated TreeGrid state. Uses Tree state and defaults.
102
+ *
103
+ * @remarks
104
+ * ## Why
105
+ *
106
+ * State and collection ownership can be composed and tested independently from any renderer.
107
+ *
108
+ * ## Ownership and lifetime
109
+ *
110
+ * The returned Effect creates the RefSubject when run. That state is renderer-independent;
111
+ * collection registrations belong to the separate Scope that runs register or ref, not to state
112
+ * creation.
113
+ *
114
+ * @example
115
+ * ```ts
116
+ * import * as Effect from "effect/Effect";
117
+ * import * as TreeGrid from "@typed/ui/TreeGrid";
118
+ *
119
+ * const program = Effect.scoped(
120
+ * Effect.gen(function* () {
121
+ * const state = yield* TreeGrid.makeState({});
122
+ * const collection = yield* TreeGrid.makeCollection();
123
+ * return { state: yield* state, collection: yield* collection };
124
+ * }),
125
+ * );
126
+ * ```
127
+ * @since 1.0.0
128
+ * @category constructors
129
+ */
130
+ export declare const makeState: typeof Tree.makeState;
131
+ /**
132
+ * Tests membership in expandedIds without touching the DOM; this is the Tree helper exposed from
133
+ * the TreeGrid entrypoint.
134
+ *
135
+ * @remarks
136
+ * ## Why
137
+ *
138
+ * Separating this deterministic policy from event wiring lets applications test it directly and
139
+ * reuse it in custom composites.
140
+ *
141
+ * ## Ownership and lifetime
142
+ *
143
+ * This is a synchronous calculation. It acquires no resources and does not mutate the input array,
144
+ * state, event, or DOM.
145
+ *
146
+ * @example
147
+ * ```ts
148
+ * import * as TreeGrid from "@typed/ui/TreeGrid";
149
+ *
150
+ * const expanded = TreeGrid.isExpanded({ activeId: null, expandedIds: ["parent"], loop: true }, "parent");
151
+ * ```
152
+ * @since 1.0.0
153
+ * @category combinators
154
+ */
155
+ export declare const isExpanded: typeof Tree.isExpanded;
156
+ /**
157
+ * Adds a row id once to expandedIds using the Tree state transition.
158
+ *
159
+ * @remarks
160
+ * ## Why
161
+ *
162
+ * The operation exposes TreeGrid's transition directly so callers can compose it in Effect
163
+ * programs and native event handlers.
164
+ *
165
+ * ## Ownership and lifetime
166
+ *
167
+ * The returned Effect performs the update or DOM side effect only when run, preserves the declared
168
+ * error and service channels, and retains no resources after completion.
169
+ *
170
+ * ## Example
171
+ *
172
+ * Import with `import { expand } from "@typed/ui/TreeGrid";` Extend the [TreeGrid.makeState
173
+ * runnable setup](/reference/%40typed%2Fui%2FTreeGrid%23makeState). Inside the linked Effect
174
+ * program run `yield* expand(state, "parent")`, then read state to observe the id in expandedIds.
175
+ * @since 1.0.0
176
+ * @category combinators
177
+ */
178
+ export declare const expand: typeof Tree.expand;
179
+ /**
180
+ * Removes a row id from expandedIds using the Tree state transition.
181
+ *
182
+ * @remarks
183
+ * ## Why
184
+ *
185
+ * The operation exposes TreeGrid's transition directly so callers can compose it in Effect
186
+ * programs and native event handlers.
187
+ *
188
+ * ## Ownership and lifetime
189
+ *
190
+ * The returned Effect performs the update or DOM side effect only when run, preserves the declared
191
+ * error and service channels, and retains no resources after completion.
192
+ *
193
+ * ## Example
194
+ *
195
+ * Import with `import { collapse } from "@typed/ui/TreeGrid";` Extend the [TreeGrid.makeState
196
+ * runnable setup](/reference/%40typed%2Fui%2FTreeGrid%23makeState). Inside the linked Effect
197
+ * program run `yield* collapse(state, "parent")`, then read state to observe the id removed from
198
+ * expandedIds.
199
+ * @since 1.0.0
200
+ * @category combinators
201
+ */
202
+ export declare const collapse: typeof Tree.collapse;
203
+ /**
204
+ * Sets the active TreeGrid row or cell id without changing expansion.
205
+ *
206
+ * @remarks
207
+ * ## Why
208
+ *
209
+ * The operation exposes TreeGrid's transition directly so callers can compose it in Effect
210
+ * programs and native event handlers.
211
+ *
212
+ * ## Ownership and lifetime
213
+ *
214
+ * The returned Effect performs the update or DOM side effect only when run, preserves the declared
215
+ * error and service channels, and retains no resources after completion.
216
+ *
217
+ * ## Example
218
+ *
219
+ * Import with `import { activate } from "@typed/ui/TreeGrid";` Extend the [TreeGrid.makeState
220
+ * runnable setup](/reference/%40typed%2Fui%2FTreeGrid%23makeState). Inside the linked Effect
221
+ * program run `yield* activate(state, "cell-1")`, then read state to observe activeId.
222
+ * @since 1.0.0
223
+ * @category combinators
224
+ */
225
+ export declare const activate: typeof Tree.activate;
226
+ /**
227
+ * Logical coordinates stored with each registered TreeGrid cell.
228
+ *
229
+ * @remarks
230
+ * ## Why
231
+ *
232
+ * The public model lets custom composites reuse TreeGrid's deterministic policy without copying an
233
+ * internal shape.
234
+ *
235
+ * ## Ownership and lifetime
236
+ *
237
+ * This declaration is data or schema metadata and acquires no resources.
238
+ *
239
+ * ## Example
240
+ *
241
+ * Import with `import type { CellPosition } from "@typed/ui/TreeGrid";` Extend the
242
+ * [TreeGrid.makeState runnable setup](/reference/%40typed%2Fui%2FTreeGrid%23makeState). A
243
+ * hierarchical cell position combines grid and tree identity:
244
+ * `const position: CellPosition = { rowId: "src", columnIndex: 1, parentId: "root", hasChildren: true }`.
245
+ * @since 1.0.0
246
+ * @category models
247
+ */
248
+ export interface CellPosition extends Grid.CellPosition {
249
+ /**
250
+ * Id whose expansion controls this descendant group.
251
+ * @since 1.0.0
252
+ * @category models
253
+ */
254
+ readonly parentId?: string;
255
+ /**
256
+ * Whether aria-expanded is emitted and hierarchical keys may open descendants.
257
+ * @since 1.0.0
258
+ * @category models
259
+ */
260
+ readonly hasChildren: boolean;
261
+ }
262
+ /**
263
+ * Creates a scoped Collection for TreeGrid items.
264
+ *
265
+ * @remarks
266
+ * ## Why
267
+ *
268
+ * State and collection ownership can be composed and tested independently from any renderer.
269
+ *
270
+ * ## Ownership and lifetime
271
+ *
272
+ * The returned Effect allocates the RefSubject in the caller's Scope. Each later registration is
273
+ * owned by the Scope that runs register, independently of this construction Effect.
274
+ *
275
+ * @example
276
+ * ```ts
277
+ * import * as Effect from "effect/Effect";
278
+ * import * as TreeGrid from "@typed/ui/TreeGrid";
279
+ *
280
+ * const program = Effect.scoped(
281
+ * Effect.gen(function* () {
282
+ * const collection = yield* TreeGrid.makeCollection();
283
+ * return yield* collection;
284
+ * }),
285
+ * );
286
+ * ```
287
+ * @since 1.0.0
288
+ * @category constructors
289
+ */
290
+ export declare const makeCollection: (initial?: Collection.State<CellPosition, Element>) => Effect.Effect<RefSubject.RefSubject<Collection.State<CellPosition, Element>, never, never>, never, Scope.Scope>;
291
+ /**
292
+ * Inputs accepted by TreeGrid.Root in addition to the shared DOM host options.
293
+ *
294
+ * @remarks
295
+ * ## Why
296
+ *
297
+ * The options type makes required state, content, accessible relationships, and custom-host inputs
298
+ * visible before rendering.
299
+ *
300
+ * ## Ownership and lifetime
301
+ *
302
+ * This declaration is data or schema metadata and acquires no resources.
303
+ *
304
+ * ## Example
305
+ *
306
+ * Import with `import type { RootOptions } from "@typed/ui/TreeGrid";` Extend the
307
+ * [TreeGrid.makeState runnable setup](/reference/%40typed%2Fui%2FTreeGrid%23makeState). Enable
308
+ * tree-grid navigation with
309
+ * `const options: RootOptions = { state, collection, label: "Files", content: "Rows" }`.
310
+ * @since 1.0.0
311
+ * @category models
312
+ */
313
+ export interface RootOptions extends Dom.HostOptions<HTMLDivElement> {
314
+ /**
315
+ * Renderer-independent RefSubject state consumed by this component or operation.
316
+ * @since 1.0.0
317
+ * @category models
318
+ */
319
+ readonly state: RefSubject.HydratedRefSubject<State, Schema.SchemaError>;
320
+ /**
321
+ * Item registry used for collection-driven keyboard behavior and mounted ordering.
322
+ * @since 1.0.0
323
+ * @category models
324
+ */
325
+ readonly collection?: RefSubject.RefSubject<Collection.State<CellPosition>>;
326
+ /**
327
+ * Accessible label rendered through aria-label.
328
+ * @since 1.0.0
329
+ * @category models
330
+ */
331
+ readonly label: Renderable.Any<string | null | undefined>;
332
+ /**
333
+ * Renderable child content for the component host.
334
+ * @since 1.0.0
335
+ * @category models
336
+ */
337
+ readonly content: Renderable.Any;
338
+ }
339
+ declare function rootInternalProps<const Options extends RootOptions>(options: Options): ({ property }: Dom.InternalPropsHelpers<Options>) => {
340
+ readonly role: "treegrid";
341
+ readonly tabindex: 0;
342
+ readonly "aria-label": Exclude<Dom.Property<Options, "label">, Dom.Nullish> | undefined;
343
+ readonly "aria-activedescendant": RefSubject.Computed<string | undefined, Schema.SchemaError, never>;
344
+ readonly onfocus: Effect.Effect<void, Schema.SchemaError, never> | undefined;
345
+ readonly onkeydown: EventHandler.EventHandler<KeyboardEvent, Schema.SchemaError, never> | undefined;
346
+ readonly ref: RefSubject.HydratedRefSubject<Tree.State, Schema.SchemaError, never, never>;
347
+ };
348
+ type RootInternalProps<Options extends RootOptions> = ReturnType<ReturnType<typeof rootInternalProps<Options>>>;
349
+ /**
350
+ * Renders the focus-owning treegrid root and applies combined grid and expansion keys.
351
+ *
352
+ * @remarks
353
+ * ## Why
354
+ *
355
+ * The component applies the family behavior while leaving callers free to supply a custom host
356
+ * through the shared DOM boundary.
357
+ *
358
+ * ## Ownership and lifetime
359
+ *
360
+ * The returned Fx installs DOM refs, native listeners, state subscriptions, and optional
361
+ * collection registrations only when rendered. The rendering Scope removes those resources;
362
+ * unrelated nodes and attributes remain caller-owned.
363
+ *
364
+ * ## Example
365
+ *
366
+ * Import with `import { Root } from "@typed/ui/TreeGrid";` Extend the [TreeGrid.makeState runnable
367
+ * setup](/reference/%40typed%2Fui%2FTreeGrid%23makeState). Replace the linked program's final
368
+ * snapshot read with `Root({ state, label: "Files", content: "Rows" })`; render that Fx before the
369
+ * same Scope closes.
370
+ * @since 1.0.0
371
+ * @category components
372
+ */
373
+ export declare function Root<const Options extends RootOptions, const Host extends HostResult = never>(options: Options, host?: Dom.HostOverride<Dom.RenderHostProps<Options, RootInternalProps<Options>>, Options["content"], Host>): Fx<RenderEvent, Renderable.Error<Options | Host>, Renderable.Services<Options | Host> | Scope.Scope | RenderTemplate>;
374
+ /**
375
+ * Inputs accepted by TreeGrid.Row in addition to the shared DOM host options.
376
+ *
377
+ * @remarks
378
+ * ## Why
379
+ *
380
+ * The options type makes required state, content, accessible relationships, and custom-host inputs
381
+ * visible before rendering.
382
+ *
383
+ * ## Ownership and lifetime
384
+ *
385
+ * This declaration is data or schema metadata and acquires no resources.
386
+ *
387
+ * ## Example
388
+ *
389
+ * Import with `import type { RowOptions } from "@typed/ui/TreeGrid";` Extend the
390
+ * [TreeGrid.makeState runnable setup](/reference/%40typed%2Fui%2FTreeGrid%23makeState). A
391
+ * hierarchical row is
392
+ * `const options: RowOptions = { state, rowId: "src", level: 1, hasChildren: true, content: "Cells" }`.
393
+ * @since 1.0.0
394
+ * @category models
395
+ */
396
+ export interface RowOptions extends Dom.HostOptions<HTMLDivElement> {
397
+ /**
398
+ * Renderer-independent RefSubject state consumed by this component or operation.
399
+ * @since 1.0.0
400
+ * @category models
401
+ */
402
+ readonly state: RefSubject.HydratedRefSubject<State, Schema.SchemaError>;
403
+ /**
404
+ * Stable logical row identity used by vertical grid movement.
405
+ * @since 1.0.0
406
+ * @category models
407
+ */
408
+ readonly rowId: string;
409
+ /**
410
+ * Id whose expansion controls this descendant group.
411
+ * @since 1.0.0
412
+ * @category models
413
+ */
414
+ readonly parentId?: string;
415
+ /**
416
+ * One-based hierarchy level exposed through aria-level.
417
+ * @since 1.0.0
418
+ * @category models
419
+ */
420
+ readonly level?: number;
421
+ /**
422
+ * Whether aria-expanded is emitted and hierarchical keys may open descendants.
423
+ * @since 1.0.0
424
+ * @category models
425
+ */
426
+ readonly hasChildren?: boolean;
427
+ /**
428
+ * Renderable child content for the component host.
429
+ * @since 1.0.0
430
+ * @category models
431
+ */
432
+ readonly content: Renderable.Any;
433
+ }
434
+ declare function rowInternalProps<const Options extends RowOptions>(options: Options): ({ property }: Dom.InternalPropsHelpers<Options>) => {
435
+ readonly id: string;
436
+ readonly role: "row";
437
+ readonly "aria-level": 1 | Exclude<Dom.Property<Options, "level">, Dom.Nullish>;
438
+ readonly "aria-expanded": RefSubject.Computed<boolean, Schema.SchemaError, never> | undefined;
439
+ };
440
+ type RowInternalProps<Options extends RowOptions> = ReturnType<ReturnType<typeof rowInternalProps<Options>>>;
441
+ /**
442
+ * Renders a hierarchical row with level and optional expanded state.
443
+ *
444
+ * @remarks
445
+ * ## Why
446
+ *
447
+ * The component applies the family behavior while leaving callers free to supply a custom host
448
+ * through the shared DOM boundary.
449
+ *
450
+ * ## Ownership and lifetime
451
+ *
452
+ * The returned Fx installs DOM refs, native listeners, state subscriptions, and optional
453
+ * collection registrations only when rendered. The rendering Scope removes those resources;
454
+ * unrelated nodes and attributes remain caller-owned.
455
+ *
456
+ * ## Example
457
+ *
458
+ * Import with `import { Row } from "@typed/ui/TreeGrid";` Extend the [TreeGrid.makeState runnable
459
+ * setup](/reference/%40typed%2Fui%2FTreeGrid%23makeState). Replace the linked program's final
460
+ * snapshot read with `Row({ state, rowId: "src", content: "Cells" })`; render that Fx before the
461
+ * same Scope closes.
462
+ * @since 1.0.0
463
+ * @category components
464
+ */
465
+ export declare function Row<const Options extends RowOptions, const Host extends HostResult = never>(options: Options, host?: Dom.HostOverride<Dom.RenderHostProps<Options, RowInternalProps<Options>>, Options["content"], Host>): Fx<RenderEvent, Renderable.Error<Options | Host>, Renderable.Services<Options | Host> | Scope.Scope | RenderTemplate>;
466
+ /**
467
+ * Inputs accepted by TreeGrid.Cell in addition to the shared DOM host options.
468
+ *
469
+ * @remarks
470
+ * ## Why
471
+ *
472
+ * The options type makes required state, content, accessible relationships, and custom-host inputs
473
+ * visible before rendering.
474
+ *
475
+ * ## Ownership and lifetime
476
+ *
477
+ * This declaration is data or schema metadata and acquires no resources.
478
+ *
479
+ * ## Example
480
+ *
481
+ * Import with `import type { CellOptions } from "@typed/ui/TreeGrid";` Extend the
482
+ * [TreeGrid.makeState runnable setup](/reference/%40typed%2Fui%2FTreeGrid%23makeState). A navigable
483
+ * cell is
484
+ * `const options: CellOptions = { state, collection, id: "src-name", rowId: "src", columnIndex: 1, content: "src" }`.
485
+ * @since 1.0.0
486
+ * @category models
487
+ */
488
+ export interface CellOptions extends Dom.HostOptions<HTMLDivElement> {
489
+ /**
490
+ * Renderer-independent RefSubject state consumed by this component or operation.
491
+ * @since 1.0.0
492
+ * @category models
493
+ */
494
+ readonly state: RefSubject.HydratedRefSubject<State, Schema.SchemaError>;
495
+ /**
496
+ * Item registry used for collection-driven keyboard behavior and mounted ordering.
497
+ * @since 1.0.0
498
+ * @category models
499
+ */
500
+ readonly collection?: RefSubject.RefSubject<Collection.State<CellPosition>>;
501
+ /**
502
+ * Stable id used for collection identity and ARIA relationships.
503
+ * @since 1.0.0
504
+ * @category models
505
+ */
506
+ readonly id: string;
507
+ /**
508
+ * Stable logical row identity used by vertical grid movement.
509
+ * @since 1.0.0
510
+ * @category models
511
+ */
512
+ readonly rowId: string;
513
+ /**
514
+ * Caller-supplied column index used for movement and emitted unchanged as aria-colindex; ARIA
515
+ * indexes are one-based.
516
+ * @since 1.0.0
517
+ * @category models
518
+ */
519
+ readonly columnIndex: number;
520
+ /**
521
+ * Id whose expansion controls this descendant group.
522
+ * @since 1.0.0
523
+ * @category models
524
+ */
525
+ readonly parentId?: string;
526
+ /**
527
+ * Whether aria-expanded is emitted and hierarchical keys may open descendants.
528
+ * @since 1.0.0
529
+ * @category models
530
+ */
531
+ readonly hasChildren?: boolean;
532
+ /**
533
+ * Renderable child content for the component host.
534
+ * @since 1.0.0
535
+ * @category models
536
+ */
537
+ readonly content: Renderable.Any;
538
+ }
539
+ declare function cellInternalProps<const Options extends CellOptions>(options: Options): () => {
540
+ readonly id: string;
541
+ readonly role: "gridcell";
542
+ readonly "aria-colindex": number;
543
+ readonly "?data-active": RefSubject.Computed<boolean, Schema.SchemaError, never>;
544
+ readonly ref: ((element: Element) => Effect.Effect<void, never, Scope.Scope>) | undefined;
545
+ };
546
+ type CellInternalProps<Options extends CellOptions> = ReturnType<ReturnType<typeof cellInternalProps<Options>>>;
547
+ /**
548
+ * Renders and optionally registers one gridcell with row and column coordinates.
549
+ *
550
+ * @remarks
551
+ * ## Why
552
+ *
553
+ * The component applies the family behavior while leaving callers free to supply a custom host
554
+ * through the shared DOM boundary.
555
+ *
556
+ * ## Ownership and lifetime
557
+ *
558
+ * The returned Fx installs DOM refs, native listeners, state subscriptions, and optional
559
+ * collection registrations only when rendered. The rendering Scope removes those resources;
560
+ * unrelated nodes and attributes remain caller-owned.
561
+ *
562
+ * ## Example
563
+ *
564
+ * Import with `import { Cell } from "@typed/ui/TreeGrid";` Extend the [TreeGrid.makeState runnable
565
+ * setup](/reference/%40typed%2Fui%2FTreeGrid%23makeState). Replace the linked program's final
566
+ * snapshot read with `Cell({ state, id: "src-name", rowId: "src", columnIndex: 1, content: "src"
567
+ * })`; render that Fx before the same Scope closes.
568
+ * @since 1.0.0
569
+ * @category components
570
+ */
571
+ export declare function Cell<const Options extends CellOptions, const Host extends HostResult = never>(options: Options, host?: Dom.HostOverride<Dom.RenderHostProps<Options, CellInternalProps<Options>>, Options["content"], Host>): Fx<RenderEvent, Renderable.Error<Options | Host>, Renderable.Services<Options | Host> | Scope.Scope | RenderTemplate>;
572
+ /**
573
+ * Inputs accepted by TreeGrid.Group in addition to the shared DOM host options.
574
+ *
575
+ * @remarks
576
+ * ## Why
577
+ *
578
+ * The options type makes required state, content, accessible relationships, and custom-host inputs
579
+ * visible before rendering.
580
+ *
581
+ * ## Ownership and lifetime
582
+ *
583
+ * This declaration is data or schema metadata and acquires no resources.
584
+ *
585
+ * ## Example
586
+ *
587
+ * Import with `import type { GroupOptions } from "@typed/ui/TreeGrid";` Extend the
588
+ * [TreeGrid.makeState runnable setup](/reference/%40typed%2Fui%2FTreeGrid%23makeState). Relate
589
+ * descendant rows to their branch with
590
+ * `const options: GroupOptions = { state, parentId: "src", content: "Rows" }`.
591
+ * @since 1.0.0
592
+ * @category models
593
+ */
594
+ export interface GroupOptions extends Dom.HostOptions<HTMLDivElement> {
595
+ /**
596
+ * Renderer-independent RefSubject state consumed by this component or operation.
597
+ * @since 1.0.0
598
+ * @category models
599
+ */
600
+ readonly state: RefSubject.HydratedRefSubject<State, Schema.SchemaError>;
601
+ /**
602
+ * Id whose expansion controls this descendant group.
603
+ * @since 1.0.0
604
+ * @category models
605
+ */
606
+ readonly parentId: string;
607
+ /**
608
+ * Renderable child content for the component host.
609
+ * @since 1.0.0
610
+ * @category models
611
+ */
612
+ readonly content: Renderable.Any;
613
+ }
614
+ declare function groupInternalProps<const Options extends GroupOptions>(options: Options): () => {
615
+ readonly role: "rowgroup";
616
+ readonly "?hidden": RefSubject.Computed<boolean, Schema.SchemaError, never>;
617
+ };
618
+ type GroupInternalProps<Options extends GroupOptions> = ReturnType<ReturnType<typeof groupInternalProps<Options>>>;
619
+ /**
620
+ * Renders a rowgroup and hides it while its parent row is collapsed.
621
+ *
622
+ * @remarks
623
+ * ## Why
624
+ *
625
+ * The component applies the family behavior while leaving callers free to supply a custom host
626
+ * through the shared DOM boundary.
627
+ *
628
+ * ## Ownership and lifetime
629
+ *
630
+ * The returned Fx installs DOM refs, native listeners, state subscriptions, and optional
631
+ * collection registrations only when rendered. The rendering Scope removes those resources;
632
+ * unrelated nodes and attributes remain caller-owned.
633
+ *
634
+ * ## Example
635
+ *
636
+ * Import with `import { Group } from "@typed/ui/TreeGrid";` Extend the [TreeGrid.makeState runnable
637
+ * setup](/reference/%40typed%2Fui%2FTreeGrid%23makeState). Replace the linked program's final
638
+ * snapshot read with `Group({ state, parentId: "src", content: "Rows" })`; render that Fx before
639
+ * the same Scope closes.
640
+ * @since 1.0.0
641
+ * @category components
642
+ */
643
+ export declare function Group<const Options extends GroupOptions, const Host extends HostResult = never>(options: Options, host?: Dom.HostOverride<Dom.RenderHostProps<Options, GroupInternalProps<Options>>, Options["content"], Host>): Fx<RenderEvent, Renderable.Error<Options | Host>, Renderable.Services<Options | Host> | Scope.Scope | RenderTemplate>;
644
+ export {};
645
+ //# sourceMappingURL=TreeGrid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeGrid.d.ts","sourceRoot":"","sources":["../src/TreeGrid.ts"],"names":[],"mappings":"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"}