@object-ui/types 0.3.0
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 +304 -0
- package/dist/api-types.d.ts +451 -0
- package/dist/api-types.d.ts.map +1 -0
- package/dist/api-types.js +10 -0
- package/dist/app.d.ts +120 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +7 -0
- package/dist/base.d.ts +360 -0
- package/dist/base.d.ts.map +1 -0
- package/dist/base.js +10 -0
- package/dist/complex.d.ts +433 -0
- package/dist/complex.d.ts.map +1 -0
- package/dist/complex.js +9 -0
- package/dist/crud.d.ts +457 -0
- package/dist/crud.d.ts.map +1 -0
- package/dist/crud.js +10 -0
- package/dist/data-display.d.ts +599 -0
- package/dist/data-display.d.ts.map +1 -0
- package/dist/data-display.js +9 -0
- package/dist/data.d.ts +295 -0
- package/dist/data.d.ts.map +1 -0
- package/dist/data.js +10 -0
- package/dist/disclosure.d.ts +107 -0
- package/dist/disclosure.d.ts.map +1 -0
- package/dist/disclosure.js +9 -0
- package/dist/feedback.d.ts +159 -0
- package/dist/feedback.d.ts.map +1 -0
- package/dist/feedback.js +9 -0
- package/dist/form.d.ts +932 -0
- package/dist/form.d.ts.map +1 -0
- package/dist/form.js +9 -0
- package/dist/index.d.ts +108 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +48 -0
- package/dist/layout.d.ts +418 -0
- package/dist/layout.d.ts.map +1 -0
- package/dist/layout.js +10 -0
- package/dist/navigation.d.ts +224 -0
- package/dist/navigation.d.ts.map +1 -0
- package/dist/navigation.js +9 -0
- package/dist/objectql.d.ts +254 -0
- package/dist/objectql.d.ts.map +1 -0
- package/dist/objectql.js +10 -0
- package/dist/overlay.d.ts +396 -0
- package/dist/overlay.d.ts.map +1 -0
- package/dist/overlay.js +9 -0
- package/dist/registry.d.ts +85 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +1 -0
- package/package.json +82 -0
- package/src/api-types.ts +464 -0
- package/src/app.ts +138 -0
- package/src/base.ts +416 -0
- package/src/complex.ts +465 -0
- package/src/crud.ts +467 -0
- package/src/data-display.ts +630 -0
- package/src/data.ts +341 -0
- package/src/disclosure.ts +113 -0
- package/src/feedback.ts +170 -0
- package/src/form.ts +954 -0
- package/src/index.ts +350 -0
- package/src/layout.ts +451 -0
- package/src/navigation.ts +235 -0
- package/src/objectql.ts +301 -0
- package/src/overlay.ts +418 -0
- package/src/registry.ts +182 -0
package/src/data.ts
ADDED
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @object-ui/types - Data Source Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for data fetching and management.
|
|
5
|
+
* These interfaces define the universal adapter pattern for data access.
|
|
6
|
+
*
|
|
7
|
+
* @module data
|
|
8
|
+
* @packageDocumentation
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Query parameters for data fetching.
|
|
13
|
+
* Follows OData/REST conventions for universal compatibility.
|
|
14
|
+
*/
|
|
15
|
+
export interface QueryParams {
|
|
16
|
+
/**
|
|
17
|
+
* Fields to select (projection)
|
|
18
|
+
* @example ['id', 'name', 'email']
|
|
19
|
+
*/
|
|
20
|
+
$select?: string[];
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Filter expression
|
|
24
|
+
* @example { age: { $gt: 18 }, status: 'active' }
|
|
25
|
+
*/
|
|
26
|
+
$filter?: Record<string, any>;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Sort order
|
|
30
|
+
* @example { createdAt: 'desc', name: 'asc' }
|
|
31
|
+
*/
|
|
32
|
+
$orderby?: Record<string, 'asc' | 'desc'>;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Number of records to skip (for pagination)
|
|
36
|
+
*/
|
|
37
|
+
$skip?: number;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Maximum number of records to return
|
|
41
|
+
*/
|
|
42
|
+
$top?: number;
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Related entities to expand/include
|
|
46
|
+
* @example ['author', 'comments']
|
|
47
|
+
*/
|
|
48
|
+
$expand?: string[];
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Search query (full-text search)
|
|
52
|
+
*/
|
|
53
|
+
$search?: string;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Total count of records (for pagination)
|
|
57
|
+
*/
|
|
58
|
+
$count?: boolean;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Additional custom parameters
|
|
62
|
+
*/
|
|
63
|
+
[key: string]: any;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Query result with pagination metadata
|
|
68
|
+
*/
|
|
69
|
+
export interface QueryResult<T = any> {
|
|
70
|
+
/**
|
|
71
|
+
* Result data array
|
|
72
|
+
*/
|
|
73
|
+
data: T[];
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Total number of records (if requested)
|
|
77
|
+
*/
|
|
78
|
+
total?: number;
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Current page number (1-indexed)
|
|
82
|
+
*/
|
|
83
|
+
page?: number;
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Page size
|
|
87
|
+
*/
|
|
88
|
+
pageSize?: number;
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Whether there are more records
|
|
92
|
+
*/
|
|
93
|
+
hasMore?: boolean;
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Cursor for cursor-based pagination
|
|
97
|
+
*/
|
|
98
|
+
cursor?: string;
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Additional metadata
|
|
102
|
+
*/
|
|
103
|
+
metadata?: Record<string, any>;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Universal data source interface.
|
|
108
|
+
* This is the core abstraction that makes Object UI backend-agnostic.
|
|
109
|
+
*
|
|
110
|
+
* Implementations can connect to:
|
|
111
|
+
* - REST APIs
|
|
112
|
+
* - GraphQL endpoints
|
|
113
|
+
* - ObjectQL servers
|
|
114
|
+
* - Firebase/Supabase
|
|
115
|
+
* - Local arrays/JSON
|
|
116
|
+
* - Any data source
|
|
117
|
+
*
|
|
118
|
+
* @template T - The data type
|
|
119
|
+
*
|
|
120
|
+
* @example
|
|
121
|
+
* ```typescript
|
|
122
|
+
* class RestDataSource implements DataSource<User> {
|
|
123
|
+
* async find(resource, params) {
|
|
124
|
+
* const response = await fetch(`/api/${resource}?${buildQuery(params)}`);
|
|
125
|
+
* return response.json();
|
|
126
|
+
* }
|
|
127
|
+
* // ... other methods
|
|
128
|
+
* }
|
|
129
|
+
* ```
|
|
130
|
+
*/
|
|
131
|
+
export interface DataSource<T = any> {
|
|
132
|
+
/**
|
|
133
|
+
* Fetch multiple records.
|
|
134
|
+
*
|
|
135
|
+
* @param resource - Resource name (e.g., 'users', 'posts')
|
|
136
|
+
* @param params - Query parameters
|
|
137
|
+
* @returns Promise resolving to query result
|
|
138
|
+
*/
|
|
139
|
+
find(resource: string, params?: QueryParams): Promise<QueryResult<T>>;
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Fetch a single record by ID.
|
|
143
|
+
*
|
|
144
|
+
* @param resource - Resource name
|
|
145
|
+
* @param id - Record identifier
|
|
146
|
+
* @param params - Additional query parameters
|
|
147
|
+
* @returns Promise resolving to the record or null
|
|
148
|
+
*/
|
|
149
|
+
findOne(resource: string, id: string | number, params?: QueryParams): Promise<T | null>;
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Create a new record.
|
|
153
|
+
*
|
|
154
|
+
* @param resource - Resource name
|
|
155
|
+
* @param data - Record data
|
|
156
|
+
* @returns Promise resolving to the created record
|
|
157
|
+
*/
|
|
158
|
+
create(resource: string, data: Partial<T>): Promise<T>;
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Update an existing record.
|
|
162
|
+
*
|
|
163
|
+
* @param resource - Resource name
|
|
164
|
+
* @param id - Record identifier
|
|
165
|
+
* @param data - Updated data (partial)
|
|
166
|
+
* @returns Promise resolving to the updated record
|
|
167
|
+
*/
|
|
168
|
+
update(resource: string, id: string | number, data: Partial<T>): Promise<T>;
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* Delete a record.
|
|
172
|
+
*
|
|
173
|
+
* @param resource - Resource name
|
|
174
|
+
* @param id - Record identifier
|
|
175
|
+
* @returns Promise resolving to true if successful
|
|
176
|
+
*/
|
|
177
|
+
delete(resource: string, id: string | number): Promise<boolean>;
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Execute a bulk operation (optional).
|
|
181
|
+
*
|
|
182
|
+
* @param resource - Resource name
|
|
183
|
+
* @param operation - Operation type
|
|
184
|
+
* @param data - Bulk data
|
|
185
|
+
* @returns Promise resolving to operation result
|
|
186
|
+
*/
|
|
187
|
+
bulk?(resource: string, operation: 'create' | 'update' | 'delete', data: Partial<T>[]): Promise<T[]>;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Data scope context for managing data state.
|
|
192
|
+
* Provides reactive data management within the UI.
|
|
193
|
+
*/
|
|
194
|
+
export interface DataScope {
|
|
195
|
+
/**
|
|
196
|
+
* Data source instance
|
|
197
|
+
*/
|
|
198
|
+
dataSource?: DataSource;
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* Current data
|
|
202
|
+
*/
|
|
203
|
+
data?: any;
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Loading state
|
|
207
|
+
*/
|
|
208
|
+
loading?: boolean;
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* Error state
|
|
212
|
+
*/
|
|
213
|
+
error?: Error | string | null;
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Refresh data
|
|
217
|
+
*/
|
|
218
|
+
refresh?: () => Promise<void>;
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* Set data
|
|
222
|
+
*/
|
|
223
|
+
setData?: (data: any) => void;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Data context for component trees.
|
|
228
|
+
* Allows components to access and share data.
|
|
229
|
+
*/
|
|
230
|
+
export interface DataContext {
|
|
231
|
+
/**
|
|
232
|
+
* Named data scopes
|
|
233
|
+
*/
|
|
234
|
+
scopes: Record<string, DataScope>;
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* Register a data scope
|
|
238
|
+
*/
|
|
239
|
+
registerScope: (name: string, scope: DataScope) => void;
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* Get a data scope by name
|
|
243
|
+
*/
|
|
244
|
+
getScope: (name: string) => DataScope | undefined;
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* Remove a data scope
|
|
248
|
+
*/
|
|
249
|
+
removeScope: (name: string) => void;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* Data binding configuration.
|
|
254
|
+
* Defines how a component's data is sourced and updated.
|
|
255
|
+
*/
|
|
256
|
+
export interface DataBinding {
|
|
257
|
+
/**
|
|
258
|
+
* Data source name
|
|
259
|
+
*/
|
|
260
|
+
source?: string;
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* Resource name
|
|
264
|
+
*/
|
|
265
|
+
resource?: string;
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* Query parameters
|
|
269
|
+
*/
|
|
270
|
+
params?: QueryParams;
|
|
271
|
+
|
|
272
|
+
/**
|
|
273
|
+
* Transform function for data
|
|
274
|
+
*/
|
|
275
|
+
transform?: (data: any) => any;
|
|
276
|
+
|
|
277
|
+
/**
|
|
278
|
+
* Auto-refresh interval (ms)
|
|
279
|
+
*/
|
|
280
|
+
refreshInterval?: number;
|
|
281
|
+
|
|
282
|
+
/**
|
|
283
|
+
* Cache data
|
|
284
|
+
*/
|
|
285
|
+
cache?: boolean;
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* Cache TTL (ms)
|
|
289
|
+
*/
|
|
290
|
+
cacheTTL?: number;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* Validation error
|
|
295
|
+
*/
|
|
296
|
+
export interface ValidationError {
|
|
297
|
+
/**
|
|
298
|
+
* Field name
|
|
299
|
+
*/
|
|
300
|
+
field: string;
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* Error message
|
|
304
|
+
*/
|
|
305
|
+
message: string;
|
|
306
|
+
|
|
307
|
+
/**
|
|
308
|
+
* Error code
|
|
309
|
+
*/
|
|
310
|
+
code?: string;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
/**
|
|
314
|
+
* API error response
|
|
315
|
+
*/
|
|
316
|
+
export interface APIError {
|
|
317
|
+
/**
|
|
318
|
+
* Error message
|
|
319
|
+
*/
|
|
320
|
+
message: string;
|
|
321
|
+
|
|
322
|
+
/**
|
|
323
|
+
* HTTP status code
|
|
324
|
+
*/
|
|
325
|
+
status?: number;
|
|
326
|
+
|
|
327
|
+
/**
|
|
328
|
+
* Error code
|
|
329
|
+
*/
|
|
330
|
+
code?: string;
|
|
331
|
+
|
|
332
|
+
/**
|
|
333
|
+
* Validation errors
|
|
334
|
+
*/
|
|
335
|
+
errors?: ValidationError[];
|
|
336
|
+
|
|
337
|
+
/**
|
|
338
|
+
* Additional error data
|
|
339
|
+
*/
|
|
340
|
+
data?: any;
|
|
341
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @object-ui/types - Disclosure Component Schemas
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for collapsible and expandable components.
|
|
5
|
+
*
|
|
6
|
+
* @module disclosure
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import type { BaseSchema, SchemaNode } from './base';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Accordion item
|
|
14
|
+
*/
|
|
15
|
+
export interface AccordionItem {
|
|
16
|
+
/**
|
|
17
|
+
* Unique item identifier
|
|
18
|
+
*/
|
|
19
|
+
value: string;
|
|
20
|
+
/**
|
|
21
|
+
* Item title/trigger
|
|
22
|
+
*/
|
|
23
|
+
title: string;
|
|
24
|
+
/**
|
|
25
|
+
* Item content
|
|
26
|
+
*/
|
|
27
|
+
content: SchemaNode | SchemaNode[];
|
|
28
|
+
/**
|
|
29
|
+
* Whether item is disabled
|
|
30
|
+
*/
|
|
31
|
+
disabled?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Item icon
|
|
34
|
+
*/
|
|
35
|
+
icon?: string;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Accordion component
|
|
40
|
+
*/
|
|
41
|
+
export interface AccordionSchema extends BaseSchema {
|
|
42
|
+
type: 'accordion';
|
|
43
|
+
/**
|
|
44
|
+
* Accordion items
|
|
45
|
+
*/
|
|
46
|
+
items: AccordionItem[];
|
|
47
|
+
/**
|
|
48
|
+
* Accordion type
|
|
49
|
+
* @default 'single'
|
|
50
|
+
*/
|
|
51
|
+
accordionType?: 'single' | 'multiple';
|
|
52
|
+
/**
|
|
53
|
+
* Whether items are collapsible
|
|
54
|
+
* @default true
|
|
55
|
+
*/
|
|
56
|
+
collapsible?: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Default expanded item values
|
|
59
|
+
*/
|
|
60
|
+
defaultValue?: string | string[];
|
|
61
|
+
/**
|
|
62
|
+
* Controlled expanded item values
|
|
63
|
+
*/
|
|
64
|
+
value?: string | string[];
|
|
65
|
+
/**
|
|
66
|
+
* Change handler
|
|
67
|
+
*/
|
|
68
|
+
onValueChange?: (value: string | string[]) => void;
|
|
69
|
+
/**
|
|
70
|
+
* Accordion variant
|
|
71
|
+
* @default 'default'
|
|
72
|
+
*/
|
|
73
|
+
variant?: 'default' | 'bordered' | 'separated';
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Collapsible component
|
|
78
|
+
*/
|
|
79
|
+
export interface CollapsibleSchema extends BaseSchema {
|
|
80
|
+
type: 'collapsible';
|
|
81
|
+
/**
|
|
82
|
+
* Trigger content/label
|
|
83
|
+
*/
|
|
84
|
+
trigger: string | SchemaNode;
|
|
85
|
+
/**
|
|
86
|
+
* Collapsible content
|
|
87
|
+
*/
|
|
88
|
+
content: SchemaNode | SchemaNode[];
|
|
89
|
+
/**
|
|
90
|
+
* Default open state
|
|
91
|
+
* @default false
|
|
92
|
+
*/
|
|
93
|
+
defaultOpen?: boolean;
|
|
94
|
+
/**
|
|
95
|
+
* Controlled open state
|
|
96
|
+
*/
|
|
97
|
+
open?: boolean;
|
|
98
|
+
/**
|
|
99
|
+
* Whether collapsible is disabled
|
|
100
|
+
*/
|
|
101
|
+
disabled?: boolean;
|
|
102
|
+
/**
|
|
103
|
+
* Open state change handler
|
|
104
|
+
*/
|
|
105
|
+
onOpenChange?: (open: boolean) => void;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Union type of all disclosure schemas
|
|
110
|
+
*/
|
|
111
|
+
export type DisclosureSchema =
|
|
112
|
+
| AccordionSchema
|
|
113
|
+
| CollapsibleSchema;
|
package/src/feedback.ts
ADDED
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @object-ui/types - Feedback Component Schemas
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for feedback and status indication components.
|
|
5
|
+
*
|
|
6
|
+
* @module feedback
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import type { BaseSchema, SchemaNode } from './base';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Loading/Spinner component
|
|
14
|
+
*/
|
|
15
|
+
export interface LoadingSchema extends BaseSchema {
|
|
16
|
+
type: 'loading';
|
|
17
|
+
/**
|
|
18
|
+
* Loading text/message
|
|
19
|
+
*/
|
|
20
|
+
label?: string;
|
|
21
|
+
/**
|
|
22
|
+
* Spinner size
|
|
23
|
+
* @default 'default'
|
|
24
|
+
*/
|
|
25
|
+
size?: 'sm' | 'default' | 'lg';
|
|
26
|
+
/**
|
|
27
|
+
* Spinner variant
|
|
28
|
+
* @default 'spinner'
|
|
29
|
+
*/
|
|
30
|
+
variant?: 'spinner' | 'dots' | 'pulse';
|
|
31
|
+
/**
|
|
32
|
+
* Whether to show fullscreen overlay
|
|
33
|
+
* @default false
|
|
34
|
+
*/
|
|
35
|
+
fullscreen?: boolean;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Progress bar component
|
|
40
|
+
*/
|
|
41
|
+
export interface ProgressSchema extends BaseSchema {
|
|
42
|
+
type: 'progress';
|
|
43
|
+
/**
|
|
44
|
+
* Progress value (0-100)
|
|
45
|
+
*/
|
|
46
|
+
value?: number;
|
|
47
|
+
/**
|
|
48
|
+
* Maximum value
|
|
49
|
+
* @default 100
|
|
50
|
+
*/
|
|
51
|
+
max?: number;
|
|
52
|
+
/**
|
|
53
|
+
* Progress bar variant
|
|
54
|
+
* @default 'default'
|
|
55
|
+
*/
|
|
56
|
+
variant?: 'default' | 'success' | 'warning' | 'error';
|
|
57
|
+
/**
|
|
58
|
+
* Show percentage label
|
|
59
|
+
* @default false
|
|
60
|
+
*/
|
|
61
|
+
showLabel?: boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Progress bar size
|
|
64
|
+
* @default 'default'
|
|
65
|
+
*/
|
|
66
|
+
size?: 'sm' | 'default' | 'lg';
|
|
67
|
+
/**
|
|
68
|
+
* Indeterminate/loading state
|
|
69
|
+
* @default false
|
|
70
|
+
*/
|
|
71
|
+
indeterminate?: boolean;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Skeleton loading placeholder
|
|
76
|
+
*/
|
|
77
|
+
export interface SkeletonSchema extends BaseSchema {
|
|
78
|
+
type: 'skeleton';
|
|
79
|
+
/**
|
|
80
|
+
* Skeleton variant
|
|
81
|
+
* @default 'text'
|
|
82
|
+
*/
|
|
83
|
+
variant?: 'text' | 'circular' | 'rectangular';
|
|
84
|
+
/**
|
|
85
|
+
* Width
|
|
86
|
+
*/
|
|
87
|
+
width?: string | number;
|
|
88
|
+
/**
|
|
89
|
+
* Height
|
|
90
|
+
*/
|
|
91
|
+
height?: string | number;
|
|
92
|
+
/**
|
|
93
|
+
* Number of lines (for text variant)
|
|
94
|
+
* @default 1
|
|
95
|
+
*/
|
|
96
|
+
lines?: number;
|
|
97
|
+
/**
|
|
98
|
+
* Enable animation
|
|
99
|
+
* @default true
|
|
100
|
+
*/
|
|
101
|
+
animate?: boolean;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Toast notification (declarative schema)
|
|
106
|
+
*/
|
|
107
|
+
export interface ToastSchema extends BaseSchema {
|
|
108
|
+
type: 'toast';
|
|
109
|
+
/**
|
|
110
|
+
* Toast title
|
|
111
|
+
*/
|
|
112
|
+
title?: string;
|
|
113
|
+
/**
|
|
114
|
+
* Toast description
|
|
115
|
+
*/
|
|
116
|
+
description?: string;
|
|
117
|
+
/**
|
|
118
|
+
* Toast variant
|
|
119
|
+
* @default 'default'
|
|
120
|
+
*/
|
|
121
|
+
variant?: 'default' | 'success' | 'warning' | 'error' | 'info';
|
|
122
|
+
/**
|
|
123
|
+
* Auto-dismiss duration in milliseconds
|
|
124
|
+
* @default 5000
|
|
125
|
+
*/
|
|
126
|
+
duration?: number;
|
|
127
|
+
/**
|
|
128
|
+
* Toast position
|
|
129
|
+
* @default 'bottom-right'
|
|
130
|
+
*/
|
|
131
|
+
position?: 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
|
|
132
|
+
/**
|
|
133
|
+
* Action button
|
|
134
|
+
*/
|
|
135
|
+
action?: {
|
|
136
|
+
label: string;
|
|
137
|
+
onClick: () => void;
|
|
138
|
+
};
|
|
139
|
+
/**
|
|
140
|
+
* Dismiss handler
|
|
141
|
+
*/
|
|
142
|
+
onDismiss?: () => void;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Toaster container (for toast management)
|
|
147
|
+
*/
|
|
148
|
+
export interface ToasterSchema extends BaseSchema {
|
|
149
|
+
type: 'toaster';
|
|
150
|
+
/**
|
|
151
|
+
* Toast position
|
|
152
|
+
* @default 'bottom-right'
|
|
153
|
+
*/
|
|
154
|
+
position?: 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
|
|
155
|
+
/**
|
|
156
|
+
* Maximum number of toasts to show
|
|
157
|
+
* @default 5
|
|
158
|
+
*/
|
|
159
|
+
limit?: number;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Union type of all feedback schemas
|
|
164
|
+
*/
|
|
165
|
+
export type FeedbackSchema =
|
|
166
|
+
| LoadingSchema
|
|
167
|
+
| ProgressSchema
|
|
168
|
+
| SkeletonSchema
|
|
169
|
+
| ToastSchema
|
|
170
|
+
| ToasterSchema;
|