@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,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @tekton-ui/core - Template Registry
|
|
3
|
+
* Singleton pattern for managing screen templates
|
|
4
|
+
* [SPEC-UI-002] [TAG-UI002-004]
|
|
5
|
+
*/
|
|
6
|
+
import type { ScreenTemplate, ScreenCategory, TemplateValidationResult } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* TemplateRegistry - Singleton registry for screen templates
|
|
9
|
+
* 화면 템플릿을 관리하는 싱글톤 레지스트리
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const registry = TemplateRegistry.getInstance();
|
|
14
|
+
* registry.register(loginTemplate);
|
|
15
|
+
*
|
|
16
|
+
* const template = registry.get('auth.login');
|
|
17
|
+
* const authTemplates = registry.getByCategory('auth');
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export declare class TemplateRegistry {
|
|
21
|
+
private static instance;
|
|
22
|
+
private templates;
|
|
23
|
+
/**
|
|
24
|
+
* Private constructor to enforce singleton pattern
|
|
25
|
+
* 싱글톤 패턴을 위한 private 생성자
|
|
26
|
+
*/
|
|
27
|
+
private constructor();
|
|
28
|
+
/**
|
|
29
|
+
* Get singleton instance
|
|
30
|
+
* 싱글톤 인스턴스 반환
|
|
31
|
+
*
|
|
32
|
+
* @returns TemplateRegistry instance
|
|
33
|
+
*/
|
|
34
|
+
static getInstance(): TemplateRegistry;
|
|
35
|
+
/**
|
|
36
|
+
* Register a screen template
|
|
37
|
+
* 화면 템플릿 등록
|
|
38
|
+
*
|
|
39
|
+
* [TAG-UI002-004] - 필수 컴포넌트 검증
|
|
40
|
+
* [TAG-UI002-007] - 템플릿 로드 시 필수 컴포넌트 검증
|
|
41
|
+
*
|
|
42
|
+
* @param template - ScreenTemplate to register
|
|
43
|
+
* @throws Error if template validation fails
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```typescript
|
|
47
|
+
* registry.register(loginTemplate);
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
register(template: ScreenTemplate): void;
|
|
51
|
+
/**
|
|
52
|
+
* Register multiple templates at once
|
|
53
|
+
* 여러 템플릿을 한 번에 등록
|
|
54
|
+
*
|
|
55
|
+
* @param templates - Array of ScreenTemplates to register
|
|
56
|
+
* @throws Error if any template validation fails
|
|
57
|
+
*/
|
|
58
|
+
registerAll(templates: ScreenTemplate[]): void;
|
|
59
|
+
/**
|
|
60
|
+
* Get a template by ID
|
|
61
|
+
* ID로 템플릿 조회
|
|
62
|
+
*
|
|
63
|
+
* @param id - Template ID (e.g., 'auth.login')
|
|
64
|
+
* @returns ScreenTemplate if found, undefined otherwise
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```typescript
|
|
68
|
+
* const loginTemplate = registry.get('auth.login');
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
get(id: string): ScreenTemplate | undefined;
|
|
72
|
+
/**
|
|
73
|
+
* Get templates by category
|
|
74
|
+
* 카테고리별 템플릿 조회
|
|
75
|
+
*
|
|
76
|
+
* @param category - ScreenCategory
|
|
77
|
+
* @returns Array of templates in the category
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```typescript
|
|
81
|
+
* const authTemplates = registry.getByCategory('auth');
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
84
|
+
getByCategory(category: ScreenCategory): ScreenTemplate[];
|
|
85
|
+
/**
|
|
86
|
+
* Get all registered templates
|
|
87
|
+
* 등록된 모든 템플릿 조회
|
|
88
|
+
*
|
|
89
|
+
* @returns Array of all templates
|
|
90
|
+
*/
|
|
91
|
+
getAll(): ScreenTemplate[];
|
|
92
|
+
/**
|
|
93
|
+
* Find templates by required components
|
|
94
|
+
* 필수 컴포넌트로 템플릿 검색
|
|
95
|
+
*
|
|
96
|
+
* @param components - Array of required component names
|
|
97
|
+
* @returns Array of templates that require all specified components
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* ```typescript
|
|
101
|
+
* const templatesNeedingButton = registry.findByRequiredComponents(['Button', 'Form']);
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
findByRequiredComponents(components: string[]): ScreenTemplate[];
|
|
105
|
+
/**
|
|
106
|
+
* Check if a template is registered
|
|
107
|
+
* 템플릿 등록 여부 확인
|
|
108
|
+
*
|
|
109
|
+
* @param id - Template ID
|
|
110
|
+
* @returns true if template is registered, false otherwise
|
|
111
|
+
*/
|
|
112
|
+
has(id: string): boolean;
|
|
113
|
+
/**
|
|
114
|
+
* Unregister a template
|
|
115
|
+
* 템플릿 등록 해제
|
|
116
|
+
*
|
|
117
|
+
* @param id - Template ID to unregister
|
|
118
|
+
* @returns true if template was found and removed, false otherwise
|
|
119
|
+
*/
|
|
120
|
+
unregister(id: string): boolean;
|
|
121
|
+
/**
|
|
122
|
+
* Clear all registered templates
|
|
123
|
+
* 모든 등록된 템플릿 삭제
|
|
124
|
+
*/
|
|
125
|
+
clear(): void;
|
|
126
|
+
/**
|
|
127
|
+
* Get total number of registered templates
|
|
128
|
+
* 등록된 템플릿 총 개수 조회
|
|
129
|
+
*
|
|
130
|
+
* @returns Number of registered templates
|
|
131
|
+
*/
|
|
132
|
+
count(): number;
|
|
133
|
+
/**
|
|
134
|
+
* Validate a template
|
|
135
|
+
* 템플릿 검증
|
|
136
|
+
*
|
|
137
|
+
* [TAG-UI002-004] - 필수 컴포넌트 검증
|
|
138
|
+
* [TAG-UI002-019] - 필수 컴포넌트 없이 렌더링 금지
|
|
139
|
+
*
|
|
140
|
+
* @param template - ScreenTemplate to validate
|
|
141
|
+
* @returns TemplateValidationResult
|
|
142
|
+
*/
|
|
143
|
+
validateTemplate(template: ScreenTemplate): TemplateValidationResult;
|
|
144
|
+
/**
|
|
145
|
+
* Get template IDs by category
|
|
146
|
+
* 카테고리별 템플릿 ID 목록 조회
|
|
147
|
+
*
|
|
148
|
+
* @param category - ScreenCategory
|
|
149
|
+
* @returns Array of template IDs
|
|
150
|
+
*/
|
|
151
|
+
getIdsByCategory(category: ScreenCategory): string[];
|
|
152
|
+
/**
|
|
153
|
+
* Export all templates as JSON
|
|
154
|
+
* 모든 템플릿을 JSON으로 내보내기
|
|
155
|
+
*
|
|
156
|
+
* Note: This does not export the Component field
|
|
157
|
+
*
|
|
158
|
+
* @returns JSON string of all templates (without Component field)
|
|
159
|
+
*/
|
|
160
|
+
exportToJSON(): string;
|
|
161
|
+
/**
|
|
162
|
+
* Get template metadata (without Component)
|
|
163
|
+
* 템플릿 메타데이터 조회 (Component 제외)
|
|
164
|
+
*
|
|
165
|
+
* @param id - Template ID
|
|
166
|
+
* @returns Template metadata without Component field
|
|
167
|
+
*/
|
|
168
|
+
getMetadata(id: string): Omit<ScreenTemplate, 'Component'> | undefined;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Get default registry instance
|
|
172
|
+
* 기본 레지스트리 인스턴스 반환
|
|
173
|
+
*
|
|
174
|
+
* @returns TemplateRegistry singleton instance
|
|
175
|
+
*/
|
|
176
|
+
export declare function getRegistry(): TemplateRegistry;
|
|
177
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/screen-templates/registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,wBAAwB,EAEzB,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;GAYG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAmB;IAC1C,OAAO,CAAC,SAAS,CAA0C;IAE3D;;;OAGG;IACH,OAAO;IAEP;;;;;OAKG;IACH,MAAM,CAAC,WAAW,IAAI,gBAAgB;IAOtC;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAWxC;;;;;;OAMG;IACH,WAAW,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG,IAAI;IAI9C;;;;;;;;;;;OAWG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAI3C;;;;;;;;;;;OAWG;IACH,aAAa,CAAC,QAAQ,EAAE,cAAc,GAAG,cAAc,EAAE;IAIzD;;;;;OAKG;IACH,MAAM,IAAI,cAAc,EAAE;IAI1B;;;;;;;;;;;OAWG;IACH,wBAAwB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE;IAMhE;;;;;;OAMG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI/B;;;OAGG;IACH,KAAK,IAAI,IAAI;IAIb;;;;;OAKG;IACH,KAAK,IAAI,MAAM;IAIf;;;;;;;;;OASG;IACH,gBAAgB,CAAC,QAAQ,EAAE,cAAc,GAAG,wBAAwB;IAwDpE;;;;;;OAMG;IACH,gBAAgB,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,EAAE;IAIpD;;;;;;;OAOG;IACH,YAAY,IAAI,MAAM;IAQtB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,GAAG,SAAS;CASvE;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,IAAI,gBAAgB,CAE9C"}
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @tekton-ui/core - Template Registry
|
|
3
|
+
* Singleton pattern for managing screen templates
|
|
4
|
+
* [SPEC-UI-002] [TAG-UI002-004]
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* TemplateRegistry - Singleton registry for screen templates
|
|
8
|
+
* 화면 템플릿을 관리하는 싱글톤 레지스트리
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const registry = TemplateRegistry.getInstance();
|
|
13
|
+
* registry.register(loginTemplate);
|
|
14
|
+
*
|
|
15
|
+
* const template = registry.get('auth.login');
|
|
16
|
+
* const authTemplates = registry.getByCategory('auth');
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export class TemplateRegistry {
|
|
20
|
+
static instance;
|
|
21
|
+
templates = new Map();
|
|
22
|
+
/**
|
|
23
|
+
* Private constructor to enforce singleton pattern
|
|
24
|
+
* 싱글톤 패턴을 위한 private 생성자
|
|
25
|
+
*/
|
|
26
|
+
constructor() { }
|
|
27
|
+
/**
|
|
28
|
+
* Get singleton instance
|
|
29
|
+
* 싱글톤 인스턴스 반환
|
|
30
|
+
*
|
|
31
|
+
* @returns TemplateRegistry instance
|
|
32
|
+
*/
|
|
33
|
+
static getInstance() {
|
|
34
|
+
if (!TemplateRegistry.instance) {
|
|
35
|
+
TemplateRegistry.instance = new TemplateRegistry();
|
|
36
|
+
}
|
|
37
|
+
return TemplateRegistry.instance;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Register a screen template
|
|
41
|
+
* 화면 템플릿 등록
|
|
42
|
+
*
|
|
43
|
+
* [TAG-UI002-004] - 필수 컴포넌트 검증
|
|
44
|
+
* [TAG-UI002-007] - 템플릿 로드 시 필수 컴포넌트 검증
|
|
45
|
+
*
|
|
46
|
+
* @param template - ScreenTemplate to register
|
|
47
|
+
* @throws Error if template validation fails
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```typescript
|
|
51
|
+
* registry.register(loginTemplate);
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
register(template) {
|
|
55
|
+
// Validate template before registration
|
|
56
|
+
const validationResult = this.validateTemplate(template);
|
|
57
|
+
if (!validationResult.valid) {
|
|
58
|
+
const errors = validationResult.errors?.map(e => e.message).join(', ');
|
|
59
|
+
throw new Error(`Template validation failed for ${template.id}: ${errors}`);
|
|
60
|
+
}
|
|
61
|
+
this.templates.set(template.id, template);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Register multiple templates at once
|
|
65
|
+
* 여러 템플릿을 한 번에 등록
|
|
66
|
+
*
|
|
67
|
+
* @param templates - Array of ScreenTemplates to register
|
|
68
|
+
* @throws Error if any template validation fails
|
|
69
|
+
*/
|
|
70
|
+
registerAll(templates) {
|
|
71
|
+
templates.forEach(template => this.register(template));
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Get a template by ID
|
|
75
|
+
* ID로 템플릿 조회
|
|
76
|
+
*
|
|
77
|
+
* @param id - Template ID (e.g., 'auth.login')
|
|
78
|
+
* @returns ScreenTemplate if found, undefined otherwise
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```typescript
|
|
82
|
+
* const loginTemplate = registry.get('auth.login');
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
get(id) {
|
|
86
|
+
return this.templates.get(id);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Get templates by category
|
|
90
|
+
* 카테고리별 템플릿 조회
|
|
91
|
+
*
|
|
92
|
+
* @param category - ScreenCategory
|
|
93
|
+
* @returns Array of templates in the category
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```typescript
|
|
97
|
+
* const authTemplates = registry.getByCategory('auth');
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
getByCategory(category) {
|
|
101
|
+
return Array.from(this.templates.values()).filter(template => template.category === category);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Get all registered templates
|
|
105
|
+
* 등록된 모든 템플릿 조회
|
|
106
|
+
*
|
|
107
|
+
* @returns Array of all templates
|
|
108
|
+
*/
|
|
109
|
+
getAll() {
|
|
110
|
+
return Array.from(this.templates.values());
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Find templates by required components
|
|
114
|
+
* 필수 컴포넌트로 템플릿 검색
|
|
115
|
+
*
|
|
116
|
+
* @param components - Array of required component names
|
|
117
|
+
* @returns Array of templates that require all specified components
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```typescript
|
|
121
|
+
* const templatesNeedingButton = registry.findByRequiredComponents(['Button', 'Form']);
|
|
122
|
+
* ```
|
|
123
|
+
*/
|
|
124
|
+
findByRequiredComponents(components) {
|
|
125
|
+
return Array.from(this.templates.values()).filter(template => components.every(comp => template.requiredComponents.includes(comp)));
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Check if a template is registered
|
|
129
|
+
* 템플릿 등록 여부 확인
|
|
130
|
+
*
|
|
131
|
+
* @param id - Template ID
|
|
132
|
+
* @returns true if template is registered, false otherwise
|
|
133
|
+
*/
|
|
134
|
+
has(id) {
|
|
135
|
+
return this.templates.has(id);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Unregister a template
|
|
139
|
+
* 템플릿 등록 해제
|
|
140
|
+
*
|
|
141
|
+
* @param id - Template ID to unregister
|
|
142
|
+
* @returns true if template was found and removed, false otherwise
|
|
143
|
+
*/
|
|
144
|
+
unregister(id) {
|
|
145
|
+
return this.templates.delete(id);
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Clear all registered templates
|
|
149
|
+
* 모든 등록된 템플릿 삭제
|
|
150
|
+
*/
|
|
151
|
+
clear() {
|
|
152
|
+
this.templates.clear();
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Get total number of registered templates
|
|
156
|
+
* 등록된 템플릿 총 개수 조회
|
|
157
|
+
*
|
|
158
|
+
* @returns Number of registered templates
|
|
159
|
+
*/
|
|
160
|
+
count() {
|
|
161
|
+
return this.templates.size;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Validate a template
|
|
165
|
+
* 템플릿 검증
|
|
166
|
+
*
|
|
167
|
+
* [TAG-UI002-004] - 필수 컴포넌트 검증
|
|
168
|
+
* [TAG-UI002-019] - 필수 컴포넌트 없이 렌더링 금지
|
|
169
|
+
*
|
|
170
|
+
* @param template - ScreenTemplate to validate
|
|
171
|
+
* @returns TemplateValidationResult
|
|
172
|
+
*/
|
|
173
|
+
validateTemplate(template) {
|
|
174
|
+
const errors = [];
|
|
175
|
+
// Validate required components
|
|
176
|
+
if (!template.requiredComponents || template.requiredComponents.length === 0) {
|
|
177
|
+
errors.push({
|
|
178
|
+
type: 'missing_component',
|
|
179
|
+
message: 'Template must specify at least one required component',
|
|
180
|
+
field: 'requiredComponents',
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
// Validate skeleton sections
|
|
184
|
+
if (!template.skeleton.sections || template.skeleton.sections.length === 0) {
|
|
185
|
+
errors.push({
|
|
186
|
+
type: 'missing_section',
|
|
187
|
+
message: 'Template must have at least one section',
|
|
188
|
+
field: 'skeleton.sections',
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
// Validate required sections
|
|
192
|
+
const requiredSections = template.skeleton.sections.filter(s => s.required);
|
|
193
|
+
if (requiredSections.length === 0) {
|
|
194
|
+
errors.push({
|
|
195
|
+
type: 'missing_section',
|
|
196
|
+
message: 'Template must have at least one required section',
|
|
197
|
+
field: 'skeleton.sections',
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
// Validate layout responsive configuration
|
|
201
|
+
if (!template.layout.responsive) {
|
|
202
|
+
errors.push({
|
|
203
|
+
type: 'invalid_layout',
|
|
204
|
+
message: 'Template must have responsive layout configuration',
|
|
205
|
+
field: 'layout.responsive',
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
// Validate all breakpoints are present
|
|
210
|
+
const { desktop, tablet, mobile } = template.layout.responsive;
|
|
211
|
+
if (!desktop || !tablet || !mobile) {
|
|
212
|
+
errors.push({
|
|
213
|
+
type: 'invalid_layout',
|
|
214
|
+
message: 'Template must have desktop, tablet, and mobile responsive layouts',
|
|
215
|
+
field: 'layout.responsive',
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return {
|
|
220
|
+
valid: errors.length === 0,
|
|
221
|
+
errors: errors.length > 0 ? errors : undefined,
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Get template IDs by category
|
|
226
|
+
* 카테고리별 템플릿 ID 목록 조회
|
|
227
|
+
*
|
|
228
|
+
* @param category - ScreenCategory
|
|
229
|
+
* @returns Array of template IDs
|
|
230
|
+
*/
|
|
231
|
+
getIdsByCategory(category) {
|
|
232
|
+
return this.getByCategory(category).map(t => t.id);
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Export all templates as JSON
|
|
236
|
+
* 모든 템플릿을 JSON으로 내보내기
|
|
237
|
+
*
|
|
238
|
+
* Note: This does not export the Component field
|
|
239
|
+
*
|
|
240
|
+
* @returns JSON string of all templates (without Component field)
|
|
241
|
+
*/
|
|
242
|
+
exportToJSON() {
|
|
243
|
+
const exportData = this.getAll().map(template => {
|
|
244
|
+
const { Component: _Component, ...rest } = template;
|
|
245
|
+
return rest;
|
|
246
|
+
});
|
|
247
|
+
return JSON.stringify(exportData, null, 2);
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Get template metadata (without Component)
|
|
251
|
+
* 템플릿 메타데이터 조회 (Component 제외)
|
|
252
|
+
*
|
|
253
|
+
* @param id - Template ID
|
|
254
|
+
* @returns Template metadata without Component field
|
|
255
|
+
*/
|
|
256
|
+
getMetadata(id) {
|
|
257
|
+
const template = this.get(id);
|
|
258
|
+
if (!template) {
|
|
259
|
+
return undefined;
|
|
260
|
+
}
|
|
261
|
+
const { Component: _Component, ...metadata } = template;
|
|
262
|
+
return metadata;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Get default registry instance
|
|
267
|
+
* 기본 레지스트리 인스턴스 반환
|
|
268
|
+
*
|
|
269
|
+
* @returns TemplateRegistry singleton instance
|
|
270
|
+
*/
|
|
271
|
+
export function getRegistry() {
|
|
272
|
+
return TemplateRegistry.getInstance();
|
|
273
|
+
}
|
|
274
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/screen-templates/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/screen-templates/templates/account/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/screen-templates/templates/account/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @tekton-ui/core - Account/Profile Screen Template
|
|
3
|
+
* [SPEC-UI-002] [TAG-UI002-030] account.profile
|
|
4
|
+
*
|
|
5
|
+
* Design Reference: Claude.ai Profile Page (Claude Web 155.png)
|
|
6
|
+
* - 프로필 이미지 + 기본 정보
|
|
7
|
+
* - 편집 가능한 필드 명확히 표시
|
|
8
|
+
*/
|
|
9
|
+
import type { ScreenTemplate, ScreenTemplateProps } from '../../types.js';
|
|
10
|
+
import type { FC } from '../../types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Profile Component
|
|
13
|
+
* 프로필/내 계정 화면 컴포넌트
|
|
14
|
+
*
|
|
15
|
+
* Required Components: Avatar, Button, Input, Form, Card
|
|
16
|
+
*/
|
|
17
|
+
export declare const ProfileComponent: FC<ScreenTemplateProps>;
|
|
18
|
+
/**
|
|
19
|
+
* Account/Profile Screen Template
|
|
20
|
+
* 프로필/내 계정 화면 템플릿 정의
|
|
21
|
+
*/
|
|
22
|
+
export declare const profileTemplate: ScreenTemplate;
|
|
23
|
+
//# sourceMappingURL=profile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../../../src/screen-templates/templates/account/profile.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAEzC;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,mBAAmB,CA8KpD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,cAoE7B,CAAC"}
|