@14ch/svelte-ui 0.0.41 → 0.0.43

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 (51) hide show
  1. package/dist/assets/styles/import.css +900 -0
  2. package/dist/assets/styles/variables.scss +5 -0
  3. package/dist/components/Checkbox.svelte +12 -8
  4. package/dist/components/Checkbox.svelte.d.ts +8 -5
  5. package/dist/components/CheckboxGroup.svelte +5 -6
  6. package/dist/components/CheckboxGroup.svelte.d.ts +2 -1
  7. package/dist/components/ColorPicker.svelte +4 -3
  8. package/dist/components/ColorPicker.svelte.d.ts +3 -3
  9. package/dist/components/Combobox.svelte +4 -3
  10. package/dist/components/Datepicker.svelte +2 -1
  11. package/dist/components/Dialog.svelte +1 -1
  12. package/dist/components/Drawer.svelte +1 -1
  13. package/dist/components/FileUploader.svelte +2 -8
  14. package/dist/components/ImageUploader.svelte +2 -8
  15. package/dist/components/ImageUploaderPreview.svelte +1 -0
  16. package/dist/components/Input.svelte +8 -2
  17. package/dist/components/Input.svelte.d.ts +2 -0
  18. package/dist/components/LoadingSpinner.svelte +3 -3
  19. package/dist/components/Modal.svelte +7 -7
  20. package/dist/components/Modal.svelte.d.ts +1 -1
  21. package/dist/components/MultiSelect.svelte +2 -2
  22. package/dist/components/Nav.svelte +15 -0
  23. package/dist/components/Nav.svelte.d.ts +6 -0
  24. package/dist/components/NavItem.svelte +22 -4
  25. package/dist/components/NavItem.svelte.d.ts +6 -0
  26. package/dist/components/Pagination.svelte +3 -2
  27. package/dist/components/Pagination.svelte.d.ts +2 -1
  28. package/dist/components/Popup.svelte +1 -0
  29. package/dist/components/PopupMenu.svelte +1 -0
  30. package/dist/components/PopupMenuButton.svelte +6 -6
  31. package/dist/components/PopupMenuButton.svelte.d.ts +1 -1
  32. package/dist/components/Radio.svelte +9 -4
  33. package/dist/components/Radio.svelte.d.ts +6 -3
  34. package/dist/components/RadioGroup.svelte +5 -6
  35. package/dist/components/RadioGroup.svelte.d.ts +2 -1
  36. package/dist/components/SegmentedControl.svelte +5 -3
  37. package/dist/components/SegmentedControl.svelte.d.ts +4 -3
  38. package/dist/components/Select.svelte +0 -1
  39. package/dist/components/Slider.svelte +4 -3
  40. package/dist/components/Slider.svelte.d.ts +3 -3
  41. package/dist/components/SnackbarItem.svelte +3 -3
  42. package/dist/components/Switch.svelte +12 -6
  43. package/dist/components/Switch.svelte.d.ts +7 -4
  44. package/dist/components/Tab.svelte +4 -7
  45. package/dist/components/Textarea.svelte +23 -18
  46. package/dist/components/Textarea.svelte.d.ts +5 -3
  47. package/dist/index.d.ts +4 -1
  48. package/dist/index.js +3 -0
  49. package/dist/types/propOptions.d.ts +7 -2
  50. package/dist/utils/formatText.js +1 -1
  51. package/package.json +3 -3
