@naeil/ui 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/DESIGN.md +186 -0
  3. package/LICENSE +21 -0
  4. package/README.md +85 -22
  5. package/THIRD_PARTY_NOTICES.md +49 -0
  6. package/dist/chunk-JBTDRVZ7.js +46 -0
  7. package/dist/chunk-QKVN6Q6C.js +438 -0
  8. package/dist/components/index.d.ts +87 -0
  9. package/dist/components/index.js +832 -0
  10. package/dist/components/ui/index.d.ts +105 -0
  11. package/dist/components/ui/index.js +736 -0
  12. package/dist/lib/utils.d.ts +5 -0
  13. package/dist/lib/utils.js +7 -0
  14. package/dist/source/components/footer.d.ts +15 -0
  15. package/dist/source/components/footer.js +172 -0
  16. package/dist/source/components/index.d.ts +11 -0
  17. package/dist/source/components/index.js +26 -0
  18. package/dist/source/components/locale-switcher.d.ts +17 -0
  19. package/dist/source/components/locale-switcher.js +66 -0
  20. package/dist/source/components/logo.d.ts +9 -0
  21. package/dist/source/components/logo.js +52 -0
  22. package/dist/source/components/nav.d.ts +39 -0
  23. package/dist/source/components/nav.js +412 -0
  24. package/dist/source/components/theme-provider.d.ts +6 -0
  25. package/dist/source/components/theme-provider.js +45 -0
  26. package/dist/source/components/theme-toggle-icon.d.ts +5 -0
  27. package/dist/source/components/theme-toggle-icon.js +62 -0
  28. package/dist/source/components/theme-toggle.d.ts +5 -0
  29. package/dist/source/components/theme-toggle.js +34 -0
  30. package/dist/source/components/typography.d.ts +12 -0
  31. package/dist/source/components/typography.js +49 -0
  32. package/dist/source/components/ui/avatar.d.ts +14 -0
  33. package/dist/source/components/ui/avatar.js +137 -0
  34. package/dist/source/components/ui/badge.d.ts +13 -0
  35. package/dist/source/components/ui/badge.js +76 -0
  36. package/dist/source/components/ui/button.d.ts +14 -0
  37. package/dist/source/components/ui/button.js +88 -0
  38. package/dist/source/components/ui/card.d.ts +13 -0
  39. package/dist/source/components/ui/card.js +135 -0
  40. package/dist/source/components/ui/checkbox.d.ts +7 -0
  41. package/dist/source/components/ui/checkbox.js +58 -0
  42. package/dist/source/components/ui/dialog.d.ts +20 -0
  43. package/dist/source/components/ui/dialog.js +182 -0
  44. package/dist/source/components/ui/dropdown-menu.d.ts +28 -0
  45. package/dist/source/components/ui/dropdown-menu.js +282 -0
  46. package/dist/source/components/ui/index.d.ts +19 -0
  47. package/dist/source/components/ui/index.js +131 -0
  48. package/dist/source/components/ui/input.d.ts +6 -0
  49. package/dist/source/components/ui/input.js +49 -0
  50. package/dist/source/components/ui/select.d.ts +16 -0
  51. package/dist/source/components/ui/select.js +197 -0
  52. package/dist/source/components/ui/sonner.d.ts +6 -0
  53. package/dist/source/components/ui/sonner.js +80 -0
  54. package/dist/source/components/ui/switch.d.ts +7 -0
  55. package/dist/source/components/ui/switch.js +54 -0
  56. package/dist/source/components/ui/tabs.d.ts +10 -0
  57. package/dist/source/components/ui/tabs.js +57 -0
  58. package/dist/source/components/ui/textarea.d.ts +6 -0
  59. package/dist/source/components/ui/textarea.js +46 -0
  60. package/dist/source/i18n/config.d.ts +6 -0
  61. package/dist/source/i18n/config.js +12 -0
  62. package/dist/source/i18n/routing.d.ts +371 -0
  63. package/dist/source/i18n/routing.js +17 -0
  64. package/dist/source/lib/design/modal-inert.d.ts +6 -0
  65. package/dist/source/lib/design/modal-inert.js +73 -0
  66. package/dist/source/lib/utils.d.ts +5 -0
  67. package/dist/source/lib/utils.js +8 -0
  68. package/dist/tokens.ts +217 -0
  69. package/docs/components/README.md +21 -0
  70. package/docs/components/avatar.md +47 -0
  71. package/docs/components/badge.md +29 -0
  72. package/docs/components/button.md +39 -0
  73. package/docs/components/card.md +32 -0
  74. package/docs/components/checkbox.md +35 -0
  75. package/docs/components/common.md +31 -0
  76. package/docs/components/composition.md +68 -0
  77. package/docs/components/dialog.md +41 -0
  78. package/docs/components/dropdown-menu.md +38 -0
  79. package/docs/components/input.md +32 -0
  80. package/docs/components/select.md +39 -0
  81. package/docs/components/sonner.md +37 -0
  82. package/docs/components/switch.md +33 -0
  83. package/docs/components/tabs.md +40 -0
  84. package/docs/components/textarea.md +35 -0
  85. package/docs/design/component-demand.md +30 -0
  86. package/docs/design/public-ui-final-verification.md +96 -0
  87. package/docs/design/public-ui-release-validation.md +86 -0
  88. package/docs/design/public-ui-stage3-verification.md +98 -0
  89. package/docs/design/public-ui-stage4-verification.md +129 -0
  90. package/docs/design/public-ui-support.md +40 -0
  91. package/docs/design/v2-migration.md +199 -0
  92. package/docs/package-release.md +89 -0
  93. package/licenses/Noto-Sans-JP-OFL.txt +93 -0
  94. package/licenses/Nunito-Sans-OFL.txt +93 -0
  95. package/licenses/Pretendard-OFL.txt +94 -0
  96. package/licenses/React-MIT.txt +21 -0
  97. package/licenses/Storybook-MIT.txt +21 -0
  98. package/licenses/popper-MIT.txt +25 -0
  99. package/licenses/react-remove-scroll-bar-MIT.txt +21 -0
  100. package/licenses/store2-MIT.txt +22 -0
  101. package/licenses/toggle-selection-MIT.txt +21 -0
  102. package/package.json +215 -26
  103. package/src/styles/components.css +276 -0
  104. package/src/styles/globals.css +18 -0
  105. package/src/styles/theme.css +293 -0
  106. package/messages/en.json +0 -221
  107. package/messages/ja.json +0 -221
  108. package/messages/ko.json +0 -221
  109. package/postcss.config.mjs +0 -7
  110. package/src/app/[locale]/(content)/baby-agent/page.tsx +0 -30
  111. package/src/app/[locale]/(content)/blog/page.tsx +0 -68
  112. package/src/app/[locale]/(content)/cc/page.tsx +0 -216
  113. package/src/app/[locale]/(content)/design/page.tsx +0 -703
  114. package/src/app/[locale]/(content)/layout.tsx +0 -7
  115. package/src/app/[locale]/(content)/pkm/page.tsx +0 -31
  116. package/src/app/[locale]/(content)/projects/page.tsx +0 -100
  117. package/src/app/[locale]/(content)/sa/page.tsx +0 -179
  118. package/src/app/[locale]/(landing)/page.tsx +0 -157
  119. package/src/app/[locale]/layout.tsx +0 -72
  120. package/src/app/[locale]/login/actions.ts +0 -10
  121. package/src/app/[locale]/login/oauth-buttons.tsx +0 -78
  122. package/src/app/[locale]/login/page.tsx +0 -85
  123. package/src/app/auth/callback/route.ts +0 -78
  124. package/src/app/favicon.ico +0 -0
  125. package/src/app/globals.css +0 -32
  126. package/src/app/layout.tsx +0 -22
  127. package/src/app/sitemap.ts +0 -26
  128. package/src/components/accent-picker.tsx +0 -62
  129. package/src/components/auth-slot.tsx +0 -96
  130. package/src/components/footer-wrapper.tsx +0 -8
  131. package/src/components/footer.tsx +0 -193
  132. package/src/components/hero-scene.tsx +0 -948
  133. package/src/components/hero-section.tsx +0 -57
  134. package/src/components/locale-switcher.tsx +0 -74
  135. package/src/components/logo.tsx +0 -51
  136. package/src/components/nav-server-wrapper.tsx +0 -22
  137. package/src/components/nav-wrapper.tsx +0 -45
  138. package/src/components/nav.tsx +0 -550
  139. package/src/components/paraglider-cursor.tsx +0 -112
  140. package/src/components/project-layout.tsx +0 -194
  141. package/src/components/theme-provider.tsx +0 -10
  142. package/src/components/theme-toggle-icon.tsx +0 -62
  143. package/src/components/theme-toggle.tsx +0 -39
  144. package/src/components/typography.tsx +0 -27
  145. package/src/components/ui/avatar.tsx +0 -109
  146. package/src/components/ui/badge.tsx +0 -47
  147. package/src/components/ui/button.tsx +0 -65
  148. package/src/components/ui/card.tsx +0 -106
  149. package/src/components/ui/dialog.tsx +0 -158
  150. package/src/components/ui/dropdown-menu.tsx +0 -257
  151. package/src/components/ui/input.tsx +0 -21
  152. package/src/components/ui/sonner.tsx +0 -54
  153. package/src/components/workflow-diagram.tsx +0 -414
  154. package/src/i18n/config.ts +0 -8
  155. package/src/i18n/request.ts +0 -16
  156. package/src/i18n/routing.ts +0 -12
  157. package/src/lib/supabase/client.ts +0 -18
  158. package/src/lib/supabase/middleware.ts +0 -42
  159. package/src/lib/supabase/server.ts +0 -37
  160. package/src/lib/utils.ts +0 -6
  161. package/src/proxy.ts +0 -62
  162. package/src/tokens/.gitkeep +0 -0
  163. package/src/tokens/color.json +0 -56
  164. package/src/tokens/radius.json +0 -9
  165. package/src/tokens/semantic.json +0 -81
  166. package/src/tokens/shadow.json +0 -7
  167. package/src/tokens/spacing.json +0 -16
  168. package/src/tokens/typography.json +0 -34
  169. package/src/types/i18n.d.ts +0 -6
  170. package/src/utils/.gitkeep +0 -0
