@zentto/studio 0.1.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.
Files changed (93) hide show
  1. package/dist/designer/zs-app-wizard.d.ts +33 -0
  2. package/dist/designer/zs-app-wizard.d.ts.map +1 -0
  3. package/dist/designer/zs-app-wizard.js +493 -0
  4. package/dist/designer/zs-app-wizard.js.map +1 -0
  5. package/dist/designer/zs-page-designer.d.ts +30 -0
  6. package/dist/designer/zs-page-designer.d.ts.map +1 -0
  7. package/dist/designer/zs-page-designer.js +466 -0
  8. package/dist/designer/zs-page-designer.js.map +1 -0
  9. package/dist/fields/zs-field-address.d.ts +28 -0
  10. package/dist/fields/zs-field-address.d.ts.map +1 -0
  11. package/dist/fields/zs-field-address.js +129 -0
  12. package/dist/fields/zs-field-address.js.map +1 -0
  13. package/dist/fields/zs-field-chart.d.ts +27 -0
  14. package/dist/fields/zs-field-chart.d.ts.map +1 -0
  15. package/dist/fields/zs-field-chart.js +192 -0
  16. package/dist/fields/zs-field-chart.js.map +1 -0
  17. package/dist/fields/zs-field-checkbox.d.ts +33 -0
  18. package/dist/fields/zs-field-checkbox.d.ts.map +1 -0
  19. package/dist/fields/zs-field-checkbox.js +172 -0
  20. package/dist/fields/zs-field-checkbox.js.map +1 -0
  21. package/dist/fields/zs-field-chips.d.ts +38 -0
  22. package/dist/fields/zs-field-chips.d.ts.map +1 -0
  23. package/dist/fields/zs-field-chips.js +257 -0
  24. package/dist/fields/zs-field-chips.js.map +1 -0
  25. package/dist/fields/zs-field-date.d.ts +23 -0
  26. package/dist/fields/zs-field-date.d.ts.map +1 -0
  27. package/dist/fields/zs-field-date.js +98 -0
  28. package/dist/fields/zs-field-date.js.map +1 -0
  29. package/dist/fields/zs-field-file.d.ts +26 -0
  30. package/dist/fields/zs-field-file.d.ts.map +1 -0
  31. package/dist/fields/zs-field-file.js +190 -0
  32. package/dist/fields/zs-field-file.js.map +1 -0
  33. package/dist/fields/zs-field-heading.d.ts +14 -0
  34. package/dist/fields/zs-field-heading.d.ts.map +1 -0
  35. package/dist/fields/zs-field-heading.js +54 -0
  36. package/dist/fields/zs-field-heading.js.map +1 -0
  37. package/dist/fields/zs-field-html.d.ts +12 -0
  38. package/dist/fields/zs-field-html.d.ts.map +1 -0
  39. package/dist/fields/zs-field-html.js +38 -0
  40. package/dist/fields/zs-field-html.js.map +1 -0
  41. package/dist/fields/zs-field-lookup.d.ts +37 -0
  42. package/dist/fields/zs-field-lookup.d.ts.map +1 -0
  43. package/dist/fields/zs-field-lookup.js +204 -0
  44. package/dist/fields/zs-field-lookup.js.map +1 -0
  45. package/dist/fields/zs-field-media.d.ts +15 -0
  46. package/dist/fields/zs-field-media.d.ts.map +1 -0
  47. package/dist/fields/zs-field-media.js +59 -0
  48. package/dist/fields/zs-field-media.js.map +1 -0
  49. package/dist/fields/zs-field-number.d.ts +35 -0
  50. package/dist/fields/zs-field-number.d.ts.map +1 -0
  51. package/dist/fields/zs-field-number.js +192 -0
  52. package/dist/fields/zs-field-number.js.map +1 -0
  53. package/dist/fields/zs-field-select.d.ts +34 -0
  54. package/dist/fields/zs-field-select.d.ts.map +1 -0
  55. package/dist/fields/zs-field-select.js +237 -0
  56. package/dist/fields/zs-field-select.js.map +1 -0
  57. package/dist/fields/zs-field-separator.d.ts +12 -0
  58. package/dist/fields/zs-field-separator.d.ts.map +1 -0
  59. package/dist/fields/zs-field-separator.js +37 -0
  60. package/dist/fields/zs-field-separator.js.map +1 -0
  61. package/dist/fields/zs-field-signature.d.ts +34 -0
  62. package/dist/fields/zs-field-signature.d.ts.map +1 -0
  63. package/dist/fields/zs-field-signature.js +191 -0
  64. package/dist/fields/zs-field-signature.js.map +1 -0
  65. package/dist/fields/zs-field-switch.d.ts +19 -0
  66. package/dist/fields/zs-field-switch.d.ts.map +1 -0
  67. package/dist/fields/zs-field-switch.js +100 -0
  68. package/dist/fields/zs-field-switch.js.map +1 -0
  69. package/dist/fields/zs-field-text.d.ts +24 -0
  70. package/dist/fields/zs-field-text.d.ts.map +1 -0
  71. package/dist/fields/zs-field-text.js +115 -0
  72. package/dist/fields/zs-field-text.js.map +1 -0
  73. package/dist/fields/zs-field-treeview.d.ts +37 -0
  74. package/dist/fields/zs-field-treeview.d.ts.map +1 -0
  75. package/dist/fields/zs-field-treeview.js +234 -0
  76. package/dist/fields/zs-field-treeview.js.map +1 -0
  77. package/dist/styles/tokens.d.ts +3 -0
  78. package/dist/styles/tokens.d.ts.map +1 -0
  79. package/dist/styles/tokens.js +159 -0
  80. package/dist/styles/tokens.js.map +1 -0
  81. package/dist/zentto-studio-app.d.ts +55 -0
  82. package/dist/zentto-studio-app.d.ts.map +1 -0
  83. package/dist/zentto-studio-app.js +748 -0
  84. package/dist/zentto-studio-app.js.map +1 -0
  85. package/dist/zentto-studio-designer.d.ts +13 -0
  86. package/dist/zentto-studio-designer.d.ts.map +1 -0
  87. package/dist/zentto-studio-designer.js +75 -0
  88. package/dist/zentto-studio-designer.js.map +1 -0
  89. package/dist/zentto-studio-renderer.d.ts +53 -0
  90. package/dist/zentto-studio-renderer.d.ts.map +1 -0
  91. package/dist/zentto-studio-renderer.js +636 -0
  92. package/dist/zentto-studio-renderer.js.map +1 -0
  93. package/package.json +56 -0
