lutra 0.1.68 → 0.1.69

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 (72) hide show
  1. package/dist/components/AspectRatio.svelte +19 -9
  2. package/dist/components/AspectRatio.svelte.d.ts +2 -1
  3. package/dist/components/Avatar.svelte +5 -8
  4. package/dist/components/Close.svelte +24 -27
  5. package/dist/components/Close.svelte.d.ts +2 -0
  6. package/dist/components/ContextTip.svelte +3 -2
  7. package/dist/components/Dialog.svelte +38 -0
  8. package/dist/components/Icon.svelte +2 -2
  9. package/dist/components/IconButton.svelte +10 -22
  10. package/dist/components/Image.svelte +2 -2
  11. package/dist/components/Indicator.svelte +2 -1
  12. package/dist/components/Inset.svelte +13 -0
  13. package/dist/components/Layout.svelte +7 -3
  14. package/dist/components/Layout.svelte.d.ts +3 -2
  15. package/dist/components/MenuDropdown.svelte +12 -2
  16. package/dist/components/MenuItem.svelte +30 -14
  17. package/dist/components/MenuItem.svelte.d.ts +6 -0
  18. package/dist/components/Modal.svelte +36 -20
  19. package/dist/components/Popover.svelte +39 -12
  20. package/dist/components/TabbedContent.svelte +1 -1
  21. package/dist/components/TabbedContentItem.svelte +14 -0
  22. package/dist/components/TabbedContentItem.svelte.d.ts +4 -0
  23. package/dist/components/Table.svelte +69 -0
  24. package/dist/components/Table.svelte.d.ts +7 -0
  25. package/dist/components/Tabs.svelte +44 -36
  26. package/dist/components/Tag.svelte +53 -13
  27. package/dist/components/Tag.svelte.d.ts +4 -0
  28. package/dist/components/Theme.svelte +121 -94
  29. package/dist/components/Theme.svelte.d.ts +7 -6
  30. package/dist/components/Toast.svelte +11 -8
  31. package/dist/components/Tooltip.svelte +17 -10
  32. package/dist/css/1-props.css +64 -51
  33. package/dist/css/2-init.css +503 -0
  34. package/dist/css/{2-base.css → 3-base.css} +42 -131
  35. package/dist/css/{3-typo.css → 4-typo.css} +3 -1
  36. package/dist/css/lutra.css +7 -6
  37. package/dist/css/themes/DefaultTheme.css +16 -4
  38. package/dist/form/Button.svelte +20 -0
  39. package/dist/form/Button.svelte.d.ts +9 -0
  40. package/dist/form/Datepicker.svelte +13 -0
  41. package/dist/form/Datepicker.svelte.d.ts +3 -0
  42. package/dist/form/FieldContent.svelte +18 -9
  43. package/dist/form/FieldError.svelte +1 -1
  44. package/dist/form/Fieldset.svelte +19 -11
  45. package/dist/form/Form.svelte +137 -63
  46. package/dist/form/Form.svelte.d.ts +21 -0
  47. package/dist/form/FormActions.svelte +21 -3
  48. package/dist/form/FormActions.svelte.d.ts +3 -0
  49. package/dist/form/FormSection.svelte +22 -20
  50. package/dist/form/ImageUpload.svelte +50 -30
  51. package/dist/form/ImageUpload.svelte.d.ts +14 -0
  52. package/dist/form/Input.svelte +62 -30
  53. package/dist/form/Input.svelte.d.ts +0 -1
  54. package/dist/form/InputLength.svelte +5 -5
  55. package/dist/form/Label.svelte +6 -6
  56. package/dist/form/LogoUpload.svelte +24 -10
  57. package/dist/form/Select.svelte +23 -10
  58. package/dist/form/Select.svelte.d.ts +6 -6
  59. package/dist/form/Textarea.svelte +11 -1
  60. package/dist/form/client.svelte.js +0 -2
  61. package/dist/state/Persisted.svelte.d.ts +6 -0
  62. package/dist/state/Persisted.svelte.js +29 -0
  63. package/dist/state/theme.svelte.d.ts +7 -0
  64. package/dist/state/theme.svelte.js +14 -0
  65. package/dist/types.d.ts +6 -23
  66. package/dist/types.js +0 -17
  67. package/dist/util/color.js +2 -2
  68. package/package.json +5 -4
  69. package/dist/config.d.ts +0 -30
  70. package/dist/config.js +0 -18
  71. /package/dist/css/{4-layout.css → 5-layout.css} +0 -0
  72. /package/dist/css/{5-media.css → 6-media.css} +0 -0