@@ -0,0 +1,900 @@
1
+ @charset "UTF-8";
2
+ /* src/lib/assets/styles/import.scss */
3
+ /*
4
+ * Core styles automatically included with svelte-ui
5
+ * These are the minimum required styles for components to work properly
6
+ */
7
+ /* Material Symbols fonts (required for Icon component) */
8
+ @import url("https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200");
9
+ @import url("https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200");
10
+ @import url("https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200");
11
+ /* src/lib/assets/styles/variables.scss */
12
+ /* ====================================
13
+ * ファイル構造と記述ルール
14
+ * ====================================
15
+ *
16
+ * このファイルは以下の構造になっています:
17
+ *
18
+ * 1. ルートレベル(:where(:root))
19
+ * - カラーパレット(base, primary, white)
20
+ * - 共通変数(トランジション、ボーダー半径、タイポグラフィ)
21
+ * - 基本色変数(--svelte-ui-primary-color, --svelte-ui-success-color等)
22
+ *
23
+ * 2. ライトテーマ(:where(:root)内)
24
+ * - テキスト色、ボーダー色、背景色等の基本テーマ色
25
+ *
26
+ * 3. ダークテーマ([data-theme='dark'])
27
+ * - ライトテーマで定義された色変数を上書き
28
+ *
29
+ * 4. コンポーネント変数(:where(:root), [data-theme='dark'])
30
+ * - サイズ・パディング等の固定値
31
+ * - ライト・ダーク両テーマで共有される色変数
32
+ * - 各コンポーネントの色変数(Button, Input, Checkbox, Radio, Switch等)
33
+ * - テーマで定義された色(--svelte-ui-text-color等)を参照する
34
+ *
35
+ * 5. ハイコントラストモード(@media (prefers-contrast: more))
36
+ * - システムカラーを使用した上書き
37
+ *
38
+ * 【重要】新しいコンポーネントの変数を追加する際:
39
+ * - サイズ・パディング等の固定値 → コンポーネント変数セクション(4.)
40
+ * - 色変数 → コンポーネント変数セクション(4.)
41
+ * - 色変数は必ずテーマ色(--svelte-ui-text-color等)を参照する
42
+ * - ライトテーマセクション内に直接色変数を定義してはいけない
43
+ * - 個別コンポーネント用の色変数をライトテーマ・ダークテーマに定義してはいけない
44
+ *
45
+ * 【色変数の設計原則】
46
+ * - コンポーネント専用の色変数(--svelte-ui-switch-track-color等)をライト・ダークテーマに定義に定義するのは避ける
47
+ * - 一般化された意味を持つ基本色(--svelte-ui-inactive-color等)をライト・ダークテーマに定義
48
+ * - コンポーネント色変数セクションで基本色を参照(--svelte-ui-switch-inactive-color: var(--svelte-ui-inactive-color))
49
+ * - 例:非アクティブ状態、ホバー状態、エラー状態など、汎用的な意味を持つ色を基本色として定義
50
+ * ==================================== */
51
+ :where(:root) {
52
+ /* ====================================
53
+ * カラーパレット
54
+ * ==================================== */
55
+ --base-50: #f5f5f4;
56
+ --base-100: #eae9e7;
57
+ --base-200: #d5d2cd;
58
+ --base-300: #bfbbb4;
59
+ --base-400: #aaa49b;
60
+ --base-500: #958d82;
61
+ --base-600: #7f766b;
62
+ --base-700: #666057;
63
+ --base-800: #4e4943;
64
+ --base-900: #37332f;
65
+ --base-950: #2b2925;
66
+ --base-50-transparent: rgba(155, 155, 145, 0.1);
67
+ --base-100-transparent: rgba(115, 108, 95, 0.15);
68
+ --base-200-transparent: rgba(87, 75, 55, 0.25);
69
+ --base-300-transparent: rgba(72, 61, 41, 0.35);
70
+ --base-400-transparent: rgba(66, 53, 33, 0.45);
71
+ --base-500-transparent: rgba(62, 48, 28, 0.55);
72
+ --base-600-transparent: rgba(58, 44, 27, 0.65);
73
+ --base-700-transparent: rgba(51, 43, 31, 0.75);
74
+ --base-800-transparent: rgba(47, 41, 34, 0.85);
75
+ --base-900-transparent: rgba(44, 40, 36, 0.95);
76
+ --base-950-transparent: rgba(43, 41, 37, 1);
77
+ --base-color: var(--base-500);
78
+ --base-dark: var(--base-600);
79
+ --base-darker: var(--base-700);
80
+ --base-light: var(--base-400);
81
+ --base-lighter: var(--base-300);
82
+ --primary-50: #fdf8e9;
83
+ --primary-100: #faefd1;
84
+ --primary-200: #f5dba0;
85
+ --primary-300: #f0c470;
86
+ --primary-400: #ebab41;
87
+ --primary-500: #e28e18;
88
+ --primary-600: #bf7314;
89
+ --primary-700: #9c5911;
90
+ --primary-800: #7a410d;
91
+ --primary-900: #582c09;
92
+ --primary-950: #462307;
93
+ --primary-50-transparent: rgba(235, 185, 35, 0.1);
94
+ --primary-100-transparent: rgba(230, 175, 25, 0.2);
95
+ --primary-200-transparent: rgba(230, 165, 18, 0.4);
96
+ --primary-300-transparent: rgba(230, 157, 17, 0.6);
97
+ --primary-400-transparent: rgba(230, 150, 18, 0.8);
98
+ --primary-500-transparent: rgba(226, 142, 24, 1);
99
+ --primary-600-transparent: rgba(239, 144, 25, 0.8);
100
+ --primary-700-transparent: rgba(255, 148, 28, 0.6);
101
+ --primary-800-transparent: rgba(255, 163, 33, 0.4);
102
+ --primary-900-transparent: rgba(255, 220, 45, 0.2);
103
+ --primary-950-transparent: rgba(255, 255, 70, 0.1);
104
+ --primary-color: var(--primary-500);
105
+ --primary-dark: var(--primary-600);
106
+ --primary-darker: var(--primary-700);
107
+ --primary-light: var(--primary-400);
108
+ --primary-lighter: var(--primary-300);
109
+ --primary-text-color: var(--primary-text-color-on-light);
110
+ --primary-text-color-on-dark: var(--primary-400);
111
+ --primary-text-color-on-light: var(--primary-400);
112
+ --white: #fafafa;
113
+ --white-50-transparent: rgba(255, 255, 255, 0.05);
114
+ --white-100-transparent: rgba(255, 255, 255, 0.1);
115
+ --white-200-transparent: rgba(255, 255, 255, 0.2);
116
+ --white-300-transparent: rgba(255, 255, 255, 0.3);
117
+ --white-400-transparent: rgba(255, 255, 255, 0.4);
118
+ --white-500-transparent: rgba(255, 255, 255, 0.5);
119
+ --white-600-transparent: rgba(255, 255, 255, 0.6);
120
+ --white-700-transparent: rgba(255, 255, 255, 0.7);
121
+ --white-800-transparent: rgba(255, 255, 255, 0.8);
122
+ --white-900-transparent: rgba(255, 255, 255, 0.9);
123
+ --white-950-transparent: rgba(255, 255, 255, 0.95);
124
+ /* ====================================
125
+ * 基本の色変数
126
+ * ==================================== */
127
+ --svelte-ui-primary-color: var(--primary-color);
128
+ /* State Colors */
129
+ --svelte-ui-success-color: #12b073;
130
+ --svelte-ui-error-color: #f54d4d;
131
+ --svelte-ui-error-container-color: transparent;
132
+ --svelte-ui-danger-color: #f54d4d;
133
+ --svelte-ui-warning-color: #f57c00;
134
+ --svelte-ui-info-color: #13a3b4;
135
+ /* Disabled State */
136
+ --svelte-ui-disabled-opacity: 0.5;
137
+ /* ====================================
138
+ * ライトテーマ用の色変数
139
+ * ==================================== */
140
+ /* 基本テキスト色の定義 */
141
+ --svelte-ui-text-color: var(--base-800-transparent);
142
+ --svelte-ui-text-subtle-color: var(--base-400-transparent);
143
+ --svelte-ui-text-on-filled-color: #ffffff;
144
+ --svelte-ui-text-inverse-color: var(--white-800-transparent);
145
+ --svelte-ui-text-inverse-subtle-color: var(--white-400-transparent);
146
+ --svelte-ui-text-placeholder-color: var(--base-400-transparent);
147
+ /* ボーダーカラー */
148
+ --svelte-ui-border-color: var(--base-200-transparent);
149
+ --svelte-ui-border-weak-color: var(--base-100-transparent);
150
+ --svelte-ui-border-strong-color: var(--base-300-transparent);
151
+ /* 非アクティブ色 */
152
+ --svelte-ui-inactive-color: var(--base-200-transparent);
153
+ /* 入力欄背景色 */
154
+ --svelte-ui-form-bg: var(--base-50-transparent);
155
+ /* サーフェス背景色 */
156
+ --svelte-ui-surface-color: var(--white);
157
+ --svelte-ui-surface-accent-color: var(--base-50-transparent);
158
+ --svelte-ui-surface-inverse-color: var(--base-800-transparent);
159
+ /* スケルトン色 */
160
+ --svelte-ui-skeleton-color: var(--base-100-transparent);
161
+ /* UIカラー */
162
+ --svelte-ui-handle-color: #ffffff;
163
+ /* hover & select 効果 */
164
+ --svelte-ui-hover-overlay: var(--base-100-transparent);
165
+ --svelte-ui-select-overlay: var(--primary-200-transparent);
166
+ /* ドロップダウンアイコン */
167
+ --svelte-ui-dropdown-icon-color: var(--svelte-ui-text-subtle-color);
168
+ /* フォーカス色 */
169
+ --svelte-ui-focus-color: var(--primary-color);
170
+ /* Disabled色 */
171
+ --svelte-ui-disabled-bg: var(--base-50-transparent);
172
+ /* Glass色 */
173
+ --svelte-ui-glass-bg: var(--base-50-transparent);
174
+ }
175
+
176
+ /* ====================================
177
+ * ダークテーマ用の色変数
178
+ * ==================================== */
179
+ [data-theme=dark] {
180
+ /* 基本テキスト色の定義 */
181
+ --svelte-ui-text-color: var(--white-800-transparent);
182
+ --svelte-ui-text-subtle-color: var(--white-400-transparent);
183
+ --svelte-ui-text-on-filled-color: #ffffff;
184
+ --svelte-ui-text-inverse-color: var(--base-800-transparent);
185
+ --svelte-ui-text-inverse-subtle-color: var(--base-400-transparent);
186
+ --svelte-ui-text-placeholder-color: var(--white-400-transparent);
187
+ /* ボーダーカラー */
188
+ --svelte-ui-border-color: var(--white-400-transparent);
189
+ --svelte-ui-border-weak-color: var(--white-200-transparent);
190
+ --svelte-ui-border-strong-color: var(--white-600-transparent);
191
+ /* 非アクティブ色 */
192
+ --svelte-ui-inactive-color: var(--white-400-transparent);
193
+ /* 入力欄背景色 */
194
+ --svelte-ui-form-bg: var(--white-100-transparent);
195
+ /* サーフェス背景色 */
196
+ --svelte-ui-surface-color: var(--base-900);
197
+ --svelte-ui-surface-accent-color: var(--white-50-transparent);
198
+ --svelte-ui-surface-inverse-color: var(--white-800-transparent);
199
+ /* スケルトン色 */
200
+ --svelte-ui-skeleton-color: var(--white-100-transparent);
201
+ /* hover & select 効果 */
202
+ --svelte-ui-hover-overlay: var(--white-100-transparent);
203
+ --svelte-ui-select-overlay: var(--primary-200-transparent);
204
+ /* ドロップダウンアイコン */
205
+ --svelte-ui-dropdown-icon-color: var(--svelte-ui-text-subtle-color);
206
+ /* フォーカス色 */
207
+ --svelte-ui-focus-color: var(--primary-color);
208
+ /* Disabled色 */
209
+ --svelte-ui-disabled-bg: var(--white-100-transparent);
210
+ /* Glass色 */
211
+ --svelte-ui-glass-bg: var(--white-200-transparent);
212
+ }
213
+
214
+ :where(:root),
215
+ [data-theme=dark] {
216
+ /* ====================================
217
+ * 共通の変数(サイズ、トランジション、ボーダー半径など)
218
+ * ==================================== */
219
+ /* ボーダー半径 */
220
+ --svelte-ui-border-radius: 4px;
221
+ --svelte-ui-border-radius-rounded: 999px;
222
+ /* ボーダー幅 */
223
+ --svelte-ui-border-width: 1px;
224
+ --svelte-ui-border-width-thick: 2px;
225
+ /* タイポグラフィ */
226
+ --svelte-ui-font-size-xs: 0.75rem;
227
+ --svelte-ui-font-size-sm: 0.875rem;
228
+ --svelte-ui-font-size: 1rem;
229
+ --svelte-ui-font-size-lg: 1.125rem;
230
+ --svelte-ui-font-size-xl: 1.25rem;
231
+ /* Mobile Touch Size */
232
+ --svelte-ui-touch-target-sm: 36px;
233
+ --svelte-ui-touch-target: 44px;
234
+ --svelte-ui-touch-target-lg: 48px;
235
+ /* 基本的なトランジション */
236
+ --svelte-ui-transition-duration-fast: 0.15s;
237
+ --svelte-ui-transition-duration: 0.3s;
238
+ /* z-index */
239
+ --svelte-ui-z-dropdown: 1000;
240
+ --svelte-ui-z-modal: 1050;
241
+ --svelte-ui-z-popover: 1060;
242
+ --svelte-ui-z-tooltip: 1070;
243
+ --svelte-ui-z-toast: 1080;
244
+ /* Form Controls - 共通 */
245
+ --svelte-ui-form-height-sm: 28px;
246
+ --svelte-ui-form-height: 36px;
247
+ --svelte-ui-form-height-lg: 44px;
248
+ --svelte-ui-form-padding: 0 12px;
249
+ --svelte-ui-form-padding-left: 12px;
250
+ --svelte-ui-form-padding-inline: 12px;
251
+ --svelte-ui-form-icon-offset: 4px;
252
+ --svelte-ui-form-icon-space: 32px;
253
+ --svelte-ui-form-icon-space-inline: 32px;
254
+ --svelte-ui-form-border-radius: var(--svelte-ui-border-radius);
255
+ --svelte-ui-form-border-radius-rounded: var(--svelte-ui-border-radius-rounded);
256
+ /* ====================================
257
+ * コンポーネント変数
258
+ * ==================================== */
259
+ /* Button */
260
+ --svelte-ui-button-height-sm: var(--svelte-ui-form-height-sm);
261
+ --svelte-ui-button-height: var(--svelte-ui-form-height);
262
+ --svelte-ui-button-height-lg: var(--svelte-ui-form-height-lg);
263
+ --svelte-ui-button-padding-sm: 6px 8px;
264
+ --svelte-ui-button-padding: 8px 12px;
265
+ --svelte-ui-button-padding-lg: 12px 16px;
266
+ --svelte-ui-button-font-size-sm: 14px;
267
+ --svelte-ui-button-font-size: inherit;
268
+ --svelte-ui-button-font-size-lg: 16px;
269
+ --svelte-ui-button-line-height: 1.2em;
270
+ --svelte-ui-button-border-radius: var(--svelte-ui-border-radius);
271
+ --svelte-ui-button-border-radius-rounded: var(--svelte-ui-border-radius-rounded);
272
+ --svelte-ui-button-disabled-opacity: var(--svelte-ui-disabled-opacity);
273
+ --svelte-ui-button-bg-filled: var(--svelte-ui-primary-color);
274
+ --svelte-ui-button-bg-outlined: transparent;
275
+ --svelte-ui-button-bg-ghost: transparent;
276
+ --svelte-ui-button-bg-glass: var(--svelte-ui-glass-bg);
277
+ --svelte-ui-button-text-filled: var(--svelte-ui-text-on-filled-color);
278
+ --svelte-ui-button-text-outlined: var(--svelte-ui-primary-color);
279
+ --svelte-ui-button-text-ghost: var(--svelte-ui-primary-color);
280
+ --svelte-ui-button-text-glass: var(--svelte-ui-primary-color);
281
+ --svelte-ui-button-hover-overlay: var(--svelte-ui-hover-overlay);
282
+ --svelte-ui-button-focus-color: var(--svelte-ui-focus-color);
283
+ /* Fab */
284
+ --svelte-ui-fab-bg-filled: var(--svelte-ui-primary-color);
285
+ --svelte-ui-fab-bg-outlined: transparent;
286
+ --svelte-ui-fab-bg-ghost: transparent;
287
+ --svelte-ui-fab-bg-glass: var(--svelte-ui-glass-bg);
288
+ --svelte-ui-fab-text-filled: var(--svelte-ui-text-on-filled-color);
289
+ --svelte-ui-fab-text-outlined: var(--svelte-ui-primary-color);
290
+ --svelte-ui-fab-text-ghost: var(--svelte-ui-primary-color);
291
+ --svelte-ui-fab-text-glass: var(--svelte-ui-primary-color);
292
+ --svelte-ui-fab-hover-overlay: var(--svelte-ui-hover-overlay);
293
+ --svelte-ui-fab-focus-color: var(--svelte-ui-focus-color);
294
+ /* IconButton */
295
+ --svelte-ui-iconbutton-border-radius: var(--svelte-ui-border-radius);
296
+ --svelte-ui-iconbutton-border-radius-rounded: var(--svelte-ui-border-radius-rounded);
297
+ --svelte-ui-iconbutton-disabled-opacity: var(--svelte-ui-disabled-opacity);
298
+ --svelte-ui-iconbutton-bg-filled: var(--svelte-ui-primary-color);
299
+ --svelte-ui-iconbutton-bg-outlined: transparent;
300
+ --svelte-ui-iconbutton-bg-ghost: transparent;
301
+ --svelte-ui-iconbutton-bg-glass: var(--svelte-ui-glass-bg);
302
+ --svelte-ui-iconbutton-text-filled: var(--svelte-ui-text-on-filled-color);
303
+ --svelte-ui-iconbutton-text-outlined: var(--svelte-ui-primary-color);
304
+ --svelte-ui-iconbutton-text-ghost: var(--svelte-ui-primary-color);
305
+ --svelte-ui-iconbutton-text-glass: var(--svelte-ui-primary-color);
306
+ --svelte-ui-iconbutton-hover-overlay: var(--svelte-ui-hover-overlay);
307
+ --svelte-ui-iconbutton-focus-color: var(--svelte-ui-focus-color);
308
+ /* SegmentedControl */
309
+ --svelte-ui-segmented-control-base-padding: 4px;
310
+ --svelte-ui-segmented-control-base-border-radius: var(--svelte-ui-border-radius);
311
+ --svelte-ui-segmented-control-gap: 4px;
312
+ --svelte-ui-segmented-control-button-radius: calc(var(--svelte-ui-border-radius) - 1px);
313
+ --svelte-ui-segmented-control-button-height-sm: 24px;
314
+ --svelte-ui-segmented-control-button-height: 32px;
315
+ --svelte-ui-segmented-control-button-height-lg: 40px;
316
+ --svelte-ui-segmented-control-font-size-sm: 12px;
317
+ --svelte-ui-segmented-control-font-size: 14px;
318
+ --svelte-ui-segmented-control-font-size-lg: 16px;
319
+ --svelte-ui-segmented-control-button-padding-sm: 4px 8px;
320
+ --svelte-ui-segmented-control-button-padding: 6px 12px;
321
+ --svelte-ui-segmented-control-button-padding-lg: 8px 16px;
322
+ --svelte-ui-segmented-control-base-bg: var(--svelte-ui-surface-accent-color);
323
+ --svelte-ui-segmented-control-selected-bg: var(--svelte-ui-primary-color);
324
+ --svelte-ui-segmented-control-selected-text-color: var(--svelte-ui-text-on-filled-color);
325
+ --svelte-ui-segmented-control-hover-overlay: var(--svelte-ui-hover-overlay);
326
+ /* Nav */
327
+ --svelte-ui-nav-item-text-color: var(--svelte-ui-text-color);
328
+ --svelte-ui-nav-item-selected-text-color: var(--svelte-ui-primary-color);
329
+ --svelte-ui-nav-item-filled-text-color: #ffffff;
330
+ --svelte-ui-nav-item-tonal-bg-color: color-mix(
331
+ in srgb,
332
+ var(--svelte-ui-primary-color) 16%,
333
+ transparent
334
+ );
335
+ /* Nav: underline style(Tab はこれを参照するエイリアス) */
336
+ --svelte-ui-nav-item-underline-text-color: var(--svelte-ui-text-color);
337
+ --svelte-ui-nav-item-underline-selected-text-color: var(--svelte-ui-primary-color);
338
+ --svelte-ui-nav-item-underline-bar-color: var(--svelte-ui-primary-color);
339
+ --svelte-ui-nav-item-underline-bar-offset: 0px;
340
+ --svelte-ui-nav-item-underline-bar-height: 4px;
341
+ --svelte-ui-nav-item-underline-bar-radius: 3px 3px 0 0;
342
+ /* Tab */
343
+ --svelte-ui-tab-min-height: var(--svelte-ui-form-height);
344
+ --svelte-ui-nav-item-min-height: 40px;
345
+ --svelte-ui-nav-item-icon-gap: 8px;
346
+ --svelte-ui-nav-item-disabled-opacity: var(--svelte-ui-disabled-opacity);
347
+ --svelte-ui-nav-item-padding-x: 12px;
348
+ --svelte-ui-nav-item-padding-y: 8px;
349
+ --svelte-ui-nav-item-padding: var(--svelte-ui-nav-item-padding-y)
350
+ var(--svelte-ui-nav-item-padding-x);
351
+ --svelte-ui-nav-item-border-radius: var(--svelte-ui-border-radius);
352
+ --svelte-ui-nav-item-label-line-height: 1.3;
353
+ /* Nav: mobile-tab */
354
+ --svelte-ui-nav-mobile-min-height: 56px;
355
+ --svelte-ui-nav-mobile-item-padding: 8px;
356
+ --svelte-ui-nav-mobile-item-icon-gap: 8px;
357
+ --svelte-ui-nav-mobile-item-font-size: 0.75rem;
358
+ /* Nav: vertical */
359
+ --svelte-ui-nav-vertical-item-gap: 8px;
360
+ /* Nav: horizontal */
361
+ --svelte-ui-nav-horizontal-item-gap: 8px;
362
+ /* Nav: children spacing (parent item → children list) */
363
+ --svelte-ui-nav-children-offset: 8px;
364
+ /* Nav: sub-menu */
365
+ --svelte-ui-nav-sub-popup-min-width: 160px;
366
+ --svelte-ui-nav-sub-popup-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
367
+ --svelte-ui-nav-item-child-indent: 32px;
368
+ --svelte-ui-nav-bottom-sheet-overlay-bg: rgba(0, 0, 0, 0.4);
369
+ --svelte-ui-nav-bottom-sheet-border-radius: 16px 16px 0 0;
370
+ --svelte-ui-nav-bottom-sheet-padding: 16px 8px;
371
+ /* Input */
372
+ --svelte-ui-input-height: var(--svelte-ui-form-height);
373
+ --svelte-ui-input-padding: var(--svelte-ui-form-padding);
374
+ --svelte-ui-input-border-radius: var(--svelte-ui-form-border-radius);
375
+ --svelte-ui-input-border-radius-rounded: var(--svelte-ui-form-border-radius-rounded);
376
+ --svelte-ui-input-disabled-opacity: var(--svelte-ui-disabled-opacity);
377
+ --svelte-ui-input-icon-space: calc(
378
+ var(--svelte-ui-form-icon-space) + var(--svelte-ui-form-icon-offset)
379
+ );
380
+ --svelte-ui-input-icon-space-inline: var(--svelte-ui-form-icon-space-inline);
381
+ --svelte-ui-input-icon-space-double: calc(
382
+ var(--svelte-ui-form-icon-space) * 2 + var(--svelte-ui-form-icon-offset)
383
+ );
384
+ --svelte-ui-input-icon-space-double-inline: calc(var(--svelte-ui-form-icon-space) * 2);
385
+ --svelte-ui-input-bg: var(--svelte-ui-form-bg);
386
+ --svelte-ui-input-border-color: var(--svelte-ui-border-weak-color);
387
+ --svelte-ui-input-unit-font-size: max(0.5em, var(--svelte-ui-font-size-sm));
388
+ --svelte-ui-input-placeholder-color: var(--svelte-ui-text-placeholder-color);
389
+ --svelte-ui-input-icon-color: var(--svelte-ui-text-subtle-color);
390
+ /* Textarea */
391
+ --svelte-ui-textarea-min-height: var(--svelte-ui-form-height);
392
+ --svelte-ui-textarea-line-height: 1.8em;
393
+ --svelte-ui-textarea-padding: calc(
394
+ (var(--svelte-ui-textarea-min-height) - var(--svelte-ui-textarea-line-height)) / 2
395
+ )
396
+ 12px;
397
+ --svelte-ui-textarea-border-radius: var(--svelte-ui-border-radius);
398
+ --svelte-ui-textarea-border-radius-rounded: calc(var(--svelte-ui-textarea-min-height) / 2);
399
+ --svelte-ui-textarea-bg: var(--svelte-ui-form-bg);
400
+ --svelte-ui-textarea-border-color: var(--svelte-ui-border-weak-color);
401
+ --svelte-ui-textarea-placeholder-color: var(--svelte-ui-text-placeholder-color);
402
+ --svelte-ui-textarea-icon-space: calc(
403
+ var(--svelte-ui-form-icon-space) + var(--svelte-ui-form-icon-offset)
404
+ );
405
+ --svelte-ui-textarea-icon-space-inline: var(--svelte-ui-form-icon-space);
406
+ --svelte-ui-textarea-icon-top: 2px;
407
+ --svelte-ui-textarea-icon-top-inline: -2px;
408
+ --svelte-ui-textarea-icon-color: var(--svelte-ui-text-subtle-color);
409
+ /* Select */
410
+ --svelte-ui-select-height: var(--svelte-ui-form-height);
411
+ --svelte-ui-select-padding: var(--svelte-ui-form-padding);
412
+ --svelte-ui-select-padding-inline: var(--svelte-ui-form-padding-inline);
413
+ --svelte-ui-select-icon-space: calc(
414
+ var(--svelte-ui-form-icon-space) + var(--svelte-ui-form-icon-offset)
415
+ );
416
+ --svelte-ui-select-icon-space-inline: var(--svelte-ui-form-icon-space);
417
+ --svelte-ui-select-border-radius: var(--svelte-ui-form-border-radius);
418
+ --svelte-ui-select-border-radius-rounded: var(--svelte-ui-form-border-radius-rounded);
419
+ --svelte-ui-select-bg: var(--svelte-ui-form-bg);
420
+ --svelte-ui-select-border-color: var(--svelte-ui-border-weak-color);
421
+ --svelte-ui-select-dropdown-icon-color: var(--svelte-ui-dropdown-icon-color);
422
+ --svelte-ui-select-placeholder-color: var(--svelte-ui-text-placeholder-color);
423
+ /* Checkbox */
424
+ --svelte-ui-checkbox-size: 16px;
425
+ --svelte-ui-checkbox-size-sm: 14px;
426
+ --svelte-ui-checkbox-size-lg: 20px;
427
+ --svelte-ui-checkbox-min-height: 1.8em;
428
+ --svelte-ui-checkbox-min-height-sm: 1.6em;
429
+ --svelte-ui-checkbox-min-height-lg: 2.2em;
430
+ --svelte-ui-checkbox-border-radius: 2px;
431
+ --svelte-ui-checkbox-border-width: 2px;
432
+ --svelte-ui-checkbox-gap: 8px;
433
+ --svelte-ui-checkbox-icon-size: 1rem;
434
+ --svelte-ui-checkbox-icon-size-sm: 0.875rem;
435
+ --svelte-ui-checkbox-icon-size-lg: 1.25rem;
436
+ --svelte-ui-checkbox-line-height: 1.2em;
437
+ --svelte-ui-checkbox-disabled-opacity: var(--svelte-ui-disabled-opacity);
438
+ --svelte-ui-checkbox-border-color: var(--svelte-ui-border-color);
439
+ --svelte-ui-checkbox-bg-checked: var(--svelte-ui-checkbox-checked-color);
440
+ --svelte-ui-checkbox-icon-color: var(--svelte-ui-text-on-filled-color);
441
+ --svelte-ui-checkbox-hover-color: var(--svelte-ui-primary-color);
442
+ --svelte-ui-checkbox-checked-color: var(--svelte-ui-primary-color);
443
+ /* Switch */
444
+ --svelte-ui-switch-width: 40px;
445
+ --svelte-ui-switch-width-sm: 32px;
446
+ --svelte-ui-switch-width-lg: 48px;
447
+ --svelte-ui-switch-height: 24px; /* width * 0.5 + 4 */
448
+ --svelte-ui-switch-height-sm: 20px; /* width * 0.5 + 4 */
449
+ --svelte-ui-switch-height-lg: 28px; /* width * 0.5 + 4 */
450
+ --svelte-ui-switch-thumb-margin: 2px;
451
+ --svelte-ui-switch-thumb-size: calc(
452
+ var(--svelte-ui-switch-height) - var(--svelte-ui-switch-thumb-margin) * 2
453
+ );
454
+ --svelte-ui-switch-thumb-size-sm: calc(
455
+ var(--svelte-ui-switch-height-sm) - var(--svelte-ui-switch-thumb-margin) * 2
456
+ );
457
+ --svelte-ui-switch-thumb-size-lg: calc(
458
+ var(--svelte-ui-switch-height-lg) - var(--svelte-ui-switch-thumb-margin) * 2
459
+ );
460
+ --svelte-ui-switch-min-height: 1.8em;
461
+ --svelte-ui-switch-min-height-sm: 1.6em;
462
+ --svelte-ui-switch-min-height-lg: 2.2em;
463
+ --svelte-ui-switch-gap: 8px;
464
+ --svelte-ui-switch-line-height: 1.2em;
465
+ --svelte-ui-switch-disabled-opacity: var(--svelte-ui-disabled-opacity);
466
+ --svelte-ui-switch-border-radius: var(--svelte-ui-border-radius-rounded);
467
+ --svelte-ui-switch-thumb-border-radius: var(--svelte-ui-border-radius-rounded);
468
+ --svelte-ui-switch-inactive-color: var(--svelte-ui-inactive-color);
469
+ --svelte-ui-switch-active-color: var(--svelte-ui-primary-color);
470
+ --svelte-ui-switch-thumb-color: var(--svelte-ui-handle-color);
471
+ --svelte-ui-switch-hover-overlay: var(--svelte-ui-hover-overlay);
472
+ /* Radio */
473
+ --svelte-ui-radio-size: 16px;
474
+ --svelte-ui-radio-size-sm: 14px;
475
+ --svelte-ui-radio-size-lg: 20px;
476
+ --svelte-ui-radio-dot-size: 8px;
477
+ --svelte-ui-radio-dot-size-sm: 7px;
478
+ --svelte-ui-radio-dot-size-lg: 10px;
479
+ --svelte-ui-radio-border-radius: var(--svelte-ui-border-radius-rounded);
480
+ --svelte-ui-radio-border-width: 2px;
481
+ --svelte-ui-radio-min-height: 1.8em;
482
+ --svelte-ui-radio-min-height-sm: 1.6em;
483
+ --svelte-ui-radio-min-height-lg: 2.2em;
484
+ --svelte-ui-radio-gap: 8px;
485
+ --svelte-ui-radio-line-height: 1.2em;
486
+ /* CheckboxGroup */
487
+ --svelte-ui-checkbox-group-gap: 8px 24px;
488
+ --svelte-ui-checkbox-group-min-option-width: auto;
489
+ /* RadioGroup */
490
+ --svelte-ui-radio-group-gap: 8px 24px;
491
+ --svelte-ui-radio-group-min-option-width: auto;
492
+ --svelte-ui-radio-disabled-opacity: var(--svelte-ui-disabled-opacity);
493
+ --svelte-ui-radio-border-color: var(--svelte-ui-border-color);
494
+ --svelte-ui-radio-bg-checked: var(--svelte-ui-radio-checked-color);
495
+ --svelte-ui-radio-hover-color: var(--svelte-ui-primary-color);
496
+ --svelte-ui-radio-checked-color: var(--svelte-ui-primary-color);
497
+ /* Slider */
498
+ --svelte-ui-slider-track-height: 4px;
499
+ --svelte-ui-slider-track-border-radius: var(--svelte-ui-border-radius-rounded);
500
+ --svelte-ui-slider-track-background: var(--svelte-ui-border-weak-color);
501
+ --svelte-ui-slider-thumb-width: 18px;
502
+ --svelte-ui-slider-thumb-height: 18px;
503
+ --svelte-ui-slider-thumb-width-mobile: 24px;
504
+ --svelte-ui-slider-thumb-height-mobile: 24px;
505
+ --svelte-ui-slider-thumb-border-radius: var(--svelte-ui-border-radius-rounded);
506
+ --svelte-ui-slider-thumb-background: var(--svelte-ui-primary-color);
507
+ --svelte-ui-slider-thumb-border: none;
508
+ --svelte-ui-slider-thumb-shadow: none;
509
+ /* ColorPicker */
510
+ --svelte-ui-colorpicker-trigger-size: 28px;
511
+ --svelte-ui-colorpicker-text-padding-left: 40px;
512
+ --svelte-ui-colorpicker-trigger-border-radius: calc(var(--svelte-ui-border-radius) - 1px);
513
+ --svelte-ui-colorpicker-trigger-border-style: dashed;
514
+ --svelte-ui-colorpicker-trigger-border-width: 1px;
515
+ --svelte-ui-colorpicker-trigger-offset: 4px;
516
+ --svelte-ui-colorpicker-border-color: var(--svelte-ui-border-weak-color);
517
+ --svelte-ui-colorpicker-trigger-border-color: var(--svelte-ui-border-color);
518
+ --svelte-ui-colorpicker-bg: var(--svelte-ui-form-bg);
519
+ --svelte-ui-colorpicker-placeholder-color: var(--svelte-ui-text-placeholder-color);
520
+ /* Combobox */
521
+ --svelte-ui-combobox-min-width: 120px;
522
+ --svelte-ui-combobox-max-width: 400px;
523
+ --svelte-ui-combobox-options-max-height: 200px;
524
+ --svelte-ui-combobox-option-padding: 8px 12px;
525
+ --svelte-ui-combobox-dropdown-icon-size: 18px;
526
+ --svelte-ui-combobox-dropdown-icon-right: 8px;
527
+ --svelte-ui-combobox-border-radius: var(--svelte-ui-form-border-radius);
528
+ --svelte-ui-combobox-border-radius-rounded: var(--svelte-ui-form-border-radius-rounded);
529
+ --svelte-ui-combobox-border-color: var(--svelte-ui-border-weak-color);
530
+ --svelte-ui-combobox-bg: var(--svelte-ui-surface-color);
531
+ --svelte-ui-combobox-dropdown-icon-color: var(--svelte-ui-dropdown-icon-color);
532
+ --svelte-ui-combobox-option-hover-bg: var(--svelte-ui-hover-overlay);
533
+ --svelte-ui-combobox-option-selected-bg: var(--svelte-ui-select-overlay);
534
+ --svelte-ui-combobox-no-options-color: var(--svelte-ui-text-subtle-color);
535
+ /* FileUploader */
536
+ --svelte-ui-file-uploader-border-width: 1px;
537
+ --svelte-ui-file-uploader-border-style: dashed;
538
+ --svelte-ui-file-uploader-height: auto;
539
+ --svelte-ui-file-uploader-bg: var(--svelte-ui-form-bg);
540
+ --svelte-ui-file-uploader-border-color: var(--svelte-ui-border-color);
541
+ --svelte-ui-file-uploader-hover-bg: var(--svelte-ui-hover-overlay);
542
+ --svelte-ui-file-uploader-hover-border-color: var(--svelte-ui-primary-color);
543
+ --svelte-ui-file-uploader-hover-color: var(--svelte-ui-primary-color);
544
+ --svelte-ui-file-uploader-item-bg: var(--svelte-ui-form-bg);
545
+ /* ImageUploader */
546
+ --svelte-ui-image-uploader-border-width: 1px;
547
+ --svelte-ui-image-uploader-border-style: dashed;
548
+ --svelte-ui-image-uploader-preview-border-radius: var(--svelte-ui-border-radius);
549
+ --svelte-ui-image-uploader-preview-border-radius-rounded: var(--svelte-ui-border-radius-rounded);
550
+ --svelte-ui-image-uploader-preview-gap: 16px;
551
+ --svelte-ui-image-uploader-bg: var(--base-50-transparent);
552
+ --svelte-ui-image-uploader-border-color: var(--svelte-ui-border-color);
553
+ --svelte-ui-image-uploader-hover-bg: var(--svelte-ui-hover-overlay);
554
+ --svelte-ui-image-uploader-hover-border-color: var(--svelte-ui-primary-color);
555
+ --svelte-ui-image-uploader-hover-color: var(--svelte-ui-primary-color);
556
+ /* Pagination */
557
+ --svelte-ui-pagination-gap: 16px;
558
+ --svelte-ui-pagination-page-list-gap: 4px;
559
+ --svelte-ui-pagination-button-size: 32px;
560
+ --svelte-ui-pagination-button-border-radius: var(--svelte-ui-border-radius-rounded);
561
+ --svelte-ui-pagination-count-label-margin: 0.5em;
562
+ --svelte-ui-pagination-button-bg: transparent;
563
+ --svelte-ui-pagination-selected-button-bg: var(--svelte-ui-primary-color);
564
+ --svelte-ui-pagination-button-text-color: var(--svelte-ui-text-color);
565
+ --svelte-ui-pagination-selected-button-text-color: var(--svelte-ui-text-on-filled-color);
566
+ --svelte-ui-pagination-button-border-color: var(--svelte-ui-border-color);
567
+ --svelte-ui-pagination-selected-button-border-color: transparent;
568
+ --svelte-ui-pagination-count-text-color: var(--svelte-ui-text-color);
569
+ --svelte-ui-pagination-ellipsis-text-color: var(--svelte-ui-text-color);
570
+ --svelte-ui-pagination-button-box-shadow: none /*inset 0 0 0 1px var(--svelte-ui-border-color)*/;
571
+ --svelte-ui-pagination-selected-button-box-shadow: none;
572
+ /* DatepickerCalendar */
573
+ --svelte-ui-datepicker-today-color: var(--svelte-ui-primary-color);
574
+ --svelte-ui-datepicker-selected-color: var(--svelte-ui-primary-color);
575
+ --svelte-ui-datepicker-range-color: var(--svelte-ui-primary-color);
576
+ --svelte-ui-datepicker-current-color: var(--svelte-ui-primary-color);
577
+ --svelte-ui-datepicker-date-color: var(--svelte-ui-text-color);
578
+ --svelte-ui-datepicker-day-label-color: var(--svelte-ui-text-subtle-color);
579
+ --svelte-ui-datepicker-day-label-bg: transparent;
580
+ --svelte-ui-datepicker-day-label-border-radius: var(--svelte-ui-border-radius);
581
+ --svelte-ui-datepicker-out-of-month-text-color: var(--svelte-ui-text-subtle-color);
582
+ --svelte-ui-datepicker-out-of-range-text-color: var(--svelte-ui-text-subtle-color);
583
+ --svelte-ui-datepicker-out-of-range-bg: var(--svelte-ui-disabled-bg);
584
+ --svelte-ui-datepicker-selected-text-color: var(--svelte-ui-text-on-filled-color);
585
+ /* Popup */
586
+ --svelte-ui-popup-border-radius: var(--svelte-ui-border-radius);
587
+ --svelte-ui-popup-mobile-margin: 16px;
588
+ --svelte-ui-popup-mobile-border-radius: 12px;
589
+ --svelte-ui-popup-focus-color: var(--svelte-ui-primary-color);
590
+ /* PopupMenu */
591
+ --svelte-ui-popupmenu-focus-color: var(--svelte-ui-primary-color);
592
+ --svelte-ui-popupmenu-text-color: var(--svelte-ui-text-color);
593
+ /* Dialog */
594
+ --svelte-ui-dialog-gap: 16px;
595
+ --svelte-ui-dialog-gap-sm: 8px;
596
+ --svelte-ui-dialog-padding: 16px 24px;
597
+ --svelte-ui-dialog-body-padding: 24px;
598
+ --svelte-ui-dialog-header-height: 56px;
599
+ --svelte-ui-dialog-title-font-size: 1.4rem;
600
+ --svelte-ui-dialog-description-font-size: 0.875rem;
601
+ --svelte-ui-dialog-description-padding: 0.5rem 1rem;
602
+ --svelte-ui-dialog-footer-padding: 8px;
603
+ --svelte-ui-dialog-border: solid 1px var(--svelte-ui-border-weak-color);
604
+ --svelte-ui-dialog-border-radius: var(--svelte-ui-border-radius);
605
+ --svelte-ui-dialog-title-color: var(--svelte-ui-text-color);
606
+ --svelte-ui-dialog-description-color: var(--svelte-ui-text-subtle-color);
607
+ /* Drawer */
608
+ --svelte-ui-drawer-gap: 16px;
609
+ --svelte-ui-drawer-gap-sm: 8px;
610
+ --svelte-ui-drawer-header-padding: 16px 24px;
611
+ --svelte-ui-drawer-body-padding: 24px;
612
+ --svelte-ui-drawer-header-height: 56px;
613
+ --svelte-ui-drawer-title-font-size: 1.4rem;
614
+ --svelte-ui-drawer-description-font-size: 0.875rem;
615
+ --svelte-ui-drawer-description-padding: 0.5rem 1rem;
616
+ --svelte-ui-drawer-footer-padding: 8px;
617
+ --svelte-ui-drawer-border: 1px solid var(--svelte-ui-border-weak-color);
618
+ --svelte-ui-drawer-title-color: var(--svelte-ui-text-color);
619
+ --svelte-ui-drawer-description-color: var(--svelte-ui-text-subtle-color);
620
+ /* LoadingSpinner */
621
+ --svelte-ui-loading-spinner-color: var(--svelte-ui-primary-color);
622
+ --svelte-ui-loading-spinner-size: 32px;
623
+ /* Snackbar */
624
+ --svelte-ui-snackbar-min-width: 300px;
625
+ --svelte-ui-snackbar-max-width: 500px;
626
+ --svelte-ui-snackbar-padding: 12px 16px;
627
+ --svelte-ui-snackbar-item-space: 12px;
628
+ --svelte-ui-snackbar-border-radius: var(--svelte-ui-border-radius);
629
+ --svelte-ui-snackbar-offset: 24px;
630
+ --svelte-ui-snackbar-z-index: 9999;
631
+ --svelte-ui-snackbar-font-size: var(--svelte-ui-font-size);
632
+ --svelte-ui-snackbar-line-height: 1.4;
633
+ --svelte-ui-snackbar-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
634
+ --svelte-ui-snackbar-action-font-size: var(--svelte-ui-font-size-xs);
635
+ --svelte-ui-snackbar-action-font-weight: 600;
636
+ --svelte-ui-snackbar-action-padding: 4px 8px;
637
+ --svelte-ui-snackbar-action-border-radius: 4px;
638
+ --svelte-ui-snackbar-content-gap: 8px;
639
+ --svelte-ui-snackbar-backdrop-filter: blur(12px);
640
+ /* Snackbar default */
641
+ --svelte-ui-snackbar-default-filled-bg: color-mix(
642
+ in srgb,
643
+ var(--svelte-ui-surface-inverse-color) 85%,
644
+ transparent
645
+ );
646
+ --svelte-ui-snackbar-default-filled-text-color: var(--svelte-ui-text-inverse-color);
647
+ --svelte-ui-snackbar-default-outlined-bg: color-mix(
648
+ in srgb,
649
+ var(--svelte-ui-surface-color) 85%,
650
+ transparent
651
+ );
652
+ --svelte-ui-snackbar-default-outlined-text-color: var(--svelte-ui-text-color);
653
+ --svelte-ui-snackbar-default-outlined-border-color: var(--svelte-ui-surface-inverse-color);
654
+ /* Snackbar info */
655
+ --svelte-ui-snackbar-info-filled-bg: color-mix(
656
+ in srgb,
657
+ var(--svelte-ui-info-color) 85%,
658
+ transparent
659
+ );
660
+ --svelte-ui-snackbar-info-filled-text-color: var(--svelte-ui-text-on-filled-color);
661
+ --svelte-ui-snackbar-info-outlined-bg: color-mix(
662
+ in srgb,
663
+ var(--svelte-ui-surface-color) 85%,
664
+ transparent
665
+ );
666
+ --svelte-ui-snackbar-info-outlined-text-color: var(--svelte-ui-info-color);
667
+ --svelte-ui-snackbar-info-outlined-border-color: var(--svelte-ui-info-color);
668
+ /* Snackbar success */
669
+ --svelte-ui-snackbar-success-filled-bg: color-mix(
670
+ in srgb,
671
+ var(--svelte-ui-success-color) 85%,
672
+ transparent
673
+ );
674
+ --svelte-ui-snackbar-success-filled-text-color: var(--svelte-ui-text-on-filled-color);
675
+ --svelte-ui-snackbar-success-outlined-bg: color-mix(
676
+ in srgb,
677
+ var(--svelte-ui-surface-color) 85%,
678
+ transparent
679
+ );
680
+ --svelte-ui-snackbar-success-outlined-text-color: var(--svelte-ui-success-color);
681
+ --svelte-ui-snackbar-success-outlined-border-color: var(--svelte-ui-success-color);
682
+ /* Snackbar warning */
683
+ --svelte-ui-snackbar-warning-filled-bg: color-mix(
684
+ in srgb,
685
+ var(--svelte-ui-warning-color) 85%,
686
+ transparent
687
+ );
688
+ --svelte-ui-snackbar-warning-filled-text-color: var(--svelte-ui-text-on-filled-color);
689
+ --svelte-ui-snackbar-warning-outlined-bg: color-mix(
690
+ in srgb,
691
+ var(--svelte-ui-surface-color) 85%,
692
+ transparent
693
+ );
694
+ --svelte-ui-snackbar-warning-outlined-text-color: var(--svelte-ui-warning-color);
695
+ --svelte-ui-snackbar-warning-outlined-border-color: var(--svelte-ui-warning-color);
696
+ /* Snackbar error */
697
+ --svelte-ui-snackbar-error-filled-bg: color-mix(
698
+ in srgb,
699
+ var(--svelte-ui-error-color) 85%,
700
+ transparent
701
+ );
702
+ --svelte-ui-snackbar-error-filled-text-color: var(--svelte-ui-text-on-filled-color);
703
+ --svelte-ui-snackbar-error-outlined-bg: color-mix(
704
+ in srgb,
705
+ var(--svelte-ui-surface-color) 85%,
706
+ transparent
707
+ );
708
+ --svelte-ui-snackbar-error-outlined-text-color: var(--svelte-ui-error-color);
709
+ --svelte-ui-snackbar-error-outlined-border-color: var(--svelte-ui-error-color);
710
+ /* Skeleton */
711
+ --svelte-ui-skeleton-box-height: 240px;
712
+ --svelte-ui-skeleton-box-border-radius: var(--svelte-ui-border-radius);
713
+ --svelte-ui-skeleton-text-border-radius: var(--svelte-ui-border-radius-rounded);
714
+ --svelte-ui-skeleton-text-line-height: 1em;
715
+ --svelte-ui-skeleton-avatar-image-border-radius: var(--svelte-ui-border-radius-rounded);
716
+ --svelte-ui-skeleton-avatar-image-size: 48px;
717
+ --svelte-ui-skeleton-avatar-text-width: 160px;
718
+ --svelte-ui-skeleton-button-border-radius: var(--svelte-ui-border-radius);
719
+ --svelte-ui-skeleton-button-width: 120px;
720
+ --svelte-ui-skeleton-button-height: 36px;
721
+ --svelte-ui-skeleton-media-thumbnail-border-radius: var(--svelte-ui-border-radius);
722
+ --svelte-ui-skeleton-media-thumbnail-width: 160px;
723
+ --svelte-ui-skeleton-media-gap: 16px;
724
+ --svelte-ui-skeleton-media-vertical-gap: 8px;
725
+ --svelte-ui-skeleton-heading-width: 50%;
726
+ --svelte-ui-skeleton-heading-font-size: 2rem;
727
+ --svelte-ui-skeleton-pattern-gap: 16px;
728
+ --svelte-ui-skeleton-repeat-gap: 24px;
729
+ /* Badge */
730
+ --svelte-ui-badge-font-size: var(--svelte-ui-font-size-sm);
731
+ --svelte-ui-badge-bg: var(--svelte-ui-surface-inverse-color);
732
+ --svelte-ui-badge-text-color: var(--svelte-ui-text-inverse-color);
733
+ /* フォーカススタイル */
734
+ /* 外側フォーカススタイル(要素の外側に2px離して表示) */
735
+ --svelte-ui-focus-outline-outer: 2px solid var(--svelte-ui-focus-color);
736
+ --svelte-ui-focus-outline-offset-outer: 2px;
737
+ /* 内側フォーカススタイル(要素の内側に表示) */
738
+ --svelte-ui-focus-outline-inner: 2px solid var(--svelte-ui-focus-color);
739
+ --svelte-ui-focus-outline-offset-inner: -2px;
740
+ /* Glass Effect */
741
+ --svelte-ui-glass-blur: blur(10px);
742
+ }
743
+
744
+ /* ====================================
745
+ * ハイコントラストモード用の変数上書き
746
+ * ==================================== */
747
+ @media (prefers-contrast: more) {
748
+ :where(:root),
749
+ [data-theme=dark] {
750
+ /* ===== 基本色の上書き ===== */
751
+ --svelte-ui-text-color: CanvasText;
752
+ --svelte-ui-text-subtle-color: CanvasText;
753
+ --svelte-ui-surface-accent-color: CanvasText;
754
+ --svelte-ui-text-on-filled-color: HighlightText;
755
+ --svelte-ui-text-placeholder-color: CanvasText;
756
+ /* ===== 背景色の上書き ===== */
757
+ --svelte-ui-surface-color: Canvas;
758
+ --svelte-ui-form-bg: Canvas;
759
+ /* ===== ボーダー色・太さの上書き ===== */
760
+ --svelte-ui-border-color: CanvasText;
761
+ --svelte-ui-border-weak-color: CanvasText;
762
+ --svelte-ui-border-strong-color: CanvasText;
763
+ --svelte-ui-border-width: 2px;
764
+ --svelte-ui-border-width-thick: 3px;
765
+ /* ===== フォーカス色・太さの上書き ===== */
766
+ --svelte-ui-focus-outline-outer: 3px solid CanvasText;
767
+ --svelte-ui-focus-outline-inner: 3px solid CanvasText;
768
+ --svelte-ui-focus-outline-offset-outer: 3px;
769
+ --svelte-ui-focus-outline-offset-inner: -3px;
770
+ /* Button */
771
+ --svelte-ui-button-bg-filled: ButtonFace;
772
+ --svelte-ui-button-bg-outlined: Canvas;
773
+ --svelte-ui-button-text-filled: ButtonText;
774
+ --svelte-ui-button-text-outlined: ButtonText;
775
+ --svelte-ui-button-text-text: ButtonText;
776
+ --svelte-ui-button-border-outlined: ButtonText;
777
+ --svelte-ui-button-hover-overlay: Highlight;
778
+ /* Input */
779
+ --svelte-ui-input-bg: Canvas;
780
+ --svelte-ui-input-border-color: CanvasText;
781
+ --svelte-ui-input-icon-color: CanvasText;
782
+ /* Textare */
783
+ --svelte-ui-textarea-bg: Canvas;
784
+ --svelte-ui-textarea-border-color: CanvasText;
785
+ /* Select */
786
+ --svelte-ui-select-bg: Canvas;
787
+ --svelte-ui-select-border-color: CanvasText;
788
+ --svelte-ui-select-text-color: CanvasText;
789
+ --svelte-ui-select-dropdown-icon-color: CanvasText;
790
+ --svelte-ui-colorpicker-border-color: CanvasText;
791
+ --svelte-ui-colorpicker-trigger-border-color: CanvasText;
792
+ --svelte-ui-colorpicker-bg: Canvas;
793
+ --svelte-ui-combobox-border-color: CanvasText;
794
+ --svelte-ui-combobox-bg: Canvas;
795
+ --svelte-ui-combobox-text-color: CanvasText;
796
+ --svelte-ui-combobox-dropdown-icon-color: CanvasText;
797
+ /* Checkbox */
798
+ --svelte-ui-checkbox-border-color: CanvasText;
799
+ --svelte-ui-checkbox-border-width: var(--svelte-ui-border-width-thick);
800
+ --svelte-ui-checkbox-bg-checked: Highlight;
801
+ --svelte-ui-checkbox-text-color: CanvasText;
802
+ --svelte-ui-checkbox-icon-color: HighlightText;
803
+ /* Switch */
804
+ --svelte-ui-switch-inactive-color: CanvasText;
805
+ --svelte-ui-switch-active-color: Highlight;
806
+ /* Slider */
807
+ --svelte-ui-slider-track-background: CanvasText;
808
+ --svelte-ui-slider-thumb-background: Highlight;
809
+ --svelte-ui-slider-thumb-border: 2px solid HighlightText;
810
+ --svelte-ui-slider-thumb-focus-shadow: 0 0 0 3px Highlight;
811
+ --svelte-ui-slider-custom-thumb-background: Highlight;
812
+ --svelte-ui-slider-custom-thumb-border: 2px solid HighlightText;
813
+ --svelte-ui-slider-custom-thumb-focus-shadow: 0 0 0 3px Highlight;
814
+ --svelte-ui-slider-custom-thumb-color: HighlightText;
815
+ /* Nav: underline */
816
+ --svelte-ui-nav-item-underline-text-color: CanvasText;
817
+ --svelte-ui-nav-item-underline-selected-text-color: Highlight;
818
+ --svelte-ui-nav-item-underline-bar-color: Highlight;
819
+ /* Radio */
820
+ --svelte-ui-radio-border-color: CanvasText;
821
+ --svelte-ui-radio-border-width: var(--svelte-ui-border-width-thick);
822
+ --svelte-ui-radio-bg-checked: Highlight;
823
+ /* ===== オーバーレイ・インタラクション色の上書き ===== */
824
+ --svelte-ui-hover-overlay: Highlight;
825
+ --svelte-ui-select-overlay: Highlight;
826
+ --svelte-ui-combobox-option-hover-bg: Highlight;
827
+ --svelte-ui-combobox-option-selected-bg: Highlight;
828
+ /* ===== アイコンボタンの上書き ===== */
829
+ --svelte-ui-iconbutton-bg-filled: ButtonFace;
830
+ --svelte-ui-iconbutton-bg-outlined: Canvas;
831
+ --svelte-ui-iconbutton-text-filled: ButtonText;
832
+ --svelte-ui-iconbutton-text-outlined: ButtonText;
833
+ --svelte-ui-iconbutton-text-text: ButtonText;
834
+ --svelte-ui-iconbutton-border-outlined: ButtonText;
835
+ --svelte-ui-iconbutton-hover-overlay: Highlight;
836
+ /* ===== スケルトンの上書き ===== */
837
+ --svelte-ui-skeleton-color: CanvasText;
838
+ --svelte-ui-skeleton-shimmer-color: Highlight;
839
+ }
840
+ }
841
+ /* src/lib/assets/styles/core.scss */
842
+ /*
843
+ * Core styles required for component functionality
844
+ * These styles are automatically included with the library
845
+ */
846
+ /*===================================================================
847
+ * Box-sizing - Required for proper component sizing
848
+ *===================================================================*/
849
+ *,
850
+ *::before,
851
+ *::after {
852
+ box-sizing: border-box;
853
+ }
854
+
855
+ /*===================================================================
856
+ * Button reset - Required for consistent button styling
857
+ *===================================================================*/
858
+ button {
859
+ background: transparent;
860
+ border: none;
861
+ font-size: inherit;
862
+ font-weight: inherit;
863
+ cursor: pointer;
864
+ }
865
+
866
+ /*===================================================================
867
+ * Dialog element - Required for dialog components
868
+ *===================================================================*/
869
+ dialog {
870
+ color: inherit;
871
+ }
872
+
873
+ /*===================================================================
874
+ * Form elements - Required for proper form functionality
875
+ *===================================================================*/
876
+ /* Prevent autofill background color changes */
877
+ input:-webkit-autofill {
878
+ transition: background-color 5000s ease-in-out 0s !important;
879
+ }
880
+
881
+ /* Label normalization - Used in Input, Textarea, Checkbox, Radio */
882
+ label {
883
+ font-weight: normal;
884
+ }
885
+
886
+ /*===================================================================
887
+ * Accessibility - Required for screen readers
888
+ *===================================================================*/
889
+ /* Screen reader only class for accessibility - Used in PopupMenu */
890
+ .sr-only {
891
+ position: absolute;
892
+ width: 1px;
893
+ height: 1px;
894
+ padding: 0;
895
+ margin: -1px;
896
+ overflow: hidden;
897
+ clip: rect(0, 0, 0, 0);
898
+ white-space: nowrap;
899
+ border: 0;
900
+ }