@@ -0,0 +1,636 @@
1
+ // @zentto/studio — Main renderer web component
2
+ // <zentto-studio-renderer> takes a StudioSchema + data and renders a full form
3
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
4
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
5
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
6
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
7
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
8
+ };
9
+ import { LitElement, html, css, nothing } from 'lit';
10
+ import { customElement, property, state } from 'lit/decorators.js';
11
+ import { studioTokens, fieldBaseStyles } from './styles/tokens.js';
12
+ import { DataModel, EventBus, evaluateRules, applyRulesToModel, validateField, getFieldTag, getFieldMeta, isActionEnabled, executeAction, evaluateExpression, } from '@zentto/studio-core';
13
+ // Import field components (side-effect: registers custom elements)
14
+ import './fields/zs-field-text.js';
15
+ import './fields/zs-field-number.js';
16
+ import './fields/zs-field-select.js';
17
+ import './fields/zs-field-date.js';
18
+ import './fields/zs-field-checkbox.js';
19
+ import './fields/zs-field-switch.js';
20
+ import './fields/zs-field-file.js';
21
+ import './fields/zs-field-lookup.js';
22
+ import './fields/zs-field-separator.js';
23
+ import './fields/zs-field-heading.js';
24
+ import './fields/zs-field-html.js';
25
+ import './fields/zs-field-signature.js';
26
+ import './fields/zs-field-address.js';
27
+ import './fields/zs-field-chart.js';
28
+ import './fields/zs-field-media.js';
29
+ import './fields/zs-field-treeview.js';
30
+ import './fields/zs-field-chips.js';
31
+ let ZenttoStudioRenderer = class ZenttoStudioRenderer extends LitElement {
32
+ constructor() {
33
+ super(...arguments);
34
+ // ─── Properties ──────────────────────────────────────────────
35
+ this.schema = null;
36
+ this.data = {};
37
+ this.themeMode = 'light';
38
+ // ─── Internal State ──────────────────────────────────────────
39
+ this.model = null;
40
+ this.eventBus = new EventBus();
41
+ this.activeSection = 0;
42
+ this.renderCounter = 0; // force re-renders
43
+ }
44
+ static { this.styles = [studioTokens, fieldBaseStyles, css `
45
+ :host {
46
+ display: block;
47
+ font-family: var(--zs-font-family);
48
+ color: var(--zs-text);
49
+ }
50
+ .zs-renderer { background: var(--zs-bg); border-radius: var(--zs-radius-lg); }
51
+ .zs-header {
52
+ padding: var(--zs-spacing-md);
53
+ border-bottom: 1px solid var(--zs-border);
54
+ }
55
+ .zs-title {
56
+ margin: 0; font-size: var(--zs-font-size-xl); font-weight: 600;
57
+ color: var(--zs-text);
58
+ }
59
+ .zs-description {
60
+ margin: 4px 0 0; font-size: var(--zs-font-size); color: var(--zs-text-secondary);
61
+ }
62
+ .zs-body { padding: var(--zs-spacing-md); }
63
+ .zs-section {
64
+ margin-bottom: var(--zs-spacing-lg);
65
+ }
66
+ .zs-section-title {
67
+ font-size: var(--zs-font-size-lg); font-weight: 600;
68
+ margin: 0 0 var(--zs-spacing-sm) 0; color: var(--zs-text);
69
+ padding-bottom: var(--zs-spacing-xs);
70
+ border-bottom: 2px solid var(--zs-primary-light);
71
+ }
72
+ .zs-section-description {
73
+ font-size: var(--zs-font-size-sm); color: var(--zs-text-secondary);
74
+ margin: 0 0 var(--zs-spacing-sm) 0;
75
+ }
76
+ .zs-section-grid {
77
+ display: grid;
78
+ gap: var(--zs-spacing-md);
79
+ }
80
+ .zs-actions {
81
+ display: flex; gap: var(--zs-spacing-sm);
82
+ padding: var(--zs-spacing-md);
83
+ border-top: 1px solid var(--zs-border);
84
+ justify-content: flex-end;
85
+ }
86
+ .zs-btn {
87
+ padding: 8px 20px; border-radius: var(--zs-radius);
88
+ font-family: var(--zs-font-family); font-size: var(--zs-font-size);
89
+ font-weight: 500; cursor: pointer; border: 1px solid transparent;
90
+ transition: all var(--zs-transition);
91
+ }
92
+ .zs-btn--primary {
93
+ background: var(--zs-primary); color: white; border-color: var(--zs-primary);
94
+ }
95
+ .zs-btn--primary:hover { background: var(--zs-primary-hover); }
96
+ .zs-btn--secondary {
97
+ background: var(--zs-bg); color: var(--zs-text); border-color: var(--zs-border);
98
+ }
99
+ .zs-btn--secondary:hover { background: var(--zs-bg-hover); }
100
+ .zs-btn--danger {
101
+ background: var(--zs-danger); color: white; border-color: var(--zs-danger);
102
+ }
103
+ .zs-btn--ghost {
104
+ background: transparent; color: var(--zs-text-secondary); border-color: transparent;
105
+ }
106
+ .zs-btn--ghost:hover { color: var(--zs-text); background: var(--zs-bg-hover); }
107
+ .zs-btn:disabled { opacity: 0.5; cursor: not-allowed; }
108
+ .zs-field-hidden { display: none; }
109
+
110
+ /* Tabs */
111
+ .zs-tabs { display: flex; gap: 0; border-bottom: 2px solid var(--zs-border); margin-bottom: var(--zs-spacing-md); }
112
+ .zs-tab {
113
+ padding: 8px 16px; cursor: pointer; border: none; background: none;
114
+ font-family: var(--zs-font-family); font-size: var(--zs-font-size);
115
+ color: var(--zs-text-secondary); border-bottom: 2px solid transparent;
116
+ margin-bottom: -2px; transition: all var(--zs-transition);
117
+ }
118
+ .zs-tab:hover { color: var(--zs-text); }
119
+ .zs-tab--active { color: var(--zs-primary); border-bottom-color: var(--zs-primary); font-weight: 500; }
120
+
121
+ /* Wizard */
122
+ .zs-wizard-steps {
123
+ display: flex; align-items: center; gap: 8px;
124
+ margin-bottom: var(--zs-spacing-lg); padding: 0 var(--zs-spacing-md);
125
+ }
126
+ .zs-wizard-step {
127
+ display: flex; align-items: center; gap: 8px;
128
+ }
129
+ .zs-wizard-circle {
130
+ width: 32px; height: 32px; border-radius: 50%;
131
+ display: flex; align-items: center; justify-content: center;
132
+ font-size: var(--zs-font-size-sm); font-weight: 600;
133
+ background: var(--zs-bg-secondary); color: var(--zs-text-secondary);
134
+ border: 2px solid var(--zs-border);
135
+ }
136
+ .zs-wizard-circle--active { background: var(--zs-primary); color: white; border-color: var(--zs-primary); }
137
+ .zs-wizard-circle--done { background: var(--zs-success); color: white; border-color: var(--zs-success); }
138
+ .zs-wizard-label { font-size: var(--zs-font-size-sm); color: var(--zs-text-secondary); }
139
+ .zs-wizard-label--active { color: var(--zs-text); font-weight: 500; }
140
+ .zs-wizard-line { flex: 1; height: 2px; background: var(--zs-border); }
141
+ .zs-wizard-line--done { background: var(--zs-success); }
142
+ .zs-wizard-nav { display: flex; justify-content: space-between; padding: var(--zs-spacing-md); }
143
+ `]; }
144
+ // ─── Lifecycle ───────────────────────────────────────────────
145
+ connectedCallback() {
146
+ super.connectedCallback();
147
+ if (this.themeMode === 'dark') {
148
+ this.setAttribute('theme', 'dark');
149
+ }
150
+ }
151
+ updated(changed) {
152
+ if (changed.has('schema') || changed.has('data')) {
153
+ this.initializeModel();
154
+ }
155
+ }
156
+ initializeModel() {
157
+ if (!this.schema)
158
+ return;
159
+ this.eventBus = new EventBus();
160
+ this.model = new DataModel(this.data, this.eventBus);
161
+ this.model.initializeFromSchema(this.schema);
162
+ this.activeSection = 0;
163
+ // Run initial rules
164
+ this.runRules();
165
+ }
166
+ // ─── Event Handlers ──────────────────────────────────────────
167
+ handleFieldChange(e) {
168
+ if (!this.model || !this.schema)
169
+ return;
170
+ const { fieldId, value } = e.detail;
171
+ const field = this.findField(fieldId);
172
+ if (!field)
173
+ return;
174
+ // Update model
175
+ this.model.setValue(fieldId, field.field, value);
176
+ // Run validation
177
+ const ctx = this.buildContext();
178
+ const result = validateField(field, value, ctx);
179
+ this.model.setFieldErrors(fieldId, result.errors);
180
+ // Re-evaluate rules
181
+ this.runRules();
182
+ // Emit event to host app
183
+ this.dispatchEvent(new CustomEvent('studio-change', {
184
+ detail: { fieldId, field: field.field, value, data: this.model.getData() },
185
+ bubbles: true, composed: true,
186
+ }));
187
+ this.renderCounter++;
188
+ }
189
+ async handleAction(actionId) {
190
+ if (!this.model || !this.schema)
191
+ return;
192
+ const action = this.schema.actions?.find(a => a.id === actionId);
193
+ if (!action)
194
+ return;
195
+ const ctx = this.buildContext();
196
+ if (!isActionEnabled(action, ctx))
197
+ return;
198
+ // Confirm if needed
199
+ if (action.confirmMessage) {
200
+ const confirmed = confirm(action.confirmMessage);
201
+ if (!confirmed)
202
+ return;
203
+ }
204
+ const formData = this.model.getData();
205
+ if (action.type === 'submit') {
206
+ // Validate all fields first
207
+ let hasErrors = false;
208
+ for (const section of this.schema.sections) {
209
+ for (const field of section.fields) {
210
+ const value = this.model.getValue(field.field);
211
+ const result = validateField(field, value, ctx);
212
+ this.model.setFieldErrors(field.id, result.errors);
213
+ if (!result.valid)
214
+ hasErrors = true;
215
+ }
216
+ }
217
+ if (hasErrors) {
218
+ this.renderCounter++;
219
+ return;
220
+ }
221
+ this.dispatchEvent(new CustomEvent('studio-submit', {
222
+ detail: { actionId, data: formData },
223
+ bubbles: true, composed: true,
224
+ }));
225
+ }
226
+ if (action.type === 'reset') {
227
+ this.model.reset();
228
+ this.runRules();
229
+ this.renderCounter++;
230
+ return;
231
+ }
232
+ const result = await executeAction(action, formData, ctx, this.eventBus);
233
+ this.dispatchEvent(new CustomEvent('studio-action', {
234
+ detail: { actionId, type: action.type, result, data: formData },
235
+ bubbles: true, composed: true,
236
+ }));
237
+ this.renderCounter++;
238
+ }
239
+ // ─── Helpers ─────────────────────────────────────────────────
240
+ buildContext() {
241
+ return {
242
+ formData: this.model?.getRawData() ?? {},
243
+ dataSources: {},
244
+ };
245
+ }
246
+ findField(fieldId) {
247
+ if (!this.schema)
248
+ return undefined;
249
+ for (const section of this.schema.sections) {
250
+ const f = section.fields.find(f => f.id === fieldId);
251
+ if (f)
252
+ return f;
253
+ }
254
+ return undefined;
255
+ }
256
+ runRules() {
257
+ if (!this.schema?.rules || !this.model)
258
+ return;
259
+ const ctx = this.buildContext();
260
+ const result = evaluateRules(this.schema.rules, ctx);
261
+ // Build field map for applyRulesToModel
262
+ const fieldMap = new Map();
263
+ for (const section of this.schema.sections) {
264
+ for (const field of section.fields) {
265
+ fieldMap.set(field.id, { id: field.id, field: field.field });
266
+ }
267
+ }
268
+ applyRulesToModel(result, this.model, fieldMap);
269
+ }
270
+ // ─── Render ──────────────────────────────────────────────────
271
+ render() {
272
+ if (!this.schema || !this.model) {
273
+ return html `<div class="zs-renderer" style="padding:24px;color:var(--zs-text-muted)">No schema loaded</div>`;
274
+ }
275
+ const layoutType = this.schema.layout.type;
276
+ return html `
277
+ <div class="zs-renderer">
278
+ ${this.schema.title ? html `
279
+ <div class="zs-header">
280
+ <h2 class="zs-title">${this.schema.title}</h2>
281
+ ${this.schema.description ? html `<p class="zs-description">${this.schema.description}</p>` : ''}
282
+ </div>
283
+ ` : ''}
284
+
285
+ ${layoutType === 'tabs' ? this.renderTabs() :
286
+ layoutType === 'wizard' ? this.renderWizard() :
287
+ this.renderSections()}
288
+
289
+ ${this.renderActions('bottom')}
290
+ </div>
291
+ `;
292
+ }
293
+ renderSections() {
294
+ if (!this.schema || !this.model)
295
+ return nothing;
296
+ return html `
297
+ <div class="zs-body">
298
+ ${this.schema.sections.map(section => this.renderSection(section))}
299
+ </div>
300
+ `;
301
+ }
302
+ renderTabs() {
303
+ if (!this.schema || !this.model)
304
+ return nothing;
305
+ const sections = this.schema.sections;
306
+ return html `
307
+ <div class="zs-tabs">
308
+ ${sections.map((s, i) => html `
309
+ <button
310
+ class="zs-tab ${i === this.activeSection ? 'zs-tab--active' : ''}"
311
+ @click="${() => { this.activeSection = i; }}"
312
+ >${s.title ?? `Tab ${i + 1}`}</button>
313
+ `)}
314
+ </div>
315
+ <div class="zs-body">
316
+ ${this.renderSection(sections[this.activeSection])}
317
+ </div>
318
+ `;
319
+ }
320
+ renderWizard() {
321
+ if (!this.schema || !this.model)
322
+ return nothing;
323
+ const sections = this.schema.sections;
324
+ const total = sections.length;
325
+ return html `
326
+ <div class="zs-wizard-steps">
327
+ ${sections.map((s, i) => html `
328
+ ${i > 0 ? html `<div class="zs-wizard-line ${i <= this.activeSection ? 'zs-wizard-line--done' : ''}"></div>` : ''}
329
+ <div class="zs-wizard-step">
330
+ <div class="zs-wizard-circle ${i === this.activeSection ? 'zs-wizard-circle--active' : i < this.activeSection ? 'zs-wizard-circle--done' : ''}">
331
+ ${i < this.activeSection ? '✓' : i + 1}
332
+ </div>
333
+ <span class="zs-wizard-label ${i === this.activeSection ? 'zs-wizard-label--active' : ''}">${s.title ?? `Paso ${i + 1}`}</span>
334
+ </div>
335
+ `)}
336
+ </div>
337
+ <div class="zs-body">
338
+ ${this.renderSection(sections[this.activeSection])}
339
+ </div>
340
+ <div class="zs-wizard-nav">
341
+ <button
342
+ class="zs-btn zs-btn--secondary"
343
+ ?disabled="${this.activeSection === 0}"
344
+ @click="${() => { this.activeSection = Math.max(0, this.activeSection - 1); }}"
345
+ >Anterior</button>
346
+ ${this.activeSection < total - 1
347
+ ? html `<button class="zs-btn zs-btn--primary" @click="${() => { this.activeSection = Math.min(total - 1, this.activeSection + 1); }}">Siguiente</button>`
348
+ : html `<button class="zs-btn zs-btn--primary" @click="${() => this.handleAction('__wizard_finish__')}">Finalizar</button>`}
349
+ </div>
350
+ `;
351
+ }
352
+ renderSection(section) {
353
+ if (!this.model)
354
+ return html ``;
355
+ // Check section visibility
356
+ if (section.visibilityRule) {
357
+ const ctx = this.buildContext();
358
+ const visible = evaluateExpression(section.visibilityRule, ctx);
359
+ if (!visible)
360
+ return html ``;
361
+ }
362
+ const columns = section.columns ?? this.schema?.layout.columns ?? 1;
363
+ const gap = this.schema?.layout.gap ?? 16;
364
+ return html `
365
+ <div class="zs-section">
366
+ ${section.title ? html `<h3 class="zs-section-title">${section.title}</h3>` : ''}
367
+ ${section.description ? html `<p class="zs-section-description">${section.description}</p>` : ''}
368
+ <div class="zs-section-grid" style="grid-template-columns: repeat(${columns}, 1fr); gap: ${gap}px;">
369
+ ${section.fields.map(field => this.renderField(field))}
370
+ </div>
371
+ </div>
372
+ `;
373
+ }
374
+ renderField(field) {
375
+ if (!this.model)
376
+ return html ``;
377
+ const fieldState = this.model.getFieldState(field.id);
378
+ // Visibility
379
+ if (field.hidden || !fieldState.visible) {
380
+ return html `<div class="zs-field-hidden"></div>`;
381
+ }
382
+ // Computed value
383
+ if (field.computedValue) {
384
+ try {
385
+ const ctx = this.buildContext();
386
+ const computed = evaluateExpression(field.computedValue, ctx);
387
+ if (computed !== undefined) {
388
+ this.model.setValue(field.id, field.field, computed);
389
+ }
390
+ }
391
+ catch { /* ignore */ }
392
+ }
393
+ const value = this.model.getValue(field.field);
394
+ const errors = fieldState.errors;
395
+ const disabled = field.disabled || !fieldState.enabled;
396
+ const readOnly = field.readOnly || fieldState.readOnly;
397
+ const required = field.required || fieldState.required;
398
+ const meta = getFieldMeta(field.type);
399
+ const mergedProps = { ...meta?.defaultProps, ...field.props };
400
+ // Column span
401
+ const colSpan = field.colSpan ?? 1;
402
+ const fullWidth = ['separator', 'heading', 'html', 'datagrid', 'report'].includes(field.type);
403
+ const gridStyle = fullWidth ? 'grid-column: 1 / -1' : colSpan > 1 ? `grid-column: span ${colSpan}` : '';
404
+ // Render based on tag name
405
+ const tag = getFieldTag(field.type);
406
+ return html `
407
+ <div style="${gridStyle}" @field-change="${this.handleFieldChange}">
408
+ ${this.renderFieldByTag(tag, field, value, errors, disabled, readOnly, required, mergedProps)}
409
+ </div>
410
+ `;
411
+ }
412
+ renderFieldByTag(tag, field, value, errors, disabled, readOnly, required, props) {
413
+ const baseAttrs = {
414
+ fieldId: field.id,
415
+ label: field.label ?? '',
416
+ placeholder: field.placeholder ?? '',
417
+ helpText: field.helpText ?? '',
418
+ required, disabled, readOnly, errors,
419
+ };
420
+ switch (tag) {
421
+ case 'zs-field-text':
422
+ return html `<zs-field-text
423
+ .fieldId="${baseAttrs.fieldId}" .label="${baseAttrs.label}"
424
+ .value="${value != null ? String(value) : ''}"
425
+ .placeholder="${baseAttrs.placeholder}" .helpText="${baseAttrs.helpText}"
426
+ .inputType="${props.inputType ?? 'text'}"
427
+ .multiline="${field.type === 'textarea'}"
428
+ .errors="${baseAttrs.errors}"
429
+ ?required="${baseAttrs.required}" ?disabled="${baseAttrs.disabled}" ?readOnly="${baseAttrs.readOnly}"
430
+ ></zs-field-text>`;
431
+ case 'zs-field-number':
432
+ return html `<zs-field-number
433
+ .fieldId="${baseAttrs.fieldId}" .label="${baseAttrs.label}"
434
+ .value="${value != null ? Number(value) : null}"
435
+ .placeholder="${baseAttrs.placeholder}" .helpText="${baseAttrs.helpText}"
436
+ .isCurrency="${!!props.isCurrency}" .isPercentage="${!!props.isPercentage}"
437
+ .currencySymbol="${props.currencySymbol ?? '$'}"
438
+ .mode="${props.mode ?? 'input'}"
439
+ .min="${props.min ?? 0}" .max="${props.max ?? 100}"
440
+ .step="${props.step ?? 1}"
441
+ .maxRating="${props.maxRating ?? 5}"
442
+ .errors="${baseAttrs.errors}"
443
+ ?required="${baseAttrs.required}" ?disabled="${baseAttrs.disabled}" ?readOnly="${baseAttrs.readOnly}"
444
+ ></zs-field-number>`;
445
+ case 'zs-field-select':
446
+ return html `<zs-field-select
447
+ .fieldId="${baseAttrs.fieldId}" .label="${baseAttrs.label}"
448
+ .value="${value ?? ''}"
449
+ .placeholder="${baseAttrs.placeholder}" .helpText="${baseAttrs.helpText}"
450
+ .options="${props.options ?? []}"
451
+ .multiple="${!!props.multiple}"
452
+ .mode="${props.mode ?? 'select'}"
453
+ .errors="${baseAttrs.errors}"
454
+ ?required="${baseAttrs.required}" ?disabled="${baseAttrs.disabled}"
455
+ ></zs-field-select>`;
456
+ case 'zs-field-date':
457
+ return html `<zs-field-date
458
+ .fieldId="${baseAttrs.fieldId}" .label="${baseAttrs.label}"
459
+ .value="${value != null ? String(value) : ''}"
460
+ .helpText="${baseAttrs.helpText}"
461
+ .mode="${props.mode ?? 'date'}"
462
+ .min="${props.min ?? ''}" .max="${props.max ?? ''}"
463
+ .errors="${baseAttrs.errors}"
464
+ ?required="${baseAttrs.required}" ?disabled="${baseAttrs.disabled}" ?readOnly="${baseAttrs.readOnly}"
465
+ ></zs-field-date>`;
466
+ case 'zs-field-checkbox':
467
+ return html `<zs-field-checkbox
468
+ .fieldId="${baseAttrs.fieldId}" .label="${baseAttrs.label}"
469
+ .value="${value ?? false}"
470
+ .helpText="${baseAttrs.helpText}"
471
+ .mode="${props.mode ?? 'checkbox'}"
472
+ .options="${props.options ?? []}"
473
+ .horizontal="${!!props.horizontal}"
474
+ .errors="${baseAttrs.errors}"
475
+ ?required="${baseAttrs.required}" ?disabled="${baseAttrs.disabled}"
476
+ ></zs-field-checkbox>`;
477
+ case 'zs-field-switch':
478
+ return html `<zs-field-switch
479
+ .fieldId="${baseAttrs.fieldId}" .label="${baseAttrs.label}"
480
+ .value="${!!value}"
481
+ .helpText="${baseAttrs.helpText}"
482
+ .errors="${baseAttrs.errors}"
483
+ ?disabled="${baseAttrs.disabled}"
484
+ ></zs-field-switch>`;
485
+ case 'zs-field-file':
486
+ return html `<zs-field-file
487
+ .fieldId="${baseAttrs.fieldId}" .label="${baseAttrs.label}"
488
+ .helpText="${baseAttrs.helpText}"
489
+ .accept="${props.accept ?? ''}"
490
+ .multiple="${!!props.multiple}"
491
+ .errors="${baseAttrs.errors}"
492
+ ?required="${baseAttrs.required}" ?disabled="${baseAttrs.disabled}"
493
+ ></zs-field-file>`;
494
+ case 'zs-field-lookup':
495
+ return html `<zs-field-lookup
496
+ .fieldId="${baseAttrs.fieldId}" .label="${baseAttrs.label}"
497
+ .value="${value ?? ''}" .displayValue="${props.displayValue ?? ''}"
498
+ .placeholder="${baseAttrs.placeholder}" .helpText="${baseAttrs.helpText}"
499
+ .options="${props.lookupOptions ?? []}"
500
+ .minChars="${props.minChars ?? 2}"
501
+ .debounceMs="${props.debounceMs ?? 300}"
502
+ .errors="${baseAttrs.errors}"
503
+ ?required="${baseAttrs.required}" ?disabled="${baseAttrs.disabled}"
504
+ ></zs-field-lookup>`;
505
+ case 'zs-field-separator':
506
+ return html `<zs-field-separator
507
+ .variant="${props.variant ?? 'thin'}"
508
+ ></zs-field-separator>`;
509
+ case 'zs-field-heading':
510
+ return html `<zs-field-heading
511
+ .label="${baseAttrs.label}" .helpText="${baseAttrs.helpText}"
512
+ .level="${props.level ?? 'h2'}"
513
+ ></zs-field-heading>`;
514
+ case 'zs-field-html':
515
+ return html `<zs-field-html
516
+ .content="${props.content ?? String(value ?? '')}"
517
+ ></zs-field-html>`;
518
+ case 'zs-field-signature':
519
+ return html `<zs-field-signature
520
+ .fieldId="${baseAttrs.fieldId}" .label="${baseAttrs.label}"
521
+ .value="${value != null ? String(value) : ''}"
522
+ .helpText="${baseAttrs.helpText}"
523
+ .penWidth="${props.penWidth ?? 2}"
524
+ .penColor="${props.penColor ?? '#000000'}"
525
+ .errors="${baseAttrs.errors}"
526
+ ?required="${baseAttrs.required}" ?disabled="${baseAttrs.disabled}"
527
+ ></zs-field-signature>`;
528
+ case 'zs-field-address':
529
+ return html `<zs-field-address
530
+ .fieldId="${baseAttrs.fieldId}" .label="${baseAttrs.label}"
531
+ .value="${value ?? {}}" .helpText="${baseAttrs.helpText}"
532
+ .errors="${baseAttrs.errors}"
533
+ ?required="${baseAttrs.required}" ?disabled="${baseAttrs.disabled}" ?readOnly="${baseAttrs.readOnly}"
534
+ ></zs-field-address>`;
535
+ case 'zs-field-chart':
536
+ return html `<zs-field-chart
537
+ .label="${baseAttrs.label}"
538
+ .chartType="${props.chartType ?? 'bar'}"
539
+ .data="${props.chartData ?? []}"
540
+ .width="${props.width ?? 400}"
541
+ .height="${props.height ?? 250}"
542
+ ></zs-field-chart>`;
543
+ case 'zs-field-media':
544
+ return html `<zs-field-media
545
+ .label="${baseAttrs.label}"
546
+ .src="${value != null ? String(value) : props.src ?? ''}"
547
+ .mediaType="${props.mediaType ?? 'image'}"
548
+ .alt="${props.alt ?? ''}"
549
+ ></zs-field-media>`;
550
+ case 'zs-field-treeview':
551
+ return html `<zs-field-treeview
552
+ .fieldId="${baseAttrs.fieldId}" .label="${baseAttrs.label}"
553
+ .value="${Array.isArray(value) ? value : (value ? [value] : [])}"
554
+ .helpText="${baseAttrs.helpText}"
555
+ .nodes="${props.nodes ?? []}"
556
+ .multiSelect="${!!props.multiSelect}"
557
+ .showCheckboxes="${!!props.showCheckboxes}"
558
+ .searchable="${!!props.searchable}"
559
+ .errors="${baseAttrs.errors}"
560
+ ?required="${baseAttrs.required}" ?disabled="${baseAttrs.disabled}"
561
+ ></zs-field-treeview>`;
562
+ case 'zs-field-chips':
563
+ return html `<zs-field-chips
564
+ .fieldId="${baseAttrs.fieldId}" .label="${baseAttrs.label}"
565
+ .value="${Array.isArray(value) ? value : []}"
566
+ .placeholder="${baseAttrs.placeholder}" .helpText="${baseAttrs.helpText}"
567
+ .options="${props.options ?? []}"
568
+ .allowCustom="${props.allowCustom !== false}"
569
+ .maxChips="${props.maxChips ?? 0}"
570
+ .colorMode="${props.colorMode ?? 'default'}"
571
+ .errors="${baseAttrs.errors}"
572
+ ?required="${baseAttrs.required}" ?disabled="${baseAttrs.disabled}"
573
+ ></zs-field-chips>`;
574
+ default:
575
+ return html `<zs-field-text
576
+ .fieldId="${baseAttrs.fieldId}" .label="${baseAttrs.label}"
577
+ .value="${value != null ? String(value) : ''}"
578
+ .placeholder="${baseAttrs.placeholder}"
579
+ .errors="${baseAttrs.errors}"
580
+ ?required="${baseAttrs.required}" ?disabled="${baseAttrs.disabled}"
581
+ ></zs-field-text>`;
582
+ }
583
+ }
584
+ renderActions(position) {
585
+ if (!this.schema?.actions)
586
+ return nothing;
587
+ const actions = this.schema.actions.filter(a => (a.position ?? 'bottom') === position);
588
+ if (actions.length === 0)
589
+ return nothing;
590
+ const ctx = this.buildContext();
591
+ return html `
592
+ <div class="zs-actions">
593
+ ${actions.map(action => {
594
+ const enabled = isActionEnabled(action, ctx);
595
+ const variant = action.variant ?? 'secondary';
596
+ return html `
597
+ <button
598
+ class="zs-btn zs-btn--${variant}"
599
+ ?disabled="${!enabled}"
600
+ @click="${() => this.handleAction(action.id)}"
601
+ >${action.label}</button>
602
+ `;
603
+ })}
604
+ </div>
605
+ `;
606
+ }
607
+ };
608
+ __decorate([
609
+ property({ type: Object })
610
+ ], ZenttoStudioRenderer.prototype, "schema", void 0);
611
+ __decorate([
612
+ property({ type: Object })
613
+ ], ZenttoStudioRenderer.prototype, "data", void 0);
614
+ __decorate([
615
+ property({ attribute: 'theme' })
616
+ ], ZenttoStudioRenderer.prototype, "themeMode", void 0);
617
+ __decorate([
618
+ state()
619
+ ], ZenttoStudioRenderer.prototype, "model", void 0);
620
+ __decorate([
621
+ state()
622
+ ], ZenttoStudioRenderer.prototype, "eventBus", void 0);
623
+ __decorate([
624
+ state()
625
+ ], ZenttoStudioRenderer.prototype, "activeSection", void 0);
626
+ __decorate([
627
+ state()
628
+ ], ZenttoStudioRenderer.prototype, "renderCounter", void 0);
629
+ ZenttoStudioRenderer = __decorate([
630
+ customElement('zentto-studio-renderer')
631
+ ], ZenttoStudioRenderer);
632
+ export { ZenttoStudioRenderer };
633
+ // Re-export app and designer components so a single import registers everything
634
+ export { ZenttoStudioApp } from './zentto-studio-app.js';
635
+ export { ZenttoStudioDesigner } from './zentto-studio-designer.js';
636
+ //# sourceMappingURL=zentto-studio-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zentto-studio-renderer.js","sourceRoot":"","sources":["../src/zentto-studio-renderer.ts"],"names":[],"mappings":"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"}