@@ -0,0 +1,503 @@
1
+ :root {
2
+ /* Spacing Scale */
3
+ --base-size: 16px;
4
+
5
+ --space-base: 1em;
6
+ --space-025: calc(var(--space-base) * 0.25);
7
+ --space-050: calc(var(--space-base) * 0.5);
8
+ --space-075: calc(var(--space-base) * 0.75);
9
+ --space-100: calc(var(--space-base) * 1);
10
+ --space-125: calc(var(--space-base) * 1.25);
11
+ --space-150: calc(var(--space-base) * 1.5);
12
+ --space-175: calc(var(--space-base) * 1.75);
13
+ --space-200: calc(var(--space-base) * 2);
14
+ --space-225: calc(var(--space-base) * 2.25);
15
+ --space-250: calc(var(--space-base) * 2.5);
16
+ --space-300: calc(var(--space-base) * 3);
17
+ --space-350: calc(var(--space-base) * 3.5);
18
+ --space-400: calc(var(--space-base) * 4);
19
+ --space-450: calc(var(--space-base) * 4.5);
20
+ --space-500: calc(var(--space-base) * 5);
21
+ --space-550: calc(var(--space-base) * 5.5);
22
+ --space-600: calc(var(--space-base) * 6);
23
+ --space-700: calc(var(--space-base) * 7);
24
+ --space-800: calc(var(--space-base) * 8);
25
+ --space-900: calc(var(--space-base) * 9);
26
+ --space-1000: calc(var(--space-base) * 10);
27
+
28
+ --space-xxs: var(--space-025);
29
+ --space-xs: var(--space-050);
30
+ --space-sm: var(--space-075);
31
+ --space-md: var(--space-100);
32
+ --space-lg: var(--space-150);
33
+ --space-xl: var(--space-200);
34
+ --space-xxl: var(--space-300);
35
+ --space-xxxl: var(--space-400);
36
+ --space-xxxxl: var(--space-500);
37
+
38
+ /* Fonts */
39
+ --font-family: "sans-serif";
40
+ --font-family-heading: "sans-serif";
41
+ --font-family-mono: "monospace";
42
+ --font-scale: 1.175;
43
+ --font-size-base: 1em;
44
+
45
+ /* font size */
46
+ --font-size-xs: calc(var(--font-size-base) * pow(var(--font-scale), -2));
47
+ --font-size-sm: calc(var(--font-size-base) * pow(var(--font-scale), -1));
48
+ --font-size-p: var(--font-size-base);
49
+ --font-size-h6: var(--font-size-base);
50
+ --font-size-h5: calc(var(--font-size-base) * pow(var(--font-scale), 1));
51
+ --font-size-h4: calc(var(--font-size-base) * pow(var(--font-scale), 2));
52
+ --font-size-h3: calc(var(--font-size-base) * pow(var(--font-scale), 3));
53
+ --font-size-h2: calc(var(--font-size-base) * pow(var(--font-scale), 4));
54
+ --font-size-h1: calc(var(--font-size-base) * pow(var(--font-scale), 5));
55
+ --font-size-hero: calc(var(--font-size-base) * pow(var(--font-scale), 6));
56
+ --font-size-jumbo: calc(var(--font-size-base) * pow(var(--font-scale), 7));
57
+
58
+ /* font weight */
59
+ --font-weight-thin: 300;
60
+ --font-weight-light: 400;
61
+ --font-weight-normal: 500;
62
+ --font-weight-medium: 600;
63
+ --font-weight-semibold: 700;
64
+ --font-weight-bold: 800;
65
+ --font-weight-black: 900;
66
+
67
+ --font-weight-p: 400;
68
+ --font-weight-h6: 500;
69
+ --font-weight-h5: 600;
70
+ --font-weight-h4: 600;
71
+ --font-weight-h3: 600;
72
+ --font-weight-h2: 700;
73
+ --font-weight-h1: 800;
74
+ --font-weight-hero: 800;
75
+
76
+ /* line height */
77
+ --font-line-height: 1.5;
78
+ --font-line-height-tight: 1.2;
79
+ --font-line-height-heading: 1.5;
80
+ --font-line-height-heading-tight: 1.2;
81
+ --font-line-height-mono: 1.5;
82
+
83
+ /* text color */
84
+ --text-color-p: #333333;
85
+ --text-color-p-subtle: #666666;
86
+ --text-color-p-subtler: #999999;
87
+ --text-color-p-subtlest: #cccccc;
88
+
89
+ --text-color-heading: #333333;
90
+ --text-color-h6: var(--text-color-heading);
91
+ --text-color-h5: var(--text-color-heading);
92
+ --text-color-h4: var(--text-color-heading);
93
+ --text-color-h3: var(--text-color-heading);
94
+ --text-color-h2: var(--text-color-heading);
95
+ --text-color-h1: var(--text-color-heading);
96
+ --text-color-hero: var(--text-color-heading);
97
+
98
+ /* links */
99
+ --link-text-decoration: none;
100
+ --link-text-decoration-hover: underline;
101
+
102
+ --link-color: #2563eb;
103
+ --link-color-visited: var(--link-color);
104
+ --link-color-active: var(--link-color);
105
+ --link-color-hover: #1d4ed8;
106
+ --link-color-disabled: #cccccc;
107
+ --link-color-loading: #7c3aed;
108
+
109
+ --link-icon-size: 24px;
110
+ --link-icon-order: 1;
111
+
112
+ /* Borders */
113
+ --border-radius-scale: 1.2;
114
+ --border-radius-base: calc(var(--border-radius-scale) * 0.25em);
115
+ --border-radius-sm: calc(var(--border-radius-scale) * 0.5em);
116
+ --border-radius-lg: calc(var(--border-radius-scale) * 2em);
117
+ --border-size-thin: 1px;
118
+ --border-size-thick: 2px;
119
+ --border-style: solid;
120
+
121
+ --border-color: #d1d5db;
122
+ --border-color-subtle: #e2e8f0;
123
+ --border-color-strong: #111111;
124
+ --border-color-stronger: #111111;
125
+
126
+ --border-color-active: #2563eb;
127
+ --border-color-inactive: #d1d5db;
128
+ --border-color-disabled: #d1d5db;
129
+ --border-color-focus: #2563eb;
130
+ --border-color-invalid: #dc2626;
131
+ --border-color-valid: #16a34a;
132
+ --border-color-success: #16a34a;
133
+ --border-color-danger: #dc2626;
134
+ --border-color-warn: #ca8a04;
135
+ --border-color-info: #2563eb;
136
+ --border-color-selected: #2563eb;
137
+ --border-color-interest: #7c3aed;
138
+ --border-color-loading: #7c3aed;
139
+
140
+ /* Forms */
141
+ --form-background: #ffffff;
142
+ --form-background-actions: #ffffff;
143
+ --form-border-radius: var(--border-radius-base);
144
+ --form-border-color: var(--border-color);
145
+ --form-border-size: var(--border-size-thin);
146
+ --form-border-style: var(--border-style);
147
+
148
+ --form-field-gap: var(--space-xl);
149
+ --form-label-gap: var(--space-xs);
150
+ --form-section-gap: var(--space-xl);
151
+ --form-title-gap: var(--space-md);
152
+ --form-title-padding-block-end: var(--space-xs);
153
+ --form-field-inside-gap: var(--space-xs);
154
+ --form-padding-block: var(--space-lg);
155
+ --form-padding-inline: var(--space-xl);
156
+
157
+ /* Fields */
158
+ --field-background: #ffffff;
159
+
160
+ --field-background-active: #2563eb;
161
+ --field-background-inactive: #f3f4f6;
162
+ --field-background-disabled: #f3f4f6;
163
+ --field-background-focus: #2563eb;
164
+ --field-background-invalid: #fef2f2;
165
+ --field-background-valid: #dcfce7;
166
+ --field-background-success: #dcfce7;
167
+ --field-background-danger: #fef2f2;
168
+ --field-background-warn: #fefce8;
169
+ --field-background-info: #eff6ff;
170
+ --field-background-selected: #eff6ff;
171
+ --field-background-interest: #f0f9ff;
172
+ --field-background-loading: #f0f9ff;
173
+
174
+ --field-border-color: var(--border-color);
175
+ --field-border-color-active: #2563eb;
176
+ --field-border-color-inactive: #d1d5db;
177
+ --field-border-color-disabled: #d1d5db;
178
+ --field-border-color-focus: #2563eb;
179
+ --field-border-color-invalid: #dc2626;
180
+ --field-border-color-valid: #16a34a;
181
+ --field-border-color-success: #16a34a;
182
+ --field-border-color-danger: #dc2626;
183
+ --field-border-color-warn: #ca8a04;
184
+ --field-border-color-info: #2563eb;
185
+ --field-border-color-selected: #2563eb;
186
+ --field-border-color-interest: #7c3aed;
187
+ --field-border-color-loading: #7c3aed;
188
+
189
+ --field-border-size: var(--border-size-thin);
190
+ --field-border-style: var(--border-style);
191
+ --field-border-radius: var(--border-radius-base);
192
+
193
+ --field-color: var(--text-color-p);
194
+ --field-color-active: #2563eb;
195
+ --field-color-inactive: #666666;
196
+ --field-color-disabled: #cccccc;
197
+ --field-color-focus: #2563eb;
198
+ --field-color-invalid: #dc2626;
199
+ --field-color-valid: #16a34a;
200
+ --field-color-success: #16a34a;
201
+ --field-color-danger: #dc2626;
202
+ --field-color-warn: #ca8a04;
203
+ --field-color-info: #2563eb;
204
+ --field-color-selected: #2563eb;
205
+ --field-color-interest: #7c3aed;
206
+ --field-color-loading: #7c3aed;
207
+
208
+ --field-label-color: #111111;
209
+ --field-label-font-size: 1em;
210
+ --field-label-font-weight: 600;
211
+
212
+ --field-placeholder-color: #999999;
213
+ --field-padding-inline: 8px;
214
+ --field-padding-block: 8px;
215
+
216
+ --field-icon-size: 24px;
217
+ --field-icon-order: 1;
218
+
219
+ /* Shorthand compound: field */
220
+ --field-padding: var(--field-padding-block) var(--field-padding-inline);
221
+ --field-border: var(--field-border-size) var(--field-border-style) var(--field-border-color);
222
+
223
+ /* Checkbox and Radio */
224
+ --checkbox-size: 18px;
225
+ --checkbox-border-radius: 4px;
226
+ --checkbox-background: #ffffff;
227
+ --checkbox-background-checked: #2563eb;
228
+ --checkbox-border-color: #d1d5db;
229
+ --checkbox-border-color-checked: #2563eb;
230
+ --checkbox-indicator-color: #ffffff;
231
+
232
+ /* Button Component */
233
+ --button-base-color: #ffffff;
234
+ --button-base-color-hover: #ffffff;
235
+
236
+ /* primary */
237
+ --button-submit-color: #ffffff;
238
+ --button-submit-color-hover: #ffffff;
239
+ --button-submit-color-disabled: #cccccc;
240
+ --button-submit-color-focus: #2563eb;
241
+ --button-submit-color-loading: #7c3aed;
242
+
243
+ --button-submit-background: #2563eb;
244
+ --button-submit-background-hover: #1d4ed8;
245
+ --button-submit-background-disabled: #f3f4f6;
246
+ --button-submit-background-focus: #2563eb;
247
+ --button-submit-background-loading: #f0f9ff;
248
+
249
+ --button-submit-border-color: #2563eb;
250
+ --button-submit-border-color-hover: #1d4ed8;
251
+ --button-submit-border-color-disabled: #d1d5db;
252
+ --button-submit-border-color-focus: #2563eb;
253
+ --button-submit-border-color-loading: #7c3aed;
254
+
255
+ /* action */
256
+ --button-action-color: #ffffff;
257
+ --button-action-color-hover: #ffffff;
258
+ --button-action-color-disabled: #ffffff;
259
+ --button-action-color-focus: #ffffff;
260
+ --button-action-color-loading: #ffffff;
261
+
262
+ --button-action-background: #111111;
263
+ --button-action-background-hover: #111111;
264
+ --button-action-background-disabled: #f3f4f6;
265
+ --button-action-background-focus: #2563eb;
266
+ --button-action-background-loading: #f0f9ff;
267
+
268
+ --button-action-border-color: #111111;
269
+ --button-action-border-color-hover: #111111;
270
+ --button-action-border-color-disabled: #111111;
271
+ --button-action-border-color-focus: #2563eb;
272
+ --button-action-border-color-loading: #7c3aed;
273
+
274
+ /* danger */
275
+ --button-danger-color: #dc2626;
276
+ --button-danger-color-hover: #dc2626;
277
+ --button-danger-color-disabled: #dc2626;
278
+ --button-danger-color-focus: #dc2626;
279
+ --button-danger-color-loading: #dc2626;
280
+
281
+ --button-danger-background: #dc2626;
282
+ --button-danger-background-hover: #dc2626;
283
+ --button-danger-background-disabled: #f3f4f6;
284
+ --button-danger-background-focus: #2563eb;
285
+ --button-danger-background-loading: #f0f9ff;
286
+
287
+ --button-danger-border-color: #dc2626;
288
+ --button-danger-border-color-hover: #dc2626;
289
+ --button-danger-border-color-disabled: #d1d5db;
290
+ --button-danger-border-color-focus: #2563eb;
291
+ --button-danger-border-color-loading: #7c3aed;
292
+
293
+ /* success */
294
+ --button-success-color: #16a34a;
295
+ --button-success-color-hover: #16a34a;
296
+ --button-success-color-disabled: #16a34a;
297
+ --button-success-color-focus: #16a34a;
298
+ --button-success-color-loading: #16a34a;
299
+
300
+ --button-success-background: #16a34a;
301
+ --button-success-background-hover: #16a34a;
302
+ --button-success-background-disabled: #f3f4f6;
303
+ --button-success-background-focus: #2563eb;
304
+ --button-success-background-loading: #f0f9ff;
305
+
306
+ --button-success-border-color: #16a34a;
307
+ --button-success-border-color-hover: #16a34a;
308
+ --button-success-border-color-disabled: #d1d5db;
309
+ --button-success-border-color-focus: #2563eb;
310
+ --button-success-border-color-loading: #7c3aed;
311
+
312
+ --button-border-size: var(--border-size-thin);
313
+ --button-border-style: var(--border-style);
314
+ --button-border-radius: var(--border-radius-base);
315
+ --button-border-color: var(--border-color);
316
+
317
+ --button-padding-inline: 16px;
318
+ --button-padding-block: 8px;
319
+
320
+ --button-font-weight: 500;
321
+
322
+ --button-icon-size: 1em;
323
+ --button-icon-order: 1;
324
+
325
+ /* Shorthand compound: button */
326
+ --button-padding: var(--button-padding-block) var(--button-padding-inline);
327
+ --button-border: var(--button-border-size) var(--button-border-style) var(--button-submit-border-color);
328
+
329
+ /* Shadows */
330
+ --shadow-color: rgba(0, 0, 0, 0.1);
331
+ --shadow-base: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);
332
+ --shadow-sm: 0 0.0625rem 0.125rem 0 var(--shadow-color);
333
+ --shadow-md: 0 0.125rem 0.375rem -0.0625rem var(--shadow-color), 0 0.0625rem 0.1875rem -0.0625rem var(--shadow-color);
334
+ --shadow-lg: 0 0.375rem 1rem -0.25rem var(--shadow-color), 0 0.125rem 0.375rem -0.125rem var(--shadow-color);
335
+ --shadow-xl: 0 0.75rem 1.75rem -0.375rem var(--shadow-color), 0 0.25rem 0.75rem -0.25rem var(--shadow-color);
336
+ --shadow-xxl: 0 1.25rem 3rem -0.5rem var(--shadow-color), 0 0.5rem 1.25rem -0.375rem var(--shadow-color);
337
+
338
+ /* Code */
339
+ --code-background: #f8fafc;
340
+ --code-color: #1a1a1a;
341
+ --code-border-color: #d1d5db;
342
+ --code-border-size: 0;
343
+ --code-border-style: solid;
344
+ --code-border-radius: 8px;
345
+
346
+ --code-padding-inline: 16px;
347
+ --code-padding-block: 8px;
348
+
349
+ /* Backgrounds */
350
+ --background-body: #ffffff;
351
+ --background-main: #ffffff;
352
+ --background-main-subtle: #f8fafc;
353
+
354
+ --background-active: #2563eb;
355
+ --background-inactive: #f3f4f6;
356
+ --background-disabled: #f3f4f6;
357
+ --background-focus: #2563eb;
358
+ --background-invalid: #fef2f2;
359
+ --background-valid: #dcfce7;
360
+ --background-success: #dcfce7;
361
+ --background-danger: #fef2f2;
362
+ --background-warn: #fefce8;
363
+ --background-info: #eff6ff;
364
+ --background-selected: #eff6ff;
365
+ --background-interest: #f0f9ff;
366
+ --background-loading: #f0f9ff;
367
+
368
+ /* Status Colors */
369
+ --status-default-background: #111111;
370
+ --status-default-color: #111111;
371
+ --status-ok-background: #16a34a;
372
+ --status-ok-color: #16a34a;
373
+ --status-alert-background: #dc2626;
374
+ --status-alert-color: #dc2626;
375
+ --status-warn-background: #ca8a04;
376
+ --status-warn-color: #ca8a04;
377
+ --status-info-background: #2563eb;
378
+ --status-info-color: #2563eb;
379
+ --status-task-background: #7c3aed;
380
+ --status-task-color: #7c3aed;
381
+
382
+ /* Focus */
383
+ --focus-ring-size: 2px;
384
+ --focus-ring-color: #2563eb;
385
+ --focus-ring-color-invalid: #dc2626;
386
+ --focus-ring-offset: 0px;
387
+ --focus-ring: var(--focus-ring-size) solid var(--focus-ring-color);
388
+
389
+ /* Transitions */
390
+ --transition-duration-fast: 0.15s;
391
+ --transition-duration-base: 0.3s;
392
+ --transition-duration-slow: 0.5s;
393
+ --transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
394
+
395
+ /* Tooltips */
396
+ --tooltip-background: var(--surface-background);
397
+ --tooltip-color: var(--text-color-p);
398
+ --tooltip-border: var(--surface-border);
399
+ --tooltip-border-radius: var(--surface-border-radius);
400
+ --tooltip-shadow: var(--surface-shadow);
401
+
402
+ /* Toast */
403
+ --toast-background: #ffffff;
404
+ --toast-border: 1px solid #d1d5db;
405
+ --toast-border-radius: 8px;
406
+ --toast-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
407
+ --toast-padding-inline: 1rem;
408
+ --toast-padding-block: 0.75rem;
409
+ --toast-gap: 0.75rem;
410
+ --toast-min-width: 20rem;
411
+ --toast-max-width: 28rem;
412
+ --toast-title-color: #1a1a1a;
413
+ --toast-title-font-weight: 600;
414
+ --toast-text-color: #666666;
415
+ --toast-icon-size: 1.25rem;
416
+ --toast-offset: 1rem;
417
+
418
+ /* Menu */
419
+ --menu-background-color: #ffffff;
420
+ --menu-background-color-hover: #dde8f2;
421
+ --menu-text-color: #1a1a1a;
422
+ --menu-text-color-subtle: #666666;
423
+ --menu-border-color: #cccccc;
424
+ --menu-border-size: 1px;
425
+ --menu-border-style: solid;
426
+ --menu-border-radius: 8px;
427
+
428
+ /* Table */
429
+ --table-border-color: #d1d5db;
430
+ --table-border-size: 1px;
431
+ --table-border-style: solid;
432
+ --table-border-radius: 8px;
433
+
434
+ --table-cell-padding-inline: 12px;
435
+ --table-cell-padding-block: 8px;
436
+
437
+ --table-header-background: #f8fafc;
438
+ --table-header-color: #1a1a1a;
439
+ --table-header-font-weight: 600;
440
+
441
+ --table-row-background: transparent;
442
+ --table-row-background-even: #f8fafc;
443
+ --table-row-background-hover: #f1f5f9;
444
+
445
+ --table-cell-color: #1a1a1a;
446
+
447
+ /* Shorthand compound: table */
448
+ --table-border: var(--table-border-size) var(--table-border-style) var(--table-border-color);
449
+ --table-cell-padding: var(--table-cell-padding-block) var(--table-cell-padding-inline);
450
+
451
+ /* Modal */
452
+ --modal-background: #ffffff;
453
+ --modal-border-color: #d1d5db;
454
+ --modal-border-size: 1px;
455
+ --modal-border-style: solid;
456
+ --modal-border-radius: 8px;
457
+ --modal-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
458
+
459
+ --modal-padding-inline: 24px;
460
+ --modal-padding-block: 24px;
461
+ --modal-width: fit-content;
462
+ --modal-min-width: auto;
463
+ --modal-max-width: 40rem;
464
+ --modal-max-height: 80svh;
465
+ --modal-gap: 0px;
466
+
467
+ --modal-actions-background: #f8fafc;
468
+ --modal-actions-border-color: #d1d5db;
469
+ --modal-actions-padding-inline: 16px;
470
+ --modal-actions-padding-block: 16px;
471
+
472
+ /* Shorthand compound: modal */
473
+ --modal-border: var(--modal-border-size) var(--modal-border-style) var(--modal-border-color);
474
+ --modal-padding: var(--modal-padding-block) var(--modal-padding-inline);
475
+ --modal-actions-padding: var(--modal-actions-padding-block) var(--modal-actions-padding-inline);
476
+
477
+ /* Shared Surface System */
478
+ --surface-background: #ffffff;
479
+ --surface-border: 1px solid #d1d5db;
480
+ --surface-border-radius: 8px;
481
+ --surface-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
482
+
483
+ /* Popover Component */
484
+ --popover-background: #ffffff;
485
+ --popover-border: 1px solid #d1d5db;
486
+ --popover-border-radius: 8px;
487
+ --popover-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
488
+ --popover-width: max-content;
489
+ --popover-max-width: calc(100vw - 2rem);
490
+ --popover-max-height: calc(100vh - 2rem);
491
+
492
+ /* Overlay System */
493
+ --overlay-z-index: 1000;
494
+ --overlay-gap: 0.75rem;
495
+ --overlay-offset: 1rem;
496
+
497
+ /* Scrim/Backdrop */
498
+ --scrim-background: rgba(0, 0, 0, 0.5);
499
+ --scrim-backdrop-filter: blur(2px);
500
+
501
+ /* Misc */
502
+ --mix-target: light-dark(black, white);
503
+ }
@@ -1,130 +1,6 @@
1
1
  /**
2
2
  * Base DOM setup
3
- * Initializes shorthand variables and foundational sizing
4
3
  */
