@tekton-ui/core 0.2.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/README.md +758 -0
- package/dist/blueprint.d.ts +44 -0
- package/dist/blueprint.d.ts.map +1 -0
- package/dist/blueprint.js +163 -0
- package/dist/blueprint.js.map +1 -0
- package/dist/component-schemas.d.ts +78 -0
- package/dist/component-schemas.d.ts.map +1 -0
- package/dist/component-schemas.js +1037 -0
- package/dist/component-schemas.js.map +1 -0
- package/dist/css-generator.d.ts +42 -0
- package/dist/css-generator.d.ts.map +1 -0
- package/dist/css-generator.js +339 -0
- package/dist/css-generator.js.map +1 -0
- package/dist/icon-library.d.ts +109 -0
- package/dist/icon-library.d.ts.map +1 -0
- package/dist/icon-library.js +204 -0
- package/dist/icon-library.js.map +1 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +51 -0
- package/dist/index.js.map +1 -0
- package/dist/layout-css-generator.d.ts +158 -0
- package/dist/layout-css-generator.d.ts.map +1 -0
- package/dist/layout-css-generator.js +901 -0
- package/dist/layout-css-generator.js.map +1 -0
- package/dist/layout-resolver.d.ts +92 -0
- package/dist/layout-resolver.d.ts.map +1 -0
- package/dist/layout-resolver.js +275 -0
- package/dist/layout-resolver.js.map +1 -0
- package/dist/layout-tokens/index.d.ts +16 -0
- package/dist/layout-tokens/index.d.ts.map +1 -0
- package/dist/layout-tokens/index.js +16 -0
- package/dist/layout-tokens/index.js.map +1 -0
- package/dist/layout-tokens/keyboard.d.ts +254 -0
- package/dist/layout-tokens/keyboard.d.ts.map +1 -0
- package/dist/layout-tokens/keyboard.js +407 -0
- package/dist/layout-tokens/keyboard.js.map +1 -0
- package/dist/layout-tokens/mobile-shells.d.ts +78 -0
- package/dist/layout-tokens/mobile-shells.d.ts.map +1 -0
- package/dist/layout-tokens/mobile-shells.js +635 -0
- package/dist/layout-tokens/mobile-shells.js.map +1 -0
- package/dist/layout-tokens/pages.d.ts +100 -0
- package/dist/layout-tokens/pages.d.ts.map +1 -0
- package/dist/layout-tokens/pages.js +576 -0
- package/dist/layout-tokens/pages.js.map +1 -0
- package/dist/layout-tokens/responsive.d.ts +109 -0
- package/dist/layout-tokens/responsive.d.ts.map +1 -0
- package/dist/layout-tokens/responsive.js +167 -0
- package/dist/layout-tokens/responsive.js.map +1 -0
- package/dist/layout-tokens/safe-area.d.ts +156 -0
- package/dist/layout-tokens/safe-area.d.ts.map +1 -0
- package/dist/layout-tokens/safe-area.js +316 -0
- package/dist/layout-tokens/safe-area.js.map +1 -0
- package/dist/layout-tokens/sections-advanced.d.ts +277 -0
- package/dist/layout-tokens/sections-advanced.d.ts.map +1 -0
- package/dist/layout-tokens/sections-advanced.js +593 -0
- package/dist/layout-tokens/sections-advanced.js.map +1 -0
- package/dist/layout-tokens/sections.d.ts +137 -0
- package/dist/layout-tokens/sections.d.ts.map +1 -0
- package/dist/layout-tokens/sections.js +694 -0
- package/dist/layout-tokens/sections.js.map +1 -0
- package/dist/layout-tokens/shells.d.ts +77 -0
- package/dist/layout-tokens/shells.d.ts.map +1 -0
- package/dist/layout-tokens/shells.js +408 -0
- package/dist/layout-tokens/shells.js.map +1 -0
- package/dist/layout-tokens/touch-target.d.ts +119 -0
- package/dist/layout-tokens/touch-target.d.ts.map +1 -0
- package/dist/layout-tokens/touch-target.js +156 -0
- package/dist/layout-tokens/touch-target.js.map +1 -0
- package/dist/layout-tokens/types.d.ts +632 -0
- package/dist/layout-tokens/types.d.ts.map +1 -0
- package/dist/layout-tokens/types.js +49 -0
- package/dist/layout-tokens/types.js.map +1 -0
- package/dist/layout-validation.d.ts +1547 -0
- package/dist/layout-validation.d.ts.map +1 -0
- package/dist/layout-validation.js +628 -0
- package/dist/layout-validation.js.map +1 -0
- package/dist/render.d.ts +23 -0
- package/dist/render.d.ts.map +1 -0
- package/dist/render.js +244 -0
- package/dist/render.js.map +1 -0
- package/dist/schema-validation.d.ts +208 -0
- package/dist/schema-validation.d.ts.map +1 -0
- package/dist/schema-validation.js +205 -0
- package/dist/schema-validation.js.map +1 -0
- package/dist/screen-generation/generators/css-in-js-generator.d.ts +82 -0
- package/dist/screen-generation/generators/css-in-js-generator.d.ts.map +1 -0
- package/dist/screen-generation/generators/css-in-js-generator.js +335 -0
- package/dist/screen-generation/generators/css-in-js-generator.js.map +1 -0
- package/dist/screen-generation/generators/index.d.ts +13 -0
- package/dist/screen-generation/generators/index.d.ts.map +1 -0
- package/dist/screen-generation/generators/index.js +32 -0
- package/dist/screen-generation/generators/index.js.map +1 -0
- package/dist/screen-generation/generators/react-generator.d.ts +100 -0
- package/dist/screen-generation/generators/react-generator.d.ts.map +1 -0
- package/dist/screen-generation/generators/react-generator.js +379 -0
- package/dist/screen-generation/generators/react-generator.js.map +1 -0
- package/dist/screen-generation/generators/tailwind-generator.d.ts +105 -0
- package/dist/screen-generation/generators/tailwind-generator.d.ts.map +1 -0
- package/dist/screen-generation/generators/tailwind-generator.js +355 -0
- package/dist/screen-generation/generators/tailwind-generator.js.map +1 -0
- package/dist/screen-generation/generators/types.d.ts +136 -0
- package/dist/screen-generation/generators/types.d.ts.map +1 -0
- package/dist/screen-generation/generators/types.js +18 -0
- package/dist/screen-generation/generators/types.js.map +1 -0
- package/dist/screen-generation/generators/utils.d.ts +187 -0
- package/dist/screen-generation/generators/utils.d.ts.map +1 -0
- package/dist/screen-generation/generators/utils.js +312 -0
- package/dist/screen-generation/generators/utils.js.map +1 -0
- package/dist/screen-generation/index.d.ts +14 -0
- package/dist/screen-generation/index.d.ts.map +1 -0
- package/dist/screen-generation/index.js +33 -0
- package/dist/screen-generation/index.js.map +1 -0
- package/dist/screen-generation/resolver/component-resolver.d.ts +157 -0
- package/dist/screen-generation/resolver/component-resolver.d.ts.map +1 -0
- package/dist/screen-generation/resolver/component-resolver.js +295 -0
- package/dist/screen-generation/resolver/component-resolver.js.map +1 -0
- package/dist/screen-generation/resolver/index.d.ts +10 -0
- package/dist/screen-generation/resolver/index.d.ts.map +1 -0
- package/dist/screen-generation/resolver/index.js +46 -0
- package/dist/screen-generation/resolver/index.js.map +1 -0
- package/dist/screen-generation/resolver/layout-resolver.d.ts +155 -0
- package/dist/screen-generation/resolver/layout-resolver.d.ts.map +1 -0
- package/dist/screen-generation/resolver/layout-resolver.js +193 -0
- package/dist/screen-generation/resolver/layout-resolver.js.map +1 -0
- package/dist/screen-generation/resolver/screen-resolver.d.ts +174 -0
- package/dist/screen-generation/resolver/screen-resolver.d.ts.map +1 -0
- package/dist/screen-generation/resolver/screen-resolver.js +373 -0
- package/dist/screen-generation/resolver/screen-resolver.js.map +1 -0
- package/dist/screen-generation/resolver/token-resolver.d.ts +170 -0
- package/dist/screen-generation/resolver/token-resolver.d.ts.map +1 -0
- package/dist/screen-generation/resolver/token-resolver.js +260 -0
- package/dist/screen-generation/resolver/token-resolver.js.map +1 -0
- package/dist/screen-generation/types.d.ts +116 -0
- package/dist/screen-generation/types.d.ts.map +1 -0
- package/dist/screen-generation/types.js +33 -0
- package/dist/screen-generation/types.js.map +1 -0
- package/dist/screen-generation/validators.d.ts +286 -0
- package/dist/screen-generation/validators.d.ts.map +1 -0
- package/dist/screen-generation/validators.js +323 -0
- package/dist/screen-generation/validators.js.map +1 -0
- package/dist/screen-templates/__tests__/registry.test.d.ts +6 -0
- package/dist/screen-templates/__tests__/registry.test.d.ts.map +1 -0
- package/dist/screen-templates/__tests__/registry.test.js +247 -0
- package/dist/screen-templates/__tests__/registry.test.js.map +1 -0
- package/dist/screen-templates/__tests__/templates.test.d.ts +6 -0
- package/dist/screen-templates/__tests__/templates.test.d.ts.map +1 -0
- package/dist/screen-templates/__tests__/templates.test.js +179 -0
- package/dist/screen-templates/__tests__/templates.test.js.map +1 -0
- package/dist/screen-templates/index.d.ts +39 -0
- package/dist/screen-templates/index.d.ts.map +1 -0
- package/dist/screen-templates/index.js +79 -0
- package/dist/screen-templates/index.js.map +1 -0
- package/dist/screen-templates/registry.d.ts +177 -0
- package/dist/screen-templates/registry.d.ts.map +1 -0
- package/dist/screen-templates/registry.js +274 -0
- package/dist/screen-templates/registry.js.map +1 -0
- package/dist/screen-templates/templates/account/index.d.ts +6 -0
- package/dist/screen-templates/templates/account/index.d.ts.map +1 -0
- package/dist/screen-templates/templates/account/index.js +6 -0
- package/dist/screen-templates/templates/account/index.js.map +1 -0
- package/dist/screen-templates/templates/account/profile.d.ts +23 -0
- package/dist/screen-templates/templates/account/profile.d.ts.map +1 -0
- package/dist/screen-templates/templates/account/profile.js +249 -0
- package/dist/screen-templates/templates/account/profile.js.map +1 -0
- package/dist/screen-templates/templates/auth/forgot-password.d.ts +23 -0
- package/dist/screen-templates/templates/auth/forgot-password.d.ts.map +1 -0
- package/dist/screen-templates/templates/auth/forgot-password.js +203 -0
- package/dist/screen-templates/templates/auth/forgot-password.js.map +1 -0
- package/dist/screen-templates/templates/auth/index.d.ts +9 -0
- package/dist/screen-templates/templates/auth/index.d.ts.map +1 -0
- package/dist/screen-templates/templates/auth/index.js +9 -0
- package/dist/screen-templates/templates/auth/index.js.map +1 -0
- package/dist/screen-templates/templates/auth/login.d.ts +24 -0
- package/dist/screen-templates/templates/auth/login.d.ts.map +1 -0
- package/dist/screen-templates/templates/auth/login.js +254 -0
- package/dist/screen-templates/templates/auth/login.js.map +1 -0
- package/dist/screen-templates/templates/auth/signup.d.ts +24 -0
- package/dist/screen-templates/templates/auth/signup.d.ts.map +1 -0
- package/dist/screen-templates/templates/auth/signup.js +315 -0
- package/dist/screen-templates/templates/auth/signup.js.map +1 -0
- package/dist/screen-templates/templates/auth/verification.d.ts +23 -0
- package/dist/screen-templates/templates/auth/verification.d.ts.map +1 -0
- package/dist/screen-templates/templates/auth/verification.js +239 -0
- package/dist/screen-templates/templates/auth/verification.js.map +1 -0
- package/dist/screen-templates/templates/feedback/confirmation.d.ts +9 -0
- package/dist/screen-templates/templates/feedback/confirmation.d.ts.map +1 -0
- package/dist/screen-templates/templates/feedback/confirmation.js +107 -0
- package/dist/screen-templates/templates/feedback/confirmation.js.map +1 -0
- package/dist/screen-templates/templates/feedback/empty.d.ts +9 -0
- package/dist/screen-templates/templates/feedback/empty.d.ts.map +1 -0
- package/dist/screen-templates/templates/feedback/empty.js +90 -0
- package/dist/screen-templates/templates/feedback/empty.js.map +1 -0
- package/dist/screen-templates/templates/feedback/error.d.ts +9 -0
- package/dist/screen-templates/templates/feedback/error.d.ts.map +1 -0
- package/dist/screen-templates/templates/feedback/error.js +99 -0
- package/dist/screen-templates/templates/feedback/error.js.map +1 -0
- package/dist/screen-templates/templates/feedback/index.d.ts +10 -0
- package/dist/screen-templates/templates/feedback/index.d.ts.map +1 -0
- package/dist/screen-templates/templates/feedback/index.js +10 -0
- package/dist/screen-templates/templates/feedback/index.js.map +1 -0
- package/dist/screen-templates/templates/feedback/loading.d.ts +9 -0
- package/dist/screen-templates/templates/feedback/loading.d.ts.map +1 -0
- package/dist/screen-templates/templates/feedback/loading.js +77 -0
- package/dist/screen-templates/templates/feedback/loading.js.map +1 -0
- package/dist/screen-templates/templates/feedback/success.d.ts +9 -0
- package/dist/screen-templates/templates/feedback/success.d.ts.map +1 -0
- package/dist/screen-templates/templates/feedback/success.js +99 -0
- package/dist/screen-templates/templates/feedback/success.js.map +1 -0
- package/dist/screen-templates/templates/home/index.d.ts +6 -0
- package/dist/screen-templates/templates/home/index.d.ts.map +1 -0
- package/dist/screen-templates/templates/home/index.js +6 -0
- package/dist/screen-templates/templates/home/index.js.map +1 -0
- package/dist/screen-templates/templates/home/landing.d.ts +24 -0
- package/dist/screen-templates/templates/home/landing.d.ts.map +1 -0
- package/dist/screen-templates/templates/home/landing.js +197 -0
- package/dist/screen-templates/templates/home/landing.js.map +1 -0
- package/dist/screen-templates/templates/settings/index.d.ts +6 -0
- package/dist/screen-templates/templates/settings/index.d.ts.map +1 -0
- package/dist/screen-templates/templates/settings/index.js +6 -0
- package/dist/screen-templates/templates/settings/index.js.map +1 -0
- package/dist/screen-templates/templates/settings/preferences.d.ts +24 -0
- package/dist/screen-templates/templates/settings/preferences.d.ts.map +1 -0
- package/dist/screen-templates/templates/settings/preferences.js +265 -0
- package/dist/screen-templates/templates/settings/preferences.js.map +1 -0
- package/dist/screen-templates/types.d.ts +229 -0
- package/dist/screen-templates/types.d.ts.map +1 -0
- package/dist/screen-templates/types.js +7 -0
- package/dist/screen-templates/types.js.map +1 -0
- package/dist/theme-v2.d.ts +228 -0
- package/dist/theme-v2.d.ts.map +1 -0
- package/dist/theme-v2.js +158 -0
- package/dist/theme-v2.js.map +1 -0
- package/dist/theme.d.ts +60 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/theme.js +76 -0
- package/dist/theme.js.map +1 -0
- package/dist/token-resolver.d.ts +69 -0
- package/dist/token-resolver.d.ts.map +1 -0
- package/dist/token-resolver.js +122 -0
- package/dist/token-resolver.js.map +1 -0
- package/dist/token-validation.d.ts +432 -0
- package/dist/token-validation.d.ts.map +1 -0
- package/dist/token-validation.js +140 -0
- package/dist/token-validation.js.map +1 -0
- package/dist/tokens.d.ts +158 -0
- package/dist/tokens.d.ts.map +1 -0
- package/dist/tokens.js +10 -0
- package/dist/tokens.js.map +1 -0
- package/dist/types.d.ts +77 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout-validation.d.ts","sourceRoot":"","sources":["../src/layout-validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,628 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @tekton-ui/core - Layout Token Validation
|
|
3
|
+
* Zod-based runtime validation for 4-layer layout token architecture
|
|
4
|
+
* [SPEC-LAYOUT-001] [PHASE-2]
|
|
5
|
+
*/
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
// ============================================================================
|
|
8
|
+
// Zod Schema Definitions (Schema-First Pattern)
|
|
9
|
+
// ============================================================================
|
|
10
|
+
/**
|
|
11
|
+
* Token Reference Schema
|
|
12
|
+
* Validates token reference format: "atomic.spacing.16" or "semantic.color.primary"
|
|
13
|
+
*/
|
|
14
|
+
export const TokenReferenceSchema = z.string().regex(/^[a-z]+\.[a-z-]+(\.[a-z0-9-]+)*$/, {
|
|
15
|
+
message: 'Token reference format invalid (e.g., atomic.spacing.16)',
|
|
16
|
+
});
|
|
17
|
+
/**
|
|
18
|
+
* Responsive Token Schema
|
|
19
|
+
* Validates breakpoint definitions
|
|
20
|
+
*/
|
|
21
|
+
export const ResponsiveTokenSchema = z.object({
|
|
22
|
+
id: z.string().min(1, 'Breakpoint ID required'),
|
|
23
|
+
minWidth: z.number().positive('Minimum width must be positive'),
|
|
24
|
+
maxWidth: z.number().positive('Maximum width must be positive').optional(),
|
|
25
|
+
description: z.string().min(1, 'Breakpoint description required'),
|
|
26
|
+
});
|
|
27
|
+
/**
|
|
28
|
+
* Generic Responsive Configuration Schema
|
|
29
|
+
* Validates responsive config with breakpoint overrides
|
|
30
|
+
*
|
|
31
|
+
* Note: Uses z.any() for breakpoint overrides since they are Partial<T> and flexible
|
|
32
|
+
*/
|
|
33
|
+
export function ResponsiveConfigSchema(configSchema) {
|
|
34
|
+
return z.object({
|
|
35
|
+
default: configSchema,
|
|
36
|
+
sm: z.any().optional(),
|
|
37
|
+
md: z.any().optional(),
|
|
38
|
+
lg: z.any().optional(),
|
|
39
|
+
xl: z.any().optional(),
|
|
40
|
+
'2xl': z.any().optional(),
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
// ============================================================================
|
|
44
|
+
// Shell Token Schemas
|
|
45
|
+
// ============================================================================
|
|
46
|
+
/**
|
|
47
|
+
* Shell Region Position Schema
|
|
48
|
+
*/
|
|
49
|
+
export const ShellRegionPositionSchema = z.enum(['top', 'left', 'right', 'bottom', 'center'], {
|
|
50
|
+
errorMap: () => ({ message: 'Invalid region position' }),
|
|
51
|
+
});
|
|
52
|
+
/**
|
|
53
|
+
* Shell Region Schema
|
|
54
|
+
* Validates shell region configuration
|
|
55
|
+
*/
|
|
56
|
+
export const ShellRegionSchema = z.object({
|
|
57
|
+
name: z.string().min(1, 'Region name required'),
|
|
58
|
+
position: ShellRegionPositionSchema,
|
|
59
|
+
size: TokenReferenceSchema,
|
|
60
|
+
collapsible: z.boolean().optional(),
|
|
61
|
+
defaultCollapsed: z.boolean().optional(),
|
|
62
|
+
});
|
|
63
|
+
/**
|
|
64
|
+
* Shell Config Schema
|
|
65
|
+
* Flexible schema for shell-level settings
|
|
66
|
+
*/
|
|
67
|
+
export const ShellConfigSchema = z.record(z.unknown());
|
|
68
|
+
/**
|
|
69
|
+
* Shell Token Schema
|
|
70
|
+
* Validates complete shell token structure
|
|
71
|
+
*/
|
|
72
|
+
export const ShellTokenSchema = z.object({
|
|
73
|
+
id: z.string().min(1, 'Shell ID required'),
|
|
74
|
+
description: z.string().min(1, 'Shell description required'),
|
|
75
|
+
platform: z.enum(['web', 'mobile', 'desktop'], {
|
|
76
|
+
errorMap: () => ({ message: 'Platform must be web, mobile, or desktop' }),
|
|
77
|
+
}),
|
|
78
|
+
regions: z.array(ShellRegionSchema).min(1, 'At least one region required'),
|
|
79
|
+
responsive: ResponsiveConfigSchema(ShellConfigSchema),
|
|
80
|
+
tokenBindings: z.record(z.string()).refine(bindings => Object.keys(bindings).length >= 1, {
|
|
81
|
+
message: 'At least 1 token binding required',
|
|
82
|
+
}),
|
|
83
|
+
});
|
|
84
|
+
// ============================================================================
|
|
85
|
+
// Page Layout Token Schemas
|
|
86
|
+
// ============================================================================
|
|
87
|
+
/**
|
|
88
|
+
* Page Purpose Schema
|
|
89
|
+
*/
|
|
90
|
+
export const PagePurposeSchema = z.enum(['job', 'resource', 'dashboard', 'settings', 'detail', 'empty', 'wizard', 'onboarding'], {
|
|
91
|
+
errorMap: () => ({ message: 'Invalid page purpose' }),
|
|
92
|
+
});
|
|
93
|
+
/**
|
|
94
|
+
* Section Slot Schema
|
|
95
|
+
* Validates section slot configuration
|
|
96
|
+
*/
|
|
97
|
+
export const SectionSlotSchema = z.object({
|
|
98
|
+
name: z.string().min(1, 'Slot name required'),
|
|
99
|
+
pattern: z.string().min(1, 'Pattern reference required'),
|
|
100
|
+
required: z.boolean(),
|
|
101
|
+
allowedComponents: z.array(z.string()).optional(),
|
|
102
|
+
});
|
|
103
|
+
/**
|
|
104
|
+
* Page Config Schema
|
|
105
|
+
* Flexible schema for page-level settings
|
|
106
|
+
*/
|
|
107
|
+
export const PageConfigSchema = z.record(z.unknown());
|
|
108
|
+
/**
|
|
109
|
+
* Page Layout Token Schema
|
|
110
|
+
* Validates complete page layout structure
|
|
111
|
+
*/
|
|
112
|
+
export const PageLayoutTokenSchema = z.object({
|
|
113
|
+
id: z.string().min(1, 'Page ID required'),
|
|
114
|
+
description: z.string().min(1, 'Page description required'),
|
|
115
|
+
purpose: PagePurposeSchema,
|
|
116
|
+
sections: z.array(SectionSlotSchema).min(1, 'At least one section required'),
|
|
117
|
+
responsive: ResponsiveConfigSchema(PageConfigSchema),
|
|
118
|
+
tokenBindings: z.record(z.string()).refine(bindings => Object.keys(bindings).length >= 1, {
|
|
119
|
+
message: 'At least 1 token binding required',
|
|
120
|
+
}),
|
|
121
|
+
});
|
|
122
|
+
// ============================================================================
|
|
123
|
+
// Section Pattern Token Schemas
|
|
124
|
+
// ============================================================================
|
|
125
|
+
/**
|
|
126
|
+
* Section Type Schema
|
|
127
|
+
*/
|
|
128
|
+
export const SectionTypeSchema = z.enum(['grid', 'flex', 'split', 'stack', 'container'], {
|
|
129
|
+
errorMap: () => ({ message: 'Invalid section type' }),
|
|
130
|
+
});
|
|
131
|
+
/**
|
|
132
|
+
* Section CSS Schema
|
|
133
|
+
* Validates section CSS properties
|
|
134
|
+
*/
|
|
135
|
+
export const SectionCSSSchema = z.object({
|
|
136
|
+
display: z.enum(['grid', 'flex'], {
|
|
137
|
+
errorMap: () => ({ message: 'Display must be grid or flex' }),
|
|
138
|
+
}),
|
|
139
|
+
gridTemplateColumns: z.string().optional(),
|
|
140
|
+
gridTemplateRows: z.string().optional(),
|
|
141
|
+
gap: TokenReferenceSchema.optional(),
|
|
142
|
+
flexDirection: z.enum(['row', 'column']).optional(),
|
|
143
|
+
alignItems: z.string().optional(),
|
|
144
|
+
justifyContent: z.string().optional(),
|
|
145
|
+
maxWidth: TokenReferenceSchema.optional(),
|
|
146
|
+
padding: TokenReferenceSchema.optional(),
|
|
147
|
+
});
|
|
148
|
+
/**
|
|
149
|
+
* Section Pattern Token Schema
|
|
150
|
+
* Validates complete section pattern structure
|
|
151
|
+
*/
|
|
152
|
+
export const SectionPatternTokenSchema = z.object({
|
|
153
|
+
id: z.string().min(1, 'Section ID required'),
|
|
154
|
+
type: SectionTypeSchema,
|
|
155
|
+
description: z.string().min(1, 'Section description required'),
|
|
156
|
+
css: SectionCSSSchema,
|
|
157
|
+
responsive: ResponsiveConfigSchema(SectionCSSSchema),
|
|
158
|
+
tokenBindings: z.record(z.string()).refine(bindings => Object.keys(bindings).length >= 1, {
|
|
159
|
+
message: 'At least 1 token binding required',
|
|
160
|
+
}),
|
|
161
|
+
});
|
|
162
|
+
// ============================================================================
|
|
163
|
+
// Mobile Shell Token Schemas
|
|
164
|
+
// ============================================================================
|
|
165
|
+
/**
|
|
166
|
+
* Safe Area Defaults Schema
|
|
167
|
+
* Validates device-specific safe area measurements
|
|
168
|
+
*/
|
|
169
|
+
export const SafeAreaDefaultsSchema = z.object({
|
|
170
|
+
notch: z.number(),
|
|
171
|
+
dynamicIsland: z.number(),
|
|
172
|
+
homeIndicator: z.number(),
|
|
173
|
+
statusBar: z.number(),
|
|
174
|
+
});
|
|
175
|
+
/**
|
|
176
|
+
* Safe Area Edges Schema
|
|
177
|
+
* Validates which edges should respect safe area insets
|
|
178
|
+
*/
|
|
179
|
+
export const SafeAreaEdgesSchema = z.object({
|
|
180
|
+
top: z.boolean(),
|
|
181
|
+
bottom: z.boolean(),
|
|
182
|
+
horizontal: z.boolean(),
|
|
183
|
+
});
|
|
184
|
+
/**
|
|
185
|
+
* Safe Area Config Schema
|
|
186
|
+
* Validates complete safe area configuration
|
|
187
|
+
*/
|
|
188
|
+
export const SafeAreaConfigSchema = z.object({
|
|
189
|
+
top: TokenReferenceSchema,
|
|
190
|
+
bottom: TokenReferenceSchema,
|
|
191
|
+
left: TokenReferenceSchema,
|
|
192
|
+
right: TokenReferenceSchema,
|
|
193
|
+
defaults: SafeAreaDefaultsSchema,
|
|
194
|
+
edges: SafeAreaEdgesSchema,
|
|
195
|
+
});
|
|
196
|
+
/**
|
|
197
|
+
* Status Bar Config Schema
|
|
198
|
+
* Validates mobile status bar configuration
|
|
199
|
+
*/
|
|
200
|
+
export const StatusBarConfigSchema = z.object({
|
|
201
|
+
height: TokenReferenceSchema,
|
|
202
|
+
visible: z.boolean(),
|
|
203
|
+
style: z.enum(['light-content', 'dark-content', 'auto']),
|
|
204
|
+
backgroundColor: TokenReferenceSchema.optional(),
|
|
205
|
+
translucent: z.boolean(),
|
|
206
|
+
});
|
|
207
|
+
/**
|
|
208
|
+
* Navigation Bar Config Schema
|
|
209
|
+
* Validates Android navigation bar configuration
|
|
210
|
+
*/
|
|
211
|
+
export const NavigationBarConfigSchema = z.object({
|
|
212
|
+
height: TokenReferenceSchema,
|
|
213
|
+
mode: z.enum(['overlay', 'inset', 'hidden']),
|
|
214
|
+
backgroundColor: TokenReferenceSchema.optional(),
|
|
215
|
+
buttonStyle: z.enum(['light', 'dark', 'auto']),
|
|
216
|
+
});
|
|
217
|
+
/**
|
|
218
|
+
* System UI Config Schema
|
|
219
|
+
* Validates combined status bar and navigation bar configuration
|
|
220
|
+
*/
|
|
221
|
+
export const SystemUIConfigSchema = z.object({
|
|
222
|
+
statusBar: StatusBarConfigSchema,
|
|
223
|
+
navigationBar: NavigationBarConfigSchema,
|
|
224
|
+
});
|
|
225
|
+
/**
|
|
226
|
+
* Keyboard Animation Config Schema
|
|
227
|
+
* Validates keyboard animation settings
|
|
228
|
+
*/
|
|
229
|
+
export const KeyboardAnimationConfigSchema = z.object({
|
|
230
|
+
duration: z.number(),
|
|
231
|
+
easing: z.string(),
|
|
232
|
+
enabled: z.boolean(),
|
|
233
|
+
});
|
|
234
|
+
/**
|
|
235
|
+
* Keyboard Config Schema
|
|
236
|
+
* Validates keyboard behavior configuration
|
|
237
|
+
*/
|
|
238
|
+
export const KeyboardConfigSchema = z.object({
|
|
239
|
+
avoidance: z.enum(['padding', 'resize', 'position', 'none']),
|
|
240
|
+
behavior: z.enum(['height', 'position', 'padding']),
|
|
241
|
+
animation: KeyboardAnimationConfigSchema,
|
|
242
|
+
dismissMode: z.enum(['on-drag', 'interactive', 'none']),
|
|
243
|
+
});
|
|
244
|
+
/**
|
|
245
|
+
* Bottom Tab Item Config Schema
|
|
246
|
+
* Validates individual tab bar item configuration
|
|
247
|
+
*/
|
|
248
|
+
export const BottomTabItemConfigSchema = z.object({
|
|
249
|
+
minTouchTarget: TokenReferenceSchema,
|
|
250
|
+
iconSize: TokenReferenceSchema,
|
|
251
|
+
labelSize: TokenReferenceSchema,
|
|
252
|
+
spacing: TokenReferenceSchema,
|
|
253
|
+
});
|
|
254
|
+
/**
|
|
255
|
+
* Bottom Tab Config Schema
|
|
256
|
+
* Validates bottom tab bar configuration
|
|
257
|
+
*/
|
|
258
|
+
export const BottomTabConfigSchema = z.object({
|
|
259
|
+
height: TokenReferenceSchema,
|
|
260
|
+
safeAreaBottom: TokenReferenceSchema,
|
|
261
|
+
totalHeight: TokenReferenceSchema,
|
|
262
|
+
visibility: z.enum(['always', 'scroll-hide', 'route-based']),
|
|
263
|
+
maxItems: z.number(),
|
|
264
|
+
item: BottomTabItemConfigSchema,
|
|
265
|
+
});
|
|
266
|
+
/**
|
|
267
|
+
* Hit Slop Config Schema
|
|
268
|
+
* Validates expanded touch area configuration
|
|
269
|
+
*/
|
|
270
|
+
export const HitSlopConfigSchema = z.object({
|
|
271
|
+
top: z.number(),
|
|
272
|
+
bottom: z.number(),
|
|
273
|
+
left: z.number(),
|
|
274
|
+
right: z.number(),
|
|
275
|
+
});
|
|
276
|
+
/**
|
|
277
|
+
* Touch Target Config Schema
|
|
278
|
+
* Validates minimum touch target size configuration
|
|
279
|
+
*/
|
|
280
|
+
export const TouchTargetConfigSchema = z.object({
|
|
281
|
+
minSize: TokenReferenceSchema,
|
|
282
|
+
hitSlop: HitSlopConfigSchema,
|
|
283
|
+
});
|
|
284
|
+
/**
|
|
285
|
+
* Mobile Shell Token Schema
|
|
286
|
+
* Validates complete mobile shell structure with platform-specific configurations
|
|
287
|
+
*/
|
|
288
|
+
export const MobileShellTokenSchema = ShellTokenSchema.extend({
|
|
289
|
+
platform: z.literal('mobile'),
|
|
290
|
+
os: z.enum(['ios', 'android', 'cross-platform']),
|
|
291
|
+
safeArea: SafeAreaConfigSchema,
|
|
292
|
+
systemUI: SystemUIConfigSchema,
|
|
293
|
+
keyboard: KeyboardConfigSchema,
|
|
294
|
+
bottomTab: BottomTabConfigSchema.optional(),
|
|
295
|
+
touchTarget: TouchTargetConfigSchema,
|
|
296
|
+
});
|
|
297
|
+
/**
|
|
298
|
+
* Validate Shell Token (strict validation for application code)
|
|
299
|
+
*
|
|
300
|
+
* @param data - Unknown data to validate
|
|
301
|
+
* @returns Validated ShellToken
|
|
302
|
+
* @throws Error if validation fails
|
|
303
|
+
*
|
|
304
|
+
* @example
|
|
305
|
+
* ```typescript
|
|
306
|
+
* const shell = validateShellToken(data);
|
|
307
|
+
* ```
|
|
308
|
+
*/
|
|
309
|
+
export function validateShellToken(data) {
|
|
310
|
+
const result = ShellTokenSchema.safeParse(data);
|
|
311
|
+
if (!result.success) {
|
|
312
|
+
throw new Error(`Shell token validation failed: ${JSON.stringify(result.error.errors.map(e => ({ path: e.path.join('.'), message: e.message })))}`);
|
|
313
|
+
}
|
|
314
|
+
return result.data;
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Validate Page Layout Token (strict validation for application code)
|
|
318
|
+
*
|
|
319
|
+
* @param data - Unknown data to validate
|
|
320
|
+
* @returns Validated PageLayoutToken
|
|
321
|
+
* @throws Error if validation fails
|
|
322
|
+
*
|
|
323
|
+
* @example
|
|
324
|
+
* ```typescript
|
|
325
|
+
* const page = validatePageLayoutToken(data);
|
|
326
|
+
* ```
|
|
327
|
+
*/
|
|
328
|
+
export function validatePageLayoutToken(data) {
|
|
329
|
+
const result = PageLayoutTokenSchema.safeParse(data);
|
|
330
|
+
if (!result.success) {
|
|
331
|
+
throw new Error(`Page layout token validation failed: ${JSON.stringify(result.error.errors.map(e => ({ path: e.path.join('.'), message: e.message })))}`);
|
|
332
|
+
}
|
|
333
|
+
return result.data;
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Validate Section Pattern Token (strict validation for application code)
|
|
337
|
+
*
|
|
338
|
+
* @param data - Unknown data to validate
|
|
339
|
+
* @returns Validated SectionPatternToken
|
|
340
|
+
* @throws Error if validation fails
|
|
341
|
+
*
|
|
342
|
+
* @example
|
|
343
|
+
* ```typescript
|
|
344
|
+
* const section = validateSectionPatternToken(data);
|
|
345
|
+
* ```
|
|
346
|
+
*/
|
|
347
|
+
export function validateSectionPatternToken(data) {
|
|
348
|
+
const result = SectionPatternTokenSchema.safeParse(data);
|
|
349
|
+
if (!result.success) {
|
|
350
|
+
throw new Error(`Section pattern token validation failed: ${JSON.stringify(result.error.errors.map(e => ({ path: e.path.join('.'), message: e.message })))}`);
|
|
351
|
+
}
|
|
352
|
+
return result.data;
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Validate Token Reference format
|
|
356
|
+
*
|
|
357
|
+
* @param data - Unknown data to validate
|
|
358
|
+
* @returns Validated TokenReference
|
|
359
|
+
* @throws Error if validation fails
|
|
360
|
+
*
|
|
361
|
+
* @example
|
|
362
|
+
* ```typescript
|
|
363
|
+
* const ref = validateTokenReference("atomic.spacing.16");
|
|
364
|
+
* ```
|
|
365
|
+
*/
|
|
366
|
+
export function validateTokenReference(data) {
|
|
367
|
+
const result = TokenReferenceSchema.safeParse(data);
|
|
368
|
+
if (!result.success) {
|
|
369
|
+
throw new Error(`Token reference validation failed: ${JSON.stringify(result.error.errors.map(e => ({ path: e.path.join('.'), message: e.message })))}`);
|
|
370
|
+
}
|
|
371
|
+
return result.data;
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Validate Mobile Shell Token (strict validation for application code)
|
|
375
|
+
*
|
|
376
|
+
* @param token - Mobile shell token to validate
|
|
377
|
+
* @returns Validated MobileShellToken
|
|
378
|
+
* @throws Error if validation fails with detailed error messages
|
|
379
|
+
*
|
|
380
|
+
* @example
|
|
381
|
+
* ```typescript
|
|
382
|
+
* import { SHELL_MOBILE_APP } from './mobile-shells.js';
|
|
383
|
+
* import { validateMobileShellToken } from './layout-validation.js';
|
|
384
|
+
*
|
|
385
|
+
* try {
|
|
386
|
+
* const validated = validateMobileShellToken(SHELL_MOBILE_APP);
|
|
387
|
+
* console.log('Valid mobile shell token');
|
|
388
|
+
* } catch (error) {
|
|
389
|
+
* console.error('Invalid token:', error.message);
|
|
390
|
+
* }
|
|
391
|
+
* ```
|
|
392
|
+
*/
|
|
393
|
+
export function validateMobileShellToken(token) {
|
|
394
|
+
const result = MobileShellTokenSchema.safeParse(token);
|
|
395
|
+
if (!result.success) {
|
|
396
|
+
throw new Error(`Mobile shell token validation failed: ${JSON.stringify(result.error.errors.map(e => ({ path: e.path.join('.'), message: e.message })))}`);
|
|
397
|
+
}
|
|
398
|
+
return result.data;
|
|
399
|
+
}
|
|
400
|
+
// ============================================================================
|
|
401
|
+
// LLM-Friendly Validation (Lenient - for LLM Input)
|
|
402
|
+
// ============================================================================
|
|
403
|
+
/**
|
|
404
|
+
* LLM Shell Input Schema (lenient - only required fields)
|
|
405
|
+
* Allows LLMs to provide minimal input
|
|
406
|
+
*/
|
|
407
|
+
export const LLMShellInputSchema = z.object({
|
|
408
|
+
id: z.string().min(1, 'Shell ID required'),
|
|
409
|
+
platform: z.enum(['web', 'mobile', 'desktop']),
|
|
410
|
+
regions: z.array(ShellRegionSchema).min(1, 'At least one region required'),
|
|
411
|
+
});
|
|
412
|
+
/**
|
|
413
|
+
* LLM Page Input Schema (lenient - only required fields)
|
|
414
|
+
*/
|
|
415
|
+
export const LLMPageInputSchema = z.object({
|
|
416
|
+
id: z.string().min(1, 'Page ID required'),
|
|
417
|
+
purpose: PagePurposeSchema,
|
|
418
|
+
sections: z.array(SectionSlotSchema).min(1, 'At least one section required'),
|
|
419
|
+
});
|
|
420
|
+
/**
|
|
421
|
+
* LLM Section Input Schema (lenient - only required fields)
|
|
422
|
+
*/
|
|
423
|
+
export const LLMSectionInputSchema = z.object({
|
|
424
|
+
id: z.string().min(1, 'Section ID required'),
|
|
425
|
+
type: SectionTypeSchema,
|
|
426
|
+
css: SectionCSSSchema,
|
|
427
|
+
});
|
|
428
|
+
/**
|
|
429
|
+
* Validate LLM Shell Input (lenient validation for LLM-generated data)
|
|
430
|
+
*
|
|
431
|
+
* @param data - Unknown data from LLM
|
|
432
|
+
* @returns Partial ShellToken with only required fields
|
|
433
|
+
* @throws Error if validation fails with helpful messages
|
|
434
|
+
*
|
|
435
|
+
* @example
|
|
436
|
+
* ```typescript
|
|
437
|
+
* const partialShell = validateLLMShellInput(llmData);
|
|
438
|
+
* ```
|
|
439
|
+
*/
|
|
440
|
+
export function validateLLMShellInput(data) {
|
|
441
|
+
const result = LLMShellInputSchema.safeParse(data);
|
|
442
|
+
if (!result.success) {
|
|
443
|
+
const errors = result.error.errors.map(e => ({
|
|
444
|
+
path: e.path.join('.'),
|
|
445
|
+
message: e.message,
|
|
446
|
+
}));
|
|
447
|
+
throw new Error(`LLM shell input validation failed. Please provide: id (string), platform (web/mobile/desktop), regions (array). Errors: ${JSON.stringify(errors)}`);
|
|
448
|
+
}
|
|
449
|
+
return result.data;
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* Validate LLM Page Input (lenient validation for LLM-generated data)
|
|
453
|
+
*
|
|
454
|
+
* @param data - Unknown data from LLM
|
|
455
|
+
* @returns Partial PageLayoutToken with only required fields
|
|
456
|
+
* @throws Error if validation fails with helpful messages
|
|
457
|
+
*
|
|
458
|
+
* @example
|
|
459
|
+
* ```typescript
|
|
460
|
+
* const partialPage = validateLLMPageInput(llmData);
|
|
461
|
+
* ```
|
|
462
|
+
*/
|
|
463
|
+
export function validateLLMPageInput(data) {
|
|
464
|
+
const result = LLMPageInputSchema.safeParse(data);
|
|
465
|
+
if (!result.success) {
|
|
466
|
+
const errors = result.error.errors.map(e => ({
|
|
467
|
+
path: e.path.join('.'),
|
|
468
|
+
message: e.message,
|
|
469
|
+
}));
|
|
470
|
+
throw new Error(`LLM page input validation failed. Please provide: id (string), purpose (job/resource/dashboard/etc), sections (array). Errors: ${JSON.stringify(errors)}`);
|
|
471
|
+
}
|
|
472
|
+
return result.data;
|
|
473
|
+
}
|
|
474
|
+
/**
|
|
475
|
+
* Validate LLM Section Input (lenient validation for LLM-generated data)
|
|
476
|
+
*
|
|
477
|
+
* @param data - Unknown data from LLM
|
|
478
|
+
* @returns Partial SectionPatternToken with only required fields
|
|
479
|
+
* @throws Error if validation fails with helpful messages
|
|
480
|
+
*
|
|
481
|
+
* @example
|
|
482
|
+
* ```typescript
|
|
483
|
+
* const partialSection = validateLLMSectionInput(llmData);
|
|
484
|
+
* ```
|
|
485
|
+
*/
|
|
486
|
+
export function validateLLMSectionInput(data) {
|
|
487
|
+
const result = LLMSectionInputSchema.safeParse(data);
|
|
488
|
+
if (!result.success) {
|
|
489
|
+
const errors = result.error.errors.map(e => ({
|
|
490
|
+
path: e.path.join('.'),
|
|
491
|
+
message: e.message,
|
|
492
|
+
}));
|
|
493
|
+
throw new Error(`LLM section input validation failed. Please provide: id (string), type (grid/flex/split/stack/container), css (object). Errors: ${JSON.stringify(errors)}`);
|
|
494
|
+
}
|
|
495
|
+
return result.data;
|
|
496
|
+
}
|
|
497
|
+
// ============================================================================
|
|
498
|
+
// Circular Reference Detection
|
|
499
|
+
// ============================================================================
|
|
500
|
+
/**
|
|
501
|
+
* Detect circular references in token hierarchy
|
|
502
|
+
*
|
|
503
|
+
* Checks if a token references itself directly or indirectly.
|
|
504
|
+
* A circular reference occurs when token.id appears in any of its own token references
|
|
505
|
+
* (excluding the id field itself).
|
|
506
|
+
*
|
|
507
|
+
* @param token - Shell, Page, or Section token to check
|
|
508
|
+
* @returns true if no circular references found, false otherwise
|
|
509
|
+
*
|
|
510
|
+
* @example
|
|
511
|
+
* ```typescript
|
|
512
|
+
* const hasNoCircularRefs = detectCircularRefs(shellToken);
|
|
513
|
+
* if (!hasNoCircularRefs) {
|
|
514
|
+
* console.error('Circular reference detected!');
|
|
515
|
+
* }
|
|
516
|
+
* ```
|
|
517
|
+
*/
|
|
518
|
+
export function detectCircularRefs(token) {
|
|
519
|
+
/**
|
|
520
|
+
* Extract all token references from an object recursively
|
|
521
|
+
* Excludes the 'id' field to avoid false positives
|
|
522
|
+
*/
|
|
523
|
+
function extractTokenReferences(obj, excludeIdField = true) {
|
|
524
|
+
const refs = [];
|
|
525
|
+
if (typeof obj === 'string' && /^[a-z]+\.[a-z-]+(\.[a-z0-9-]+)*$/.test(obj)) {
|
|
526
|
+
refs.push(obj);
|
|
527
|
+
}
|
|
528
|
+
else if (typeof obj === 'object' && obj !== null) {
|
|
529
|
+
const entries = Object.entries(obj);
|
|
530
|
+
for (const [key, value] of entries) {
|
|
531
|
+
// Skip 'id' field at the root level to avoid false positives
|
|
532
|
+
if (excludeIdField && key === 'id') {
|
|
533
|
+
continue;
|
|
534
|
+
}
|
|
535
|
+
refs.push(...extractTokenReferences(value, false));
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
return refs;
|
|
539
|
+
}
|
|
540
|
+
// Extract all token references from the token (excluding the id field itself)
|
|
541
|
+
const refs = extractTokenReferences(token);
|
|
542
|
+
// Check if any reference matches the token's own ID
|
|
543
|
+
// This would indicate a direct circular reference
|
|
544
|
+
for (const ref of refs) {
|
|
545
|
+
if (ref === token.id || ref.startsWith(`${token.id}.`)) {
|
|
546
|
+
return false; // Circular reference detected
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
return true; // No circular references
|
|
550
|
+
}
|
|
551
|
+
/**
|
|
552
|
+
* Validate complete layout token hierarchy
|
|
553
|
+
*
|
|
554
|
+
* Checks:
|
|
555
|
+
* - All tokens pass schema validation
|
|
556
|
+
* - No circular references exist
|
|
557
|
+
* - All token references point to valid tokens
|
|
558
|
+
*
|
|
559
|
+
* @param tokens - Collection of all layout tokens
|
|
560
|
+
* @returns Validation result
|
|
561
|
+
*
|
|
562
|
+
* @example
|
|
563
|
+
* ```typescript
|
|
564
|
+
* const result = validateLayoutHierarchy({ shells, pages, sections });
|
|
565
|
+
* if (!result.valid) {
|
|
566
|
+
* console.error('Hierarchy validation failed:', result.errors);
|
|
567
|
+
* }
|
|
568
|
+
* ```
|
|
569
|
+
*/
|
|
570
|
+
export function validateLayoutHierarchy(tokens) {
|
|
571
|
+
const errors = [];
|
|
572
|
+
// Step 1: Validate all tokens pass schema validation
|
|
573
|
+
try {
|
|
574
|
+
tokens.shells.forEach(shell => validateShellToken(shell));
|
|
575
|
+
tokens.pages.forEach(page => validatePageLayoutToken(page));
|
|
576
|
+
tokens.sections.forEach(section => validateSectionPatternToken(section));
|
|
577
|
+
}
|
|
578
|
+
catch (error) {
|
|
579
|
+
errors.push(`Schema validation failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
580
|
+
}
|
|
581
|
+
// Step 2: Check for circular references
|
|
582
|
+
const allTokens = [...tokens.shells, ...tokens.pages, ...tokens.sections];
|
|
583
|
+
for (const token of allTokens) {
|
|
584
|
+
if (!detectCircularRefs(token)) {
|
|
585
|
+
errors.push(`Circular reference detected in token: ${token.id}`);
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
// Step 3: Validate token references point to valid tokens
|
|
589
|
+
// Check page section references
|
|
590
|
+
for (const page of tokens.pages) {
|
|
591
|
+
for (const section of page.sections) {
|
|
592
|
+
const sectionExists = tokens.sections.some(s => s.id === section.pattern);
|
|
593
|
+
if (!sectionExists) {
|
|
594
|
+
errors.push(`Page "${page.id}" references non-existent section pattern: ${section.pattern}`);
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
return {
|
|
599
|
+
valid: errors.length === 0,
|
|
600
|
+
errors: errors.length > 0 ? errors : undefined,
|
|
601
|
+
};
|
|
602
|
+
}
|
|
603
|
+
/**
|
|
604
|
+
* Safe validation with result (does not throw)
|
|
605
|
+
*
|
|
606
|
+
* @param data - Data to validate
|
|
607
|
+
* @param schema - Zod schema to use
|
|
608
|
+
* @returns Validation result
|
|
609
|
+
*
|
|
610
|
+
* @example
|
|
611
|
+
* ```typescript
|
|
612
|
+
* const result = safeValidate(data, ShellTokenSchema);
|
|
613
|
+
* if (!result.valid) {
|
|
614
|
+
* console.error('Validation errors:', result.errors);
|
|
615
|
+
* }
|
|
616
|
+
* ```
|
|
617
|
+
*/
|
|
618
|
+
export function safeValidate(data, schema) {
|
|
619
|
+
const result = schema.safeParse(data);
|
|
620
|
+
if (!result.success) {
|
|
621
|
+
return {
|
|
622
|
+
valid: false,
|
|
623
|
+
errors: result.error.errors.map(e => `${e.path.join('.')}: ${e.message}`),
|
|
624
|
+
};
|
|
625
|
+
}
|
|
626
|
+
return { valid: true };
|
|
627
|
+
}
|
|
628
|
+
//# sourceMappingURL=layout-validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout-validation.js","sourceRoot":"","sources":["../src/layout-validation.ts"],"names":[],"mappings":"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"}
|