@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,355 @@
1
+ /**
2
+ * @tekton-ui/core - Tailwind CSS Generator
3
+ * Generates Tailwind class names and configuration from ResolvedScreen
4
+ * [SPEC-LAYOUT-002] [PHASE-3]
5
+ */
6
+ import { cssVarToToken } from './utils.js';
7
+ // ============================================================================
8
+ // Token to Tailwind Class Mapping
9
+ // ============================================================================
10
+ /**
11
+ * Tailwind property mapping
12
+ * Maps CSS properties to Tailwind class prefixes
13
+ */
14
+ const TAILWIND_PROPERTY_MAP = {
15
+ // Layout
16
+ width: 'w',
17
+ height: 'h',
18
+ padding: 'p',
19
+ margin: 'm',
20
+ gap: 'gap',
21
+ // Flexbox & Grid
22
+ display: '',
23
+ flexDirection: 'flex',
24
+ alignItems: 'items',
25
+ justifyContent: 'justify',
26
+ gridTemplateColumns: 'grid-cols',
27
+ // Typography
28
+ fontSize: 'text',
29
+ fontWeight: 'font',
30
+ lineHeight: 'leading',
31
+ textAlign: 'text',
32
+ color: 'text',
33
+ // Backgrounds
34
+ background: 'bg',
35
+ backgroundColor: 'bg',
36
+ // Borders
37
+ borderRadius: 'rounded',
38
+ borderWidth: 'border',
39
+ borderColor: 'border',
40
+ // Effects
41
+ boxShadow: 'shadow',
42
+ opacity: 'opacity',
43
+ // Transforms
44
+ transform: 'transform',
45
+ scale: 'scale',
46
+ };
47
+ /**
48
+ * Convert token binding to Tailwind class name
49
+ *
50
+ * Maps design token references to Tailwind utility classes.
51
+ * Uses a lookup table for performance.
52
+ *
53
+ * @param tokenBinding - Token binding (CSS variable reference)
54
+ * @param context - Resolution context with component props
55
+ * @returns Tailwind class name
56
+ *
57
+ * @example
58
+ * ```typescript
59
+ * tokenToTailwindClass('var(--atomic-spacing-16)', { prop: 'padding' });
60
+ * // → 'p-4'
61
+ *
62
+ * tokenToTailwindClass('var(--semantic-color-primary)', { prop: 'background' });
63
+ * // → 'bg-primary-500'
64
+ * ```
65
+ */
66
+ export function tokenToTailwindClass(tokenBinding, context) {
67
+ // Extract token reference from CSS variable
68
+ const tokenRef = cssVarToToken(tokenBinding);
69
+ const parts = tokenRef.split('.');
70
+ if (parts.length < 2) {
71
+ return '';
72
+ }
73
+ const [layer, category, ...rest] = parts;
74
+ const prefix = TAILWIND_PROPERTY_MAP[context.prop] || '';
75
+ // Responsive prefix
76
+ const responsivePrefix = context.responsive ? `${context.responsive}:` : '';
77
+ // Handle different token types
78
+ if (category === 'spacing' || category === 'space') {
79
+ const value = rest[0];
80
+ const tailwindValue = mapSpacingToTailwind(value);
81
+ return prefix ? `${responsivePrefix}${prefix}-${tailwindValue}` : '';
82
+ }
83
+ if (category === 'color' || category === 'colors') {
84
+ const colorName = rest.join('-');
85
+ return prefix ? `${responsivePrefix}${prefix}-${colorName}` : '';
86
+ }
87
+ if (category === 'font' || category === 'typography') {
88
+ const value = rest.join('-');
89
+ return prefix ? `${responsivePrefix}${prefix}-${value}` : '';
90
+ }
91
+ if (category === 'radius' || category === 'radii') {
92
+ const value = rest[0];
93
+ return `${responsivePrefix}rounded-${value}`;
94
+ }
95
+ if (category === 'shadow' || category === 'shadows') {
96
+ const value = rest.join('-');
97
+ return `${responsivePrefix}shadow-${value}`;
98
+ }
99
+ // Component-specific tokens
100
+ if (layer === 'component') {
101
+ const value = rest.join('-');
102
+ return `${responsivePrefix}${prefix}-${category}-${value}`;
103
+ }
104
+ return '';
105
+ }
106
+ /**
107
+ * Map spacing token value to Tailwind spacing scale
108
+ *
109
+ * @param value - Spacing token value (e.g., '16', '32', '48')
110
+ * @returns Tailwind spacing value (e.g., '4', '8', '12')
111
+ */
112
+ function mapSpacingToTailwind(value) {
113
+ // Tekton uses 4px base unit, Tailwind uses 0.25rem (4px) base
114
+ // Direct mapping: 16px → 4, 32px → 8, etc.
115
+ const numValue = parseInt(value, 10);
116
+ if (isNaN(numValue)) {
117
+ return value;
118
+ }
119
+ return String(numValue / 4);
120
+ }
121
+ /**
122
+ * Generate Tailwind classes for component
123
+ *
124
+ * @param component - Resolved component
125
+ * @returns Array of Tailwind class names
126
+ *
127
+ * @example
128
+ * ```typescript
129
+ * const component = {
130
+ * type: 'Button',
131
+ * tokenBindings: {
132
+ * background: 'var(--semantic-color-primary)',
133
+ * padding: 'var(--atomic-spacing-16)'
134
+ * }
135
+ * };
136
+ *
137
+ * generateTailwindClasses(component);
138
+ * // → ['bg-primary-500', 'p-4']
139
+ * ```
140
+ */
141
+ export function generateComponentClasses(component) {
142
+ const classes = [];
143
+ for (const [prop, tokenBinding] of Object.entries(component.tokenBindings)) {
144
+ const className = tokenToTailwindClass(tokenBinding, { prop });
145
+ if (className) {
146
+ classes.push(className);
147
+ }
148
+ }
149
+ return classes;
150
+ }
151
+ // ============================================================================
152
+ // Tailwind Config Generation
153
+ // ============================================================================
154
+ /**
155
+ * Generate Tailwind configuration extension
156
+ *
157
+ * Creates a tailwind.config.js extension that maps design tokens
158
+ * to Tailwind theme values.
159
+ *
160
+ * @param cssVars - CSS variables from resolved screen
161
+ * @returns Tailwind config extension code
162
+ *
163
+ * @example
164
+ * ```typescript
165
+ * const cssVars = {
166
+ * 'var(--semantic-color-primary)': 'semantic.color.primary',
167
+ * 'var(--atomic-spacing-16)': 'atomic.spacing.16'
168
+ * };
169
+ *
170
+ * const config = generateTailwindConfig(cssVars);
171
+ * // module.exports = {
172
+ * // theme: {
173
+ * // extend: {
174
+ * // colors: {
175
+ * // 'primary': 'var(--semantic-color-primary)',
176
+ * // },
177
+ * // spacing: {
178
+ * // '4': 'var(--atomic-spacing-16)',
179
+ * // }
180
+ * // }
181
+ * // }
182
+ * // }
183
+ * ```
184
+ */
185
+ export function generateTailwindConfig(cssVars) {
186
+ const config = {
187
+ colors: {},
188
+ spacing: {},
189
+ fontSizes: {},
190
+ borderRadius: {},
191
+ boxShadow: {},
192
+ };
193
+ // Process CSS variables
194
+ for (const [cssVar, tokenRef] of Object.entries(cssVars)) {
195
+ const parts = tokenRef.split('.');
196
+ if (parts.length < 2) {
197
+ continue;
198
+ }
199
+ const [layer, category, ...rest] = parts;
200
+ if (layer === 'semantic' || layer === 'atomic') {
201
+ if (category === 'color' || category === 'colors') {
202
+ const key = rest.join('-');
203
+ config.colors[key] = cssVar;
204
+ }
205
+ else if (category === 'spacing' || category === 'space') {
206
+ const value = rest[0];
207
+ const tailwindKey = mapSpacingToTailwind(value);
208
+ config.spacing[tailwindKey] = cssVar;
209
+ }
210
+ else if (category === 'font' || category === 'typography') {
211
+ const key = rest.join('-');
212
+ config.fontSizes[key] = cssVar;
213
+ }
214
+ else if (category === 'radius' || category === 'radii') {
215
+ const key = rest[0] || 'default';
216
+ config.borderRadius[key] = cssVar;
217
+ }
218
+ else if (category === 'shadow' || category === 'shadows') {
219
+ const key = rest.join('-') || 'default';
220
+ config.boxShadow[key] = cssVar;
221
+ }
222
+ }
223
+ }
224
+ // Generate config code
225
+ const lines = [];
226
+ lines.push('/** @type {import("tailwindcss").Config} */');
227
+ lines.push('module.exports = {');
228
+ lines.push(' theme: {');
229
+ lines.push(' extend: {');
230
+ // Colors
231
+ if (Object.keys(config.colors).length > 0) {
232
+ lines.push(' colors: {');
233
+ for (const [key, value] of Object.entries(config.colors)) {
234
+ lines.push(` '${key}': '${value}',`);
235
+ }
236
+ lines.push(' },');
237
+ }
238
+ // Spacing
239
+ if (Object.keys(config.spacing).length > 0) {
240
+ lines.push(' spacing: {');
241
+ for (const [key, value] of Object.entries(config.spacing)) {
242
+ lines.push(` '${key}': '${value}',`);
243
+ }
244
+ lines.push(' },');
245
+ }
246
+ // Font sizes
247
+ if (Object.keys(config.fontSizes).length > 0) {
248
+ lines.push(' fontSize: {');
249
+ for (const [key, value] of Object.entries(config.fontSizes)) {
250
+ lines.push(` '${key}': '${value}',`);
251
+ }
252
+ lines.push(' },');
253
+ }
254
+ // Border radius
255
+ if (Object.keys(config.borderRadius).length > 0) {
256
+ lines.push(' borderRadius: {');
257
+ for (const [key, value] of Object.entries(config.borderRadius)) {
258
+ lines.push(` '${key}': '${value}',`);
259
+ }
260
+ lines.push(' },');
261
+ }
262
+ // Box shadow
263
+ if (Object.keys(config.boxShadow).length > 0) {
264
+ lines.push(' boxShadow: {');
265
+ for (const [key, value] of Object.entries(config.boxShadow)) {
266
+ lines.push(` '${key}': '${value}',`);
267
+ }
268
+ lines.push(' },');
269
+ }
270
+ lines.push(' },');
271
+ lines.push(' },');
272
+ lines.push('};');
273
+ return lines.join('\n');
274
+ }
275
+ // ============================================================================
276
+ // Main Generation Function
277
+ // ============================================================================
278
+ /**
279
+ * Generate Tailwind classes and configuration from resolved screen
280
+ *
281
+ * Creates:
282
+ * - Component class mappings
283
+ * - Tailwind configuration extension
284
+ *
285
+ * @param screen - Resolved screen
286
+ * @param options - Generator options
287
+ * @returns Generator result with code and config
288
+ *
289
+ * @example
290
+ * ```typescript
291
+ * const screen = resolveScreen(screenDefinition);
292
+ * const result = generateTailwindClasses(screen);
293
+ *
294
+ * console.log(result.code); // Component class mappings
295
+ * console.log(result.files[0].content); // tailwind.config.js
296
+ * ```
297
+ */
298
+ export function generateTailwindClasses(screen, _options = {}) {
299
+ const startTime = performance.now();
300
+ const componentClasses = {};
301
+ const warnings = [];
302
+ // Generate classes for each component
303
+ for (const section of screen.sections) {
304
+ for (const component of section.components) {
305
+ const classes = generateComponentClasses(component);
306
+ if (classes.length === 0) {
307
+ warnings.push(`No Tailwind classes generated for ${component.type} (may need manual styling)`);
308
+ }
309
+ const key = `${section.id}-${component.type}`;
310
+ componentClasses[key] = classes;
311
+ }
312
+ }
313
+ // Generate Tailwind config
314
+ const config = generateTailwindConfig(screen.cssVariables);
315
+ // Generate class mapping code
316
+ const classMapCode = generateClassMapCode(componentClasses);
317
+ const endTime = performance.now();
318
+ return {
319
+ code: classMapCode,
320
+ files: [
321
+ {
322
+ path: 'tailwind.config.js',
323
+ content: config,
324
+ type: 'config',
325
+ },
326
+ ],
327
+ warnings,
328
+ meta: {
329
+ duration: endTime - startTime,
330
+ componentCount: Object.keys(componentClasses).length,
331
+ lineCount: classMapCode.split('\n').length + config.split('\n').length,
332
+ },
333
+ };
334
+ }
335
+ /**
336
+ * Generate class mapping code
337
+ *
338
+ * @param componentClasses - Component class mappings
339
+ * @returns TypeScript code for class mappings
340
+ */
341
+ function generateClassMapCode(componentClasses) {
342
+ const lines = [];
343
+ lines.push('/**');
344
+ lines.push(' * Tailwind class mappings for components');
345
+ lines.push(' * Generated from design tokens');
346
+ lines.push(' */');
347
+ lines.push('export const componentClasses = {');
348
+ for (const [key, classes] of Object.entries(componentClasses)) {
349
+ const classString = classes.join(' ');
350
+ lines.push(` '${key}': '${classString}',`);
351
+ }
352
+ lines.push('};');
353
+ return lines.join('\n');
354
+ }
355
+ //# sourceMappingURL=tailwind-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tailwind-generator.js","sourceRoot":"","sources":["../../../src/screen-generation/generators/tailwind-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * @tekton-ui/core - Generator Type Definitions
3
+ * Common types and interfaces for code generators
4
+ * [SPEC-LAYOUT-002] [PHASE-3]
5
+ */
6
+ /**
7
+ * CSS framework options for code generation
8
+ */
9
+ export type CSSFramework = 'styled-components' | 'emotion' | 'tailwind' | 'css-modules';
10
+ /**
11
+ * Output format options
12
+ */
13
+ export type OutputFormat = 'typescript' | 'javascript';
14
+ /**
15
+ * Component style options
16
+ */
17
+ export type ComponentStyle = 'functional' | 'class';
18
+ /**
19
+ * Generator options for customizing output
20
+ */
21
+ export interface GeneratorOptions {
22
+ /** Output format (default: 'typescript') */
23
+ format?: OutputFormat;
24
+ /** CSS framework to use (default: 'tailwind') */
25
+ cssFramework?: CSSFramework;
26
+ /** Enable prettier formatting (default: true) */
27
+ prettier?: boolean;
28
+ /** Include TypeScript types (default: true) */
29
+ includeTypes?: boolean;
30
+ /** Component style (default: 'functional') */
31
+ componentStyle?: ComponentStyle;
32
+ /** Indentation (default: 2 spaces) */
33
+ indent?: number;
34
+ /** Single quotes vs double quotes (default: true for single) */
35
+ singleQuote?: boolean;
36
+ }
37
+ /**
38
+ * Default generator options
39
+ */
40
+ export declare const defaultGeneratorOptions: Required<GeneratorOptions>;
41
+ /**
42
+ * Result from code generation
43
+ */
44
+ export interface GeneratorResult {
45
+ /** Generated code */
46
+ code: string;
47
+ /** Files generated (for multi-file generators) */
48
+ files?: GeneratedFile[];
49
+ /** Warnings encountered during generation */
50
+ warnings?: string[];
51
+ /** Metadata about generation */
52
+ meta?: {
53
+ /** Time taken to generate (ms) */
54
+ duration?: number;
55
+ /** Number of components generated */
56
+ componentCount?: number;
57
+ /** Number of lines generated */
58
+ lineCount?: number;
59
+ };
60
+ }
61
+ /**
62
+ * Generated file
63
+ */
64
+ export interface GeneratedFile {
65
+ /** File path relative to output directory */
66
+ path: string;
67
+ /** File content */
68
+ content: string;
69
+ /** File type */
70
+ type: 'component' | 'style' | 'config' | 'type';
71
+ }
72
+ /**
73
+ * CSS variable mapping for token resolution
74
+ */
75
+ export interface CSSVariableMap {
76
+ /** Variable name (without --) */
77
+ name: string;
78
+ /** CSS variable reference (with var()) */
79
+ cssVar: string;
80
+ /** Original token reference */
81
+ tokenRef: string;
82
+ }
83
+ /**
84
+ * Tailwind class mapping configuration
85
+ */
86
+ export interface TailwindClassMap {
87
+ /** Property name (e.g., 'background', 'padding') */
88
+ property: string;
89
+ /** Tailwind class name (e.g., 'bg-primary-500') */
90
+ className: string;
91
+ /** Original token reference */
92
+ tokenRef: string;
93
+ /** Responsive variants (optional) */
94
+ responsive?: {
95
+ sm?: string;
96
+ md?: string;
97
+ lg?: string;
98
+ xl?: string;
99
+ '2xl'?: string;
100
+ };
101
+ }
102
+ /**
103
+ * Theme configuration for styled-components/Emotion
104
+ */
105
+ export interface StyledThemeConfig {
106
+ /** Theme name */
107
+ name: string;
108
+ /** Color tokens */
109
+ colors: Record<string, string>;
110
+ /** Spacing tokens */
111
+ spacing: Record<string, string>;
112
+ /** Typography tokens */
113
+ typography: Record<string, string>;
114
+ /** Border radius tokens */
115
+ radii: Record<string, string>;
116
+ /** Shadow tokens */
117
+ shadows: Record<string, string>;
118
+ /** Custom tokens */
119
+ custom?: Record<string, Record<string, string>>;
120
+ }
121
+ /**
122
+ * Context for component generation
123
+ */
124
+ export interface ComponentGenerationContext {
125
+ /** Component depth in tree (for indentation) */
126
+ depth: number;
127
+ /** Parent component type (if nested) */
128
+ parentType?: string;
129
+ /** Accumulated imports */
130
+ imports: Set<string>;
131
+ /** CSS framework being used */
132
+ cssFramework: CSSFramework;
133
+ /** Output format */
134
+ format: OutputFormat;
135
+ }
136
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/screen-generation/generators/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @tekton-ui/core - Generator Type Definitions
3
+ * Common types and interfaces for code generators
4
+ * [SPEC-LAYOUT-002] [PHASE-3]
5
+ */
6
+ /**
7
+ * Default generator options
8
+ */
9
+ export const defaultGeneratorOptions = {
10
+ format: 'typescript',
11
+ cssFramework: 'tailwind',
12
+ prettier: true,
13
+ includeTypes: true,
14
+ componentStyle: 'functional',
15
+ indent: 2,
16
+ singleQuote: true,
17
+ };
18
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/screen-generation/generators/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA+CH;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAA+B;IACjE,MAAM,EAAE,YAAY;IACpB,YAAY,EAAE,UAAU;IACxB,QAAQ,EAAE,IAAI;IACd,YAAY,EAAE,IAAI;IAClB,cAAc,EAAE,YAAY;IAC5B,MAAM,EAAE,CAAC;IACT,WAAW,EAAE,IAAI;CAClB,CAAC"}