@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,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @tekton-ui/core - Generator Utilities
|
|
3
|
+
* Common utility functions for code generators
|
|
4
|
+
* [SPEC-LAYOUT-002] [PHASE-3]
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Convert string to camelCase
|
|
8
|
+
*
|
|
9
|
+
* @param str - Input string
|
|
10
|
+
* @returns camelCase string
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* camelCase('user-profile-card'); // → 'userProfileCard'
|
|
15
|
+
* camelCase('UserProfileCard'); // → 'userProfileCard'
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export declare function camelCase(str: string): string;
|
|
19
|
+
/**
|
|
20
|
+
* Convert string to PascalCase
|
|
21
|
+
*
|
|
22
|
+
* @param str - Input string
|
|
23
|
+
* @returns PascalCase string
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* pascalCase('user-profile-card'); // → 'UserProfileCard'
|
|
28
|
+
* pascalCase('userProfileCard'); // → 'UserProfileCard'
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare function pascalCase(str: string): string;
|
|
32
|
+
/**
|
|
33
|
+
* Convert string to kebab-case
|
|
34
|
+
*
|
|
35
|
+
* @param str - Input string
|
|
36
|
+
* @returns kebab-case string
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* kebabCase('UserProfileCard'); // → 'user-profile-card'
|
|
41
|
+
* kebabCase('userProfileCard'); // → 'user-profile-card'
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export declare function kebabCase(str: string): string;
|
|
45
|
+
/**
|
|
46
|
+
* Format code with prettier (if available)
|
|
47
|
+
*
|
|
48
|
+
* @param code - Code string to format
|
|
49
|
+
* @param parser - Prettier parser to use
|
|
50
|
+
* @returns Formatted code
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```typescript
|
|
54
|
+
* const code = 'const x={a:1,b:2}';
|
|
55
|
+
* const formatted = formatCode(code, 'typescript');
|
|
56
|
+
* // → 'const x = { a: 1, b: 2 };\n'
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
export declare function formatCode(code: string, _parser?: 'typescript' | 'babel'): string;
|
|
60
|
+
/**
|
|
61
|
+
* Add indentation to each line
|
|
62
|
+
*
|
|
63
|
+
* @param code - Code string
|
|
64
|
+
* @param depth - Indentation depth
|
|
65
|
+
* @param indent - Spaces per indent (default: 2)
|
|
66
|
+
* @returns Indented code
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```typescript
|
|
70
|
+
* indent('const x = 1;\nconst y = 2;', 1);
|
|
71
|
+
* // → ' const x = 1;\n const y = 2;'
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
export declare function indent(code: string, depth: number, indent?: number): string;
|
|
75
|
+
/**
|
|
76
|
+
* Escape special characters for JSX text content
|
|
77
|
+
*
|
|
78
|
+
* @param text - Text to escape
|
|
79
|
+
* @returns Escaped text safe for JSX
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```typescript
|
|
83
|
+
* escapeJSX('Hello <world> & "friends"');
|
|
84
|
+
* // → 'Hello <world> & "friends"'
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
export declare function escapeJSX(text: string): string;
|
|
88
|
+
/**
|
|
89
|
+
* Check if a prop value needs to be wrapped in JSX expression
|
|
90
|
+
*
|
|
91
|
+
* @param value - Prop value
|
|
92
|
+
* @returns True if value needs JSX expression braces
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```typescript
|
|
96
|
+
* needsJSXExpression('hello'); // → false (string literal)
|
|
97
|
+
* needsJSXExpression(42); // → true (number)
|
|
98
|
+
* needsJSXExpression(true); // → true (boolean)
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
export declare function needsJSXExpression(value: unknown): boolean;
|
|
102
|
+
/**
|
|
103
|
+
* Convert prop value to JSX attribute value
|
|
104
|
+
*
|
|
105
|
+
* @param value - Prop value
|
|
106
|
+
* @returns JSX attribute value string
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* ```typescript
|
|
110
|
+
* propValueToJSX('hello'); // → '"hello"'
|
|
111
|
+
* propValueToJSX(42); // → '{42}'
|
|
112
|
+
* propValueToJSX(true); // → '{true}'
|
|
113
|
+
* propValueToJSX({ a: 1 }); // → '{{"a":1}}'
|
|
114
|
+
* ```
|
|
115
|
+
*/
|
|
116
|
+
export declare function propValueToJSX(value: unknown): string;
|
|
117
|
+
/**
|
|
118
|
+
* Generate import statements from dependencies
|
|
119
|
+
*
|
|
120
|
+
* @param dependencies - Module dependencies (module → named imports)
|
|
121
|
+
* @param format - Output format
|
|
122
|
+
* @returns Import statements
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* ```typescript
|
|
126
|
+
* generateImports({
|
|
127
|
+
* 'react': ['useState', 'useEffect'],
|
|
128
|
+
* 'styled-components': ['default as styled']
|
|
129
|
+
* }, 'typescript');
|
|
130
|
+
* // → "import { useState, useEffect } from 'react';\nimport styled from 'styled-components';\n"
|
|
131
|
+
* ```
|
|
132
|
+
*/
|
|
133
|
+
export declare function generateImports(dependencies: Record<string, string[]>, _format?: 'typescript' | 'javascript'): string;
|
|
134
|
+
/**
|
|
135
|
+
* Convert CSS variable reference to token name
|
|
136
|
+
*
|
|
137
|
+
* @param cssVar - CSS variable reference (e.g., 'var(--atomic-spacing-16)')
|
|
138
|
+
* @returns Token name (e.g., 'atomic.spacing.16')
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* ```typescript
|
|
142
|
+
* cssVarToToken('var(--atomic-spacing-16)');
|
|
143
|
+
* // → 'atomic.spacing.16'
|
|
144
|
+
* ```
|
|
145
|
+
*/
|
|
146
|
+
export declare function cssVarToToken(cssVar: string): string;
|
|
147
|
+
/**
|
|
148
|
+
* Extract property name from CSS variable name
|
|
149
|
+
*
|
|
150
|
+
* @param cssVarName - CSS variable name (e.g., '--component-button-primary-background')
|
|
151
|
+
* @returns Property name (e.g., 'background')
|
|
152
|
+
*
|
|
153
|
+
* @example
|
|
154
|
+
* ```typescript
|
|
155
|
+
* extractPropertyFromCSSVar('--component-button-primary-background');
|
|
156
|
+
* // → 'background'
|
|
157
|
+
* ```
|
|
158
|
+
*/
|
|
159
|
+
export declare function extractPropertyFromCSSVar(cssVarName: string): string;
|
|
160
|
+
/**
|
|
161
|
+
* Check if a string is a valid JavaScript identifier
|
|
162
|
+
*
|
|
163
|
+
* @param name - String to check
|
|
164
|
+
* @returns True if valid identifier
|
|
165
|
+
*
|
|
166
|
+
* @example
|
|
167
|
+
* ```typescript
|
|
168
|
+
* isValidIdentifier('myVariable'); // → true
|
|
169
|
+
* isValidIdentifier('my-variable'); // → false
|
|
170
|
+
* isValidIdentifier('123variable'); // → false
|
|
171
|
+
* ```
|
|
172
|
+
*/
|
|
173
|
+
export declare function isValidIdentifier(name: string): boolean;
|
|
174
|
+
/**
|
|
175
|
+
* Sanitize string to valid JavaScript identifier
|
|
176
|
+
*
|
|
177
|
+
* @param name - String to sanitize
|
|
178
|
+
* @returns Valid JavaScript identifier
|
|
179
|
+
*
|
|
180
|
+
* @example
|
|
181
|
+
* ```typescript
|
|
182
|
+
* sanitizeIdentifier('my-component'); // → 'myComponent'
|
|
183
|
+
* sanitizeIdentifier('123-component'); // → '_123Component'
|
|
184
|
+
* ```
|
|
185
|
+
*/
|
|
186
|
+
export declare function sanitizeIdentifier(name: string): string;
|
|
187
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/screen-generation/generators/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI7C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG9C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK7C;AAMD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,YAAY,GAAG,OAAsB,GAAG,MAAM,CAU/F;AAkBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,MAAU,GAAG,MAAM,CAM9E;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO9C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAE1D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAcrD;AAMD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EACtC,OAAO,GAAE,YAAY,GAAG,YAA2B,GAClD,MAAM,CAyBR;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAKpD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAGpE;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAavD"}
|
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @tekton-ui/core - Generator Utilities
|
|
3
|
+
* Common utility functions for code generators
|
|
4
|
+
* [SPEC-LAYOUT-002] [PHASE-3]
|
|
5
|
+
*/
|
|
6
|
+
// ============================================================================
|
|
7
|
+
// String Case Conversion
|
|
8
|
+
// ============================================================================
|
|
9
|
+
/**
|
|
10
|
+
* Convert string to camelCase
|
|
11
|
+
*
|
|
12
|
+
* @param str - Input string
|
|
13
|
+
* @returns camelCase string
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* camelCase('user-profile-card'); // → 'userProfileCard'
|
|
18
|
+
* camelCase('UserProfileCard'); // → 'userProfileCard'
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export function camelCase(str) {
|
|
22
|
+
return str
|
|
23
|
+
.replace(/[-_\s]+(.)?/g, (_, char) => (char ? char.toUpperCase() : ''))
|
|
24
|
+
.replace(/^[A-Z]/, char => char.toLowerCase());
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Convert string to PascalCase
|
|
28
|
+
*
|
|
29
|
+
* @param str - Input string
|
|
30
|
+
* @returns PascalCase string
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```typescript
|
|
34
|
+
* pascalCase('user-profile-card'); // → 'UserProfileCard'
|
|
35
|
+
* pascalCase('userProfileCard'); // → 'UserProfileCard'
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export function pascalCase(str) {
|
|
39
|
+
const camelCased = camelCase(str);
|
|
40
|
+
return camelCased.charAt(0).toUpperCase() + camelCased.slice(1);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Convert string to kebab-case
|
|
44
|
+
*
|
|
45
|
+
* @param str - Input string
|
|
46
|
+
* @returns kebab-case string
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```typescript
|
|
50
|
+
* kebabCase('UserProfileCard'); // → 'user-profile-card'
|
|
51
|
+
* kebabCase('userProfileCard'); // → 'user-profile-card'
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export function kebabCase(str) {
|
|
55
|
+
return str
|
|
56
|
+
.replace(/([a-z0-9])([A-Z])/g, '$1-$2')
|
|
57
|
+
.replace(/[\s_]+/g, '-')
|
|
58
|
+
.toLowerCase();
|
|
59
|
+
}
|
|
60
|
+
// ============================================================================
|
|
61
|
+
// Code Formatting
|
|
62
|
+
// ============================================================================
|
|
63
|
+
/**
|
|
64
|
+
* Format code with prettier (if available)
|
|
65
|
+
*
|
|
66
|
+
* @param code - Code string to format
|
|
67
|
+
* @param parser - Prettier parser to use
|
|
68
|
+
* @returns Formatted code
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```typescript
|
|
72
|
+
* const code = 'const x={a:1,b:2}';
|
|
73
|
+
* const formatted = formatCode(code, 'typescript');
|
|
74
|
+
* // → 'const x = { a: 1, b: 2 };\n'
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
export function formatCode(code, _parser = 'typescript') {
|
|
78
|
+
try {
|
|
79
|
+
// Try to use prettier if available
|
|
80
|
+
// In a real implementation, this would use prettier programmatically
|
|
81
|
+
// For now, we'll do basic formatting
|
|
82
|
+
return basicFormat(code);
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
// Fallback to basic formatting
|
|
86
|
+
return basicFormat(code);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Basic code formatting (fallback)
|
|
91
|
+
*
|
|
92
|
+
* @param code - Code string to format
|
|
93
|
+
* @returns Formatted code
|
|
94
|
+
*/
|
|
95
|
+
function basicFormat(code) {
|
|
96
|
+
// Ensure consistent line endings
|
|
97
|
+
let formatted = code.replace(/\r\n/g, '\n');
|
|
98
|
+
// Ensure single newline at end
|
|
99
|
+
formatted = formatted.replace(/\n+$/, '\n');
|
|
100
|
+
return formatted;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Add indentation to each line
|
|
104
|
+
*
|
|
105
|
+
* @param code - Code string
|
|
106
|
+
* @param depth - Indentation depth
|
|
107
|
+
* @param indent - Spaces per indent (default: 2)
|
|
108
|
+
* @returns Indented code
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```typescript
|
|
112
|
+
* indent('const x = 1;\nconst y = 2;', 1);
|
|
113
|
+
* // → ' const x = 1;\n const y = 2;'
|
|
114
|
+
* ```
|
|
115
|
+
*/
|
|
116
|
+
export function indent(code, depth, indent = 2) {
|
|
117
|
+
const spaces = ' '.repeat(depth * indent);
|
|
118
|
+
return code
|
|
119
|
+
.split('\n')
|
|
120
|
+
.map(line => (line.trim() ? spaces + line : line))
|
|
121
|
+
.join('\n');
|
|
122
|
+
}
|
|
123
|
+
// ============================================================================
|
|
124
|
+
// JSX/React Utilities
|
|
125
|
+
// ============================================================================
|
|
126
|
+
/**
|
|
127
|
+
* Escape special characters for JSX text content
|
|
128
|
+
*
|
|
129
|
+
* @param text - Text to escape
|
|
130
|
+
* @returns Escaped text safe for JSX
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* ```typescript
|
|
134
|
+
* escapeJSX('Hello <world> & "friends"');
|
|
135
|
+
* // → 'Hello <world> & "friends"'
|
|
136
|
+
* ```
|
|
137
|
+
*/
|
|
138
|
+
export function escapeJSX(text) {
|
|
139
|
+
return text
|
|
140
|
+
.replace(/&/g, '&')
|
|
141
|
+
.replace(/</g, '<')
|
|
142
|
+
.replace(/>/g, '>')
|
|
143
|
+
.replace(/"/g, '"')
|
|
144
|
+
.replace(/'/g, ''');
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Check if a prop value needs to be wrapped in JSX expression
|
|
148
|
+
*
|
|
149
|
+
* @param value - Prop value
|
|
150
|
+
* @returns True if value needs JSX expression braces
|
|
151
|
+
*
|
|
152
|
+
* @example
|
|
153
|
+
* ```typescript
|
|
154
|
+
* needsJSXExpression('hello'); // → false (string literal)
|
|
155
|
+
* needsJSXExpression(42); // → true (number)
|
|
156
|
+
* needsJSXExpression(true); // → true (boolean)
|
|
157
|
+
* ```
|
|
158
|
+
*/
|
|
159
|
+
export function needsJSXExpression(value) {
|
|
160
|
+
return typeof value !== 'string';
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Convert prop value to JSX attribute value
|
|
164
|
+
*
|
|
165
|
+
* @param value - Prop value
|
|
166
|
+
* @returns JSX attribute value string
|
|
167
|
+
*
|
|
168
|
+
* @example
|
|
169
|
+
* ```typescript
|
|
170
|
+
* propValueToJSX('hello'); // → '"hello"'
|
|
171
|
+
* propValueToJSX(42); // → '{42}'
|
|
172
|
+
* propValueToJSX(true); // → '{true}'
|
|
173
|
+
* propValueToJSX({ a: 1 }); // → '{{"a":1}}'
|
|
174
|
+
* ```
|
|
175
|
+
*/
|
|
176
|
+
export function propValueToJSX(value) {
|
|
177
|
+
if (typeof value === 'string') {
|
|
178
|
+
return `"${value}"`;
|
|
179
|
+
}
|
|
180
|
+
if (typeof value === 'number' || typeof value === 'boolean') {
|
|
181
|
+
return `{${value}}`;
|
|
182
|
+
}
|
|
183
|
+
if (typeof value === 'object' && value !== null) {
|
|
184
|
+
return `{${JSON.stringify(value)}}`;
|
|
185
|
+
}
|
|
186
|
+
return '""';
|
|
187
|
+
}
|
|
188
|
+
// ============================================================================
|
|
189
|
+
// Import Generation
|
|
190
|
+
// ============================================================================
|
|
191
|
+
/**
|
|
192
|
+
* Generate import statements from dependencies
|
|
193
|
+
*
|
|
194
|
+
* @param dependencies - Module dependencies (module → named imports)
|
|
195
|
+
* @param format - Output format
|
|
196
|
+
* @returns Import statements
|
|
197
|
+
*
|
|
198
|
+
* @example
|
|
199
|
+
* ```typescript
|
|
200
|
+
* generateImports({
|
|
201
|
+
* 'react': ['useState', 'useEffect'],
|
|
202
|
+
* 'styled-components': ['default as styled']
|
|
203
|
+
* }, 'typescript');
|
|
204
|
+
* // → "import { useState, useEffect } from 'react';\nimport styled from 'styled-components';\n"
|
|
205
|
+
* ```
|
|
206
|
+
*/
|
|
207
|
+
export function generateImports(dependencies, _format = 'typescript') {
|
|
208
|
+
const imports = [];
|
|
209
|
+
for (const [module, namedImports] of Object.entries(dependencies)) {
|
|
210
|
+
if (namedImports.length === 0) {
|
|
211
|
+
// Side-effect import
|
|
212
|
+
imports.push(`import '${module}';`);
|
|
213
|
+
}
|
|
214
|
+
else if (namedImports.some(imp => imp.startsWith('default'))) {
|
|
215
|
+
// Default import
|
|
216
|
+
const defaultImport = namedImports.find(imp => imp.startsWith('default'));
|
|
217
|
+
const defaultName = defaultImport.split(' as ')[1] || 'default';
|
|
218
|
+
const named = namedImports.filter(imp => !imp.startsWith('default'));
|
|
219
|
+
if (named.length > 0) {
|
|
220
|
+
imports.push(`import ${defaultName}, { ${named.join(', ')} } from '${module}';`);
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
imports.push(`import ${defaultName} from '${module}';`);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
// Named imports
|
|
228
|
+
imports.push(`import { ${namedImports.join(', ')} } from '${module}';`);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
return imports.join('\n') + (imports.length > 0 ? '\n\n' : '');
|
|
232
|
+
}
|
|
233
|
+
// ============================================================================
|
|
234
|
+
// CSS Utilities
|
|
235
|
+
// ============================================================================
|
|
236
|
+
/**
|
|
237
|
+
* Convert CSS variable reference to token name
|
|
238
|
+
*
|
|
239
|
+
* @param cssVar - CSS variable reference (e.g., 'var(--atomic-spacing-16)')
|
|
240
|
+
* @returns Token name (e.g., 'atomic.spacing.16')
|
|
241
|
+
*
|
|
242
|
+
* @example
|
|
243
|
+
* ```typescript
|
|
244
|
+
* cssVarToToken('var(--atomic-spacing-16)');
|
|
245
|
+
* // → 'atomic.spacing.16'
|
|
246
|
+
* ```
|
|
247
|
+
*/
|
|
248
|
+
export function cssVarToToken(cssVar) {
|
|
249
|
+
// Remove 'var(' and ')' and leading '--'
|
|
250
|
+
const varName = cssVar.replace(/^var\(--/, '').replace(/\)$/, '');
|
|
251
|
+
// Convert hyphens to dots
|
|
252
|
+
return varName.replace(/-/g, '.');
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Extract property name from CSS variable name
|
|
256
|
+
*
|
|
257
|
+
* @param cssVarName - CSS variable name (e.g., '--component-button-primary-background')
|
|
258
|
+
* @returns Property name (e.g., 'background')
|
|
259
|
+
*
|
|
260
|
+
* @example
|
|
261
|
+
* ```typescript
|
|
262
|
+
* extractPropertyFromCSSVar('--component-button-primary-background');
|
|
263
|
+
* // → 'background'
|
|
264
|
+
* ```
|
|
265
|
+
*/
|
|
266
|
+
export function extractPropertyFromCSSVar(cssVarName) {
|
|
267
|
+
const parts = cssVarName.replace(/^--/, '').split('-');
|
|
268
|
+
return parts[parts.length - 1];
|
|
269
|
+
}
|
|
270
|
+
// ============================================================================
|
|
271
|
+
// Validation
|
|
272
|
+
// ============================================================================
|
|
273
|
+
/**
|
|
274
|
+
* Check if a string is a valid JavaScript identifier
|
|
275
|
+
*
|
|
276
|
+
* @param name - String to check
|
|
277
|
+
* @returns True if valid identifier
|
|
278
|
+
*
|
|
279
|
+
* @example
|
|
280
|
+
* ```typescript
|
|
281
|
+
* isValidIdentifier('myVariable'); // → true
|
|
282
|
+
* isValidIdentifier('my-variable'); // → false
|
|
283
|
+
* isValidIdentifier('123variable'); // → false
|
|
284
|
+
* ```
|
|
285
|
+
*/
|
|
286
|
+
export function isValidIdentifier(name) {
|
|
287
|
+
return /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(name);
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Sanitize string to valid JavaScript identifier
|
|
291
|
+
*
|
|
292
|
+
* @param name - String to sanitize
|
|
293
|
+
* @returns Valid JavaScript identifier
|
|
294
|
+
*
|
|
295
|
+
* @example
|
|
296
|
+
* ```typescript
|
|
297
|
+
* sanitizeIdentifier('my-component'); // → 'myComponent'
|
|
298
|
+
* sanitizeIdentifier('123-component'); // → '_123Component'
|
|
299
|
+
* ```
|
|
300
|
+
*/
|
|
301
|
+
export function sanitizeIdentifier(name) {
|
|
302
|
+
// Convert to camelCase
|
|
303
|
+
let sanitized = camelCase(name);
|
|
304
|
+
// Ensure it doesn't start with a number
|
|
305
|
+
if (/^[0-9]/.test(sanitized)) {
|
|
306
|
+
sanitized = '_' + sanitized;
|
|
307
|
+
}
|
|
308
|
+
// Remove any remaining invalid characters
|
|
309
|
+
sanitized = sanitized.replace(/[^a-zA-Z0-9_$]/g, '');
|
|
310
|
+
return sanitized || '_unnamed';
|
|
311
|
+
}
|
|
312
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/screen-generation/generators/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @tekton-ui/core - Screen Generation Module
|
|
3
|
+
* Declarative screen definition system with layout tokens
|
|
4
|
+
* [SPEC-LAYOUT-002] [PHASE-1] [PHASE-2] [PHASE-3]
|
|
5
|
+
*
|
|
6
|
+
* @module screen-generation
|
|
7
|
+
*/
|
|
8
|
+
export type { ComponentType, ComponentDefinition, ResponsiveOverrides, SectionDefinition, ScreenMeta, ScreenDefinition, ValidationContext, } from './types.js';
|
|
9
|
+
export { isComponentDefinition, isScreenDefinition } from './types.js';
|
|
10
|
+
export { ResponsiveOverridesSchema, ComponentDefinitionSchema, SectionDefinitionSchema, ScreenMetaSchema, ScreenDefinitionSchema, validateComponent, validateSection, validateScreenDefinition, assertValidScreenDefinition, validateScreenDefinitions, isValidShellToken, isValidPageToken, isValidSectionToken, getUsedComponentTypes, } from './validators.js';
|
|
11
|
+
export type { ValidationResult } from '../schema-validation.js';
|
|
12
|
+
export { type TokenBindingContext, type ResolvedTokenBindings, resolveBinding, resolveBindings, substituteTemplateVariables, tokenRefToCSSVar, isValidTokenBinding, extractTemplateVariables, clearBindingCache, type LayoutContext, resolveShell, resolvePage, resolveSection, parseLayoutType, type ResolvedComponent, type ComponentContext, resolveComponent, resolveChildren, isValidComponentDefinition, extractComponentTypes, clearComponentCache, type ResolvedScreen, type ResolvedSection, type ComponentTree, type ComponentTreeNode, resolveScreen, isValidResolvedScreen, getScreenStats, clearScreenCache, } from './resolver/index.js';
|
|
13
|
+
export { type CSSFramework, type OutputFormat, type ComponentStyle, type GeneratorOptions, type GeneratorResult, type GeneratedFile, type CSSVariableMap, type TailwindClassMap, type StyledThemeConfig, type ComponentGenerationContext, defaultGeneratorOptions, camelCase, pascalCase, kebabCase, formatCode, indent, escapeJSX, needsJSXExpression, propValueToJSX, generateImports, cssVarToToken, extractPropertyFromCSSVar, isValidIdentifier, sanitizeIdentifier, type CSSInJSFormat, convertCSSVarsToTheme, generateComponentStyles, generateStyledComponents, tokenToTailwindClass, generateComponentClasses, generateTailwindConfig, generateTailwindClasses, generateComponentInterface, generateComponentJSX, generateComponentTree, generateReactComponent, } from './generators/index.js';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/screen-generation/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,YAAY,EACV,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAMvE,OAAO,EAEL,yBAAyB,EACzB,yBAAyB,EACzB,uBAAuB,EACvB,gBAAgB,EAChB,sBAAsB,EAEtB,iBAAiB,EACjB,eAAe,EACf,wBAAwB,EACxB,2BAA2B,EAC3B,yBAAyB,EAEzB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAMzB,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAMhE,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,cAAc,EACd,eAAe,EACf,2BAA2B,EAC3B,gBAAgB,EAChB,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,EAEjB,KAAK,aAAa,EAClB,YAAY,EACZ,WAAW,EACX,cAAc,EACd,eAAe,EAEf,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,gBAAgB,EAChB,eAAe,EACf,0BAA0B,EAC1B,qBAAqB,EACrB,mBAAmB,EAEnB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,aAAa,EACb,qBAAqB,EACrB,cAAc,EACd,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAM7B,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,0BAA0B,EAC/B,uBAAuB,EAEvB,SAAS,EACT,UAAU,EACV,SAAS,EACT,UAAU,EACV,MAAM,EACN,SAAS,EACT,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,aAAa,EACb,yBAAyB,EACzB,iBAAiB,EACjB,kBAAkB,EAElB,KAAK,aAAa,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EAExB,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EAEvB,0BAA0B,EAC1B,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @tekton-ui/core - Screen Generation Module
|
|
3
|
+
* Declarative screen definition system with layout tokens
|
|
4
|
+
* [SPEC-LAYOUT-002] [PHASE-1] [PHASE-2] [PHASE-3]
|
|
5
|
+
*
|
|
6
|
+
* @module screen-generation
|
|
7
|
+
*/
|
|
8
|
+
export { isComponentDefinition, isScreenDefinition } from './types.js';
|
|
9
|
+
// ============================================================================
|
|
10
|
+
// Validation Schemas and Functions
|
|
11
|
+
// ============================================================================
|
|
12
|
+
export {
|
|
13
|
+
// Zod Schemas
|
|
14
|
+
ResponsiveOverridesSchema, ComponentDefinitionSchema, SectionDefinitionSchema, ScreenMetaSchema, ScreenDefinitionSchema,
|
|
15
|
+
// Validation Functions
|
|
16
|
+
validateComponent, validateSection, validateScreenDefinition, assertValidScreenDefinition, validateScreenDefinitions,
|
|
17
|
+
// Utility Functions
|
|
18
|
+
isValidShellToken, isValidPageToken, isValidSectionToken, getUsedComponentTypes, } from './validators.js';
|
|
19
|
+
// ============================================================================
|
|
20
|
+
// Screen Resolver Pipeline [PHASE-2]
|
|
21
|
+
// ============================================================================
|
|
22
|
+
export { resolveBinding, resolveBindings, substituteTemplateVariables, tokenRefToCSSVar, isValidTokenBinding, extractTemplateVariables, clearBindingCache, resolveShell, resolvePage, resolveSection, parseLayoutType, resolveComponent, resolveChildren, isValidComponentDefinition, extractComponentTypes, clearComponentCache, resolveScreen, isValidResolvedScreen, getScreenStats, clearScreenCache, } from './resolver/index.js';
|
|
23
|
+
// ============================================================================
|
|
24
|
+
// Output Generators [PHASE-3]
|
|
25
|
+
// ============================================================================
|
|
26
|
+
export { defaultGeneratorOptions,
|
|
27
|
+
// Utilities
|
|
28
|
+
camelCase, pascalCase, kebabCase, formatCode, indent, escapeJSX, needsJSXExpression, propValueToJSX, generateImports, cssVarToToken, extractPropertyFromCSSVar, isValidIdentifier, sanitizeIdentifier, convertCSSVarsToTheme, generateComponentStyles, generateStyledComponents,
|
|
29
|
+
// Tailwind Generator
|
|
30
|
+
tokenToTailwindClass, generateComponentClasses, generateTailwindConfig, generateTailwindClasses,
|
|
31
|
+
// React Generator
|
|
32
|
+
generateComponentInterface, generateComponentJSX, generateComponentTree, generateReactComponent, } from './generators/index.js';
|
|
33
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/screen-generation/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAgBH,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEvE,+EAA+E;AAC/E,mCAAmC;AACnC,+EAA+E;AAE/E,OAAO;AACL,cAAc;AACd,yBAAyB,EACzB,yBAAyB,EACzB,uBAAuB,EACvB,gBAAgB,EAChB,sBAAsB;AACtB,uBAAuB;AACvB,iBAAiB,EACjB,eAAe,EACf,wBAAwB,EACxB,2BAA2B,EAC3B,yBAAyB;AACzB,oBAAoB;AACpB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAQzB,+EAA+E;AAC/E,qCAAqC;AACrC,+EAA+E;AAE/E,OAAO,EAIL,cAAc,EACd,eAAe,EACf,2BAA2B,EAC3B,gBAAgB,EAChB,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,EAGjB,YAAY,EACZ,WAAW,EACX,cAAc,EACd,eAAe,EAIf,gBAAgB,EAChB,eAAe,EACf,0BAA0B,EAC1B,qBAAqB,EACrB,mBAAmB,EAMnB,aAAa,EACb,qBAAqB,EACrB,cAAc,EACd,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAE7B,+EAA+E;AAC/E,8BAA8B;AAC9B,+EAA+E;AAE/E,OAAO,EAYL,uBAAuB;AACvB,YAAY;AACZ,SAAS,EACT,UAAU,EACV,SAAS,EACT,UAAU,EACV,MAAM,EACN,SAAS,EACT,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,aAAa,EACb,yBAAyB,EACzB,iBAAiB,EACjB,kBAAkB,EAGlB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB;AACxB,qBAAqB;AACrB,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB;AACvB,kBAAkB;AAClB,0BAA0B,EAC1B,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC"}
|