@tekton-ui/core 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +758 -0
- package/dist/blueprint.d.ts +44 -0
- package/dist/blueprint.d.ts.map +1 -0
- package/dist/blueprint.js +163 -0
- package/dist/blueprint.js.map +1 -0
- package/dist/component-schemas.d.ts +78 -0
- package/dist/component-schemas.d.ts.map +1 -0
- package/dist/component-schemas.js +1037 -0
- package/dist/component-schemas.js.map +1 -0
- package/dist/css-generator.d.ts +42 -0
- package/dist/css-generator.d.ts.map +1 -0
- package/dist/css-generator.js +339 -0
- package/dist/css-generator.js.map +1 -0
- package/dist/icon-library.d.ts +109 -0
- package/dist/icon-library.d.ts.map +1 -0
- package/dist/icon-library.js +204 -0
- package/dist/icon-library.js.map +1 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +51 -0
- package/dist/index.js.map +1 -0
- package/dist/layout-css-generator.d.ts +158 -0
- package/dist/layout-css-generator.d.ts.map +1 -0
- package/dist/layout-css-generator.js +901 -0
- package/dist/layout-css-generator.js.map +1 -0
- package/dist/layout-resolver.d.ts +92 -0
- package/dist/layout-resolver.d.ts.map +1 -0
- package/dist/layout-resolver.js +275 -0
- package/dist/layout-resolver.js.map +1 -0
- package/dist/layout-tokens/index.d.ts +16 -0
- package/dist/layout-tokens/index.d.ts.map +1 -0
- package/dist/layout-tokens/index.js +16 -0
- package/dist/layout-tokens/index.js.map +1 -0
- package/dist/layout-tokens/keyboard.d.ts +254 -0
- package/dist/layout-tokens/keyboard.d.ts.map +1 -0
- package/dist/layout-tokens/keyboard.js +407 -0
- package/dist/layout-tokens/keyboard.js.map +1 -0
- package/dist/layout-tokens/mobile-shells.d.ts +78 -0
- package/dist/layout-tokens/mobile-shells.d.ts.map +1 -0
- package/dist/layout-tokens/mobile-shells.js +635 -0
- package/dist/layout-tokens/mobile-shells.js.map +1 -0
- package/dist/layout-tokens/pages.d.ts +100 -0
- package/dist/layout-tokens/pages.d.ts.map +1 -0
- package/dist/layout-tokens/pages.js +576 -0
- package/dist/layout-tokens/pages.js.map +1 -0
- package/dist/layout-tokens/responsive.d.ts +109 -0
- package/dist/layout-tokens/responsive.d.ts.map +1 -0
- package/dist/layout-tokens/responsive.js +167 -0
- package/dist/layout-tokens/responsive.js.map +1 -0
- package/dist/layout-tokens/safe-area.d.ts +156 -0
- package/dist/layout-tokens/safe-area.d.ts.map +1 -0
- package/dist/layout-tokens/safe-area.js +316 -0
- package/dist/layout-tokens/safe-area.js.map +1 -0
- package/dist/layout-tokens/sections-advanced.d.ts +277 -0
- package/dist/layout-tokens/sections-advanced.d.ts.map +1 -0
- package/dist/layout-tokens/sections-advanced.js +593 -0
- package/dist/layout-tokens/sections-advanced.js.map +1 -0
- package/dist/layout-tokens/sections.d.ts +137 -0
- package/dist/layout-tokens/sections.d.ts.map +1 -0
- package/dist/layout-tokens/sections.js +694 -0
- package/dist/layout-tokens/sections.js.map +1 -0
- package/dist/layout-tokens/shells.d.ts +77 -0
- package/dist/layout-tokens/shells.d.ts.map +1 -0
- package/dist/layout-tokens/shells.js +408 -0
- package/dist/layout-tokens/shells.js.map +1 -0
- package/dist/layout-tokens/touch-target.d.ts +119 -0
- package/dist/layout-tokens/touch-target.d.ts.map +1 -0
- package/dist/layout-tokens/touch-target.js +156 -0
- package/dist/layout-tokens/touch-target.js.map +1 -0
- package/dist/layout-tokens/types.d.ts +632 -0
- package/dist/layout-tokens/types.d.ts.map +1 -0
- package/dist/layout-tokens/types.js +49 -0
- package/dist/layout-tokens/types.js.map +1 -0
- package/dist/layout-validation.d.ts +1547 -0
- package/dist/layout-validation.d.ts.map +1 -0
- package/dist/layout-validation.js +628 -0
- package/dist/layout-validation.js.map +1 -0
- package/dist/render.d.ts +23 -0
- package/dist/render.d.ts.map +1 -0
- package/dist/render.js +244 -0
- package/dist/render.js.map +1 -0
- package/dist/schema-validation.d.ts +208 -0
- package/dist/schema-validation.d.ts.map +1 -0
- package/dist/schema-validation.js +205 -0
- package/dist/schema-validation.js.map +1 -0
- package/dist/screen-generation/generators/css-in-js-generator.d.ts +82 -0
- package/dist/screen-generation/generators/css-in-js-generator.d.ts.map +1 -0
- package/dist/screen-generation/generators/css-in-js-generator.js +335 -0
- package/dist/screen-generation/generators/css-in-js-generator.js.map +1 -0
- package/dist/screen-generation/generators/index.d.ts +13 -0
- package/dist/screen-generation/generators/index.d.ts.map +1 -0
- package/dist/screen-generation/generators/index.js +32 -0
- package/dist/screen-generation/generators/index.js.map +1 -0
- package/dist/screen-generation/generators/react-generator.d.ts +100 -0
- package/dist/screen-generation/generators/react-generator.d.ts.map +1 -0
- package/dist/screen-generation/generators/react-generator.js +379 -0
- package/dist/screen-generation/generators/react-generator.js.map +1 -0
- package/dist/screen-generation/generators/tailwind-generator.d.ts +105 -0
- package/dist/screen-generation/generators/tailwind-generator.d.ts.map +1 -0
- package/dist/screen-generation/generators/tailwind-generator.js +355 -0
- package/dist/screen-generation/generators/tailwind-generator.js.map +1 -0
- package/dist/screen-generation/generators/types.d.ts +136 -0
- package/dist/screen-generation/generators/types.d.ts.map +1 -0
- package/dist/screen-generation/generators/types.js +18 -0
- package/dist/screen-generation/generators/types.js.map +1 -0
- package/dist/screen-generation/generators/utils.d.ts +187 -0
- package/dist/screen-generation/generators/utils.d.ts.map +1 -0
- package/dist/screen-generation/generators/utils.js +312 -0
- package/dist/screen-generation/generators/utils.js.map +1 -0
- package/dist/screen-generation/index.d.ts +14 -0
- package/dist/screen-generation/index.d.ts.map +1 -0
- package/dist/screen-generation/index.js +33 -0
- package/dist/screen-generation/index.js.map +1 -0
- package/dist/screen-generation/resolver/component-resolver.d.ts +157 -0
- package/dist/screen-generation/resolver/component-resolver.d.ts.map +1 -0
- package/dist/screen-generation/resolver/component-resolver.js +295 -0
- package/dist/screen-generation/resolver/component-resolver.js.map +1 -0
- package/dist/screen-generation/resolver/index.d.ts +10 -0
- package/dist/screen-generation/resolver/index.d.ts.map +1 -0
- package/dist/screen-generation/resolver/index.js +46 -0
- package/dist/screen-generation/resolver/index.js.map +1 -0
- package/dist/screen-generation/resolver/layout-resolver.d.ts +155 -0
- package/dist/screen-generation/resolver/layout-resolver.d.ts.map +1 -0
- package/dist/screen-generation/resolver/layout-resolver.js +193 -0
- package/dist/screen-generation/resolver/layout-resolver.js.map +1 -0
- package/dist/screen-generation/resolver/screen-resolver.d.ts +174 -0
- package/dist/screen-generation/resolver/screen-resolver.d.ts.map +1 -0
- package/dist/screen-generation/resolver/screen-resolver.js +373 -0
- package/dist/screen-generation/resolver/screen-resolver.js.map +1 -0
- package/dist/screen-generation/resolver/token-resolver.d.ts +170 -0
- package/dist/screen-generation/resolver/token-resolver.d.ts.map +1 -0
- package/dist/screen-generation/resolver/token-resolver.js +260 -0
- package/dist/screen-generation/resolver/token-resolver.js.map +1 -0
- package/dist/screen-generation/types.d.ts +116 -0
- package/dist/screen-generation/types.d.ts.map +1 -0
- package/dist/screen-generation/types.js +33 -0
- package/dist/screen-generation/types.js.map +1 -0
- package/dist/screen-generation/validators.d.ts +286 -0
- package/dist/screen-generation/validators.d.ts.map +1 -0
- package/dist/screen-generation/validators.js +323 -0
- package/dist/screen-generation/validators.js.map +1 -0
- package/dist/screen-templates/__tests__/registry.test.d.ts +6 -0
- package/dist/screen-templates/__tests__/registry.test.d.ts.map +1 -0
- package/dist/screen-templates/__tests__/registry.test.js +247 -0
- package/dist/screen-templates/__tests__/registry.test.js.map +1 -0
- package/dist/screen-templates/__tests__/templates.test.d.ts +6 -0
- package/dist/screen-templates/__tests__/templates.test.d.ts.map +1 -0
- package/dist/screen-templates/__tests__/templates.test.js +179 -0
- package/dist/screen-templates/__tests__/templates.test.js.map +1 -0
- package/dist/screen-templates/index.d.ts +39 -0
- package/dist/screen-templates/index.d.ts.map +1 -0
- package/dist/screen-templates/index.js +79 -0
- package/dist/screen-templates/index.js.map +1 -0
- package/dist/screen-templates/registry.d.ts +177 -0
- package/dist/screen-templates/registry.d.ts.map +1 -0
- package/dist/screen-templates/registry.js +274 -0
- package/dist/screen-templates/registry.js.map +1 -0
- package/dist/screen-templates/templates/account/index.d.ts +6 -0
- package/dist/screen-templates/templates/account/index.d.ts.map +1 -0
- package/dist/screen-templates/templates/account/index.js +6 -0
- package/dist/screen-templates/templates/account/index.js.map +1 -0
- package/dist/screen-templates/templates/account/profile.d.ts +23 -0
- package/dist/screen-templates/templates/account/profile.d.ts.map +1 -0
- package/dist/screen-templates/templates/account/profile.js +249 -0
- package/dist/screen-templates/templates/account/profile.js.map +1 -0
- package/dist/screen-templates/templates/auth/forgot-password.d.ts +23 -0
- package/dist/screen-templates/templates/auth/forgot-password.d.ts.map +1 -0
- package/dist/screen-templates/templates/auth/forgot-password.js +203 -0
- package/dist/screen-templates/templates/auth/forgot-password.js.map +1 -0
- package/dist/screen-templates/templates/auth/index.d.ts +9 -0
- package/dist/screen-templates/templates/auth/index.d.ts.map +1 -0
- package/dist/screen-templates/templates/auth/index.js +9 -0
- package/dist/screen-templates/templates/auth/index.js.map +1 -0
- package/dist/screen-templates/templates/auth/login.d.ts +24 -0
- package/dist/screen-templates/templates/auth/login.d.ts.map +1 -0
- package/dist/screen-templates/templates/auth/login.js +254 -0
- package/dist/screen-templates/templates/auth/login.js.map +1 -0
- package/dist/screen-templates/templates/auth/signup.d.ts +24 -0
- package/dist/screen-templates/templates/auth/signup.d.ts.map +1 -0
- package/dist/screen-templates/templates/auth/signup.js +315 -0
- package/dist/screen-templates/templates/auth/signup.js.map +1 -0
- package/dist/screen-templates/templates/auth/verification.d.ts +23 -0
- package/dist/screen-templates/templates/auth/verification.d.ts.map +1 -0
- package/dist/screen-templates/templates/auth/verification.js +239 -0
- package/dist/screen-templates/templates/auth/verification.js.map +1 -0
- package/dist/screen-templates/templates/feedback/confirmation.d.ts +9 -0
- package/dist/screen-templates/templates/feedback/confirmation.d.ts.map +1 -0
- package/dist/screen-templates/templates/feedback/confirmation.js +107 -0
- package/dist/screen-templates/templates/feedback/confirmation.js.map +1 -0
- package/dist/screen-templates/templates/feedback/empty.d.ts +9 -0
- package/dist/screen-templates/templates/feedback/empty.d.ts.map +1 -0
- package/dist/screen-templates/templates/feedback/empty.js +90 -0
- package/dist/screen-templates/templates/feedback/empty.js.map +1 -0
- package/dist/screen-templates/templates/feedback/error.d.ts +9 -0
- package/dist/screen-templates/templates/feedback/error.d.ts.map +1 -0
- package/dist/screen-templates/templates/feedback/error.js +99 -0
- package/dist/screen-templates/templates/feedback/error.js.map +1 -0
- package/dist/screen-templates/templates/feedback/index.d.ts +10 -0
- package/dist/screen-templates/templates/feedback/index.d.ts.map +1 -0
- package/dist/screen-templates/templates/feedback/index.js +10 -0
- package/dist/screen-templates/templates/feedback/index.js.map +1 -0
- package/dist/screen-templates/templates/feedback/loading.d.ts +9 -0
- package/dist/screen-templates/templates/feedback/loading.d.ts.map +1 -0
- package/dist/screen-templates/templates/feedback/loading.js +77 -0
- package/dist/screen-templates/templates/feedback/loading.js.map +1 -0
- package/dist/screen-templates/templates/feedback/success.d.ts +9 -0
- package/dist/screen-templates/templates/feedback/success.d.ts.map +1 -0
- package/dist/screen-templates/templates/feedback/success.js +99 -0
- package/dist/screen-templates/templates/feedback/success.js.map +1 -0
- package/dist/screen-templates/templates/home/index.d.ts +6 -0
- package/dist/screen-templates/templates/home/index.d.ts.map +1 -0
- package/dist/screen-templates/templates/home/index.js +6 -0
- package/dist/screen-templates/templates/home/index.js.map +1 -0
- package/dist/screen-templates/templates/home/landing.d.ts +24 -0
- package/dist/screen-templates/templates/home/landing.d.ts.map +1 -0
- package/dist/screen-templates/templates/home/landing.js +197 -0
- package/dist/screen-templates/templates/home/landing.js.map +1 -0
- package/dist/screen-templates/templates/settings/index.d.ts +6 -0
- package/dist/screen-templates/templates/settings/index.d.ts.map +1 -0
- package/dist/screen-templates/templates/settings/index.js +6 -0
- package/dist/screen-templates/templates/settings/index.js.map +1 -0
- package/dist/screen-templates/templates/settings/preferences.d.ts +24 -0
- package/dist/screen-templates/templates/settings/preferences.d.ts.map +1 -0
- package/dist/screen-templates/templates/settings/preferences.js +265 -0
- package/dist/screen-templates/templates/settings/preferences.js.map +1 -0
- package/dist/screen-templates/types.d.ts +229 -0
- package/dist/screen-templates/types.d.ts.map +1 -0
- package/dist/screen-templates/types.js +7 -0
- package/dist/screen-templates/types.js.map +1 -0
- package/dist/theme-v2.d.ts +228 -0
- package/dist/theme-v2.d.ts.map +1 -0
- package/dist/theme-v2.js +158 -0
- package/dist/theme-v2.js.map +1 -0
- package/dist/theme.d.ts +60 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/theme.js +76 -0
- package/dist/theme.js.map +1 -0
- package/dist/token-resolver.d.ts +69 -0
- package/dist/token-resolver.d.ts.map +1 -0
- package/dist/token-resolver.js +122 -0
- package/dist/token-resolver.js.map +1 -0
- package/dist/token-validation.d.ts +432 -0
- package/dist/token-validation.d.ts.map +1 -0
- package/dist/token-validation.js +140 -0
- package/dist/token-validation.js.map +1 -0
- package/dist/tokens.d.ts +158 -0
- package/dist/tokens.d.ts.map +1 -0
- package/dist/tokens.js +10 -0
- package/dist/tokens.js.map +1 -0
- package/dist/types.d.ts +77 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1,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"}
|