5
- :root {
6
- /* Base size for all sizing */
7
- --base-size: 16px;
8
-
9
- /* Spacing scale */
10
- --space-base: 1em;
11
- --space-025: calc(var(--space-base) * 0.25);
12
- --space-050: calc(var(--space-base) * 0.5);
13
- --space-075: calc(var(--space-base) * 0.75);
14
- --space-100: calc(var(--space-base) * 1);
15
- --space-125: calc(var(--space-base) * 1.25);
16
- --space-150: calc(var(--space-base) * 1.5);
17
- --space-175: calc(var(--space-base) * 1.75);
18
- --space-200: calc(var(--space-base) * 2);
19
- --space-225: calc(var(--space-base) * 2.25);
20
- --space-250: calc(var(--space-base) * 2.5);
21
- --space-300: calc(var(--space-base) * 3);
22
- --space-350: calc(var(--space-base) * 3.5);
23
- --space-400: calc(var(--space-base) * 4);
24
- --space-450: calc(var(--space-base) * 4.5);
25
- --space-500: calc(var(--space-base) * 5);
26
- --space-550: calc(var(--space-base) * 5.5);
27
- --space-600: calc(var(--space-base) * 6);
28
- --space-700: calc(var(--space-base) * 7);
29
- --space-800: calc(var(--space-base) * 8);
30
- --space-900: calc(var(--space-base) * 9);
31
- --space-1000: calc(var(--space-base) * 10);
32
-
33
- --space-xxs: var(--space-025);
34
- --space-xs: var(--space-050);
35
- --space-sm: var(--space-075);
36
- --space-md: var(--space-100);
37
- --space-lg: var(--space-150);
38
- --space-xl: var(--space-200);
39
- --space-xxl: var(--space-300);
40
- --space-xxxl: var(--space-400);
41
-
42
- --font-scale: 1.175;
43
- --font-size-base: 1em;
44
-
45
- --font-size-xs: calc(var(--font-size-base) * pow(var(--font-scale), -2));
46
- --font-size-sm: calc(var(--font-size-base) * pow(var(--font-scale), -1));
47
- --font-size-p: var(--font-size-base);
48
- --font-size-h6: var(--font-size-base);
49
- --font-size-h5: calc(var(--font-size-base) * pow(var(--font-scale), 1));
50
- --font-size-h4: calc(var(--font-size-base) * pow(var(--font-scale), 2));
51
- --font-size-h3: calc(var(--font-size-base) * pow(var(--font-scale), 3));
52
- --font-size-h2: calc(var(--font-size-base) * pow(var(--font-scale), 4));
53
- --font-size-h1: calc(var(--font-size-base) * pow(var(--font-scale), 5));
54
- --font-size-hero: calc(var(--font-size-base) * pow(var(--font-scale), 6));
55
- --font-size-jumbo: calc(var(--font-size-base) * pow(var(--font-scale), 7));
56
-
57
- --text-color-h1: var(--text-color-heading);
58
- --text-color-h2: var(--text-color-heading);
59
- --text-color-h3: var(--text-color-heading);
60
- --text-color-h4: var(--text-color-heading);
61
- --text-color-h5: var(--text-color-heading);
62
- --text-color-h6: var(--text-color-heading);
63
- --field-color: var(--text-color-p);
64
-
65
- --border-radius-scale: 1.2;
66
- --border-size-thin: 1px;
67
- --border-size-thick: 2px;
68
-
69
- --border-radius-base: calc(var(--border-radius-scale) * 0.25em);
70
- --border-radius-sm: calc(var(--border-radius-scale) * 0.5em);
71
- --border-radius-lg: calc(var(--border-radius-scale) * 2em);
72
-
73
- --form-border-radius: var(--border-radius-base);
74
- --form-border-size: var(--border-size-thin);
75
- --form-border-style: var(--border-style);
76
- --form-border-color: var(--border-color);
77
-
78
- --field-border-radius: var(--border-radius-base);
79
- --field-border-size: var(--border-size-thin);
80
- --field-border-style: var(--border-style);
81
- --field-border-color: var(--border-color);
82
-
83
- --button-border-radius: var(--border-radius-base);
84
- --button-border-size: var(--border-size-thin);
85
- --button-border-style: var(--border-style);
86
- --button-border-color: var(--border-color);
87
-
88
- --link-color-visited: var(--link-color);
89
- --link-color-active: var(--link-color);
90
-
91
- /* Shorthand compound variables */
92
- --field-padding: var(--field-padding-block) var(--field-padding-inline);
93
- --field-border: var(--field-border-size) var(--field-border-style) var(--field-border-color);
94
-
95
- --button-padding: var(--button-padding-block) var(--button-padding-inline);
96
- --button-border: var(--button-border-size) var(--button-border-style) var(--button-submit-border-color);
97
- --button-icon-size: 1em;
98
-
99
- /* Focus ring compound */
100
- --focus-ring: var(--focus-ring-size) solid var(--focus-ring-color);
101
-
102
- /* Shadows */
103
- --shadow-base: var(--shadow-base);
104
- --shadow-sm: var(--shadow-sm);
105
- --shadow-md: var(--shadow-md);
106
- --shadow-lg: var(--shadow-lg);
107
- --shadow-xl: var(--shadow-xl);
108
- --shadow-2xl: var(--shadow-2xl);
109
-
110
- --tooltip-background: var(--surface-background);
111
- --tooltip-color: var(--text-color-p);
112
- --tooltip-border: var(--surface-border);
113
- --tooltip-border-radius: var(--surface-border-radius);
114
- --tooltip-shadow: var(--surface-shadow);
115
-
116
- /* Table compound variables */
117
- --table-border: var(--table-border-size) var(--table-border-style) var(--table-border-color);
118
- --table-cell-padding: var(--table-cell-padding-block) var(--table-cell-padding-inline);
119
-
120
- /* Modal compound variables */
121
- --modal-border: var(--modal-border-size) var(--modal-border-style) var(--modal-border-color);
122
- --modal-padding: var(--modal-padding-block) var(--modal-padding-inline);
123
- --modal-actions-padding: var(--modal-actions-padding-block) var(--modal-actions-padding-inline);
124
-
125
- --mix-target: light-dark(black, white);
126
- }
127
-
128
4
  body {
129
5
  text-rendering: optimizeLegibility;
130
6
  -webkit-font-smoothing: antialiased;
@@ -141,16 +17,53 @@ body {
141
17
  width: 100%;
142
18
  min-height: 0;
143
19
  scrollbar-gutter: stable;
20
+ -webkit-text-size-adjust: 100%;
21
+ -ms-overflow-style: -ms-autohiding-scrollbar;
22
+ box-sizing: border-box;
23
+ border-collapse: collapse;
24
+ }
25
+
26
+ html {
27
+ color-scheme: light dark;
28
+ &:not(.light) {
29
+ @media (prefers-color-scheme: dark) {
30
+ color-scheme: only dark;
31
+ }
32
+ }
33
+ }
34
+
35
+ html.light {
36
+ color-scheme: only light;
37
+ }
38
+
39
+ html.dark {
40
+ color-scheme: only dark;
41
+ }
42
+
43
+ html,
44
+ body {
45
+ height: 100%;
46
+ width: 100%;
144
47
  }
145
48
 
146
- body * {
49
+ * {
147
50
  margin: 0;
148
51
  padding: 0;
149
52
  box-sizing: border-box;
53
+ scrollbar-width: thin;
54
+ scrollbar-color: var(--scrollbar-color) transparent;
150
55
  }
151
56
 
152
- html {
153
- color-scheme: light dark;
57
+ .visually-hidden {
58
+ border: 0;
59
+ clip: rect(0 0 0 0);
60
+ height: auto;
61
+ margin: 0;
62
+ overflow: hidden;
63
+ padding: 0;
64
+ position: absolute;
65
+ width: 1px;
66
+ white-space: nowrap;
154
67
  }
155
68
 
156
69
  input, textarea, select, button {
@@ -229,12 +142,10 @@ input, textarea, select, .button, ::file-selector-button, .Field {
229
142
  background-image var(--transition-duration-fast) var(--transition-timing-function),
230
143
  background-color var(--transition-duration-fast) var(--transition-timing-function),
231
144
  color var(--transition-duration-fast) var(--transition-timing-function),
232
- box-shadow var(--transition-duration-fast) var(--transition-timing-function),
233
- outline var(--transition-duration-fast) var(--transition-timing-function),
234
- outline-offset var(--transition-duration-fast) var(--transition-timing-function);
145
+ box-shadow var(--transition-duration-fast) var(--transition-timing-function);
235
146
  }
236
147
 
237
- input:focus-visible, textarea:focus-visible, select:focus-visible, button:focus-visible {
148
+ input:focus-visible, textarea:focus-visible, select:focus-visible, button:focus-visible, a:focus-visible {
238
149
  outline: var(--focus-ring-size) solid var(--focus-ring-color);
239
150
  outline-offset: var(--focus-ring-offset);
240
151
  border-color: var(--focus-ring-color);