@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,205 @@
1
+ /**
2
+ * @tekton-ui/core - Schema Validation Utilities
3
+ * Zod-based runtime validation for component schemas
4
+ * [SPEC-COMPONENT-001-B] [TAG-004]
5
+ */
6
+ import { z } from 'zod';
7
+ import { ALL_COMPONENTS } from './component-schemas.js';
8
+ // ============================================================================
9
+ // Zod Schemas
10
+ // ============================================================================
11
+ /**
12
+ * PropDefinition Zod Schema
13
+ */
14
+ export const PropDefinitionSchema = z.object({
15
+ name: z.string().min(1, 'Property name is required'),
16
+ type: z.string().min(1, 'Property type is required'),
17
+ required: z.boolean(),
18
+ description: z.string().min(1, 'Property description is required'),
19
+ defaultValue: z.unknown().optional(),
20
+ options: z.array(z.string()).optional(),
21
+ });
22
+ /**
23
+ * A11yRequirements Zod Schema
24
+ */
25
+ export const A11yRequirementsSchema = z.object({
26
+ role: z.string().min(1, 'ARIA role is required'),
27
+ wcag: z.string().includes('2.1', { message: 'WCAG 2.1 compliance required' }),
28
+ ariaAttributes: z.array(z.string()).optional(),
29
+ keyboard: z.array(z.string()).optional(),
30
+ focus: z.string().optional(),
31
+ screenReader: z.string().optional(),
32
+ });
33
+ /**
34
+ * TokenBindings Zod Schema
35
+ */
36
+ export const TokenBindingsSchema = z
37
+ .record(z.string(), z.string())
38
+ .refine(bindings => Object.keys(bindings).length >= 2, {
39
+ message: 'At least 2 token bindings required per component',
40
+ });
41
+ /**
42
+ * ComponentSchema Zod Schema
43
+ */
44
+ export const ComponentSchemaZod = z.object({
45
+ type: z.string().min(1, 'Component type is required'),
46
+ category: z.enum(['primitive', 'composed'], {
47
+ errorMap: () => ({ message: 'Category must be "primitive" or "composed"' }),
48
+ }),
49
+ props: z.array(PropDefinitionSchema).min(1, 'At least one prop is required'),
50
+ tokenBindings: TokenBindingsSchema,
51
+ a11y: A11yRequirementsSchema,
52
+ description: z.string().optional(),
53
+ });
54
+ /**
55
+ * Validate a single component schema
56
+ */
57
+ export function validateComponentSchema(schema) {
58
+ try {
59
+ ComponentSchemaZod.parse(schema);
60
+ return { valid: true };
61
+ }
62
+ catch (error) {
63
+ if (error instanceof z.ZodError) {
64
+ const errors = error.errors.map(err => `${err.path.join('.')}: ${err.message}`);
65
+ return { valid: false, errors };
66
+ }
67
+ return { valid: false, errors: ['Unknown validation error'] };
68
+ }
69
+ }
70
+ /**
71
+ * Validate all component schemas
72
+ */
73
+ export function validateAllSchemas() {
74
+ const errors = [];
75
+ const warnings = [];
76
+ ALL_COMPONENTS.forEach(schema => {
77
+ const result = validateComponentSchema(schema);
78
+ if (!result.valid && result.errors) {
79
+ errors.push(`${schema.type}: ${result.errors.join(', ')}`);
80
+ }
81
+ });
82
+ // Check for duplicate component types
83
+ const types = ALL_COMPONENTS.map(c => c.type);
84
+ const duplicates = types.filter((type, index) => types.indexOf(type) !== index);
85
+ if (duplicates.length > 0) {
86
+ errors.push(`Duplicate component types found: ${duplicates.join(', ')}`);
87
+ }
88
+ // Check for expected component count
89
+ if (ALL_COMPONENTS.length !== 20) {
90
+ warnings.push(`Expected 20 components, found ${ALL_COMPONENTS.length}`);
91
+ }
92
+ const primitiveCount = ALL_COMPONENTS.filter(c => c.category === 'primitive').length;
93
+ const composedCount = ALL_COMPONENTS.filter(c => c.category === 'composed').length;
94
+ if (primitiveCount !== 10) {
95
+ warnings.push(`Expected 10 primitive components, found ${primitiveCount}`);
96
+ }
97
+ if (composedCount !== 10) {
98
+ warnings.push(`Expected 10 composed components, found ${composedCount}`);
99
+ }
100
+ return {
101
+ valid: errors.length === 0,
102
+ errors: errors.length > 0 ? errors : undefined,
103
+ warnings: warnings.length > 0 ? warnings : undefined,
104
+ };
105
+ }
106
+ /**
107
+ * Validate prop definition
108
+ */
109
+ export function validateProp(prop) {
110
+ try {
111
+ PropDefinitionSchema.parse(prop);
112
+ return { valid: true };
113
+ }
114
+ catch (error) {
115
+ if (error instanceof z.ZodError) {
116
+ const errors = error.errors.map(err => `${err.path.join('.')}: ${err.message}`);
117
+ return { valid: false, errors };
118
+ }
119
+ return { valid: false, errors: ['Unknown validation error'] };
120
+ }
121
+ }
122
+ /**
123
+ * Validate accessibility requirements
124
+ */
125
+ export function validateA11y(a11y) {
126
+ try {
127
+ A11yRequirementsSchema.parse(a11y);
128
+ return { valid: true };
129
+ }
130
+ catch (error) {
131
+ if (error instanceof z.ZodError) {
132
+ const errors = error.errors.map(err => `${err.path.join('.')}: ${err.message}`);
133
+ return { valid: false, errors };
134
+ }
135
+ return { valid: false, errors: ['Unknown validation error'] };
136
+ }
137
+ }
138
+ /**
139
+ * Validate token bindings format
140
+ */
141
+ export function validateTokenBindings(bindings) {
142
+ const warnings = [];
143
+ try {
144
+ TokenBindingsSchema.parse(bindings);
145
+ // Check for template variable usage
146
+ const hasTemplateVars = Object.values(bindings).some(value => /\{[a-zA-Z]+\}/.test(value));
147
+ if (!hasTemplateVars) {
148
+ warnings.push('Consider using template variables like {variant} or {size}');
149
+ }
150
+ // Check for token references
151
+ const hasTokenReferences = Object.values(bindings).some(value => value.includes('semantic.') || value.includes('atomic.') || value.includes('component.'));
152
+ if (!hasTokenReferences) {
153
+ warnings.push('Token bindings should reference semantic, atomic, or component tokens');
154
+ }
155
+ return {
156
+ valid: true,
157
+ warnings: warnings.length > 0 ? warnings : undefined,
158
+ };
159
+ }
160
+ catch (error) {
161
+ if (error instanceof z.ZodError) {
162
+ const errors = error.errors.map(err => `${err.path.join('.')}: ${err.message}`);
163
+ return { valid: false, errors };
164
+ }
165
+ return { valid: false, errors: ['Unknown validation error'] };
166
+ }
167
+ }
168
+ /**
169
+ * Get component schema validation summary
170
+ */
171
+ export function getValidationSummary() {
172
+ const results = ALL_COMPONENTS.map(schema => ({
173
+ type: schema.type,
174
+ ...validateComponentSchema(schema),
175
+ }));
176
+ const validSchemas = results.filter(r => r.valid).length;
177
+ const invalidSchemas = results.filter(r => !r.valid).length;
178
+ return {
179
+ totalComponents: ALL_COMPONENTS.length,
180
+ primitiveComponents: ALL_COMPONENTS.filter(c => c.category === 'primitive').length,
181
+ composedComponents: ALL_COMPONENTS.filter(c => c.category === 'composed').length,
182
+ validSchemas,
183
+ invalidSchemas,
184
+ validationResults: results,
185
+ };
186
+ }
187
+ /**
188
+ * Assert component schema is valid (throws on invalid)
189
+ */
190
+ export function assertValidSchema(schema) {
191
+ const result = validateComponentSchema(schema);
192
+ if (!result.valid) {
193
+ throw new Error(`Invalid component schema: ${result.errors?.join(', ')}`);
194
+ }
195
+ }
196
+ /**
197
+ * Assert all schemas are valid (throws on invalid)
198
+ */
199
+ export function assertAllSchemasValid() {
200
+ const result = validateAllSchemas();
201
+ if (!result.valid) {
202
+ throw new Error(`Schema validation failed: ${result.errors?.join(', ')}`);
203
+ }
204
+ }
205
+ //# sourceMappingURL=schema-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-validation.js","sourceRoot":"","sources":["../src/schema-validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * @tekton-ui/core - CSS-in-JS Generator
3
+ * Generates styled-components or Emotion code from ResolvedScreen
4
+ * [SPEC-LAYOUT-002] [PHASE-3]
5
+ */
6
+ import type { ResolvedScreen, ResolvedComponent } from '../resolver/index.js';
7
+ import type { GeneratorOptions, GeneratorResult, StyledThemeConfig } from './types.js';
8
+ /**
9
+ * CSS-in-JS format options
10
+ */
11
+ export type CSSInJSFormat = 'styled-components' | 'emotion';
12
+ /**
13
+ * Convert CSS variables to styled-components theme
14
+ *
15
+ * Extracts design tokens from CSS variables and organizes them into
16
+ * a theme object compatible with styled-components/Emotion.
17
+ *
18
+ * @param cssVars - CSS variables from resolved screen
19
+ * @returns Theme configuration
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * const cssVars = {
24
+ * 'var(--atomic-spacing-16)': 'atomic.spacing.16',
25
+ * 'var(--semantic-color-primary)': 'semantic.color.primary'
26
+ * };
27
+ *
28
+ * const theme = convertCSSVarsToTheme(cssVars);
29
+ * // {
30
+ * // colors: { primary: 'var(--semantic-color-primary)' },
31
+ * // spacing: { '16': 'var(--atomic-spacing-16)' }
32
+ * // }
33
+ * ```
34
+ */
35
+ export declare function convertCSSVarsToTheme(cssVars: Record<string, string>): StyledThemeConfig;
36
+ /**
37
+ * Generate styled component for a resolved component
38
+ *
39
+ * @param component - Resolved component
40
+ * @param format - CSS-in-JS format
41
+ * @returns Styled component code
42
+ *
43
+ * @example
44
+ * ```typescript
45
+ * const component = {
46
+ * type: 'Button',
47
+ * tokenBindings: {
48
+ * background: 'var(--component-button-primary-background)',
49
+ * color: 'var(--component-button-primary-foreground)'
50
+ * }
51
+ * };
52
+ *
53
+ * const code = generateComponentStyles(component, 'styled-components');
54
+ * // export const StyledButton = styled.button`
55
+ * // background: ${props => props.theme.button['primary-background']};
56
+ * // color: ${props => props.theme.button['primary-foreground']};
57
+ * // `;
58
+ * ```
59
+ */
60
+ export declare function generateComponentStyles(component: ResolvedComponent, _format?: CSSInJSFormat): string;
61
+ /**
62
+ * Generate styled-components code from resolved screen
63
+ *
64
+ * Creates a complete styled-components implementation including:
65
+ * - Theme object from CSS variables
66
+ * - Styled components for each component
67
+ * - ThemeProvider wrapper
68
+ *
69
+ * @param screen - Resolved screen
70
+ * @param format - CSS-in-JS format (styled-components or emotion)
71
+ * @param options - Generator options
72
+ * @returns Generated styled-components code
73
+ *
74
+ * @example
75
+ * ```typescript
76
+ * const screen = resolveScreen(screenDefinition);
77
+ * const result = generateStyledComponents(screen, 'styled-components');
78
+ * console.log(result.code);
79
+ * ```
80
+ */
81
+ export declare function generateStyledComponents(screen: ResolvedScreen, format?: CSSInJSFormat, options?: GeneratorOptions): GeneratorResult;
82
+ //# sourceMappingURL=css-in-js-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"css-in-js-generator.d.ts","sourceRoot":"","sources":["../../../src/screen-generation/generators/css-in-js-generator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAOvF;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,mBAAmB,GAAG,SAAS,CAAC;AAM5D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,iBAAiB,CAuDxF;AA4ED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,iBAAiB,EAC5B,OAAO,GAAE,aAAmC,GAC3C,MAAM,CA0BR;AAmFD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,cAAc,EACtB,MAAM,GAAE,aAAmC,EAC3C,OAAO,GAAE,gBAAqB,GAC7B,eAAe,CAmDjB"}
@@ -0,0 +1,335 @@
1
+ /**
2
+ * @tekton-ui/core - CSS-in-JS Generator
3
+ * Generates styled-components or Emotion code from ResolvedScreen
4
+ * [SPEC-LAYOUT-002] [PHASE-3]
5
+ */
6
+ import { pascalCase, generateImports, formatCode } from './utils.js';
7
+ // ============================================================================
8
+ // Theme Generation
9
+ // ============================================================================
10
+ /**
11
+ * Convert CSS variables to styled-components theme
12
+ *
13
+ * Extracts design tokens from CSS variables and organizes them into
14
+ * a theme object compatible with styled-components/Emotion.
15
+ *
16
+ * @param cssVars - CSS variables from resolved screen
17
+ * @returns Theme configuration
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * const cssVars = {
22
+ * 'var(--atomic-spacing-16)': 'atomic.spacing.16',
23
+ * 'var(--semantic-color-primary)': 'semantic.color.primary'
24
+ * };
25
+ *
26
+ * const theme = convertCSSVarsToTheme(cssVars);
27
+ * // {
28
+ * // colors: { primary: 'var(--semantic-color-primary)' },
29
+ * // spacing: { '16': 'var(--atomic-spacing-16)' }
30
+ * // }
31
+ * ```
32
+ */
33
+ export function convertCSSVarsToTheme(cssVars) {
34
+ const theme = {
35
+ name: 'default',
36
+ colors: {},
37
+ spacing: {},
38
+ typography: {},
39
+ radii: {},
40
+ shadows: {},
41
+ custom: {},
42
+ };
43
+ for (const [cssVar, tokenRef] of Object.entries(cssVars)) {
44
+ const parts = tokenRef.split('.');
45
+ if (parts.length < 2) {
46
+ continue;
47
+ }
48
+ const [layer, category, ...rest] = parts;
49
+ const key = rest.join('-') || category;
50
+ if (layer === 'atomic' || layer === 'semantic') {
51
+ if (category === 'color' || category === 'colors') {
52
+ theme.colors[key] = cssVar;
53
+ }
54
+ else if (category === 'spacing' || category === 'space') {
55
+ theme.spacing[key] = cssVar;
56
+ }
57
+ else if (category === 'typography' || category === 'font') {
58
+ theme.typography[key] = cssVar;
59
+ }
60
+ else if (category === 'radius' || category === 'radii') {
61
+ theme.radii[key] = cssVar;
62
+ }
63
+ else if (category === 'shadow' || category === 'shadows') {
64
+ theme.shadows[key] = cssVar;
65
+ }
66
+ else {
67
+ // Custom category
68
+ if (!theme.custom) {
69
+ theme.custom = {};
70
+ }
71
+ if (!theme.custom[category]) {
72
+ theme.custom[category] = {};
73
+ }
74
+ theme.custom[category][key] = cssVar;
75
+ }
76
+ }
77
+ else if (layer === 'component') {
78
+ // Component-specific tokens go to custom
79
+ if (!theme.custom) {
80
+ theme.custom = {};
81
+ }
82
+ if (!theme.custom[category]) {
83
+ theme.custom[category] = {};
84
+ }
85
+ theme.custom[category][key] = cssVar;
86
+ }
87
+ }
88
+ return theme;
89
+ }
90
+ /**
91
+ * Generate theme object code
92
+ *
93
+ * @param theme - Theme configuration
94
+ * @returns Theme object code string
95
+ */
96
+ function generateThemeCode(theme) {
97
+ const lines = ['export const theme = {'];
98
+ // Colors
99
+ if (Object.keys(theme.colors).length > 0) {
100
+ lines.push(' colors: {');
101
+ for (const [key, value] of Object.entries(theme.colors)) {
102
+ lines.push(` '${key}': '${value}',`);
103
+ }
104
+ lines.push(' },');
105
+ }
106
+ // Spacing
107
+ if (Object.keys(theme.spacing).length > 0) {
108
+ lines.push(' spacing: {');
109
+ for (const [key, value] of Object.entries(theme.spacing)) {
110
+ lines.push(` '${key}': '${value}',`);
111
+ }
112
+ lines.push(' },');
113
+ }
114
+ // Typography
115
+ if (Object.keys(theme.typography).length > 0) {
116
+ lines.push(' typography: {');
117
+ for (const [key, value] of Object.entries(theme.typography)) {
118
+ lines.push(` '${key}': '${value}',`);
119
+ }
120
+ lines.push(' },');
121
+ }
122
+ // Radii
123
+ if (Object.keys(theme.radii).length > 0) {
124
+ lines.push(' radii: {');
125
+ for (const [key, value] of Object.entries(theme.radii)) {
126
+ lines.push(` '${key}': '${value}',`);
127
+ }
128
+ lines.push(' },');
129
+ }
130
+ // Shadows
131
+ if (Object.keys(theme.shadows).length > 0) {
132
+ lines.push(' shadows: {');
133
+ for (const [key, value] of Object.entries(theme.shadows)) {
134
+ lines.push(` '${key}': '${value}',`);
135
+ }
136
+ lines.push(' },');
137
+ }
138
+ // Custom
139
+ if (theme.custom && Object.keys(theme.custom).length > 0) {
140
+ for (const [category, tokens] of Object.entries(theme.custom)) {
141
+ lines.push(` ${category}: {`);
142
+ for (const [key, value] of Object.entries(tokens)) {
143
+ lines.push(` '${key}': '${value}',`);
144
+ }
145
+ lines.push(' },');
146
+ }
147
+ }
148
+ lines.push('};');
149
+ return lines.join('\n');
150
+ }
151
+ // ============================================================================
152
+ // Component Styles Generation
153
+ // ============================================================================
154
+ /**
155
+ * Generate styled component for a resolved component
156
+ *
157
+ * @param component - Resolved component
158
+ * @param format - CSS-in-JS format
159
+ * @returns Styled component code
160
+ *
161
+ * @example
162
+ * ```typescript
163
+ * const component = {
164
+ * type: 'Button',
165
+ * tokenBindings: {
166
+ * background: 'var(--component-button-primary-background)',
167
+ * color: 'var(--component-button-primary-foreground)'
168
+ * }
169
+ * };
170
+ *
171
+ * const code = generateComponentStyles(component, 'styled-components');
172
+ * // export const StyledButton = styled.button`
173
+ * // background: ${props => props.theme.button['primary-background']};
174
+ * // color: ${props => props.theme.button['primary-foreground']};
175
+ * // `;
176
+ * ```
177
+ */
178
+ export function generateComponentStyles(component, _format = 'styled-components') {
179
+ const componentName = pascalCase(component.type);
180
+ const styledName = `Styled${componentName}`;
181
+ // Get base HTML element
182
+ const element = getHTMLElement(component.type);
183
+ const lines = [];
184
+ // Generate styled component
185
+ lines.push(`export const ${styledName} = styled.${element}\`\``);
186
+ // Add token bindings as CSS properties
187
+ const styles = [];
188
+ for (const [prop, cssVar] of Object.entries(component.tokenBindings)) {
189
+ const cssProp = camelCaseToKebab(prop);
190
+ styles.push(` ${cssProp}: \${props => props.theme.${extractThemeKey(cssVar)}};`);
191
+ }
192
+ if (styles.length > 0) {
193
+ lines[0] = `export const ${styledName} = styled.${element}\``;
194
+ lines.push(...styles);
195
+ lines.push('`;');
196
+ }
197
+ return lines.join('\n');
198
+ }
199
+ /**
200
+ * Get HTML element for component type
201
+ *
202
+ * @param type - Component type
203
+ * @returns HTML element name
204
+ */
205
+ function getHTMLElement(type) {
206
+ const elementMap = {
207
+ Button: 'button',
208
+ Input: 'input',
209
+ Text: 'span',
210
+ Heading: 'h2',
211
+ Checkbox: 'input',
212
+ Radio: 'input',
213
+ Switch: 'button',
214
+ Slider: 'input',
215
+ Badge: 'span',
216
+ Avatar: 'img',
217
+ Card: 'div',
218
+ Modal: 'div',
219
+ Tabs: 'div',
220
+ Table: 'table',
221
+ Link: 'a',
222
+ List: 'ul',
223
+ Image: 'img',
224
+ Form: 'form',
225
+ Dropdown: 'select',
226
+ Progress: 'progress',
227
+ };
228
+ return elementMap[type] || 'div';
229
+ }
230
+ /**
231
+ * Convert camelCase to kebab-case
232
+ *
233
+ * @param str - camelCase string
234
+ * @returns kebab-case string
235
+ */
236
+ function camelCaseToKebab(str) {
237
+ return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
238
+ }
239
+ /**
240
+ * Extract theme key from CSS variable
241
+ *
242
+ * @param cssVar - CSS variable reference
243
+ * @returns Theme key path
244
+ *
245
+ * @example
246
+ * ```typescript
247
+ * extractThemeKey('var(--component-button-primary-background)');
248
+ * // → "button['primary-background']"
249
+ * ```
250
+ */
251
+ function extractThemeKey(cssVar) {
252
+ // Remove var( and )
253
+ const varName = cssVar.replace(/^var\(--/, '').replace(/\)$/, '');
254
+ const parts = varName.split('-');
255
+ if (parts.length < 2) {
256
+ return `custom['${varName}']`;
257
+ }
258
+ const [layer, category, ...rest] = parts;
259
+ if (layer === 'atomic' || layer === 'semantic') {
260
+ const key = rest.join('-');
261
+ return `${category}['${key}']`;
262
+ }
263
+ else if (layer === 'component') {
264
+ const key = rest.join('-');
265
+ return `${category}['${key}']`;
266
+ }
267
+ return `custom['${varName}']`;
268
+ }
269
+ // ============================================================================
270
+ // Main Generation Functions
271
+ // ============================================================================
272
+ /**
273
+ * Generate styled-components code from resolved screen
274
+ *
275
+ * Creates a complete styled-components implementation including:
276
+ * - Theme object from CSS variables
277
+ * - Styled components for each component
278
+ * - ThemeProvider wrapper
279
+ *
280
+ * @param screen - Resolved screen
281
+ * @param format - CSS-in-JS format (styled-components or emotion)
282
+ * @param options - Generator options
283
+ * @returns Generated styled-components code
284
+ *
285
+ * @example
286
+ * ```typescript
287
+ * const screen = resolveScreen(screenDefinition);
288
+ * const result = generateStyledComponents(screen, 'styled-components');
289
+ * console.log(result.code);
290
+ * ```
291
+ */
292
+ export function generateStyledComponents(screen, format = 'styled-components', options = {}) {
293
+ const startTime = performance.now();
294
+ const imports = {};
295
+ const code = [];
296
+ // Add imports
297
+ if (format === 'styled-components') {
298
+ imports['styled-components'] = ['default as styled'];
299
+ }
300
+ else {
301
+ imports['@emotion/styled'] = ['default as styled'];
302
+ }
303
+ imports['react'] = ['React'];
304
+ // Generate theme
305
+ const theme = convertCSSVarsToTheme(screen.cssVariables);
306
+ code.push(generateThemeCode(theme));
307
+ code.push('');
308
+ // Generate styled components for each unique component type
309
+ const generatedTypes = new Set();
310
+ for (const section of screen.sections) {
311
+ for (const component of section.components) {
312
+ if (!generatedTypes.has(component.type)) {
313
+ code.push(generateComponentStyles(component, format));
314
+ code.push('');
315
+ generatedTypes.add(component.type);
316
+ }
317
+ }
318
+ }
319
+ // Combine imports and code
320
+ const importCode = generateImports(imports, options.format || 'typescript');
321
+ const fullCode = importCode + code.join('\n');
322
+ // Format code
323
+ const formatted = options.prettier !== false ? formatCode(fullCode) : fullCode;
324
+ const endTime = performance.now();
325
+ return {
326
+ code: formatted,
327
+ warnings: [],
328
+ meta: {
329
+ duration: endTime - startTime,
330
+ componentCount: generatedTypes.size,
331
+ lineCount: formatted.split('\n').length,
332
+ },
333
+ };
334
+ }
335
+ //# sourceMappingURL=css-in-js-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"css-in-js-generator.js","sourceRoot":"","sources":["../../../src/screen-generation/generators/css-in-js-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @tekton-ui/core - Output Generators Module
3
+ * Barrel export for code generation from resolved screens
4
+ * [SPEC-LAYOUT-002] [PHASE-3]
5
+ */
6
+ export type { CSSFramework, OutputFormat, ComponentStyle, GeneratorOptions, GeneratorResult, GeneratedFile, CSSVariableMap, TailwindClassMap, StyledThemeConfig, ComponentGenerationContext, } from './types.js';
7
+ export { defaultGeneratorOptions } from './types.js';
8
+ export { camelCase, pascalCase, kebabCase, formatCode, indent, escapeJSX, needsJSXExpression, propValueToJSX, generateImports, cssVarToToken, extractPropertyFromCSSVar, isValidIdentifier, sanitizeIdentifier, } from './utils.js';
9
+ export type { CSSInJSFormat } from './css-in-js-generator.js';
10
+ export { convertCSSVarsToTheme, generateComponentStyles, generateStyledComponents, } from './css-in-js-generator.js';
11
+ export { tokenToTailwindClass, generateComponentClasses, generateTailwindConfig, generateTailwindClasses, } from './tailwind-generator.js';
12
+ export { generateComponentInterface, generateComponentJSX, generateComponentTree, generateReactComponent, } from './react-generator.js';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/screen-generation/generators/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,0BAA0B,GAC3B,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAMrD,OAAO,EAEL,SAAS,EACT,UAAU,EACV,SAAS,EAGT,UAAU,EACV,MAAM,EAGN,SAAS,EACT,kBAAkB,EAClB,cAAc,EAGd,eAAe,EAGf,aAAa,EACb,yBAAyB,EAGzB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAMpB,YAAY,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAMlC,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AAMjC,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC"}