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.
Files changed (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +34 -0
  3. package/dist/compiler/index.d.ts +53 -0
  4. package/dist/compiler/index.d.ts.map +1 -0
  5. package/dist/compiler/index.js +147 -0
  6. package/dist/compiler/index.js.map +1 -0
  7. package/dist/compiler/parser.d.ts +25 -0
  8. package/dist/compiler/parser.d.ts.map +1 -0
  9. package/dist/compiler/parser.js +198 -0
  10. package/dist/compiler/parser.js.map +1 -0
  11. package/dist/generator/ai-manifest.d.ts +14 -0
  12. package/dist/generator/ai-manifest.d.ts.map +1 -0
  13. package/dist/generator/ai-manifest.js +276 -0
  14. package/dist/generator/ai-manifest.js.map +1 -0
  15. package/dist/generator/css.d.ts +16 -0
  16. package/dist/generator/css.d.ts.map +1 -0
  17. package/dist/generator/css.js +230 -0
  18. package/dist/generator/css.js.map +1 -0
  19. package/dist/generator/types.d.ts +11 -0
  20. package/dist/generator/types.d.ts.map +1 -0
  21. package/dist/generator/types.js +229 -0
  22. package/dist/generator/types.js.map +1 -0
  23. package/dist/index.d.ts +47 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +51 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/schema/define.d.ts +60 -0
  28. package/dist/schema/define.d.ts.map +1 -0
  29. package/dist/schema/define.js +167 -0
  30. package/dist/schema/define.js.map +1 -0
  31. package/dist/types/index.d.ts +156 -0
  32. package/dist/types/index.d.ts.map +1 -0
  33. package/dist/types/index.js +5 -0
  34. package/dist/types/index.js.map +1 -0
  35. package/dist/validator/constraints.d.ts +16 -0
  36. package/dist/validator/constraints.d.ts.map +1 -0
  37. package/dist/validator/constraints.js +168 -0
  38. package/dist/validator/constraints.js.map +1 -0
  39. package/dist/validator/index.d.ts +22 -0
  40. package/dist/validator/index.d.ts.map +1 -0
  41. package/dist/validator/index.js +321 -0
  42. package/dist/validator/index.js.map +1 -0
  43. package/package.json +61 -0
@@ -0,0 +1,229 @@
1
+ /**
2
+ * TypeScript Type Generator
3
+ *
4
+ * Generates strict TypeScript types from component schemas.
5
+ */
6
+ import { generateValidCombinations } from '../validator/constraints.js';
7
+ // ============================================================================
8
+ // Type Generation Helpers
9
+ // ============================================================================
10
+ function propertyToTypeScript(propName, prop) {
11
+ const type = getTypeString(prop);
12
+ const optional = isOptional(prop) ? '?' : '';
13
+ return ` ${propName}${optional}: ${type};`;
14
+ }
15
+ function getTypeString(prop) {
16
+ switch (prop.type) {
17
+ case 'enum':
18
+ return prop.values.map(v => `'${v}'`).join(' | ');
19
+ case 'boolean':
20
+ return 'boolean';
21
+ case 'string':
22
+ return 'string';
23
+ case 'number':
24
+ return 'number';
25
+ default:
26
+ return 'unknown';
27
+ }
28
+ }
29
+ function isOptional(prop) {
30
+ return !prop.required;
31
+ }
32
+ function generateJSDoc(schema) {
33
+ const lines = ['/**'];
34
+ if (schema.description) {
35
+ lines.push(` * ${schema.description}`);
36
+ lines.push(' *');
37
+ }
38
+ // Add prop documentation
39
+ for (const [name, prop] of Object.entries(schema.properties)) {
40
+ const type = getTypeString(prop);
41
+ const def = 'default' in prop ? ` (default: ${JSON.stringify(prop.default)})` : '';
42
+ lines.push(` * @property {${type}} ${name}${def}`);
43
+ }
44
+ // Add constraint documentation
45
+ if (schema.constraints.length > 0) {
46
+ lines.push(' *');
47
+ lines.push(' * Constraints:');
48
+ for (const constraint of schema.constraints) {
49
+ const when = Object.entries(constraint.when)
50
+ .map(([k, v]) => `${k}=${JSON.stringify(v)}`)
51
+ .join(', ');
52
+ if (constraint.forbid) {
53
+ lines.push(` * - When ${when}: cannot use ${constraint.forbid.join(', ')}`);
54
+ }
55
+ if (constraint.require) {
56
+ const reqs = Object.entries(constraint.require)
57
+ .map(([k, v]) => `${k} in [${v.join(', ')}]`)
58
+ .join(', ');
59
+ lines.push(` * - When ${when}: requires ${reqs}`);
60
+ }
61
+ }
62
+ }
63
+ lines.push(' */');
64
+ return lines.join('\n');
65
+ }
66
+ // ============================================================================
67
+ // Component Type Generation
68
+ // ============================================================================
69
+ export function generateComponentTypes(schema) {
70
+ const lines = [];
71
+ const componentName = schema.name;
72
+ const propsName = `${componentName}Props`;
73
+ // JSDoc
74
+ lines.push(generateJSDoc(schema));
75
+ // Props interface
76
+ lines.push(`export interface ${propsName} {`);
77
+ for (const [propName, prop] of Object.entries(schema.properties)) {
78
+ lines.push(propertyToTypeScript(propName, prop));
79
+ }
80
+ // Add HTML props extension point
81
+ lines.push(` // HTML attributes are filtered - only Intent props allowed`);
82
+ lines.push(` [key: string]: unknown;`);
83
+ lines.push('}');
84
+ lines.push('');
85
+ // Valid combinations type (for advanced use)
86
+ const combinations = generateValidCombinations(schema);
87
+ if (combinations.length > 0 && combinations.length <= 20) {
88
+ lines.push(`/** Valid prop combinations for ${componentName} */`);
89
+ lines.push(`export type ${componentName}ValidCombinations =`);
90
+ const comboStrings = combinations.map(combo => {
91
+ const props = Object.entries(combo)
92
+ .map(([k, v]) => `${k}: '${v}'`)
93
+ .join('; ');
94
+ return ` | { ${props} }`;
95
+ });
96
+ lines.push(comboStrings.join('\n'));
97
+ lines.push(';');
98
+ lines.push('');
99
+ }
100
+ return lines.join('\n');
101
+ }
102
+ // ============================================================================
103
+ // Token Type Generation
104
+ // ============================================================================
105
+ export function generateTokenTypes(tokens) {
106
+ const lines = [];
107
+ lines.push('/** Design Tokens */');
108
+ lines.push('');
109
+ for (const [category, values] of Object.entries(tokens)) {
110
+ if (!values || Object.keys(values).length === 0)
111
+ continue;
112
+ const typeName = `${capitalize(category)}Token`;
113
+ const keys = Object.keys(values);
114
+ lines.push(`/** Valid ${category} tokens */`);
115
+ lines.push(`export type ${typeName} =`);
116
+ keys.forEach((key, i) => {
117
+ const sep = i < keys.length - 1 ? ' |' : ';';
118
+ lines.push(` | '${key}'${sep}`);
119
+ });
120
+ lines.push('');
121
+ }
122
+ // Token registry type
123
+ lines.push('/** Complete token registry */');
124
+ lines.push('export interface TokenRegistry {');
125
+ for (const category of Object.keys(tokens)) {
126
+ if (tokens[category]) {
127
+ lines.push(` ${category}: ${capitalize(category)}Token;`);
128
+ }
129
+ }
130
+ lines.push('}');
131
+ lines.push('');
132
+ return lines.join('\n');
133
+ }
134
+ // ============================================================================
135
+ // Full System Type Generation
136
+ // ============================================================================
137
+ export function generateSystemTypes(config) {
138
+ const lines = [];
139
+ // Header
140
+ lines.push(`// Generated by Intent v${config.version || '0.1.0'}`);
141
+ lines.push(`// Design System: ${config.name}`);
142
+ lines.push('');
143
+ lines.push('/* eslint-disable */');
144
+ lines.push('// @ts-nocheck');
145
+ lines.push('');
146
+ // Token types
147
+ lines.push('// ============================================================================');
148
+ lines.push('// TOKENS');
149
+ lines.push('// ============================================================================');
150
+ lines.push('');
151
+ lines.push(generateTokenTypes(config.tokens));
152
+ // Component types
153
+ lines.push('// ============================================================================');
154
+ lines.push('// COMPONENTS');
155
+ lines.push('// ============================================================================');
156
+ lines.push('');
157
+ const componentImports = [];
158
+ const componentExports = [];
159
+ for (const [name, schema] of Object.entries(config.components)) {
160
+ lines.push(generateComponentTypes(schema));
161
+ componentImports.push(`${name}Props`);
162
+ componentExports.push(name);
163
+ }
164
+ // Component registry
165
+ lines.push('// ============================================================================');
166
+ lines.push('// COMPONENT REGISTRY');
167
+ lines.push('// ============================================================================');
168
+ lines.push('');
169
+ lines.push('/** All available Intent components */');
170
+ lines.push(`export type IntentComponent =`);
171
+ componentExports.forEach((name, i) => {
172
+ const sep = i < componentExports.length - 1 ? ' |' : ';';
173
+ lines.push(` | '${name}'${sep}`);
174
+ });
175
+ lines.push('');
176
+ lines.push('/** Props for each component */');
177
+ lines.push('export interface IntentProps {');
178
+ for (const name of componentExports) {
179
+ lines.push(` ${name}: ${name}Props;`);
180
+ }
181
+ lines.push('}');
182
+ lines.push('');
183
+ // Re-exports
184
+ lines.push('// ============================================================================');
185
+ lines.push('// RE-EXPORTS');
186
+ lines.push('// ============================================================================');
187
+ lines.push('');
188
+ lines.push(`export type { ${componentImports.join(', ')} };`);
189
+ lines.push('');
190
+ return lines.join('\n');
191
+ }
192
+ // ============================================================================
193
+ // Runtime Validation Types
194
+ // ============================================================================
195
+ export function generateRuntimeTypes(config) {
196
+ const lines = [];
197
+ lines.push('/** Runtime schema definitions for validation */');
198
+ lines.push('');
199
+ lines.push('export const INTENT_SCHEMA = {');
200
+ lines.push(` name: '${config.name}',`);
201
+ lines.push(` version: '${config.version || '0.1.0'}',`);
202
+ lines.push(' tokens: ' + JSON.stringify(config.tokens, null, 2).replace(/\n/g, '\n ') + ',');
203
+ lines.push(' components: {');
204
+ for (const [name, schema] of Object.entries(config.components)) {
205
+ lines.push(` ${name}: {`);
206
+ lines.push(` name: '${schema.name}',`);
207
+ lines.push(` description: '${schema.description || ''}',`);
208
+ lines.push(' properties: {');
209
+ for (const [propName, prop] of Object.entries(schema.properties)) {
210
+ lines.push(` ${propName}: ${JSON.stringify(prop)},`);
211
+ }
212
+ lines.push(' },');
213
+ lines.push(` constraints: ${JSON.stringify(schema.constraints)},`);
214
+ lines.push(' },');
215
+ }
216
+ lines.push(' },');
217
+ lines.push('} as const;');
218
+ lines.push('');
219
+ lines.push('export type IntentSchema = typeof INTENT_SCHEMA;');
220
+ lines.push('');
221
+ return lines.join('\n');
222
+ }
223
+ // ============================================================================
224
+ // Utility
225
+ // ============================================================================
226
+ function capitalize(str) {
227
+ return str.charAt(0).toUpperCase() + str.slice(1);
228
+ }
229
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/generator/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Intent Core
3
+ *
4
+ * Schema-first, AI-native styling framework core.
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * import { defineSystem, defineComponent, prop, when } from 'intent-core';
9
+ *
10
+ * const designSystem = defineSystem({
11
+ * name: 'MyDesignSystem',
12
+ * tokens: {
13
+ * color: {
14
+ * 'brand-primary': '#3B82F6',
15
+ * 'brand-secondary': '#64748B',
16
+ * },
17
+ * },
18
+ * components: {
19
+ * Button: defineComponent({
20
+ * name: 'Button',
21
+ * properties: {
22
+ * importance: prop.enum(['primary', 'secondary'], { required: true }),
23
+ * size: prop.enum(['sm', 'md', 'lg'], { default: 'md' }),
24
+ * },
25
+ * constraints: [
26
+ * when({ importance: 'ghost' }).forbid(['disabled']),
27
+ * ],
28
+ * mappings: {
29
+ * 'importance=primary': { background: 'brand-primary' },
30
+ * },
31
+ * }),
32
+ * },
33
+ * });
34
+ * ```
35
+ */
36
+ export { defineSystem, defineComponent, prop, when, forbid, require, } from './schema/define.js';
37
+ export { validateSchema, validateUsage, validateAllUsages, } from './validator/index.js';
38
+ export { validateConstraints, generateValidCombinations, suggestValidAlternatives, } from './validator/constraints.js';
39
+ export { compileComponent, compileSystem, generateCSSVariables, generateDarkModeVariables, } from './generator/css.js';
40
+ export { generateComponentTypes, generateTokenTypes, generateSystemTypes, generateRuntimeTypes, } from './generator/types.js';
41
+ export { generateAIManifest, generateAIPrompt, } from './generator/ai-manifest.js';
42
+ export { parseFile, parseFiles, parseSourceFile, } from './compiler/parser.js';
43
+ export type { TokenValue, TokenCategory, TokenRegistry, PropertyType, EnumProperty, BooleanProperty, StringProperty, NumberProperty, PropertyDefinition, PropertySet, ConstraintOperator, ConstraintCondition, ConstraintAction, Constraint, CSSProperty, TokenReference, StyleValue, VisualMapping, ConditionalMapping, ComponentSchema, DesignSystemConfig, DesignSystem, ValidationSeverity, ValidationIssue, ValidationResult, ComponentUsage, CompiledStyles, ComponentCompilation, CompilationOutput, ComponentSchemaForAI, AIManifest, } from './types/index.js';
44
+ export type { ParseOptions, ParsedResult, BatchParseResult, } from './compiler/parser.js';
45
+ export type { ValidatorOptions, UsageValidationContext, BatchUsage, } from './validator/index.js';
46
+ export declare const VERSION = "0.1.0";
47
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAGH,OAAO,EACL,YAAY,EACZ,eAAe,EACf,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,OAAO,GACR,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,cAAc,EACd,aAAa,EACb,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACL,SAAS,EACT,UAAU,EACV,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EAEV,UAAU,EACV,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,WAAW,EAGX,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,UAAU,EAGV,WAAW,EACX,cAAc,EACd,UAAU,EACV,aAAa,EACb,kBAAkB,EAGlB,eAAe,EACf,kBAAkB,EAClB,YAAY,EAGZ,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,cAAc,EAGd,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EAGjB,oBAAoB,EACpB,UAAU,GACX,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EACV,gBAAgB,EAChB,sBAAsB,EACtB,UAAU,GACX,MAAM,sBAAsB,CAAC;AAG9B,eAAO,MAAM,OAAO,UAAU,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Intent Core
3
+ *
4
+ * Schema-first, AI-native styling framework core.
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * import { defineSystem, defineComponent, prop, when } from 'intent-core';
9
+ *
10
+ * const designSystem = defineSystem({
11
+ * name: 'MyDesignSystem',
12
+ * tokens: {
13
+ * color: {
14
+ * 'brand-primary': '#3B82F6',
15
+ * 'brand-secondary': '#64748B',
16
+ * },
17
+ * },
18
+ * components: {
19
+ * Button: defineComponent({
20
+ * name: 'Button',
21
+ * properties: {
22
+ * importance: prop.enum(['primary', 'secondary'], { required: true }),
23
+ * size: prop.enum(['sm', 'md', 'lg'], { default: 'md' }),
24
+ * },
25
+ * constraints: [
26
+ * when({ importance: 'ghost' }).forbid(['disabled']),
27
+ * ],
28
+ * mappings: {
29
+ * 'importance=primary': { background: 'brand-primary' },
30
+ * },
31
+ * }),
32
+ * },
33
+ * });
34
+ * ```
35
+ */
36
+ // Schema Definition
37
+ export { defineSystem, defineComponent, prop, when, forbid, require, } from './schema/define.js';
38
+ // Validation
39
+ export { validateSchema, validateUsage, validateAllUsages, } from './validator/index.js';
40
+ export { validateConstraints, generateValidCombinations, suggestValidAlternatives, } from './validator/constraints.js';
41
+ // CSS Generation
42
+ export { compileComponent, compileSystem, generateCSSVariables, generateDarkModeVariables, } from './generator/css.js';
43
+ // Type Generation
44
+ export { generateComponentTypes, generateTokenTypes, generateSystemTypes, generateRuntimeTypes, } from './generator/types.js';
45
+ // AI Manifest
46
+ export { generateAIManifest, generateAIPrompt, } from './generator/ai-manifest.js';
47
+ // Parser
48
+ export { parseFile, parseFiles, parseSourceFile, } from './compiler/parser.js';
49
+ // Version
50
+ export const VERSION = '0.1.0';
51
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,oBAAoB;AACpB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,OAAO,GACR,MAAM,oBAAoB,CAAC;AAE5B,aAAa;AACb,OAAO,EACL,cAAc,EACd,aAAa,EACb,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,4BAA4B,CAAC;AAEpC,iBAAiB;AACjB,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAE5B,kBAAkB;AAClB,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAE9B,cAAc;AACd,OAAO,EACL,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AAEpC,SAAS;AACT,OAAO,EACL,SAAS,EACT,UAAU,EACV,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAgE9B,UAAU;AACV,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Schema Definition DSL
3
+ *
4
+ * Provides the `defineSystem` and `defineComponent` functions for creating
5
+ * type-safe, constraint-based design systems.
6
+ */
7
+ import type { DesignSystemConfig, ComponentSchema, TokenRegistry, PropertySet, Constraint, VisualMapping, ConditionalMapping } from '../types/index.js';
8
+ declare class ComponentBuilder {
9
+ private schema;
10
+ name(name: string): this;
11
+ description(desc: string): this;
12
+ properties(props: PropertySet): this;
13
+ constrain(...constraints: Constraint[]): this;
14
+ map(mappings: Record<string, VisualMapping | ConditionalMapping[]>): this;
15
+ base(styles: VisualMapping): this;
16
+ build(): ComponentSchema;
17
+ }
18
+ export declare function defineComponent(config: (builder: ComponentBuilder) => ComponentBuilder): ComponentSchema;
19
+ export declare function defineComponent(config: Partial<ComponentSchema>): ComponentSchema;
20
+ declare class SystemBuilder {
21
+ private config;
22
+ name(name: string): this;
23
+ version(version: string): this;
24
+ tokens(tokens: TokenRegistry): this;
25
+ component(name: string, schema: ComponentSchema | ((builder: ComponentBuilder) => ComponentBuilder)): this;
26
+ settings(settings: DesignSystemConfig['settings']): this;
27
+ build(): DesignSystemConfig;
28
+ }
29
+ export declare function defineSystem(config: (builder: SystemBuilder) => SystemBuilder): DesignSystemConfig;
30
+ export declare function defineSystem(config: Omit<DesignSystemConfig, 'components'> & {
31
+ components: Record<string, ComponentSchema>;
32
+ }): DesignSystemConfig;
33
+ export declare const prop: {
34
+ enum: (values: string[], config?: {
35
+ required?: boolean;
36
+ default?: string;
37
+ }) => import("../types/index.js").EnumProperty;
38
+ boolean: (config?: {
39
+ required?: boolean;
40
+ default?: boolean;
41
+ }) => import("../types/index.js").BooleanProperty;
42
+ string: (config?: {
43
+ required?: boolean;
44
+ default?: string;
45
+ }) => import("../types/index.js").StringProperty;
46
+ number: (config?: {
47
+ required?: boolean;
48
+ default?: number;
49
+ min?: number;
50
+ max?: number;
51
+ }) => import("../types/index.js").NumberProperty;
52
+ };
53
+ export declare function when(condition: Record<string, string | string[]>): {
54
+ forbid: (props: string[], message?: string) => Constraint;
55
+ require: (requirements: Record<string, string[]>, message?: string) => Constraint;
56
+ };
57
+ export declare function forbid(props: string[], message?: string): Omit<Constraint, 'when'>;
58
+ export declare function require(requirements: Record<string, string[]>, message?: string): Omit<Constraint, 'when'>;
59
+ export {};
60
+ //# sourceMappingURL=define.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../../src/schema/define.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,167 @@
1
+ /**
2
+ * Schema Definition DSL
3
+ *
4
+ * Provides the `defineSystem` and `defineComponent` functions for creating
5
+ * type-safe, constraint-based design systems.
6
+ */
7
+ // ============================================================================
8
+ // Component Builder
9
+ // ============================================================================
10
+ class ComponentBuilder {
11
+ schema = {
12
+ constraints: [],
13
+ mappings: {},
14
+ };
15
+ name(name) {
16
+ this.schema.name = name;
17
+ return this;
18
+ }
19
+ description(desc) {
20
+ this.schema.description = desc;
21
+ return this;
22
+ }
23
+ properties(props) {
24
+ this.schema.properties = props;
25
+ return this;
26
+ }
27
+ constrain(...constraints) {
28
+ this.schema.constraints = [...(this.schema.constraints || []), ...constraints];
29
+ return this;
30
+ }
31
+ map(mappings) {
32
+ this.schema.mappings = mappings;
33
+ return this;
34
+ }
35
+ base(styles) {
36
+ this.schema.baseStyles = styles;
37
+ return this;
38
+ }
39
+ build() {
40
+ if (!this.schema.name) {
41
+ throw new Error('Component must have a name');
42
+ }
43
+ if (!this.schema.properties) {
44
+ throw new Error(`Component "${this.schema.name}" must define properties`);
45
+ }
46
+ return this.schema;
47
+ }
48
+ }
49
+ export function defineComponent(config) {
50
+ if (typeof config === 'function') {
51
+ const builder = new ComponentBuilder();
52
+ return config(builder).build();
53
+ }
54
+ // Direct object configuration
55
+ if (!config.name) {
56
+ throw new Error('Component must have a name');
57
+ }
58
+ if (!config.properties) {
59
+ throw new Error(`Component "${config.name}" must define properties`);
60
+ }
61
+ return {
62
+ constraints: [],
63
+ mappings: {},
64
+ ...config,
65
+ };
66
+ }
67
+ class SystemBuilder {
68
+ config = {
69
+ name: '',
70
+ tokens: {},
71
+ components: {},
72
+ };
73
+ name(name) {
74
+ this.config.name = name;
75
+ return this;
76
+ }
77
+ version(version) {
78
+ this.config.version = version;
79
+ return this;
80
+ }
81
+ tokens(tokens) {
82
+ this.config.tokens = tokens;
83
+ return this;
84
+ }
85
+ component(name, schema) {
86
+ const resolvedSchema = typeof schema === 'function'
87
+ ? schema(new ComponentBuilder().name(name)).build()
88
+ : schema;
89
+ this.config.components[name] = resolvedSchema;
90
+ return this;
91
+ }
92
+ settings(settings) {
93
+ this.config.settings = settings;
94
+ return this;
95
+ }
96
+ build() {
97
+ if (!this.config.name) {
98
+ throw new Error('Design system must have a name');
99
+ }
100
+ return {
101
+ name: this.config.name,
102
+ version: this.config.version,
103
+ tokens: this.config.tokens,
104
+ components: this.config.components,
105
+ settings: this.config.settings,
106
+ };
107
+ }
108
+ }
109
+ export function defineSystem(config) {
110
+ if (typeof config === 'function') {
111
+ const builder = new SystemBuilder();
112
+ return config(builder).build();
113
+ }
114
+ return config;
115
+ }
116
+ // ============================================================================
117
+ // Property Helpers
118
+ // ============================================================================
119
+ export const prop = {
120
+ enum: (values, config = {}) => ({
121
+ type: 'enum',
122
+ values,
123
+ ...config,
124
+ }),
125
+ boolean: (config = {}) => ({
126
+ type: 'boolean',
127
+ ...config,
128
+ }),
129
+ string: (config = {}) => ({
130
+ type: 'string',
131
+ ...config,
132
+ }),
133
+ number: (config = {}) => ({
134
+ type: 'number',
135
+ ...config,
136
+ }),
137
+ };
138
+ // ============================================================================
139
+ // Constraint Helpers
140
+ // ============================================================================
141
+ export function when(condition) {
142
+ return {
143
+ forbid: (props, message) => ({
144
+ when: condition,
145
+ forbid: props,
146
+ message,
147
+ }),
148
+ require: (requirements, message) => ({
149
+ when: condition,
150
+ require: requirements,
151
+ message,
152
+ }),
153
+ };
154
+ }
155
+ export function forbid(props, message) {
156
+ return {
157
+ forbid: props,
158
+ message,
159
+ };
160
+ }
161
+ export function require(requirements, message) {
162
+ return {
163
+ require: requirements,
164
+ message,
165
+ };
166
+ }
167
+ //# sourceMappingURL=define.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define.js","sourceRoot":"","sources":["../../src/schema/define.ts"],"names":[],"mappings":"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"}