view-contracts 0.2.0 → 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/cli-contract.yaml +1 -1
- package/dist/view-contracts.bundle.mjs +120 -107
- package/dist/view-contracts.bundle.mjs.map +4 -4
- package/docs/cli-reference.md +1 -1
- package/package.json +5 -1
- package/renderers/compose/templates/Screen.kt.hbs +15 -0
- package/renderers/compose/templates/VcTheme.kt.hbs +19 -0
- package/renderers/react/defaults/theme.yaml +41 -0
- package/renderers/react/defaults/tokens.yaml +59 -0
- package/renderers/react/element-config.meta.json +0 -1
- package/renderers/react/elements.yaml +20 -21
- package/renderers/react/lowering/lowerToJsx.ts +63 -27
- package/renderers/react/renderRuntime.ts +28 -5
- package/renderers/react/runtime/style.ts +27 -22
- package/renderers/react/runtime/theme.css +50 -35
- package/renderers/react/runtime/types.ts +2 -2
- package/renderers/react/templates/runtime-types.ts.hbs +5 -0
- package/renderers/react/templates/style-helpers.ts.hbs +1 -1
- package/renderers/swiftui/templates/Screen.swift.hbs +21 -0
- package/renderers/swiftui/templates/VcTheme.swift.hbs +21 -0
- package/spec/ui-dsl.schema.json +24 -16
- package/src/generated/schema/allowed-components.ts +1 -1
- package/src/generated/schema/{tokens.ts → dsl-enums.ts} +1 -1
- package/src/generated/schema/dsl-properties.ts +3 -2
- package/src/generated/schema/index.ts +2 -2
- package/src/generated/schema/lowering-style-properties.ts +1 -9
- package/src/generated/schema/react-renderer-element-config.ts +1 -2
- package/src/generated/schema/schema-document.ts +2 -2
|
@@ -21,23 +21,23 @@
|
|
|
21
21
|
body { margin: 0; background: var(--ui-bg); color: var(--ui-text); font-family: var(--ui-font); }
|
|
22
22
|
button, input, textarea, select { font: inherit; }
|
|
23
23
|
|
|
24
|
-
.
|
|
25
|
-
.
|
|
26
|
-
.
|
|
27
|
-
.
|
|
28
|
-
.
|
|
29
|
-
.
|
|
30
|
-
.
|
|
31
|
-
.
|
|
24
|
+
.vc-page { min-height: 100vh; }
|
|
25
|
+
.vc-box { display: block; }
|
|
26
|
+
.vc-column { display: flex; flex-direction: column; }
|
|
27
|
+
.vc-stack { display: flex; flex-direction: column; }
|
|
28
|
+
.vc-row { display: flex; flex-direction: row; }
|
|
29
|
+
.vc-wrap { flex-wrap: wrap; }
|
|
30
|
+
.vc-spacer { min-width: 0; min-height: 0; }
|
|
31
|
+
.vc-divider { border: 0; border-top: 1px solid var(--ui-border); width: 100%; }
|
|
32
32
|
|
|
33
|
-
.
|
|
34
|
-
.
|
|
35
|
-
.
|
|
36
|
-
.
|
|
37
|
-
.
|
|
38
|
-
.
|
|
39
|
-
.
|
|
40
|
-
.
|
|
33
|
+
.vc-heading { margin: 0; line-height: 1.2; letter-spacing: -0.02em; }
|
|
34
|
+
.vc-heading-1 { font-size: 32px; }
|
|
35
|
+
.vc-heading-2 { font-size: 22px; }
|
|
36
|
+
.vc-heading-3 { font-size: 18px; }
|
|
37
|
+
.vc-heading-4 { font-size: 15px; }
|
|
38
|
+
.vc-text { margin: 0; line-height: 1.6; }
|
|
39
|
+
.vc-link { color: var(--ui-primary); text-decoration: none; }
|
|
40
|
+
.vc-link:hover { text-decoration: underline; }
|
|
41
41
|
|
|
42
42
|
.ui-tone-default { color: var(--ui-text); }
|
|
43
43
|
.ui-tone-muted { color: var(--ui-text-muted); }
|
|
@@ -46,23 +46,38 @@ button, input, textarea, select { font: inherit; }
|
|
|
46
46
|
.ui-tone-warning { color: var(--ui-warning); }
|
|
47
47
|
.ui-tone-danger { color: var(--ui-danger); }
|
|
48
48
|
|
|
49
|
-
.
|
|
50
|
-
.ui-button-primary { background: var(--ui-primary); color: #fff; }
|
|
51
|
-
.ui-button-secondary { background: #eef2f7; color: var(--ui-text); }
|
|
52
|
-
.ui-button-ghost { background: transparent; color: var(--ui-text); }
|
|
53
|
-
.ui-button-danger { background: var(--ui-danger); color: #fff; }
|
|
49
|
+
.vc-button { border: 0; border-radius: 10px; padding: 10px 14px; font-weight: 700; cursor: pointer; }
|
|
54
50
|
|
|
55
|
-
.
|
|
56
|
-
.
|
|
57
|
-
.
|
|
58
|
-
.
|
|
59
|
-
.
|
|
60
|
-
.
|
|
61
|
-
.
|
|
62
|
-
.
|
|
63
|
-
.
|
|
64
|
-
.
|
|
65
|
-
.
|
|
66
|
-
.
|
|
67
|
-
.
|
|
68
|
-
.
|
|
51
|
+
.vc-form { display: flex; flex-direction: column; }
|
|
52
|
+
.vc-field { display: flex; flex-direction: column; gap: 6px; }
|
|
53
|
+
.vc-field-label { font-size: 13px; font-weight: 700; color: var(--ui-text); }
|
|
54
|
+
.vc-field-help { font-size: 12px; color: var(--ui-text-muted); }
|
|
55
|
+
.vc-field-error { font-size: 12px; color: var(--ui-danger); }
|
|
56
|
+
.vc-text-input, .vc-select, .vc-text-area { width: 100%; border: 1px solid var(--ui-border); border-radius: 10px; background: #fff; color: var(--ui-text); outline: none; }
|
|
57
|
+
.vc-text-input:focus, .vc-select:focus, .vc-text-area:focus { border-color: var(--ui-primary); box-shadow: 0 0 0 3px var(--ui-primary-weak); }
|
|
58
|
+
.vc-field-sm { min-height: 34px; padding: 6px 10px; }
|
|
59
|
+
.vc-field-md, .vc-text-input, .vc-select { min-height: 42px; padding: 9px 12px; }
|
|
60
|
+
.vc-field-lg { min-height: 50px; padding: 12px 14px; }
|
|
61
|
+
.vc-text-area { padding: 10px 12px; resize: vertical; }
|
|
62
|
+
.vc-checkbox { display: inline-flex; align-items: center; gap: 8px; }
|
|
63
|
+
.vc-list { margin: 0; padding-left: 20px; }
|
|
64
|
+
.vc-list-item { margin: 0; padding: 2px 0; }
|
|
65
|
+
|
|
66
|
+
/* Extension components — structural layout; variant colors from theme.yaml via emitVariantCss */
|
|
67
|
+
.vc-container { width: 100%; max-width: 1180px; margin: 0 auto; }
|
|
68
|
+
.vc-grid { display: grid; }
|
|
69
|
+
.vc-card { border: 1px solid var(--ui-border); }
|
|
70
|
+
.vc-badge { display: inline-flex; align-items: center; justify-content: center; padding: 4px 10px; border-radius: 999px; font-size: 12px; font-weight: 600; }
|
|
71
|
+
.vc-alert { display: flex; gap: 12px; border: 1px solid var(--ui-border); border-radius: 12px; padding: 14px; }
|
|
72
|
+
.vc-alert--success { border-color: #a7f3d0; }
|
|
73
|
+
.vc-alert--warning { border-color: #fde68a; }
|
|
74
|
+
.vc-alert--danger { border-color: #fecaca; }
|
|
75
|
+
.vc-table-wrap { overflow-x: auto; border: 1px solid var(--ui-border); border-radius: 14px; background: #fff; }
|
|
76
|
+
.vc-table { width: 100%; border-collapse: collapse; }
|
|
77
|
+
.vc-table th { background: var(--ui-surface-muted); color: var(--ui-text-muted); font-size: 12px; text-align: left; padding: 12px 14px; }
|
|
78
|
+
.vc-table td { border-top: 1px solid var(--ui-border); padding: 14px; font-size: 14px; }
|
|
79
|
+
.vc-admin-shell { display: grid; grid-template-columns: 240px 1fr; min-height: 100vh; }
|
|
80
|
+
.vc-admin-sidebar { background: #0f172a; color: #cbd5e1; padding: 24px 18px; }
|
|
81
|
+
.vc-admin-nav-item { padding: 10px 12px; border-radius: 10px; color: #cbd5e1; }
|
|
82
|
+
.vc-admin-nav-item--active { background: rgba(255,255,255,0.1); color: #fff; }
|
|
83
|
+
.vc-admin-content { padding: 32px; }
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
2
|
import type { DslProperties } from '../../../src/generated/schema/dsl-properties.js';
|
|
3
|
-
import type { FontWeight, Justify, Shadow, WidthSize } from '../../../src/generated/schema/
|
|
3
|
+
import type { FontWeight, Justify, Shadow, WidthSize } from '../../../src/generated/schema/dsl-enums.js';
|
|
4
4
|
|
|
5
5
|
export type {
|
|
6
6
|
Align,
|
|
@@ -18,7 +18,7 @@ export type {
|
|
|
18
18
|
TextAlign,
|
|
19
19
|
TextOverflow,
|
|
20
20
|
WidthSize,
|
|
21
|
-
} from '../../../src/generated/schema/
|
|
21
|
+
} from '../../../src/generated/schema/dsl-enums.js';
|
|
22
22
|
|
|
23
23
|
export type { DslProperties };
|
|
24
24
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** Auto-generated style helpers for lowered JSX — DO NOT EDIT */
|
|
2
|
-
export { commonStyle, mapAlign, mapJustify } from './style.js';
|
|
2
|
+
export { commonStyle, extensionClassName, mapAlign, mapJustify, resolveExtensionVariant } from './style.js';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// {{screenName}} — SwiftUI scaffold (Phase 5)
|
|
2
|
+
// Theme IR: {{themeJsonPath}}
|
|
3
|
+
// Token IR: {{tokensJsonPath}}
|
|
4
|
+
//
|
|
5
|
+
// TODO(Phase B): Load theme.json and emit PrimaryButtonStyle(), vcTextMuted(), etc.
|
|
6
|
+
|
|
7
|
+
import SwiftUI
|
|
8
|
+
|
|
9
|
+
struct {{screenName}}View: View {
|
|
10
|
+
var body: some View {
|
|
11
|
+
Text("{{screenName}} — SwiftUI scaffold")
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
#if DEBUG
|
|
16
|
+
struct {{screenName}}View_Previews: PreviewProvider {
|
|
17
|
+
static var previews: some View {
|
|
18
|
+
{{screenName}}View()
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
#endif
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// VcTheme — SwiftUI theme scaffold (Phase 5)
|
|
2
|
+
// Load Token IR + Theme IR from bundle resources:
|
|
3
|
+
// {{tokensJsonPath}}
|
|
4
|
+
// {{themeJsonPath}}
|
|
5
|
+
//
|
|
6
|
+
// TODO(Phase B): Map Theme IR variants to ButtonStyle / ViewModifier implementations.
|
|
7
|
+
|
|
8
|
+
import Foundation
|
|
9
|
+
|
|
10
|
+
enum VcTheme {
|
|
11
|
+
static let tokensResource = "{{tokensJsonPath}}"
|
|
12
|
+
static let themeResource = "{{themeJsonPath}}"
|
|
13
|
+
|
|
14
|
+
/// Placeholder — decode theme.json into Swift types in Phase B.
|
|
15
|
+
static func loadThemeJson() -> Data? {
|
|
16
|
+
guard let url = Bundle.main.url(forResource: themeResource, withExtension: nil) else {
|
|
17
|
+
return nil
|
|
18
|
+
}
|
|
19
|
+
return try? Data(contentsOf: url)
|
|
20
|
+
}
|
|
21
|
+
}
|
package/spec/ui-dsl.schema.json
CHANGED
|
@@ -227,7 +227,18 @@
|
|
|
227
227
|
"x-category": "validation",
|
|
228
228
|
"x-appliesTo": ["Field", "TextInput", "TextArea", "Select"]
|
|
229
229
|
},
|
|
230
|
-
"variant": {
|
|
230
|
+
"variant": {
|
|
231
|
+
"type": "string",
|
|
232
|
+
"x-category": "visual",
|
|
233
|
+
"x-appliesTo": ["Button", "IconButton", "Box", "Text", "Heading"],
|
|
234
|
+
"x-notes": "design token variant"
|
|
235
|
+
},
|
|
236
|
+
"theme": {
|
|
237
|
+
"type": "string",
|
|
238
|
+
"x-category": "visual",
|
|
239
|
+
"x-appliesTo": ["App"],
|
|
240
|
+
"x-notes": "active theme id for runtime theme switching"
|
|
241
|
+
}
|
|
231
242
|
},
|
|
232
243
|
"elements": {
|
|
233
244
|
"App": {
|
|
@@ -238,7 +249,8 @@
|
|
|
238
249
|
"properties": {
|
|
239
250
|
"id": { "$ref": "#/properties/id" },
|
|
240
251
|
"padding": { "$ref": "#/properties/padding" },
|
|
241
|
-
"direction": { "$ref": "#/properties/direction" }
|
|
252
|
+
"direction": { "$ref": "#/properties/direction" },
|
|
253
|
+
"theme": { "$ref": "#/properties/theme" }
|
|
242
254
|
},
|
|
243
255
|
"_children": { "x-kind": "list", "x-items": ["Page"] }
|
|
244
256
|
},
|
|
@@ -307,8 +319,7 @@
|
|
|
307
319
|
"minWidth": { "$ref": "#/properties/minWidth" },
|
|
308
320
|
"maxWidth": { "$ref": "#/properties/maxWidth" },
|
|
309
321
|
"minHeight": { "$ref": "#/properties/minHeight" },
|
|
310
|
-
"maxHeight": { "$ref": "#/properties/maxHeight" }
|
|
311
|
-
"variant": { "$ref": "#/properties/variant" }
|
|
322
|
+
"maxHeight": { "$ref": "#/properties/maxHeight" }
|
|
312
323
|
},
|
|
313
324
|
"_children": { "x-kind": "any" }
|
|
314
325
|
},
|
|
@@ -328,8 +339,7 @@
|
|
|
328
339
|
"minWidth": { "$ref": "#/properties/minWidth" },
|
|
329
340
|
"maxWidth": { "$ref": "#/properties/maxWidth" },
|
|
330
341
|
"minHeight": { "$ref": "#/properties/minHeight" },
|
|
331
|
-
"maxHeight": { "$ref": "#/properties/maxHeight" }
|
|
332
|
-
"variant": { "$ref": "#/properties/variant" }
|
|
342
|
+
"maxHeight": { "$ref": "#/properties/maxHeight" }
|
|
333
343
|
},
|
|
334
344
|
"_children": { "x-kind": "any" }
|
|
335
345
|
},
|
|
@@ -344,8 +354,7 @@
|
|
|
344
354
|
"padding": { "$ref": "#/properties/padding" },
|
|
345
355
|
"width": { "$ref": "#/properties/width" },
|
|
346
356
|
"height": { "$ref": "#/properties/height" },
|
|
347
|
-
"background": { "$ref": "#/properties/background" }
|
|
348
|
-
"variant": { "$ref": "#/properties/variant" }
|
|
357
|
+
"background": { "$ref": "#/properties/background" }
|
|
349
358
|
},
|
|
350
359
|
"_children": { "x-kind": "any" }
|
|
351
360
|
},
|
|
@@ -368,8 +377,7 @@
|
|
|
368
377
|
"description": "Horizontal or vertical separator",
|
|
369
378
|
"properties": {
|
|
370
379
|
"id": { "$ref": "#/properties/id" },
|
|
371
|
-
"axis": { "$ref": "#/properties/axis" }
|
|
372
|
-
"variant": { "$ref": "#/properties/variant" }
|
|
380
|
+
"axis": { "$ref": "#/properties/axis" }
|
|
373
381
|
},
|
|
374
382
|
"_children": { "x-kind": "none" }
|
|
375
383
|
},
|
|
@@ -430,7 +438,8 @@
|
|
|
430
438
|
"fontWeight": { "$ref": "#/properties/fontWeight" },
|
|
431
439
|
"foreground": { "$ref": "#/properties/foreground" },
|
|
432
440
|
"opacity": { "$ref": "#/properties/opacity" },
|
|
433
|
-
"role": { "$ref": "#/properties/role" }
|
|
441
|
+
"role": { "$ref": "#/properties/role" },
|
|
442
|
+
"variant": { "$ref": "#/properties/variant" }
|
|
434
443
|
},
|
|
435
444
|
"_children": { "x-kind": "text" }
|
|
436
445
|
},
|
|
@@ -445,7 +454,8 @@
|
|
|
445
454
|
"textStyle": { "$ref": "#/properties/textStyle" },
|
|
446
455
|
"textAlign": { "$ref": "#/properties/textAlign" },
|
|
447
456
|
"foreground": { "$ref": "#/properties/foreground" },
|
|
448
|
-
"role": { "$ref": "#/properties/role" }
|
|
457
|
+
"role": { "$ref": "#/properties/role" },
|
|
458
|
+
"variant": { "$ref": "#/properties/variant" }
|
|
449
459
|
},
|
|
450
460
|
"_children": { "x-kind": "text" }
|
|
451
461
|
},
|
|
@@ -718,8 +728,7 @@
|
|
|
718
728
|
"properties": {
|
|
719
729
|
"id": { "$ref": "#/properties/id" },
|
|
720
730
|
"visible": { "$ref": "#/properties/visible" },
|
|
721
|
-
"value": { "$ref": "#/properties/value" }
|
|
722
|
-
"variant": { "$ref": "#/properties/variant" }
|
|
731
|
+
"value": { "$ref": "#/properties/value" }
|
|
723
732
|
},
|
|
724
733
|
"_children": { "x-kind": "none" }
|
|
725
734
|
},
|
|
@@ -729,8 +738,7 @@
|
|
|
729
738
|
"description": "Indeterminate loading",
|
|
730
739
|
"properties": {
|
|
731
740
|
"id": { "$ref": "#/properties/id" },
|
|
732
|
-
"visible": { "$ref": "#/properties/visible" }
|
|
733
|
-
"variant": { "$ref": "#/properties/variant" }
|
|
741
|
+
"visible": { "$ref": "#/properties/visible" }
|
|
734
742
|
},
|
|
735
743
|
"_children": { "x-kind": "none" }
|
|
736
744
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** Auto-generated from spec/ui-dsl.schema.json — view-contracts v0.
|
|
1
|
+
/** Auto-generated from spec/ui-dsl.schema.json — view-contracts v0.3.0 — DO NOT EDIT */
|
|
2
2
|
export type Role = "button" | "link" | "heading" | "list" | "listitem" | "main" | "dialog" | "status";
|
|
3
3
|
export type WidthSize = "wrap" | "fill";
|
|
4
4
|
export type HeightSize = "wrap" | "fill";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
/** Auto-generated from spec/ui-dsl.schema.json — view-contracts v0.
|
|
1
|
+
/** Auto-generated from spec/ui-dsl.schema.json — view-contracts v0.3.0 — DO NOT EDIT */
|
|
2
2
|
export interface ViewAction { name: string; params?: Record<string, unknown> }
|
|
3
|
-
import type { Role, WidthSize, HeightSize, Align, Justify, ContentAlign, Axis, Direction, Scroll, Border, Shadow, TextAlign, LineLimit, TextOverflow, FontWeight, ImageFit, KeyboardType, Clip } from './
|
|
3
|
+
import type { Role, WidthSize, HeightSize, Align, Justify, ContentAlign, Axis, Direction, Scroll, Border, Shadow, TextAlign, LineLimit, TextOverflow, FontWeight, ImageFit, KeyboardType, Clip } from './dsl-enums.js';
|
|
4
4
|
|
|
5
5
|
/** Shared DSL attributes from $defs.properties / properties catalog */
|
|
6
6
|
export interface DslProperties {
|
|
@@ -60,4 +60,5 @@ export interface DslProperties {
|
|
|
60
60
|
error?: string | null;
|
|
61
61
|
help?: string | null;
|
|
62
62
|
variant?: string;
|
|
63
|
+
theme?: string;
|
|
63
64
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** Auto-generated from spec/ui-dsl.schema.json — view-contracts v0.
|
|
2
|
-
export * from './
|
|
1
|
+
/** Auto-generated from spec/ui-dsl.schema.json — view-contracts v0.3.0 — DO NOT EDIT */
|
|
2
|
+
export * from './dsl-enums.js';
|
|
3
3
|
export * from './dsl-properties.js';
|
|
4
4
|
export * from './schema-document.js';
|
|
@@ -1,16 +1,12 @@
|
|
|
1
|
-
/** Auto-generated from spec/ui-dsl.schema.json — view-contracts v0.
|
|
1
|
+
/** Auto-generated from spec/ui-dsl.schema.json — view-contracts v0.3.0 — DO NOT EDIT */
|
|
2
2
|
/** Property names passed to commonStyle() during React HTML lowering (x-category from DSL + sample extensions). */
|
|
3
3
|
export const LOWERING_STYLE_PROPERTIES = new Set<string>([
|
|
4
4
|
"align",
|
|
5
5
|
"aspectRatio",
|
|
6
6
|
"axis",
|
|
7
|
-
"background",
|
|
8
|
-
"border",
|
|
9
|
-
"clip",
|
|
10
7
|
"contentAlign",
|
|
11
8
|
"direction",
|
|
12
9
|
"fontWeight",
|
|
13
|
-
"foreground",
|
|
14
10
|
"gap",
|
|
15
11
|
"headingLevel",
|
|
16
12
|
"height",
|
|
@@ -20,16 +16,12 @@ export const LOWERING_STYLE_PROPERTIES = new Set<string>([
|
|
|
20
16
|
"maxWidth",
|
|
21
17
|
"minHeight",
|
|
22
18
|
"minWidth",
|
|
23
|
-
"opacity",
|
|
24
19
|
"padding",
|
|
25
|
-
"radius",
|
|
26
20
|
"scroll",
|
|
27
21
|
"selfAlign",
|
|
28
|
-
"shadow",
|
|
29
22
|
"textAlign",
|
|
30
23
|
"textOverflow",
|
|
31
24
|
"textStyle",
|
|
32
|
-
"variant",
|
|
33
25
|
"weight",
|
|
34
26
|
"width",
|
|
35
27
|
"size",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** Auto-generated from renderers/react/element-config.meta.json — view-contracts v0.
|
|
1
|
+
/** Auto-generated from renderers/react/element-config.meta.json — view-contracts v0.3.0 — DO NOT EDIT */
|
|
2
2
|
/** Shape of entries in renderers/react/elements.yaml (target-specific HTML map, not DSL vocabulary). */
|
|
3
3
|
export interface ReactRendererElementConfig {
|
|
4
4
|
tag: string;
|
|
@@ -12,7 +12,6 @@ export interface ReactRendererElementConfig {
|
|
|
12
12
|
levelProp?: string;
|
|
13
13
|
defaultLevel?: number;
|
|
14
14
|
actionEvent?: "onClick" | "onSubmit";
|
|
15
|
-
variantClass?: boolean;
|
|
16
15
|
fieldWrap?: boolean;
|
|
17
16
|
inputType?: string;
|
|
18
17
|
sizeClass?: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/** Auto-generated from spec/ui-dsl.meta.json + ui-dsl.schema.json — view-contracts v0.
|
|
2
|
-
import type { Role, WidthSize, HeightSize, Align, Justify, ContentAlign, Axis, Direction, Scroll, Border, Shadow, TextAlign, LineLimit, TextOverflow, FontWeight, ImageFit, KeyboardType, Clip } from './
|
|
1
|
+
/** Auto-generated from spec/ui-dsl.meta.json + ui-dsl.schema.json — view-contracts v0.3.0 — DO NOT EDIT */
|
|
2
|
+
import type { Role, WidthSize, HeightSize, Align, Justify, ContentAlign, Axis, Direction, Scroll, Border, Shadow, TextAlign, LineLimit, TextOverflow, FontWeight, ImageFit, KeyboardType, Clip } from './dsl-enums.js';
|
|
3
3
|
|
|
4
4
|
export type PropertyType = 'string' | 'number' | 'boolean' | 'array' | 'action' | 'object' | 'null' | string | string[];
|
|
5
5
|
|