@14ch/svelte-ui 0.0.1

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