@hellboy/ds 0.1.2

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 (137) hide show
  1. package/README.md +111 -0
  2. package/dist/index.css +3699 -0
  3. package/dist/index.css.map +1 -0
  4. package/dist/index.d.mts +1087 -0
  5. package/dist/index.d.ts +1087 -0
  6. package/dist/index.js +3391 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/index.mjs +3287 -0
  9. package/dist/index.mjs.map +1 -0
  10. package/dist/theme.css +55 -0
  11. package/hellboy-ds-0.1.2.tgz +0 -0
  12. package/package.json +42 -0
  13. package/src/components/badge/Badge.tsx +29 -0
  14. package/src/components/badge/index.ts +1 -0
  15. package/src/components/banner/Banner.tsx +48 -0
  16. package/src/components/banner/banner.css +44 -0
  17. package/src/components/banner/index.ts +1 -0
  18. package/src/components/button/button.tsx +127 -0
  19. package/src/components/button/index.ts +1 -0
  20. package/src/components/card/card.tsx +57 -0
  21. package/src/components/card/index.ts +1 -0
  22. package/src/components/checkbox/Checkbox.tsx +98 -0
  23. package/src/components/checkbox/index.ts +1 -0
  24. package/src/components/code-block/code-block.tsx +44 -0
  25. package/src/components/code-block/index.ts +1 -0
  26. package/src/components/color-control/color-control.tsx +322 -0
  27. package/src/components/color-control/index.ts +1 -0
  28. package/src/components/drag-handle/DragHandle.tsx +78 -0
  29. package/src/components/drag-handle/index.ts +1 -0
  30. package/src/components/drawer/drawer.tsx +82 -0
  31. package/src/components/drawer/index.ts +1 -0
  32. package/src/components/floating-bar/floating-bar.tsx +52 -0
  33. package/src/components/floating-bar/index.ts +2 -0
  34. package/src/components/footer/footer.tsx +28 -0
  35. package/src/components/footer/index.ts +1 -0
  36. package/src/components/grid/Grid.tsx +53 -0
  37. package/src/components/grid/index.ts +1 -0
  38. package/src/components/header/header.tsx +57 -0
  39. package/src/components/header/index.ts +1 -0
  40. package/src/components/icons/icons.tsx +44 -0
  41. package/src/components/icons/index.ts +1 -0
  42. package/src/components/index.ts +29 -0
  43. package/src/components/input/DatePicker.tsx +133 -0
  44. package/src/components/input/Input.tsx +220 -0
  45. package/src/components/input/InputDate.tsx +10 -0
  46. package/src/components/input/InputDateTime.tsx +10 -0
  47. package/src/components/input/InputEmail.tsx +10 -0
  48. package/src/components/input/InputField.tsx +137 -0
  49. package/src/components/input/InputNumber.tsx +10 -0
  50. package/src/components/input/InputPassword.tsx +10 -0
  51. package/src/components/input/InputSearch.tsx +10 -0
  52. package/src/components/input/InputTel.tsx +10 -0
  53. package/src/components/input/InputText.tsx +10 -0
  54. package/src/components/input/InputTime.tsx +10 -0
  55. package/src/components/input/InputUrl.tsx +10 -0
  56. package/src/components/input/TimePicker.tsx +151 -0
  57. package/src/components/input/index.ts +11 -0
  58. package/src/components/layout/Layout.tsx +244 -0
  59. package/src/components/layout/index.ts +1 -0
  60. package/src/components/list/List.tsx +159 -0
  61. package/src/components/list/index.ts +1 -0
  62. package/src/components/navbar/MenuCategory.tsx +20 -0
  63. package/src/components/navbar/MenuGroup.tsx +288 -0
  64. package/src/components/navbar/MenuItem.tsx +65 -0
  65. package/src/components/navbar/Navbar.tsx +23 -0
  66. package/src/components/navbar/index.ts +4 -0
  67. package/src/components/page/index.ts +1 -0
  68. package/src/components/page/page.tsx +46 -0
  69. package/src/components/page-index/PageIndex.tsx +275 -0
  70. package/src/components/page-index/index.ts +1 -0
  71. package/src/components/popover/index.ts +1 -0
  72. package/src/components/popover/popover.tsx +199 -0
  73. package/src/components/radio/Radio.tsx +176 -0
  74. package/src/components/radio/index.ts +1 -0
  75. package/src/components/section/index.ts +1 -0
  76. package/src/components/section/section.tsx +66 -0
  77. package/src/components/select/Select.tsx +212 -0
  78. package/src/components/select/index.ts +1 -0
  79. package/src/components/slider/Slider.tsx +267 -0
  80. package/src/components/slider/index.ts +1 -0
  81. package/src/components/switch/index.ts +1 -0
  82. package/src/components/switch/switch.tsx +99 -0
  83. package/src/components/table/Table.tsx +147 -0
  84. package/src/components/table/index.ts +1 -0
  85. package/src/components/theme-control/index.ts +1 -0
  86. package/src/components/theme-control/theme-control.tsx +78 -0
  87. package/src/components/tooltip/index.ts +1 -0
  88. package/src/components/tooltip/tooltip.tsx +207 -0
  89. package/src/contexts/NavbarTooltipContext.tsx +48 -0
  90. package/src/contexts/index.ts +1 -0
  91. package/src/foundations/motion.md +136 -0
  92. package/src/index.ts +40 -0
  93. package/src/style/_shared/field.css +69 -0
  94. package/src/style/components/badge/badge.css +74 -0
  95. package/src/style/components/button/button.css +244 -0
  96. package/src/style/components/card/card.css +69 -0
  97. package/src/style/components/checkbox.css +142 -0
  98. package/src/style/components/code-block/code-block.css +34 -0
  99. package/src/style/components/color-control/color-control.css +126 -0
  100. package/src/style/components/drag-handle/drag-handle.css +68 -0
  101. package/src/style/components/drawer/drawer.css +210 -0
  102. package/src/style/components/floating-bar/floating-bar.css +39 -0
  103. package/src/style/components/footer/footer.css +108 -0
  104. package/src/style/components/grid/grid.css +33 -0
  105. package/src/style/components/header/header.css +44 -0
  106. package/src/style/components/icons/icons.css +44 -0
  107. package/src/style/components/input/input.css +393 -0
  108. package/src/style/components/layout/layout.css +205 -0
  109. package/src/style/components/list/list.css +140 -0
  110. package/src/style/components/navbar/navbar.css +342 -0
  111. package/src/style/components/page/page.css +46 -0
  112. package/src/style/components/page-index/page-index.css +158 -0
  113. package/src/style/components/popover/popover.css +44 -0
  114. package/src/style/components/radio.css +178 -0
  115. package/src/style/components/section/section.css +67 -0
  116. package/src/style/components/select/select.css +143 -0
  117. package/src/style/components/slider/slider.css +159 -0
  118. package/src/style/components/switch/switch.css +267 -0
  119. package/src/style/components/table/table.css +108 -0
  120. package/src/style/components/theme-control/theme-control.css +35 -0
  121. package/src/style/components/tooltip/tooltip.css +52 -0
  122. package/src/style/foundations/global.css +316 -0
  123. package/src/style/foundations/motion.css +164 -0
  124. package/src/style/foundations/spacing.css +51 -0
  125. package/src/style/foundations/typography.css +39 -0
  126. package/src/style/foundations/z-index.css +81 -0
  127. package/src/style/modes/dark.css +146 -0
  128. package/src/style/modes/light.css +147 -0
  129. package/src/style/semantic.css +52 -0
  130. package/src/style/styles.css +51 -0
  131. package/src/style/themes/theme.json +37 -0
  132. package/src/utils/README.md +305 -0
  133. package/src/utils/USER_PREFERENCES.md +558 -0
  134. package/src/utils/theme.ts +127 -0
  135. package/src/utils/user-preferences.ts +577 -0
  136. package/tsconfig.json +25 -0
  137. package/tsup.config.ts +52 -0
