intent-core 0.1.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/LICENSE +21 -0
- package/README.md +34 -0
- package/dist/compiler/index.d.ts +53 -0
- package/dist/compiler/index.d.ts.map +1 -0
- package/dist/compiler/index.js +147 -0
- package/dist/compiler/index.js.map +1 -0
- package/dist/compiler/parser.d.ts +25 -0
- package/dist/compiler/parser.d.ts.map +1 -0
- package/dist/compiler/parser.js +198 -0
- package/dist/compiler/parser.js.map +1 -0
- package/dist/generator/ai-manifest.d.ts +14 -0
- package/dist/generator/ai-manifest.d.ts.map +1 -0
- package/dist/generator/ai-manifest.js +276 -0
- package/dist/generator/ai-manifest.js.map +1 -0
- package/dist/generator/css.d.ts +16 -0
- package/dist/generator/css.d.ts.map +1 -0
- package/dist/generator/css.js +230 -0
- package/dist/generator/css.js.map +1 -0
- package/dist/generator/types.d.ts +11 -0
- package/dist/generator/types.d.ts.map +1 -0
- package/dist/generator/types.js +229 -0
- package/dist/generator/types.js.map +1 -0
- package/dist/index.d.ts +47 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +51 -0
- package/dist/index.js.map +1 -0
- package/dist/schema/define.d.ts +60 -0
- package/dist/schema/define.d.ts.map +1 -0
- package/dist/schema/define.js +167 -0
- package/dist/schema/define.js.map +1 -0
- package/dist/types/index.d.ts +156 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/validator/constraints.d.ts +16 -0
- package/dist/validator/constraints.d.ts.map +1 -0
- package/dist/validator/constraints.js +168 -0
- package/dist/validator/constraints.js.map +1 -0
- package/dist/validator/index.d.ts +22 -0
- package/dist/validator/index.d.ts.map +1 -0
- package/dist/validator/index.js +321 -0
- package/dist/validator/index.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Manifest Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates AI-friendly metadata for LLM consumption.
|
|
5
|
+
*/
|
|
6
|
+
import { generateValidCombinations } from '../validator/constraints.js';
|
|
7
|
+
// ============================================================================
|
|
8
|
+
// Component Description Generator
|
|
9
|
+
// ============================================================================
|
|
10
|
+
const COMPONENT_DESCRIPTIONS = {
|
|
11
|
+
Button: 'An interactive element that triggers an action when clicked or pressed.',
|
|
12
|
+
Stack: 'A layout component that distributes children along a vertical or horizontal axis with consistent spacing.',
|
|
13
|
+
Surface: 'A container that provides visual elevation and background treatment.',
|
|
14
|
+
Text: 'A typography component for displaying text with consistent styling.',
|
|
15
|
+
Input: 'A form control for accepting user text input.',
|
|
16
|
+
Card: 'A container for grouping related content and actions.',
|
|
17
|
+
Dialog: 'A modal window that interrupts the user flow to display important content.',
|
|
18
|
+
Avatar: 'A visual representation of a user or entity, typically as an image or initials.',
|
|
19
|
+
Badge: 'A small label for displaying status, count, or category.',
|
|
20
|
+
Divider: 'A visual separator between content sections.',
|
|
21
|
+
Icon: 'A symbolic visual element representing an action, object, or concept.',
|
|
22
|
+
List: 'A vertical grouping of related items.',
|
|
23
|
+
Grid: 'A two-dimensional layout system for arranging content in rows and columns.',
|
|
24
|
+
};
|
|
25
|
+
const PROPERTY_DESCRIPTIONS = {
|
|
26
|
+
Button: {
|
|
27
|
+
importance: 'Visual prominence level indicating the action significance',
|
|
28
|
+
size: 'Physical dimensions of the button',
|
|
29
|
+
state: 'Interactive state affecting appearance and behavior',
|
|
30
|
+
},
|
|
31
|
+
Stack: {
|
|
32
|
+
direction: 'Axis along which children are arranged',
|
|
33
|
+
gap: 'Space between child elements',
|
|
34
|
+
align: 'Cross-axis alignment of children',
|
|
35
|
+
justify: 'Main-axis distribution of children',
|
|
36
|
+
},
|
|
37
|
+
Surface: {
|
|
38
|
+
elevation: 'Visual depth indicating hierarchy level',
|
|
39
|
+
padding: 'Internal spacing from content to edges',
|
|
40
|
+
background: 'Background color treatment',
|
|
41
|
+
},
|
|
42
|
+
Text: {
|
|
43
|
+
size: 'Typography scale level',
|
|
44
|
+
weight: 'Font thickness',
|
|
45
|
+
color: 'Text color variant',
|
|
46
|
+
align: 'Horizontal text alignment',
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
const VALUE_DESCRIPTIONS = {
|
|
50
|
+
Button: {
|
|
51
|
+
importance: {
|
|
52
|
+
primary: 'The main call-to-action, highest prominence',
|
|
53
|
+
secondary: 'Alternative action, medium prominence',
|
|
54
|
+
ghost: 'Low emphasis, blends with background',
|
|
55
|
+
danger: 'Destructive action requiring caution',
|
|
56
|
+
},
|
|
57
|
+
size: {
|
|
58
|
+
sm: 'Compact size for dense UIs',
|
|
59
|
+
md: 'Standard size for most use cases',
|
|
60
|
+
lg: 'Large size for emphasis or touch targets',
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
Stack: {
|
|
64
|
+
direction: {
|
|
65
|
+
row: 'Horizontal layout, left to right',
|
|
66
|
+
column: 'Vertical layout, top to bottom',
|
|
67
|
+
},
|
|
68
|
+
gap: {
|
|
69
|
+
tight: 'Minimal spacing, 4px',
|
|
70
|
+
normal: 'Standard spacing, 8px',
|
|
71
|
+
relaxed: 'Comfortable spacing, 16px',
|
|
72
|
+
loose: 'Generous spacing, 32px',
|
|
73
|
+
},
|
|
74
|
+
align: {
|
|
75
|
+
start: 'Align to start of cross axis',
|
|
76
|
+
center: 'Center along cross axis',
|
|
77
|
+
end: 'Align to end of cross axis',
|
|
78
|
+
stretch: 'Fill available cross-axis space',
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
// ============================================================================
|
|
83
|
+
// Manifest Generation
|
|
84
|
+
// ============================================================================
|
|
85
|
+
export function generateAIManifest(config) {
|
|
86
|
+
return {
|
|
87
|
+
version: config.version || '0.1.0',
|
|
88
|
+
designSystem: config.name,
|
|
89
|
+
tokens: config.tokens,
|
|
90
|
+
components: Object.entries(config.components).map(([name, schema]) => generateComponentForAI(name, schema)),
|
|
91
|
+
semanticDescriptions: generateSemanticDescriptions(config),
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
function generateComponentForAI(name, schema) {
|
|
95
|
+
const descriptions = PROPERTY_DESCRIPTIONS[name] || {};
|
|
96
|
+
const valueDescriptions = VALUE_DESCRIPTIONS[name] || {};
|
|
97
|
+
return {
|
|
98
|
+
name,
|
|
99
|
+
description: schema.description || COMPONENT_DESCRIPTIONS[name] || `${name} component`,
|
|
100
|
+
properties: Object.entries(schema.properties).map(([propName, prop]) => ({
|
|
101
|
+
name: propName,
|
|
102
|
+
type: prop.type,
|
|
103
|
+
values: prop.type === 'enum' ? prop.values : undefined,
|
|
104
|
+
required: prop.required || false,
|
|
105
|
+
default: prop.default,
|
|
106
|
+
description: descriptions[propName],
|
|
107
|
+
valueDescriptions: valueDescriptions[propName],
|
|
108
|
+
})),
|
|
109
|
+
constraints: schema.constraints.map(c => {
|
|
110
|
+
const when = Object.entries(c.when).map(([k, v]) => `${k}=${JSON.stringify(v)}`).join(', ');
|
|
111
|
+
if (c.forbid) {
|
|
112
|
+
return `When ${when}: cannot use ${c.forbid.join(', ')}`;
|
|
113
|
+
}
|
|
114
|
+
if (c.require) {
|
|
115
|
+
const reqs = Object.entries(c.require).map(([k, v]) => `${k} in [${v.join(', ')}]`).join(', ');
|
|
116
|
+
return `When ${when}: requires ${reqs}`;
|
|
117
|
+
}
|
|
118
|
+
return `When ${when}: constraint applies`;
|
|
119
|
+
}),
|
|
120
|
+
examples: generateExamples(name, schema),
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
function generateExamples(name, schema) {
|
|
124
|
+
const valid = [];
|
|
125
|
+
const invalid = [];
|
|
126
|
+
// Generate valid examples from actual valid combinations
|
|
127
|
+
const combinations = generateValidCombinations(schema).slice(0, 3);
|
|
128
|
+
for (const combo of combinations) {
|
|
129
|
+
const props = Object.entries(combo)
|
|
130
|
+
.map(([k, v]) => `${k}="${v}"`)
|
|
131
|
+
.join(' ');
|
|
132
|
+
valid.push(`<${name} ${props}>Content</${name}>`);
|
|
133
|
+
}
|
|
134
|
+
// Add size-responsive example if applicable
|
|
135
|
+
const hasSize = 'size' in schema.properties;
|
|
136
|
+
if (hasSize && combinations.length > 0) {
|
|
137
|
+
const base = combinations[0];
|
|
138
|
+
const props = Object.entries(base)
|
|
139
|
+
.map(([k, v]) => k === 'size' ? `${k}="lg"` : `${k}="${v}"`)
|
|
140
|
+
.join(' ');
|
|
141
|
+
valid.push(`<${name} ${props}>Larger variant</${name}>`);
|
|
142
|
+
}
|
|
143
|
+
// Generate invalid examples from constraints
|
|
144
|
+
for (const constraint of schema.constraints.slice(0, 2)) {
|
|
145
|
+
const whenProps = Object.entries(constraint.when);
|
|
146
|
+
const baseProps = whenProps.map(([k, v]) => `${k}="${Array.isArray(v) ? v[0] : v}"`);
|
|
147
|
+
if (constraint.forbid && constraint.forbid.length > 0) {
|
|
148
|
+
const forbiddenProp = constraint.forbid[0];
|
|
149
|
+
// Try to find a value for the forbidden prop
|
|
150
|
+
const propDef = schema.properties[forbiddenProp];
|
|
151
|
+
if (propDef?.type === 'enum') {
|
|
152
|
+
const forbiddenValue = propDef.values[0];
|
|
153
|
+
invalid.push(`<${name} ${baseProps.join(' ')} ${forbiddenProp}="${forbiddenValue}">Invalid</${name}> <!-- Error: ${constraint.message || 'Constraint violation'} -->`);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
// Add generic anti-patterns
|
|
158
|
+
invalid.push(`<${name} className="flex items-center">Bad</${name}> <!-- Error: Use Intent props, not Tailwind utilities -->`);
|
|
159
|
+
return { valid, invalid };
|
|
160
|
+
}
|
|
161
|
+
function generateSemanticDescriptions(config) {
|
|
162
|
+
const descriptions = {};
|
|
163
|
+
// Token descriptions
|
|
164
|
+
for (const [category, tokens] of Object.entries(config.tokens)) {
|
|
165
|
+
if (!tokens)
|
|
166
|
+
continue;
|
|
167
|
+
for (const [name, value] of Object.entries(tokens)) {
|
|
168
|
+
descriptions[`token:${category}:${name}`] = `${category} token with value ${value}`;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
// Component descriptions
|
|
172
|
+
for (const [name, schema] of Object.entries(config.components)) {
|
|
173
|
+
descriptions[`component:${name}`] = schema.description || COMPONENT_DESCRIPTIONS[name] || `${name} component`;
|
|
174
|
+
// Property descriptions
|
|
175
|
+
for (const [propName, prop] of Object.entries(schema.properties)) {
|
|
176
|
+
const desc = PROPERTY_DESCRIPTIONS[name]?.[propName] || `${propName} property`;
|
|
177
|
+
descriptions[`prop:${name}:${propName}`] = desc;
|
|
178
|
+
// Value descriptions
|
|
179
|
+
if (prop.type === 'enum') {
|
|
180
|
+
for (const value of prop.values) {
|
|
181
|
+
const valueDesc = VALUE_DESCRIPTIONS[name]?.[propName]?.[value] || `${value} option`;
|
|
182
|
+
descriptions[`value:${name}:${propName}:${value}`] = valueDesc;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return descriptions;
|
|
188
|
+
}
|
|
189
|
+
export function generateAIPrompt(manifest, context) {
|
|
190
|
+
const lines = [];
|
|
191
|
+
lines.push('# Intent Framework Rules');
|
|
192
|
+
lines.push('');
|
|
193
|
+
lines.push('You are coding with Intent, a schema-first styling system.');
|
|
194
|
+
lines.push('');
|
|
195
|
+
lines.push('## Critical Constraints');
|
|
196
|
+
lines.push('');
|
|
197
|
+
lines.push('1. **NEVER use arbitrary values** (e.g., `pt-[7px]`). Use only schema tokens.');
|
|
198
|
+
lines.push('2. **NEVER use Tailwind utility classes directly**. Use Intent components: `<Stack>`, `<Button>`, `<Surface>`');
|
|
199
|
+
lines.push('3. **Check valid prop combinations** in the schema before using');
|
|
200
|
+
lines.push('4. **Prefer semantic props** over visual descriptions: `importance="primary"` not `color="blue"`');
|
|
201
|
+
lines.push('');
|
|
202
|
+
if (context?.component) {
|
|
203
|
+
const component = manifest.components.find(c => c.name === context.component);
|
|
204
|
+
if (component) {
|
|
205
|
+
lines.push(`## Component: ${component.name}`);
|
|
206
|
+
lines.push('');
|
|
207
|
+
lines.push(component.description);
|
|
208
|
+
lines.push('');
|
|
209
|
+
lines.push('### Properties');
|
|
210
|
+
lines.push('');
|
|
211
|
+
for (const prop of component.properties) {
|
|
212
|
+
const required = prop.required ? ' (required)' : '';
|
|
213
|
+
const def = prop.default !== undefined ? ` [default: ${prop.default}]` : '';
|
|
214
|
+
const values = prop.values ? ` = ${prop.values.join(' | ')}` : '';
|
|
215
|
+
lines.push(`- **${prop.name}**${required}${def}${values}`);
|
|
216
|
+
if (prop.description) {
|
|
217
|
+
lines.push(` - ${prop.description}`);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
lines.push('');
|
|
221
|
+
if (component.constraints.length > 0) {
|
|
222
|
+
lines.push('### Constraints');
|
|
223
|
+
lines.push('');
|
|
224
|
+
for (const constraint of component.constraints) {
|
|
225
|
+
lines.push(`- ${constraint}`);
|
|
226
|
+
}
|
|
227
|
+
lines.push('');
|
|
228
|
+
}
|
|
229
|
+
lines.push('### Examples');
|
|
230
|
+
lines.push('');
|
|
231
|
+
lines.push('**Valid:**');
|
|
232
|
+
for (const example of component.examples.valid) {
|
|
233
|
+
lines.push('```tsx');
|
|
234
|
+
lines.push(example);
|
|
235
|
+
lines.push('```');
|
|
236
|
+
}
|
|
237
|
+
lines.push('');
|
|
238
|
+
if (component.examples.invalid.length > 0) {
|
|
239
|
+
lines.push('**Invalid:**');
|
|
240
|
+
for (const example of component.examples.invalid) {
|
|
241
|
+
lines.push('```tsx');
|
|
242
|
+
lines.push(example);
|
|
243
|
+
lines.push('```');
|
|
244
|
+
}
|
|
245
|
+
lines.push('');
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
// Full system overview
|
|
251
|
+
lines.push('## Available Components');
|
|
252
|
+
lines.push('');
|
|
253
|
+
for (const component of manifest.components) {
|
|
254
|
+
lines.push(`- **${component.name}**: ${component.description}`);
|
|
255
|
+
}
|
|
256
|
+
lines.push('');
|
|
257
|
+
lines.push('## Design Tokens');
|
|
258
|
+
lines.push('');
|
|
259
|
+
for (const [category, tokens] of Object.entries(manifest.tokens)) {
|
|
260
|
+
if (!tokens)
|
|
261
|
+
continue;
|
|
262
|
+
lines.push(`### ${category}`);
|
|
263
|
+
lines.push(Object.keys(tokens).map(t => `- ${t}`).join('\n'));
|
|
264
|
+
lines.push('');
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
lines.push('## When Generating UI');
|
|
268
|
+
lines.push('');
|
|
269
|
+
lines.push('1. Import components from \'intent-react\'');
|
|
270
|
+
lines.push('2. Check the schema for valid enum values');
|
|
271
|
+
lines.push('3. If design calls for custom styling, ask to add token to schema first');
|
|
272
|
+
lines.push('4. Run `intent validate` before finishing');
|
|
273
|
+
lines.push('');
|
|
274
|
+
return lines.join('\n');
|
|
275
|
+
}
|
|
276
|
+
//# sourceMappingURL=ai-manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-manifest.js","sourceRoot":"","sources":["../../src/generator/ai-manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CSS Generator
|
|
3
|
+
*
|
|
4
|
+
* Compiles component schemas into optimized CSS with semantic class names.
|
|
5
|
+
* Uses per-prop attribute selectors to avoid combinatorial explosion.
|
|
6
|
+
*/
|
|
7
|
+
import type { DesignSystemConfig, ComponentSchema, TokenRegistry, CompiledStyles } from '../types/index.js';
|
|
8
|
+
export declare function generateCSSVariables(tokens: TokenRegistry, prefix?: string): string;
|
|
9
|
+
export declare function generateDarkModeVariables(tokens: TokenRegistry, darkTokens: Partial<TokenRegistry>, prefix?: string): string;
|
|
10
|
+
export declare function compileComponent(schema: ComponentSchema, config: DesignSystemConfig): CompiledStyles;
|
|
11
|
+
export interface CompilationOptions {
|
|
12
|
+
minify?: boolean;
|
|
13
|
+
includeSourceMap?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare function compileSystem(config: DesignSystemConfig, options?: CompilationOptions): string;
|
|
16
|
+
//# sourceMappingURL=css.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css.d.ts","sourceRoot":"","sources":["../../src/generator/css.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAClB,eAAe,EAGf,aAAa,EACb,cAAc,EACf,MAAM,mBAAmB,CAAC;AAM3B,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,SAAW,GAAG,MAAM,CAcrF;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,OAAO,CAAC,aAAa,CAAC,EAClC,MAAM,SAAW,GAChB,MAAM,CA2BR;AAwID,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,kBAAkB,GACzB,cAAc,CAqEhB;AAMD,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,kBAAkB,EAC1B,OAAO,GAAE,kBAAuB,GAC/B,MAAM,CAmCR"}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CSS Generator
|
|
3
|
+
*
|
|
4
|
+
* Compiles component schemas into optimized CSS with semantic class names.
|
|
5
|
+
* Uses per-prop attribute selectors to avoid combinatorial explosion.
|
|
6
|
+
*/
|
|
7
|
+
// ============================================================================
|
|
8
|
+
// CSS Variable Generation
|
|
9
|
+
// ============================================================================
|
|
10
|
+
export function generateCSSVariables(tokens, prefix = 'intent') {
|
|
11
|
+
const lines = [':root {'];
|
|
12
|
+
for (const [category, values] of Object.entries(tokens)) {
|
|
13
|
+
if (!values)
|
|
14
|
+
continue;
|
|
15
|
+
for (const [name, value] of Object.entries(values)) {
|
|
16
|
+
const varName = `--${prefix}-${category}-${name}`;
|
|
17
|
+
lines.push(` ${varName}: ${value};`);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
lines.push('}');
|
|
21
|
+
return lines.join('\n');
|
|
22
|
+
}
|
|
23
|
+
export function generateDarkModeVariables(tokens, darkTokens, prefix = 'intent') {
|
|
24
|
+
const declarations = [];
|
|
25
|
+
for (const [category, values] of Object.entries(darkTokens)) {
|
|
26
|
+
if (!values)
|
|
27
|
+
continue;
|
|
28
|
+
for (const [name, value] of Object.entries(values)) {
|
|
29
|
+
const varName = `--${prefix}-${category}-${name}`;
|
|
30
|
+
declarations.push(` ${varName}: ${value};`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const lines = [];
|
|
34
|
+
// System preference
|
|
35
|
+
lines.push('@media (prefers-color-scheme: dark) {');
|
|
36
|
+
lines.push(' :root {');
|
|
37
|
+
lines.push(...declarations.map(d => ' ' + d));
|
|
38
|
+
lines.push(' }');
|
|
39
|
+
lines.push('}');
|
|
40
|
+
lines.push('');
|
|
41
|
+
// Manual toggle class
|
|
42
|
+
lines.push(':root.dark {');
|
|
43
|
+
lines.push(...declarations);
|
|
44
|
+
lines.push('}');
|
|
45
|
+
return lines.join('\n');
|
|
46
|
+
}
|
|
47
|
+
// ============================================================================
|
|
48
|
+
// Class Name Generation
|
|
49
|
+
// ============================================================================
|
|
50
|
+
function generateClassName(component, prop, value, prefix = 'intent') {
|
|
51
|
+
// Convert camelCase to kebab-case
|
|
52
|
+
const kebabProp = prop.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
|
|
53
|
+
const kebabComponent = component.toLowerCase();
|
|
54
|
+
return `.${prefix}-${kebabComponent}[data-${kebabProp}="${value}"]`;
|
|
55
|
+
}
|
|
56
|
+
// ============================================================================
|
|
57
|
+
// Value Resolution
|
|
58
|
+
// ============================================================================
|
|
59
|
+
function resolveValue(value, tokens, prefix = 'intent') {
|
|
60
|
+
// Special literal values that should never be resolved as tokens
|
|
61
|
+
const LITERAL_VALUES = ['none', 'transparent', 'inherit', 'initial', 'unset', 'auto'];
|
|
62
|
+
// Try exact match first (single-word token key)
|
|
63
|
+
if (/^[a-zA-Z][\w-]*$/.test(value)) {
|
|
64
|
+
// Check if it's a literal CSS value
|
|
65
|
+
if (LITERAL_VALUES.includes(value)) {
|
|
66
|
+
return value;
|
|
67
|
+
}
|
|
68
|
+
// Try direct lookup: value is the key in some category
|
|
69
|
+
// e.g., 'brand-primary' in color category
|
|
70
|
+
for (const [category, tokenSet] of Object.entries(tokens)) {
|
|
71
|
+
if (tokenSet && value in tokenSet) {
|
|
72
|
+
return `var(--${prefix}-${category}-${value})`;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Try category-prefixed lookup: "radius-md" → category "radius", key "md"
|
|
76
|
+
// Also handles "elevation-low" → category "elevation", key "low"
|
|
77
|
+
for (const [category, tokenSet] of Object.entries(tokens)) {
|
|
78
|
+
if (!tokenSet)
|
|
79
|
+
continue;
|
|
80
|
+
if (value.startsWith(category + '-')) {
|
|
81
|
+
const key = value.slice(category.length + 1);
|
|
82
|
+
if (key in tokenSet) {
|
|
83
|
+
return `var(--${prefix}-${category}-${key})`;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// Not a token reference, return as-is
|
|
88
|
+
return value;
|
|
89
|
+
}
|
|
90
|
+
// Multi-word value: resolve each word independently
|
|
91
|
+
// Handles "tight compact" → "var(--intent-space-tight) var(--intent-space-compact)"
|
|
92
|
+
// Handles "1px solid border-default" → "1px solid var(--intent-color-border-default)"
|
|
93
|
+
const words = value.split(/\s+/);
|
|
94
|
+
if (words.length > 1) {
|
|
95
|
+
return words.map(word => resolveValue(word, tokens, prefix)).join(' ');
|
|
96
|
+
}
|
|
97
|
+
return value;
|
|
98
|
+
}
|
|
99
|
+
function resolveStyleValue(value, tokens, propValues, prefix = 'intent') {
|
|
100
|
+
if (typeof value === 'string') {
|
|
101
|
+
return resolveValue(value, tokens, prefix);
|
|
102
|
+
}
|
|
103
|
+
// Handle responsive/size-based objects
|
|
104
|
+
if (typeof value === 'object' && value !== null) {
|
|
105
|
+
// Check if it has a key that matches current prop values
|
|
106
|
+
for (const [key, val] of Object.entries(value)) {
|
|
107
|
+
// Check if this key matches any of the current prop values
|
|
108
|
+
if (propValues[key] !== undefined) {
|
|
109
|
+
return resolveValue(val, tokens, prefix);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// Return first value as fallback
|
|
113
|
+
const firstValue = Object.values(value)[0];
|
|
114
|
+
return resolveValue(firstValue, tokens, prefix);
|
|
115
|
+
}
|
|
116
|
+
return String(value);
|
|
117
|
+
}
|
|
118
|
+
// ============================================================================
|
|
119
|
+
// Style Generation
|
|
120
|
+
// ============================================================================
|
|
121
|
+
function generateCSSRule(selector, styles, tokens, propValues, prefix = 'intent') {
|
|
122
|
+
const declarations = [];
|
|
123
|
+
for (const [property, value] of Object.entries(styles)) {
|
|
124
|
+
// Convert camelCase to kebab-case for CSS properties
|
|
125
|
+
const cssProperty = property.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
|
|
126
|
+
const resolvedValue = resolveStyleValue(value, tokens, propValues, prefix);
|
|
127
|
+
declarations.push(` ${cssProperty}: ${resolvedValue};`);
|
|
128
|
+
}
|
|
129
|
+
if (declarations.length === 0) {
|
|
130
|
+
return '';
|
|
131
|
+
}
|
|
132
|
+
return `${selector} {\n${declarations.join('\n')}\n}`;
|
|
133
|
+
}
|
|
134
|
+
// ============================================================================
|
|
135
|
+
// Component CSS Generation
|
|
136
|
+
// ============================================================================
|
|
137
|
+
function isConditionalMappingArray(value) {
|
|
138
|
+
return Array.isArray(value) && value.length > 0 &&
|
|
139
|
+
typeof value[0] === 'object' && value[0] !== null &&
|
|
140
|
+
'condition' in value[0] && 'styles' in value[0];
|
|
141
|
+
}
|
|
142
|
+
export function compileComponent(schema, config) {
|
|
143
|
+
const lines = [];
|
|
144
|
+
const classes = [];
|
|
145
|
+
const prefix = config.settings?.cssPrefix || 'intent';
|
|
146
|
+
const tokens = config.tokens;
|
|
147
|
+
const baseClass = `${prefix}-${schema.name.toLowerCase()}`;
|
|
148
|
+
// Generate base styles
|
|
149
|
+
if (schema.baseStyles) {
|
|
150
|
+
const baseSelector = `.${baseClass}`;
|
|
151
|
+
const baseRule = generateCSSRule(baseSelector, schema.baseStyles, tokens, {}, prefix);
|
|
152
|
+
if (baseRule) {
|
|
153
|
+
lines.push(baseRule);
|
|
154
|
+
classes.push(baseClass);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
// Generate per-prop selectors (not cartesian product)
|
|
158
|
+
// Each mapping key like 'importance=primary' becomes .intent-button[data-importance="primary"]
|
|
159
|
+
for (const [mappingKey, mappingValue] of Object.entries(schema.mappings)) {
|
|
160
|
+
// Parse mapping key like "importance=primary"
|
|
161
|
+
const [mapProp, mapValue] = mappingKey.split('=');
|
|
162
|
+
// Generate simple selector for this prop=value
|
|
163
|
+
const selector = generateClassName(schema.name, mapProp, mapValue, prefix);
|
|
164
|
+
classes.push(`${baseClass}[data-${mapProp.toLowerCase()}="${mapValue}"]`);
|
|
165
|
+
if (isConditionalMappingArray(mappingValue)) {
|
|
166
|
+
// Conditional mapping array - generate compound selectors only for explicit conditions
|
|
167
|
+
for (const conditional of mappingValue) {
|
|
168
|
+
const conditions = Object.entries(conditional.condition);
|
|
169
|
+
if (conditions.length === 0)
|
|
170
|
+
continue;
|
|
171
|
+
// Build compound selector for additional conditions
|
|
172
|
+
const additionalSelectors = conditions.map(([condProp, condValue]) => `[data-${condProp.toLowerCase()}="${condValue}"]`);
|
|
173
|
+
const compoundSelector = selector + additionalSelectors.join('');
|
|
174
|
+
const rule = generateCSSRule(compoundSelector, conditional.styles, tokens, { [mapProp]: mapValue, ...conditional.condition }, prefix);
|
|
175
|
+
if (rule) {
|
|
176
|
+
lines.push(rule);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
// Simple mapping or responsive object - one rule per prop=value
|
|
182
|
+
const rule = generateCSSRule(selector, mappingValue, tokens, { [mapProp]: mapValue }, prefix);
|
|
183
|
+
if (rule) {
|
|
184
|
+
lines.push(rule);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
return {
|
|
189
|
+
css: lines.join('\n\n'),
|
|
190
|
+
classes,
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
export function compileSystem(config, options = {}) {
|
|
194
|
+
const lines = [];
|
|
195
|
+
const prefix = config.settings?.cssPrefix || 'intent';
|
|
196
|
+
// Add CSS reset for Intent components
|
|
197
|
+
lines.push(`/* Intent Design System: ${config.name} v${config.version || '0.1.0'} */`);
|
|
198
|
+
lines.push('');
|
|
199
|
+
// Generate CSS variables
|
|
200
|
+
if (config.settings?.generateCSSVariables !== false) {
|
|
201
|
+
lines.push(generateCSSVariables(config.tokens, prefix));
|
|
202
|
+
lines.push('');
|
|
203
|
+
// Generate dark mode overrides
|
|
204
|
+
if (config.darkTokens) {
|
|
205
|
+
lines.push(generateDarkModeVariables(config.tokens, config.darkTokens, prefix));
|
|
206
|
+
lines.push('');
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
// Generate component styles
|
|
210
|
+
for (const [name, schema] of Object.entries(config.components)) {
|
|
211
|
+
lines.push(`/* Component: ${name} */`);
|
|
212
|
+
const compiled = compileComponent(schema, config);
|
|
213
|
+
lines.push(compiled.css);
|
|
214
|
+
lines.push('');
|
|
215
|
+
}
|
|
216
|
+
let css = lines.join('\n');
|
|
217
|
+
if (options.minify) {
|
|
218
|
+
css = minifyCSS(css);
|
|
219
|
+
}
|
|
220
|
+
return css;
|
|
221
|
+
}
|
|
222
|
+
function minifyCSS(css) {
|
|
223
|
+
return css
|
|
224
|
+
.replace(/\/\*[\s\S]*?\*\//g, '') // Remove comments
|
|
225
|
+
.replace(/\s+/g, ' ') // Collapse whitespace
|
|
226
|
+
.replace(/\s*([{}:;,])\s*/g, '$1') // Remove space around punctuation
|
|
227
|
+
.replace(/;}/g, '}') // Remove last semicolon in block
|
|
228
|
+
.trim();
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css.js","sourceRoot":"","sources":["../../src/generator/css.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript Type Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates strict TypeScript types from component schemas.
|
|
5
|
+
*/
|
|
6
|
+
import type { DesignSystemConfig, ComponentSchema } from '../types/index.js';
|
|
7
|
+
export declare function generateComponentTypes(schema: ComponentSchema): string;
|
|
8
|
+
export declare function generateTokenTypes(tokens: DesignSystemConfig['tokens']): string;
|
|
9
|
+
export declare function generateSystemTypes(config: DesignSystemConfig): string;
|
|
10
|
+
export declare function generateRuntimeTypes(config: DesignSystemConfig): string;
|
|
11
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/generator/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAsB,MAAM,mBAAmB,CAAC;AA4EjG,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAwCtE;AAMD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC,GAAG,MAAM,CAiC/E;AAMD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CA+DtE;AAMD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAiCvE"}
|