@portel/photon-core 2.3.0 → 2.5.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/dist/asset-discovery.d.ts +25 -0
- package/dist/asset-discovery.d.ts.map +1 -0
- package/dist/asset-discovery.js +145 -0
- package/dist/asset-discovery.js.map +1 -0
- package/dist/base.d.ts +6 -0
- package/dist/base.d.ts.map +1 -1
- package/dist/base.js +11 -1
- package/dist/base.js.map +1 -1
- package/dist/class-detection.d.ts +32 -0
- package/dist/class-detection.d.ts.map +1 -0
- package/dist/class-detection.js +86 -0
- package/dist/class-detection.js.map +1 -0
- package/dist/collections/ReactiveArray.d.ts +97 -0
- package/dist/collections/ReactiveArray.d.ts.map +1 -0
- package/dist/collections/ReactiveArray.js +158 -0
- package/dist/collections/ReactiveArray.js.map +1 -0
- package/dist/collections/ReactiveMap.d.ts +50 -0
- package/dist/collections/ReactiveMap.d.ts.map +1 -0
- package/dist/collections/ReactiveMap.js +71 -0
- package/dist/collections/ReactiveMap.js.map +1 -0
- package/dist/collections/ReactiveSet.d.ts +50 -0
- package/dist/collections/ReactiveSet.d.ts.map +1 -0
- package/dist/collections/ReactiveSet.js +71 -0
- package/dist/collections/ReactiveSet.js.map +1 -0
- package/dist/collections/index.d.ts +44 -0
- package/dist/collections/index.d.ts.map +1 -0
- package/dist/collections/index.js +44 -0
- package/dist/collections/index.js.map +1 -0
- package/dist/compiler.d.ts +22 -0
- package/dist/compiler.d.ts.map +1 -0
- package/dist/compiler.js +48 -0
- package/dist/compiler.js.map +1 -0
- package/dist/env-utils.d.ts +61 -0
- package/dist/env-utils.d.ts.map +1 -0
- package/dist/env-utils.js +171 -0
- package/dist/env-utils.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -1
- package/dist/mime-types.d.ts +13 -0
- package/dist/mime-types.d.ts.map +1 -0
- package/dist/mime-types.js +47 -0
- package/dist/mime-types.js.map +1 -0
- package/dist/rendering/index.d.ts +49 -0
- package/dist/rendering/index.d.ts.map +1 -1
- package/dist/rendering/index.js +153 -0
- package/dist/rendering/index.js.map +1 -1
- package/dist/schema-extractor.d.ts.map +1 -1
- package/dist/schema-extractor.js +3 -0
- package/dist/schema-extractor.js.map +1 -1
- package/dist/types.d.ts +4 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/ui-types/Cards.d.ts +139 -0
- package/dist/ui-types/Cards.d.ts.map +1 -0
- package/dist/ui-types/Cards.js +235 -0
- package/dist/ui-types/Cards.js.map +1 -0
- package/dist/ui-types/Chart.d.ts +136 -0
- package/dist/ui-types/Chart.d.ts.map +1 -0
- package/dist/ui-types/Chart.js +188 -0
- package/dist/ui-types/Chart.js.map +1 -0
- package/dist/ui-types/Field.d.ts +342 -0
- package/dist/ui-types/Field.d.ts.map +1 -0
- package/dist/ui-types/Field.js +200 -0
- package/dist/ui-types/Field.js.map +1 -0
- package/dist/ui-types/FieldRenderer.d.ts +32 -0
- package/dist/ui-types/FieldRenderer.d.ts.map +1 -0
- package/dist/ui-types/FieldRenderer.js +277 -0
- package/dist/ui-types/FieldRenderer.js.map +1 -0
- package/dist/ui-types/Form.d.ts +212 -0
- package/dist/ui-types/Form.d.ts.map +1 -0
- package/dist/ui-types/Form.js +278 -0
- package/dist/ui-types/Form.js.map +1 -0
- package/dist/ui-types/Progress.d.ts +130 -0
- package/dist/ui-types/Progress.d.ts.map +1 -0
- package/dist/ui-types/Progress.js +191 -0
- package/dist/ui-types/Progress.js.map +1 -0
- package/dist/ui-types/Stats.d.ts +108 -0
- package/dist/ui-types/Stats.d.ts.map +1 -0
- package/dist/ui-types/Stats.js +162 -0
- package/dist/ui-types/Stats.js.map +1 -0
- package/dist/ui-types/Table.d.ts +206 -0
- package/dist/ui-types/Table.d.ts.map +1 -0
- package/dist/ui-types/Table.js +367 -0
- package/dist/ui-types/Table.js.map +1 -0
- package/dist/ui-types/base.d.ts +17 -0
- package/dist/ui-types/base.d.ts.map +1 -0
- package/dist/ui-types/base.js +18 -0
- package/dist/ui-types/base.js.map +1 -0
- package/dist/ui-types/index.d.ts +42 -0
- package/dist/ui-types/index.d.ts.map +1 -0
- package/dist/ui-types/index.js +50 -0
- package/dist/ui-types/index.js.map +1 -0
- package/dist/validation.d.ts +51 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +249 -0
- package/dist/validation.js.map +1 -0
- package/dist/version-check.d.ts +22 -0
- package/dist/version-check.d.ts.map +1 -0
- package/dist/version-check.js +91 -0
- package/dist/version-check.js.map +1 -0
- package/package.json +2 -2
- package/src/asset-discovery.ts +161 -0
- package/src/base.ts +13 -1
- package/src/class-detection.ts +94 -0
- package/src/collections/ReactiveArray.ts +179 -0
- package/src/collections/ReactiveMap.ts +81 -0
- package/src/collections/ReactiveSet.ts +81 -0
- package/src/collections/index.ts +44 -0
- package/src/compiler.ts +57 -0
- package/src/env-utils.ts +216 -0
- package/src/index.ts +155 -0
- package/src/mime-types.ts +49 -0
- package/src/rendering/index.ts +197 -0
- package/src/schema-extractor.ts +4 -0
- package/src/types.ts +4 -0
- package/src/ui-types/Cards.ts +286 -0
- package/src/ui-types/Chart.ts +239 -0
- package/src/ui-types/Field.ts +594 -0
- package/src/ui-types/FieldRenderer.ts +364 -0
- package/src/ui-types/Form.ts +363 -0
- package/src/ui-types/Progress.ts +237 -0
- package/src/ui-types/Stats.ts +204 -0
- package/src/ui-types/Table.ts +438 -0
- package/src/ui-types/base.ts +25 -0
- package/src/ui-types/index.ts +96 -0
- package/src/ui-types/ui-types.test.ts +444 -0
- package/src/validation.ts +363 -0
- package/src/version-check.ts +92 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../src/ui-types/Table.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Table - Purpose-driven type for tabular data
|
|
3
|
+
*
|
|
4
|
+
* Automatically renders as a table UI with sorting, filtering, etc.
|
|
5
|
+
*
|
|
6
|
+
* @example Basic usage
|
|
7
|
+
* ```typescript
|
|
8
|
+
* async users() {
|
|
9
|
+
* return new Table()
|
|
10
|
+
* .column('name', 'Name', 'string')
|
|
11
|
+
* .column('email', 'Email', 'string')
|
|
12
|
+
* .rows(users);
|
|
13
|
+
* }
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* @example With Field system (React Admin-style)
|
|
17
|
+
* ```typescript
|
|
18
|
+
* async products() {
|
|
19
|
+
* return new Table()
|
|
20
|
+
* .fields([
|
|
21
|
+
* Field.image('thumbnail', { width: 60, rounded: true }),
|
|
22
|
+
* Field.text('name', { link: '/products/{id}' }),
|
|
23
|
+
* Field.price('price', { originalSource: 'msrp', currency: 'USD' }),
|
|
24
|
+
* Field.rating('rating', { countSource: 'reviewCount' }),
|
|
25
|
+
* Field.badge('status', { colors: { active: 'green', draft: 'gray' } }),
|
|
26
|
+
* Field.actions([
|
|
27
|
+
* { label: 'Edit', method: 'edit', icon: 'pencil' },
|
|
28
|
+
* { label: 'Delete', method: 'delete', confirm: true },
|
|
29
|
+
* ]),
|
|
30
|
+
* ])
|
|
31
|
+
* .rows(products);
|
|
32
|
+
* }
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
import { PhotonUIType } from './base.js';
|
|
36
|
+
import { formatFieldLabel, Field } from './Field.js';
|
|
37
|
+
import { renderFieldToText } from './FieldRenderer.js';
|
|
38
|
+
export class Table extends PhotonUIType {
|
|
39
|
+
_photonType = 'table';
|
|
40
|
+
_columns = [];
|
|
41
|
+
_fields = [];
|
|
42
|
+
_rows = [];
|
|
43
|
+
_options = {};
|
|
44
|
+
/**
|
|
45
|
+
* Create a new Table
|
|
46
|
+
* @param data Optional initial data (array of objects)
|
|
47
|
+
*/
|
|
48
|
+
constructor(data) {
|
|
49
|
+
super();
|
|
50
|
+
if (data && data.length > 0) {
|
|
51
|
+
this._rows = data;
|
|
52
|
+
// Auto-infer columns from first row
|
|
53
|
+
this._inferColumns(data[0]);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Add a column definition
|
|
58
|
+
*/
|
|
59
|
+
column(key, label, type = 'string', options) {
|
|
60
|
+
this._columns.push({
|
|
61
|
+
key,
|
|
62
|
+
label,
|
|
63
|
+
type,
|
|
64
|
+
sortable: this._options.sortable ?? true,
|
|
65
|
+
...options,
|
|
66
|
+
});
|
|
67
|
+
return this;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Add multiple columns at once
|
|
71
|
+
*/
|
|
72
|
+
columns(cols) {
|
|
73
|
+
for (const col of cols) {
|
|
74
|
+
if (Array.isArray(col)) {
|
|
75
|
+
this.column(col[0], col[1], col[2] ?? 'string');
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
this._columns.push(col);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return this;
|
|
82
|
+
}
|
|
83
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
84
|
+
// Field-based API (React Admin-style)
|
|
85
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
86
|
+
/**
|
|
87
|
+
* Add fields using the Field system
|
|
88
|
+
*/
|
|
89
|
+
fields(fieldDefs) {
|
|
90
|
+
this._fields = fieldDefs;
|
|
91
|
+
return this;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Add a single field
|
|
95
|
+
*/
|
|
96
|
+
field(fieldDef) {
|
|
97
|
+
this._fields.push(fieldDef);
|
|
98
|
+
return this;
|
|
99
|
+
}
|
|
100
|
+
// Convenience methods for common field types
|
|
101
|
+
/** Add text field */
|
|
102
|
+
text(source, options) {
|
|
103
|
+
return this.field(Field.text(source, options));
|
|
104
|
+
}
|
|
105
|
+
/** Add email field */
|
|
106
|
+
email(source, options) {
|
|
107
|
+
return this.field(Field.email(source, options));
|
|
108
|
+
}
|
|
109
|
+
/** Add URL field */
|
|
110
|
+
url(source, options) {
|
|
111
|
+
return this.field(Field.url(source, options));
|
|
112
|
+
}
|
|
113
|
+
/** Add phone field */
|
|
114
|
+
phone(source, options) {
|
|
115
|
+
return this.field(Field.phone(source, options));
|
|
116
|
+
}
|
|
117
|
+
/** Add number field */
|
|
118
|
+
number(source, options) {
|
|
119
|
+
return this.field(Field.number(source, options));
|
|
120
|
+
}
|
|
121
|
+
/** Add currency field */
|
|
122
|
+
currency(source, options) {
|
|
123
|
+
return this.field(Field.currency(source, options));
|
|
124
|
+
}
|
|
125
|
+
/** Add percent field */
|
|
126
|
+
percent(source, options) {
|
|
127
|
+
return this.field(Field.percent(source, options));
|
|
128
|
+
}
|
|
129
|
+
/** Add date field */
|
|
130
|
+
date(source, options) {
|
|
131
|
+
return this.field(Field.date(source, options));
|
|
132
|
+
}
|
|
133
|
+
/** Add datetime field */
|
|
134
|
+
datetime(source, options) {
|
|
135
|
+
return this.field(Field.datetime(source, options));
|
|
136
|
+
}
|
|
137
|
+
/** Add boolean field */
|
|
138
|
+
boolean(source, options) {
|
|
139
|
+
return this.field(Field.boolean(source, options));
|
|
140
|
+
}
|
|
141
|
+
/** Add image field */
|
|
142
|
+
image(source, options) {
|
|
143
|
+
return this.field(Field.image(source, options));
|
|
144
|
+
}
|
|
145
|
+
/** Add avatar field */
|
|
146
|
+
avatar(source, options) {
|
|
147
|
+
return this.field(Field.avatar(source, options));
|
|
148
|
+
}
|
|
149
|
+
/** Add badge field */
|
|
150
|
+
badge(source, options) {
|
|
151
|
+
return this.field(Field.badge(source, options));
|
|
152
|
+
}
|
|
153
|
+
/** Add tags field */
|
|
154
|
+
tags(source, options) {
|
|
155
|
+
return this.field(Field.tags(source, options));
|
|
156
|
+
}
|
|
157
|
+
/** Add rating field */
|
|
158
|
+
rating(source, options) {
|
|
159
|
+
return this.field(Field.rating(source, options));
|
|
160
|
+
}
|
|
161
|
+
/** Add price field */
|
|
162
|
+
price(source, options) {
|
|
163
|
+
return this.field(Field.price(source, options));
|
|
164
|
+
}
|
|
165
|
+
/** Add stock field */
|
|
166
|
+
stock(source, options) {
|
|
167
|
+
return this.field(Field.stock(source, options));
|
|
168
|
+
}
|
|
169
|
+
/** Add user field */
|
|
170
|
+
user(source, options) {
|
|
171
|
+
return this.field(Field.user(source, options));
|
|
172
|
+
}
|
|
173
|
+
/** Add reference field */
|
|
174
|
+
reference(source, options) {
|
|
175
|
+
return this.field(Field.reference(source, options));
|
|
176
|
+
}
|
|
177
|
+
/** Add actions field */
|
|
178
|
+
actions(items, options) {
|
|
179
|
+
return this.field(Field.actions(items, options));
|
|
180
|
+
}
|
|
181
|
+
/** Add custom field */
|
|
182
|
+
custom(source, render, options) {
|
|
183
|
+
return this.field(Field.custom(source, render, options));
|
|
184
|
+
}
|
|
185
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
186
|
+
// Data Methods
|
|
187
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
188
|
+
/**
|
|
189
|
+
* Set the table rows
|
|
190
|
+
*/
|
|
191
|
+
rows(data) {
|
|
192
|
+
this._rows = data;
|
|
193
|
+
// If no columns defined, infer from data
|
|
194
|
+
if (this._columns.length === 0 && data.length > 0) {
|
|
195
|
+
this._inferColumns(data[0]);
|
|
196
|
+
}
|
|
197
|
+
return this;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Add a single row
|
|
201
|
+
*/
|
|
202
|
+
row(data) {
|
|
203
|
+
this._rows.push(data);
|
|
204
|
+
if (this._columns.length === 0) {
|
|
205
|
+
this._inferColumns(data);
|
|
206
|
+
}
|
|
207
|
+
return this;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Set table title
|
|
211
|
+
*/
|
|
212
|
+
title(title) {
|
|
213
|
+
this._options.title = title;
|
|
214
|
+
return this;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Enable/disable search
|
|
218
|
+
*/
|
|
219
|
+
searchable(enabled = true) {
|
|
220
|
+
this._options.searchable = enabled;
|
|
221
|
+
return this;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Enable/disable sorting
|
|
225
|
+
*/
|
|
226
|
+
sortable(enabled = true) {
|
|
227
|
+
this._options.sortable = enabled;
|
|
228
|
+
return this;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Enable pagination
|
|
232
|
+
*/
|
|
233
|
+
paginated(pageSize = 10) {
|
|
234
|
+
this._options.paginated = true;
|
|
235
|
+
this._options.pageSize = pageSize;
|
|
236
|
+
return this;
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Enable row selection
|
|
240
|
+
*/
|
|
241
|
+
selectable(enabled = true) {
|
|
242
|
+
this._options.selectable = enabled;
|
|
243
|
+
return this;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Use striped rows
|
|
247
|
+
*/
|
|
248
|
+
striped(enabled = true) {
|
|
249
|
+
this._options.striped = enabled;
|
|
250
|
+
return this;
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Use compact layout
|
|
254
|
+
*/
|
|
255
|
+
compact(enabled = true) {
|
|
256
|
+
this._options.compact = enabled;
|
|
257
|
+
return this;
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Infer columns from a data row
|
|
261
|
+
*/
|
|
262
|
+
_inferColumns(row) {
|
|
263
|
+
for (const [key, value] of Object.entries(row)) {
|
|
264
|
+
const type = this._inferType(value);
|
|
265
|
+
const label = this._formatLabel(key);
|
|
266
|
+
this._columns.push({ key, label, type, sortable: true });
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Infer column type from value
|
|
271
|
+
*/
|
|
272
|
+
_inferType(value) {
|
|
273
|
+
if (typeof value === 'number')
|
|
274
|
+
return 'number';
|
|
275
|
+
if (typeof value === 'boolean')
|
|
276
|
+
return 'boolean';
|
|
277
|
+
if (value instanceof Date)
|
|
278
|
+
return 'date';
|
|
279
|
+
if (typeof value === 'string') {
|
|
280
|
+
if (value.match(/^\d{4}-\d{2}-\d{2}/))
|
|
281
|
+
return 'date';
|
|
282
|
+
if (value.match(/^https?:\/\//))
|
|
283
|
+
return 'link';
|
|
284
|
+
if (value.match(/\.(jpg|jpeg|png|gif|webp|svg)$/i))
|
|
285
|
+
return 'image';
|
|
286
|
+
}
|
|
287
|
+
return 'string';
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Format key to human-readable label
|
|
291
|
+
*/
|
|
292
|
+
_formatLabel(key) {
|
|
293
|
+
return key
|
|
294
|
+
.replace(/([A-Z])/g, ' $1') // camelCase to spaces
|
|
295
|
+
.replace(/[_-]/g, ' ') // snake_case/kebab-case to spaces
|
|
296
|
+
.replace(/^\w/, c => c.toUpperCase()) // Capitalize first letter
|
|
297
|
+
.trim();
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Get row count
|
|
301
|
+
*/
|
|
302
|
+
get length() {
|
|
303
|
+
return this._rows.length;
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Check if table is empty
|
|
307
|
+
*/
|
|
308
|
+
get isEmpty() {
|
|
309
|
+
return this._rows.length === 0;
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Check if using Field system or legacy columns
|
|
313
|
+
*/
|
|
314
|
+
get _useFields() {
|
|
315
|
+
return this._fields.length > 0;
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Get effective headers for display
|
|
319
|
+
*/
|
|
320
|
+
_getHeaders() {
|
|
321
|
+
if (this._useFields) {
|
|
322
|
+
return this._fields.map(f => f.options.label ?? formatFieldLabel(f.source));
|
|
323
|
+
}
|
|
324
|
+
return this._columns.map(c => c.label);
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Get cell values for a row
|
|
328
|
+
*/
|
|
329
|
+
_getCells(row) {
|
|
330
|
+
if (this._useFields) {
|
|
331
|
+
return this._fields.map(f => renderFieldToText(f, row));
|
|
332
|
+
}
|
|
333
|
+
return this._columns.map(c => String(row[c.key] ?? ''));
|
|
334
|
+
}
|
|
335
|
+
toJSON() {
|
|
336
|
+
return {
|
|
337
|
+
_photonType: this._photonType,
|
|
338
|
+
columns: this._columns,
|
|
339
|
+
fields: this._fields,
|
|
340
|
+
rows: this._rows,
|
|
341
|
+
options: this._options,
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Render as plain text/markdown for MCP clients
|
|
346
|
+
*/
|
|
347
|
+
toString() {
|
|
348
|
+
if (this._rows.length === 0) {
|
|
349
|
+
return this._options.title ? `${this._options.title}\n\n(No data)` : '(No data)';
|
|
350
|
+
}
|
|
351
|
+
const lines = [];
|
|
352
|
+
if (this._options.title) {
|
|
353
|
+
lines.push(`## ${this._options.title}`, '');
|
|
354
|
+
}
|
|
355
|
+
// Header row
|
|
356
|
+
const headers = this._getHeaders();
|
|
357
|
+
lines.push('| ' + headers.join(' | ') + ' |');
|
|
358
|
+
lines.push('| ' + headers.map(() => '---').join(' | ') + ' |');
|
|
359
|
+
// Data rows
|
|
360
|
+
for (const row of this._rows) {
|
|
361
|
+
const cells = this._getCells(row);
|
|
362
|
+
lines.push('| ' + cells.join(' | ') + ' |');
|
|
363
|
+
}
|
|
364
|
+
return lines.join('\n');
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
//# sourceMappingURL=Table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Table.js","sourceRoot":"","sources":["../../src/ui-types/Table.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base class for purpose-driven UI types
|
|
3
|
+
*
|
|
4
|
+
* All UI types extend this to get the _photonType discriminator
|
|
5
|
+
* that auto-UI uses to select the appropriate renderer.
|
|
6
|
+
*/
|
|
7
|
+
export declare abstract class PhotonUIType {
|
|
8
|
+
/** Discriminator for auto-UI type detection */
|
|
9
|
+
abstract readonly _photonType: string;
|
|
10
|
+
/** Convert to JSON-serializable format */
|
|
11
|
+
abstract toJSON(): Record<string, any>;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Check if a value is a PhotonUIType
|
|
15
|
+
*/
|
|
16
|
+
export declare function isPhotonUIType(value: unknown): value is PhotonUIType;
|
|
17
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/ui-types/base.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,8BAAsB,YAAY;IAChC,+CAA+C;IAC/C,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAEtC,0CAA0C;IAC1C,QAAQ,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CACvC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAOpE"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base class for purpose-driven UI types
|
|
3
|
+
*
|
|
4
|
+
* All UI types extend this to get the _photonType discriminator
|
|
5
|
+
* that auto-UI uses to select the appropriate renderer.
|
|
6
|
+
*/
|
|
7
|
+
export class PhotonUIType {
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Check if a value is a PhotonUIType
|
|
11
|
+
*/
|
|
12
|
+
export function isPhotonUIType(value) {
|
|
13
|
+
return (value !== null &&
|
|
14
|
+
typeof value === 'object' &&
|
|
15
|
+
'_photonType' in value &&
|
|
16
|
+
typeof value._photonType === 'string');
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/ui-types/base.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,OAAgB,YAAY;CAMjC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,CACL,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,aAAa,IAAI,KAAK;QACtB,OAAQ,KAAa,CAAC,WAAW,KAAK,QAAQ,CAC/C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Purpose-Driven UI Types
|
|
3
|
+
*
|
|
4
|
+
* These types enable polymorphic return values that automatically
|
|
5
|
+
* render with the appropriate UI component.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { Table, Chart, Cards, Stats } from '@portel/photon-core';
|
|
10
|
+
*
|
|
11
|
+
* export default class Dashboard {
|
|
12
|
+
* async users() {
|
|
13
|
+
* return new Table()
|
|
14
|
+
* .column('name', 'Name')
|
|
15
|
+
* .column('email', 'Email')
|
|
16
|
+
* .rows(await this.fetchUsers());
|
|
17
|
+
* }
|
|
18
|
+
*
|
|
19
|
+
* async metrics() {
|
|
20
|
+
* return new Chart('line')
|
|
21
|
+
* .labels(['Jan', 'Feb', 'Mar'])
|
|
22
|
+
* .series('Revenue', [100, 200, 300]);
|
|
23
|
+
* }
|
|
24
|
+
*
|
|
25
|
+
* async overview() {
|
|
26
|
+
* return new Stats()
|
|
27
|
+
* .stat('Users', 1234)
|
|
28
|
+
* .currency('Revenue', 50000);
|
|
29
|
+
* }
|
|
30
|
+
* }
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export { PhotonUIType, isPhotonUIType } from './base.js';
|
|
34
|
+
export { Field, type FieldDefinition, type FieldType, type FieldAlignment, type BaseFieldOptions, type TextFieldOptions, type EmailFieldOptions, type UrlFieldOptions, type PhoneFieldOptions, type NumberFieldOptions, type CurrencyFieldOptions, type PercentFieldOptions, type DateFieldOptions, type DateFormat, type TimeFieldOptions, type DateRangeFieldOptions, type BooleanFieldOptions, type ImageFieldOptions, type AvatarFieldOptions, type GalleryFieldOptions, type FileFieldOptions, type BadgeFieldOptions, type TagsFieldOptions, type RatingFieldOptions, type PriceFieldOptions, type StockFieldOptions, type QuantityFieldOptions, type UserFieldOptions, type ReferenceFieldOptions, type ActionItem, type ActionsFieldOptions, type CustomFieldOptions, type RenderFunction, getFieldValue, formatFieldLabel, interpolateTemplate, } from './Field.js';
|
|
35
|
+
export { renderFieldToText, renderFieldToStructured, type RenderedField, } from './FieldRenderer.js';
|
|
36
|
+
export { Table, type TableColumn, type TableOptions, type ColumnType } from './Table.js';
|
|
37
|
+
export { Cards, type CardFieldMapping, type CardsOptions } from './Cards.js';
|
|
38
|
+
export { Chart, type ChartType, type ChartSeries, type ChartDataPoint, type ChartOptions } from './Chart.js';
|
|
39
|
+
export { Stats, type StatItem, type StatFormat, type StatsOptions } from './Stats.js';
|
|
40
|
+
export { Progress, type ProgressBar, type ProgressStep, type ProgressStyle, type StepStatus, type ProgressOptions } from './Progress.js';
|
|
41
|
+
export { Form, type FormField, type FieldType as FormFieldType, type FormOptions } from './Form.js';
|
|
42
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui-types/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGzD,OAAO,EACL,KAAK,EACL,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,gBAAgB,EAErB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EACf,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EAEnB,aAAa,EACb,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,KAAK,aAAa,GACnB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,KAAK,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AACzF,OAAO,EAAE,KAAK,EAAE,KAAK,gBAAgB,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAG7E,OAAO,EAAE,KAAK,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAC7G,OAAO,EAAE,KAAK,EAAE,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AACtF,OAAO,EAAE,QAAQ,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAGzI,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,IAAI,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Purpose-Driven UI Types
|
|
3
|
+
*
|
|
4
|
+
* These types enable polymorphic return values that automatically
|
|
5
|
+
* render with the appropriate UI component.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { Table, Chart, Cards, Stats } from '@portel/photon-core';
|
|
10
|
+
*
|
|
11
|
+
* export default class Dashboard {
|
|
12
|
+
* async users() {
|
|
13
|
+
* return new Table()
|
|
14
|
+
* .column('name', 'Name')
|
|
15
|
+
* .column('email', 'Email')
|
|
16
|
+
* .rows(await this.fetchUsers());
|
|
17
|
+
* }
|
|
18
|
+
*
|
|
19
|
+
* async metrics() {
|
|
20
|
+
* return new Chart('line')
|
|
21
|
+
* .labels(['Jan', 'Feb', 'Mar'])
|
|
22
|
+
* .series('Revenue', [100, 200, 300]);
|
|
23
|
+
* }
|
|
24
|
+
*
|
|
25
|
+
* async overview() {
|
|
26
|
+
* return new Stats()
|
|
27
|
+
* .stat('Users', 1234)
|
|
28
|
+
* .currency('Revenue', 50000);
|
|
29
|
+
* }
|
|
30
|
+
* }
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
// Base
|
|
34
|
+
export { PhotonUIType, isPhotonUIType } from './base.js';
|
|
35
|
+
// Field System
|
|
36
|
+
export { Field,
|
|
37
|
+
// Utilities
|
|
38
|
+
getFieldValue, formatFieldLabel, interpolateTemplate, } from './Field.js';
|
|
39
|
+
// Field Rendering
|
|
40
|
+
export { renderFieldToText, renderFieldToStructured, } from './FieldRenderer.js';
|
|
41
|
+
// Data Display
|
|
42
|
+
export { Table } from './Table.js';
|
|
43
|
+
export { Cards } from './Cards.js';
|
|
44
|
+
// Visualization
|
|
45
|
+
export { Chart } from './Chart.js';
|
|
46
|
+
export { Stats } from './Stats.js';
|
|
47
|
+
export { Progress } from './Progress.js';
|
|
48
|
+
// Interactive
|
|
49
|
+
export { Form } from './Form.js';
|
|
50
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui-types/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO;AACP,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEzD,eAAe;AACf,OAAO,EACL,KAAK;AAkCL,YAAY;AACZ,aAAa,EACb,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,kBAAkB;AAClB,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GAExB,MAAM,oBAAoB,CAAC;AAE5B,eAAe;AACf,OAAO,EAAE,KAAK,EAAwD,MAAM,YAAY,CAAC;AACzF,OAAO,EAAE,KAAK,EAA4C,MAAM,YAAY,CAAC;AAE7E,gBAAgB;AAChB,OAAO,EAAE,KAAK,EAA4E,MAAM,YAAY,CAAC;AAC7G,OAAO,EAAE,KAAK,EAAqD,MAAM,YAAY,CAAC;AACtF,OAAO,EAAE,QAAQ,EAAkG,MAAM,eAAe,CAAC;AAEzI,cAAc;AACd,OAAO,EAAE,IAAI,EAAqE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Input Validation Utilities
|
|
3
|
+
*
|
|
4
|
+
* Type-safe validation with user-friendly error messages.
|
|
5
|
+
* Adapted from photon's shared/validation.ts.
|
|
6
|
+
*
|
|
7
|
+
* Also includes PhotonError and ValidationError base classes
|
|
8
|
+
* (originally from photon's shared/error-handler.ts).
|
|
9
|
+
*/
|
|
10
|
+
export declare class PhotonError extends Error {
|
|
11
|
+
readonly code: string;
|
|
12
|
+
readonly details?: Record<string, unknown> | undefined;
|
|
13
|
+
readonly suggestion?: string | undefined;
|
|
14
|
+
constructor(message: string, code: string, details?: Record<string, unknown> | undefined, suggestion?: string | undefined);
|
|
15
|
+
}
|
|
16
|
+
export declare class ValidationError extends PhotonError {
|
|
17
|
+
constructor(message: string, details?: Record<string, unknown>, suggestion?: string);
|
|
18
|
+
}
|
|
19
|
+
export interface ValidationResult {
|
|
20
|
+
valid: boolean;
|
|
21
|
+
errors: string[];
|
|
22
|
+
}
|
|
23
|
+
export type Validator<T> = (value: T) => ValidationResult;
|
|
24
|
+
export declare function combineResults(...results: ValidationResult[]): ValidationResult;
|
|
25
|
+
export declare function isString(value: unknown): value is string;
|
|
26
|
+
export declare function isNumber(value: unknown): value is number;
|
|
27
|
+
export declare function isBoolean(value: unknown): value is boolean;
|
|
28
|
+
export declare function isObject(value: unknown): value is Record<string, unknown>;
|
|
29
|
+
export declare function isArray(value: unknown): value is unknown[];
|
|
30
|
+
export declare function notEmpty(fieldName: string): Validator<string>;
|
|
31
|
+
export declare function hasLength(fieldName: string, min?: number, max?: number): Validator<string>;
|
|
32
|
+
export declare function matchesPattern(fieldName: string, pattern: RegExp, message?: string): Validator<string>;
|
|
33
|
+
export declare function isEmail(fieldName: string): Validator<string>;
|
|
34
|
+
export declare function isUrl(fieldName: string): Validator<string>;
|
|
35
|
+
export declare function inRange(fieldName: string, min?: number, max?: number): Validator<number>;
|
|
36
|
+
export declare function isPositive(fieldName: string): Validator<number>;
|
|
37
|
+
export declare function isInteger(fieldName: string): Validator<number>;
|
|
38
|
+
export declare function hasArrayLength(fieldName: string, min?: number, max?: number): Validator<unknown[]>;
|
|
39
|
+
export declare function arrayOf<T>(fieldName: string, itemValidator: Validator<T>): Validator<T[]>;
|
|
40
|
+
export declare function hasFields(fieldName: string, requiredFields: string[]): Validator<Record<string, unknown>>;
|
|
41
|
+
export declare function oneOf<T>(fieldName: string, allowed: T[]): Validator<T>;
|
|
42
|
+
export declare function validate<T>(value: T, validators: Validator<T>[]): ValidationResult;
|
|
43
|
+
export declare function validateOrThrow<T>(value: T, validators: Validator<T>[], context?: string): void;
|
|
44
|
+
export declare function pathExists(fieldName: string): Validator<string>;
|
|
45
|
+
export declare function hasExtension(fieldName: string, extensions: string[]): Validator<string>;
|
|
46
|
+
export declare function assertDefined<T>(value: T | null | undefined, fieldName: string): asserts value is T;
|
|
47
|
+
export declare function assertString(value: unknown, fieldName: string): asserts value is string;
|
|
48
|
+
export declare function assertNumber(value: unknown, fieldName: string): asserts value is number;
|
|
49
|
+
export declare function assertObject(value: unknown, fieldName: string): asserts value is Record<string, unknown>;
|
|
50
|
+
export declare function assertArray(value: unknown, fieldName: string): asserts value is unknown[];
|
|
51
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}
|