@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,23 @@
1
+ /**
2
+ * @tekton-ui/core - Render Module
3
+ * Template-based JSX generation (no AST dependencies)
4
+ * Target: 300 LOC
5
+ */
6
+ import type { Blueprint, ComponentNode, RenderResult, RenderOptions } from './types.js';
7
+ /**
8
+ * Render blueprint to JSX code
9
+ */
10
+ export declare function render(blueprint: Blueprint, options?: RenderOptions): RenderResult;
11
+ /**
12
+ * Render blueprint with theme applied
13
+ */
14
+ export declare function renderWithTheme(blueprint: Blueprint, options?: RenderOptions): RenderResult;
15
+ /**
16
+ * Quick render a single component
17
+ */
18
+ export declare function renderSingleComponent(node: ComponentNode): string;
19
+ /**
20
+ * Render multiple components without layout wrapper
21
+ */
22
+ export declare function renderComponents(nodes: ComponentNode[], indent?: string): string;
23
+ //# sourceMappingURL=render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAyKxF;;GAEG;AACH,wBAAgB,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,YAAY,CAqClF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,YAAY,CAqB3F;AA+CD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAEjE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,MAAM,GAAE,MAAW,GAAG,MAAM,CAEpF"}
package/dist/render.js ADDED
@@ -0,0 +1,244 @@
1
+ /**
2
+ * @tekton-ui/core - Render Module
3
+ * Template-based JSX generation (no AST dependencies)
4
+ * Target: 300 LOC
5
+ */
6
+ import { loadTheme, generateCSSVariables } from './theme.js';
7
+ // ============================================================================
8
+ // Default Options
9
+ // ============================================================================
10
+ const DEFAULT_OPTIONS = {
11
+ typescript: true,
12
+ indent: 2,
13
+ semicolons: true,
14
+ };
15
+ const COMPONENT_RENDERERS = {
16
+ Button: (node, indent) => {
17
+ const variant = node.props?.variant || 'default';
18
+ const children = renderChildren(node.children, indent);
19
+ return `${indent}<Button variant="${variant}">${children}</Button>`;
20
+ },
21
+ Input: (node, indent) => {
22
+ const placeholder = node.props?.placeholder || '';
23
+ const type = node.props?.type || 'text';
24
+ return `${indent}<Input type="${type}" placeholder="${placeholder}" />`;
25
+ },
26
+ Card: (node, indent) => {
27
+ const children = renderChildren(node.children, indent + ' ');
28
+ return `${indent}<Card>\n${children}\n${indent}</Card>`;
29
+ },
30
+ Text: (node, indent) => {
31
+ const children = renderChildren(node.children, indent);
32
+ return `${indent}<Text>${children}</Text>`;
33
+ },
34
+ Heading: (node, indent) => {
35
+ const level = node.props?.level || 1;
36
+ const children = renderChildren(node.children, indent);
37
+ return `${indent}<Heading level={${level}}>${children}</Heading>`;
38
+ },
39
+ Image: (node, indent) => {
40
+ const src = node.props?.src || '';
41
+ const alt = node.props?.alt || '';
42
+ return `${indent}<Image src="${src}" alt="${alt}" />`;
43
+ },
44
+ Link: (node, indent) => {
45
+ const href = node.props?.href || '#';
46
+ const children = renderChildren(node.children, indent);
47
+ return `${indent}<Link href="${href}">${children}</Link>`;
48
+ },
49
+ List: (node, indent) => {
50
+ const children = renderChildren(node.children, indent + ' ');
51
+ return `${indent}<List>\n${children}\n${indent}</List>`;
52
+ },
53
+ Form: (node, indent) => {
54
+ const children = renderChildren(node.children, indent + ' ');
55
+ return `${indent}<Form>\n${children}\n${indent}</Form>`;
56
+ },
57
+ Modal: (node, indent) => {
58
+ const title = node.props?.title || '';
59
+ const children = renderChildren(node.children, indent + ' ');
60
+ return `${indent}<Modal title="${title}">\n${children}\n${indent}</Modal>`;
61
+ },
62
+ // Default fallback for unknown components
63
+ Default: (node, indent) => {
64
+ const props = renderProps(node.props);
65
+ const children = node.children ? renderChildren(node.children, indent + ' ') : '';
66
+ const hasChildren = children.trim().length > 0;
67
+ if (hasChildren) {
68
+ return `${indent}<${node.type}${props}>\n${children}\n${indent}</${node.type}>`;
69
+ }
70
+ return `${indent}<${node.type}${props} />`;
71
+ },
72
+ };
73
+ // ============================================================================
74
+ // Helper Functions
75
+ // ============================================================================
76
+ function renderProps(props) {
77
+ if (!props || Object.keys(props).length === 0) {
78
+ return '';
79
+ }
80
+ const parts = [];
81
+ for (const [key, value] of Object.entries(props)) {
82
+ if (typeof value === 'string') {
83
+ parts.push(`${key}="${value}"`);
84
+ }
85
+ else if (typeof value === 'number' || typeof value === 'boolean') {
86
+ parts.push(`${key}={${value}}`);
87
+ }
88
+ else if (value !== undefined && value !== null) {
89
+ parts.push(`${key}={${JSON.stringify(value)}}`);
90
+ }
91
+ }
92
+ return parts.length > 0 ? ' ' + parts.join(' ') : '';
93
+ }
94
+ function renderChildren(children, indent) {
95
+ if (!children || children.length === 0) {
96
+ return '';
97
+ }
98
+ return children
99
+ .map(child => {
100
+ if (typeof child === 'string') {
101
+ return `${indent}${child}`;
102
+ }
103
+ return renderNode(child, indent);
104
+ })
105
+ .join('\n');
106
+ }
107
+ function renderNode(node, indent = '') {
108
+ const renderer = COMPONENT_RENDERERS[node.type] || COMPONENT_RENDERERS.Default;
109
+ return renderer(node, indent);
110
+ }
111
+ // ============================================================================
112
+ // Layout Templates
113
+ // ============================================================================
114
+ function renderLayout(blueprint, components, indent) {
115
+ const layout = blueprint.layout;
116
+ const i = indent;
117
+ const i2 = indent + ' ';
118
+ switch (layout) {
119
+ case 'single-column':
120
+ return `${i}<main className="container mx-auto px-4">\n${components}\n${i}</main>`;
121
+ case 'two-column':
122
+ return `${i}<div className="grid grid-cols-2 gap-4">\n${i2}<div className="col-span-1">\n${components}\n${i2}</div>\n${i2}<div className="col-span-1">\n${i2}</div>\n${i}</div>`;
123
+ case 'sidebar-left':
124
+ return `${i}<div className="flex">\n${i2}<aside className="w-64 shrink-0">\n${i2}</aside>\n${i2}<main className="flex-1">\n${components}\n${i2}</main>\n${i}</div>`;
125
+ case 'sidebar-right':
126
+ return `${i}<div className="flex">\n${i2}<main className="flex-1">\n${components}\n${i2}</main>\n${i2}<aside className="w-64 shrink-0">\n${i2}</aside>\n${i}</div>`;
127
+ case 'dashboard':
128
+ return `${i}<div className="flex h-screen">\n${i2}<aside className="w-64 shrink-0 border-r">\n${i2}</aside>\n${i2}<div className="flex-1 flex flex-col">\n${i2} <header className="h-16 border-b">\n${i2} </header>\n${i2} <main className="flex-1 p-4">\n${components}\n${i2} </main>\n${i2}</div>\n${i}</div>`;
129
+ case 'landing':
130
+ return `${i}<div className="min-h-screen">\n${i2}<section className="hero py-20">\n${components}\n${i2}</section>\n${i}</div>`;
131
+ default:
132
+ return `${i}<div>\n${components}\n${i}</div>`;
133
+ }
134
+ }
135
+ // ============================================================================
136
+ // Main Render Functions
137
+ // ============================================================================
138
+ /**
139
+ * Render blueprint to JSX code
140
+ */
141
+ export function render(blueprint, options) {
142
+ const opts = { ...DEFAULT_OPTIONS, ...options };
143
+ const indent = ' '.repeat(opts.indent);
144
+ try {
145
+ // Render components
146
+ const componentsJsx = blueprint.components
147
+ .map(comp => renderNode(comp, indent + indent))
148
+ .join('\n');
149
+ // Wrap in layout
150
+ const layoutJsx = renderLayout(blueprint, componentsJsx, indent);
151
+ // Generate imports
152
+ const componentTypes = extractComponentTypes(blueprint.components);
153
+ const imports = generateImports(componentTypes, opts.typescript);
154
+ // Generate component function
155
+ const componentName = toPascalCase(blueprint.name);
156
+ const semi = opts.semicolons ? ';' : '';
157
+ const code = `${imports}
158
+
159
+ export default function ${componentName}() {
160
+ return (
161
+ ${layoutJsx}
162
+ )${semi}
163
+ }
164
+ `;
165
+ return { success: true, code };
166
+ }
167
+ catch (error) {
168
+ return {
169
+ success: false,
170
+ error: error instanceof Error ? error.message : 'Unknown render error',
171
+ };
172
+ }
173
+ }
174
+ /**
175
+ * Render blueprint with theme applied
176
+ */
177
+ export function renderWithTheme(blueprint, options) {
178
+ const theme = loadTheme(blueprint.themeId);
179
+ if (!theme) {
180
+ return { success: false, error: `Theme not found: ${blueprint.themeId}` };
181
+ }
182
+ // Generate CSS variables comment
183
+ const cssVars = generateCSSVariables(theme);
184
+ const cssComment = `/* Theme: ${theme.name} */\n/* CSS Variables:\n${Object.entries(cssVars)
185
+ .map(([k, v]) => ` ${k}: ${v};`)
186
+ .join('\n')}\n*/\n`;
187
+ const result = render(blueprint, options);
188
+ if (!result.success) {
189
+ return result;
190
+ }
191
+ return {
192
+ success: true,
193
+ code: cssComment + result.code,
194
+ };
195
+ }
196
+ // ============================================================================
197
+ // Utility Functions
198
+ // ============================================================================
199
+ function extractComponentTypes(nodes) {
200
+ const types = new Set();
201
+ function traverse(node) {
202
+ types.add(node.type);
203
+ if (node.children) {
204
+ for (const child of node.children) {
205
+ if (typeof child !== 'string') {
206
+ traverse(child);
207
+ }
208
+ }
209
+ }
210
+ }
211
+ for (const node of nodes) {
212
+ traverse(node);
213
+ }
214
+ return Array.from(types).sort();
215
+ }
216
+ function generateImports(componentTypes, typescript) {
217
+ if (componentTypes.length === 0) {
218
+ return '';
219
+ }
220
+ const ext = typescript ? '' : '';
221
+ return `import { ${componentTypes.join(', ')} } from '@/components/ui'${ext};`;
222
+ }
223
+ function toPascalCase(str) {
224
+ return str
225
+ .split(/[-_\s]+/)
226
+ .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
227
+ .join('');
228
+ }
229
+ // ============================================================================
230
+ // Quick Render API
231
+ // ============================================================================
232
+ /**
233
+ * Quick render a single component
234
+ */
235
+ export function renderSingleComponent(node) {
236
+ return renderNode(node, '');
237
+ }
238
+ /**
239
+ * Render multiple components without layout wrapper
240
+ */
241
+ export function renderComponents(nodes, indent = '') {
242
+ return nodes.map(n => renderNode(n, indent)).join('\n');
243
+ }
244
+ //# sourceMappingURL=render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,208 @@
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 type { ComponentSchema, PropDefinition, A11yRequirements } from './component-schemas.js';
8
+ /**
9
+ * PropDefinition Zod Schema
10
+ */
11
+ export declare const PropDefinitionSchema: z.ZodObject<{
12
+ name: z.ZodString;
13
+ type: z.ZodString;
14
+ required: z.ZodBoolean;
15
+ description: z.ZodString;
16
+ defaultValue: z.ZodOptional<z.ZodUnknown>;
17
+ options: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
18
+ }, "strip", z.ZodTypeAny, {
19
+ name: string;
20
+ type: string;
21
+ required: boolean;
22
+ description: string;
23
+ defaultValue?: unknown;
24
+ options?: string[] | undefined;
25
+ }, {
26
+ name: string;
27
+ type: string;
28
+ required: boolean;
29
+ description: string;
30
+ defaultValue?: unknown;
31
+ options?: string[] | undefined;
32
+ }>;
33
+ /**
34
+ * A11yRequirements Zod Schema
35
+ */
36
+ export declare const A11yRequirementsSchema: z.ZodObject<{
37
+ role: z.ZodString;
38
+ wcag: z.ZodString;
39
+ ariaAttributes: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
40
+ keyboard: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
41
+ focus: z.ZodOptional<z.ZodString>;
42
+ screenReader: z.ZodOptional<z.ZodString>;
43
+ }, "strip", z.ZodTypeAny, {
44
+ role: string;
45
+ wcag: string;
46
+ ariaAttributes?: string[] | undefined;
47
+ keyboard?: string[] | undefined;
48
+ focus?: string | undefined;
49
+ screenReader?: string | undefined;
50
+ }, {
51
+ role: string;
52
+ wcag: string;
53
+ ariaAttributes?: string[] | undefined;
54
+ keyboard?: string[] | undefined;
55
+ focus?: string | undefined;
56
+ screenReader?: string | undefined;
57
+ }>;
58
+ /**
59
+ * TokenBindings Zod Schema
60
+ */
61
+ export declare const TokenBindingsSchema: z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodString>, Record<string, string>, Record<string, string>>;
62
+ /**
63
+ * ComponentSchema Zod Schema
64
+ */
65
+ export declare const ComponentSchemaZod: z.ZodObject<{
66
+ type: z.ZodString;
67
+ category: z.ZodEnum<["primitive", "composed"]>;
68
+ props: z.ZodArray<z.ZodObject<{
69
+ name: z.ZodString;
70
+ type: z.ZodString;
71
+ required: z.ZodBoolean;
72
+ description: z.ZodString;
73
+ defaultValue: z.ZodOptional<z.ZodUnknown>;
74
+ options: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
75
+ }, "strip", z.ZodTypeAny, {
76
+ name: string;
77
+ type: string;
78
+ required: boolean;
79
+ description: string;
80
+ defaultValue?: unknown;
81
+ options?: string[] | undefined;
82
+ }, {
83
+ name: string;
84
+ type: string;
85
+ required: boolean;
86
+ description: string;
87
+ defaultValue?: unknown;
88
+ options?: string[] | undefined;
89
+ }>, "many">;
90
+ tokenBindings: z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodString>, Record<string, string>, Record<string, string>>;
91
+ a11y: z.ZodObject<{
92
+ role: z.ZodString;
93
+ wcag: z.ZodString;
94
+ ariaAttributes: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
95
+ keyboard: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
96
+ focus: z.ZodOptional<z.ZodString>;
97
+ screenReader: z.ZodOptional<z.ZodString>;
98
+ }, "strip", z.ZodTypeAny, {
99
+ role: string;
100
+ wcag: string;
101
+ ariaAttributes?: string[] | undefined;
102
+ keyboard?: string[] | undefined;
103
+ focus?: string | undefined;
104
+ screenReader?: string | undefined;
105
+ }, {
106
+ role: string;
107
+ wcag: string;
108
+ ariaAttributes?: string[] | undefined;
109
+ keyboard?: string[] | undefined;
110
+ focus?: string | undefined;
111
+ screenReader?: string | undefined;
112
+ }>;
113
+ description: z.ZodOptional<z.ZodString>;
114
+ }, "strip", z.ZodTypeAny, {
115
+ type: string;
116
+ category: "primitive" | "composed";
117
+ props: {
118
+ name: string;
119
+ type: string;
120
+ required: boolean;
121
+ description: string;
122
+ defaultValue?: unknown;
123
+ options?: string[] | undefined;
124
+ }[];
125
+ tokenBindings: Record<string, string>;
126
+ a11y: {
127
+ role: string;
128
+ wcag: string;
129
+ ariaAttributes?: string[] | undefined;
130
+ keyboard?: string[] | undefined;
131
+ focus?: string | undefined;
132
+ screenReader?: string | undefined;
133
+ };
134
+ description?: string | undefined;
135
+ }, {
136
+ type: string;
137
+ category: "primitive" | "composed";
138
+ props: {
139
+ name: string;
140
+ type: string;
141
+ required: boolean;
142
+ description: string;
143
+ defaultValue?: unknown;
144
+ options?: string[] | undefined;
145
+ }[];
146
+ tokenBindings: Record<string, string>;
147
+ a11y: {
148
+ role: string;
149
+ wcag: string;
150
+ ariaAttributes?: string[] | undefined;
151
+ keyboard?: string[] | undefined;
152
+ focus?: string | undefined;
153
+ screenReader?: string | undefined;
154
+ };
155
+ description?: string | undefined;
156
+ }>;
157
+ /**
158
+ * Validation result type
159
+ */
160
+ export interface ValidationResult {
161
+ valid: boolean;
162
+ errors?: string[];
163
+ warnings?: string[];
164
+ }
165
+ /**
166
+ * Validate a single component schema
167
+ */
168
+ export declare function validateComponentSchema(schema: ComponentSchema): ValidationResult;
169
+ /**
170
+ * Validate all component schemas
171
+ */
172
+ export declare function validateAllSchemas(): ValidationResult;
173
+ /**
174
+ * Validate prop definition
175
+ */
176
+ export declare function validateProp(prop: PropDefinition): ValidationResult;
177
+ /**
178
+ * Validate accessibility requirements
179
+ */
180
+ export declare function validateA11y(a11y: A11yRequirements): ValidationResult;
181
+ /**
182
+ * Validate token bindings format
183
+ */
184
+ export declare function validateTokenBindings(bindings: Record<string, string>): ValidationResult;
185
+ /**
186
+ * Get component schema validation summary
187
+ */
188
+ export declare function getValidationSummary(): {
189
+ totalComponents: number;
190
+ primitiveComponents: number;
191
+ composedComponents: number;
192
+ validSchemas: number;
193
+ invalidSchemas: number;
194
+ validationResults: Array<{
195
+ type: string;
196
+ valid: boolean;
197
+ errors?: string[];
198
+ }>;
199
+ };
200
+ /**
201
+ * Assert component schema is valid (throws on invalid)
202
+ */
203
+ export declare function assertValidSchema(schema: ComponentSchema): void;
204
+ /**
205
+ * Assert all schemas are valid (throws on invalid)
206
+ */
207
+ export declare function assertAllSchemasValid(): void;
208
+ //# sourceMappingURL=schema-validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-validation.d.ts","sourceRoot":"","sources":["../src/schema-validation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAOhG;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;EAO/B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;EAOjC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,mBAAmB,qGAI5B,CAAC;AAEL;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAS7B,CAAC;AAMH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,eAAe,GAAG,gBAAgB,CAWjF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,gBAAgB,CAsCrD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,gBAAgB,CAWnE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,CAWrE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,gBAAgB,CAkCxF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI;IACtC,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,KAAK,CAAC;QACvB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,OAAO,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC,CAAC;CACJ,CAiBA;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAK/D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAK5C"}