lapikit 0.6.3 → 0.6.5

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 (38) hide show
  1. package/dist/components/accordion/accordion.svelte +173 -35
  2. package/dist/components/accordion/accordion.types.d.ts +8 -3
  3. package/dist/components/accordion/modules/accordion-item.svelte +79 -74
  4. package/dist/components/alert/alert.svelte +204 -115
  5. package/dist/components/alert/alert.types.d.ts +8 -6
  6. package/dist/components/app/app.svelte +76 -37
  7. package/dist/components/appbar/appbar.svelte +116 -59
  8. package/dist/components/appbar/appbar.types.d.ts +5 -4
  9. package/dist/components/aspect-ratio/aspect-ratio.svelte +4 -13
  10. package/dist/components/aspect-ratio/aspect-ratio.types.d.ts +2 -1
  11. package/dist/components/avatar/avatar.svelte +117 -67
  12. package/dist/components/avatar/avatar.types.d.ts +7 -5
  13. package/dist/components/btn/btn.svelte +175 -171
  14. package/dist/components/btn/btn.types.d.ts +5 -2
  15. package/dist/components/card/card.svelte +11 -3
  16. package/dist/components/card/modules/card-actions.svelte +1 -1
  17. package/dist/components/chip/chip.svelte +172 -142
  18. package/dist/components/chip/chip.types.d.ts +7 -3
  19. package/dist/components/dialog/dialog.svelte +94 -83
  20. package/dist/components/dialog/dialog.types.d.ts +7 -5
  21. package/dist/components/dropdown/dropdown.svelte +47 -31
  22. package/dist/components/dropdown/dropdown.types.d.ts +4 -2
  23. package/dist/components/icon/icon.svelte +34 -51
  24. package/dist/components/list/list.svelte +10 -4
  25. package/dist/components/list/modules/list-item.svelte +10 -59
  26. package/dist/components/modal/modal.svelte +114 -102
  27. package/dist/components/modal/modal.types.d.ts +7 -5
  28. package/dist/components/popover/popover.svelte +54 -36
  29. package/dist/components/popover/popover.types.d.ts +4 -2
  30. package/dist/components/separator/separator.svelte +15 -23
  31. package/dist/components/separator/separator.types.d.ts +1 -2
  32. package/dist/components/textfield/textfield.svelte +181 -152
  33. package/dist/components/textfield/textfield.types.d.ts +4 -3
  34. package/dist/components/toolbar/toolbar.svelte +127 -103
  35. package/dist/components/toolbar/toolbar.types.d.ts +6 -7
  36. package/dist/components/tooltip/tooltip.svelte +40 -40
  37. package/dist/components/tooltip/tooltip.types.d.ts +3 -3
  38. package/package.json +1 -1
@@ -1,41 +1,30 @@
1
1
  <script lang="ts">
2
- import { useClassName, useStyles } from '../../utils';
2
+ import { useClassName, useElevation, useStyles } from '../../utils';
3
3
  import { makeComponentProps } from '../../html-mapped';
4
- import type { AlertProps, AlertTone, AlertVariant, AlertDensity } from './alert.types.js';
5
-
6
- function resolveVariant(value: AlertVariant | undefined): AlertVariant {
7
- return value === 'filled' || value === 'outline' || value === 'text' ? value : 'filled';
8
- }
9
-
10
- function resolveDensity(value: AlertDensity | undefined): AlertDensity {
11
- return value === 'compact' || value === 'comfortable' || value === 'default'
12
- ? value
13
- : 'default';
14
- }
15
-
16
- function resolveTone(value: AlertTone | undefined): AlertTone {
17
- return value && ['info', 'success', 'warning', 'error'].includes(value) ? value : 'default';
18
- }
4
+ import type { AlertProps } from './alert.types.js';
19
5
 
20
6
  let {
21
7
  ref = $bindable(),
22
8
  is = 'div',
23
- children = undefined,
9
+ children,
24
10
  class: className = '',
25
11
  style: styleAttr = '',
26
12
  's-class': sClass,
27
13
  's-style': sStyle,
28
14
  open = $bindable(true),
29
- closable = false,
15
+ closable,
16
+ size = 'md',
30
17
  variant = 'filled',
31
18
  density = 'default',
32
19
  rounded = 'md',
33
20
  tone = 'default',
34
- color = undefined,
35
- background = undefined,
36
- prepend = undefined,
37
- append = undefined,
38
- close = undefined,
21
+ color,
22
+ background,
23
+ prepend,
24
+ append,
25
+ close,
26
+ multiline,
27
+ elevation,
39
28
  ...rest
40
29
  }: AlertProps = $props();
