@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,265 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @tekton-ui/core - Settings/Preferences Screen Template
|
|
3
|
+
* [SPEC-UI-002] [TAG-UI002-029] settings.preferences
|
|
4
|
+
*
|
|
5
|
+
* Design Reference: Claude.ai Settings Page
|
|
6
|
+
* - 좌측 설정 메뉴 + 우측 설정 패널
|
|
7
|
+
* - 섹션별 명확한 구분
|
|
8
|
+
* - 토글/선택 UI 일관성
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Preferences Component
|
|
12
|
+
* 설정/환경설정 화면 컴포넌트
|
|
13
|
+
*
|
|
14
|
+
* Required Components: Switch, Select, Button, Form, Tabs, Separator
|
|
15
|
+
*/
|
|
16
|
+
export const PreferencesComponent = ({ slots, className, texts }) => {
|
|
17
|
+
const defaultTexts = {
|
|
18
|
+
title: texts?.title ?? '설정',
|
|
19
|
+
subtitle: texts?.subtitle ?? '앱 환경설정을 관리하세요',
|
|
20
|
+
saveButton: texts?.saveButton ?? '저장',
|
|
21
|
+
cancelButton: texts?.cancelButton ?? '취소',
|
|
22
|
+
...texts,
|
|
23
|
+
};
|
|
24
|
+
return {
|
|
25
|
+
type: 'div',
|
|
26
|
+
props: {
|
|
27
|
+
className: `min-h-screen bg-[var(--tekton-bg-base)] ${className ?? ''}`,
|
|
28
|
+
},
|
|
29
|
+
children: [
|
|
30
|
+
{
|
|
31
|
+
type: 'div',
|
|
32
|
+
props: {
|
|
33
|
+
className: 'flex h-screen',
|
|
34
|
+
},
|
|
35
|
+
children: [
|
|
36
|
+
// Settings sidebar/menu
|
|
37
|
+
slots?.menu ?? {
|
|
38
|
+
type: 'aside',
|
|
39
|
+
props: {
|
|
40
|
+
className: 'w-64 border-r bg-[var(--tekton-bg-surface)]',
|
|
41
|
+
style: {
|
|
42
|
+
padding: 'var(--tekton-spacing-4)',
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
children: [
|
|
46
|
+
{
|
|
47
|
+
type: 'Tabs',
|
|
48
|
+
props: {
|
|
49
|
+
orientation: 'vertical',
|
|
50
|
+
className: 'space-y-1',
|
|
51
|
+
},
|
|
52
|
+
children: ['Settings menu items...'],
|
|
53
|
+
},
|
|
54
|
+
],
|
|
55
|
+
},
|
|
56
|
+
// Settings panel
|
|
57
|
+
{
|
|
58
|
+
type: 'main',
|
|
59
|
+
props: {
|
|
60
|
+
className: 'flex-1 overflow-auto',
|
|
61
|
+
style: {
|
|
62
|
+
padding: 'var(--tekton-layout-padding-desktop)',
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
children: [
|
|
66
|
+
// Header
|
|
67
|
+
{
|
|
68
|
+
type: 'div',
|
|
69
|
+
props: {
|
|
70
|
+
className: 'mb-8',
|
|
71
|
+
},
|
|
72
|
+
children: [
|
|
73
|
+
{
|
|
74
|
+
type: 'h1',
|
|
75
|
+
props: {
|
|
76
|
+
className: 'text-3xl font-semibold mb-2',
|
|
77
|
+
},
|
|
78
|
+
children: [defaultTexts.title],
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
type: 'p',
|
|
82
|
+
props: {
|
|
83
|
+
className: 'text-[var(--tekton-text-secondary)]',
|
|
84
|
+
},
|
|
85
|
+
children: [defaultTexts.subtitle],
|
|
86
|
+
},
|
|
87
|
+
],
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
type: 'Separator',
|
|
91
|
+
props: {
|
|
92
|
+
className: 'my-6',
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
// Settings form
|
|
96
|
+
{
|
|
97
|
+
type: 'Form',
|
|
98
|
+
props: {
|
|
99
|
+
className: 'space-y-8 max-w-2xl',
|
|
100
|
+
},
|
|
101
|
+
children: [
|
|
102
|
+
// Content slot for settings sections
|
|
103
|
+
slots?.content ?? {
|
|
104
|
+
type: 'div',
|
|
105
|
+
props: {
|
|
106
|
+
className: 'space-y-6',
|
|
107
|
+
},
|
|
108
|
+
children: [
|
|
109
|
+
// Example settings group
|
|
110
|
+
{
|
|
111
|
+
type: 'div',
|
|
112
|
+
props: {
|
|
113
|
+
className: 'space-y-4',
|
|
114
|
+
},
|
|
115
|
+
children: [
|
|
116
|
+
{
|
|
117
|
+
type: 'h3',
|
|
118
|
+
props: {
|
|
119
|
+
className: 'text-lg font-medium',
|
|
120
|
+
},
|
|
121
|
+
children: ['일반 설정'],
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
type: 'div',
|
|
125
|
+
props: {
|
|
126
|
+
className: 'flex items-center justify-between',
|
|
127
|
+
},
|
|
128
|
+
children: [
|
|
129
|
+
{
|
|
130
|
+
type: 'div',
|
|
131
|
+
children: [
|
|
132
|
+
{
|
|
133
|
+
type: 'p',
|
|
134
|
+
props: {
|
|
135
|
+
className: 'font-medium',
|
|
136
|
+
},
|
|
137
|
+
children: ['알림'],
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
type: 'p',
|
|
141
|
+
props: {
|
|
142
|
+
className: 'text-sm text-[var(--tekton-text-secondary)]',
|
|
143
|
+
},
|
|
144
|
+
children: ['푸시 알림 받기'],
|
|
145
|
+
},
|
|
146
|
+
],
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
type: 'Switch',
|
|
150
|
+
},
|
|
151
|
+
],
|
|
152
|
+
},
|
|
153
|
+
],
|
|
154
|
+
},
|
|
155
|
+
],
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
type: 'Separator',
|
|
159
|
+
props: {
|
|
160
|
+
className: 'my-6',
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
// Action buttons
|
|
164
|
+
{
|
|
165
|
+
type: 'div',
|
|
166
|
+
props: {
|
|
167
|
+
className: 'flex gap-4',
|
|
168
|
+
},
|
|
169
|
+
children: [
|
|
170
|
+
{
|
|
171
|
+
type: 'Button',
|
|
172
|
+
props: {
|
|
173
|
+
type: 'submit',
|
|
174
|
+
},
|
|
175
|
+
children: [defaultTexts.saveButton],
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
type: 'Button',
|
|
179
|
+
props: {
|
|
180
|
+
variant: 'outline',
|
|
181
|
+
},
|
|
182
|
+
children: [defaultTexts.cancelButton],
|
|
183
|
+
},
|
|
184
|
+
],
|
|
185
|
+
},
|
|
186
|
+
],
|
|
187
|
+
},
|
|
188
|
+
],
|
|
189
|
+
},
|
|
190
|
+
],
|
|
191
|
+
},
|
|
192
|
+
],
|
|
193
|
+
};
|
|
194
|
+
};
|
|
195
|
+
/**
|
|
196
|
+
* Settings/Preferences Screen Template
|
|
197
|
+
* 설정/환경설정 화면 템플릿 정의
|
|
198
|
+
*/
|
|
199
|
+
export const preferencesTemplate = {
|
|
200
|
+
id: 'settings.preferences',
|
|
201
|
+
name: 'Settings/Preferences',
|
|
202
|
+
category: 'form',
|
|
203
|
+
description: 'Settings and preferences screen with sidebar menu and settings panel. Organized sections with switches and selects.',
|
|
204
|
+
skeleton: {
|
|
205
|
+
shell: 'shell.web.app',
|
|
206
|
+
page: 'page.dashboard',
|
|
207
|
+
sections: [
|
|
208
|
+
{
|
|
209
|
+
id: 'menu',
|
|
210
|
+
name: 'Settings Menu',
|
|
211
|
+
required: true,
|
|
212
|
+
allowedComponents: ['Tabs', 'Navigation'],
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
id: 'header',
|
|
216
|
+
name: 'Page Header',
|
|
217
|
+
required: true,
|
|
218
|
+
allowedComponents: ['Text'],
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
id: 'content',
|
|
222
|
+
name: 'Settings Content',
|
|
223
|
+
required: true,
|
|
224
|
+
allowedComponents: ['Form', 'Switch', 'Select', 'Button', 'Separator'],
|
|
225
|
+
},
|
|
226
|
+
],
|
|
227
|
+
},
|
|
228
|
+
customizable: {
|
|
229
|
+
texts: ['title', 'subtitle', 'saveButton', 'cancelButton'],
|
|
230
|
+
optional: ['search', 'reset_to_defaults'],
|
|
231
|
+
slots: ['menu', 'content', 'header'],
|
|
232
|
+
},
|
|
233
|
+
requiredComponents: ['Switch', 'Select', 'Button', 'Form', 'Tabs', 'Separator'],
|
|
234
|
+
layout: {
|
|
235
|
+
type: 'sidebar',
|
|
236
|
+
maxWidth: 'full',
|
|
237
|
+
responsive: {
|
|
238
|
+
desktop: {
|
|
239
|
+
padding: 'atomic.spacing.64',
|
|
240
|
+
gap: 'atomic.spacing.32',
|
|
241
|
+
columns: 12,
|
|
242
|
+
direction: 'row',
|
|
243
|
+
},
|
|
244
|
+
tablet: {
|
|
245
|
+
padding: 'atomic.spacing.32',
|
|
246
|
+
gap: 'atomic.spacing.24',
|
|
247
|
+
columns: 8,
|
|
248
|
+
direction: 'column',
|
|
249
|
+
},
|
|
250
|
+
mobile: {
|
|
251
|
+
padding: 'atomic.spacing.16',
|
|
252
|
+
gap: 'atomic.spacing.16',
|
|
253
|
+
columns: 4,
|
|
254
|
+
direction: 'column',
|
|
255
|
+
},
|
|
256
|
+
},
|
|
257
|
+
},
|
|
258
|
+
tokenBindings: {
|
|
259
|
+
backgroundColor: 'semantic.color.background.base',
|
|
260
|
+
textColor: 'semantic.color.text.primary',
|
|
261
|
+
sidebarBg: 'semantic.color.background.surface',
|
|
262
|
+
},
|
|
263
|
+
Component: PreferencesComponent,
|
|
264
|
+
};
|
|
265
|
+
//# sourceMappingURL=preferences.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preferences.js","sourceRoot":"","sources":["../../../../src/screen-templates/templates/settings/preferences.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @tekton-ui/core - Screen Template Types
|
|
3
|
+
* AI-Native ScreenTemplate interface system for 12 P0 Screen Templates
|
|
4
|
+
* [SPEC-UI-002] [TAG-UI002-001]
|
|
5
|
+
*/
|
|
6
|
+
import type { TokenReference } from '../token-resolver.js';
|
|
7
|
+
/**
|
|
8
|
+
* Minimal React type definitions for screen templates
|
|
9
|
+
* Note: Full React types should be provided by the consuming application
|
|
10
|
+
*/
|
|
11
|
+
export type ComponentType<P = object> = (props: P) => unknown;
|
|
12
|
+
export type ReactNode = unknown;
|
|
13
|
+
export type FC<P = object> = (props: P) => unknown;
|
|
14
|
+
/**
|
|
15
|
+
* JSX namespace declaration for template typing
|
|
16
|
+
* 템플릿 타이핑을 위한 JSX namespace 선언
|
|
17
|
+
*/
|
|
18
|
+
declare global {
|
|
19
|
+
namespace JSX {
|
|
20
|
+
interface Element {
|
|
21
|
+
type?: string;
|
|
22
|
+
props?: Record<string, unknown>;
|
|
23
|
+
children?: unknown[];
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Screen Category - Template classification
|
|
29
|
+
* 템플릿을 카테고리별로 분류
|
|
30
|
+
*/
|
|
31
|
+
export type ScreenCategory = 'auth' | 'dashboard' | 'content' | 'form' | 'feedback' | 'marketing';
|
|
32
|
+
/**
|
|
33
|
+
* Layout Type - Template layout patterns
|
|
34
|
+
* 템플릿의 레이아웃 타입
|
|
35
|
+
*/
|
|
36
|
+
export type TemplateLayoutType = 'full' | 'centered' | 'split' | 'sidebar';
|
|
37
|
+
/**
|
|
38
|
+
* Max Width Options - Container maximum width
|
|
39
|
+
* 컨테이너 최대 너비 옵션
|
|
40
|
+
*/
|
|
41
|
+
export type MaxWidthOption = 'sm' | 'md' | 'lg' | 'xl' | 'full';
|
|
42
|
+
/**
|
|
43
|
+
* Section Template - Layout section definition
|
|
44
|
+
* 템플릿 내 섹션 정의
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```typescript
|
|
48
|
+
* const headerSection: SectionTemplate = {
|
|
49
|
+
* id: 'header',
|
|
50
|
+
* name: 'Header',
|
|
51
|
+
* required: true,
|
|
52
|
+
* allowedComponents: ['Logo', 'Navigation'],
|
|
53
|
+
* defaultComponent: 'Logo'
|
|
54
|
+
* };
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export interface SectionTemplate {
|
|
58
|
+
/** 섹션 ID (예: 'header', 'main', 'footer') */
|
|
59
|
+
id: string;
|
|
60
|
+
/** 섹션 이름 */
|
|
61
|
+
name: string;
|
|
62
|
+
/** 필수 여부 - true면 반드시 포함되어야 함 */
|
|
63
|
+
required: boolean;
|
|
64
|
+
/** 허용 컴포넌트 타입 (optional) */
|
|
65
|
+
allowedComponents?: string[];
|
|
66
|
+
/** 기본 컴포넌트 (optional) */
|
|
67
|
+
defaultComponent?: string;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Responsive Layout - Breakpoint-specific layout configuration
|
|
71
|
+
* 반응형 레이아웃 설정 (Desktop, Tablet, Mobile)
|
|
72
|
+
*
|
|
73
|
+
* [TAG-UI002-005] - 항상 반응형 breakpoint 지원
|
|
74
|
+
*/
|
|
75
|
+
export interface ResponsiveLayout {
|
|
76
|
+
/** 패딩 토큰 (예: 'atomic.spacing.64') */
|
|
77
|
+
padding?: TokenReference;
|
|
78
|
+
/** 간격 토큰 (예: 'atomic.spacing.32') */
|
|
79
|
+
gap?: TokenReference;
|
|
80
|
+
/** 그리드 컬럼 수 */
|
|
81
|
+
columns?: number;
|
|
82
|
+
/** 레이아웃 방향 */
|
|
83
|
+
direction?: 'row' | 'column';
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Template Layout - Complete layout configuration
|
|
87
|
+
* 템플릿 레이아웃 전체 설정
|
|
88
|
+
*
|
|
89
|
+
* [TAG-UI002-002] - 항상 Tekton 레이아웃 토큰 사용
|
|
90
|
+
* [TAG-UI002-005] - 반응형 breakpoint 지원
|
|
91
|
+
*/
|
|
92
|
+
export interface TemplateLayout {
|
|
93
|
+
/** 레이아웃 타입 */
|
|
94
|
+
type: TemplateLayoutType;
|
|
95
|
+
/** 최대 너비 (선택적) */
|
|
96
|
+
maxWidth?: MaxWidthOption;
|
|
97
|
+
/** 반응형 breakpoint별 레이아웃 */
|
|
98
|
+
responsive: {
|
|
99
|
+
/** Desktop (≥1024px) */
|
|
100
|
+
desktop: ResponsiveLayout;
|
|
101
|
+
/** Tablet (768px~1024px) */
|
|
102
|
+
tablet: ResponsiveLayout;
|
|
103
|
+
/** Mobile (<768px) */
|
|
104
|
+
mobile: ResponsiveLayout;
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Customizable Configuration - AI modification boundaries
|
|
109
|
+
* AI가 수정 가능한 영역 정의
|
|
110
|
+
*
|
|
111
|
+
* [TAG-UI002-003] - 항상 AI 커스터마이징 가능 영역 명시
|
|
112
|
+
*/
|
|
113
|
+
export interface CustomizableConfig {
|
|
114
|
+
/** 수정 가능한 텍스트 키 배열 (예: ['title', 'subtitle', 'button_label']) */
|
|
115
|
+
texts: string[];
|
|
116
|
+
/** 선택적 기능 배열 (예: ['social_login', 'remember_me']) */
|
|
117
|
+
optional: string[];
|
|
118
|
+
/** 커스터마이징 가능한 슬롯 배열 (예: ['header', 'footer', 'sidebar']) */
|
|
119
|
+
slots: string[];
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* ScreenTemplate Props - Component props interface
|
|
123
|
+
* ScreenTemplate 컴포넌트가 받는 props
|
|
124
|
+
*/
|
|
125
|
+
export interface ScreenTemplateProps {
|
|
126
|
+
/** 슬롯 컨텐츠 (예: { header: <Logo />, footer: <Footer /> }) */
|
|
127
|
+
slots?: Record<string, ReactNode>;
|
|
128
|
+
/** 커스텀 클래스 */
|
|
129
|
+
className?: string;
|
|
130
|
+
/** 테마 오버라이드 (테마 ID) */
|
|
131
|
+
theme?: string;
|
|
132
|
+
/** 커스터마이징 가능한 텍스트 */
|
|
133
|
+
texts?: Record<string, string>;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* ScreenTemplate - AI-Native screen template definition
|
|
137
|
+
* AI가 이해하고 수정 가능한 화면 템플릿 인터페이스
|
|
138
|
+
*
|
|
139
|
+
* [TAG-UI002-001] - 항상 ScreenTemplate 인터페이스 준수
|
|
140
|
+
*
|
|
141
|
+
* @example
|
|
142
|
+
* ```typescript
|
|
143
|
+
* const loginTemplate: ScreenTemplate = {
|
|
144
|
+
* id: 'auth.login',
|
|
145
|
+
* name: 'Login',
|
|
146
|
+
* category: 'auth',
|
|
147
|
+
* description: 'User login screen with email/password authentication',
|
|
148
|
+
* skeleton: {
|
|
149
|
+
* shell: 'shell.web.app',
|
|
150
|
+
* page: 'page.auth',
|
|
151
|
+
* sections: [
|
|
152
|
+
* { id: 'logo', name: 'Logo', required: true },
|
|
153
|
+
* { id: 'form', name: 'Login Form', required: true },
|
|
154
|
+
* { id: 'footer', name: 'Footer Links', required: false }
|
|
155
|
+
* ]
|
|
156
|
+
* },
|
|
157
|
+
* customizable: {
|
|
158
|
+
* texts: ['title', 'subtitle', 'button_label'],
|
|
159
|
+
* optional: ['social_login', 'remember_me'],
|
|
160
|
+
* slots: ['header', 'footer']
|
|
161
|
+
* },
|
|
162
|
+
* requiredComponents: ['Button', 'Input', 'Form', 'Card', 'Label'],
|
|
163
|
+
* layout: {
|
|
164
|
+
* type: 'centered',
|
|
165
|
+
* maxWidth: 'sm',
|
|
166
|
+
* responsive: {
|
|
167
|
+
* desktop: { padding: 'atomic.spacing.64', gap: 'atomic.spacing.32' },
|
|
168
|
+
* tablet: { padding: 'atomic.spacing.32', gap: 'atomic.spacing.24' },
|
|
169
|
+
* mobile: { padding: 'atomic.spacing.16', gap: 'atomic.spacing.16' }
|
|
170
|
+
* }
|
|
171
|
+
* },
|
|
172
|
+
* Component: LoginComponent
|
|
173
|
+
* };
|
|
174
|
+
* ```
|
|
175
|
+
*/
|
|
176
|
+
export interface ScreenTemplate {
|
|
177
|
+
/** 템플릿 고유 ID (예: 'auth.login', 'dashboard.overview') */
|
|
178
|
+
id: string;
|
|
179
|
+
/** 템플릿 이름 */
|
|
180
|
+
name: string;
|
|
181
|
+
/** 카테고리 */
|
|
182
|
+
category: ScreenCategory;
|
|
183
|
+
/** 설명 - AI에게 제공되는 컨텍스트 */
|
|
184
|
+
description: string;
|
|
185
|
+
/** 골격 - AI가 수정 가능한 범위 명시 */
|
|
186
|
+
skeleton: {
|
|
187
|
+
/** 쉘 타입 (전체 페이지 레이아웃) */
|
|
188
|
+
shell: 'shell.web.app' | 'shell.web.landing' | 'shell.mobile';
|
|
189
|
+
/** 페이지 레이아웃 타입 */
|
|
190
|
+
page: 'page.auth' | 'page.dashboard' | 'page.content' | 'page.form';
|
|
191
|
+
/** 섹션 템플릿 배열 */
|
|
192
|
+
sections: SectionTemplate[];
|
|
193
|
+
};
|
|
194
|
+
/** AI 커스터마이징 가능 영역 [TAG-UI002-003] */
|
|
195
|
+
customizable: CustomizableConfig;
|
|
196
|
+
/** 필수 컴포넌트 [TAG-UI002-004] */
|
|
197
|
+
requiredComponents: string[];
|
|
198
|
+
/** 레이아웃 설정 [TAG-UI002-002, TAG-UI002-005] */
|
|
199
|
+
layout: TemplateLayout;
|
|
200
|
+
/** 토큰 바인딩 (선택적) */
|
|
201
|
+
tokenBindings?: Record<string, TokenReference>;
|
|
202
|
+
/** React 컴포넌트 */
|
|
203
|
+
Component: ComponentType<ScreenTemplateProps>;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Template Validation Error - Template validation error details
|
|
207
|
+
* 템플릿 검증 오류 상세 정보
|
|
208
|
+
*/
|
|
209
|
+
export interface TemplateValidationError {
|
|
210
|
+
/** 오류 타입 */
|
|
211
|
+
type: 'missing_component' | 'invalid_layout' | 'invalid_token' | 'missing_section';
|
|
212
|
+
/** 오류 메시지 */
|
|
213
|
+
message: string;
|
|
214
|
+
/** 관련 필드 (선택적) */
|
|
215
|
+
field?: string;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Template Validation Result - Template validation result
|
|
219
|
+
* 템플릿 검증 결과
|
|
220
|
+
*
|
|
221
|
+
* [TAG-UI002-004] - 필수 컴포넌트 검증
|
|
222
|
+
*/
|
|
223
|
+
export interface TemplateValidationResult {
|
|
224
|
+
/** 검증 성공 여부 */
|
|
225
|
+
valid: boolean;
|
|
226
|
+
/** 오류 목록 (검증 실패 시) */
|
|
227
|
+
errors?: TemplateValidationError[];
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/screen-templates/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/screen-templates/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|