@@ -0,0 +1,276 @@
1
+ @layer components {
2
+ .ui-textarea {
3
+ min-height: var(--ui-control-height);
4
+ font-size: var(--text-base);
5
+ line-height: var(--leading-normal);
6
+ padding-block: var(--spacing-2-value);
7
+ transition:
8
+ color var(--ui-motion-fast),
9
+ background-color var(--ui-motion-fast),
10
+ border-color var(--ui-motion-fast);
11
+ }
12
+ .ui-textarea[aria-invalid="true"] {
13
+ border-color: var(--error);
14
+ }
15
+ .ui-textarea::placeholder {
16
+ color: var(--muted-foreground);
17
+ opacity: 1;
18
+ }
19
+ .ui-tabs {
20
+ display: flex;
21
+ flex-direction: column;
22
+ gap: var(--spacing-3-value);
23
+ }
24
+ .ui-tabs[data-orientation="vertical"] {
25
+ flex-direction: row;
26
+ }
27
+ .ui-tabs-list {
28
+ display: flex;
29
+ align-items: flex-start;
30
+ max-width: 100%;
31
+ min-width: 0;
32
+ gap: var(--spacing-2-value);
33
+ padding: var(--spacing-2-value);
34
+ overflow-x: auto;
35
+ }
36
+ .ui-tabs-list[aria-orientation="vertical"] {
37
+ flex-direction: column;
38
+ flex-shrink: 0;
39
+ align-self: flex-start;
40
+ }
41
+ .ui-tabs-trigger {
42
+ color: var(--foreground);
43
+ border-bottom-color: transparent;
44
+ }
45
+ .ui-tabs-trigger:hover:not(:disabled) {
46
+ background-color: var(--surface-subtle);
47
+ }
48
+ .ui-tabs-trigger[data-state="active"] {
49
+ background-color: var(--surface-selected);
50
+ border-bottom-color: var(--primary);
51
+ }
52
+ .ui-focus:focus-visible {
53
+ outline: 2px solid var(--ring);
54
+ outline-offset: 3px;
55
+ }
56
+ .ui-control {
57
+ height: var(--ui-control-height);
58
+ font-size: var(--text-base);
59
+ line-height: var(--leading-normal);
60
+ border-radius: var(--radius-md-value);
61
+ transition:
62
+ color var(--ui-motion-fast),
63
+ background-color var(--ui-motion-fast),
64
+ border-color var(--ui-motion-fast);
65
+ }
66
+ .ui-control[data-size="lg"],
67
+ .ui-control[data-size="icon-lg"] {
68
+ height: calc(var(--ui-control-height) + 4px);
69
+ }
70
+ .ui-control[data-size^="icon"] {
71
+ width: var(--ui-control-height);
72
+ padding: 0;
73
+ }
74
+ .ui-control[aria-invalid="true"] {
75
+ border-color: var(--error);
76
+ }
77
+ .ui-control::placeholder {
78
+ color: var(--muted-foreground);
79
+ opacity: 1;
80
+ }
81
+ [data-slot="button"][aria-busy="true"] {
82
+ cursor: progress;
83
+ }
84
+ .ui-menu {
85
+ background: var(--popover);
86
+ color: var(--popover-foreground);
87
+ border: 1px solid var(--border-strong);
88
+ border-radius: var(--radius-md-value);
89
+ box-shadow: var(--shadow-md);
90
+ }
91
+ .ui-menu [role^="menuitem"],
92
+ .ui-menu [role="option"] {
93
+ min-height: var(--ui-control-height);
94
+ font-size: var(--text-base);
95
+ }
96
+ .ui-menu [data-highlighted] {
97
+ background: var(--surface-subtle);
98
+ outline: 1px solid var(--ring);
99
+ outline-offset: -2px;
100
+ }
101
+ .ui-popup[data-state="open"] {
102
+ animation: ui-reveal var(--ui-motion-fast) ease-out;
103
+ }
104
+ .ui-popup[data-state="closed"] {
105
+ animation: ui-hide var(--ui-motion-fast) ease-in;
106
+ }
107
+ [data-slot="dialog-content"],
108
+ [data-slot="dialog-overlay"] {
109
+ --ui-motion-fast: var(--ui-motion-standard);
110
+ }
111
+ [data-slot="card"] {
112
+ gap: var(--ui-field-gap);
113
+ padding-block: var(--ui-panel-padding);
114
+ }
115
+ [data-slot="card-header"],
116
+ [data-slot="card-content"],
117
+ [data-slot="card-footer"] {
118
+ padding-inline: var(--ui-panel-padding);
119
+ }
120
+ [data-ui-layout] {
121
+ width: 100%;
122
+ margin-inline: auto;
123
+ }
124
+ [data-ui-layout="reading"] {
125
+ max-width: var(--ui-width-reading);
126
+ line-height: var(--leading-relaxed);
127
+ }
128
+ [data-ui-layout="settings"] {
129
+ max-width: var(--ui-width-settings);
130
+ }
131
+ [data-ui-layout="list"] {
132
+ max-width: var(--ui-width-list);
133
+ }
134
+ [data-ui-layout="short-form"] {
135
+ max-width: var(--ui-width-short-form);
136
+ }
137
+ [data-ui-layout="fluid"] {
138
+ max-width: none;
139
+ }
140
+ .ui-choice {
141
+ position: relative;
142
+ display: inline-flex;
143
+ align-items: center;
144
+ justify-content: center;
145
+ flex-shrink: 0;
146
+ }
147
+ .ui-choice:disabled {
148
+ opacity: 0.45;
149
+ cursor: not-allowed;
150
+ }
151
+ .ui-choice::before {
152
+ content: "";
153
+ position: absolute;
154
+ width: 44px;
155
+ height: 44px;
156
+ left: 50%;
157
+ top: 50%;
158
+ transform: translate(-50%, -50%);
159
+ }
160
+ [data-slot="switch"] {
161
+ width: 36px;
162
+ height: 22px;
163
+ padding: 3px;
164
+ border-radius: 999px;
165
+ background: var(--border-strong);
166
+ transition: background-color var(--ui-motion-fast);
167
+ }
168
+ [data-slot="switch"][data-state="checked"] {
169
+ background: var(--primary);
170
+ }
171
+ [data-slot="switch-thumb"] {
172
+ width: 16px;
173
+ height: 16px;
174
+ border-radius: 999px;
175
+ background: white;
176
+ transform: translateX(-7px);
177
+ transition: transform var(--ui-motion-standard);
178
+ }
179
+ [data-slot="switch-thumb"][data-state="checked"] {
180
+ background: var(--primary-foreground);
181
+ transform: translateX(7px);
182
+ }
183
+ [data-slot="checkbox"] {
184
+ width: 18px;
185
+ height: 18px;
186
+ border: 1px solid var(--border-strong);
187
+ border-radius: var(--radius-sm-value);
188
+ background: var(--background);
189
+ }
190
+ [data-slot="checkbox"][data-state="checked"],
191
+ [data-slot="checkbox"][data-state="indeterminate"] {
192
+ color: var(--primary-foreground);
193
+ background: var(--primary);
194
+ border-color: var(--primary);
195
+ }
196
+ .ui-choice-label {
197
+ display: inline-flex;
198
+ align-items: center;
199
+ gap: 12px;
200
+ min-height: 44px;
201
+ cursor: pointer;
202
+ }
203
+ [data-sonner-toast] {
204
+ font-family: var(--font-sans);
205
+ --normal-bg: var(--popover);
206
+ --normal-text: var(--foreground);
207
+ --normal-border: var(--border-strong);
208
+ transition-duration: var(--ui-motion-standard);
209
+ }
210
+ }
211
+
212
+ @keyframes ui-reveal {
213
+ from {
214
+ opacity: 0;
215
+ }
216
+ to {
217
+ opacity: 1;
218
+ }
219
+ }
220
+ @keyframes ui-hide {
221
+ from {
222
+ opacity: 1;
223
+ }
224
+ to {
225
+ opacity: 0;
226
+ }
227
+ }
228
+ @media (max-width: 560px), (pointer: coarse) {
229
+ .ui-control,
230
+ .ui-textarea,
231
+ [data-slot="dialog-close"] {
232
+ min-height: 44px;
233
+ }
234
+ .ui-control[data-size^="icon"],
235
+ [data-slot="dialog-close"] {
236
+ min-width: 44px;
237
+ }
238
+ }
239
+ @media (prefers-reduced-motion: reduce) {
240
+ [data-slot],
241
+ [data-slot] *,
242
+ [data-sonner-toast],
243
+ [data-sonner-toast] * {
244
+ animation: none !important;
245
+ transition: none !important;
246
+ scroll-behavior: auto !important;
247
+ }
248
+ }
249
+
250
+ /* Background-only switch tracks/thumbs both become Canvas under forced colors.
251
+ System colors preserve the control boundary, state and moving thumb. */
252
+ @media (forced-colors: active) {
253
+ [data-slot="switch"] {
254
+ forced-color-adjust: none;
255
+ border: 1px solid ButtonText;
256
+ background: Canvas;
257
+ }
258
+ [data-slot="switch-thumb"] {
259
+ background: ButtonText;
260
+ }
261
+ [data-slot="switch"][data-state="checked"] {
262
+ background: Highlight;
263
+ border-color: Highlight;
264
+ }
265
+ [data-slot="switch-thumb"][data-state="checked"] {
266
+ background: HighlightText;
267
+ }
268
+ [data-slot="switch"]:disabled {
269
+ opacity: 1;
270
+ background: Canvas;
271
+ border-color: GrayText;
272
+ }
273
+ [data-slot="switch"]:disabled [data-slot="switch-thumb"] {
274
+ background: GrayText;
275
+ }
276
+ }
@@ -0,0 +1,18 @@
1
+ @import "tailwindcss";
2
+ @import "tw-animate-css";
3
+ @import "./theme.css";
4
+ @import "./components.css";
5
+
6
+ @custom-variant dark (&:is(.dark *));
7
+
8
+ @layer base {
9
+ * {
10
+ @apply border-border;
11
+ }
12
+ body {
13
+ @apply bg-background text-foreground font-sans text-base leading-normal antialiased;
14
+ }
15
+ :lang(ja) {
16
+ font-family: "Noto Sans JP", var(--font-sans);
17
+ }
18
+ }
@@ -0,0 +1,293 @@
1
+ /* Generated from src/tokens — DO NOT EDIT. */
2
+ @theme inline {
3
+ --color-background: var(--background);
4
+ --color-foreground: var(--foreground);
5
+ --color-card: var(--card);
6
+ --color-card-foreground: var(--card-foreground);
7
+ --color-popover: var(--popover);
8
+ --color-popover-foreground: var(--popover-foreground);
9
+ --color-primary: var(--primary);
10
+ --color-primary-foreground: var(--primary-foreground);
11
+ --color-secondary: var(--secondary);
12
+ --color-secondary-foreground: var(--secondary-foreground);
13
+ --color-muted: var(--muted);
14
+ --color-muted-foreground: var(--muted-foreground);
15
+ --color-accent: var(--accent);
16
+ --color-accent-foreground: var(--accent-foreground);
17
+ --color-destructive: var(--destructive);
18
+ --color-destructive-foreground: var(--destructive-foreground);
19
+ --color-border: var(--border);
20
+ --color-border-subtle: var(--border-subtle);
21
+ --color-border-subtle-hover: var(--border-subtle-hover);
22
+ --color-surface-subtle: var(--surface-subtle);
23
+ --color-input: var(--input);
24
+ --color-ring: var(--ring);
25
+ --color-chart-1: var(--chart-1);
26
+ --color-chart-2: var(--chart-2);
27
+ --color-chart-3: var(--chart-3);
28
+ --color-chart-4: var(--chart-4);
29
+ --color-chart-5: var(--chart-5);
30
+ --color-sidebar: var(--sidebar);
31
+ --color-sidebar-foreground: var(--sidebar-foreground);
32
+ --color-sidebar-primary: var(--sidebar-primary);
33
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
34
+ --color-sidebar-accent: var(--sidebar-accent);
35
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
36
+ --color-sidebar-border: var(--sidebar-border);
37
+ --color-sidebar-ring: var(--sidebar-ring);
38
+ --color-card-elevated: var(--card-elevated);
39
+ --color-primary-hover: var(--primary-hover);
40
+ --color-surface-selected: var(--surface-selected);
41
+ --color-border-strong: var(--border-strong);
42
+ --color-error: var(--error);
43
+ --color-error-bg: var(--error-bg);
44
+ --color-success: var(--success);
45
+ --color-success-bg: var(--success-bg);
46
+ --color-warning: var(--warning);
47
+ --color-warning-bg: var(--warning-bg);
48
+ --color-info: var(--info);
49
+ --color-info-bg: var(--info-bg);
50
+
51
+ --color-project-cc: var(--project-cc);
52
+ --color-project-sa: var(--project-sa);
53
+ --color-project-pkm: var(--project-pkm);
54
+ --color-project-naeilUi: var(--project-naeilUi);
55
+ --color-project-baby: var(--project-baby);
56
+
57
+ --font-sans: 'Pretendard Variable', Pretendard, 'Noto Sans JP', -apple-system, system-ui, sans-serif;
58
+ --font-mono: 'JetBrains Mono', 'Geist Mono', ui-monospace, monospace;
59
+
60
+ --text-xs: 0.8125rem;
61
+ --text-sm: 0.875rem;
62
+ --text-base: 1rem;
63
+ --text-lg: 1.125rem;
64
+ --text-xl: 1.25rem;
65
+ --text-2xl: 1.5rem;
66
+ --text-3xl: 2rem;
67
+ --text-4xl: 2.25rem;
68
+ --font-weight-normal: 400;
69
+ --font-weight-medium: 500;
70
+ --font-weight-bold: 700;
71
+ --font-weight-semibold: 600;
72
+ --leading-tight: 1.25;
73
+ --leading-normal: 1.5625;
74
+ --leading-relaxed: 1.875;
75
+ --shadow-sm: 0 1px 2px 0 oklch(0 0 0 / 0.05);
76
+ --shadow-md: 0 4px 6px -1px oklch(0 0 0 / 0.1), 0 2px 4px -2px oklch(0 0 0 / 0.1);
77
+ --radius-none: var(--radius-none-value);
78
+ --radius-sm: var(--radius-sm-value);
79
+ --radius-md: var(--radius-md-value);
80
+ --radius-lg: var(--radius-lg-value);
81
+
82
+ --spacing-0: var(--spacing-0-value);
83
+ --spacing-1: var(--spacing-1-value);
84
+ --spacing-2: var(--spacing-2-value);
85
+ --spacing-3: var(--spacing-3-value);
86
+ --spacing-4: var(--spacing-4-value);
87
+ --spacing-5: var(--spacing-5-value);
88
+ --spacing-6: var(--spacing-6-value);
89
+ --spacing-8: var(--spacing-8-value);
90
+ --spacing-10: var(--spacing-10-value);
91
+ --spacing-12: var(--spacing-12-value);
92
+ --spacing-16: var(--spacing-16-value);
93
+ }
94
+
95
+ :root {
96
+ --background: #f7f8fa;
97
+ --foreground: #202127;
98
+ --card: #ffffff;
99
+ --card-foreground: #202127;
100
+ --popover: #ffffff;
101
+ --popover-foreground: #202127;
102
+ --primary: #292929;
103
+ --primary-foreground: #ffffff;
104
+ --secondary: #ebebeb;
105
+ --secondary-foreground: #202127;
106
+ --muted: #f0f1f5;
107
+ --muted-foreground: #5f626e;
108
+ --accent: #ebebeb;
109
+ --accent-foreground: #202127;
110
+ --destructive: #b73a45;
111
+ --destructive-foreground: #ffffff;
112
+ --border: #e2e3e9;
113
+ --border-subtle: #e2e3e9;
114
+ --border-subtle-hover: #8c8f9b;
115
+ --surface-subtle: #f0f1f5;
116
+ --input: #8c8f9b;
117
+ --ring: #616161;
118
+ --chart-1: oklch(0.646 0.222 41.116);
119
+ --chart-2: oklch(0.6 0.118 184.704);
120
+ --chart-3: oklch(0.398 0.07 227.392);
121
+ --chart-4: oklch(0.828 0.189 84.429);
122
+ --chart-5: oklch(0.769 0.188 70.08);
123
+ --sidebar: #ffffff;
124
+ --sidebar-foreground: #202127;
125
+ --sidebar-primary: #292929;
126
+ --sidebar-primary-foreground: #ffffff;
127
+ --sidebar-accent: #ebebeb;
128
+ --sidebar-accent-foreground: #202127;
129
+ --sidebar-border: #e2e3e9;
130
+ --sidebar-ring: #616161;
131
+ --card-elevated: #ffffff;
132
+ --primary-hover: #414141;
133
+ --surface-selected: #ebebeb;
134
+ --border-strong: #8c8f9b;
135
+ --error: #b73a45;
136
+ --error-bg: #fff0f1;
137
+ --success: #246a49;
138
+ --success-bg: #e9f5ee;
139
+ --warning: #865d17;
140
+ --warning-bg: #fff3da;
141
+ --info: #245ec7;
142
+ --info-bg: #edf3ff;
143
+
144
+ --ui-control-height: 40px;
145
+ --ui-control-height-compact: 36px;
146
+ --ui-touch-target: 44px;
147
+ --ui-row-height: 72px;
148
+ --ui-row-height-compact: 60px;
149
+ --ui-panel-padding: 24px;
150
+ --ui-panel-padding-compact: 20px;
151
+ --ui-field-gap: 24px;
152
+ --ui-field-gap-compact: 16px;
153
+ --ui-width-reading: 640px;
154
+ --ui-width-settings: 640px;
155
+ --ui-width-list: 1200px;
156
+ --ui-width-short-form: 480px;
157
+ --ui-motion-fast: 120ms;
158
+ --ui-motion-standard: 180ms;
159
+ --project-cc: oklch(0.704 0.140 181);
160
+ --project-sa: oklch(0.723 0.219 149);
161
+ --project-pkm: oklch(0.627 0.265 303);
162
+ --project-naeilUi: oklch(0.623 0.214 259);
163
+ --project-baby: oklch(0.769 0.188 70.08);
164
+
165
+ --radius-none-value: 0px;
166
+ --radius-sm-value: 4px;
167
+ --radius-md-value: 8px;
168
+ --radius-lg-value: 12px;
169
+
170
+ --spacing-0-value: 0px;
171
+ --spacing-1-value: 4px;
172
+ --spacing-2-value: 8px;
173
+ --spacing-3-value: 12px;
174
+ --spacing-4-value: 16px;
175
+ --spacing-5-value: 20px;
176
+ --spacing-6-value: 24px;
177
+ --spacing-8-value: 32px;
178
+ --spacing-10-value: 40px;
179
+ --spacing-12-value: 48px;
180
+ --spacing-16-value: 64px;
181
+ }
182
+
183
+ .dark {
184
+ --background: #0b0c0e;
185
+ --foreground: #eff0f3;
186
+ --card: #111215;
187
+ --card-foreground: #eff0f3;
188
+ --popover: #191a1f;
189
+ --popover-foreground: #eff0f3;
190
+ --primary: #e5e5e5;
191
+ --primary-foreground: #171717;
192
+ --secondary: #262626;
193
+ --secondary-foreground: #eff0f3;
194
+ --muted: #202127;
195
+ --muted-foreground: #a4a6b0;
196
+ --accent: #262626;
197
+ --accent-foreground: #eff0f3;
198
+ --destructive: #b73a45;
199
+ --destructive-foreground: #ffffff;
200
+ --border: #292b33;
201
+ --border-subtle: #292b33;
202
+ --border-subtle-hover: #646773;
203
+ --surface-subtle: #202127;
204
+ --input: #646773;
205
+ --ring: #b5b5b5;
206
+ --chart-1: oklch(0.488 0.243 264.376);
207
+ --chart-2: oklch(0.696 0.17 162.48);
208
+ --chart-3: oklch(0.769 0.188 70.08);
209
+ --chart-4: oklch(0.627 0.265 303.9);
210
+ --chart-5: oklch(0.645 0.246 16.439);
211
+ --sidebar: #111215;
212
+ --sidebar-foreground: #eff0f3;
213
+ --sidebar-primary: #e5e5e5;
214
+ --sidebar-primary-foreground: #171717;
215
+ --sidebar-accent: #262626;
216
+ --sidebar-accent-foreground: #eff0f3;
217
+ --sidebar-border: #292b33;
218
+ --sidebar-ring: #b5b5b5;
219
+ --card-elevated: #191a1f;
220
+ --primary-hover: #cccccc;
221
+ --surface-selected: #262626;
222
+ --border-strong: #646773;
223
+ --error: #f0a0a0;
224
+ --error-bg: #342021;
225
+ --success: #87c9a6;
226
+ --success-bg: #182b23;
227
+ --warning: #e4bf78;
228
+ --warning-bg: #302819;
229
+ --info: #a2c2ff;
230
+ --info-bg: #18263f;
231
+ }
232
+
233
+ @media (prefers-color-scheme: dark) {
234
+ :root:not(.light) {
235
+ --background: #0b0c0e;
236
+ --foreground: #eff0f3;
237
+ --card: #111215;
238
+ --card-foreground: #eff0f3;
239
+ --popover: #191a1f;
240
+ --popover-foreground: #eff0f3;
241
+ --primary: #e5e5e5;
242
+ --primary-foreground: #171717;
243
+ --secondary: #262626;
244
+ --secondary-foreground: #eff0f3;
245
+ --muted: #202127;
246
+ --muted-foreground: #a4a6b0;
247
+ --accent: #262626;
248
+ --accent-foreground: #eff0f3;
249
+ --destructive: #b73a45;
250
+ --destructive-foreground: #ffffff;
251
+ --border: #292b33;
252
+ --border-subtle: #292b33;
253
+ --border-subtle-hover: #646773;
254
+ --surface-subtle: #202127;
255
+ --input: #646773;
256
+ --ring: #b5b5b5;
257
+ --chart-1: oklch(0.488 0.243 264.376);
258
+ --chart-2: oklch(0.696 0.17 162.48);
259
+ --chart-3: oklch(0.769 0.188 70.08);
260
+ --chart-4: oklch(0.627 0.265 303.9);
261
+ --chart-5: oklch(0.645 0.246 16.439);
262
+ --sidebar: #111215;
263
+ --sidebar-foreground: #eff0f3;
264
+ --sidebar-primary: #e5e5e5;
265
+ --sidebar-primary-foreground: #171717;
266
+ --sidebar-accent: #262626;
267
+ --sidebar-accent-foreground: #eff0f3;
268
+ --sidebar-border: #292b33;
269
+ --sidebar-ring: #b5b5b5;
270
+ --card-elevated: #191a1f;
271
+ --primary-hover: #cccccc;
272
+ --surface-selected: #262626;
273
+ --border-strong: #646773;
274
+ --error: #f0a0a0;
275
+ --error-bg: #342021;
276
+ --success: #87c9a6;
277
+ --success-bg: #182b23;
278
+ --warning: #e4bf78;
279
+ --warning-bg: #302819;
280
+ --info: #a2c2ff;
281
+ --info-bg: #18263f;
282
+ }
283
+ }
284
+
285
+ :root[data-ui-density="compact"] {
286
+ --ui-control-height: 36px;
287
+ --ui-row-height: 60px;
288
+ --ui-panel-padding: 20px;
289
+ --ui-field-gap: 16px;
290
+ }
291
+ @media (max-width: 560px), (pointer: coarse) {
292
+ :root, :root[data-ui-density="compact"] { --ui-control-height: var(--ui-touch-target); --ui-row-height: 72px; }
293
+ }