41
30
 
@@ -43,6 +32,8 @@
43
32
  makeComponentProps(rest as Record<string, unknown>)
44
33
  );
45
34
 
35
+ let elevationState = $derived(useElevation(elevation));
36
+
46
37
  let componentClass = $derived(
47
38
  useClassName({
48
39
  baseClass: 'kit-alert',
@@ -52,7 +43,7 @@
52
43
  })
53
44
  );
54
45
 
55
- let baseStyle = $derived(
46
+ let componentStyle = $derived(
56
47
  useStyles({
57
48
  styleAttr,
58
49
  sStyle,
@@ -60,14 +51,11 @@
60
51
  })
61
52
  );
62
53
 
63
- let safeVariant = $derived(resolveVariant(variant));
64
- let safeDensity = $derived(resolveDensity(density));
65
- let safeTone = $derived(resolveTone(tone));
66
- let mergedStyle = $derived(
54
+ let resolvedStyle = $derived(
67
55
  [
68
- baseStyle,
69
- color ? `--kit-alert-fg:${color}` : '',
70
- background ? `--kit-alert-bg:${background}` : ''
56
+ componentStyle,
57
+ color ? `--kit-alert-fg:${color && `var(--kit-color-${color})`}` : '',
58
+ background ? `--kit-alert-bg:${background && `var(--kit-color-${background})`}` : ''
71
59
  ]
72
60
  .filter(Boolean)
73
61
  .join('; ')
@@ -79,15 +67,23 @@
79
67
  this={is}
80
68
  bind:this={ref}
81
69
  class={componentClass}
82
- style={mergedStyle}
70
+ style={resolvedStyle}
83
71
  role="alert"
84
- data-variant={safeVariant}
85
- data-density={safeDensity}
72
+ data-size={size}
73
+ data-variant={variant}
74
+ data-density={density}
86
75
  data-rounded={rounded}
87
- data-tone={safeTone}
76
+ data-tone={tone}
77
+ data-mutline={multiline}
78
+ data-append={append && true}
79
+ data-prepend={prepend && true}
80
+ data-closable={closable && true}
81
+ data-elevation={elevationState.base}
82
+ data-elevation-hover={elevationState.hover}
83
+ data-elevation-active={elevationState.active}
88
84
  {...restProps}
89
85
  >
90
- {#if safeVariant === 'outline'}
86
+ {#if variant === 'outline'}
91
87
  <span class="outline"></span>
92
88
  {/if}
93
89
 
@@ -117,7 +113,12 @@
117
113
  {#if close}
118
114
  {@render close?.()}
119
115
  {:else}
120
- <span aria-hidden="true">×</span>
116
+ <svg viewBox="0 0 24 24" aria-hidden="true">
117
+ <path
118
+ d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"
119
+ fill="currentColor"
120
+ ></path>
121
+ </svg>
121
122
  {/if}
122
123
  </button>
123
124
  {/if}
@@ -126,121 +127,204 @@
126
127
 
127
128
  <style>
128
129
  .kit-alert {
129
- --kit-alert-bg: var(--kit-surface-2);
130
- --kit-alert-fg: var(--kit-fg);
131
- --kit-alert-bd: var(--kit-border);
132
- --kit-alert-radius: 8px;
133
- --kit-alert-py: 0.75rem;
134
- --kit-alert-px: 0.875rem;
135
- --kit-alert-gap: 0.625rem;
136
- --outline-color: var(--kit-alert-bd);
137
-
138
130
  position: relative;
139
131
  display: grid;
140
- grid-template-columns: auto minmax(0, 1fr) auto auto;
132
+ grid-template-columns: minmax(0, 1fr);
141
133
  gap: var(--kit-alert-gap);
142
- align-items: start;
143
- padding: var(--kit-alert-py) var(--kit-alert-px);
134
+ padding: calc(var(--kit-alert-px) * var(--kit-alert-density-scale));
144
135
  border-radius: var(--kit-alert-radius);
145
136
  color: var(--kit-alert-fg);
146
137
  background: var(--kit-alert-bg);
147
- border: 1px solid var(--kit-alert-bd);
138
+ font-size: var(--kit-alert-font);
139
+ border: 0;
148
140
  }
149
141
 
150
- .kit-alert[data-variant='outline'] {
151
- background: transparent;
152
- color: var(--kit-alert-fg);
153
- border-color: var(--kit-alert-bd);
142
+ .kit-alert[data-mutline='true'] .kit-alert__prepend,
143
+ .kit-alert[data-mutline='true'] .kit-alert__content,
144
+ .kit-alert[data-mutline='true'] .kit-alert__append,
145
+ .kit-alert[data-mutline='true'] .kit-alert__close {
146
+ display: flex;
147
+ align-items: start;
154
148
  }
155
149
 
156
- .kit-alert[data-variant='text'] {
157
- background: transparent;
158
- color: var(--kit-alert-fg);
159
- border-color: transparent;
150
+ .kit-alert:not([data-mutline='true']) .kit-alert__prepend,
151
+ .kit-alert:not([data-mutline='true']) .kit-alert__content,
152
+ .kit-alert:not([data-mutline='true']) .kit-alert__append,
153
+ .kit-alert:not([data-mutline='true']) .kit-alert__close {
154
+ display: flex;
155
+ align-items: center;
160
156
  }
161
157
 
162
- .kit-alert .outline {
163
- pointer-events: none;
158
+ .kit-alert__close svg {
159
+ width: 1.125rem;
160
+ height: 1.125rem;
161
+ display: block;
164
162
  }
165
163
 
166
- .kit-alert[data-tone='info'] {
167
- --kit-alert-tone-accent: hsl(var(--kit-h-info, 205) 60% 42%);
168
- --kit-alert-bg: hsl(var(--kit-h-info, 205) 90% 95%);
169
- --kit-alert-fg: hsl(var(--kit-h-info, 205) 36% 24%);
170
- --kit-alert-bd: hsl(var(--kit-h-info, 205) 45% 78%);
164
+ .kit-alert[data-prepend='true']:not([data-append='true']):not([data-closable='true']) {
165
+ grid-template-columns: auto minmax(0, 1fr);
166
+ }
167
+ .kit-alert[data-append='true']:not([data-prepend='true']):not([data-closable='true']),
168
+ .kit-alert[data-closable='true']:not([data-prepend='true']):not([data-append='true']) {
169
+ grid-template-columns: minmax(0, 1fr) auto;
171
170
  }
172
171
 
173
- .kit-alert[data-tone='success'] {
174
- --kit-alert-tone-accent: hsl(var(--kit-h-success, 145) 50% 38%);
175
- --kit-alert-bg: hsl(var(--kit-h-success, 145) 58% 93%);
176
- --kit-alert-fg: hsl(var(--kit-h-success, 145) 38% 23%);
177
- --kit-alert-bd: hsl(var(--kit-h-success, 145) 30% 75%);
172
+ .kit-alert[data-append='true']:not([data-prepend='true']):not([data-closable='true']) {
173
+ grid-template-columns: minmax(0, 1fr) auto;
174
+ }
175
+ .kit-alert[data-prepend='true'][data-closable='true']:not([data-append='true']),
176
+ .kit-alert[data-prepend='true'][data-append='true']:not([data-closable='true']) {
177
+ grid-template-columns: auto minmax(0, 1fr) auto;
178
+ }
179
+ .kit-alert[data-append='true'][data-closable='true']:not([data-prepend='true']) {
180
+ grid-template-columns: minmax(0, 1fr) auto auto;
181
+ }
182
+ .kit-alert[data-prepend='true'][data-append='true'][data-closable='true'] {
183
+ grid-template-columns: auto minmax(0, 1fr) auto auto;
178
184
  }
179
185
 
180
- .kit-alert[data-tone='warning'] {
181
- --kit-alert-tone-accent: hsl(var(--kit-h-warning, 35) 80% 38%);
182
- --kit-alert-bg: hsl(var(--kit-h-warning, 35) 95% 92%);
183
- --kit-alert-fg: hsl(var(--kit-h-warning, 35) 55% 24%);
184
- --kit-alert-bd: hsl(var(--kit-h-warning, 35) 55% 72%);
186
+ /**
187
+ * rounded
188
+ * @link ...
189
+ */
190
+ .kit-alert[data-rounded='0'] {
191
+ --kit-alert-radius: var(--kit-shape-none);
192
+ }
193
+ .kit-alert[data-rounded='xs'] {
194
+ --kit-alert-radius: var(--kit-shape-xs);
195
+ }
196
+ .kit-alert[data-rounded='sm'] {
197
+ --kit-alert-radius: var(--kit-shape-sm);
198
+ }
199
+ .kit-alert[data-rounded='md'] {
200
+ --kit-alert-radius: var(--kit-shape-md);
201
+ }
202
+ .kit-alert[data-rounded='lg'] {
203
+ --kit-alert-radius: var(--kit-shape-lg);
204
+ }
205
+ .kit-alert[data-rounded='xl'] {
206
+ --kit-alert-radius: var(--kit-shape-xl);
207
+ }
208
+ .kit-alert[data-rounded='full'] {
209
+ --kit-alert-radius: var(--kit-shape-full);
185
210
  }
186
211
 
187
- .kit-alert[data-tone='error'] {
188
- --kit-alert-tone-accent: hsl(var(--kit-h-danger, 5) 65% 45%);
189
- --kit-alert-bg: hsl(var(--kit-h-danger, 5) 90% 94%);
190
- --kit-alert-fg: hsl(var(--kit-h-danger, 5) 48% 28%);
191
- --kit-alert-bd: hsl(var(--kit-h-danger, 5) 55% 78%);
212
+ /**
213
+ * density
214
+ * @link no links
215
+ */
216
+ .kit-alert[data-density='none'] {
217
+ --kit-alert-density-scale: 0;
218
+ --kit-alert-density-h-scale: 0;
192
219
  }
220
+ .kit-alert[data-density='compact'] {
221
+ --kit-alert-density-scale: 0.9;
222
+ --kit-alert-density-h-scale: 0.92;
223
+ }
224
+ .kit-alert[data-density='default'] {
225
+ --kit-alert-density-scale: 1;
226
+ --kit-alert-density-h-scale: 1;
227
+ }
228
+ .kit-alert[data-density='comfortable'] {
229
+ --kit-alert-density-scale: 1.1;
230
+ --kit-alert-density-h-scale: 1.15;
231
+ }
232
+
233
+ /**
234
+ * variant
235
+ * @link no links...
236
+ */
237
+ .kit-alert[data-variant='filled'] {
238
+ --kit-alert-bg: var(--kit-color-surface-2);
239
+ --kit-alert-fg: var(--kit-color-text);
193
240
 
194
- .kit-alert[data-variant='outline'][data-tone='info'],
195
- .kit-alert[data-variant='outline'][data-tone='success'],
196
- .kit-alert[data-variant='outline'][data-tone='warning'],
197
- .kit-alert[data-variant='outline'][data-tone='error'] {
198
- --kit-alert-fg: var(--kit-alert-tone-accent);
199
- --kit-alert-bd: var(--kit-alert-tone-accent);
241
+ --kit-alert-hover-bg: color-mix(in oklab, var(--kit-alert-bg), black 10%);
242
+ --kit-alert-active-bg: color-mix(in oklab, var(--kit-alert-bg), black 16%);
200
243
  }
244
+ .kit-alert[data-variant='outline'] {
245
+ --kit-alert-bg: transparent;
246
+ --kit-alert-fg: var(--kit-color-text);
247
+ --kit-alert-bd: var(--kit-alert-fg);
201
248
 
202
- .kit-alert[data-variant='text'][data-tone='info'],
203
- .kit-alert[data-variant='text'][data-tone='success'],
204
- .kit-alert[data-variant='text'][data-tone='warning'],
205
- .kit-alert[data-variant='text'][data-tone='error'] {
206
- --kit-alert-fg: var(--kit-alert-tone-accent);
249
+ --kit-alert-hover-bg: color-mix(in oklab, var(--kit-alert-fg), transparent 80%);
250
+ --kit-alert-active-bg: color-mix(in oklab, var(--kit-alert-fg), transparent 92%);
207
251
  }
252
+ .kit-alert[data-variant='text'] {
253
+ --kit-alert-bg: transparent;
254
+ --kit-alert-fg: var(--kit-color-text);
208
255
 
209
- .kit-alert[data-density='compact'] {
210
- --kit-alert-py: 0.5rem;
211
- --kit-alert-px: 0.75rem;
212
- --kit-alert-gap: 0.5rem;
256
+ --kit-alert-hover-bg: color-mix(in oklab, var(--kit-alert-fg), transparent 80%);
257
+ --kit-alert-active-bg: color-mix(in oklab, var(--kit-alert-fg), transparent 92%);
213
258
  }
214
259
 
215
- .kit-alert[data-density='default'] {
216
- --kit-alert-py: 0.75rem;
217
- --kit-alert-px: 0.875rem;
218
- --kit-alert-gap: 0.625rem;
260
+ /**
261
+ * size
262
+ * @link nothing...
263
+ */
264
+ .kit-alert[data-size='xs'] {
265
+ --kit-alert-px: 10px;
266
+ --kit-alert-gap: 4px;
267
+ --kit-alert-font: 0.75rem;
268
+ }
269
+ .kit-alert[data-size='sm'] {
270
+ --kit-alert-px: 12px;
271
+ --kit-alert-gap: 6px;
272
+ --kit-alert-font: 0.875rem;
273
+ }
274
+ .kit-alert[data-size='md'] {
275
+ --kit-alert-px: 16px;
276
+ --kit-alert-gap: 8px;
277
+ --kit-alert-font: 1rem;
278
+ }
279
+ .kit-alert[data-size='lg'] {
280
+ --kit-alert-px: 20px;
281
+ --kit-alert-gap: 10px;
282
+ --kit-alert-font: 1.125rem;
283
+ }
284
+ .kit-alert[data-size='xl'] {
285
+ --kit-alert-px: 24px;
286
+ --kit-alert-gap: 12px;
287
+ --kit-alert-font: 1.25rem;
219
288
  }
220
289
 
221
- .kit-alert[data-density='comfortable'] {
222
- --kit-alert-py: 0.95rem;
223
- --kit-alert-px: 1rem;
224
- --kit-alert-gap: 0.75rem;
290
+ /**
291
+ * tone
292
+ * @link nothing...
293
+ */
294
+ .kit-alert[data-tone='info'][data-variant='filled'] {
295
+ --kit-alert-bg: var(--kit-color-info);
296
+ --kit-alert-fg: var(--kit-color-on-info);
297
+ }
298
+ .kit-alert[data-tone='info'][data-variant='outline'],
299
+ .kit-alert[data-tone='info'][data-variant='text'] {
300
+ --kit-alert-fg: var(--kit-color-info);
225
301
  }
226
302
 
227
- .kit-alert[data-rounded='0'] {
228
- --kit-alert-radius: 0;
303
+ .kit-alert[data-tone='success'][data-variant='filled'] {
304
+ --kit-alert-bg: var(--kit-color-success);
305
+ --kit-alert-fg: var(--kit-color-on-success);
229
306
  }
230
- .kit-alert[data-rounded='xs'] {
231
- --kit-alert-radius: 2px;
307
+ .kit-alert[data-tone='success'][data-variant='outline'],
308
+ .kit-alert[data-tone='success'][data-variant='text'] {
309
+ --kit-alert-fg: var(--kit-color-success);
232
310
  }
233
- .kit-alert[data-rounded='sm'] {
234
- --kit-alert-radius: 4px;
311
+
312
+ .kit-alert[data-tone='warning'][data-variant='filled'] {
313
+ --kit-alert-bg: var(--kit-color-warning);
314
+ --kit-alert-fg: var(--kit-color-on-warning);
235
315
  }
236
- .kit-alert[data-rounded='md'] {
237
- --kit-alert-radius: 8px;
316
+ .kit-alert[data-tone='warning'][data-variant='outline'],
317
+ .kit-alert[data-tone='warning'][data-variant='text'] {
318
+ --kit-alert-fg: var(--kit-color-warning);
238
319
  }
239
- .kit-alert[data-rounded='lg'] {
240
- --kit-alert-radius: 16px;
320
+
321
+ .kit-alert[data-tone='error'][data-variant='filled'] {
322
+ --kit-alert-bg: var(--kit-color-error);
323
+ --kit-alert-fg: var(--kit-color-on-error);
241
324
  }
242
- .kit-alert[data-rounded='xl'] {
243
- --kit-alert-radius: 99999px;
325
+ .kit-alert[data-tone='error'][data-variant='outline'],
326
+ .kit-alert[data-tone='error'][data-variant='text'] {
327
+ --kit-alert-fg: var(--kit-color-error);
244
328
  }
245
329
 
246
330
  .kit-alert__prepend,
@@ -271,7 +355,12 @@
271
355
  border-radius: 6px;
272
356
  }
273
357
 
358
+ .kit-alert .outline {
359
+ --outline-color: var(--kit-alert-bd);
360
+ }
361
+
274
362
  .kit-alert__close:hover {
275
363
  background: color-mix(in oklab, currentColor 10%, transparent);
364
+ border-radius: 9999px;
276
365
  }
277
366
  </style>
@@ -1,20 +1,22 @@
1
1
  import type { Snippet } from 'svelte';
2
- import type { Component, RoundedType } from '../../@types';
3
- export type AlertVariant = 'filled' | 'outline' | 'text';
4
- export type AlertDensity = 'compact' | 'comfortable' | 'default';
5
- export type AlertTone = 'default' | 'info' | 'success' | 'warning' | 'error';
2
+ import type { Component, DensityType, ElevationProps, RoundedType, SizeType } from '../../@types';
3
+ type AlertVariant = 'filled' | 'outline' | 'text';
4
+ type AlertTone = 'default' | 'info' | 'success' | 'warning' | 'error';
6
5
  export interface AlertProps extends Component {
7
6
  ref?: HTMLElement | null;
8
7
  is?: 'div' | 'section' | 'aside' | 'article';
9
8
  open?: boolean;
10
9
  closable?: boolean;
11
10
  variant?: AlertVariant;
12
- density?: AlertDensity;
13
- rounded?: RoundedType;
11
+ size?: SizeType;
12
+ density?: DensityType;
13
+ rounded?: RoundedType | 'full';
14
14
  tone?: AlertTone;
15
15
  color?: string;
16
16
  background?: string;
17
17
  prepend?: Snippet;
18
18
  append?: Snippet;
19
19
  close?: Snippet;
20
+ elevation?: ElevationProps;
20
21
  }
22
+ export {};
@@ -53,6 +53,11 @@
53
53
 
54
54
  --kit-shadow-opacity: 30%;
55
55
  --kit-shadow-ambiant-opacity: 15%;
56
+
57
+ --kit-disabled-opacity: 0.55;
58
+ --kit-font:
59
+ ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',
60
+ 'Segoe UI Symbol', 'Noto Color Emoji';
56
61
  }
57
62
 
58
63
  .kit-application,
@@ -81,8 +86,8 @@
81
86
  --kit-color-on-success: hsl(0 0% 100%);
82
87
  --kit-color-warning: hsl(35 80% 45%);
83
88
  --kit-color-on-warning: hsl(222 20% 10%);
84
- --kit-color-danger: hsl(5 65% 48%);
85
- --kit-color-on-danger: hsl(0 0% 100%);
89
+ --kit-color-error: hsl(5 65% 48%);
90
+ --kit-color-on-error: hsl(0 0% 100%);
86
91
  --kit-color-info: hsl(205 60% 42%);
87
92
  --kit-color-on-info: hsl(0 0% 100%);
88
93
  --kit-color-focus: hsl(35 90% 56%);
@@ -114,47 +119,81 @@
114
119
  --kit-color-on-success: hsl(240 3% 11%);
115
120
  --kit-color-warning: hsl(35 85% 58%);
116
121
  --kit-color-on-warning: hsl(240 3% 11%);
117
- --kit-color-danger: hsl(5 70% 60%);
118
- --kit-color-on-danger: hsl(240 3% 11%);
122
+ --kit-color-error: hsl(5 70% 60%);
123
+ --kit-color-on-error: hsl(240 3% 11%);
119
124
  --kit-color-info: hsl(205 65% 58%);
120
125
  --kit-color-on-info: hsl(240 3% 11%);
121
126
  --kit-color-focus: hsl(35 90% 62%);
122
127
  }
123
128
 
124
- .kit-application {
125
- color-scheme: light;
126
-
127
- /* Hue vars — used by components for dynamic semantic color calculations */
128
- --kit-h-neutral: 220;
129
- --kit-h-success: 145;
130
- --kit-h-warning: 35;
131
- --kit-h-danger: 5;
132
- --kit-h-info: 205;
133
-
134
- --kit-bg: hsl(0 0% 100%);
135
- --kit-fg: hsl(222 20% 10%);
136
- --kit-muted: hsl(220 10% 45%);
137
-
138
- --kit-surface-1: hsl(0 0% 100%);
139
- --kit-surface-2: hsl(220 20% 98%);
140
- --kit-surface-3: hsl(220 18% 94%);
141
-
142
- --kit-border: hsl(220 16% 88%);
143
-
144
- --kit-accent: hsl(220 90% 56%);
145
-
146
- --kit-focus: hsl(35, 90%, 56%);
129
+ @media (prefers-color-scheme: light) {
130
+ :global([data-kit-theme='system']) {
131
+ color-scheme: light;
132
+
133
+ --kit-color-surface: hsl(0 0% 100%);
134
+ --kit-color-surface-1: hsl(240 15% 96.5%);
135
+ --kit-color-surface-2: hsl(240 10% 93%);
136
+ --kit-color-surface-3: hsl(0 0% 100%);
137
+
138
+ --kit-color-text: hsl(222 20% 10%);
139
+ --kit-color-text-muted: hsl(220 10% 40%);
140
+ --kit-color-text-subtle: hsl(220 8% 58%);
141
+ --kit-color-text-disabled: hsl(220 5% 76%);
142
+
143
+ --kit-color-fill: hsl(240 8% 93%);
144
+ --kit-color-fill-hover: hsl(240 4% 91%);
145
+ --kit-color-fill-active: hsl(240 4% 88%);
146
+
147
+ --kit-color-border: hsl(220 16% 88%);
148
+ --kit-color-shadow: hsl(240 3% 11%);
149
+
150
+ --kit-color-accent: hsl(220 90% 56%);
151
+ --kit-color-on-accent: hsl(0 0% 100%);
152
+ --kit-color-success: hsl(145 50% 38%);
153
+ --kit-color-on-success: hsl(0 0% 100%);
154
+ --kit-color-warning: hsl(35 80% 45%);
155
+ --kit-color-on-warning: hsl(222 20% 10%);
156
+ --kit-color-error: hsl(5 65% 48%);
157
+ --kit-color-on-error: hsl(0 0% 100%);
158
+ --kit-color-info: hsl(205 60% 42%);
159
+ --kit-color-on-info: hsl(0 0% 100%);
160
+ --kit-color-focus: hsl(35 90% 56%);
161
+ }
162
+ }
147
163
 
148
- /* Layout */
149
- --kit-radius-1: 8px;
150
- --kit-radius-2: 12px;
151
- --kit-space-1: 6px;
152
- --kit-space-2: 10px;
153
- --kit-space-3: 14px;
154
- --kit-disabled-opacity: 0.55;
155
- --kit-font:
156
- ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',
157
- 'Segoe UI Symbol', 'Noto Color Emoji';
164
+ @media (prefers-color-scheme: dark) {
165
+ :global([data-kit-theme='system']) {
166
+ color-scheme: dark;
167
+
168
+ --kit-color-surface: hsl(240 3% 11%);
169
+ --kit-color-surface-1: hsl(240 2% 17.5%);
170
+ --kit-color-surface-2: hsl(240 1.5% 23%);
171
+ --kit-color-surface-3: hsl(240 1.5% 28%);
172
+
173
+ --kit-color-text: hsl(0 0% 100%);
174
+ --kit-color-text-muted: hsl(240 3% 56%);
175
+ --kit-color-text-subtle: hsl(240 2.5% 38%);
176
+ --kit-color-text-disabled: hsl(240 1.5% 25%);
177
+
178
+ --kit-color-fill: hsl(240 2.5% 24%);
179
+ --kit-color-fill-hover: hsl(240 2.5% 28%);
180
+ --kit-color-fill-active: hsl(240 2.5% 31%);
181
+
182
+ --kit-color-border: hsl(240 2% 26%);
183
+ --kit-color-shadow: hsl(240 3% 11%);
184
+
185
+ --kit-color-accent: hsl(220 85% 65%);
186
+ --kit-color-on-accent: hsl(240 3% 11%);
187
+ --kit-color-success: hsl(145 50% 50%);
188
+ --kit-color-on-success: hsl(240 3% 11%);
189
+ --kit-color-warning: hsl(35 85% 58%);
190
+ --kit-color-on-warning: hsl(240 3% 11%);
191
+ --kit-color-error: hsl(5 70% 60%);
192
+ --kit-color-on-error: hsl(240 3% 11%);
193
+ --kit-color-info: hsl(205 65% 58%);
194
+ --kit-color-on-info: hsl(240 3% 11%);
195
+ --kit-color-focus: hsl(35 90% 62%);
196
+ }
158
197
  }
159
198
 
160
199
  :global(.outline) {