@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.
Files changed (254) hide show
  1. package/README.md +758 -0
  2. package/dist/blueprint.d.ts +44 -0
  3. package/dist/blueprint.d.ts.map +1 -0
  4. package/dist/blueprint.js +163 -0
  5. package/dist/blueprint.js.map +1 -0
  6. package/dist/component-schemas.d.ts +78 -0
  7. package/dist/component-schemas.d.ts.map +1 -0
  8. package/dist/component-schemas.js +1037 -0
  9. package/dist/component-schemas.js.map +1 -0
  10. package/dist/css-generator.d.ts +42 -0
  11. package/dist/css-generator.d.ts.map +1 -0
  12. package/dist/css-generator.js +339 -0
  13. package/dist/css-generator.js.map +1 -0
  14. package/dist/icon-library.d.ts +109 -0
  15. package/dist/icon-library.d.ts.map +1 -0
  16. package/dist/icon-library.js +204 -0
  17. package/dist/icon-library.js.map +1 -0
  18. package/dist/index.d.ts +36 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +51 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/layout-css-generator.d.ts +158 -0
  23. package/dist/layout-css-generator.d.ts.map +1 -0
  24. package/dist/layout-css-generator.js +901 -0
  25. package/dist/layout-css-generator.js.map +1 -0
  26. package/dist/layout-resolver.d.ts +92 -0
  27. package/dist/layout-resolver.d.ts.map +1 -0
  28. package/dist/layout-resolver.js +275 -0
  29. package/dist/layout-resolver.js.map +1 -0
  30. package/dist/layout-tokens/index.d.ts +16 -0
  31. package/dist/layout-tokens/index.d.ts.map +1 -0
  32. package/dist/layout-tokens/index.js +16 -0
  33. package/dist/layout-tokens/index.js.map +1 -0
  34. package/dist/layout-tokens/keyboard.d.ts +254 -0
  35. package/dist/layout-tokens/keyboard.d.ts.map +1 -0
  36. package/dist/layout-tokens/keyboard.js +407 -0
  37. package/dist/layout-tokens/keyboard.js.map +1 -0
  38. package/dist/layout-tokens/mobile-shells.d.ts +78 -0
  39. package/dist/layout-tokens/mobile-shells.d.ts.map +1 -0
  40. package/dist/layout-tokens/mobile-shells.js +635 -0
  41. package/dist/layout-tokens/mobile-shells.js.map +1 -0
  42. package/dist/layout-tokens/pages.d.ts +100 -0
  43. package/dist/layout-tokens/pages.d.ts.map +1 -0
  44. package/dist/layout-tokens/pages.js +576 -0
  45. package/dist/layout-tokens/pages.js.map +1 -0
  46. package/dist/layout-tokens/responsive.d.ts +109 -0
  47. package/dist/layout-tokens/responsive.d.ts.map +1 -0
  48. package/dist/layout-tokens/responsive.js +167 -0
  49. package/dist/layout-tokens/responsive.js.map +1 -0
  50. package/dist/layout-tokens/safe-area.d.ts +156 -0
  51. package/dist/layout-tokens/safe-area.d.ts.map +1 -0
  52. package/dist/layout-tokens/safe-area.js +316 -0
  53. package/dist/layout-tokens/safe-area.js.map +1 -0
  54. package/dist/layout-tokens/sections-advanced.d.ts +277 -0
  55. package/dist/layout-tokens/sections-advanced.d.ts.map +1 -0
  56. package/dist/layout-tokens/sections-advanced.js +593 -0
  57. package/dist/layout-tokens/sections-advanced.js.map +1 -0
  58. package/dist/layout-tokens/sections.d.ts +137 -0
  59. package/dist/layout-tokens/sections.d.ts.map +1 -0
  60. package/dist/layout-tokens/sections.js +694 -0
  61. package/dist/layout-tokens/sections.js.map +1 -0
  62. package/dist/layout-tokens/shells.d.ts +77 -0
  63. package/dist/layout-tokens/shells.d.ts.map +1 -0
  64. package/dist/layout-tokens/shells.js +408 -0
  65. package/dist/layout-tokens/shells.js.map +1 -0
  66. package/dist/layout-tokens/touch-target.d.ts +119 -0
  67. package/dist/layout-tokens/touch-target.d.ts.map +1 -0
  68. package/dist/layout-tokens/touch-target.js +156 -0
  69. package/dist/layout-tokens/touch-target.js.map +1 -0
  70. package/dist/layout-tokens/types.d.ts +632 -0
  71. package/dist/layout-tokens/types.d.ts.map +1 -0
  72. package/dist/layout-tokens/types.js +49 -0
  73. package/dist/layout-tokens/types.js.map +1 -0
  74. package/dist/layout-validation.d.ts +1547 -0
  75. package/dist/layout-validation.d.ts.map +1 -0
  76. package/dist/layout-validation.js +628 -0
  77. package/dist/layout-validation.js.map +1 -0
  78. package/dist/render.d.ts +23 -0
  79. package/dist/render.d.ts.map +1 -0
  80. package/dist/render.js +244 -0
  81. package/dist/render.js.map +1 -0
  82. package/dist/schema-validation.d.ts +208 -0
  83. package/dist/schema-validation.d.ts.map +1 -0
  84. package/dist/schema-validation.js +205 -0
  85. package/dist/schema-validation.js.map +1 -0
  86. package/dist/screen-generation/generators/css-in-js-generator.d.ts +82 -0
  87. package/dist/screen-generation/generators/css-in-js-generator.d.ts.map +1 -0
  88. package/dist/screen-generation/generators/css-in-js-generator.js +335 -0
  89. package/dist/screen-generation/generators/css-in-js-generator.js.map +1 -0
  90. package/dist/screen-generation/generators/index.d.ts +13 -0
  91. package/dist/screen-generation/generators/index.d.ts.map +1 -0
  92. package/dist/screen-generation/generators/index.js +32 -0
  93. package/dist/screen-generation/generators/index.js.map +1 -0
  94. package/dist/screen-generation/generators/react-generator.d.ts +100 -0
  95. package/dist/screen-generation/generators/react-generator.d.ts.map +1 -0
  96. package/dist/screen-generation/generators/react-generator.js +379 -0
  97. package/dist/screen-generation/generators/react-generator.js.map +1 -0
  98. package/dist/screen-generation/generators/tailwind-generator.d.ts +105 -0
  99. package/dist/screen-generation/generators/tailwind-generator.d.ts.map +1 -0
  100. package/dist/screen-generation/generators/tailwind-generator.js +355 -0
  101. package/dist/screen-generation/generators/tailwind-generator.js.map +1 -0
  102. package/dist/screen-generation/generators/types.d.ts +136 -0
  103. package/dist/screen-generation/generators/types.d.ts.map +1 -0
  104. package/dist/screen-generation/generators/types.js +18 -0
  105. package/dist/screen-generation/generators/types.js.map +1 -0
  106. package/dist/screen-generation/generators/utils.d.ts +187 -0
  107. package/dist/screen-generation/generators/utils.d.ts.map +1 -0
  108. package/dist/screen-generation/generators/utils.js +312 -0
  109. package/dist/screen-generation/generators/utils.js.map +1 -0
  110. package/dist/screen-generation/index.d.ts +14 -0
  111. package/dist/screen-generation/index.d.ts.map +1 -0
  112. package/dist/screen-generation/index.js +33 -0
  113. package/dist/screen-generation/index.js.map +1 -0
  114. package/dist/screen-generation/resolver/component-resolver.d.ts +157 -0
  115. package/dist/screen-generation/resolver/component-resolver.d.ts.map +1 -0
  116. package/dist/screen-generation/resolver/component-resolver.js +295 -0
  117. package/dist/screen-generation/resolver/component-resolver.js.map +1 -0
  118. package/dist/screen-generation/resolver/index.d.ts +10 -0
  119. package/dist/screen-generation/resolver/index.d.ts.map +1 -0
  120. package/dist/screen-generation/resolver/index.js +46 -0
  121. package/dist/screen-generation/resolver/index.js.map +1 -0
  122. package/dist/screen-generation/resolver/layout-resolver.d.ts +155 -0
  123. package/dist/screen-generation/resolver/layout-resolver.d.ts.map +1 -0
  124. package/dist/screen-generation/resolver/layout-resolver.js +193 -0
  125. package/dist/screen-generation/resolver/layout-resolver.js.map +1 -0
  126. package/dist/screen-generation/resolver/screen-resolver.d.ts +174 -0
  127. package/dist/screen-generation/resolver/screen-resolver.d.ts.map +1 -0
  128. package/dist/screen-generation/resolver/screen-resolver.js +373 -0
  129. package/dist/screen-generation/resolver/screen-resolver.js.map +1 -0
  130. package/dist/screen-generation/resolver/token-resolver.d.ts +170 -0
  131. package/dist/screen-generation/resolver/token-resolver.d.ts.map +1 -0
  132. package/dist/screen-generation/resolver/token-resolver.js +260 -0
  133. package/dist/screen-generation/resolver/token-resolver.js.map +1 -0
  134. package/dist/screen-generation/types.d.ts +116 -0
  135. package/dist/screen-generation/types.d.ts.map +1 -0
  136. package/dist/screen-generation/types.js +33 -0
  137. package/dist/screen-generation/types.js.map +1 -0
  138. package/dist/screen-generation/validators.d.ts +286 -0
  139. package/dist/screen-generation/validators.d.ts.map +1 -0
  140. package/dist/screen-generation/validators.js +323 -0
  141. package/dist/screen-generation/validators.js.map +1 -0
  142. package/dist/screen-templates/__tests__/registry.test.d.ts +6 -0
  143. package/dist/screen-templates/__tests__/registry.test.d.ts.map +1 -0
  144. package/dist/screen-templates/__tests__/registry.test.js +247 -0
  145. package/dist/screen-templates/__tests__/registry.test.js.map +1 -0
  146. package/dist/screen-templates/__tests__/templates.test.d.ts +6 -0
  147. package/dist/screen-templates/__tests__/templates.test.d.ts.map +1 -0
  148. package/dist/screen-templates/__tests__/templates.test.js +179 -0
  149. package/dist/screen-templates/__tests__/templates.test.js.map +1 -0
  150. package/dist/screen-templates/index.d.ts +39 -0
  151. package/dist/screen-templates/index.d.ts.map +1 -0
  152. package/dist/screen-templates/index.js +79 -0
  153. package/dist/screen-templates/index.js.map +1 -0
  154. package/dist/screen-templates/registry.d.ts +177 -0
  155. package/dist/screen-templates/registry.d.ts.map +1 -0
  156. package/dist/screen-templates/registry.js +274 -0
  157. package/dist/screen-templates/registry.js.map +1 -0
  158. package/dist/screen-templates/templates/account/index.d.ts +6 -0
  159. package/dist/screen-templates/templates/account/index.d.ts.map +1 -0
  160. package/dist/screen-templates/templates/account/index.js +6 -0
  161. package/dist/screen-templates/templates/account/index.js.map +1 -0
  162. package/dist/screen-templates/templates/account/profile.d.ts +23 -0
  163. package/dist/screen-templates/templates/account/profile.d.ts.map +1 -0
  164. package/dist/screen-templates/templates/account/profile.js +249 -0
  165. package/dist/screen-templates/templates/account/profile.js.map +1 -0
  166. package/dist/screen-templates/templates/auth/forgot-password.d.ts +23 -0
  167. package/dist/screen-templates/templates/auth/forgot-password.d.ts.map +1 -0
  168. package/dist/screen-templates/templates/auth/forgot-password.js +203 -0
  169. package/dist/screen-templates/templates/auth/forgot-password.js.map +1 -0
  170. package/dist/screen-templates/templates/auth/index.d.ts +9 -0
  171. package/dist/screen-templates/templates/auth/index.d.ts.map +1 -0
  172. package/dist/screen-templates/templates/auth/index.js +9 -0
  173. package/dist/screen-templates/templates/auth/index.js.map +1 -0
  174. package/dist/screen-templates/templates/auth/login.d.ts +24 -0
  175. package/dist/screen-templates/templates/auth/login.d.ts.map +1 -0
  176. package/dist/screen-templates/templates/auth/login.js +254 -0
  177. package/dist/screen-templates/templates/auth/login.js.map +1 -0
  178. package/dist/screen-templates/templates/auth/signup.d.ts +24 -0
  179. package/dist/screen-templates/templates/auth/signup.d.ts.map +1 -0
  180. package/dist/screen-templates/templates/auth/signup.js +315 -0
  181. package/dist/screen-templates/templates/auth/signup.js.map +1 -0
  182. package/dist/screen-templates/templates/auth/verification.d.ts +23 -0
  183. package/dist/screen-templates/templates/auth/verification.d.ts.map +1 -0
  184. package/dist/screen-templates/templates/auth/verification.js +239 -0
  185. package/dist/screen-templates/templates/auth/verification.js.map +1 -0
  186. package/dist/screen-templates/templates/feedback/confirmation.d.ts +9 -0
  187. package/dist/screen-templates/templates/feedback/confirmation.d.ts.map +1 -0
  188. package/dist/screen-templates/templates/feedback/confirmation.js +107 -0
  189. package/dist/screen-templates/templates/feedback/confirmation.js.map +1 -0
  190. package/dist/screen-templates/templates/feedback/empty.d.ts +9 -0
  191. package/dist/screen-templates/templates/feedback/empty.d.ts.map +1 -0
  192. package/dist/screen-templates/templates/feedback/empty.js +90 -0
  193. package/dist/screen-templates/templates/feedback/empty.js.map +1 -0
  194. package/dist/screen-templates/templates/feedback/error.d.ts +9 -0
  195. package/dist/screen-templates/templates/feedback/error.d.ts.map +1 -0
  196. package/dist/screen-templates/templates/feedback/error.js +99 -0
  197. package/dist/screen-templates/templates/feedback/error.js.map +1 -0
  198. package/dist/screen-templates/templates/feedback/index.d.ts +10 -0
  199. package/dist/screen-templates/templates/feedback/index.d.ts.map +1 -0
  200. package/dist/screen-templates/templates/feedback/index.js +10 -0
  201. package/dist/screen-templates/templates/feedback/index.js.map +1 -0
  202. package/dist/screen-templates/templates/feedback/loading.d.ts +9 -0
  203. package/dist/screen-templates/templates/feedback/loading.d.ts.map +1 -0
  204. package/dist/screen-templates/templates/feedback/loading.js +77 -0
  205. package/dist/screen-templates/templates/feedback/loading.js.map +1 -0
  206. package/dist/screen-templates/templates/feedback/success.d.ts +9 -0
  207. package/dist/screen-templates/templates/feedback/success.d.ts.map +1 -0
  208. package/dist/screen-templates/templates/feedback/success.js +99 -0
  209. package/dist/screen-templates/templates/feedback/success.js.map +1 -0
  210. package/dist/screen-templates/templates/home/index.d.ts +6 -0
  211. package/dist/screen-templates/templates/home/index.d.ts.map +1 -0
  212. package/dist/screen-templates/templates/home/index.js +6 -0
  213. package/dist/screen-templates/templates/home/index.js.map +1 -0
  214. package/dist/screen-templates/templates/home/landing.d.ts +24 -0
  215. package/dist/screen-templates/templates/home/landing.d.ts.map +1 -0
  216. package/dist/screen-templates/templates/home/landing.js +197 -0
  217. package/dist/screen-templates/templates/home/landing.js.map +1 -0
  218. package/dist/screen-templates/templates/settings/index.d.ts +6 -0
  219. package/dist/screen-templates/templates/settings/index.d.ts.map +1 -0
  220. package/dist/screen-templates/templates/settings/index.js +6 -0
  221. package/dist/screen-templates/templates/settings/index.js.map +1 -0
  222. package/dist/screen-templates/templates/settings/preferences.d.ts +24 -0
  223. package/dist/screen-templates/templates/settings/preferences.d.ts.map +1 -0
  224. package/dist/screen-templates/templates/settings/preferences.js +265 -0
  225. package/dist/screen-templates/templates/settings/preferences.js.map +1 -0
  226. package/dist/screen-templates/types.d.ts +229 -0
  227. package/dist/screen-templates/types.d.ts.map +1 -0
  228. package/dist/screen-templates/types.js +7 -0
  229. package/dist/screen-templates/types.js.map +1 -0
  230. package/dist/theme-v2.d.ts +228 -0
  231. package/dist/theme-v2.d.ts.map +1 -0
  232. package/dist/theme-v2.js +158 -0
  233. package/dist/theme-v2.js.map +1 -0
  234. package/dist/theme.d.ts +60 -0
  235. package/dist/theme.d.ts.map +1 -0
  236. package/dist/theme.js +76 -0
  237. package/dist/theme.js.map +1 -0
  238. package/dist/token-resolver.d.ts +69 -0
  239. package/dist/token-resolver.d.ts.map +1 -0
  240. package/dist/token-resolver.js +122 -0
  241. package/dist/token-resolver.js.map +1 -0
  242. package/dist/token-validation.d.ts +432 -0
  243. package/dist/token-validation.d.ts.map +1 -0
  244. package/dist/token-validation.js +140 -0
  245. package/dist/token-validation.js.map +1 -0
  246. package/dist/tokens.d.ts +158 -0
  247. package/dist/tokens.d.ts.map +1 -0
  248. package/dist/tokens.js +10 -0
  249. package/dist/tokens.js.map +1 -0
  250. package/dist/types.d.ts +77 -0
  251. package/dist/types.d.ts.map +1 -0
  252. package/dist/types.js +7 -0
  253. package/dist/types.js.map +1 -0
  254. 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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"}