@jini-ai/ui-kit 0.0.0-stage → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/LICENSE +201 -0
- package/README.md +150 -2
- package/dist/attrs.d.ts +18 -0
- package/dist/attrs.js +2 -0
- package/dist/confirm.d.ts +42 -0
- package/dist/confirm.js +41 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +5 -0
- package/dist/kit.spec.d.ts +491 -0
- package/dist/kit.spec.js +40 -0
- package/dist/needs.d.ts +24 -0
- package/dist/needs.js +29 -0
- package/dist/react/Kit.hooks.d.ts +39 -0
- package/dist/react/Kit.hooks.js +87 -0
- package/dist/react/KitProvider.d.ts +13 -0
- package/dist/react/KitProvider.js +15 -0
- package/dist/react/confirm/ConfirmDialog.d.ts +3 -0
- package/dist/react/confirm/ConfirmDialog.hooks.d.ts +7 -0
- package/dist/react/confirm/ConfirmDialog.hooks.js +101 -0
- package/dist/react/confirm/ConfirmDialog.js +8 -0
- package/dist/react/confirm/guard.d.ts +7 -0
- package/dist/react/confirm/guard.js +54 -0
- package/dist/react/context.d.ts +9 -0
- package/dist/react/context.js +24 -0
- package/dist/react/facade.d.ts +37 -0
- package/dist/react/facade.js +36 -0
- package/dist/react/index.d.ts +8 -0
- package/dist/react/index.js +7 -0
- package/dist/react/kit.d.ts +35 -0
- package/dist/react/kit.js +44 -0
- package/dist/react/native/Controls.d.ts +13 -0
- package/dist/react/native/Controls.hooks.d.ts +164 -0
- package/dist/react/native/Controls.hooks.js +69 -0
- package/dist/react/native/Controls.js +49 -0
- package/dist/react/native/Dialog.d.ts +4 -0
- package/dist/react/native/Dialog.hooks.d.ts +60 -0
- package/dist/react/native/Dialog.hooks.js +56 -0
- package/dist/react/native/Dialog.js +13 -0
- package/dist/react/native/Navigation.d.ts +5 -0
- package/dist/react/native/Navigation.hooks.d.ts +96 -0
- package/dist/react/native/Navigation.hooks.js +110 -0
- package/dist/react/native/Navigation.js +15 -0
- package/dist/react/native/index.d.ts +3 -0
- package/dist/react/native/index.js +9 -0
- package/dist/react/testing/driver.d.ts +27 -0
- package/dist/react/testing/driver.js +102 -0
- package/dist/react/testing/index.d.ts +5 -0
- package/dist/react/testing/index.js +3 -0
- package/dist/react/types.d.ts +210 -0
- package/dist/react/types.js +2 -0
- package/dist/testing/scenarios.d.ts +31 -0
- package/dist/testing/scenarios.js +28 -0
- package/dist/toast.d.ts +34 -0
- package/dist/toast.js +52 -0
- package/docs/decisions/DR-001.md +32 -0
- package/docs/spec/api.spec.md +98 -0
- package/docs/spec/behavior.spec.md +49 -0
- package/docs/spec/errors.spec.md +41 -0
- package/docs/spec/state.spec.md +45 -0
- package/docs/spec/ui.spec.md +49 -0
- package/package.json +97 -3
- package/src/react/native/styles.css +4 -0
|
@@ -0,0 +1,491 @@
|
|
|
1
|
+
/** Contract semver is independent of the npm package version. Only implemented entries may be required. */
|
|
2
|
+
export declare const KIT_CONTRACT: {
|
|
3
|
+
readonly id: "@jini-ai/ui-kit";
|
|
4
|
+
readonly version: "1.0.0";
|
|
5
|
+
};
|
|
6
|
+
export interface KitComponentSpec {
|
|
7
|
+
readonly status: 'implemented' | 'planned';
|
|
8
|
+
readonly tier: 'control' | 'composite' | 'layout';
|
|
9
|
+
readonly since: string | null;
|
|
10
|
+
readonly parts: readonly string[];
|
|
11
|
+
readonly focusTarget: string;
|
|
12
|
+
readonly portal: 'none' | 'overlay';
|
|
13
|
+
readonly safety: boolean;
|
|
14
|
+
readonly behaviors: readonly string[];
|
|
15
|
+
readonly props: readonly string[];
|
|
16
|
+
readonly events: readonly string[];
|
|
17
|
+
readonly variants: readonly string[];
|
|
18
|
+
readonly states: readonly string[];
|
|
19
|
+
}
|
|
20
|
+
export declare const kitSpec: {
|
|
21
|
+
readonly Button: {
|
|
22
|
+
readonly status: "implemented";
|
|
23
|
+
readonly tier: "control";
|
|
24
|
+
readonly since: "1.0.0";
|
|
25
|
+
readonly parts: readonly ["kit.button"];
|
|
26
|
+
readonly focusTarget: "button";
|
|
27
|
+
readonly portal: "none";
|
|
28
|
+
readonly safety: false;
|
|
29
|
+
readonly behaviors: readonly ["press", "disabled-blocks-press", "attrs-on-focus-target"];
|
|
30
|
+
readonly props: readonly ["attrs", "className", "children", "disabled", "pending", "variant", "type", "ref", "onPress"];
|
|
31
|
+
readonly events: readonly ["onPress"];
|
|
32
|
+
readonly variants: readonly ["primary", "secondary", "danger", "warning", "ghost"];
|
|
33
|
+
readonly states: readonly ["disabled", "pending"];
|
|
34
|
+
};
|
|
35
|
+
readonly IconButton: {
|
|
36
|
+
readonly status: "implemented";
|
|
37
|
+
readonly tier: "control";
|
|
38
|
+
readonly since: "1.0.0";
|
|
39
|
+
readonly parts: readonly ["kit.icon-button"];
|
|
40
|
+
readonly focusTarget: "button";
|
|
41
|
+
readonly portal: "none";
|
|
42
|
+
readonly safety: false;
|
|
43
|
+
readonly behaviors: readonly ["accessible-label", "press", "attrs-on-focus-target"];
|
|
44
|
+
readonly props: readonly ["attrs", "className", "children", "disabled", "pending", "variant", "type", "ref", "onPress", "label"];
|
|
45
|
+
readonly events: readonly ["onPress"];
|
|
46
|
+
readonly variants: readonly ["primary", "secondary", "danger", "warning", "ghost"];
|
|
47
|
+
readonly states: readonly ["disabled", "pending"];
|
|
48
|
+
};
|
|
49
|
+
readonly TextField: {
|
|
50
|
+
readonly status: "implemented";
|
|
51
|
+
readonly tier: "control";
|
|
52
|
+
readonly since: "1.0.0";
|
|
53
|
+
readonly parts: readonly ["kit.text-field", "kit.field-label"];
|
|
54
|
+
readonly focusTarget: "input";
|
|
55
|
+
readonly portal: "none";
|
|
56
|
+
readonly safety: false;
|
|
57
|
+
readonly behaviors: readonly ["value-change", "labelled-control", "attrs-on-focus-target"];
|
|
58
|
+
readonly props: readonly ["attrs", "className", "label", "value", "disabled", "required", "placeholder", "type", "ref", "onValueChange"];
|
|
59
|
+
readonly events: readonly ["onValueChange"];
|
|
60
|
+
readonly variants: readonly [];
|
|
61
|
+
readonly states: readonly ["disabled"];
|
|
62
|
+
};
|
|
63
|
+
readonly TextArea: {
|
|
64
|
+
readonly status: "implemented";
|
|
65
|
+
readonly tier: "control";
|
|
66
|
+
readonly since: "1.0.0";
|
|
67
|
+
readonly parts: readonly ["kit.text-area", "kit.field-label"];
|
|
68
|
+
readonly focusTarget: "textarea";
|
|
69
|
+
readonly portal: "none";
|
|
70
|
+
readonly safety: false;
|
|
71
|
+
readonly behaviors: readonly ["value-change", "labelled-control", "attrs-on-focus-target"];
|
|
72
|
+
readonly props: readonly ["attrs", "className", "label", "value", "disabled", "required", "placeholder", "ref", "onValueChange", "rows"];
|
|
73
|
+
readonly events: readonly ["onValueChange"];
|
|
74
|
+
readonly variants: readonly [];
|
|
75
|
+
readonly states: readonly ["disabled"];
|
|
76
|
+
};
|
|
77
|
+
readonly Select: {
|
|
78
|
+
readonly status: "implemented";
|
|
79
|
+
readonly tier: "control";
|
|
80
|
+
readonly since: "1.0.0";
|
|
81
|
+
readonly parts: readonly ["kit.select", "kit.field-label"];
|
|
82
|
+
readonly focusTarget: "select";
|
|
83
|
+
readonly portal: "none";
|
|
84
|
+
readonly safety: false;
|
|
85
|
+
readonly behaviors: readonly ["native-select", "value-change", "attrs-on-focus-target"];
|
|
86
|
+
readonly props: readonly ["attrs", "className", "label", "value", "disabled", "required", "ref", "onValueChange", "options"];
|
|
87
|
+
readonly events: readonly ["onValueChange"];
|
|
88
|
+
readonly variants: readonly [];
|
|
89
|
+
readonly states: readonly ["disabled"];
|
|
90
|
+
};
|
|
91
|
+
readonly Checkbox: {
|
|
92
|
+
readonly status: "implemented";
|
|
93
|
+
readonly tier: "control";
|
|
94
|
+
readonly since: "1.0.0";
|
|
95
|
+
readonly parts: readonly ["kit.checkbox"];
|
|
96
|
+
readonly focusTarget: "input";
|
|
97
|
+
readonly portal: "none";
|
|
98
|
+
readonly safety: false;
|
|
99
|
+
readonly behaviors: readonly ["checked-change", "labelled-control", "attrs-on-focus-target"];
|
|
100
|
+
readonly props: readonly ["attrs", "className", "label", "checked", "disabled", "ref", "onCheckedChange"];
|
|
101
|
+
readonly events: readonly ["onCheckedChange"];
|
|
102
|
+
readonly variants: readonly [];
|
|
103
|
+
readonly states: readonly ["disabled"];
|
|
104
|
+
};
|
|
105
|
+
readonly Switch: {
|
|
106
|
+
readonly status: "implemented";
|
|
107
|
+
readonly tier: "control";
|
|
108
|
+
readonly since: "1.0.0";
|
|
109
|
+
readonly parts: readonly ["kit.switch"];
|
|
110
|
+
readonly focusTarget: "input";
|
|
111
|
+
readonly portal: "none";
|
|
112
|
+
readonly safety: false;
|
|
113
|
+
readonly behaviors: readonly ["checked-change", "switch-role", "attrs-on-focus-target"];
|
|
114
|
+
readonly props: readonly ["attrs", "className", "label", "checked", "disabled", "ref", "onCheckedChange"];
|
|
115
|
+
readonly events: readonly ["onCheckedChange"];
|
|
116
|
+
readonly variants: readonly [];
|
|
117
|
+
readonly states: readonly ["disabled"];
|
|
118
|
+
};
|
|
119
|
+
readonly Dialog: {
|
|
120
|
+
readonly status: "implemented";
|
|
121
|
+
readonly tier: "composite";
|
|
122
|
+
readonly since: "1.0.0";
|
|
123
|
+
readonly parts: readonly ["kit.dialog", "kit.dialog-title", "kit.dialog-close", "kit.overlay"];
|
|
124
|
+
readonly focusTarget: "dialog";
|
|
125
|
+
readonly portal: "overlay";
|
|
126
|
+
readonly safety: false;
|
|
127
|
+
readonly behaviors: readonly ["escape-dismissal", "pending-blocks-dismissal", "focus-restore"];
|
|
128
|
+
readonly props: readonly ["attrs", "className", "open", "title", "children", "pending", "closeLabel", "ref", "onClose"];
|
|
129
|
+
readonly events: readonly ["onClose"];
|
|
130
|
+
readonly variants: readonly [];
|
|
131
|
+
readonly states: readonly ["disabled", "pending"];
|
|
132
|
+
};
|
|
133
|
+
readonly ConfirmDialog: {
|
|
134
|
+
readonly status: "implemented";
|
|
135
|
+
readonly tier: "composite";
|
|
136
|
+
readonly since: "1.0.0";
|
|
137
|
+
readonly parts: readonly ["confirm.dialog", "confirm.title", "confirm.body", "confirm.actions", "confirm.cancel", "confirm.confirm"];
|
|
138
|
+
readonly focusTarget: "cancel";
|
|
139
|
+
readonly portal: "overlay";
|
|
140
|
+
readonly safety: true;
|
|
141
|
+
readonly behaviors: readonly ["pending-blocks-every-dismissal", "cancel-first-focus", "agent-confirm-withheld", "consequence-label"];
|
|
142
|
+
readonly props: readonly ["attrs", "className", "open", "title", "body", "confirmLabel", "cancelLabel", "tone", "pending", "consequence", "agentHandle", "agentMayConfirm", "errorLabel", "actionAccessibleNames", "onConfirm", "onCancel"];
|
|
143
|
+
readonly events: readonly ["onConfirm", "onCancel"];
|
|
144
|
+
readonly variants: readonly ["default", "warning", "danger"];
|
|
145
|
+
readonly states: readonly ["disabled", "pending"];
|
|
146
|
+
};
|
|
147
|
+
readonly Tabs: {
|
|
148
|
+
readonly status: "implemented";
|
|
149
|
+
readonly tier: "composite";
|
|
150
|
+
readonly since: "1.0.0";
|
|
151
|
+
readonly parts: readonly ["kit.tabs", "kit.tab", "kit.tab-panel"];
|
|
152
|
+
readonly focusTarget: "active-tab";
|
|
153
|
+
readonly portal: "none";
|
|
154
|
+
readonly safety: false;
|
|
155
|
+
readonly behaviors: readonly ["roving-tabs", "labelled-panel"];
|
|
156
|
+
readonly props: readonly ["attrs", "className", "label", "value", "items", "onValueChange"];
|
|
157
|
+
readonly events: readonly ["onValueChange"];
|
|
158
|
+
readonly variants: readonly [];
|
|
159
|
+
readonly states: readonly [];
|
|
160
|
+
};
|
|
161
|
+
readonly Menu: {
|
|
162
|
+
readonly status: "implemented";
|
|
163
|
+
readonly tier: "composite";
|
|
164
|
+
readonly since: "1.0.0";
|
|
165
|
+
readonly parts: readonly ["kit.menu-trigger", "kit.menu", "kit.menu-item"];
|
|
166
|
+
readonly focusTarget: "trigger-and-item";
|
|
167
|
+
readonly portal: "none";
|
|
168
|
+
readonly safety: false;
|
|
169
|
+
readonly behaviors: readonly ["roving-menu", "escape-dismissal", "focus-restore"];
|
|
170
|
+
readonly props: readonly ["attrs", "className", "label", "items", "disabled"];
|
|
171
|
+
readonly events: readonly [];
|
|
172
|
+
readonly variants: readonly [];
|
|
173
|
+
readonly states: readonly ["open"];
|
|
174
|
+
};
|
|
175
|
+
readonly Toast: {
|
|
176
|
+
readonly status: "implemented";
|
|
177
|
+
readonly tier: "composite";
|
|
178
|
+
readonly since: "1.0.0";
|
|
179
|
+
readonly parts: readonly ["kit.toast", "kit.toast-dismiss", "kit.toast-region"];
|
|
180
|
+
readonly focusTarget: "dismiss";
|
|
181
|
+
readonly portal: "overlay";
|
|
182
|
+
readonly safety: false;
|
|
183
|
+
readonly behaviors: readonly ["live-region", "dismiss-toast"];
|
|
184
|
+
readonly props: readonly ["attrs", "className", "message", "tone", "dismissLabel", "onDismiss"];
|
|
185
|
+
readonly events: readonly ["onDismiss"];
|
|
186
|
+
readonly variants: readonly ["info", "success", "warning", "danger"];
|
|
187
|
+
readonly states: readonly [];
|
|
188
|
+
};
|
|
189
|
+
readonly Tooltip: {
|
|
190
|
+
readonly status: "implemented";
|
|
191
|
+
readonly tier: "composite";
|
|
192
|
+
readonly since: "1.0.0";
|
|
193
|
+
readonly parts: readonly ["kit.tooltip-trigger", "kit.tooltip"];
|
|
194
|
+
readonly focusTarget: "trigger";
|
|
195
|
+
readonly portal: "none";
|
|
196
|
+
readonly safety: false;
|
|
197
|
+
readonly behaviors: readonly ["focus-tooltip", "hover-tooltip", "escape-dismissal"];
|
|
198
|
+
readonly props: readonly ["attrs", "className", "content", "children", "label"];
|
|
199
|
+
readonly events: readonly [];
|
|
200
|
+
readonly variants: readonly [];
|
|
201
|
+
readonly states: readonly ["open"];
|
|
202
|
+
};
|
|
203
|
+
readonly Notice: {
|
|
204
|
+
readonly status: "implemented";
|
|
205
|
+
readonly tier: "control";
|
|
206
|
+
readonly since: "1.0.0";
|
|
207
|
+
readonly parts: readonly ["kit.notice"];
|
|
208
|
+
readonly focusTarget: "root";
|
|
209
|
+
readonly portal: "none";
|
|
210
|
+
readonly safety: false;
|
|
211
|
+
readonly behaviors: readonly ["status-region"];
|
|
212
|
+
readonly props: readonly ["attrs", "className", "children", "tone"];
|
|
213
|
+
readonly events: readonly [];
|
|
214
|
+
readonly variants: readonly ["info", "success", "warning", "danger"];
|
|
215
|
+
readonly states: readonly [];
|
|
216
|
+
};
|
|
217
|
+
readonly Spinner: {
|
|
218
|
+
readonly status: "implemented";
|
|
219
|
+
readonly tier: "control";
|
|
220
|
+
readonly since: "1.0.0";
|
|
221
|
+
readonly parts: readonly ["kit.spinner"];
|
|
222
|
+
readonly focusTarget: "root";
|
|
223
|
+
readonly portal: "none";
|
|
224
|
+
readonly safety: false;
|
|
225
|
+
readonly behaviors: readonly ["accessible-label"];
|
|
226
|
+
readonly props: readonly ["attrs", "className", "label"];
|
|
227
|
+
readonly events: readonly [];
|
|
228
|
+
readonly variants: readonly [];
|
|
229
|
+
readonly states: readonly [];
|
|
230
|
+
};
|
|
231
|
+
readonly Badge: {
|
|
232
|
+
readonly status: "implemented";
|
|
233
|
+
readonly tier: "control";
|
|
234
|
+
readonly since: "1.0.0";
|
|
235
|
+
readonly parts: readonly ["kit.badge"];
|
|
236
|
+
readonly focusTarget: "root";
|
|
237
|
+
readonly portal: "none";
|
|
238
|
+
readonly safety: false;
|
|
239
|
+
readonly behaviors: readonly ["text-content"];
|
|
240
|
+
readonly props: readonly ["attrs", "className", "children", "tone"];
|
|
241
|
+
readonly events: readonly [];
|
|
242
|
+
readonly variants: readonly ["info", "success", "warning", "danger"];
|
|
243
|
+
readonly states: readonly [];
|
|
244
|
+
};
|
|
245
|
+
readonly Link: {
|
|
246
|
+
readonly status: "planned";
|
|
247
|
+
readonly tier: "composite";
|
|
248
|
+
readonly since: null;
|
|
249
|
+
readonly parts: readonly [];
|
|
250
|
+
readonly focusTarget: "planned";
|
|
251
|
+
readonly portal: "none";
|
|
252
|
+
readonly safety: false;
|
|
253
|
+
readonly behaviors: readonly [];
|
|
254
|
+
readonly props: readonly [];
|
|
255
|
+
readonly events: readonly [];
|
|
256
|
+
readonly variants: readonly [];
|
|
257
|
+
readonly states: readonly [];
|
|
258
|
+
};
|
|
259
|
+
readonly Icon: {
|
|
260
|
+
readonly status: "planned";
|
|
261
|
+
readonly tier: "composite";
|
|
262
|
+
readonly since: null;
|
|
263
|
+
readonly parts: readonly [];
|
|
264
|
+
readonly focusTarget: "planned";
|
|
265
|
+
readonly portal: "none";
|
|
266
|
+
readonly safety: false;
|
|
267
|
+
readonly behaviors: readonly [];
|
|
268
|
+
readonly props: readonly [];
|
|
269
|
+
readonly events: readonly [];
|
|
270
|
+
readonly variants: readonly [];
|
|
271
|
+
readonly states: readonly [];
|
|
272
|
+
};
|
|
273
|
+
readonly RadioGroup: {
|
|
274
|
+
readonly status: "planned";
|
|
275
|
+
readonly tier: "composite";
|
|
276
|
+
readonly since: null;
|
|
277
|
+
readonly parts: readonly [];
|
|
278
|
+
readonly focusTarget: "planned";
|
|
279
|
+
readonly portal: "none";
|
|
280
|
+
readonly safety: false;
|
|
281
|
+
readonly behaviors: readonly [];
|
|
282
|
+
readonly props: readonly [];
|
|
283
|
+
readonly events: readonly [];
|
|
284
|
+
readonly variants: readonly [];
|
|
285
|
+
readonly states: readonly [];
|
|
286
|
+
};
|
|
287
|
+
readonly Field: {
|
|
288
|
+
readonly status: "planned";
|
|
289
|
+
readonly tier: "composite";
|
|
290
|
+
readonly since: null;
|
|
291
|
+
readonly parts: readonly [];
|
|
292
|
+
readonly focusTarget: "planned";
|
|
293
|
+
readonly portal: "none";
|
|
294
|
+
readonly safety: false;
|
|
295
|
+
readonly behaviors: readonly [];
|
|
296
|
+
readonly props: readonly [];
|
|
297
|
+
readonly events: readonly [];
|
|
298
|
+
readonly variants: readonly [];
|
|
299
|
+
readonly states: readonly [];
|
|
300
|
+
};
|
|
301
|
+
readonly Card: {
|
|
302
|
+
readonly status: "planned";
|
|
303
|
+
readonly tier: "composite";
|
|
304
|
+
readonly since: null;
|
|
305
|
+
readonly parts: readonly [];
|
|
306
|
+
readonly focusTarget: "planned";
|
|
307
|
+
readonly portal: "none";
|
|
308
|
+
readonly safety: false;
|
|
309
|
+
readonly behaviors: readonly [];
|
|
310
|
+
readonly props: readonly [];
|
|
311
|
+
readonly events: readonly [];
|
|
312
|
+
readonly variants: readonly [];
|
|
313
|
+
readonly states: readonly [];
|
|
314
|
+
};
|
|
315
|
+
readonly Table: {
|
|
316
|
+
readonly status: "planned";
|
|
317
|
+
readonly tier: "composite";
|
|
318
|
+
readonly since: null;
|
|
319
|
+
readonly parts: readonly [];
|
|
320
|
+
readonly focusTarget: "planned";
|
|
321
|
+
readonly portal: "none";
|
|
322
|
+
readonly safety: false;
|
|
323
|
+
readonly behaviors: readonly [];
|
|
324
|
+
readonly props: readonly [];
|
|
325
|
+
readonly events: readonly [];
|
|
326
|
+
readonly variants: readonly [];
|
|
327
|
+
readonly states: readonly [];
|
|
328
|
+
};
|
|
329
|
+
readonly Popover: {
|
|
330
|
+
readonly status: "planned";
|
|
331
|
+
readonly tier: "composite";
|
|
332
|
+
readonly since: null;
|
|
333
|
+
readonly parts: readonly [];
|
|
334
|
+
readonly focusTarget: "planned";
|
|
335
|
+
readonly portal: "none";
|
|
336
|
+
readonly safety: false;
|
|
337
|
+
readonly behaviors: readonly [];
|
|
338
|
+
readonly props: readonly [];
|
|
339
|
+
readonly events: readonly [];
|
|
340
|
+
readonly variants: readonly [];
|
|
341
|
+
readonly states: readonly [];
|
|
342
|
+
};
|
|
343
|
+
readonly Combobox: {
|
|
344
|
+
readonly status: "planned";
|
|
345
|
+
readonly tier: "composite";
|
|
346
|
+
readonly since: null;
|
|
347
|
+
readonly parts: readonly [];
|
|
348
|
+
readonly focusTarget: "planned";
|
|
349
|
+
readonly portal: "none";
|
|
350
|
+
readonly safety: false;
|
|
351
|
+
readonly behaviors: readonly [];
|
|
352
|
+
readonly props: readonly [];
|
|
353
|
+
readonly events: readonly [];
|
|
354
|
+
readonly variants: readonly [];
|
|
355
|
+
readonly states: readonly [];
|
|
356
|
+
};
|
|
357
|
+
readonly Stack: {
|
|
358
|
+
readonly status: "planned";
|
|
359
|
+
readonly tier: "layout";
|
|
360
|
+
readonly since: null;
|
|
361
|
+
readonly parts: readonly [];
|
|
362
|
+
readonly focusTarget: "planned";
|
|
363
|
+
readonly portal: "none";
|
|
364
|
+
readonly safety: false;
|
|
365
|
+
readonly behaviors: readonly [];
|
|
366
|
+
readonly props: readonly [];
|
|
367
|
+
readonly events: readonly [];
|
|
368
|
+
readonly variants: readonly [];
|
|
369
|
+
readonly states: readonly [];
|
|
370
|
+
};
|
|
371
|
+
readonly Grid: {
|
|
372
|
+
readonly status: "planned";
|
|
373
|
+
readonly tier: "layout";
|
|
374
|
+
readonly since: null;
|
|
375
|
+
readonly parts: readonly [];
|
|
376
|
+
readonly focusTarget: "planned";
|
|
377
|
+
readonly portal: "none";
|
|
378
|
+
readonly safety: false;
|
|
379
|
+
readonly behaviors: readonly [];
|
|
380
|
+
readonly props: readonly [];
|
|
381
|
+
readonly events: readonly [];
|
|
382
|
+
readonly variants: readonly [];
|
|
383
|
+
readonly states: readonly [];
|
|
384
|
+
};
|
|
385
|
+
readonly ShellLayout: {
|
|
386
|
+
readonly status: "planned";
|
|
387
|
+
readonly tier: "layout";
|
|
388
|
+
readonly since: null;
|
|
389
|
+
readonly parts: readonly [];
|
|
390
|
+
readonly focusTarget: "planned";
|
|
391
|
+
readonly portal: "none";
|
|
392
|
+
readonly safety: false;
|
|
393
|
+
readonly behaviors: readonly [];
|
|
394
|
+
readonly props: readonly [];
|
|
395
|
+
readonly events: readonly [];
|
|
396
|
+
readonly variants: readonly [];
|
|
397
|
+
readonly states: readonly [];
|
|
398
|
+
};
|
|
399
|
+
readonly Sidebar: {
|
|
400
|
+
readonly status: "planned";
|
|
401
|
+
readonly tier: "layout";
|
|
402
|
+
readonly since: null;
|
|
403
|
+
readonly parts: readonly [];
|
|
404
|
+
readonly focusTarget: "planned";
|
|
405
|
+
readonly portal: "none";
|
|
406
|
+
readonly safety: false;
|
|
407
|
+
readonly behaviors: readonly [];
|
|
408
|
+
readonly props: readonly [];
|
|
409
|
+
readonly events: readonly [];
|
|
410
|
+
readonly variants: readonly [];
|
|
411
|
+
readonly states: readonly [];
|
|
412
|
+
};
|
|
413
|
+
readonly NavItem: {
|
|
414
|
+
readonly status: "planned";
|
|
415
|
+
readonly tier: "layout";
|
|
416
|
+
readonly since: null;
|
|
417
|
+
readonly parts: readonly [];
|
|
418
|
+
readonly focusTarget: "planned";
|
|
419
|
+
readonly portal: "none";
|
|
420
|
+
readonly safety: false;
|
|
421
|
+
readonly behaviors: readonly [];
|
|
422
|
+
readonly props: readonly [];
|
|
423
|
+
readonly events: readonly [];
|
|
424
|
+
readonly variants: readonly [];
|
|
425
|
+
readonly states: readonly [];
|
|
426
|
+
};
|
|
427
|
+
readonly PageHeader: {
|
|
428
|
+
readonly status: "planned";
|
|
429
|
+
readonly tier: "layout";
|
|
430
|
+
readonly since: null;
|
|
431
|
+
readonly parts: readonly [];
|
|
432
|
+
readonly focusTarget: "planned";
|
|
433
|
+
readonly portal: "none";
|
|
434
|
+
readonly safety: false;
|
|
435
|
+
readonly behaviors: readonly [];
|
|
436
|
+
readonly props: readonly [];
|
|
437
|
+
readonly events: readonly [];
|
|
438
|
+
readonly variants: readonly [];
|
|
439
|
+
readonly states: readonly [];
|
|
440
|
+
};
|
|
441
|
+
readonly Section: {
|
|
442
|
+
readonly status: "planned";
|
|
443
|
+
readonly tier: "layout";
|
|
444
|
+
readonly since: null;
|
|
445
|
+
readonly parts: readonly [];
|
|
446
|
+
readonly focusTarget: "planned";
|
|
447
|
+
readonly portal: "none";
|
|
448
|
+
readonly safety: false;
|
|
449
|
+
readonly behaviors: readonly [];
|
|
450
|
+
readonly props: readonly [];
|
|
451
|
+
readonly events: readonly [];
|
|
452
|
+
readonly variants: readonly [];
|
|
453
|
+
readonly states: readonly [];
|
|
454
|
+
};
|
|
455
|
+
readonly EmptyState: {
|
|
456
|
+
readonly status: "planned";
|
|
457
|
+
readonly tier: "layout";
|
|
458
|
+
readonly since: null;
|
|
459
|
+
readonly parts: readonly [];
|
|
460
|
+
readonly focusTarget: "planned";
|
|
461
|
+
readonly portal: "none";
|
|
462
|
+
readonly safety: false;
|
|
463
|
+
readonly behaviors: readonly [];
|
|
464
|
+
readonly props: readonly [];
|
|
465
|
+
readonly events: readonly [];
|
|
466
|
+
readonly variants: readonly [];
|
|
467
|
+
readonly states: readonly [];
|
|
468
|
+
};
|
|
469
|
+
readonly OverlayHost: {
|
|
470
|
+
readonly status: "planned";
|
|
471
|
+
readonly tier: "layout";
|
|
472
|
+
readonly since: null;
|
|
473
|
+
readonly parts: readonly [];
|
|
474
|
+
readonly focusTarget: "planned";
|
|
475
|
+
readonly portal: "none";
|
|
476
|
+
readonly safety: false;
|
|
477
|
+
readonly behaviors: readonly [];
|
|
478
|
+
readonly props: readonly [];
|
|
479
|
+
readonly events: readonly [];
|
|
480
|
+
readonly variants: readonly [];
|
|
481
|
+
readonly states: readonly [];
|
|
482
|
+
};
|
|
483
|
+
};
|
|
484
|
+
export type KitComponentName = keyof typeof kitSpec;
|
|
485
|
+
export type ImplementedComponentName = {
|
|
486
|
+
[K in KitComponentName]: typeof kitSpec[K]['status'] extends 'implemented' ? K : never;
|
|
487
|
+
}[KitComponentName];
|
|
488
|
+
export type KitPart = typeof kitSpec[ImplementedComponentName]['parts'][number];
|
|
489
|
+
export declare const implementedComponents: readonly ImplementedComponentName[];
|
|
490
|
+
export declare const kitParts: readonly KitPart[];
|
|
491
|
+
//# sourceMappingURL=kit.spec.d.ts.map
|
package/dist/kit.spec.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/** Contract semver is independent of the npm package version. Only implemented entries may be required. */
|
|
2
|
+
export const KIT_CONTRACT = { id: '@jini-ai/ui-kit', version: '1.0.0' };
|
|
3
|
+
export const kitSpec = {
|
|
4
|
+
Button: { "status": "implemented", "tier": "control", "since": "1.0.0", "parts": ["kit.button"], "focusTarget": "button", "portal": "none", "safety": false, "behaviors": ["press", "disabled-blocks-press", "attrs-on-focus-target"], "props": ["attrs", "className", "children", "disabled", "pending", "variant", "type", "ref", "onPress"], "events": ["onPress"], "variants": ["primary", "secondary", "danger", "warning", "ghost"], "states": ["disabled", "pending"] },
|
|
5
|
+
IconButton: { "status": "implemented", "tier": "control", "since": "1.0.0", "parts": ["kit.icon-button"], "focusTarget": "button", "portal": "none", "safety": false, "behaviors": ["accessible-label", "press", "attrs-on-focus-target"], "props": ["attrs", "className", "children", "disabled", "pending", "variant", "type", "ref", "onPress", "label"], "events": ["onPress"], "variants": ["primary", "secondary", "danger", "warning", "ghost"], "states": ["disabled", "pending"] },
|
|
6
|
+
TextField: { "status": "implemented", "tier": "control", "since": "1.0.0", "parts": ["kit.text-field", "kit.field-label"], "focusTarget": "input", "portal": "none", "safety": false, "behaviors": ["value-change", "labelled-control", "attrs-on-focus-target"], "props": ["attrs", "className", "label", "value", "disabled", "required", "placeholder", "type", "ref", "onValueChange"], "events": ["onValueChange"], "variants": [], "states": ["disabled"] },
|
|
7
|
+
TextArea: { "status": "implemented", "tier": "control", "since": "1.0.0", "parts": ["kit.text-area", "kit.field-label"], "focusTarget": "textarea", "portal": "none", "safety": false, "behaviors": ["value-change", "labelled-control", "attrs-on-focus-target"], "props": ["attrs", "className", "label", "value", "disabled", "required", "placeholder", "ref", "onValueChange", "rows"], "events": ["onValueChange"], "variants": [], "states": ["disabled"] },
|
|
8
|
+
Select: { "status": "implemented", "tier": "control", "since": "1.0.0", "parts": ["kit.select", "kit.field-label"], "focusTarget": "select", "portal": "none", "safety": false, "behaviors": ["native-select", "value-change", "attrs-on-focus-target"], "props": ["attrs", "className", "label", "value", "disabled", "required", "ref", "onValueChange", "options"], "events": ["onValueChange"], "variants": [], "states": ["disabled"] },
|
|
9
|
+
Checkbox: { "status": "implemented", "tier": "control", "since": "1.0.0", "parts": ["kit.checkbox"], "focusTarget": "input", "portal": "none", "safety": false, "behaviors": ["checked-change", "labelled-control", "attrs-on-focus-target"], "props": ["attrs", "className", "label", "checked", "disabled", "ref", "onCheckedChange"], "events": ["onCheckedChange"], "variants": [], "states": ["disabled"] },
|
|
10
|
+
Switch: { "status": "implemented", "tier": "control", "since": "1.0.0", "parts": ["kit.switch"], "focusTarget": "input", "portal": "none", "safety": false, "behaviors": ["checked-change", "switch-role", "attrs-on-focus-target"], "props": ["attrs", "className", "label", "checked", "disabled", "ref", "onCheckedChange"], "events": ["onCheckedChange"], "variants": [], "states": ["disabled"] },
|
|
11
|
+
Dialog: { "status": "implemented", "tier": "composite", "since": "1.0.0", "parts": ["kit.dialog", "kit.dialog-title", "kit.dialog-close", "kit.overlay"], "focusTarget": "dialog", "portal": "overlay", "safety": false, "behaviors": ["escape-dismissal", "pending-blocks-dismissal", "focus-restore"], "props": ["attrs", "className", "open", "title", "children", "pending", "closeLabel", "ref", "onClose"], "events": ["onClose"], "variants": [], "states": ["disabled", "pending"] },
|
|
12
|
+
ConfirmDialog: { "status": "implemented", "tier": "composite", "since": "1.0.0", "parts": ["confirm.dialog", "confirm.title", "confirm.body", "confirm.actions", "confirm.cancel", "confirm.confirm"], "focusTarget": "cancel", "portal": "overlay", "safety": true, "behaviors": ["pending-blocks-every-dismissal", "cancel-first-focus", "agent-confirm-withheld", "consequence-label"], "props": ["attrs", "className", "open", "title", "body", "confirmLabel", "cancelLabel", "tone", "pending", "consequence", "agentHandle", "agentMayConfirm", "errorLabel", "actionAccessibleNames", "onConfirm", "onCancel"], "events": ["onConfirm", "onCancel"], "variants": ["default", "warning", "danger"], "states": ["disabled", "pending"] },
|
|
13
|
+
Tabs: { "status": "implemented", "tier": "composite", "since": "1.0.0", "parts": ["kit.tabs", "kit.tab", "kit.tab-panel"], "focusTarget": "active-tab", "portal": "none", "safety": false, "behaviors": ["roving-tabs", "labelled-panel"], "props": ["attrs", "className", "label", "value", "items", "onValueChange"], "events": ["onValueChange"], "variants": [], "states": [] },
|
|
14
|
+
Menu: { "status": "implemented", "tier": "composite", "since": "1.0.0", "parts": ["kit.menu-trigger", "kit.menu", "kit.menu-item"], "focusTarget": "trigger-and-item", "portal": "none", "safety": false, "behaviors": ["roving-menu", "escape-dismissal", "focus-restore"], "props": ["attrs", "className", "label", "items", "disabled"], "events": [], "variants": [], "states": ["open"] },
|
|
15
|
+
Toast: { "status": "implemented", "tier": "composite", "since": "1.0.0", "parts": ["kit.toast", "kit.toast-dismiss", "kit.toast-region"], "focusTarget": "dismiss", "portal": "overlay", "safety": false, "behaviors": ["live-region", "dismiss-toast"], "props": ["attrs", "className", "message", "tone", "dismissLabel", "onDismiss"], "events": ["onDismiss"], "variants": ["info", "success", "warning", "danger"], "states": [] },
|
|
16
|
+
Tooltip: { "status": "implemented", "tier": "composite", "since": "1.0.0", "parts": ["kit.tooltip-trigger", "kit.tooltip"], "focusTarget": "trigger", "portal": "none", "safety": false, "behaviors": ["focus-tooltip", "hover-tooltip", "escape-dismissal"], "props": ["attrs", "className", "content", "children", "label"], "events": [], "variants": [], "states": ["open"] },
|
|
17
|
+
Notice: { "status": "implemented", "tier": "control", "since": "1.0.0", "parts": ["kit.notice"], "focusTarget": "root", "portal": "none", "safety": false, "behaviors": ["status-region"], "props": ["attrs", "className", "children", "tone"], "events": [], "variants": ["info", "success", "warning", "danger"], "states": [] },
|
|
18
|
+
Spinner: { "status": "implemented", "tier": "control", "since": "1.0.0", "parts": ["kit.spinner"], "focusTarget": "root", "portal": "none", "safety": false, "behaviors": ["accessible-label"], "props": ["attrs", "className", "label"], "events": [], "variants": [], "states": [] },
|
|
19
|
+
Badge: { "status": "implemented", "tier": "control", "since": "1.0.0", "parts": ["kit.badge"], "focusTarget": "root", "portal": "none", "safety": false, "behaviors": ["text-content"], "props": ["attrs", "className", "children", "tone"], "events": [], "variants": ["info", "success", "warning", "danger"], "states": [] },
|
|
20
|
+
Link: { "status": "planned", "tier": "composite", "since": null, "parts": [], "focusTarget": "planned", "portal": "none", "safety": false, "behaviors": [], "props": [], "events": [], "variants": [], "states": [] },
|
|
21
|
+
Icon: { "status": "planned", "tier": "composite", "since": null, "parts": [], "focusTarget": "planned", "portal": "none", "safety": false, "behaviors": [], "props": [], "events": [], "variants": [], "states": [] },
|
|
22
|
+
RadioGroup: { "status": "planned", "tier": "composite", "since": null, "parts": [], "focusTarget": "planned", "portal": "none", "safety": false, "behaviors": [], "props": [], "events": [], "variants": [], "states": [] },
|
|
23
|
+
Field: { "status": "planned", "tier": "composite", "since": null, "parts": [], "focusTarget": "planned", "portal": "none", "safety": false, "behaviors": [], "props": [], "events": [], "variants": [], "states": [] },
|
|
24
|
+
Card: { "status": "planned", "tier": "composite", "since": null, "parts": [], "focusTarget": "planned", "portal": "none", "safety": false, "behaviors": [], "props": [], "events": [], "variants": [], "states": [] },
|
|
25
|
+
Table: { "status": "planned", "tier": "composite", "since": null, "parts": [], "focusTarget": "planned", "portal": "none", "safety": false, "behaviors": [], "props": [], "events": [], "variants": [], "states": [] },
|
|
26
|
+
Popover: { "status": "planned", "tier": "composite", "since": null, "parts": [], "focusTarget": "planned", "portal": "none", "safety": false, "behaviors": [], "props": [], "events": [], "variants": [], "states": [] },
|
|
27
|
+
Combobox: { "status": "planned", "tier": "composite", "since": null, "parts": [], "focusTarget": "planned", "portal": "none", "safety": false, "behaviors": [], "props": [], "events": [], "variants": [], "states": [] },
|
|
28
|
+
Stack: { "status": "planned", "tier": "layout", "since": null, "parts": [], "focusTarget": "planned", "portal": "none", "safety": false, "behaviors": [], "props": [], "events": [], "variants": [], "states": [] },
|
|
29
|
+
Grid: { "status": "planned", "tier": "layout", "since": null, "parts": [], "focusTarget": "planned", "portal": "none", "safety": false, "behaviors": [], "props": [], "events": [], "variants": [], "states": [] },
|
|
30
|
+
ShellLayout: { "status": "planned", "tier": "layout", "since": null, "parts": [], "focusTarget": "planned", "portal": "none", "safety": false, "behaviors": [], "props": [], "events": [], "variants": [], "states": [] },
|
|
31
|
+
Sidebar: { "status": "planned", "tier": "layout", "since": null, "parts": [], "focusTarget": "planned", "portal": "none", "safety": false, "behaviors": [], "props": [], "events": [], "variants": [], "states": [] },
|
|
32
|
+
NavItem: { "status": "planned", "tier": "layout", "since": null, "parts": [], "focusTarget": "planned", "portal": "none", "safety": false, "behaviors": [], "props": [], "events": [], "variants": [], "states": [] },
|
|
33
|
+
PageHeader: { "status": "planned", "tier": "layout", "since": null, "parts": [], "focusTarget": "planned", "portal": "none", "safety": false, "behaviors": [], "props": [], "events": [], "variants": [], "states": [] },
|
|
34
|
+
Section: { "status": "planned", "tier": "layout", "since": null, "parts": [], "focusTarget": "planned", "portal": "none", "safety": false, "behaviors": [], "props": [], "events": [], "variants": [], "states": [] },
|
|
35
|
+
EmptyState: { "status": "planned", "tier": "layout", "since": null, "parts": [], "focusTarget": "planned", "portal": "none", "safety": false, "behaviors": [], "props": [], "events": [], "variants": [], "states": [] },
|
|
36
|
+
OverlayHost: { "status": "planned", "tier": "layout", "since": null, "parts": [], "focusTarget": "planned", "portal": "none", "safety": false, "behaviors": [], "props": [], "events": [], "variants": [], "states": [] },
|
|
37
|
+
};
|
|
38
|
+
export const implementedComponents = Object.freeze(Object.keys(kitSpec).filter((name) => kitSpec[name].status === 'implemented'));
|
|
39
|
+
export const kitParts = Object.freeze([...new Set(implementedComponents.flatMap(name => [...kitSpec[name].parts]))]);
|
|
40
|
+
//# sourceMappingURL=kit.spec.js.map
|
package/dist/needs.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type KitComponentName } from './kit.spec.js';
|
|
2
|
+
export interface KitNeeds<N extends KitComponentName = KitComponentName> {
|
|
3
|
+
readonly id: string;
|
|
4
|
+
readonly contract: string;
|
|
5
|
+
readonly components: readonly N[];
|
|
6
|
+
}
|
|
7
|
+
export declare class KitConfigError extends Error {
|
|
8
|
+
readonly code = "KIT_CONFIG";
|
|
9
|
+
readonly issues: readonly string[];
|
|
10
|
+
constructor(required: {
|
|
11
|
+
issues: readonly string[];
|
|
12
|
+
}, _optional?: Record<string, never>);
|
|
13
|
+
}
|
|
14
|
+
/** Exact contract versions and ^major[.minor[.patch]] are deliberately the whole supported grammar. */
|
|
15
|
+
export declare function assertKitContract(required: {
|
|
16
|
+
contract: string;
|
|
17
|
+
}, _optional?: Record<string, never>): void;
|
|
18
|
+
export declare function needs<const N extends readonly KitComponentName[]>(required: {
|
|
19
|
+
id: string;
|
|
20
|
+
components: N;
|
|
21
|
+
}, optional?: {
|
|
22
|
+
contract?: string;
|
|
23
|
+
}): KitNeeds<N[number]>;
|
|
24
|
+
//# sourceMappingURL=needs.d.ts.map
|
package/dist/needs.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { KIT_CONTRACT, kitSpec } from './kit.spec.js';
|
|
2
|
+
export class KitConfigError extends Error {
|
|
3
|
+
code = 'KIT_CONFIG';
|
|
4
|
+
issues;
|
|
5
|
+
constructor(required, _optional = {}) {
|
|
6
|
+
super(`Invalid UI kit: ${required.issues.join('; ')}`);
|
|
7
|
+
this.name = 'KitConfigError';
|
|
8
|
+
this.issues = Object.freeze([...required.issues]);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
/** Exact contract versions and ^major[.minor[.patch]] are deliberately the whole supported grammar. */
|
|
12
|
+
export function assertKitContract(required, _optional = {}) {
|
|
13
|
+
const { contract } = required;
|
|
14
|
+
const match = /^\^(\d+)(?:\.(\d+))?(?:\.(\d+))?$/.exec(contract);
|
|
15
|
+
const [major, minor, patch] = KIT_CONTRACT.version.split('.').map(Number);
|
|
16
|
+
const compatible = match ? Number(match[1]) === major && (Number(match[2] ?? 0) < minor ||
|
|
17
|
+
(Number(match[2] ?? 0) === minor && Number(match[3] ?? 0) <= patch)) : contract === KIT_CONTRACT.version;
|
|
18
|
+
if (!compatible)
|
|
19
|
+
throw new KitConfigError({ issues: [`contract ${contract} is incompatible with ${KIT_CONTRACT.version}`] });
|
|
20
|
+
}
|
|
21
|
+
export function needs(required, optional = {}) {
|
|
22
|
+
const contract = optional.contract ?? '^1';
|
|
23
|
+
assertKitContract({ contract });
|
|
24
|
+
const issues = required.components.filter(name => kitSpec[name]?.status !== 'implemented').map(name => `${name} is planned, not implemented`);
|
|
25
|
+
if (issues.length)
|
|
26
|
+
throw new KitConfigError({ issues });
|
|
27
|
+
return Object.freeze({ ...required, components: Object.freeze([...required.components]), contract });
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=needs.js.map
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import { type ImplementedComponentName } from '../kit.spec.js';
|
|
3
|
+
import type { KitContextValue, KitProviderProps, ReactKitProps, ToastProps } from './types.js';
|
|
4
|
+
import { createToastService } from '../toast.js';
|
|
5
|
+
export declare function useKit(_required?: Record<string, never>, _optional?: Record<string, never>): KitContextValue;
|
|
6
|
+
export declare function useKitProvider(required: KitProviderProps, _optional?: Record<string, never>): KitContextValue;
|
|
7
|
+
export declare function useOverlayContainer(_required?: Record<string, never>, _optional?: Record<string, never>): HTMLElement | null;
|
|
8
|
+
export declare function renderOverlay(required: {
|
|
9
|
+
children: ReactNode;
|
|
10
|
+
container: HTMLElement | null;
|
|
11
|
+
}, _optional?: Record<string, never>): ReactNode;
|
|
12
|
+
export declare function useKitComponent<K extends ImplementedComponentName>(required: {
|
|
13
|
+
name: K;
|
|
14
|
+
}, _optional?: Record<string, never>): import("./types.js").ReactKit[K];
|
|
15
|
+
export declare function useFacade<K extends Exclude<ImplementedComponentName, 'ConfirmDialog'>>(required: {
|
|
16
|
+
name: K;
|
|
17
|
+
props: ReactKitProps[K];
|
|
18
|
+
}, _optional?: Record<string, never>): {
|
|
19
|
+
Component: import("./types.js").ReactKit[K];
|
|
20
|
+
props: ReactKitProps[K] & {
|
|
21
|
+
attrs: {
|
|
22
|
+
id?: string;
|
|
23
|
+
'data-jini-part': string;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
export declare function useToast(_required?: Record<string, never>, _optional?: Record<string, never>): import("../toast.js").ToastService;
|
|
28
|
+
export declare function useToastRegion(required: {
|
|
29
|
+
service?: ReturnType<typeof createToastService>;
|
|
30
|
+
attrs?: ToastProps['attrs'];
|
|
31
|
+
}, _optional?: Record<string, never>): {
|
|
32
|
+
container: HTMLElement | null;
|
|
33
|
+
attrs: {
|
|
34
|
+
id?: string;
|
|
35
|
+
'data-jini-part': string;
|
|
36
|
+
};
|
|
37
|
+
children: import("react").FunctionComponentElement<ToastProps>[];
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=Kit.hooks.d.ts.map
|