package/dist/index.css ADDED
@@ -0,0 +1,3699 @@
1
+ @import "https://fonts.googleapis.com/css2?family=Signika:wght@300..700&family=Rubik:ital,wght@0,300;0,500;0,600;0,700;1,400;1,500;1,600;1,700&display=swap";
2
+
3
+ /* src/style/foundations/typography.css */
4
+ :root {
5
+ --font-family-base: "Rubik", sans-serif;
6
+ --font-family-heading: "Signika", sans-serif;
7
+ --font-family-mono:
8
+ "Fira Code",
9
+ "Courier New",
10
+ monospace;
11
+ --font-size-xs: 12px;
12
+ --font-size-sm: 14px;
13
+ --font-size-base: 16px;
14
+ --font-size-md: 16px;
15
+ --font-size-lg: 18px;
16
+ --font-size-xl: 20px;
17
+ --font-size-2xl: 24px;
18
+ --font-size-3xl: 30px;
19
+ --font-size-4xl: 36px;
20
+ --font-weight-light: 200;
21
+ --font-weight-normal: 300;
22
+ --font-weight-medium: 500;
23
+ --font-weight-semibold: 600;
24
+ --font-weight-bold: 700;
25
+ --line-height-tight: 1.2;
26
+ --line-height-normal: 1.5;
27
+ --line-height-relaxed: 1.75;
28
+ --letter-spacing-tight: -0.02em;
29
+ --letter-spacing-normal: 0;
30
+ --letter-spacing-wide: 0.02em;
31
+ }
32
+
33
+ /* src/style/foundations/spacing.css */
34
+ :root {
35
+ --spacing-0: 0px;
36
+ --spacing-1: 4px;
37
+ --spacing-2: 8px;
38
+ --spacing-3: 12px;
39
+ --spacing-4: 16px;
40
+ --spacing-5: 20px;
41
+ --spacing-6: 24px;
42
+ --spacing-7: 28px;
43
+ --spacing-8: 32px;
44
+ --spacing-9: 36px;
45
+ --spacing-10: 40px;
46
+ --spacing-11: 44px;
47
+ --spacing-12: 48px;
48
+ --spacing-14: 56px;
49
+ --spacing-16: 64px;
50
+ --spacing-20: 80px;
51
+ --spacing-24: 96px;
52
+ --spacing-28: 112px;
53
+ --spacing-32: 128px;
54
+ --spacing-36: 144px;
55
+ --spacing-40: 160px;
56
+ --spacing-44: 176px;
57
+ --spacing-48: 192px;
58
+ --spacing-52: 208px;
59
+ --spacing-56: 224px;
60
+ --spacing-60: 240px;
61
+ --spacing-64: 256px;
62
+ --spacing-72: 288px;
63
+ --spacing-80: 320px;
64
+ --spacing-96: 384px;
65
+ --radius-sm: 4px;
66
+ --radius-base: 6px;
67
+ --radius-md: 8px;
68
+ --radius-lg: 12px;
69
+ --radius-xl: 16px;
70
+ --radius-full: 9999px;
71
+ --transition-fast: 0.15s ease-in-out;
72
+ --transition-base: 0.2s ease-in-out;
73
+ --transition-slow: 0.3s ease-in-out;
74
+ }
75
+
76
+ /* src/style/foundations/motion.css */
77
+ :root {
78
+ --motion-duration-fast: 0.15s;
79
+ --motion-duration-base: 0.2s;
80
+ --motion-duration-slow: 0.3s;
81
+ --motion-duration-slower: 0.5s;
82
+ --motion-easing-standard: cubic-bezier(0.4, 0.0, 0.2, 1);
83
+ --motion-easing-decelerate: cubic-bezier(0.0, 0.0, 0.2, 1);
84
+ --motion-easing-accelerate: cubic-bezier(0.4, 0.0, 1, 1);
85
+ --motion-easing-sharp: cubic-bezier(0.4, 0.0, 0.6, 1);
86
+ --motion-transition-fast: var(--motion-duration-fast) var(--motion-easing-standard);
87
+ --motion-transition-base: var(--motion-duration-base) var(--motion-easing-standard);
88
+ --motion-transition-slow: var(--motion-duration-slow) var(--motion-easing-standard);
89
+ --motion-transition-slower: var(--motion-duration-slower) var(--motion-easing-standard);
90
+ --motion-transition-color: color var(--motion-transition-base);
91
+ --motion-transition-background: background-color var(--motion-transition-base);
92
+ --motion-transition-transform: transform var(--motion-transition-base);
93
+ --motion-transition-scale: transform var(--motion-transition-fast);
94
+ --motion-transition-opacity: opacity var(--motion-transition-base);
95
+ --motion-transition-fade-in: opacity var(--motion-duration-base) var(--motion-easing-decelerate);
96
+ --motion-transition-fade-out: opacity var(--motion-duration-base) var(--motion-easing-accelerate);
97
+ --motion-transition-border: border-color var(--motion-transition-base);
98
+ --motion-transition-shadow: box-shadow var(--motion-transition-base);
99
+ --motion-easing-linear: linear;
100
+ --motion-transition-color-hover-in: color var(--motion-duration-fast) var(--motion-easing-linear);
101
+ --motion-transition-color-hover-out: color var(--motion-duration-fast) var(--motion-easing-accelerate);
102
+ --motion-transition-background-hover-in: background-color var(--motion-duration-fast) var(--motion-easing-linear);
103
+ --motion-transition-background-hover-out: background-color var(--motion-duration-fast) var(--motion-easing-accelerate);
104
+ --motion-transition-hover-in:
105
+ color var(--motion-duration-fast) var(--motion-easing-linear),
106
+ background-color var(--motion-duration-fast) var(--motion-easing-linear),
107
+ box-shadow var(--motion-duration-fast) var(--motion-easing-linear),
108
+ outline var(--motion-duration-fast) var(--motion-easing-accelerate);
109
+ --motion-transition-hover-out:
110
+ color var(--motion-duration-fast) var(--motion-easing-accelerate),
111
+ background-color var(--motion-duration-fast) var(--motion-easing-accelerate),
112
+ box-shadow var(--motion-duration-fast) var(--motion-easing-accelerate),
113
+ outline var(--motion-duration-fast) var(--motion-easing-accelerate);
114
+ --motion-keyframes-fade-in: fadeIn 0.2s ease-out;
115
+ --motion-keyframes-fade-out: fadeOut 0.2s ease-in;
116
+ --motion-keyframes-slide-in-right: slideInRight 0.3s ease-out;
117
+ --motion-keyframes-slide-out-right: slideOutRight 0.3s ease-in;
118
+ --motion-keyframes-slide-in-left: slideInLeft 0.3s ease-out;
119
+ --motion-keyframes-slide-out-left: slideOutLeft 0.3s ease-in;
120
+ --motion-keyframes-slide-in-top: slideInTop 0.3s ease-out;
121
+ --motion-keyframes-slide-out-top: slideOutTop 0.3s ease-in;
122
+ --motion-keyframes-slide-in-bottom: slideInBottom 0.3s ease-out;
123
+ --motion-keyframes-slide-out-bottom: slideOutBottom 0.3s ease-in;
124
+ --motion-keyframes-scale-in: scaleIn 0.2s ease-out;
125
+ --motion-keyframes-scale-out: scaleOut 0.2s ease-in;
126
+ }
127
+ @keyframes fadeIn {
128
+ from {
129
+ opacity: 0;
130
+ }
131
+ to {
132
+ opacity: 1;
133
+ }
134
+ }
135
+ @keyframes fadeOut {
136
+ from {
137
+ opacity: 1;
138
+ }
139
+ to {
140
+ opacity: 0;
141
+ }
142
+ }
143
+ @keyframes slideInRight {
144
+ from {
145
+ transform: translateX(100%);
146
+ }
147
+ to {
148
+ transform: translateX(0);
149
+ }
150
+ }
151
+ @keyframes slideOutRight {
152
+ from {
153
+ transform: translateX(0);
154
+ }
155
+ to {
156
+ transform: translateX(100%);
157
+ }
158
+ }
159
+ @keyframes slideInLeft {
160
+ from {
161
+ transform: translateX(-100%);
162
+ }
163
+ to {
164
+ transform: translateX(0);
165
+ }
166
+ }
167
+ @keyframes slideOutLeft {
168
+ from {
169
+ transform: translateX(0);
170
+ }
171
+ to {
172
+ transform: translateX(-100%);
173
+ }
174
+ }
175
+ @keyframes slideInTop {
176
+ from {
177
+ transform: translateY(-100%);
178
+ }
179
+ to {
180
+ transform: translateY(0);
181
+ }
182
+ }
183
+ @keyframes slideOutTop {
184
+ from {
185
+ transform: translateY(0);
186
+ }
187
+ to {
188
+ transform: translateY(-100%);
189
+ }
190
+ }
191
+ @keyframes slideInBottom {
192
+ from {
193
+ transform: translateY(100%);
194
+ }
195
+ to {
196
+ transform: translateY(0);
197
+ }
198
+ }
199
+ @keyframes slideOutBottom {
200
+ from {
201
+ transform: translateY(0);
202
+ }
203
+ to {
204
+ transform: translateY(100%);
205
+ }
206
+ }
207
+ @keyframes scaleIn {
208
+ from {
209
+ transform: scale(0.95);
210
+ opacity: 0;
211
+ }
212
+ to {
213
+ transform: scale(1);
214
+ opacity: 1;
215
+ }
216
+ }
217
+ @keyframes scaleOut {
218
+ from {
219
+ transform: scale(1);
220
+ opacity: 1;
221
+ }
222
+ to {
223
+ transform: scale(0.95);
224
+ opacity: 0;
225
+ }
226
+ }
227
+ @media (prefers-reduced-motion: reduce) {
228
+ :root {
229
+ --motion-duration-fast: 0.01s;
230
+ --motion-duration-base: 0.01s;
231
+ --motion-duration-slow: 0.01s;
232
+ --motion-duration-slower: 0.01s;
233
+ }
234
+ *,
235
+ *::before,
236
+ *::after {
237
+ animation-duration: 0.01ms;
238
+ animation-iteration-count: 1;
239
+ transition-duration: 0.01ms;
240
+ }
241
+ }
242
+
243
+ /* src/style/foundations/z-index.css */
244
+ :root {
245
+ --z-base: 1;
246
+ --z-dropdown-shadow: 5;
247
+ --z-hover-state: 10;
248
+ --z-focus-ring: 15;
249
+ --z-floating-base: 100;
250
+ --z-tooltip: 150;
251
+ --z-badge: 120;
252
+ --z-floating-action: 180;
253
+ --z-popover-base: 1000;
254
+ --z-select-dropdown: 1050;
255
+ --z-popover: 1100;
256
+ --z-context-menu: 1150;
257
+ --z-date-picker: 1200;
258
+ --z-time-picker: 1200;
259
+ --z-modal-base: 2000;
260
+ --z-drawer: 2100;
261
+ --z-dialog: 2200;
262
+ --z-lightbox: 2300;
263
+ --z-notification-base: 3000;
264
+ --z-toast: 3100;
265
+ --z-alert: 3200;
266
+ --z-banner: 3300;
267
+ --z-fixed-base: 4000;
268
+ --z-sticky-header: 4100;
269
+ --z-sticky-footer: 4100;
270
+ --z-fixed-nav: 4200;
271
+ --z-overlay-base: 5000;
272
+ --z-modal-backdrop: 5100;
273
+ --z-drawer-backdrop: 5100;
274
+ }
275
+
276
+ /* src/style/foundations/global.css */
277
+ * {
278
+ margin: 0;
279
+ padding: 0;
280
+ box-sizing: border-box;
281
+ }
282
+ html {
283
+ font-size: 16px;
284
+ -webkit-font-smoothing: antialiased;
285
+ -moz-osx-font-smoothing: grayscale;
286
+ }
287
+ body {
288
+ font-family: var(--font-family-base);
289
+ font-size: var(--font-size-base);
290
+ line-height: var(--line-height-normal);
291
+ color: var(--color-text-primary);
292
+ background-color: var(--color-bg-2);
293
+ font-weight: var(--font-weight-normal);
294
+ }
295
+ h1,
296
+ h2,
297
+ h3,
298
+ h4,
299
+ h5,
300
+ h6 {
301
+ font-family: var(--font-family-heading);
302
+ font-weight: var(--font-weight-semibold);
303
+ line-height: var(--line-height-tight);
304
+ color: var(--color-text-primary);
305
+ margin: 0 0 var(--spacing-2) 0;
306
+ }
307
+ h1 {
308
+ font-size: var(--font-size-4xl);
309
+ }
310
+ h2 {
311
+ font-size: var(--font-size-3xl);
312
+ }
313
+ h3 {
314
+ font-size: var(--font-size-2xl);
315
+ }
316
+ h4 {
317
+ font-size: var(--font-size-xl);
318
+ }
319
+ h5 {
320
+ font-size: var(--font-size-lg);
321
+ }
322
+ h6 {
323
+ font-size: var(--font-size-base);
324
+ }
325
+ ul,
326
+ ol {
327
+ margin: var(--spacing-4) 0 var(--spacing-4) var(--spacing-6);
328
+ padding: 0;
329
+ }
330
+ li {
331
+ margin-bottom: var(--spacing-2);
332
+ }
333
+ button {
334
+ border: none;
335
+ cursor: pointer;
336
+ font-family: inherit;
337
+ font-size: inherit;
338
+ }
339
+ input,
340
+ textarea,
341
+ select {
342
+ font-family: inherit;
343
+ font-size: inherit;
344
+ }
345
+ a {
346
+ color: var(--color-primary);
347
+ text-decoration: none;
348
+ transition: var(--motion-transition-color);
349
+ }
350
+ a:hover {
351
+ color: var(--color-primary-dark);
352
+ }
353
+ a.link-action {
354
+ color: var(--color-foreground-2);
355
+ font-weight: 400;
356
+ transition: var(--motion-transition-color);
357
+ border-bottom: 2px solid var(--color-accent);
358
+ }
359
+ a.link-action:hover {
360
+ color: var(--color-on-primary);
361
+ background-color: var(--color-accent);
362
+ }
363
+ code.inline-code {
364
+ background-color: var(--color-bg-2);
365
+ padding: 0.2rem 0.4rem;
366
+ border-radius: 4px;
367
+ font-family: var(--font-family-mono);
368
+ font-size: 0.875em;
369
+ }
370
+ :root {
371
+ --motion-duration-fast: 0.15s;
372
+ --motion-duration-base: 0.2s;
373
+ --motion-duration-slow: 0.3s;
374
+ --motion-duration-slower: 0.5s;
375
+ --motion-easing-standard: cubic-bezier(0.4, 0.0, 0.2, 1);
376
+ --motion-easing-decelerate: cubic-bezier(0.0, 0.0, 0.2, 1);
377
+ --motion-easing-accelerate: cubic-bezier(0.4, 0.0, 1, 1);
378
+ --motion-easing-sharp: cubic-bezier(0.4, 0.0, 0.6, 1);
379
+ --motion-transition-fast: var(--motion-duration-fast) var(--motion-easing-standard);
380
+ --motion-transition-base: var(--motion-duration-base) var(--motion-easing-standard);
381
+ --motion-transition-slow: var(--motion-duration-slow) var(--motion-easing-standard);
382
+ --motion-transition-color: color var(--motion-transition-base);
383
+ --motion-transition-background: background-color var(--motion-transition-base);
384
+ --motion-transition-transform: transform var(--motion-transition-base);
385
+ --motion-transition-opacity: opacity var(--motion-transition-base);
386
+ }
387
+ @media (prefers-reduced-motion: reduce) {
388
+ :root {
389
+ --motion-duration-fast: 0.01s;
390
+ --motion-duration-base: 0.01s;
391
+ --motion-duration-slow: 0.01s;
392
+ --motion-duration-slower: 0.01s;
393
+ }
394
+ }
395
+ @keyframes slide-in-right {
396
+ from {
397
+ transform: translateX(100%);
398
+ }
399
+ to {
400
+ transform: translateX(0);
401
+ }
402
+ }
403
+ @keyframes slide-out-right {
404
+ from {
405
+ transform: translateX(0);
406
+ }
407
+ to {
408
+ transform: translateX(100%);
409
+ }
410
+ }
411
+ @keyframes slide-in-left {
412
+ from {
413
+ transform: translateX(-100%);
414
+ }
415
+ to {
416
+ transform: translateX(0);
417
+ }
418
+ }
419
+ @keyframes slide-out-left {
420
+ from {
421
+ transform: translateX(0);
422
+ }
423
+ to {
424
+ transform: translateX(-100%);
425
+ }
426
+ }
427
+ @keyframes slide-in-top {
428
+ from {
429
+ transform: translateY(-100%);
430
+ }
431
+ to {
432
+ transform: translateY(0);
433
+ }
434
+ }
435
+ @keyframes slide-out-top {
436
+ from {
437
+ transform: translateY(0);
438
+ }
439
+ to {
440
+ transform: translateY(-100%);
441
+ }
442
+ }
443
+ @keyframes slide-in-bottom {
444
+ from {
445
+ transform: translateY(100%);
446
+ }
447
+ to {
448
+ transform: translateY(0);
449
+ }
450
+ }
451
+ @keyframes slide-out-bottom {
452
+ from {
453
+ transform: translateY(0);
454
+ }
455
+ to {
456
+ transform: translateY(100%);
457
+ }
458
+ }
459
+ @keyframes scale-in {
460
+ from {
461
+ transform: scale(0.8);
462
+ opacity: 0;
463
+ }
464
+ to {
465
+ transform: scale(1);
466
+ opacity: 1;
467
+ }
468
+ }
469
+ @keyframes scale-out {
470
+ from {
471
+ transform: scale(1);
472
+ opacity: 1;
473
+ }
474
+ to {
475
+ transform: scale(0.8);
476
+ opacity: 0;
477
+ }
478
+ }
479
+ :root {
480
+ --motion-keyframes-slide-in-right: slide-in-right var(--motion-duration-slower) var(--motion-easing-decelerate);
481
+ --motion-keyframes-slide-out-right: slide-out-right var(--motion-duration-slow) var(--motion-easing-accelerate);
482
+ --motion-keyframes-slide-in-left: slide-in-left var(--motion-duration-slower) var(--motion-easing-decelerate);
483
+ --motion-keyframes-slide-out-left: slide-out-left var(--motion-duration-slow) var(--motion-easing-accelerate);
484
+ --motion-keyframes-slide-in-top: slide-in-top var(--motion-duration-slower) var(--motion-easing-decelerate);
485
+ --motion-keyframes-slide-out-top: slide-out-top var(--motion-duration-slow) var(--motion-easing-accelerate);
486
+ --motion-keyframes-slide-in-bottom: slide-in-bottom var(--motion-duration-slower) var(--motion-easing-decelerate);
487
+ --motion-keyframes-slide-out-bottom: slide-out-bottom var(--motion-duration-slow) var(--motion-easing-accelerate);
488
+ --motion-keyframes-scale-in: scale-in var(--motion-duration-slow) var(--motion-easing-decelerate);
489
+ --motion-keyframes-scale-out: scale-out var(--motion-duration-base) var(--motion-easing-accelerate);
490
+ }
491
+ .text-primary {
492
+ color: var(--color-text-primary);
493
+ }
494
+ .text-secondary {
495
+ color: var(--color-text-secondary);
496
+ }
497
+ .text-tertiary {
498
+ color: var(--color-text-tertiary);
499
+ }
500
+ .text-xs {
501
+ font-size: var(--font-size-xs);
502
+ }
503
+ .text-sm {
504
+ font-size: var(--font-size-sm);
505
+ }
506
+ .text-base {
507
+ font-size: var(--font-size-base);
508
+ }
509
+ .text-lg {
510
+ font-size: var(--font-size-lg);
511
+ }
512
+ .text-xl {
513
+ font-size: var(--font-size-xl);
514
+ }
515
+ .font-normal {
516
+ font-weight: var(--font-weight-normal);
517
+ }
518
+ .font-medium {
519
+ font-weight: var(--font-weight-medium);
520
+ }
521
+ .font-semibold {
522
+ font-weight: var(--font-weight-semibold);
523
+ }
524
+ .font-bold {
525
+ font-weight: var(--font-weight-bold);
526
+ }
527
+ .m-0 {
528
+ margin: 0;
529
+ }
530
+ .mb-1 {
531
+ margin-bottom: 0.25rem;
532
+ }
533
+ .mb-2 {
534
+ margin-bottom: 0.5rem;
535
+ }
536
+ .mb-3 {
537
+ margin-bottom: 0.75rem;
538
+ }
539
+ .mb-4 {
540
+ margin-bottom: 1rem;
541
+ }
542
+ .mt-1 {
543
+ margin-top: 0.25rem;
544
+ }
545
+ .mt-2 {
546
+ margin-top: 0.5rem;
547
+ }
548
+ .mt-3 {
549
+ margin-top: 0.75rem;
550
+ }
551
+ .mt-4 {
552
+ margin-top: 1rem;
553
+ }
554
+ .text-center {
555
+ text-align: center;
556
+ }
557
+ .demo-content {
558
+ margin: 1rem 0;
559
+ padding: 1rem;
560
+ background-color: var(--color-surface-variant);
561
+ border-radius: 4px;
562
+ border: 1px solid var(--color-outline);
563
+ }
564
+ ::-webkit-scrollbar {
565
+ width: 12px;
566
+ height: 12px;
567
+ }
568
+ ::-webkit-scrollbar-track {
569
+ background: var(--color-bg-1);
570
+ border-radius: 6px;
571
+ }
572
+ ::-webkit-scrollbar-thumb {
573
+ background: rgba(0, 0, 0, 0.3);
574
+ border-radius: 6px;
575
+ border: 2px solid var(--color-bg-1);
576
+ transition: background-color 0.2s ease;
577
+ }
578
+ ::-webkit-scrollbar-thumb:hover {
579
+ background: rgba(0, 0, 0, 1);
580
+ }
581
+ ::-webkit-scrollbar-corner {
582
+ background: var(--color-bg-1);
583
+ }
584
+ * {
585
+ scrollbar-width: thin;
586
+ scrollbar-color: rgba(0, 0, 0, 0.3) var(--color-bg-2);
587
+ }
588
+
589
+ /* src/style/modes/light.css */
590
+ :root,
591
+ :root[data-theme=light] {
592
+ --lightness-foreground-1: 20%;
593
+ --lightness-foreground-2: 12%;
594
+ --lightness-foreground-3: 4%;
595
+ --lightness-foreground-4: 8%;
596
+ --lightness-foreground-5: 16%;
597
+ --lightness-foreground-6: 24%;
598
+ --lightness-bg-1: 80%;
599
+ --lightness-bg-2: 88%;
600
+ --lightness-bg-3: 96%;
601
+ --color-primary: hsla(var(--primary-hue), var(--primary-saturation), var(--primary-lightness), 1);
602
+ --color-on-primary: hsla(var(--primary-hue), 0%, 100%, 1);
603
+ --color-secondary: hsla(var(--secondary-hue), var(--secondary-saturation), var(--secondary-lightness), 1);
604
+ --color-on-secondary: hsla(var(--secondary-hue), 0%, 100%, 1);
605
+ --color-tertiary: var(--color-secondary);
606
+ --color-on-tertiary: var(--color-on-secondary);
607
+ --color-accent: hsla(var(--accent-hue), var(--accent-saturation), var(--accent-lightness), 1);
608
+ --color-on-accent: hsla(var(--accent-hue), 0%, 100%, 1);
609
+ --color-success: hsla(var(--success-hue), var(--success-saturation), var(--success-lightness), 1);
610
+ --color-on-success: hsla(var(--success-hue), 0%, 100%, 1);
611
+ --color-warning: hsla(var(--warning-hue), var(--warning-saturation), var(--warning-lightness), 1);
612
+ --color-on-warning: hsla(var(--warning-hue), 0%, 100%, 1);
613
+ --color-error: hsla(var(--error-hue), var(--error-saturation), var(--error-lightness), 1);
614
+ --color-on-error: hsla(var(--error-hue), 0%, 100%, 1);
615
+ --color-info: hsla(var(--info-hue), var(--info-saturation), var(--info-lightness), 1);
616
+ --color-on-info: hsla(var(--info-hue), 0%, 100%, 1);
617
+ --color-foreground-1: hsla(0, 0%, var(--lightness-foreground-1), 1);
618
+ --color-foreground-2: hsla(0, 0%, var(--lightness-foreground-2), 1);
619
+ --color-foreground-3: hsla(0, 0%, var(--lightness-foreground-3), 1);
620
+ --color-foreground-4: hsla(0, 0%, var(--lightness-foreground-4), 1);
621
+ --color-foreground-5: hsla(0, 0%, var(--lightness-foreground-5), 1);
622
+ --color-foreground-6: hsla(0, 0%, var(--lightness-foreground-6), 1);
623
+ --color-bg-1: hsla(var(--primary-hue), 0%, var(--lightness-bg-1), 1);
624
+ --color-bg-2: hsla(var(--primary-hue), 10%, var(--lightness-bg-2), 1);
625
+ --color-bg-3: hsla(var(--primary-hue), 30%, var(--lightness-bg-3), 1);
626
+ --color-primary-hover: hsla(var(--primary-hue), var(--primary-saturation), calc(var(--primary-lightness) + 10%), 1);
627
+ --color-primary-active: hsla(var(--primary-hue), var(--primary-saturation), calc(var(--primary-lightness) + 5%), 1);
628
+ --color-primary-disabled: hsla(var(--primary-hue), var(--primary-saturation), calc(var(--primary-lightness) - 20%), 0.5);
629
+ --color-secondary-hover: hsla(var(--secondary-hue), var(--secondary-saturation), calc(var(--secondary-lightness) + 10%), 1);
630
+ --color-secondary-active: hsla(var(--secondary-hue), var(--secondary-saturation), calc(var(--secondary-lightness) + 5%), 1);
631
+ --color-secondary-disabled: hsla(var(--secondary-hue), var(--secondary-saturation), calc(var(--secondary-lightness) - 20%), 0.5);
632
+ --color-accent-hover: hsla(var(--accent-hue), var(--accent-saturation), calc(var(--accent-lightness) + 10%), 1);
633
+ --color-accent-active: hsla(var(--accent-hue), var(--accent-saturation), calc(var(--accent-lightness) + 5%), 1);
634
+ --color-accent-disabled: hsla(var(--accent-hue), var(--accent-saturation), calc(var(--accent-lightness) - 20%), 0.5);
635
+ --color-success-hover: hsla(var(--success-hue), var(--success-saturation), calc(var(--success-lightness) + 10%), 1);
636
+ --color-success-active: hsla(var(--success-hue), var(--success-saturation), calc(var(--success-lightness) + 5%), 1);
637
+ --color-warning-hover: hsla(var(--warning-hue), var(--warning-saturation), calc(var(--warning-lightness) + 10%), 1);
638
+ --color-warning-active: hsla(var(--warning-hue), var(--warning-saturation), calc(var(--warning-lightness) + 5%), 1);
639
+ --color-error-hover: hsla(var(--error-hue), var(--error-saturation), calc(var(--error-lightness) + 10%), 1);
640
+ --color-error-active: hsla(var(--error-hue), var(--error-saturation), calc(var(--error-lightness) + 5%), 1);
641
+ --color-info-hover: hsla(var(--info-hue), var(--info-saturation), calc(var(--info-lightness) + 10%), 1);
642
+ --color-info-active: hsla(var(--info-hue), var(--info-saturation), calc(var(--info-lightness) + 5%), 1);
643
+ }
644
+ @media (prefers-color-scheme: light) {
645
+ :root:not([data-theme]) {
646
+ --lightness-foreground-1: 20%;
647
+ --lightness-foreground-2: 12%;
648
+ --lightness-foreground-3: 4%;
649
+ --lightness-foreground-4: 8%;
650
+ --lightness-foreground-5: 16%;
651
+ --lightness-foreground-6: 24%;
652
+ --lightness-bg-1: 80%;
653
+ --lightness-bg-2: 88%;
654
+ --lightness-bg-3: 96%;
655
+ --color-primary: hsla(var(--primary-hue), var(--primary-saturation), var(--primary-lightness), 1);
656
+ --color-on-primary: hsla(var(--primary-hue), 0%, 100%, 1);
657
+ --color-secondary: hsla(var(--secondary-hue), var(--secondary-saturation), var(--secondary-lightness), 1);
658
+ --color-on-secondary: hsla(var(--secondary-hue), 0%, 100%, 1);
659
+ --color-tertiary: var(--color-secondary);
660
+ --color-on-tertiary: var(--color-foreground-1);
661
+ --color-accent: hsla(var(--accent-hue), var(--accent-saturation), var(--accent-lightness), 1);
662
+ --color-on-accent: hsla(var(--accent-hue), 0%, 100%, 1);
663
+ --color-success: hsla(var(--success-hue), var(--success-saturation), 50%, 1);
664
+ --color-on-success: hsla(var(--success-hue), 0%, 100%, 1);
665
+ --color-warning: hsla(var(--warning-hue), var(--warning-saturation), 50%, 1);
666
+ --color-on-warning: hsla(var(--warning-hue), 0%, 100%, 1);
667
+ --color-error: hsla(var(--error-hue), var(--error-saturation), 50%, 1);
668
+ --color-on-error: hsla(var(--error-hue), 0%, 100%, 1);
669
+ --color-info: hsla(var(--info-hue), var(--info-saturation), 50%, 1);
670
+ --color-on-info: hsla(var(--info-hue), 0%, 100%, 1);
671
+ --color-foreground-1: hsla(0, 0%, var(--lightness-foreground-1), 1);
672
+ --color-foreground-2: hsla(0, 0%, var(--lightness-foreground-2), 1);
673
+ --color-foreground-3: hsla(0, 0%, var(--lightness-foreground-3), 1);
674
+ --color-foreground-4: hsla(0, 0%, var(--lightness-foreground-4), 1);
675
+ --color-foreground-5: hsla(0, 0%, var(--lightness-foreground-5), 1);
676
+ --color-foreground-6: hsla(0, 0%, var(--lightness-foreground-6), 1);
677
+ --color-bg-1: hsla(0, 0%, var(--lightness-bg-1), 1);
678
+ --color-bg-2: hsla(0, 0%, var(--lightness-bg-2), 1);
679
+ --color-bg-3: hsla(0, 0%, var(--lightness-bg-3), 1);
680
+ --color-primary-hover: hsla(var(--primary-hue), var(--primary-saturation), var(--primary-lightness-hover), 1);
681
+ --color-primary-active: hsla(var(--primary-hue), var(--primary-saturation), var(--primary-lightness-active), 1);
682
+ --color-primary-disabled: hsla(var(--primary-hue), var(--primary-saturation), var(--primary-lightness-disabled), 0.5);
683
+ --color-secondary-hover: hsla(var(--secondary-hue), var(--secondary-saturation), var(--secondary-lightness-hover), 1);
684
+ --color-secondary-active: hsla(var(--secondary-hue), var(--secondary-saturation), var(--secondary-lightness-active), 1);
685
+ --color-secondary-disabled: hsla(var(--secondary-hue), var(--secondary-saturation), var(--secondary-lightness-disabled), 0.5);
686
+ --color-accent-hover: hsla(var(--accent-hue), var(--accent-saturation), var(--accent-lightness-hover), 1);
687
+ --color-accent-active: hsla(var(--accent-hue), var(--accent-saturation), var(--accent-lightness-active), 1);
688
+ --color-accent-disabled: hsla(var(--accent-hue), var(--accent-saturation), var(--accent-lightness-disabled), 0.5);
689
+ }
690
+ }
691
+
692
+ /* src/style/modes/dark.css */
693
+ :root[data-theme=dark] {
694
+ --lightness-foreground-1: 96%;
695
+ --lightness-foreground-2: 88%;
696
+ --lightness-foreground-3: 80%;
697
+ --lightness-foreground-4: 64%;
698
+ --lightness-foreground-5: 48%;
699
+ --lightness-foreground-6: 32%;
700
+ --lightness-bg-1: 4%;
701
+ --lightness-bg-2: 12%;
702
+ --lightness-bg-3: 20%;
703
+ --color-primary: hsla(var(--primary-hue), var(--primary-saturation), var(--primary-lightness), 1);
704
+ --color-on-primary: hsla(var(--primary-hue), 0%, 100%, 1);
705
+ --color-secondary: hsla(var(--secondary-hue), var(--secondary-saturation), var(--secondary-lightness), 1);
706
+ --color-on-secondary: hsla(var(--secondary-hue), 0%, 100%, 1);
707
+ --color-tertiary: hsla(var(--secondary-hue), var(--secondary-saturation), var(--secondary-lightness), 1);
708
+ --color-on-tertiary: hsla(var(--secondary-hue), 0%, 100%, 1);
709
+ --color-accent: hsla(var(--accent-hue), var(--accent-saturation), var(--accent-lightness), 1);
710
+ --color-on-accent: hsla(var(--accent-hue), 0%, 100%, 1);
711
+ --color-success: hsla(var(--success-hue), var(--success-saturation), var(--success-lightness), 1);
712
+ --color-on-success: hsla(var(--success-hue), 0%, 100%, 1);
713
+ --color-warning: hsla(var(--warning-hue), var(--warning-saturation), var(--warning-lightness), 1);
714
+ --color-on-warning: hsla(var(--warning-hue), 0%, 100%, 1);
715
+ --color-error: hsla(var(--error-hue), var(--error-saturation), var(--error-lightness), 1);
716
+ --color-on-error: hsla(var(--error-hue), 0%, 100%, 1);
717
+ --color-info: hsla(var(--info-hue), var(--info-saturation), var(--info-lightness), 1);
718
+ --color-on-info: hsla(var(--info-hue), 0%, 100%, 1);
719
+ --color-foreground-1: hsla(0, 0%, var(--lightness-foreground-1), 1);
720
+ --color-foreground-2: hsla(0, 0%, var(--lightness-foreground-2), 1);
721
+ --color-foreground-3: hsla(0, 0%, var(--lightness-foreground-3), 1);
722
+ --color-foreground-4: hsla(0, 0%, var(--lightness-foreground-4), 1);
723
+ --color-foreground-5: hsla(0, 0%, var(--lightness-foreground-5), 1);
724
+ --color-foreground-6: hsla(0, 0%, var(--lightness-foreground-6), 1);
725
+ --color-bg-1: hsla(var(--primary-hue), 10%, var(--lightness-bg-1), 1);
726
+ --color-bg-2: hsla(var(--primary-hue), 30%, var(--lightness-bg-2), 1);
727
+ --color-bg-3: hsla(var(--primary-hue), 50%, var(--lightness-bg-3), 1);
728
+ --color-primary-hover: hsla(var(--primary-hue), var(--primary-saturation), calc(var(--primary-lightness) + 10%), 1);
729
+ --color-primary-active: hsla(var(--primary-hue), var(--primary-saturation), calc(var(--primary-lightness) + 5%), 1);
730
+ --color-primary-disabled: hsla(var(--primary-hue), var(--primary-saturation), calc(var(--primary-lightness) - 20%), 0.5);
731
+ --color-secondary-hover: hsla(var(--secondary-hue), var(--secondary-saturation), calc(var(--secondary-lightness) + 10%), 1);
732
+ --color-secondary-active: hsla(var(--secondary-hue), var(--secondary-saturation), calc(var(--secondary-lightness) + 5%), 1);
733
+ --color-secondary-disabled: hsla(var(--secondary-hue), var(--secondary-saturation), calc(var(--secondary-lightness) - 20%), 0.5);
734
+ --color-accent-hover: hsla(var(--accent-hue), var(--accent-saturation), calc(var(--accent-lightness) + 10%), 1);
735
+ --color-accent-active: hsla(var(--accent-hue), var(--accent-saturation), calc(var(--accent-lightness) + 5%), 1);
736
+ --color-accent-disabled: hsla(var(--accent-hue), var(--accent-saturation), calc(var(--accent-lightness) - 20%), 0.5);
737
+ --color-success-hover: hsla(var(--success-hue), var(--success-saturation), calc(var(--success-lightness) + 10%), 1);
738
+ --color-success-active: hsla(var(--success-hue), var(--success-saturation), calc(var(--success-lightness) + 5%), 1);
739
+ --color-warning-hover: hsla(var(--warning-hue), var(--warning-saturation), calc(var(--warning-lightness) + 10%), 1);
740
+ --color-warning-active: hsla(var(--warning-hue), var(--warning-saturation), calc(var(--warning-lightness) + 5%), 1);
741
+ --color-error-hover: hsla(var(--error-hue), var(--error-saturation), calc(var(--error-lightness) + 10%), 1);
742
+ --color-error-active: hsla(var(--error-hue), var(--error-saturation), calc(var(--error-lightness) + 5%), 1);
743
+ --color-info-hover: hsla(var(--info-hue), var(--info-saturation), calc(var(--info-lightness) + 10%), 1);
744
+ --color-info-active: hsla(var(--info-hue), var(--info-saturation), calc(var(--info-lightness) + 5%), 1);
745
+ }
746
+ @media (prefers-color-scheme: dark) {
747
+ :root:not([data-theme]) {
748
+ --lightness-foreground-1: 96%;
749
+ --lightness-foreground-2: 88%;
750
+ --lightness-foreground-3: 80%;
751
+ --lightness-foreground-4: 64%;
752
+ --lightness-foreground-5: 48%;
753
+ --lightness-foreground-6: 32%;
754
+ --lightness-bg-1: 4%;
755
+ --lightness-bg-2: 12%;
756
+ --lightness-bg-3: 20%;
757
+ --color-primary: hsla(var(--primary-hue), var(--primary-saturation), var(--primary-lightness), 1);
758
+ --color-on-primary: hsla(var(--primary-hue), 0%, 100%, 1);
759
+ --color-secondary: hsla(var(--secondary-hue), var(--secondary-saturation), var(--secondary-lightness), 1);
760
+ --color-on-secondary: hsla(var(--secondary-hue), 0%, 100%, 1);
761
+ --color-tertiary: var(--color-secondary);
762
+ --color-on-tertiary: var(--color-on-secondary);
763
+ --color-accent: hsla(var(--accent-hue), var(--accent-saturation), var(--accent-lightness), 1);
764
+ --color-on-accent: hsla(var(--accent-hue), 0%, 100%, 1);
765
+ --color-success: hsla(var(--success-hue), var(--success-saturation), 50%, 1);
766
+ --color-on-success: hsla(var(--success-hue), 0%, 100%, 1);
767
+ --color-warning: hsla(var(--warning-hue), var(--warning-saturation), 50%, 1);
768
+ --color-on-warning: hsla(var(--warning-hue), 0%, 100%, 1);
769
+ --color-error: hsla(var(--error-hue), var(--error-saturation), 50%, 1);
770
+ --color-on-error: hsla(var(--error-hue), 0%, 100%, 1);
771
+ --color-info: hsla(var(--info-hue), var(--info-saturation), 50%, 1);
772
+ --color-on-info: hsla(var(--info-hue), 0%, 100%, 1);
773
+ --color-foreground-1: hsla(0, 0%, var(--lightness-foreground-1), 1);
774
+ --color-foreground-2: hsla(0, 0%, var(--lightness-foreground-2), 1);
775
+ --color-foreground-3: hsla(0, 0%, var(--lightness-foreground-3), 1);
776
+ --color-foreground-4: hsla(0, 0%, var(--lightness-foreground-4), 1);
777
+ --color-foreground-5: hsla(0, 0%, var(--lightness-foreground-5), 1);
778
+ --color-foreground-6: hsla(0, 0%, var(--lightness-foreground-6), 1);
779
+ --color-bg-1: hsla(0, 0%, var(--lightness-bg-1), 1);
780
+ --color-bg-2: hsla(0, 0%, var(--lightness-bg-2), 1);
781
+ --color-bg-3: hsla(0, 0%, var(--lightness-bg-3), 1);
782
+ --color-primary-hover: hsla(var(--primary-hue), var(--primary-saturation), calc(var(--primary-lightness) + 10%), 1);
783
+ --color-primary-active: hsla(var(--primary-hue), var(--primary-saturation), calc(var(--primary-lightness) + 5%), 1);
784
+ --color-primary-disabled: hsla(var(--primary-hue), var(--primary-saturation), calc(var(--primary-lightness) - 20%), 0.5);
785
+ --color-secondary-hover: hsla(var(--secondary-hue), var(--secondary-saturation), calc(var(--secondary-lightness) + 10%), 1);
786
+ --color-secondary-active: hsla(var(--secondary-hue), var(--secondary-saturation), calc(var(--secondary-lightness) + 5%), 1);
787
+ --color-secondary-disabled: hsla(var(--secondary-hue), var(--secondary-saturation), calc(var(--secondary-lightness) - 20%), 0.5);
788
+ --color-accent-hover: hsla(var(--accent-hue), var(--accent-saturation), calc(var(--accent-lightness) + 10%), 1);
789
+ --color-accent-active: hsla(var(--accent-hue), var(--accent-saturation), calc(var(--accent-lightness) + 5%), 1);
790
+ --color-accent-disabled: hsla(var(--accent-hue), var(--accent-saturation), calc(var(--accent-lightness) - 20%), 0.5);
791
+ }
792
+ }
793
+
794
+ /* src/style/semantic.css */
795
+ :root {
796
+ --color-text-primary: var(--color-foreground-1);
797
+ --color-text-secondary: var(--color-foreground-2);
798
+ --color-text-tertiary: var(--color-foreground-3);
799
+ --color-primary-dark: var(--color-primary-active);
800
+ --color-surface-variant: var(--color-bg-3);
801
+ --color-outline: var(--color-foreground-2);
802
+ --color-surface-primary: var(--color-primary);
803
+ --color-surface-secondary: var(--color-secondary);
804
+ --color-on-surface-primary: var(--color-on-primary);
805
+ --color-on-surface-secondary: var(--color-on-secondary);
806
+ --color-status-error: var(--color-error);
807
+ --color-status-success: var(--color-success);
808
+ --color-status-warning: var(--color-warning);
809
+ --color-status-info: var(--color-info);
810
+ --color-on-status-error: var(--color-on-error);
811
+ --color-on-status-success: var(--color-on-success);
812
+ --color-on-status-warning: var(--color-on-warning);
813
+ --color-on-status-info: var(--color-on-info);
814
+ --color-action-primary: var(--color-accent);
815
+ --color-on-action-primary: var(--color-on-accent);
816
+ --color-action-primary-hover: var(--color-accent-hover);
817
+ --color-action-primary-active: var(--color-accent-active);
818
+ --color-action-primary-disabled: var(--color-accent-disabled);
819
+ --color-action-secondary: var(--color-secondary);
820
+ --color-on-action-secondary: var(--color-on-secondary);
821
+ --color-action-secondary-hover: var(--color-secondary-hover);
822
+ --color-action-secondary-active: var(--color-secondary-active);
823
+ --color-action-secondary-disabled: var(--color-secondary-disabled);
824
+ --color-action-tertiary: var(--color-tertiary);
825
+ --color-on-action-tertiary: var(--color-on-tertiary);
826
+ --color-action-tertiary-hover: var(--color-tertiary-hover);
827
+ --color-action-tertiary-active: var(--color-tertiary-active);
828
+ --color-action-tertiary-disabled: var(--color-tertiary-disabled);
829
+ }
830
+
831
+ /* src/style/components/button/button.css */
832
+ .btn {
833
+ position: relative;
834
+ display: inline-flex;
835
+ align-items: center;
836
+ justify-content: center;
837
+ gap: var(--spacing-2);
838
+ white-space: nowrap;
839
+ text-decoration: none;
840
+ user-select: none;
841
+ border-radius: var(--radius-base);
842
+ border: 1px solid transparent;
843
+ font-weight: var(--font-weight-semibold);
844
+ line-height: var(--line-height-normal);
845
+ letter-spacing: var(--letter-spacing-normal);
846
+ transition: var(--motion-transition-hover-in), transform var(--motion-duration-fast) var(--motion-easing-linear);
847
+ cursor: pointer;
848
+ }
849
+ .btn:not(:hover):not(:active) {
850
+ transition: var(--motion-transition-hover-out), transform var(--motion-duration-fast) var(--motion-easing-accelerate);
851
+ }
852
+ .btn--xs {
853
+ padding: var(--spacing-1);
854
+ font-size: var(--font-size-xs);
855
+ }
856
+ .btn--sm {
857
+ padding: var(--spacing-2) var(--spacing-3);
858
+ font-size: var(--font-size-sm);
859
+ min-height: 32px;
860
+ }
861
+ .btn--md {
862
+ padding: var(--spacing-2) var(--spacing-4);
863
+ font-size: var(--font-size-base);
864
+ min-height: 40px;
865
+ }
866
+ .btn--lg {
867
+ padding: var(--spacing-3) var(--spacing-6);
868
+ font-size: var(--font-size-lg);
869
+ min-height: 48px;
870
+ }
871
+ .btn--icon-only {
872
+ padding: var(--spacing-2);
873
+ width: auto;
874
+ aspect-ratio: 1;
875
+ }
876
+ .btn--icon-only.btn--xs {
877
+ padding: var(--spacing-1);
878
+ min-width: 24px;
879
+ min-height: 24px;
880
+ }
881
+ .btn--icon-only.btn--sm {
882
+ padding: var(--spacing-1);
883
+ min-width: 32px;
884
+ min-height: 32px;
885
+ }
886
+ .btn--icon-only.btn--md {
887
+ padding: var(--spacing-2);
888
+ min-width: 40px;
889
+ min-height: 40px;
890
+ }
891
+ .btn--icon-only.btn--lg {
892
+ padding: var(--spacing-3);
893
+ min-width: 48px;
894
+ min-height: 48px;
895
+ }
896
+ .btn--primary {
897
+ background-color: var(--color-action-primary);
898
+ outline: 0px solid var(--color-action-primary);
899
+ box-shadow: 0 0 0 0 var(--color-action-primary);
900
+ color: var(--color-on-action-primary);
901
+ }
902
+ .btn--primary:hover:not(:disabled) {
903
+ background-color: var(--color-action-primary-hover);
904
+ box-shadow: 0 0 0 2px var(--color-action-primary-hover);
905
+ outline: 2px solid var(--color-action-primary-hover);
906
+ }
907
+ .btn--primary:active:not(:disabled) {
908
+ background-color: var(--color-action-primary-active);
909
+ transform: scale(0.98);
910
+ }
911
+ .btn--primary:focus-visible:not(:disabled) {
912
+ outline: 2px solid var(--color-action-primary);
913
+ outline-offset: 2px;
914
+ }
915
+ .btn--secondary {
916
+ background-color: var(--color-action-secondary);
917
+ color: var(--color-on-action-secondary);
918
+ }
919
+ .btn--secondary:hover:not(:disabled) {
920
+ background-color: var(--color-action-secondary-hover);
921
+ }
922
+ .btn--secondary:active:not(:disabled) {
923
+ background-color: var(--color-action-secondary-active);
924
+ transform: scale(0.98);
925
+ }
926
+ .btn--secondary:focus-visible:not(:disabled) {
927
+ outline: 2px solid var(--color-action-secondary);
928
+ outline-offset: 2px;
929
+ }
930
+ .btn--tertiary {
931
+ background-color: transparent;
932
+ color: var(--color-foreground-2);
933
+ border-color: var(--color-action-tertiary);
934
+ border-width: 2px;
935
+ }
936
+ .btn--tertiary:hover:not(:disabled) {
937
+ background-color: hsla(var(--accent-hue), var(--accent-saturation), var(--accent-lightness-hover), 0.2);
938
+ border-color: var(--color-action-primary-hover);
939
+ color: var(--color-foreground-2);
940
+ }
941
+ .btn--tertiary:active:not(:disabled) {
942
+ background-color: hsla(var(--accent-hue), var(--accent-saturation), var(--accent-lightness-active), 0.2);
943
+ border-color: var(--color-action-primary-active);
944
+ color: var(--color-action-primary-active);
945
+ transform: scale(0.98);
946
+ }
947
+ .btn--tertiary:focus-visible:not(:disabled) {
948
+ outline: 2px solid var(--color-action-primary);
949
+ outline-offset: 2px;
950
+ }
951
+ .btn--ghost {
952
+ background-color: transparent;
953
+ color: var(--color-foreground-2);
954
+ border-color: transparent;
955
+ border-width: 2px;
956
+ }
957
+ .btn--ghost:hover:not(:disabled) {
958
+ background-color: transparent;
959
+ border-color: var(--color-action-primary-hover);
960
+ color: var(--color-foreground-2);
961
+ }
962
+ .btn--ghost:active:not(:disabled) {
963
+ background-color: hsla(var(--accent-hue), var(--accent-saturation), var(--accent-lightness-active), 0.2);
964
+ border-color: var(--color-action-primary-active);
965
+ color: var(--color-action-primary-active);
966
+ transform: scale(0.98);
967
+ }
968
+ .btn--ghost:focus-visible:not(:disabled) {
969
+ outline: 2px solid var(--color-action-primary);
970
+ outline-offset: 2px;
971
+ }
972
+ .btn:disabled {
973
+ background-color: var(--color-primary-disabled);
974
+ color: var(--color-foreground-2);
975
+ cursor: not-allowed;
976
+ border-color: var(--color-primary-disabled);
977
+ }
978
+ .btn--full-width {
979
+ width: 100%;
980
+ }
981
+ @media (hover: none) and (pointer: coarse) {
982
+ .btn--primary:active:not(:disabled) {
983
+ background-color: var(--color-primary-active);
984
+ }
985
+ .btn--secondary:active:not(:disabled) {
986
+ background-color: var(--color-secondary-active);
987
+ }
988
+ .btn--tertiary:active:not(:disabled) {
989
+ background-color: hsla(var(--primary-hue), var(--primary-saturation), var(--primary-lightness-active), 0.2);
990
+ }
991
+ .btn--ghost:active:not(:disabled) {
992
+ background-color: hsla(var(--primary-hue), var(--primary-saturation), var(--primary-lightness-active), 0.2);
993
+ }
994
+ }
995
+ .btn__spinner {
996
+ display: inline-block;
997
+ width: 16px;
998
+ height: 16px;
999
+ border-radius: 50%;
1000
+ border: 2px solid currentColor;
1001
+ border-top-color: transparent;
1002
+ animation: btn-spin 0.6s linear infinite;
1003
+ }
1004
+ .btn__icon {
1005
+ flex-shrink: 0;
1006
+ }
1007
+ .btn__icon-placeholder {
1008
+ flex-shrink: 0;
1009
+ }
1010
+ @keyframes btn-spin {
1011
+ to {
1012
+ transform: rotate(360deg);
1013
+ }
1014
+ }
1015
+
1016
+ /* src/style/components/checkbox.css */
1017
+ .checkbox {
1018
+ display: inline-flex;
1019
+ flex-direction: column;
1020
+ gap: var(--spacing-1);
1021
+ }
1022
+ .checkbox__container {
1023
+ display: inline-flex;
1024
+ align-items: center;
1025
+ gap: var(--spacing-2);
1026
+ cursor: pointer;
1027
+ user-select: none;
1028
+ }
1029
+ .checkbox__input {
1030
+ position: absolute;
1031
+ opacity: 0;
1032
+ width: 0;
1033
+ height: 0;
1034
+ pointer-events: none;
1035
+ }
1036
+ .checkbox__box {
1037
+ position: relative;
1038
+ display: inline-flex;
1039
+ align-items: center;
1040
+ justify-content: center;
1041
+ flex-shrink: 0;
1042
+ border: 2px solid var(--color-foreground-2);
1043
+ border-radius: 4px;
1044
+ background-color: var(--color-bg-1);
1045
+ transition: all 0.2s ease;
1046
+ }
1047
+ .checkbox__icon {
1048
+ color: var(--color-on-primary);
1049
+ transition: opacity 0.2s ease;
1050
+ }
1051
+ .checkbox__label {
1052
+ font-size: var(--font-size-md);
1053
+ color: var(--color-foreground-1);
1054
+ line-height: 1.5;
1055
+ }
1056
+ .checkbox--sm .checkbox__box {
1057
+ width: 16px;
1058
+ height: 16px;
1059
+ }
1060
+ .checkbox--sm .checkbox__label {
1061
+ font-size: var(--font-size-sm);
1062
+ }
1063
+ .checkbox--md .checkbox__box {
1064
+ width: 20px;
1065
+ height: 20px;
1066
+ }
1067
+ .checkbox--lg .checkbox__box {
1068
+ width: 24px;
1069
+ height: 24px;
1070
+ }
1071
+ .checkbox--lg .checkbox__label {
1072
+ font-size: var(--font-size-lg);
1073
+ }
1074
+ .checkbox__input[aria-checked=true] + .checkbox__box,
1075
+ .checkbox__input:checked + .checkbox__box {
1076
+ background-color: var(--color-primary);
1077
+ border-color: var(--color-primary);
1078
+ }
1079
+ .checkbox__input[aria-checked=mixed] + .checkbox__box {
1080
+ background-color: var(--color-primary);
1081
+ border-color: var(--color-primary);
1082
+ }
1083
+ .checkbox__input:focus-visible + .checkbox__box {
1084
+ outline: 2px solid var(--color-primary);
1085
+ outline-offset: 2px;
1086
+ }
1087
+ .checkbox__container:hover .checkbox__box {
1088
+ border-color: var(--color-primary);
1089
+ }
1090
+ .checkbox__container:hover .checkbox__input[aria-checked=true] + .checkbox__box,
1091
+ .checkbox__container:hover .checkbox__input:checked + .checkbox__box,
1092
+ .checkbox__container:hover .checkbox__input[aria-checked=mixed] + .checkbox__box {
1093
+ background-color: HSLA(var(--primary-hue), var(--primary-saturation), calc(var(--primary-lightness) - 5%), 1);
1094
+ }
1095
+ .checkbox--disabled .checkbox__container {
1096
+ cursor: not-allowed;
1097
+ opacity: 0.5;
1098
+ }
1099
+ .checkbox--disabled .checkbox__box {
1100
+ background-color: var(--color-bg-2);
1101
+ border-color: var(--color-foreground-3);
1102
+ }
1103
+ .checkbox--error .checkbox__box {
1104
+ border-color: hsla(var(--error-hue), var(--error-saturation), 50%, 1);
1105
+ }
1106
+ .checkbox--error .checkbox__input:focus-visible + .checkbox__box {
1107
+ outline-color: hsla(var(--error-hue), var(--error-saturation), 50%, 1);
1108
+ }
1109
+ .checkbox__feedback {
1110
+ padding-left: calc(var(--spacing-2) + 20px);
1111
+ }
1112
+ .checkbox__error-text {
1113
+ font-size: var(--font-size-sm);
1114
+ color: hsla(var(--error-hue), var(--error-saturation), var(--error-lightness), 1);
1115
+ display: block;
1116
+ }
1117
+ .checkbox__helper-text {
1118
+ font-size: var(--font-size-sm);
1119
+ color: var(--color-foreground-2);
1120
+ display: block;
1121
+ }
1122
+
1123
+ /* src/style/components/header/header.css */
1124
+ .header {
1125
+ background-color: var(--color-bg-2);
1126
+ border-bottom: 1px solid var(--color-foreground-2);
1127
+ border-bottom-color: rgba(0, 0, 0, 0.1);
1128
+ padding: var(--spacing-8) var(--spacing-8) 0 var(--spacing-8);
1129
+ transition: background-color var(--motion-transition-background), border-color var(--motion-transition-color);
1130
+ }
1131
+ .header__container {
1132
+ width: 100%;
1133
+ max-width: 1200px;
1134
+ margin: 0 auto;
1135
+ }
1136
+ .header__title {
1137
+ margin: 0 0 var(--spacing-2) 0;
1138
+ font-size: var(--font-size-4xl);
1139
+ font-weight: var(--font-weight-bold);
1140
+ color: var(--color-foreground-1);
1141
+ }
1142
+ .header__subtitle {
1143
+ margin: 0;
1144
+ font-size: var(--font-size-lg);
1145
+ font-weight: var(--font-weight-normal);
1146
+ color: var(--color-foreground-2);
1147
+ }
1148
+ @media (min-width: 768px) {
1149
+ .header {
1150
+ padding: var(--spacing-2) var(--spacing-4) 0 var(--spacing-4);
1151
+ }
1152
+ }
1153
+ @media (min-width: 1024px) {
1154
+ .header {
1155
+ padding: var(--spacing-4) var(--spacing-8) 0 var(--spacing-8);
1156
+ }
1157
+ }
1158
+
1159
+ /* src/style/components/page/page.css */
1160
+ .page {
1161
+ width: 100%;
1162
+ margin: 0 auto;
1163
+ padding: var(--spacing-6) var(--spacing-4);
1164
+ }
1165
+ .page--full {
1166
+ max-width: none;
1167
+ padding: 0;
1168
+ }
1169
+ .page--wide {
1170
+ max-width: 1400px;
1171
+ }
1172
+ .page--medium {
1173
+ max-width: 1200px;
1174
+ }
1175
+ .page--narrow {
1176
+ max-width: 800px;
1177
+ }
1178
+ @media (min-width: 768px) {
1179
+ .page {
1180
+ padding: var(--spacing-8) var(--spacing-6);
1181
+ }
1182
+ .page--full {
1183
+ padding: 0;
1184
+ }
1185
+ }
1186
+ @media (min-width: 1024px) {
1187
+ .page {
1188
+ padding: var(--spacing-10) var(--spacing-8);
1189
+ }
1190
+ .page--full {
1191
+ padding: 0;
1192
+ }
1193
+ }
1194
+
1195
+ /* src/style/components/section/section.css */
1196
+ .section {
1197
+ padding: var(--spacing-8) var(--spacing-4);
1198
+ border-bottom: 1px solid var(--color-foreground-2);
1199
+ border-bottom-color: rgba(0, 0, 0, 0.1);
1200
+ width: 100%;
1201
+ transition: border-color var(--motion-transition-color);
1202
+ }
1203
+ .section:last-of-type {
1204
+ border-bottom: none;
1205
+ }
1206
+ .section__title {
1207
+ margin: 0 0 var(--spacing-4) 0;
1208
+ font-size: var(--font-size-2xl);
1209
+ font-weight: var(--font-weight-bold);
1210
+ color: var(--color-foreground-1);
1211
+ }
1212
+ .section__content {
1213
+ font-size: var(--font-size-base);
1214
+ line-height: var(--line-height-relaxed);
1215
+ color: var(--color-foreground-2);
1216
+ }
1217
+ .section--sm {
1218
+ padding: var(--spacing-4) var(--spacing-4);
1219
+ }
1220
+ .section--lg {
1221
+ padding: var(--spacing-12) var(--spacing-4);
1222
+ }
1223
+ @media (min-width: 768px) {
1224
+ .section {
1225
+ padding: var(--spacing-8) var(--spacing-6);
1226
+ }
1227
+ .section--sm {
1228
+ padding: var(--spacing-4) var(--spacing-6);
1229
+ }
1230
+ .section--lg {
1231
+ padding: var(--spacing-12) var(--spacing-6);
1232
+ }
1233
+ }
1234
+ @media (min-width: 1024px) {
1235
+ .section {
1236
+ padding: var(--spacing-8) var(--spacing-8);
1237
+ max-width: 1200px;
1238
+ margin: 0 auto;
1239
+ }
1240
+ .section--sm {
1241
+ padding: var(--spacing-4) var(--spacing-8);
1242
+ }
1243
+ .section--lg {
1244
+ padding: var(--spacing-12) var(--spacing-8);
1245
+ }
1246
+ }
1247
+
1248
+ /* src/style/components/navbar/navbar.css */
1249
+ .navbar {
1250
+ width: 100%;
1251
+ height: 100vh;
1252
+ background-color: var(--color-bg-2);
1253
+ border-right: 1px solid var(--color-foreground-2);
1254
+ border-right-color: rgba(0, 0, 0, 0.1);
1255
+ display: flex;
1256
+ flex-direction: column;
1257
+ overflow-y: auto;
1258
+ overflow-x: hidden;
1259
+ transition: background-color var(--transition-base, 0.2s ease);
1260
+ }
1261
+ .navbar::-webkit-scrollbar {
1262
+ width: 8px;
1263
+ }
1264
+ .navbar::-webkit-scrollbar-track {
1265
+ background: transparent;
1266
+ }
1267
+ .navbar::-webkit-scrollbar-thumb {
1268
+ background-color: rgba(0, 0, 0, 0.3);
1269
+ border-radius: 4px;
1270
+ transition: background-color 0.2s ease;
1271
+ }
1272
+ .navbar:hover::-webkit-scrollbar-thumb {
1273
+ background-color: rgba(0, 0, 0, 1);
1274
+ }
1275
+ .navbar--header {
1276
+ font-size: 1.4rem;
1277
+ margin: 0 0 8px 0;
1278
+ color: var(--color-foreground-1);
1279
+ display: flex;
1280
+ align-items: center;
1281
+ gap: var(--spacing-1, 0.25rem);
1282
+ }
1283
+ .navbar__content {
1284
+ padding: var(--spacing-4, 1rem);
1285
+ display: flex;
1286
+ flex-direction: column;
1287
+ gap: var(--spacing-2, 0.5rem);
1288
+ }
1289
+ .expanded .navbar__content {
1290
+ min-width: 210px;
1291
+ }
1292
+ .navbar__menu-item {
1293
+ display: flex;
1294
+ align-items: center;
1295
+ gap: var(--spacing-3, 0.75rem);
1296
+ padding: var(--spacing-2, 0.5rem) var(--spacing-3, 0.75rem);
1297
+ color: var(--color-foreground-2);
1298
+ border-radius: var(--border-radius-sm, 4px);
1299
+ font-size: var(--font-size-sm, 0.875rem);
1300
+ font-weight: 500;
1301
+ width: 100%;
1302
+ position: relative;
1303
+ border: none;
1304
+ background: transparent;
1305
+ cursor: pointer;
1306
+ font-family: inherit;
1307
+ text-align: left;
1308
+ }
1309
+ .navbar__menu-item[href] {
1310
+ text-decoration: none;
1311
+ }
1312
+ .navbar__menu-item:not(:hover):not(:active):not(.navbar__menu-item--active) {
1313
+ transition: background-color var(--motion-duration-fast) var(--motion-easing-accelerate), color var(--motion-duration-fast) var(--motion-easing-accelerate);
1314
+ }
1315
+ .navbar__menu-item:hover:not(:disabled) {
1316
+ background-color: var(--color-action-primary);
1317
+ color: var(--color-on-action-primary);
1318
+ }
1319
+ .navbar__menu-item:active:not(:disabled) {
1320
+ background-color: var(--color-action-primary-active);
1321
+ color: var(--color-on-action-primary);
1322
+ }
1323
+ .navbar__menu-item:focus-visible:not(:disabled) {
1324
+ outline: 2px solid var(--color-action-primary);
1325
+ outline-offset: 2px;
1326
+ }
1327
+ .navbar__menu-item--active {
1328
+ background-color: var(--color-action-primary);
1329
+ color: var(--color-on-action-primary);
1330
+ }
1331
+ .navbar__menu-item-icon {
1332
+ display: flex;
1333
+ align-items: center;
1334
+ justify-content: center;
1335
+ width: 20px;
1336
+ height: 20px;
1337
+ flex-shrink: 0;
1338
+ }
1339
+ .navbar__menu-item-label {
1340
+ flex: 1;
1341
+ min-width: 0;
1342
+ }
1343
+ .collapsed .navbar__menu-item-label {
1344
+ display: none;
1345
+ }
1346
+ .collapsed .navbar__menu-item {
1347
+ width: auto;
1348
+ padding: var(--spacing-2);
1349
+ justify-content: center;
1350
+ }
1351
+ .navbar--logo {
1352
+ display: none;
1353
+ }
1354
+ .expanded .navbar--logo {
1355
+ display: inline-block;
1356
+ }
1357
+ .navbar__menu-group {
1358
+ display: flex;
1359
+ flex-direction: column;
1360
+ }
1361
+ .navbar__content .navbar__menu-group > .navbar__menu-group-content {
1362
+ margin-left: var(--spacing-8, 2rem);
1363
+ }
1364
+ .navbar__menu-group-header-expanded {
1365
+ display: block;
1366
+ }
1367
+ .navbar__menu-group-header-collapsed {
1368
+ display: none;
1369
+ }
1370
+ .collapsed .navbar__menu-group-header-expanded {
1371
+ display: none;
1372
+ }
1373
+ .collapsed .navbar__menu-group-header-collapsed {
1374
+ display: block;
1375
+ }
1376
+ .collapsed .navbar__menu-group-content {
1377
+ display: none;
1378
+ }
1379
+ .navbar__menu-group-header {
1380
+ display: flex;
1381
+ align-items: center;
1382
+ gap: var(--spacing-3, 0.75rem);
1383
+ padding: var(--spacing-2, 0.5rem) var(--spacing-3, 0.75rem);
1384
+ background: none;
1385
+ border: none;
1386
+ text-align: left;
1387
+ color: var(--color-foreground-2);
1388
+ border-radius: var(--border-radius-sm, 4px);
1389
+ transition: background-color var(--motion-duration-fast) var(--motion-easing-linear), color var(--motion-duration-fast) var(--motion-easing-linear);
1390
+ font-size: var(--font-size-sm, 0.875rem);
1391
+ font-weight: 600;
1392
+ cursor: pointer;
1393
+ width: 100%;
1394
+ }
1395
+ .navbar__menu-group-header--collapsed {
1396
+ justify-content: center;
1397
+ padding: var(--spacing-2);
1398
+ }
1399
+ .navbar__menu-group-header--collapsed.navbar__menu-group-header--has-active {
1400
+ background-color: var(--color-action-primary);
1401
+ color: var(--color-on-action-primary);
1402
+ }
1403
+ .navbar__menu-group-header--toggle {
1404
+ background-color: var(--color-action-secondary);
1405
+ color: var(--color-on-action-secondary);
1406
+ box-shadow: 0 0 0 2px var(--color-action-primary);
1407
+ }
1408
+ .navbar__menu-group-header--toggle:hover:not(:disabled) {
1409
+ background-color: var(--color-action-secondary-hover);
1410
+ color: var(--color-on-action-secondary);
1411
+ }
1412
+ .navbar__menu-group-header--active {
1413
+ background-color: var(--color-action-primary);
1414
+ color: var(--color-on-action-primary);
1415
+ }
1416
+ .navbar__menu-group-header:not(:hover) {
1417
+ transition: background-color var(--motion-duration-fast) var(--motion-easing-accelerate), color var(--motion-duration-fast) var(--motion-easing-accelerate);
1418
+ }
1419
+ .navbar__menu-group-header:hover:not(:disabled) {
1420
+ background-color: var(--color-bg-2);
1421
+ color: var(--color-foreground-1);
1422
+ }
1423
+ .navbar__menu-group-icon {
1424
+ display: flex;
1425
+ align-items: center;
1426
+ justify-content: center;
1427
+ width: 20px;
1428
+ height: 20px;
1429
+ flex-shrink: 0;
1430
+ }
1431
+ .navbar__menu-group-title {
1432
+ flex: 1;
1433
+ min-width: 0;
1434
+ }
1435
+ .collapsed .navbar__menu-group-title {
1436
+ display: none;
1437
+ }
1438
+ .navbar__menu-group-chevron {
1439
+ display: flex;
1440
+ align-items: center;
1441
+ justify-content: center;
1442
+ width: 12px;
1443
+ height: 12px;
1444
+ flex-shrink: 0;
1445
+ transition: transform 0.2s ease;
1446
+ }
1447
+ .collapsed .navbar__menu-group-chevron {
1448
+ display: none;
1449
+ }
1450
+ .navbar__menu-group-chevron--expanded {
1451
+ transform: rotate(180deg);
1452
+ }
1453
+ .navbar__menu-group-header--static {
1454
+ cursor: default;
1455
+ font-weight: 300;
1456
+ color: var(--color-foreground-5);
1457
+ background-color: transparent;
1458
+ margin: var(--spacing-2) 0 0 0;
1459
+ }
1460
+ .navbar__menu-group-header--static:hover {
1461
+ background-color: transparent;
1462
+ color: var(--color-foreground-5);
1463
+ }
1464
+ .navbar__menu-category {
1465
+ font-size: var(--font-size-xs);
1466
+ font-weight: 600;
1467
+ color: var(--color-foreground-3);
1468
+ letter-spacing: 0.5px;
1469
+ margin-top: var(--spacing-2);
1470
+ }
1471
+ @media (max-width: 768px) {
1472
+ .navbar {
1473
+ width: 280px;
1474
+ }
1475
+ .navbar__content {
1476
+ padding: var(--spacing-3, 0.75rem);
1477
+ }
1478
+ }
1479
+ .navbar__menu-category {
1480
+ display: flex;
1481
+ flex-direction: column;
1482
+ }
1483
+ .navbar__menu-category-title {
1484
+ font-size: var(--font-size-xs, 0.75rem);
1485
+ font-weight: var(--font-weight-semibold, 300);
1486
+ color: var(--color-foreground-5);
1487
+ text-transform: uppercase;
1488
+ letter-spacing: var(--letter-spacing-wide, 0.02em);
1489
+ padding: var(--spacing-1, 0.5rem) var(--spacing-3, 0.75rem);
1490
+ }
1491
+ .collapsed .navbar__menu-category-title {
1492
+ display: none;
1493
+ }
1494
+ .navbar__menu-category-content {
1495
+ display: flex;
1496
+ flex-direction: column;
1497
+ gap: var(--spacing-1, 0.25rem);
1498
+ }
1499
+ .navbar__menu-group-popover {
1500
+ min-width: 200px;
1501
+ max-width: 300px;
1502
+ }
1503
+ .navbar__menu-group-popover-title {
1504
+ font-size: var(--font-size-sm);
1505
+ font-weight: var(--font-weight-semibold);
1506
+ color: var(--color-foreground-1);
1507
+ padding: var(--spacing-2) var(--spacing-3) 0 var(--spacing-3);
1508
+ border-bottom: 1px solid var(--color-border);
1509
+ margin-bottom: var(--spacing-1);
1510
+ }
1511
+ .navbar__menu-group-popover-content {
1512
+ display: flex;
1513
+ flex-direction: column;
1514
+ gap: var(--spacing-1);
1515
+ padding: var(--spacing-2);
1516
+ }
1517
+ .navbar__menu-group-popover-content .navbar__menu-item {
1518
+ width: 100%;
1519
+ }
1520
+ .navbar__menu-group-popover-content .navbar__menu-item-label {
1521
+ display: block;
1522
+ }
1523
+
1524
+ /* src/style/components/code-block/code-block.css */
1525
+ .code-block {
1526
+ background-color: var(--color-bg-2);
1527
+ border: 1px solid var(--color-foreground-2);
1528
+ border-color: rgba(0, 0, 0, 0.1);
1529
+ border-radius: var(--radius-base);
1530
+ padding: var(--spacing-4);
1531
+ margin: var(--spacing-4) 0;
1532
+ font-family: var(--font-family-mono);
1533
+ font-size: var(--font-size-sm);
1534
+ overflow-x: auto;
1535
+ transition: background-color var(--transition-base, 0.2s ease);
1536
+ }
1537
+ .code-block code {
1538
+ background: none;
1539
+ padding: 0;
1540
+ border-radius: 0;
1541
+ color: var(--color-foreground-1);
1542
+ }
1543
+ .code-block--inline {
1544
+ background: none;
1545
+ border: none;
1546
+ border-radius: 0;
1547
+ padding: 0;
1548
+ margin: 0;
1549
+ font-family: var(--font-family-mono);
1550
+ font-size: inherit;
1551
+ color: var(--color-primary);
1552
+ display: inline;
1553
+ }
1554
+
1555
+ /* src/style/components/radio.css */
1556
+ .radio {
1557
+ display: inline-flex;
1558
+ align-items: center;
1559
+ gap: var(--spacing-2);
1560
+ cursor: pointer;
1561
+ user-select: none;
1562
+ position: relative;
1563
+ }
1564
+ .radio__input {
1565
+ position: absolute;
1566
+ opacity: 0;
1567
+ width: 0;
1568
+ height: 0;
1569
+ pointer-events: none;
1570
+ }
1571
+ .radio__box {
1572
+ position: relative;
1573
+ display: inline-flex;
1574
+ align-items: center;
1575
+ justify-content: center;
1576
+ flex-shrink: 0;
1577
+ border: 2px solid var(--color-foreground-2);
1578
+ border-radius: 50%;
1579
+ background-color: var(--color-bg-1);
1580
+ transition: all 0.2s ease;
1581
+ }
1582
+ .radio__dot {
1583
+ width: 50%;
1584
+ height: 50%;
1585
+ border-radius: 50%;
1586
+ background-color: var(--color-on-primary);
1587
+ opacity: 0;
1588
+ transform: scale(0);
1589
+ transition: all 0.2s ease;
1590
+ }
1591
+ .radio__label {
1592
+ font-size: var(--font-size-md);
1593
+ color: var(--color-foreground-1);
1594
+ line-height: 1.5;
1595
+ }
1596
+ .radio--sm .radio__box {
1597
+ width: 16px;
1598
+ height: 16px;
1599
+ }
1600
+ .radio--sm .radio__label {
1601
+ font-size: var(--font-size-sm);
1602
+ }
1603
+ .radio--md .radio__box {
1604
+ width: 20px;
1605
+ height: 20px;
1606
+ }
1607
+ .radio--lg .radio__box {
1608
+ width: 24px;
1609
+ height: 24px;
1610
+ }
1611
+ .radio--lg .radio__label {
1612
+ font-size: var(--font-size-lg);
1613
+ }
1614
+ .radio__input[aria-checked=true] + .radio__box,
1615
+ .radio__input:checked + .radio__box {
1616
+ background-color: var(--color-primary);
1617
+ border-color: var(--color-primary);
1618
+ }
1619
+ .radio__input[aria-checked=true] + .radio__box .radio__dot,
1620
+ .radio__input:checked + .radio__box .radio__dot {
1621
+ opacity: 1;
1622
+ transform: scale(1);
1623
+ }
1624
+ .radio__input:focus-visible + .radio__box {
1625
+ outline: 2px solid var(--color-primary);
1626
+ outline-offset: 2px;
1627
+ }
1628
+ .radio:hover .radio__box {
1629
+ border-color: var(--color-primary);
1630
+ }
1631
+ .radio:hover .radio__input[aria-checked=true] + .radio__box,
1632
+ .radio:hover .radio__input:checked + .radio__box {
1633
+ background-color: HSLA(var(--primary-hue), var(--primary-saturation), calc(var(--primary-lightness) - 5%), 1);
1634
+ }
1635
+ .radio--disabled {
1636
+ cursor: not-allowed;
1637
+ opacity: 0.5;
1638
+ }
1639
+ .radio--disabled .radio__box {
1640
+ background-color: var(--color-bg-2);
1641
+ border-color: var(--color-foreground-3);
1642
+ }
1643
+ .radio--error .radio__box {
1644
+ border-color: hsla(var(--error-hue), var(--error-saturation), 50%, 1);
1645
+ }
1646
+ .radio--error .radio__input:focus-visible + .radio__box {
1647
+ outline-color: hsla(var(--error-hue), var(--error-saturation), 50%, 1);
1648
+ }
1649
+ .radio-group {
1650
+ display: flex;
1651
+ flex-direction: column;
1652
+ gap: var(--spacing-1);
1653
+ }
1654
+ .radio-group__label {
1655
+ font-size: var(--font-size-md);
1656
+ font-weight: 600;
1657
+ color: var(--color-foreground-1);
1658
+ margin-bottom: var(--spacing-1);
1659
+ }
1660
+ .radio-group__container {
1661
+ display: flex;
1662
+ gap: var(--spacing-3);
1663
+ }
1664
+ .radio-group--vertical .radio-group__container {
1665
+ flex-direction: column;
1666
+ }
1667
+ .radio-group--horizontal .radio-group__container {
1668
+ flex-direction: row;
1669
+ flex-wrap: wrap;
1670
+ }
1671
+ .radio-group__feedback {
1672
+ margin-top: var(--spacing-1);
1673
+ }
1674
+ .radio-group__error-text {
1675
+ font-size: var(--font-size-sm);
1676
+ color: hsla(var(--error-hue), var(--error-saturation), var(--error-lightness), 1);
1677
+ display: block;
1678
+ }
1679
+ .radio-group__helper-text {
1680
+ font-size: var(--font-size-sm);
1681
+ color: var(--color-foreground-2);
1682
+ display: block;
1683
+ }
1684
+ .radio-group--error .radio__box {
1685
+ border-color: hsla(var(--error-hue), var(--error-saturation), 50%, 1);
1686
+ }
1687
+ .radio-group--error .radio__input:focus-visible + .radio__box {
1688
+ outline-color: hsla(var(--error-hue), var(--error-saturation), 50%, 1);
1689
+ }
1690
+
1691
+ /* src/style/styles.css */
1692
+
1693
+ /* src/style/components/icons/icons.css */
1694
+ .icon {
1695
+ display: inline-flex;
1696
+ align-items: center;
1697
+ justify-content: center;
1698
+ }
1699
+ .icon--skeleton {
1700
+ background:
1701
+ linear-gradient(
1702
+ 90deg,
1703
+ rgba(0, 0, 0, 0.06) 0%,
1704
+ rgba(0, 0, 0, 0.03) 50%,
1705
+ rgba(0, 0, 0, 0.06) 100%);
1706
+ border-radius: 4px;
1707
+ animation: hb-skeleton 1.2s ease-in-out infinite;
1708
+ }
1709
+ @keyframes hb-skeleton {
1710
+ 0% {
1711
+ background-position: 200% 0;
1712
+ }
1713
+ 100% {
1714
+ background-position: -200% 0;
1715
+ }
1716
+ }
1717
+ .icon {
1718
+ display: inline-block;
1719
+ flex-shrink: 0;
1720
+ transition: color var(--transition-base, 0.2s ease);
1721
+ }
1722
+ .icon--interactive {
1723
+ cursor: pointer;
1724
+ color: var(--color-foreground-1);
1725
+ }
1726
+ .icon--interactive:hover:not(:disabled) {
1727
+ color: var(--color-action-primary-hover);
1728
+ }
1729
+ .icon--interactive:active:not(:disabled) {
1730
+ color: var(--color-action-primary-active);
1731
+ }
1732
+ .icon--interactive:disabled {
1733
+ cursor: not-allowed;
1734
+ color: var(--color-foreground-2);
1735
+ }
1736
+
1737
+ /* src/style/components/badge/badge.css */
1738
+ .badge {
1739
+ display: inline-flex;
1740
+ align-items: center;
1741
+ justify-content: center;
1742
+ font-weight: var(--font-weight-semibold);
1743
+ border-radius: 999px;
1744
+ white-space: nowrap;
1745
+ transition: all var(--transition-base, 0.2s ease);
1746
+ }
1747
+ .badge--sm {
1748
+ padding: var(--spacing-1) var(--spacing-2);
1749
+ font-size: var(--font-size-xs);
1750
+ min-height: 20px;
1751
+ }
1752
+ .badge--md {
1753
+ padding: var(--spacing-1) var(--spacing-3);
1754
+ font-size: var(--font-size-sm);
1755
+ min-height: 24px;
1756
+ }
1757
+ .badge--lg {
1758
+ padding: var(--spacing-2) var(--spacing-4);
1759
+ font-size: var(--font-size-base);
1760
+ min-height: 32px;
1761
+ }
1762
+ .badge--primary {
1763
+ background-color: var(--color-primary);
1764
+ color: var(--color-on-primary);
1765
+ }
1766
+ .badge--secondary {
1767
+ background-color: var(--color-secondary);
1768
+ color: var(--color-on-secondary);
1769
+ }
1770
+ .badge--tertiary {
1771
+ background-color: var(--color-tertiary);
1772
+ color: var(--color-on-tertiary);
1773
+ }
1774
+ .badge--accent {
1775
+ background-color: var(--color-accent);
1776
+ color: var(--color-on-accent);
1777
+ }
1778
+ .badge--success {
1779
+ background-color: hsla(var(--success-hue), var(--success-saturation), var(--success-lightness), 1);
1780
+ color: hsla(var(--success-hue), 0%, 100%, 1);
1781
+ }
1782
+ .badge--warning {
1783
+ background-color: hsla(var(--warning-hue), var(--warning-saturation), var(--warning-lightness), 1);
1784
+ color: hsla(var(--warning-hue), 0%, 100%, 1);
1785
+ }
1786
+ .badge--error {
1787
+ background-color: hsla(var(--error-hue), var(--error-saturation), var(--error-lightness), 1);
1788
+ color: hsla(var(--error-hue), 0%, 100%, 1);
1789
+ }
1790
+ .badge--info {
1791
+ background-color: hsla(var(--info-hue), var(--info-saturation), var(--info-lightness), 1);
1792
+ color: hsla(var(--info-hue), 0%, 100%, 1);
1793
+ }
1794
+
1795
+ /* src/style/components/switch/switch.css */
1796
+ .switch__wrapper {
1797
+ display: inline-flex;
1798
+ flex-direction: column;
1799
+ gap: var(--spacing-1);
1800
+ }
1801
+ .switch__label {
1802
+ display: inline-flex;
1803
+ align-items: center;
1804
+ gap: var(--spacing-2);
1805
+ cursor: pointer;
1806
+ user-select: none;
1807
+ }
1808
+ .switch__input {
1809
+ position: absolute;
1810
+ opacity: 0;
1811
+ width: 0;
1812
+ height: 0;
1813
+ pointer-events: none;
1814
+ }
1815
+ .switch {
1816
+ position: relative;
1817
+ display: inline-block;
1818
+ flex-shrink: 0;
1819
+ }
1820
+ .switch__track {
1821
+ position: relative;
1822
+ display: inline-flex;
1823
+ align-items: center;
1824
+ border-radius: var(--radius-full);
1825
+ background-color: var(--color-bg-1);
1826
+ border: none;
1827
+ outline: 2px solid var(--color-foreground-3);
1828
+ outline-offset: -2px;
1829
+ transition:
1830
+ outline-color var(--transition-base),
1831
+ box-shadow var(--transition-base),
1832
+ background-color var(--transition-base);
1833
+ overflow: hidden;
1834
+ }
1835
+ .switch__thumb {
1836
+ position: relative;
1837
+ display: inline-flex;
1838
+ align-items: center;
1839
+ justify-content: center;
1840
+ border-radius: 50%;
1841
+ background-color: var(--color-action-primary);
1842
+ border: 2px solid var(--color-action-primary);
1843
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3);
1844
+ transition:
1845
+ transform 0.1s ease,
1846
+ box-shadow 0.1s ease,
1847
+ border-color 0.1s ease,
1848
+ background-color 0.1s ease;
1849
+ z-index: 1;
1850
+ }
1851
+ .switch__icon {
1852
+ position: absolute;
1853
+ top: 50%;
1854
+ left: 50%;
1855
+ transform: translate(-50%, -50%);
1856
+ color: var(--color-foreground-2);
1857
+ transition: all 0.2s ease;
1858
+ opacity: 0;
1859
+ pointer-events: none;
1860
+ }
1861
+ .switch__icon--on {
1862
+ }
1863
+ .switch__icon--off {
1864
+ }
1865
+ .switch--sm {
1866
+ width: 36px;
1867
+ height: 20px;
1868
+ }
1869
+ .switch--sm .switch__track {
1870
+ width: 36px;
1871
+ height: 20px;
1872
+ }
1873
+ .switch--sm .switch__thumb {
1874
+ width: 14px;
1875
+ height: 14px;
1876
+ margin: 0 2px;
1877
+ }
1878
+ .switch--sm.switch--checked .switch__thumb {
1879
+ transform: translateX(16px);
1880
+ }
1881
+ .switch--md {
1882
+ width: 44px;
1883
+ height: 24px;
1884
+ }
1885
+ .switch--md .switch__track {
1886
+ width: 44px;
1887
+ height: 24px;
1888
+ }
1889
+ .switch--md .switch__thumb {
1890
+ width: 18px;
1891
+ height: 18px;
1892
+ margin: 0 2px;
1893
+ }
1894
+ .switch--md.switch--checked .switch__thumb {
1895
+ transform: translateX(20px);
1896
+ }
1897
+ .switch--lg {
1898
+ width: 52px;
1899
+ height: 28px;
1900
+ }
1901
+ .switch--lg .switch__track {
1902
+ width: 52px;
1903
+ height: 28px;
1904
+ }
1905
+ .switch--lg .switch__thumb {
1906
+ width: 22px;
1907
+ height: 22px;
1908
+ margin: 0 2px;
1909
+ }
1910
+ .switch--lg.switch--checked .switch__thumb {
1911
+ transform: translateX(24px);
1912
+ }
1913
+ .switch--checked .switch__track {
1914
+ background-color: var(--color-accent);
1915
+ outline-color: var(--color-accent);
1916
+ }
1917
+ .switch--checked .switch__thumb {
1918
+ background-color: var(--color-on-accent);
1919
+ border-color: var(--color-accent);
1920
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3);
1921
+ }
1922
+ .switch__input:hover + .switch__track {
1923
+ outline-color: var(--color-action-primary-hover);
1924
+ }
1925
+ .switch__input:focus + .switch__track {
1926
+ outline-color: var(--color-action-primary);
1927
+ box-shadow: 0 0 0 3px hsla(var(--accent-hue), var(--accent-saturation), var(--accent-lightness), 0.1);
1928
+ }
1929
+ .switch__input:hover + .switch__track .switch__thumb,
1930
+ .switch__input:focus + .switch__track .switch__thumb {
1931
+ border-color: var(--color-action-primary-hover);
1932
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.4);
1933
+ }
1934
+ .switch--checked .switch__input:hover + .switch__track {
1935
+ outline-color: var(--color-accent);
1936
+ }
1937
+ .switch--checked .switch__input:focus + .switch__track {
1938
+ outline-color: var(--color-accent);
1939
+ box-shadow: 0 0 0 3px hsla(var(--accent-hue), var(--accent-saturation), var(--accent-lightness), 0.1);
1940
+ }
1941
+ .switch--checked .switch__input:hover + .switch__track .switch__thumb,
1942
+ .switch--checked .switch__input:focus + .switch__track .switch__thumb {
1943
+ border-color: var(--color-accent);
1944
+ }
1945
+ .switch__input:active + .switch__track .switch__thumb {
1946
+ transform: scale(1.2);
1947
+ border-color: var(--color-action-primary-active);
1948
+ box-shadow: 0 6px 12px rgba(0, 0, 0, 0.5);
1949
+ }
1950
+ .switch--checked .switch__input:active + .switch__track .switch__thumb {
1951
+ border-color: var(--color-accent);
1952
+ }
1953
+ .switch--checked .switch__icon--on {
1954
+ opacity: 1;
1955
+ color: var(--color-accent);
1956
+ }
1957
+ .switch--checked .switch__icon--off {
1958
+ opacity: 0;
1959
+ }
1960
+ .switch:not(.switch--checked) .switch__icon--off {
1961
+ opacity: 1;
1962
+ color: var(--color-foreground-2);
1963
+ }
1964
+ .switch:not(.switch--checked) .switch__icon--on {
1965
+ opacity: 0;
1966
+ }
1967
+ .switch--disabled {
1968
+ opacity: 0.5;
1969
+ cursor: not-allowed;
1970
+ }
1971
+ .switch--disabled .switch__label {
1972
+ cursor: not-allowed;
1973
+ }
1974
+ .switch--disabled .switch__thumb {
1975
+ border-color: var(--color-foreground-3);
1976
+ background-color: var(--color-bg-3);
1977
+ opacity: 0.6;
1978
+ }
1979
+ .switch--error .switch__track {
1980
+ outline-color: var(--color-error);
1981
+ }
1982
+ .switch--error.switch--checked .switch__track {
1983
+ background-color: var(--color-error);
1984
+ outline-color: var(--color-error);
1985
+ }
1986
+ .switch__text {
1987
+ font-size: var(--font-size-sm);
1988
+ color: var(--color-foreground-1);
1989
+ line-height: 1.5;
1990
+ }
1991
+ .switch__message {
1992
+ margin-top: var(--spacing-1);
1993
+ }
1994
+ .switch__error-text {
1995
+ font-size: var(--font-size-xs);
1996
+ color: var(--color-error);
1997
+ }
1998
+ .switch__helper-text {
1999
+ font-size: var(--font-size-xs);
2000
+ color: var(--color-foreground-3);
2001
+ }
2002
+ :root[data-theme=dark] .switch__track {
2003
+ background-color: var(--color-bg-2);
2004
+ outline-color: var(--color-foreground-4);
2005
+ }
2006
+ :root[data-theme=dark] .switch:not(.switch--checked) .switch__icon--off {
2007
+ color: var(--color-foreground-4);
2008
+ }
2009
+
2010
+ /* src/style/components/drag-handle/drag-handle.css */
2011
+ .drag-handle {
2012
+ position: relative;
2013
+ background-color: var(--color-bg-1);
2014
+ border-color: rgba(0, 0, 0, 0.1);
2015
+ transition: all var(--transition-base, 0.2s ease);
2016
+ z-index: 10;
2017
+ }
2018
+ .drag-handle:hover:not(:disabled) {
2019
+ background-color: var(--color-action-primary);
2020
+ }
2021
+ .drag-handle:active:not(:disabled),
2022
+ .drag-handle--dragging {
2023
+ background-color: var(--color-action-primary-hover);
2024
+ }
2025
+ .drag-handle--dragging .drag-handle__indicator,
2026
+ .drag-handle:active:not(:disabled) .drag-handle__indicator {
2027
+ background-color: var(--color-on-action-primary);
2028
+ }
2029
+ .drag-handle--vertical {
2030
+ width: 6px;
2031
+ cursor: col-resize;
2032
+ margin: 0 -4px;
2033
+ }
2034
+ .drag-handle--vertical .drag-handle__indicator {
2035
+ position: absolute;
2036
+ top: 50%;
2037
+ left: 50%;
2038
+ transform: translate(-50%, -50%);
2039
+ width: 4px;
2040
+ height: 32px;
2041
+ background-color: var(--color-foreground-2);
2042
+ border-radius: 1px;
2043
+ transition: all var(--transition-base, 0.2s ease);
2044
+ }
2045
+ .drag-handle--vertical:hover .drag-handle__indicator {
2046
+ width: 4px;
2047
+ }
2048
+ .drag-handle--horizontal {
2049
+ height: 8px;
2050
+ cursor: row-resize;
2051
+ margin: -4px 0;
2052
+ }
2053
+ .drag-handle--horizontal .drag-handle__indicator {
2054
+ position: absolute;
2055
+ top: 50%;
2056
+ left: 50%;
2057
+ transform: translate(-50%, -50%);
2058
+ height: 2px;
2059
+ width: 24px;
2060
+ background-color: var(--color-foreground-2);
2061
+ border-radius: 1px;
2062
+ transition: background-color var(--transition-base, 0.2s ease);
2063
+ }
2064
+
2065
+ /* src/style/components/layout/layout.css */
2066
+ .layout {
2067
+ min-height: 100vh;
2068
+ }
2069
+ .layout--single {
2070
+ display: flex;
2071
+ flex-direction: column;
2072
+ }
2073
+ .layout--single .layout__container {
2074
+ flex: 1;
2075
+ display: flex;
2076
+ flex-direction: column;
2077
+ }
2078
+ .layout--single .layout__main {
2079
+ flex: 1;
2080
+ overflow-y: auto;
2081
+ overflow-x: hidden;
2082
+ display: flex;
2083
+ flex-direction: column;
2084
+ }
2085
+ .layout--single .layout__header {
2086
+ flex-shrink: 0;
2087
+ }
2088
+ .layout--single .layout__footer {
2089
+ flex-shrink: 0;
2090
+ }
2091
+ .layout--single .layout__bottom-bar {
2092
+ flex-shrink: 0;
2093
+ }
2094
+ .layout--stacked {
2095
+ display: flex;
2096
+ flex-direction: column;
2097
+ }
2098
+ .layout--stacked .layout__container {
2099
+ flex: 1;
2100
+ display: flex;
2101
+ flex-direction: column;
2102
+ }
2103
+ .layout--stacked .layout__main {
2104
+ flex: 1;
2105
+ overflow-y: auto;
2106
+ overflow-x: hidden;
2107
+ display: flex;
2108
+ flex-direction: column;
2109
+ }
2110
+ .layout--stacked .layout__header {
2111
+ flex-shrink: 0;
2112
+ }
2113
+ .layout--stacked .layout__footer {
2114
+ flex-shrink: 0;
2115
+ }
2116
+ .layout--stacked .layout__bottom-bar {
2117
+ flex-shrink: 0;
2118
+ }
2119
+ .layout--sidebar-main-sidebar {
2120
+ display: flex;
2121
+ flex-direction: row;
2122
+ min-height: 100vh;
2123
+ }
2124
+ .layout--sidebar-main-sidebar .layout__container {
2125
+ flex: 1;
2126
+ display: flex;
2127
+ flex-direction: column;
2128
+ min-width: 0;
2129
+ max-height: 100vh;
2130
+ overflow-y: auto;
2131
+ overflow-x: hidden;
2132
+ }
2133
+ .layout--sidebar-main-sidebar .layout__sidebar {
2134
+ flex-shrink: 0;
2135
+ max-height: 100vh;
2136
+ background-color: var(--color-bg-1);
2137
+ border-right: 1px solid var(--color-foreground-2);
2138
+ border-right-color: rgba(0, 0, 0, 0.1);
2139
+ overflow-y: auto;
2140
+ overflow-x: hidden;
2141
+ }
2142
+ .layout--sidebar-main-sidebar .layout__sidebar--right {
2143
+ border-right: none;
2144
+ border-left: 1px solid var(--color-foreground-2);
2145
+ border-left-color: rgba(0, 0, 0, 0.1);
2146
+ background-color: var(--color-bg-2);
2147
+ }
2148
+ .layout--sidebar-main-sidebar .drag-handle {
2149
+ flex-shrink: 0;
2150
+ }
2151
+ .layout--sidebar-main-sidebar .layout__container {
2152
+ flex: 1;
2153
+ display: flex;
2154
+ flex-direction: column;
2155
+ min-width: 0;
2156
+ }
2157
+ .layout--sidebar-main-sidebar .layout__main {
2158
+ flex: 1;
2159
+ overflow-y: auto;
2160
+ overflow-x: hidden;
2161
+ display: flex;
2162
+ flex-direction: column;
2163
+ }
2164
+ .layout--sidebar-main-sidebar .layout__header {
2165
+ flex-shrink: 0;
2166
+ }
2167
+ .layout--sidebar-main-sidebar .layout__footer {
2168
+ flex-shrink: 0;
2169
+ }
2170
+ .layout--sidebar-main-sidebar .layout__bottom-bar {
2171
+ flex-shrink: 0;
2172
+ }
2173
+ .layout__header,
2174
+ .layout__page-header {
2175
+ background-color: var(--color-bg-1);
2176
+ border-bottom: 1px solid var(--color-foreground-2);
2177
+ border-bottom-color: rgba(0, 0, 0, 0.1);
2178
+ padding: var(--spacing-6) var(--spacing-4);
2179
+ transition: all var(--transition-base, 0.2s ease);
2180
+ }
2181
+ .layout__footer,
2182
+ .layout__page-footer {
2183
+ background-color: var(--color-bg-1);
2184
+ border-top: 1px solid var(--color-foreground-2);
2185
+ border-top-color: rgba(0, 0, 0, 0.1);
2186
+ transition: all var(--transition-base, 0.2s ease);
2187
+ margin-top: auto;
2188
+ }
2189
+ @media (max-width: 1024px) {
2190
+ .layout--sidebar-main-sidebar .layout__sidebar {
2191
+ width: 240px;
2192
+ }
2193
+ }
2194
+ @media (max-width: 768px) {
2195
+ .layout--sidebar-main-sidebar {
2196
+ flex-direction: column;
2197
+ }
2198
+ .layout--sidebar-main-sidebar .layout__container {
2199
+ flex-direction: column;
2200
+ }
2201
+ .layout--sidebar-main-sidebar .layout__sidebar {
2202
+ width: 100%;
2203
+ border-right: none;
2204
+ border-bottom: 1px solid var(--color-foreground-2);
2205
+ border-bottom-color: rgba(0, 0, 0, 0.1);
2206
+ }
2207
+ .layout--sidebar-main-sidebar .layout__sidebar--right {
2208
+ border-left: none;
2209
+ border-top: 1px solid var(--color-foreground-2);
2210
+ border-top-color: rgba(0, 0, 0, 0.1);
2211
+ border-bottom: none;
2212
+ }
2213
+ }
2214
+ .layout__bottom-bar {
2215
+ flex-shrink: 0;
2216
+ background-color: var(--color-bg-1);
2217
+ border-top: 1px solid var(--color-foreground-2);
2218
+ border-top-color: rgba(0, 0, 0, 0.1);
2219
+ min-height: 60px;
2220
+ display: flex;
2221
+ align-items: center;
2222
+ padding: 0 var(--spacing-4);
2223
+ }
2224
+
2225
+ /* src/style/components/tooltip/tooltip.css */
2226
+ .tooltip {
2227
+ position: fixed;
2228
+ background: var(--color-bg-1);
2229
+ border: 1px solid var(--color-bg-3);
2230
+ border-color: rgba(0, 0, 0, 0.15);
2231
+ border-radius: var(--radius-base);
2232
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
2233
+ max-width: 200px;
2234
+ padding: var(--spacing-2, 0.5rem) var(--spacing-3, 0.75rem);
2235
+ font-size: var(--font-size-xs, 0.75rem);
2236
+ font-weight: 500;
2237
+ color: var(--color-foreground-1);
2238
+ white-space: nowrap;
2239
+ animation: tooltip-fade-in var(--transition-fast, 0.15s ease);
2240
+ opacity: 0;
2241
+ visibility: hidden;
2242
+ pointer-events: none;
2243
+ }
2244
+ .tooltip--top {
2245
+ margin-bottom: var(--spacing-1);
2246
+ }
2247
+ .tooltip--bottom {
2248
+ margin-top: var(--spacing-1);
2249
+ }
2250
+ .tooltip--left {
2251
+ margin-right: var(--spacing-1);
2252
+ }
2253
+ .tooltip--right {
2254
+ margin-left: var(--spacing-1);
2255
+ }
2256
+ @keyframes tooltip-fade-in {
2257
+ from {
2258
+ opacity: 0;
2259
+ transform: translateY(-2px);
2260
+ }
2261
+ to {
2262
+ opacity: 1;
2263
+ transform: translateY(0);
2264
+ }
2265
+ }
2266
+ .tooltip__content {
2267
+ }
2268
+
2269
+ /* src/style/components/popover/popover.css */
2270
+ .popover {
2271
+ position: fixed;
2272
+ background: var(--color-bg-1);
2273
+ border-radius: var(--radius-base);
2274
+ outline: 2px solid var(--color-bg-3);
2275
+ outline-offset: -2px;
2276
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
2277
+ z-index: 9999;
2278
+ min-width: 200px;
2279
+ margin-top: var(--spacing-1);
2280
+ animation: popover-slide-in var(--transition-base, 0.2s ease);
2281
+ opacity: 0;
2282
+ visibility: hidden;
2283
+ pointer-events: none;
2284
+ }
2285
+ .popover--right {
2286
+ margin-top: 0;
2287
+ margin-left: var(--spacing-2);
2288
+ }
2289
+ .popover:hover {
2290
+ outline: 2px solid var(--color-primary-hover);
2291
+ }
2292
+ @keyframes popover-slide-in {
2293
+ from {
2294
+ opacity: 0;
2295
+ transform: translateY(-8px);
2296
+ }
2297
+ to {
2298
+ opacity: 1;
2299
+ transform: translateY(0);
2300
+ }
2301
+ }
2302
+ .popover__content {
2303
+ }
2304
+
2305
+ /* src/style/components/theme-control/theme-control.css */
2306
+ .theme-control {
2307
+ display: flex;
2308
+ flex-direction: column;
2309
+ gap: var(--spacing-2, 0.5rem);
2310
+ }
2311
+ .theme-control__option {
2312
+ display: flex;
2313
+ align-items: center;
2314
+ gap: var(--spacing-3, 0.75rem);
2315
+ padding: var(--spacing-2, 0.5rem);
2316
+ border-radius: var(--border-radius-sm, 4px);
2317
+ cursor: pointer;
2318
+ transition: all var(--transition-base, 0.2s ease);
2319
+ color: var(--color-foreground-1);
2320
+ }
2321
+ .theme-control__option:hover:not(:disabled) {
2322
+ background: var(--color-bg-2);
2323
+ }
2324
+ .theme-control__option:focus-visible:not(:disabled) {
2325
+ outline: 2px solid var(--color-action-primary);
2326
+ outline-offset: 2px;
2327
+ }
2328
+ .theme-control__option--active {
2329
+ background: var(--color-action-primary);
2330
+ color: var(--color-on-action-primary);
2331
+ }
2332
+ .theme-control__icon {
2333
+ width: 20px;
2334
+ height: 20px;
2335
+ }
2336
+
2337
+ /* src/style/components/card/card.css */
2338
+ .card {
2339
+ background-color: var(--color-bg-1);
2340
+ border-radius: 8px;
2341
+ padding: var(--spacing-4);
2342
+ border: none;
2343
+ transition:
2344
+ box-shadow var(--transition-base),
2345
+ transform var(--transition-base),
2346
+ background-color var(--transition-base);
2347
+ overflow: visible;
2348
+ }
2349
+ .card--default {
2350
+ border: 1px solid var(--color-foreground-2);
2351
+ border-color: rgba(0, 0, 0, 0.1);
2352
+ }
2353
+ .card--elevated {
2354
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
2355
+ }
2356
+ .card--outlined {
2357
+ border: 2px solid var(--color-foreground-2);
2358
+ border-color: rgba(0, 0, 0, 0.15);
2359
+ }
2360
+ .card--interactive {
2361
+ cursor: pointer;
2362
+ user-select: none;
2363
+ background-color: var(--color-bg-2);
2364
+ }
2365
+ .card--interactive:hover {
2366
+ background-color: hsla(0, 0%, var(--lightness-bg-2), 0.8);
2367
+ transform: translateY(-2px);
2368
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
2369
+ }
2370
+ .card--interactive:active {
2371
+ background-color: hsla(0, 0%, var(--lightness-bg-2), 0.9);
2372
+ transform: translateY(0);
2373
+ }
2374
+ .card--interactive:focus-visible {
2375
+ outline: 2px solid var(--color-action-primary);
2376
+ outline-offset: 2px;
2377
+ }
2378
+ @media (hover: none) and (pointer: coarse) {
2379
+ .card--interactive:active {
2380
+ background-color: hsla(0, 0%, var(--lightness-bg-2), 0.8);
2381
+ transform: translateY(-1px);
2382
+ }
2383
+ }
2384
+
2385
+ /* src/style/components/slider/slider.css */
2386
+ .slider {
2387
+ display: flex;
2388
+ flex-direction: column;
2389
+ gap: var(--spacing-2);
2390
+ width: 100%;
2391
+ }
2392
+ .slider__header {
2393
+ display: flex;
2394
+ justify-content: space-between;
2395
+ align-items: center;
2396
+ }
2397
+ .slider__label {
2398
+ font-weight: 500;
2399
+ color: var(--color-foreground-1);
2400
+ font-size: var(--font-size-sm);
2401
+ }
2402
+ .slider__value {
2403
+ font-family: var(--font-family-mono);
2404
+ font-size: var(--font-size-xs);
2405
+ color: var(--color-foreground-2);
2406
+ background-color: var(--color-bg-2);
2407
+ padding: var(--spacing-1) var(--spacing-2);
2408
+ border-radius: 4px;
2409
+ min-width: 3rem;
2410
+ text-align: center;
2411
+ transition: all var(--transition-base, 0.2s ease);
2412
+ }
2413
+ .slider__container {
2414
+ position: relative;
2415
+ width: 100%;
2416
+ cursor: grab;
2417
+ }
2418
+ .slider--dragging .slider__container {
2419
+ cursor: grabbing;
2420
+ }
2421
+ .slider__input {
2422
+ width: 100%;
2423
+ height: 8px;
2424
+ border-radius: 4px;
2425
+ outline: none;
2426
+ cursor: pointer;
2427
+ appearance: none;
2428
+ background: var(--color-action-primary);
2429
+ }
2430
+ .slider__input[style*=hsl],
2431
+ .slider__input[style*=linear-gradient] {
2432
+ }
2433
+ .slider__input::-webkit-slider-thumb {
2434
+ appearance: none;
2435
+ width: 32px;
2436
+ height: 32px;
2437
+ border: none;
2438
+ background: transparent;
2439
+ cursor: grab;
2440
+ pointer-events: auto;
2441
+ margin-top: -16px;
2442
+ }
2443
+ .slider__input::-webkit-slider-thumb:hover,
2444
+ .slider__input::-webkit-slider-thumb:active,
2445
+ .slider--dragging .slider__input::-webkit-slider-thumb {
2446
+ border: none;
2447
+ background: transparent;
2448
+ cursor: grabbing;
2449
+ }
2450
+ .slider__input::-moz-range-thumb {
2451
+ width: 32px;
2452
+ height: 32px;
2453
+ border: none;
2454
+ background: transparent;
2455
+ cursor: grab;
2456
+ pointer-events: auto;
2457
+ }
2458
+ .slider__input::-moz-range-thumb:hover,
2459
+ .slider__input::-moz-range-thumb:active {
2460
+ border: none;
2461
+ background: transparent;
2462
+ cursor: grabbing;
2463
+ }
2464
+ .slider__input::-ms-thumb {
2465
+ width: 32px;
2466
+ height: 32px;
2467
+ border: none;
2468
+ background: transparent;
2469
+ cursor: grab;
2470
+ pointer-events: auto;
2471
+ }
2472
+ .slider--disabled .slider__input {
2473
+ cursor: not-allowed;
2474
+ filter: brightness(0.6);
2475
+ }
2476
+ .slider__marks {
2477
+ position: absolute;
2478
+ top: -6px;
2479
+ left: 0;
2480
+ right: 0;
2481
+ height: 8px;
2482
+ pointer-events: none;
2483
+ }
2484
+ .slider__thumb {
2485
+ position: absolute;
2486
+ top: -4px;
2487
+ pointer-events: none;
2488
+ z-index: 1;
2489
+ }
2490
+ .slider__thumb-icon {
2491
+ width: 32px;
2492
+ height: 32px;
2493
+ border-radius: 50%;
2494
+ background-color: var(--color-action-primary);
2495
+ border: 2px solid var(--color-action-primary);
2496
+ display: flex;
2497
+ align-items: center;
2498
+ justify-content: center;
2499
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3);
2500
+ transition:
2501
+ transform 0.1s ease,
2502
+ box-shadow 0.1s ease,
2503
+ border-color 0.1s ease;
2504
+ }
2505
+ .slider__input:hover + .slider__thumb .slider__thumb-icon,
2506
+ .slider__input:focus + .slider__thumb .slider__thumb-icon {
2507
+ border-color: var(--color-action-primary-hover);
2508
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.4);
2509
+ }
2510
+ .slider__input:active + .slider__thumb .slider__thumb-icon,
2511
+ .slider--dragging .slider__thumb .slider__thumb-icon {
2512
+ transform: scale(1.2);
2513
+ border-color: var(--color-action-primary-active);
2514
+ box-shadow: 0 6px 12px rgba(0, 0, 0, 0.5);
2515
+ }
2516
+ .slider--disabled .slider__thumb .slider__thumb-icon {
2517
+ border-color: var(--color-foreground-3);
2518
+ background-color: var(--color-bg-3);
2519
+ opacity: 0.6;
2520
+ }
2521
+
2522
+ /* src/style/components/color-control/color-control.css */
2523
+ .color-control {
2524
+ width: 100%;
2525
+ }
2526
+ .color-control__header {
2527
+ margin-bottom: var(--spacing-6);
2528
+ }
2529
+ .color-control__title {
2530
+ font-size: var(--font-size-lg);
2531
+ font-weight: 600;
2532
+ color: var(--color-foreground-1);
2533
+ margin: 0 0 var(--spacing-2) 0;
2534
+ }
2535
+ .color-control__description {
2536
+ color: var(--color-foreground-2);
2537
+ margin: 0;
2538
+ font-size: var(--font-size-sm);
2539
+ line-height: var(--line-height-normal);
2540
+ }
2541
+ .color-control__sliders {
2542
+ display: flex;
2543
+ flex-direction: column;
2544
+ gap: var(--spacing-4);
2545
+ margin-bottom: var(--spacing-6);
2546
+ }
2547
+ .color-control__slider {
2548
+ display: flex;
2549
+ align-items: center;
2550
+ gap: var(--spacing-3);
2551
+ }
2552
+ .color-control__slider .slider {
2553
+ flex: 1;
2554
+ }
2555
+ .color-control__slider .slider__header {
2556
+ margin-bottom: var(--spacing-1);
2557
+ }
2558
+ .color-control__preview {
2559
+ width: 40px;
2560
+ height: 40px;
2561
+ border-radius: 8px;
2562
+ flex-shrink: 0;
2563
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
2564
+ }
2565
+ .color-control__actions {
2566
+ margin-bottom: var(--spacing-6);
2567
+ }
2568
+ .color-control__reset-btn {
2569
+ background-color: var(--color-bg-2);
2570
+ color: var(--color-foreground-1);
2571
+ border: 1px solid var(--color-foreground-2);
2572
+ border-color: rgba(0, 0, 0, 0.1);
2573
+ padding: var(--spacing-2) var(--spacing-4);
2574
+ border-radius: 6px;
2575
+ font-size: var(--font-size-sm);
2576
+ cursor: pointer;
2577
+ transition: all var(--transition-base);
2578
+ }
2579
+ .color-control__reset-btn:hover:not(:disabled) {
2580
+ background-color: var(--color-action-primary);
2581
+ color: var(--color-on-action-primary);
2582
+ border-color: var(--color-action-primary);
2583
+ }
2584
+ .color-control__reset-btn:active:not(:disabled) {
2585
+ background-color: var(--color-action-primary-active);
2586
+ }
2587
+ .color-control__reset-btn:focus-visible:not(:disabled) {
2588
+ outline: 2px solid var(--color-action-primary);
2589
+ outline-offset: 2px;
2590
+ }
2591
+ .color-control__reset-btn:disabled {
2592
+ cursor: not-allowed;
2593
+ opacity: 0.5;
2594
+ }
2595
+ .color-control__preview-section {
2596
+ border-top: 1px solid var(--color-foreground-2);
2597
+ border-top-color: rgba(0, 0, 0, 0.1);
2598
+ padding-top: var(--spacing-4);
2599
+ }
2600
+ .color-control__preview-title {
2601
+ font-size: var(--font-size-md);
2602
+ font-weight: 600;
2603
+ color: var(--color-foreground-1);
2604
+ margin: 0 0 var(--spacing-3) 0;
2605
+ }
2606
+ .color-control__color-grid {
2607
+ display: grid;
2608
+ grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
2609
+ gap: var(--spacing-3);
2610
+ }
2611
+ .color-control__color-sample {
2612
+ padding: var(--spacing-3);
2613
+ border-radius: 8px;
2614
+ color: white;
2615
+ font-size: var(--font-size-sm);
2616
+ font-weight: 500;
2617
+ text-align: center;
2618
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
2619
+ border: 2px solid transparent;
2620
+ transition: border-color var(--transition-base);
2621
+ }
2622
+ .color-control__color-sample:hover {
2623
+ border-color: rgba(255, 255, 255, 0.3);
2624
+ }
2625
+
2626
+ /* src/style/components/grid/grid.css */
2627
+ .grid {
2628
+ display: grid;
2629
+ gap: var(--grid-gap, 1rem);
2630
+ }
2631
+ .grid--auto-fit {
2632
+ grid-template-columns: repeat(auto-fit, minmax(var(--grid-min-width, 250px), 1fr));
2633
+ }
2634
+ .grid--auto-fill {
2635
+ grid-template-columns: repeat(auto-fill, minmax(var(--grid-min-width, 250px), 1fr));
2636
+ }
2637
+ .grid--cols-1 {
2638
+ grid-template-columns: repeat(1, 1fr);
2639
+ }
2640
+ .grid--cols-2 {
2641
+ grid-template-columns: repeat(2, 1fr);
2642
+ }
2643
+ .grid--cols-3 {
2644
+ grid-template-columns: repeat(3, 1fr);
2645
+ }
2646
+ .grid--cols-4 {
2647
+ grid-template-columns: repeat(4, 1fr);
2648
+ }
2649
+ .grid--cols-5 {
2650
+ grid-template-columns: repeat(5, 1fr);
2651
+ }
2652
+ .grid--cols-6 {
2653
+ grid-template-columns: repeat(6, 1fr);
2654
+ }
2655
+ .grid--cols-7 {
2656
+ grid-template-columns: repeat(7, 1fr);
2657
+ }
2658
+ .grid--cols-8 {
2659
+ grid-template-columns: repeat(8, 1fr);
2660
+ }
2661
+ .grid--cols-9 {
2662
+ grid-template-columns: repeat(9, 1fr);
2663
+ }
2664
+ .grid--cols-10 {
2665
+ grid-template-columns: repeat(10, 1fr);
2666
+ }
2667
+ .grid--cols-11 {
2668
+ grid-template-columns: repeat(11, 1fr);
2669
+ }
2670
+ .grid--cols-12 {
2671
+ grid-template-columns: repeat(12, 1fr);
2672
+ }
2673
+
2674
+ /* src/style/components/footer/footer.css */
2675
+ .footer {
2676
+ background-color: var(--color-bg-2);
2677
+ border-top: 1px solid var(--color-bg-3);
2678
+ margin-top: auto;
2679
+ padding: var(--spacing-6) var(--spacing-4);
2680
+ font-size: var(--font-size-sm);
2681
+ color: var(--color-foreground-3);
2682
+ position: relative;
2683
+ z-index: 1;
2684
+ }
2685
+ .footer__container {
2686
+ max-width: 1200px;
2687
+ margin: 0 auto;
2688
+ padding: 0 var(--spacing-4);
2689
+ }
2690
+ .footer__bottom {
2691
+ display: flex;
2692
+ flex-direction: column;
2693
+ gap: var(--spacing-2);
2694
+ text-align: center;
2695
+ }
2696
+ .footer__copyright {
2697
+ margin: 0;
2698
+ font-size: var(--font-size-sm);
2699
+ color: var(--color-foreground-3);
2700
+ }
2701
+ @media (max-width: 768px) {
2702
+ .footer {
2703
+ padding: var(--spacing-4) 0;
2704
+ }
2705
+ .footer__content {
2706
+ grid-template-columns: 1fr;
2707
+ gap: var(--spacing-4);
2708
+ }
2709
+ .footer__bottom {
2710
+ flex-direction: column;
2711
+ }
2712
+ }
2713
+
2714
+ /* src/style/components/input/input.css */
2715
+ .input-container {
2716
+ display: flex;
2717
+ flex-direction: column;
2718
+ gap: var(--spacing-2);
2719
+ }
2720
+ .input-container--full-width {
2721
+ width: 100%;
2722
+ }
2723
+ .input__label {
2724
+ font-size: var(--font-size-sm);
2725
+ font-weight: 500;
2726
+ color: var(--color-foreground-1);
2727
+ cursor: pointer;
2728
+ }
2729
+ .input__wrapper {
2730
+ position: relative;
2731
+ display: flex;
2732
+ align-items: center;
2733
+ }
2734
+ .input {
2735
+ width: 100%;
2736
+ font-family: inherit;
2737
+ font-size: var(--font-size-base);
2738
+ line-height: 1.5;
2739
+ color: var(--color-foreground-1);
2740
+ background-color: var(--color-bg-1);
2741
+ border: none;
2742
+ outline: 2px solid var(--color-foreground-3);
2743
+ outline-offset: -2px;
2744
+ border-radius: var(--radius-base);
2745
+ padding: var(--spacing-2) var(--spacing-3);
2746
+ transition: outline-color var(--transition-base), box-shadow var(--transition-base);
2747
+ }
2748
+ .input--sm {
2749
+ font-size: var(--font-size-sm);
2750
+ padding: var(--spacing-1) var(--spacing-2);
2751
+ }
2752
+ .input--lg {
2753
+ font-size: var(--font-size-lg);
2754
+ padding: var(--spacing-3) var(--spacing-4);
2755
+ }
2756
+ .input--error {
2757
+ outline-color: hsla(var(--error-hue), var(--error-saturation), 50%, 1);
2758
+ }
2759
+ .input--error:focus {
2760
+ outline-color: hsla(var(--error-hue), var(--error-saturation), 50%, 1);
2761
+ box-shadow: 0 0 0 3px hsla(var(--error-hue), var(--error-saturation), var(--error-lightness), 0.1);
2762
+ }
2763
+ .input--disabled {
2764
+ cursor: not-allowed;
2765
+ opacity: 0.6;
2766
+ background-color: var(--color-bg-2);
2767
+ }
2768
+ .input:focus {
2769
+ outline-color: var(--color-action-primary);
2770
+ box-shadow: 0 0 0 3px hsla(var(--accent-hue), var(--accent-saturation), var(--accent-lightness), 0.1);
2771
+ }
2772
+ .input:hover:not(:disabled):not(.input--error) {
2773
+ outline-color: var(--color-action-primary-hover);
2774
+ }
2775
+ .input::placeholder {
2776
+ color: var(--color-foreground-2);
2777
+ opacity: 0.7;
2778
+ }
2779
+ .input--has-icon-left {
2780
+ padding-left: var(--spacing-10);
2781
+ }
2782
+ .input--has-icon-right {
2783
+ padding-right: var(--spacing-10);
2784
+ }
2785
+ .input--sm.input--has-icon-left {
2786
+ padding-left: var(--spacing-8);
2787
+ }
2788
+ .input--sm.input--has-icon-right {
2789
+ padding-right: var(--spacing-8);
2790
+ }
2791
+ .input--lg.input--has-icon-left {
2792
+ padding-left: var(--spacing-12);
2793
+ }
2794
+ .input--lg.input--has-icon-right {
2795
+ padding-right: var(--spacing-12);
2796
+ }
2797
+ .input__icon {
2798
+ position: absolute;
2799
+ display: flex;
2800
+ align-items: center;
2801
+ justify-content: center;
2802
+ color: var(--color-foreground-2);
2803
+ pointer-events: none;
2804
+ }
2805
+ .input__icon--left {
2806
+ left: var(--spacing-3);
2807
+ }
2808
+ .input__icon--right {
2809
+ right: var(--spacing-3);
2810
+ pointer-events: auto;
2811
+ background: none;
2812
+ border: none;
2813
+ cursor: pointer;
2814
+ padding: var(--spacing-1);
2815
+ border-radius: var(--radius-sm);
2816
+ transition: background-color var(--transition-fast);
2817
+ }
2818
+ .input__icon--right:hover:not(:disabled) {
2819
+ background-color: var(--color-bg-3);
2820
+ color: var(--color-action-primary-hover);
2821
+ }
2822
+ .input__icon--right:active:not(:disabled) {
2823
+ background-color: var(--color-bg-2);
2824
+ color: var(--color-action-primary-active);
2825
+ }
2826
+ .input__icon--right:disabled {
2827
+ cursor: not-allowed;
2828
+ opacity: 0.6;
2829
+ }
2830
+ .input__icon--right:focus-visible {
2831
+ outline: 2px solid var(--color-action-primary);
2832
+ outline-offset: 2px;
2833
+ }
2834
+ .input__message {
2835
+ font-size: var(--font-size-sm);
2836
+ margin: 0;
2837
+ color: var(--color-foreground-2);
2838
+ }
2839
+ .input__message--error {
2840
+ color: hsla(var(--error-hue), var(--error-saturation), 60%, 1);
2841
+ }
2842
+ :root[data-theme=dark] .input {
2843
+ background-color: var(--color-bg-2);
2844
+ }
2845
+ .input:-webkit-autofill,
2846
+ .input:-webkit-autofill:hover,
2847
+ .input:-webkit-autofill:focus {
2848
+ -webkit-text-fill-color: var(--color-foreground-1);
2849
+ -webkit-box-shadow: 0 0 0 1000px var(--color-bg-1) inset;
2850
+ transition: background-color 5000s ease-in-out 0s;
2851
+ }
2852
+ :root[data-theme=dark] .input:-webkit-autofill,
2853
+ :root[data-theme=dark] .input:-webkit-autofill:hover,
2854
+ :root[data-theme=dark] .input:-webkit-autofill:focus {
2855
+ -webkit-box-shadow: 0 0 0 1000px var(--color-bg-2) inset;
2856
+ }
2857
+ .input[type=search]::-webkit-search-cancel-button {
2858
+ -webkit-appearance: none;
2859
+ appearance: none;
2860
+ }
2861
+ .input__datetime-picker {
2862
+ padding: var(--spacing-3);
2863
+ min-width: 300px;
2864
+ }
2865
+ .input__datetime-combined {
2866
+ display: flex;
2867
+ gap: var(--spacing-3);
2868
+ }
2869
+ .input__trigger-wrapper {
2870
+ position: relative;
2871
+ display: flex;
2872
+ align-items: center;
2873
+ width: 100%;
2874
+ }
2875
+ .date-picker {
2876
+ display: flex;
2877
+ flex-direction: column;
2878
+ gap: var(--spacing-2);
2879
+ }
2880
+ .date-picker__header {
2881
+ display: flex;
2882
+ align-items: center;
2883
+ justify-content: space-between;
2884
+ gap: var(--spacing-2);
2885
+ padding-bottom: var(--spacing-2);
2886
+ border-bottom: 1px solid var(--color-foreground-2);
2887
+ }
2888
+ .date-picker__nav {
2889
+ background: none;
2890
+ border: none;
2891
+ color: var(--color-foreground-1);
2892
+ font-size: var(--font-size-xl);
2893
+ cursor: pointer;
2894
+ padding: var(--spacing-1) var(--spacing-2);
2895
+ border-radius: var(--radius-sm);
2896
+ transition: background-color var(--transition-fast);
2897
+ }
2898
+ .date-picker__nav:hover:not(:disabled) {
2899
+ background-color: var(--color-bg-3);
2900
+ }
2901
+ .date-picker__nav:disabled {
2902
+ opacity: 0.5;
2903
+ cursor: not-allowed;
2904
+ }
2905
+ .date-picker__title {
2906
+ display: flex;
2907
+ gap: var(--spacing-2);
2908
+ align-items: center;
2909
+ }
2910
+ .date-picker__select {
2911
+ background-color: var(--color-bg-1);
2912
+ color: var(--color-foreground-1);
2913
+ border: 1px solid var(--color-foreground-2);
2914
+ border-radius: var(--radius-sm);
2915
+ padding: var(--spacing-1) var(--spacing-2);
2916
+ font-size: var(--font-size-sm);
2917
+ cursor: pointer;
2918
+ }
2919
+ .date-picker__weekdays {
2920
+ display: grid;
2921
+ grid-template-columns: repeat(7, 1fr);
2922
+ gap: var(--spacing-1);
2923
+ margin-top: var(--spacing-2);
2924
+ }
2925
+ .date-picker__weekday {
2926
+ text-align: center;
2927
+ font-size: var(--font-size-xs);
2928
+ font-weight: 600;
2929
+ color: var(--color-foreground-2);
2930
+ padding: var(--spacing-1);
2931
+ }
2932
+ .date-picker__days {
2933
+ display: grid;
2934
+ grid-template-columns: repeat(7, 1fr);
2935
+ gap: var(--spacing-1);
2936
+ }
2937
+ .date-picker__day {
2938
+ aspect-ratio: 1;
2939
+ background: none;
2940
+ border: none;
2941
+ color: var(--color-foreground-1);
2942
+ font-size: var(--font-size-sm);
2943
+ cursor: pointer;
2944
+ border-radius: var(--radius-sm);
2945
+ transition: background-color var(--transition-fast);
2946
+ padding: var(--spacing-1);
2947
+ }
2948
+ .date-picker__day:hover:not(:disabled):not(.date-picker__day--empty) {
2949
+ background-color: var(--color-bg-3);
2950
+ }
2951
+ .date-picker__day--selected {
2952
+ background-color: var(--color-action-primary);
2953
+ color: white;
2954
+ font-weight: 600;
2955
+ }
2956
+ .date-picker__day--empty {
2957
+ cursor: default;
2958
+ visibility: hidden;
2959
+ }
2960
+ .date-picker__day:disabled {
2961
+ opacity: 0.5;
2962
+ cursor: not-allowed;
2963
+ }
2964
+ .time-picker {
2965
+ display: flex;
2966
+ gap: var(--spacing-2);
2967
+ min-width: 240px;
2968
+ }
2969
+ .time-picker__column {
2970
+ flex: 1;
2971
+ display: flex;
2972
+ flex-direction: column;
2973
+ gap: var(--spacing-1);
2974
+ }
2975
+ .time-picker__label {
2976
+ text-align: center;
2977
+ font-size: var(--font-size-xs);
2978
+ font-weight: 600;
2979
+ color: var(--color-foreground-2);
2980
+ padding: var(--spacing-1);
2981
+ }
2982
+ .time-picker__scroll {
2983
+ max-height: 200px;
2984
+ overflow-y: auto;
2985
+ border-radius: var(--radius-sm);
2986
+ scrollbar-width: thin;
2987
+ background: var(--color-bg-2);
2988
+ }
2989
+ .time-picker__scroll::-webkit-scrollbar-thumb {
2990
+ border-radius: var(--radius-sm);
2991
+ }
2992
+ .time-picker__item {
2993
+ width: 100%;
2994
+ background: none;
2995
+ border: none;
2996
+ color: var(--color-foreground-1);
2997
+ font-size: var(--font-size-sm);
2998
+ padding: var(--spacing-2);
2999
+ cursor: pointer;
3000
+ transition: background-color var(--transition-fast);
3001
+ text-align: center;
3002
+ font-variant-numeric: tabular-nums;
3003
+ }
3004
+ .time-picker__item:hover:not(:disabled) {
3005
+ background-color: var(--color-bg-3);
3006
+ }
3007
+ .time-picker__item--selected {
3008
+ background-color: var(--color-action-primary);
3009
+ color: white;
3010
+ font-weight: 600;
3011
+ }
3012
+ .time-picker__item:disabled {
3013
+ opacity: 0.5;
3014
+ cursor: not-allowed;
3015
+ }
3016
+
3017
+ /* src/style/components/list/list.css */
3018
+ .list {
3019
+ display: flex;
3020
+ flex-direction: column;
3021
+ gap: var(--spacing-1);
3022
+ padding: 0;
3023
+ margin: 0;
3024
+ }
3025
+ .list-item {
3026
+ display: flex;
3027
+ align-items: center;
3028
+ gap: var(--spacing-3);
3029
+ padding: var(--spacing-1) var(--spacing-2);
3030
+ border-radius: var(--radius-sm);
3031
+ transition: background-color var(--motion-duration-fast) var(--motion-easing-linear), color var(--motion-duration-fast) var(--motion-easing-linear);
3032
+ color: var(--color-foreground-1);
3033
+ background-color: transparent;
3034
+ }
3035
+ .list-item:not(:hover):not(:active) {
3036
+ transition: background-color var(--motion-duration-fast) var(--motion-easing-accelerate), color var(--motion-duration-fast) var(--motion-easing-accelerate);
3037
+ }
3038
+ .list-item--interactive {
3039
+ cursor: pointer;
3040
+ user-select: none;
3041
+ }
3042
+ .list-item--interactive:hover:not(.list-item--disabled) {
3043
+ background-color: var(--color-accent-hover);
3044
+ }
3045
+ .list-item--interactive:active:not(.list-item--disabled) {
3046
+ background-color: var(--color-accent-active);
3047
+ }
3048
+ .list-item--interactive:focus-visible {
3049
+ outline: 2px solid var(--color-action-primary);
3050
+ outline-offset: 2px;
3051
+ }
3052
+ .list-item--selected {
3053
+ background-color: hsla(var(--accent-hue), var(--accent-saturation), var(--accent-lightness), 0.12);
3054
+ color: var(--color-on-primary);
3055
+ font-weight: 500;
3056
+ }
3057
+ .list-item--selected:hover:not(.list-item--disabled) {
3058
+ background-color: var(--color-accent-active);
3059
+ }
3060
+ .list-item--disabled {
3061
+ cursor: not-allowed;
3062
+ opacity: 0.5;
3063
+ }
3064
+ .list-item__icon {
3065
+ display: flex;
3066
+ align-items: center;
3067
+ justify-content: center;
3068
+ flex-shrink: 0;
3069
+ color: var(--color-foreground-2);
3070
+ }
3071
+ .list-item--selected .list-item__icon {
3072
+ color: var(--color-on-primary);
3073
+ }
3074
+ .list-item__content {
3075
+ flex: 1;
3076
+ font-size: var(--font-size-base);
3077
+ display: flex;
3078
+ flex-direction: column;
3079
+ gap: var(--spacing-1);
3080
+ }
3081
+ .list-item__category {
3082
+ font-size: var(--font-size-xs);
3083
+ color: var(--color-foreground-3);
3084
+ text-transform: uppercase;
3085
+ letter-spacing: 0.5px;
3086
+ font-weight: 600;
3087
+ }
3088
+ .list-category {
3089
+ display: flex;
3090
+ flex-direction: column;
3091
+ gap: var(--spacing-2);
3092
+ }
3093
+ .list-category__title {
3094
+ font-size: var(--font-size-sm);
3095
+ font-weight: 600;
3096
+ color: var(--color-foreground-2);
3097
+ padding: var(--spacing-2) var(--spacing-2) 0;
3098
+ text-transform: uppercase;
3099
+ letter-spacing: 0.5px;
3100
+ }
3101
+ .list-category__items {
3102
+ display: flex;
3103
+ flex-direction: column;
3104
+ gap: var(--spacing-1);
3105
+ }
3106
+ .list-item__indicator {
3107
+ display: flex;
3108
+ align-items: center;
3109
+ justify-content: center;
3110
+ flex-shrink: 0;
3111
+ color: var(--color-action-primary);
3112
+ }
3113
+ :root[data-theme=dark] .list-item--interactive:hover:not(.list-item--disabled) {
3114
+ background-color: var(--color-accent-hover);
3115
+ }
3116
+ :root[data-theme=dark] .list-item--selected {
3117
+ background-color: var(--color-accent-active);
3118
+ }
3119
+
3120
+ /* src/style/_shared/field.css */
3121
+ .field {
3122
+ width: 100%;
3123
+ font-family: inherit;
3124
+ font-size: var(--font-size-base);
3125
+ line-height: 1.5;
3126
+ color: var(--color-foreground-1);
3127
+ background-color: var(--color-bg-1);
3128
+ border: none;
3129
+ outline: 2px solid var(--color-bg-3);
3130
+ outline-offset: -2px;
3131
+ border-radius: var(--radius-base);
3132
+ padding: var(--spacing-2) var(--spacing-3);
3133
+ transition: outline-color var(--transition-base), box-shadow var(--transition-base);
3134
+ cursor: pointer;
3135
+ }
3136
+ .field--sm {
3137
+ font-size: var(--font-size-sm);
3138
+ padding: var(--spacing-1) var(--spacing-2);
3139
+ }
3140
+ .field--lg {
3141
+ font-size: var(--font-size-lg);
3142
+ padding: var(--spacing-3) var(--spacing-4);
3143
+ }
3144
+ .field:focus,
3145
+ .field:focus-visible {
3146
+ outline-color: var(--color-action-primary);
3147
+ box-shadow: 0 0 0 3px hsla(var(--accent-hue), var(--accent-saturation), var(--accent-lightness), 0.1);
3148
+ }
3149
+ .field:hover:not(:disabled):not(.field--error) {
3150
+ outline-color: var(--color-action-primary-hover);
3151
+ }
3152
+ .field--error {
3153
+ outline-color: hsla(var(--error-hue), var(--error-saturation), 50%, 1);
3154
+ }
3155
+ .field--error:focus,
3156
+ .field--error:focus-visible {
3157
+ outline-color: hsla(var(--error-hue), var(--error-saturation), 50%, 1);
3158
+ box-shadow: 0 0 0 3px hsla(var(--error-hue), var(--error-saturation), var(--error-lightness), 0.1);
3159
+ }
3160
+ .field:disabled,
3161
+ .field--disabled {
3162
+ cursor: not-allowed;
3163
+ opacity: 0.6;
3164
+ background-color: var(--color-bg-2);
3165
+ }
3166
+ .field--open {
3167
+ outline-color: var(--color-action-primary);
3168
+ }
3169
+
3170
+ /* src/style/components/select/select.css */
3171
+ .select-container {
3172
+ display: flex;
3173
+ flex-direction: column;
3174
+ gap: var(--spacing-2);
3175
+ }
3176
+ .select-container--full-width {
3177
+ width: 100%;
3178
+ }
3179
+ .select__label {
3180
+ font-size: var(--font-size-sm);
3181
+ font-weight: 500;
3182
+ color: var(--color-foreground-1);
3183
+ cursor: pointer;
3184
+ }
3185
+ .select__trigger {
3186
+ width: 100%;
3187
+ display: flex;
3188
+ align-items: center;
3189
+ justify-content: space-between;
3190
+ gap: var(--spacing-2);
3191
+ font-family: inherit;
3192
+ font-size: var(--font-size-base);
3193
+ line-height: 1.5;
3194
+ color: var(--color-foreground-1);
3195
+ background-color: var(--color-bg-1);
3196
+ border: none;
3197
+ outline: 2px solid var(--color-foreground-3);
3198
+ outline-offset: -2px;
3199
+ border-radius: var(--radius-base);
3200
+ padding: var(--spacing-2) var(--spacing-3);
3201
+ cursor: pointer;
3202
+ transition: outline-color var(--motion-duration-fast) var(--motion-easing-linear), box-shadow var(--motion-duration-fast) var(--motion-easing-linear);
3203
+ text-align: left;
3204
+ }
3205
+ .select__trigger:not(:hover):not(:focus-visible):not(.select__trigger--open) {
3206
+ transition: outline-color var(--motion-duration-fast) var(--motion-easing-accelerate), box-shadow var(--motion-duration-fast) var(--motion-easing-accelerate);
3207
+ }
3208
+ .select__trigger--sm {
3209
+ font-size: var(--font-size-sm);
3210
+ padding: var(--spacing-1) var(--spacing-2);
3211
+ }
3212
+ .select__trigger--lg {
3213
+ font-size: var(--font-size-lg);
3214
+ padding: var(--spacing-3) var(--spacing-4);
3215
+ }
3216
+ .select__trigger-content {
3217
+ display: flex;
3218
+ align-items: center;
3219
+ gap: var(--spacing-2);
3220
+ flex: 1;
3221
+ }
3222
+ .select__trigger-text {
3223
+ flex: 1;
3224
+ overflow: hidden;
3225
+ text-overflow: ellipsis;
3226
+ white-space: nowrap;
3227
+ }
3228
+ .select__trigger-icon {
3229
+ flex-shrink: 0;
3230
+ color: var(--color-foreground-2);
3231
+ transition: transform var(--transition-fast);
3232
+ }
3233
+ .select__trigger--open .select__trigger-icon {
3234
+ transform: rotate(180deg);
3235
+ }
3236
+ .select__trigger:focus-visible {
3237
+ outline-color: var(--color-action-primary);
3238
+ box-shadow: 0 0 0 3px hsla(var(--accent-hue), var(--accent-saturation), var(--accent-lightness), 0.1);
3239
+ }
3240
+ .select__trigger:hover:not(:disabled):not(.select__trigger--error) {
3241
+ outline-color: var(--color-action-primary-hover);
3242
+ }
3243
+ .select__trigger--open {
3244
+ outline-color: var(--color-action-primary);
3245
+ }
3246
+ .select__trigger--error {
3247
+ outline-color: hsla(var(--error-hue), var(--error-saturation), 50%, 1);
3248
+ }
3249
+ .select__trigger--error:focus-visible {
3250
+ outline-color: hsla(var(--error-hue), var(--error-saturation), 50%, 1);
3251
+ box-shadow: 0 0 0 3px hsla(var(--error-hue), var(--error-saturation), var(--error-lightness), 0.1);
3252
+ }
3253
+ .select__trigger:disabled,
3254
+ .select__trigger--disabled {
3255
+ cursor: not-allowed;
3256
+ opacity: 0.6;
3257
+ background-color: var(--color-bg-2);
3258
+ }
3259
+ .select__dropdown {
3260
+ min-width: 200px;
3261
+ max-height: 300px;
3262
+ overflow-y: auto;
3263
+ padding: var(--spacing-2);
3264
+ }
3265
+ .select__message {
3266
+ font-size: var(--font-size-sm);
3267
+ margin: 0;
3268
+ color: var(--color-foreground-2);
3269
+ }
3270
+ .select__message--error {
3271
+ color: hsla(var(--error-hue), var(--error-saturation), var(--error-lightness), 1);
3272
+ }
3273
+ :root[data-theme=dark] .select__trigger {
3274
+ background-color: var(--color-bg-2);
3275
+ }
3276
+
3277
+ /* src/components/banner/banner.css */
3278
+ .banner {
3279
+ display: flex;
3280
+ align-items: flex-start;
3281
+ justify-content: space-between;
3282
+ padding: var(--spacing-4);
3283
+ border-radius: var(--border-radius-md, 8px);
3284
+ margin-bottom: var(--spacing-4);
3285
+ font-weight: 500;
3286
+ gap: var(--spacing-3);
3287
+ }
3288
+ .banner__content {
3289
+ display: flex;
3290
+ align-items: flex-start;
3291
+ gap: var(--spacing-3);
3292
+ flex: 1;
3293
+ }
3294
+ .banner__message {
3295
+ flex: 1;
3296
+ line-height: 1.5;
3297
+ margin: var(--spacing-1) var(--spacing-1) var(--spacing-1) 0;
3298
+ }
3299
+ .banner--info {
3300
+ background-color: hsla(var(--info-hue), var(--info-saturation), var(--info-lightness), 1);
3301
+ color: hsla(var(--info-hue), 0%, 100%, 1);
3302
+ }
3303
+ .banner--warning {
3304
+ background-color: hsla(var(--warning-hue), var(--warning-saturation), var(--warning-lightness), 1);
3305
+ color: hsla(var(--warning-hue), 0%, 100%, 1);
3306
+ }
3307
+ .banner--error {
3308
+ background-color: hsla(var(--error-hue), var(--error-saturation), var(--error-lightness), 1);
3309
+ color: hsla(var(--error-hue), 0%, 100%, 1);
3310
+ }
3311
+ .banner--success {
3312
+ background-color: hsla(var(--success-hue), var(--success-saturation), var(--success-lightness), 1);
3313
+ color: hsla(var(--success-hue), 0%, 100%, 1);
3314
+ }
3315
+
3316
+ /* src/style/components/floating-bar/floating-bar.css */
3317
+ .floating-bar {
3318
+ position: sticky;
3319
+ width: 100%;
3320
+ z-index: var(--z-floating-base);
3321
+ margin-top: var(--spacing-8);
3322
+ margin-bottom: var(--spacing-8);
3323
+ background-color: var(--color-bg-1);
3324
+ border-radius: var(--radius-base);
3325
+ }
3326
+ .floating-bar--top {
3327
+ top: 0;
3328
+ }
3329
+ .floating-bar--bottom {
3330
+ bottom: 0;
3331
+ }
3332
+ .floating-bar__content {
3333
+ padding: 0 var(--spacing-4);
3334
+ }
3335
+ .floating-bar--top .floating-bar__content {
3336
+ box-shadow: 0 2px 42px rgba(0, 0, 0, 0.2);
3337
+ }
3338
+ .floating-bar--bottom .floating-bar__content {
3339
+ box-shadow: 0 -2px 42px rgba(0, 0, 0, 0.8);
3340
+ }
3341
+
3342
+ /* src/style/components/drawer/drawer.css */
3343
+ .drawer {
3344
+ position: fixed;
3345
+ background-color: var(--color-bg-1);
3346
+ border: 1px solid var(--color-foreground-2);
3347
+ border-color: rgba(0, 0, 0, 0.1);
3348
+ box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
3349
+ transition: background-color var(--motion-transition-background);
3350
+ opacity: 0;
3351
+ visibility: hidden;
3352
+ pointer-events: none;
3353
+ }
3354
+ .drawer[data-enter] {
3355
+ opacity: 1;
3356
+ visibility: visible;
3357
+ pointer-events: auto;
3358
+ animation: var(--motion-keyframes-slide-in-right), fadeIn var(--motion-duration-base) var(--motion-easing-decelerate);
3359
+ }
3360
+ .drawer[data-leave] {
3361
+ opacity: 0;
3362
+ visibility: hidden;
3363
+ pointer-events: none;
3364
+ animation: var(--motion-keyframes-slide-out-right), fadeOut var(--motion-duration-base) var(--motion-easing-accelerate);
3365
+ }
3366
+ .drawer--right {
3367
+ top: 0;
3368
+ right: 0;
3369
+ bottom: 0;
3370
+ }
3371
+ .drawer--left {
3372
+ top: 0;
3373
+ left: 0;
3374
+ bottom: 0;
3375
+ }
3376
+ .drawer--top {
3377
+ top: 0;
3378
+ left: 0;
3379
+ right: 0;
3380
+ }
3381
+ .drawer--bottom {
3382
+ bottom: 0;
3383
+ left: 0;
3384
+ right: 0;
3385
+ }
3386
+ .drawer__backdrop {
3387
+ position: fixed;
3388
+ top: 0;
3389
+ left: 0;
3390
+ right: 0;
3391
+ bottom: 0;
3392
+ background-color: rgba(0, 0, 0, 0.5);
3393
+ z-index: 999;
3394
+ opacity: 0;
3395
+ visibility: hidden;
3396
+ transition: opacity var(--motion-duration-base) var(--motion-easing-standard), visibility var(--motion-duration-base) var(--motion-easing-standard);
3397
+ }
3398
+ .drawer__backdrop[data-enter] {
3399
+ opacity: 1;
3400
+ visibility: visible;
3401
+ animation: fadeIn var(--motion-duration-base) var(--motion-easing-decelerate);
3402
+ }
3403
+ .drawer__backdrop[data-leave] {
3404
+ opacity: 0;
3405
+ visibility: hidden;
3406
+ animation: fadeOut var(--motion-duration-base) var(--motion-easing-accelerate);
3407
+ }
3408
+ .drawer__content {
3409
+ display: flex;
3410
+ flex-direction: column;
3411
+ height: 100%;
3412
+ overflow: hidden;
3413
+ }
3414
+ .drawer__header {
3415
+ display: flex;
3416
+ align-items: center;
3417
+ justify-content: space-between;
3418
+ padding: var(--spacing-4, 1rem);
3419
+ border-bottom: 1px solid var(--color-foreground-2);
3420
+ border-bottom-color: rgba(0, 0, 0, 0.1);
3421
+ flex-shrink: 0;
3422
+ }
3423
+ .drawer__title {
3424
+ margin: 0;
3425
+ font-size: var(--font-size-lg, 1.125rem);
3426
+ font-weight: 600;
3427
+ color: var(--color-foreground-1);
3428
+ }
3429
+ .drawer__close {
3430
+ background: none;
3431
+ border: none;
3432
+ padding: var(--spacing-2, 0.5rem);
3433
+ cursor: pointer;
3434
+ border-radius: var(--radius-base);
3435
+ color: var(--color-foreground-1);
3436
+ font-size: var(--font-size-lg, 1.125rem);
3437
+ display: flex;
3438
+ align-items: center;
3439
+ justify-content: center;
3440
+ transition: var(--motion-transition-background), var(--motion-transition-color);
3441
+ }
3442
+ .drawer__close:hover:not(:disabled) {
3443
+ background-color: hsla(0, 0%, var(--lightness-bg-2), 0.5);
3444
+ color: var(--color-foreground-1);
3445
+ }
3446
+ .drawer__close:active:not(:disabled) {
3447
+ background-color: hsla(0, 0%, var(--lightness-bg-3), 0.7);
3448
+ }
3449
+ .drawer__close:focus-visible:not(:disabled) {
3450
+ outline: 2px solid var(--color-action-primary);
3451
+ outline-offset: 2px;
3452
+ }
3453
+ @media (hover: none) and (pointer: coarse) {
3454
+ .drawer__close:active:not(:disabled) {
3455
+ background-color: hsla(0, 0%, var(--lightness-bg-2), 0.6);
3456
+ }
3457
+ }
3458
+ .drawer__body {
3459
+ flex: 1;
3460
+ overflow-y: auto;
3461
+ padding: var(--spacing-4, 1rem);
3462
+ color: var(--color-foreground-1);
3463
+ }
3464
+ .drawer--right[data-enter] {
3465
+ animation: slideInRight 0.3s ease-out, fadeIn var(--motion-duration-base) var(--motion-easing-decelerate);
3466
+ }
3467
+ .drawer--right[data-leave] {
3468
+ animation: slideOutRight 0.3s ease-in, fadeOut var(--motion-duration-base) var(--motion-easing-accelerate);
3469
+ }
3470
+ .drawer--left[data-enter] {
3471
+ animation: slideInLeft 0.3s ease-out, fadeIn var(--motion-duration-base) var(--motion-easing-decelerate);
3472
+ }
3473
+ .drawer--left[data-leave] {
3474
+ animation: slideOutLeft 0.3s ease-in, fadeOut var(--motion-duration-base) var(--motion-easing-accelerate);
3475
+ }
3476
+ .drawer--top[data-enter] {
3477
+ animation: slideInTop 0.3s ease-out, fadeIn var(--motion-duration-base) var(--motion-easing-decelerate);
3478
+ }
3479
+ .drawer--top[data-leave] {
3480
+ animation: slideOutTop 0.3s ease-in, fadeOut var(--motion-duration-base) var(--motion-easing-accelerate);
3481
+ }
3482
+ .drawer--bottom[data-enter] {
3483
+ animation: slideInBottom 0.3s ease-out, fadeIn var(--motion-duration-base) var(--motion-easing-decelerate);
3484
+ }
3485
+ .drawer--bottom[data-leave] {
3486
+ animation: slideOutBottom 0.3s ease-in, fadeOut var(--motion-duration-base) var(--motion-easing-accelerate);
3487
+ }
3488
+
3489
+ /* src/style/components/table/table.css */
3490
+ .table {
3491
+ width: 100%;
3492
+ border-collapse: collapse;
3493
+ font-size: var(--font-size-sm);
3494
+ line-height: var(--line-height-normal);
3495
+ }
3496
+ .table--sm {
3497
+ font-size: var(--font-size-xs);
3498
+ }
3499
+ .table--sm .table__cell,
3500
+ .table--sm .table__cell--header {
3501
+ padding: var(--spacing-2) var(--spacing-3);
3502
+ }
3503
+ .table--md .table__cell,
3504
+ .table--md .table__cell--header {
3505
+ padding: var(--spacing-3) var(--spacing-4);
3506
+ }
3507
+ .table--lg .table__cell,
3508
+ .table--lg .table__cell--header {
3509
+ padding: var(--spacing-4) var(--spacing-6);
3510
+ }
3511
+ .table__cell,
3512
+ .table__cell--header {
3513
+ padding: var(--spacing-3) var(--spacing-4);
3514
+ text-align: left;
3515
+ vertical-align: top;
3516
+ }
3517
+ .table__cell--header {
3518
+ font-weight: var(--font-weight-semibold);
3519
+ background-color: var(--color-bg-2);
3520
+ border-bottom: 1px solid var(--color-foreground-2);
3521
+ color: var(--color-foreground-1);
3522
+ }
3523
+ .table__cell {
3524
+ color: var(--color-foreground-1);
3525
+ border-bottom: 1px solid var(--color-foreground-2);
3526
+ border-bottom-color: rgba(0, 0, 0, 0.1);
3527
+ transition: background-color var(--transition-base, 0.2s ease);
3528
+ }
3529
+ .table__row:hover .table__cell:not(.table__cell--header) {
3530
+ background-color: transparent;
3531
+ }
3532
+ .table--bordered {
3533
+ border: 1px solid var(--color-foreground-2);
3534
+ border-color: rgba(0, 0, 0, 0.1);
3535
+ }
3536
+ .table--bordered .table__cell,
3537
+ .table--bordered .table__cell--header {
3538
+ border-right: 1px solid var(--color-foreground-2);
3539
+ border-right-color: rgba(0, 0, 0, 0.1);
3540
+ }
3541
+ .table--bordered .table__cell:last-child,
3542
+ .table--bordered .table__cell--header:last-child {
3543
+ border-right: none;
3544
+ }
3545
+ .table--bordered .table__row:last-child .table__cell {
3546
+ border-bottom: none;
3547
+ }
3548
+ .table--striped tbody .table__row:nth-child(odd) {
3549
+ background-color: var(--color-bg-3);
3550
+ }
3551
+ .table--striped tbody .table__row:nth-child(even) {
3552
+ background-color: var(--color-bg-2);
3553
+ }
3554
+ .table--striped tbody .table__row:nth-child(even) .table__cell {
3555
+ background-color: transparent;
3556
+ }
3557
+ .table--striped tbody .table__row:nth-child(odd) .table__cell {
3558
+ background-color: transparent;
3559
+ }
3560
+ .table--hover tbody .table__row:hover {
3561
+ background-color: var(--color-bg-2);
3562
+ transition: background-color var(--motion-duration-fast) var(--motion-easing-standard);
3563
+ }
3564
+ .table--hover tbody .table__row:hover .table__cell {
3565
+ background-color: transparent;
3566
+ }
3567
+ .table-container {
3568
+ overflow-x: auto;
3569
+ margin: var(--spacing-4) 0;
3570
+ }
3571
+
3572
+ /* src/style/components/page-index/page-index.css */
3573
+ .page-index {
3574
+ padding: var(--spacing-4);
3575
+ }
3576
+ .page-index__title {
3577
+ margin: 0 0 var(--spacing-3) 0;
3578
+ font-size: var(--font-size-sm);
3579
+ font-weight: var(--font-weight-semibold);
3580
+ color: var(--color-foreground-5);
3581
+ text-transform: uppercase;
3582
+ letter-spacing: 0.05em;
3583
+ }
3584
+ .page-index__nav {
3585
+ overflow-y: auto;
3586
+ max-height: calc(100vh - 200px);
3587
+ }
3588
+ .page-index__list {
3589
+ list-style: none;
3590
+ margin: 0;
3591
+ padding: 0;
3592
+ display: flex;
3593
+ flex-direction: column;
3594
+ gap: var(--spacing-1);
3595
+ }
3596
+ .page-index__item {
3597
+ margin: 0;
3598
+ padding: 0;
3599
+ }
3600
+ .page-index__item--level-1 {
3601
+ margin-top: var(--spacing-2);
3602
+ }
3603
+ .page-index__item--level-1:first-child {
3604
+ margin-top: 0;
3605
+ }
3606
+ .page-index__item--level-2 {
3607
+ margin-left: var(--spacing-3);
3608
+ }
3609
+ .page-index__item--level-3 {
3610
+ margin-left: var(--spacing-6);
3611
+ }
3612
+ .page-index__item--level-4 {
3613
+ margin-left: var(--spacing-9);
3614
+ }
3615
+ .page-index__item--level-5 {
3616
+ margin-left: var(--spacing-12);
3617
+ }
3618
+ .page-index__item--level-6 {
3619
+ margin-left: var(--spacing-15);
3620
+ }
3621
+ .page-index__link {
3622
+ width: 100%;
3623
+ padding: var(--spacing-1) var(--spacing-2);
3624
+ background: none;
3625
+ border: none;
3626
+ border-radius: var(--radius-sm);
3627
+ text-align: left;
3628
+ font-size: var(--font-size-sm);
3629
+ color: var(--color-foreground-2);
3630
+ cursor: pointer;
3631
+ transition: all 0.15s ease;
3632
+ display: block;
3633
+ text-decoration: none;
3634
+ line-height: 1.4;
3635
+ }
3636
+ .page-index__link:hover {
3637
+ background-color: var(--color-bg-2);
3638
+ color: var(--color-foreground-1);
3639
+ }
3640
+ .page-index__link--active {
3641
+ background-color: var(--color-primary);
3642
+ color: var(--color-on-primary);
3643
+ font-weight: var(--font-weight-medium);
3644
+ }
3645
+ .page-index__link--active:hover {
3646
+ background-color: var(--color-primary);
3647
+ color: var(--color-on-primary);
3648
+ }
3649
+ .page-index__link:focus-visible {
3650
+ outline: 2px solid var(--color-primary);
3651
+ outline-offset: 2px;
3652
+ }
3653
+ .page-index--collapsed {
3654
+ padding: var(--spacing-2);
3655
+ width: 48px;
3656
+ text-align: center;
3657
+ }
3658
+ .page-index--collapsed .page-index__title {
3659
+ display: none;
3660
+ }
3661
+ .page-index--collapsed .page-index__list {
3662
+ gap: var(--spacing-1);
3663
+ }
3664
+ .page-index--collapsed .page-index__item--level-2,
3665
+ .page-index--collapsed .page-index__item--level-3,
3666
+ .page-index--collapsed .page-index__item--level-4,
3667
+ .page-index--collapsed .page-index__item--level-5,
3668
+ .page-index--collapsed .page-index__item--level-6 {
3669
+ margin-left: 0;
3670
+ }
3671
+ .page-index--collapsed .page-index__link {
3672
+ padding: var(--spacing-1);
3673
+ width: 32px;
3674
+ height: 32px;
3675
+ display: flex;
3676
+ align-items: center;
3677
+ justify-content: center;
3678
+ border-radius: var(--radius-sm);
3679
+ }
3680
+ .page-index--collapsed .page-index__link-text--collapsed {
3681
+ font-size: var(--font-size-sm);
3682
+ font-weight: var(--font-weight-semibold);
3683
+ text-transform: uppercase;
3684
+ }
3685
+ .page-index__nav::-webkit-scrollbar {
3686
+ width: 4px;
3687
+ }
3688
+ .page-index__nav::-webkit-scrollbar-track {
3689
+ background: var(--color-bg-2);
3690
+ border-radius: 2px;
3691
+ }
3692
+ .page-index__nav::-webkit-scrollbar-thumb {
3693
+ background: var(--color-bg-3);
3694
+ border-radius: 2px;
3695
+ }
3696
+ .page-index__nav::-webkit-scrollbar-thumb:hover {
3697
+ background: var(--color-foreground-3);
3698
+ }
3699
+ /*# sourceMappingURL=index.css.map */