@dorsk/tsumikit 0.78.0 → 0.80.0
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.
- package/dist/components/atoms/Artwork.svelte +5 -3
- package/dist/components/atoms/Badge.svelte +2 -5
- package/dist/components/atoms/Button.svelte +327 -17
- package/dist/components/atoms/Button.svelte.d.ts +4 -1
- package/dist/components/atoms/Card.svelte +160 -12
- package/dist/components/atoms/Checkbox.svelte +181 -3
- package/dist/components/atoms/Gauge.svelte +2 -2
- package/dist/components/atoms/Input.svelte +41 -3
- package/dist/components/atoms/Kbd.svelte +1 -1
- package/dist/components/atoms/Link.svelte +61 -0
- package/dist/components/atoms/Progress.svelte +75 -2
- package/dist/components/atoms/Progress.svelte.d.ts +1 -0
- package/dist/components/atoms/SegmentedProgress.svelte +2 -2
- package/dist/components/atoms/Select.svelte +39 -3
- package/dist/components/atoms/Skeleton.svelte +54 -3
- package/dist/components/atoms/Skeleton.svelte.d.ts +1 -0
- package/dist/components/atoms/Slider.svelte +8 -6
- package/dist/components/atoms/Spinner.svelte +152 -3
- package/dist/components/atoms/Spinner.svelte.d.ts +1 -1
- package/dist/components/atoms/Swatch.svelte +1 -1
- package/dist/components/atoms/Switch.svelte +138 -2
- package/dist/components/atoms/Textarea.svelte +42 -3
- package/dist/components/atoms/Thinking.svelte +130 -0
- package/dist/components/atoms/Thinking.svelte.d.ts +15 -0
- package/dist/components/layouts/AppShell.svelte +6 -6
- package/dist/components/layouts/MasterDetail.svelte +3 -3
- package/dist/components/layouts/NavBar.svelte +4 -4
- package/dist/components/layouts/NavSection.svelte +1 -1
- package/dist/components/layouts/ResizablePanel.svelte +7 -7
- package/dist/components/layouts/TabBar.svelte +2 -2
- package/dist/components/molecules/Accordion.svelte +2 -2
- package/dist/components/molecules/AttachmentList.svelte +2 -2
- package/dist/components/molecules/CapBar.svelte +2 -2
- package/dist/components/molecules/CodeBlock.svelte +5 -5
- package/dist/components/molecules/Combobox.svelte +3 -3
- package/dist/components/molecules/CopyButton.svelte +146 -5
- package/dist/components/molecules/Drawer.svelte +8 -8
- package/dist/components/molecules/EmojiPicker.svelte +1 -1
- package/dist/components/molecules/Field.svelte +55 -1
- package/dist/components/molecules/FileButton.svelte +20 -6
- package/dist/components/molecules/FilterInput.svelte +4 -4
- package/dist/components/molecules/GitRef.svelte +2 -2
- package/dist/components/molecules/GlyphStack.svelte +21 -3
- package/dist/components/molecules/InputGroup.svelte +3 -3
- package/dist/components/molecules/LookPicker.svelte +87 -0
- package/dist/components/molecules/LookPicker.svelte.d.ts +17 -0
- package/dist/components/molecules/Modal.svelte +5 -5
- package/dist/components/molecules/MotionSettings.svelte +166 -0
- package/dist/components/molecules/MotionSettings.svelte.d.ts +18 -0
- package/dist/components/molecules/OptionButton.svelte +8 -3
- package/dist/components/molecules/Pagination.svelte +3 -1
- package/dist/components/molecules/Popover.svelte +18 -11
- package/dist/components/molecules/Prose.svelte +6 -6
- package/dist/components/molecules/RadialMenu.svelte +3 -3
- package/dist/components/molecules/RadioGroup.svelte +67 -4
- package/dist/components/molecules/RichSelect.svelte +6 -4
- package/dist/components/molecules/SectionHeader.svelte +1 -1
- package/dist/components/molecules/SeekSlider.svelte +6 -6
- package/dist/components/molecules/SegmentedControl.svelte +7 -7
- package/dist/components/molecules/SortableList.svelte +2 -2
- package/dist/components/molecules/SplitButton.svelte +1 -1
- package/dist/components/molecules/Tabs.svelte +160 -7
- package/dist/components/molecules/ThemePicker.svelte +1 -1
- package/dist/components/molecules/Timestamp.svelte +1 -1
- package/dist/components/molecules/Toggle.svelte +5 -3
- package/dist/components/molecules/Tooltip.svelte +2 -2
- package/dist/components/molecules/VolumeSlider.svelte +3 -3
- package/dist/components/organisms/ConversationFeed.svelte +1 -1
- package/dist/components/organisms/ConversationPanel.svelte +3 -3
- package/dist/components/organisms/DataTable.svelte +18 -16
- package/dist/fx.d.ts +149 -0
- package/dist/fx.js +111 -0
- package/dist/fx.md +58 -0
- package/dist/index.d.ts +8 -2
- package/dist/index.js +8 -2
- package/dist/looks/README.md +101 -0
- package/dist/looks/depth.css +939 -0
- package/dist/looks/editorial.css +545 -0
- package/dist/looks/tactile.css +871 -0
- package/dist/pointer.d.ts +3 -0
- package/dist/pointer.js +40 -0
- package/dist/stores/fx.svelte.d.ts +17 -0
- package/dist/stores/fx.svelte.js +64 -0
- package/dist/stores/theme.svelte.d.ts +8 -2
- package/dist/stores/theme.svelte.js +33 -7
- package/dist/styles/themes.css +249 -249
- package/dist/styles/tokens.css +37 -2
- package/dist/theme-mode.d.ts +31 -0
- package/dist/theme-mode.js +19 -0
- package/package.json +3 -2
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { ComponentProps } from 'svelte';
|
|
3
|
+
import Button from '../atoms/Button.svelte';
|
|
4
|
+
import Icon from '../atoms/Icon.svelte';
|
|
5
|
+
import Select from '../atoms/Select.svelte';
|
|
6
|
+
import Popover from './Popover.svelte';
|
|
7
|
+
import { FX, FX_FAMILIES, type FxFamily, type FxSettings } from '../../fx';
|
|
8
|
+
import { fx } from '../../stores/fx.svelte';
|
|
9
|
+
|
|
10
|
+
type TriggerChrome = Pick<
|
|
11
|
+
ComponentProps<typeof Popover>,
|
|
12
|
+
'variant' | 'tone' | 'box' | 'pill' | 'control' | 'block' | 'bare' | 'hitArea' | 'placement' | 'disabled'
|
|
13
|
+
>;
|
|
14
|
+
|
|
15
|
+
let {
|
|
16
|
+
families = FX_FAMILIES,
|
|
17
|
+
size = 'md',
|
|
18
|
+
box = size,
|
|
19
|
+
placement = 'bottom-end',
|
|
20
|
+
variant,
|
|
21
|
+
tone,
|
|
22
|
+
pill,
|
|
23
|
+
control,
|
|
24
|
+
block,
|
|
25
|
+
bare,
|
|
26
|
+
hitArea,
|
|
27
|
+
disabled,
|
|
28
|
+
label = 'Motion',
|
|
29
|
+
resetLabel = 'Reset',
|
|
30
|
+
reducedMotionHint = 'Your system asks for reduced motion: effects show their static fallback.',
|
|
31
|
+
onchange,
|
|
32
|
+
class: klass = '',
|
|
33
|
+
style: styleProp = '',
|
|
34
|
+
}: TriggerChrome & {
|
|
35
|
+
/** Restrict and order the offered families. */
|
|
36
|
+
families?: readonly FxFamily[];
|
|
37
|
+
size?: 'sm' | 'md';
|
|
38
|
+
label?: string;
|
|
39
|
+
resetLabel?: string;
|
|
40
|
+
reducedMotionHint?: string;
|
|
41
|
+
onchange?: (settings: FxSettings) => void;
|
|
42
|
+
class?: string;
|
|
43
|
+
style?: string;
|
|
44
|
+
} = $props();
|
|
45
|
+
|
|
46
|
+
const uid = $props.id();
|
|
47
|
+
let reduced = $state(false);
|
|
48
|
+
|
|
49
|
+
$effect(() => {
|
|
50
|
+
const mq = globalThis.matchMedia?.('(prefers-reduced-motion: reduce)');
|
|
51
|
+
if (!mq) return;
|
|
52
|
+
reduced = mq.matches;
|
|
53
|
+
const on = (e: MediaQueryListEvent) => (reduced = e.matches);
|
|
54
|
+
mq.addEventListener?.('change', on);
|
|
55
|
+
return () => mq.removeEventListener?.('change', on);
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
const offCount = $derived(families.filter((f) => fx.settings[f] === 'none').length);
|
|
59
|
+
|
|
60
|
+
function pick(family: FxFamily, value: string) {
|
|
61
|
+
fx.set(family, value);
|
|
62
|
+
onchange?.(fx.settings);
|
|
63
|
+
}
|
|
64
|
+
</script>
|
|
65
|
+
|
|
66
|
+
<Popover
|
|
67
|
+
{label}
|
|
68
|
+
{placement}
|
|
69
|
+
{box}
|
|
70
|
+
{variant}
|
|
71
|
+
{tone}
|
|
72
|
+
{pill}
|
|
73
|
+
{control}
|
|
74
|
+
{block}
|
|
75
|
+
{bare}
|
|
76
|
+
{hitArea}
|
|
77
|
+
{disabled}
|
|
78
|
+
triggerClass={klass}
|
|
79
|
+
style={styleProp}
|
|
80
|
+
sound={false}
|
|
81
|
+
>
|
|
82
|
+
{#snippet trigger()}
|
|
83
|
+
<span
|
|
84
|
+
data-tsu="MotionSettings"
|
|
85
|
+
class="glyph"
|
|
86
|
+
title={offCount === families.length ? `${label}: off` : label}
|
|
87
|
+
>
|
|
88
|
+
<Icon name="zap" size={size === 'sm' ? 16 : 18} />
|
|
89
|
+
</span>
|
|
90
|
+
{/snippet}
|
|
91
|
+
<div class="panel" class:panel-sm={size === 'sm'}>
|
|
92
|
+
<div class="grid">
|
|
93
|
+
{#each families as family (family)}
|
|
94
|
+
<label class="name" for="{uid}-{family}">{FX[family].label}</label>
|
|
95
|
+
<Select
|
|
96
|
+
id="{uid}-{family}"
|
|
97
|
+
size="sm"
|
|
98
|
+
value={fx.settings[family]}
|
|
99
|
+
options={FX[family].variants.map((v) => ({ value: v.id, label: v.label }))}
|
|
100
|
+
onchange={(e) => pick(family, (e.currentTarget as HTMLSelectElement).value)}
|
|
101
|
+
/>
|
|
102
|
+
{/each}
|
|
103
|
+
</div>
|
|
104
|
+
<div class="row">
|
|
105
|
+
{#if reduced}
|
|
106
|
+
<div class="hint" aria-live="polite">{reducedMotionHint}</div>
|
|
107
|
+
{/if}
|
|
108
|
+
<Button
|
|
109
|
+
size="sm"
|
|
110
|
+
variant="ghost"
|
|
111
|
+
class="reset"
|
|
112
|
+
disabled={fx.isDefault}
|
|
113
|
+
sound={false}
|
|
114
|
+
onclick={() => {
|
|
115
|
+
fx.reset();
|
|
116
|
+
onchange?.(fx.settings);
|
|
117
|
+
}}>{resetLabel}</Button
|
|
118
|
+
>
|
|
119
|
+
</div>
|
|
120
|
+
</div>
|
|
121
|
+
</Popover>
|
|
122
|
+
|
|
123
|
+
<style>
|
|
124
|
+
.glyph {
|
|
125
|
+
display: inline-flex;
|
|
126
|
+
line-height: var(--lh-none);
|
|
127
|
+
}
|
|
128
|
+
.panel {
|
|
129
|
+
width: min(19rem, calc(100vw - var(--sp-6)));
|
|
130
|
+
box-sizing: border-box;
|
|
131
|
+
display: grid;
|
|
132
|
+
gap: var(--sp-2);
|
|
133
|
+
padding: var(--sp-3);
|
|
134
|
+
font-size: 0.875rem;
|
|
135
|
+
line-height: var(--lh-snug);
|
|
136
|
+
}
|
|
137
|
+
.panel-sm {
|
|
138
|
+
width: min(17rem, calc(100vw - var(--sp-6)));
|
|
139
|
+
padding: var(--sp-2) var(--sp-3);
|
|
140
|
+
font-size: 0.8125rem;
|
|
141
|
+
}
|
|
142
|
+
.grid {
|
|
143
|
+
display: grid;
|
|
144
|
+
grid-template-columns: auto minmax(0, 1fr);
|
|
145
|
+
align-items: center;
|
|
146
|
+
gap: var(--sp-1) var(--sp-3);
|
|
147
|
+
}
|
|
148
|
+
.name {
|
|
149
|
+
color: var(--text-muted);
|
|
150
|
+
white-space: nowrap;
|
|
151
|
+
}
|
|
152
|
+
.row {
|
|
153
|
+
display: flex;
|
|
154
|
+
align-items: center;
|
|
155
|
+
gap: var(--sp-2);
|
|
156
|
+
}
|
|
157
|
+
.row > :global(.reset) {
|
|
158
|
+
margin-inline-start: auto;
|
|
159
|
+
}
|
|
160
|
+
.hint {
|
|
161
|
+
flex: 1 1 0;
|
|
162
|
+
min-width: 0;
|
|
163
|
+
font-size: 0.75rem;
|
|
164
|
+
color: var(--text-muted);
|
|
165
|
+
}
|
|
166
|
+
</style>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ComponentProps } from 'svelte';
|
|
2
|
+
import Popover from './Popover.svelte';
|
|
3
|
+
import { type FxFamily, type FxSettings } from '../../fx';
|
|
4
|
+
type TriggerChrome = Pick<ComponentProps<typeof Popover>, 'variant' | 'tone' | 'box' | 'pill' | 'control' | 'block' | 'bare' | 'hitArea' | 'placement' | 'disabled'>;
|
|
5
|
+
type $$ComponentProps = TriggerChrome & {
|
|
6
|
+
/** Restrict and order the offered families. */
|
|
7
|
+
families?: readonly FxFamily[];
|
|
8
|
+
size?: 'sm' | 'md';
|
|
9
|
+
label?: string;
|
|
10
|
+
resetLabel?: string;
|
|
11
|
+
reducedMotionHint?: string;
|
|
12
|
+
onchange?: (settings: FxSettings) => void;
|
|
13
|
+
class?: string;
|
|
14
|
+
style?: string;
|
|
15
|
+
};
|
|
16
|
+
declare const MotionSettings: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
17
|
+
type MotionSettings = ReturnType<typeof MotionSettings>;
|
|
18
|
+
export default MotionSettings;
|
|
@@ -95,9 +95,10 @@
|
|
|
95
95
|
flex-direction: column;
|
|
96
96
|
gap: var(--sp-0-5);
|
|
97
97
|
padding: var(--sp-2);
|
|
98
|
-
background: var(--
|
|
99
|
-
border:
|
|
98
|
+
background: var(--control-fill);
|
|
99
|
+
border: var(--edge-width) solid var(--control-edge);
|
|
100
100
|
border-radius: var(--r-md);
|
|
101
|
+
box-shadow: var(--control-shadow);
|
|
101
102
|
color: var(--text);
|
|
102
103
|
text-align: left;
|
|
103
104
|
white-space: normal;
|
|
@@ -107,6 +108,7 @@
|
|
|
107
108
|
background var(--dur-fast) ease,
|
|
108
109
|
border-color var(--dur-fast) ease,
|
|
109
110
|
color var(--dur-fast) ease,
|
|
111
|
+
translate var(--dur-fast) ease,
|
|
110
112
|
scale var(--opt-scale-dur) var(--ease-out);
|
|
111
113
|
}
|
|
112
114
|
.opt:disabled {
|
|
@@ -154,8 +156,11 @@
|
|
|
154
156
|
color: var(--oc);
|
|
155
157
|
}
|
|
156
158
|
@media (hover: hover) and (pointer: fine) {
|
|
159
|
+
.opt:hover:not(:disabled) {
|
|
160
|
+
translate: 0 calc(-1 * var(--hover-lift));
|
|
161
|
+
}
|
|
157
162
|
.opt:hover:not(:disabled):not(.selected) {
|
|
158
|
-
border-color: var(--
|
|
163
|
+
border-color: var(--control-edge);
|
|
159
164
|
}
|
|
160
165
|
.opt.selected:hover:not(:disabled) {
|
|
161
166
|
border-color: var(--oc);
|
|
@@ -189,7 +189,7 @@
|
|
|
189
189
|
min-width: var(--box-md);
|
|
190
190
|
height: var(--box-md);
|
|
191
191
|
padding: 0 var(--control-px-md);
|
|
192
|
-
border:
|
|
192
|
+
border: var(--edge-width) solid transparent;
|
|
193
193
|
border-radius: var(--r-md);
|
|
194
194
|
background: transparent;
|
|
195
195
|
color: var(--text-muted);
|
|
@@ -201,6 +201,7 @@
|
|
|
201
201
|
background var(--dur-fast) ease,
|
|
202
202
|
border-color var(--dur-fast) ease,
|
|
203
203
|
color var(--dur-fast) ease,
|
|
204
|
+
translate var(--dur-fast) ease,
|
|
204
205
|
scale var(--page-scale-dur) var(--ease-out);
|
|
205
206
|
}
|
|
206
207
|
.page:active {
|
|
@@ -211,6 +212,7 @@
|
|
|
211
212
|
.page:hover {
|
|
212
213
|
background: var(--bg-elevated-2);
|
|
213
214
|
color: var(--text);
|
|
215
|
+
translate: 0 calc(-1 * var(--hover-lift));
|
|
214
216
|
}
|
|
215
217
|
}
|
|
216
218
|
.page.on {
|
|
@@ -392,7 +392,7 @@
|
|
|
392
392
|
min-height: var(--pop-box, var(--box-sm));
|
|
393
393
|
min-width: var(--pop-box, var(--box-sm));
|
|
394
394
|
padding: var(--pop-trigger-pad, var(--sp-1));
|
|
395
|
-
border:
|
|
395
|
+
border: var(--edge-width) solid var(--pop-trigger-border, transparent);
|
|
396
396
|
border-radius: var(--pop-trigger-radius, var(--r-md));
|
|
397
397
|
background: var(--pop-trigger-bg, transparent);
|
|
398
398
|
color: var(--pop-trigger-fg, var(--text));
|
|
@@ -403,6 +403,8 @@
|
|
|
403
403
|
background-color var(--dur-fast) var(--ease),
|
|
404
404
|
border-color var(--dur-fast) var(--ease),
|
|
405
405
|
color var(--dur-fast) var(--ease),
|
|
406
|
+
box-shadow var(--dur-fast) var(--ease),
|
|
407
|
+
translate var(--dur-fast) var(--ease),
|
|
406
408
|
scale var(--pop-scale-dur) var(--ease-out);
|
|
407
409
|
}
|
|
408
410
|
.pop-trigger:not(.bare, .trigger-toggle):active:not(:disabled, .is-disabled) {
|
|
@@ -418,11 +420,14 @@
|
|
|
418
420
|
}
|
|
419
421
|
.pop-trigger.canonical:hover:not(:disabled) {
|
|
420
422
|
border-color: var(--accent);
|
|
421
|
-
background: var(--
|
|
423
|
+
background: var(--btn-fill);
|
|
424
|
+
box-shadow: var(--btn-shadow-hover);
|
|
425
|
+
translate: 0 calc(-1 * var(--hover-lift));
|
|
422
426
|
}
|
|
423
427
|
.pop-trigger.trigger-primary:hover:not(:disabled) {
|
|
424
|
-
background: var(--
|
|
425
|
-
border-color: var(--
|
|
428
|
+
background: var(--btn-primary-fill);
|
|
429
|
+
border-color: var(--btn-primary-edge);
|
|
430
|
+
box-shadow: var(--btn-primary-shadow-hover);
|
|
426
431
|
filter: brightness(1.08);
|
|
427
432
|
}
|
|
428
433
|
.pop-trigger.trigger-ghost:hover:not(:disabled) {
|
|
@@ -453,8 +458,9 @@
|
|
|
453
458
|
min-width: 0;
|
|
454
459
|
min-height: var(--control-height-default);
|
|
455
460
|
padding: var(--pop-trigger-pad, var(--sp-2) var(--btn-px-md));
|
|
456
|
-
border-color: var(--pop-trigger-border, var(--
|
|
457
|
-
background: var(--pop-trigger-bg, var(--
|
|
461
|
+
border-color: var(--pop-trigger-border, var(--btn-edge));
|
|
462
|
+
background: var(--pop-trigger-bg, var(--btn-fill));
|
|
463
|
+
box-shadow: var(--btn-shadow);
|
|
458
464
|
font-weight: var(--fw-medium);
|
|
459
465
|
font-size: var(--pop-trigger-size, var(--control-fs-md));
|
|
460
466
|
line-height: var(--lh-none);
|
|
@@ -462,8 +468,9 @@
|
|
|
462
468
|
white-space: nowrap;
|
|
463
469
|
}
|
|
464
470
|
.pop-trigger.trigger-primary {
|
|
465
|
-
background: var(--pop-trigger-bg, var(--
|
|
466
|
-
border-color: var(--pop-trigger-border, var(--
|
|
471
|
+
background: var(--pop-trigger-bg, var(--btn-primary-fill));
|
|
472
|
+
border-color: var(--pop-trigger-border, var(--btn-primary-edge));
|
|
473
|
+
box-shadow: var(--btn-primary-shadow);
|
|
467
474
|
color: var(--pop-trigger-fg, var(--text-on-accent));
|
|
468
475
|
font-weight: var(--fw-semibold);
|
|
469
476
|
}
|
|
@@ -620,11 +627,11 @@
|
|
|
620
627
|
min-width: 10rem;
|
|
621
628
|
max-width: min(22rem, calc(100vw - 2 * var(--sp-3)));
|
|
622
629
|
padding: var(--sp-1);
|
|
623
|
-
background: var(--
|
|
630
|
+
background: var(--raised-fill);
|
|
624
631
|
color: var(--text);
|
|
625
|
-
border:
|
|
632
|
+
border: var(--edge-width) solid var(--raised-edge);
|
|
626
633
|
border-radius: var(--r-md);
|
|
627
|
-
box-shadow: var(--shadow
|
|
634
|
+
box-shadow: var(--raised-shadow);
|
|
628
635
|
transform-origin: var(--tsu-origin, top left);
|
|
629
636
|
opacity: 0;
|
|
630
637
|
scale: var(--enter-scale);
|
|
@@ -76,15 +76,15 @@
|
|
|
76
76
|
font-family: var(--font-mono);
|
|
77
77
|
font-size: 0.92em;
|
|
78
78
|
color: var(--md-code, var(--text));
|
|
79
|
-
background: var(--md-code-bg, var(--
|
|
79
|
+
background: var(--md-code-bg, var(--surface-fill-2));
|
|
80
80
|
padding: 0.1em 0.35em;
|
|
81
81
|
border-radius: var(--r-sm);
|
|
82
82
|
}
|
|
83
83
|
.prose :global(pre) {
|
|
84
84
|
margin: 0;
|
|
85
85
|
padding: var(--sp-3);
|
|
86
|
-
background: var(--
|
|
87
|
-
border:
|
|
86
|
+
background: var(--surface-fill);
|
|
87
|
+
border: var(--edge-width) solid var(--surface-edge);
|
|
88
88
|
border-radius: var(--r-md);
|
|
89
89
|
overflow-x: auto;
|
|
90
90
|
font-family: var(--font-mono);
|
|
@@ -119,12 +119,12 @@
|
|
|
119
119
|
.prose :global(th),
|
|
120
120
|
.prose :global(td) {
|
|
121
121
|
padding: var(--sp-1) var(--sp-2);
|
|
122
|
-
border:
|
|
122
|
+
border: var(--edge-width) solid var(--surface-edge);
|
|
123
123
|
text-align: left;
|
|
124
124
|
vertical-align: top;
|
|
125
125
|
}
|
|
126
126
|
.prose :global(th) {
|
|
127
|
-
background: var(--
|
|
127
|
+
background: var(--surface-fill-2);
|
|
128
128
|
color: var(--text-muted);
|
|
129
129
|
font-weight: var(--fw-semibold);
|
|
130
130
|
}
|
|
@@ -135,6 +135,6 @@
|
|
|
135
135
|
}
|
|
136
136
|
.prose :global(hr) {
|
|
137
137
|
border: 0;
|
|
138
|
-
border-top:
|
|
138
|
+
border-top: var(--edge-width) solid var(--surface-edge);
|
|
139
139
|
}
|
|
140
140
|
</style>
|
|
@@ -542,11 +542,11 @@
|
|
|
542
542
|
width: max(var(--radial-petal-size, 3.5rem), var(--touch-target));
|
|
543
543
|
height: max(var(--radial-petal-size, 3.5rem), var(--touch-target));
|
|
544
544
|
padding: 0 var(--sp-0-5);
|
|
545
|
-
border:
|
|
545
|
+
border: var(--edge-width) solid var(--raised-edge);
|
|
546
546
|
border-radius: 50%;
|
|
547
|
-
background: var(--
|
|
547
|
+
background: var(--raised-fill);
|
|
548
548
|
color: var(--text);
|
|
549
|
-
box-shadow: var(--shadow
|
|
549
|
+
box-shadow: var(--raised-shadow);
|
|
550
550
|
font-size: var(--fs-xs);
|
|
551
551
|
line-height: var(--lh-heading);
|
|
552
552
|
translate: -50% -50%;
|
|
@@ -172,9 +172,10 @@
|
|
|
172
172
|
width: var(--chip-sm);
|
|
173
173
|
height: var(--chip-sm);
|
|
174
174
|
margin-top: var(--sp-px);
|
|
175
|
-
border:
|
|
175
|
+
border: var(--edge-width) solid var(--control-edge);
|
|
176
176
|
border-radius: var(--r-pill);
|
|
177
|
-
background: var(--
|
|
177
|
+
background: var(--control-fill);
|
|
178
|
+
box-shadow: var(--control-shadow);
|
|
178
179
|
transition: border-color var(--dur-fast) var(--ease);
|
|
179
180
|
}
|
|
180
181
|
.dot-ctl::after {
|
|
@@ -202,9 +203,71 @@
|
|
|
202
203
|
opacity var(--dur-spring) var(--ease-spring),
|
|
203
204
|
scale var(--dur-spring) var(--ease-spring);
|
|
204
205
|
}
|
|
206
|
+
/* Effects follow the closest data-fx-radio ancestor; spring is the default. */
|
|
207
|
+
.radio-group:not(:global([data-fx-radio]:not([data-fx-radio='spring'])) *),
|
|
208
|
+
:global([data-fx-radio='spring']) .radio-group:not(:global([data-fx-radio='spring'] [data-fx-radio]:not([data-fx-radio='spring'])) *) {
|
|
209
|
+
& .dot-ctl::after {
|
|
210
|
+
inset: 22%;
|
|
211
|
+
width: auto;
|
|
212
|
+
height: auto;
|
|
213
|
+
margin: 0;
|
|
214
|
+
opacity: 1;
|
|
215
|
+
scale: 0;
|
|
216
|
+
transition: scale var(--dur-exit-fast) var(--ease-out);
|
|
217
|
+
}
|
|
218
|
+
& input:checked + .dot-ctl::after {
|
|
219
|
+
scale: 1;
|
|
220
|
+
transition: scale var(--dur-spring) var(--ease-spring-bounce);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/* Accent rises like liquid with a wobbling surface, then the pip drops in. */
|
|
225
|
+
:global([data-fx-radio='liquid']) .radio-group:not(:global([data-fx-radio='liquid'] [data-fx-radio]:not([data-fx-radio='liquid'])) *) {
|
|
226
|
+
& .dot-ctl {
|
|
227
|
+
overflow: hidden;
|
|
228
|
+
}
|
|
229
|
+
& .dot-ctl::before {
|
|
230
|
+
content: '';
|
|
231
|
+
position: absolute;
|
|
232
|
+
left: -50%;
|
|
233
|
+
top: 0;
|
|
234
|
+
width: 200%;
|
|
235
|
+
height: 200%;
|
|
236
|
+
border-radius: 42% 46% 40% 44%;
|
|
237
|
+
background: var(--accent);
|
|
238
|
+
translate: 0 50%;
|
|
239
|
+
pointer-events: none;
|
|
240
|
+
transition:
|
|
241
|
+
translate var(--dur-exit) var(--ease-in-out),
|
|
242
|
+
rotate var(--dur-exit) var(--ease-in-out);
|
|
243
|
+
}
|
|
244
|
+
& input:checked + .dot-ctl::before {
|
|
245
|
+
translate: 0 -30%;
|
|
246
|
+
rotate: 150deg;
|
|
247
|
+
transition:
|
|
248
|
+
translate var(--dur-slow) var(--ease-out),
|
|
249
|
+
rotate var(--dur-slow) var(--ease-out);
|
|
250
|
+
}
|
|
251
|
+
& .dot-ctl::after {
|
|
252
|
+
inset: 30%;
|
|
253
|
+
width: auto;
|
|
254
|
+
height: auto;
|
|
255
|
+
margin: 0;
|
|
256
|
+
background: var(--text-on-accent);
|
|
257
|
+
opacity: 1;
|
|
258
|
+
scale: 0;
|
|
259
|
+
transition: scale var(--dur-exit-fast) var(--ease-out);
|
|
260
|
+
}
|
|
261
|
+
& input:checked + .dot-ctl::after {
|
|
262
|
+
scale: 1;
|
|
263
|
+
transition: scale var(--dur-exit) var(--ease-spring-bounce) var(--dur-fast);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
|
|
205
267
|
input:focus-visible + .dot-ctl {
|
|
206
268
|
outline: var(--focus-ring);
|
|
207
269
|
outline-offset: var(--focus-ring-offset);
|
|
270
|
+
box-shadow: var(--control-shadow), var(--focus-glow);
|
|
208
271
|
}
|
|
209
272
|
.texts {
|
|
210
273
|
display: flex;
|
|
@@ -231,7 +294,7 @@
|
|
|
231
294
|
min-width: 0;
|
|
232
295
|
gap: var(--sp-2);
|
|
233
296
|
padding: var(--pad, var(--sp-2) var(--sp-3));
|
|
234
|
-
border:
|
|
297
|
+
border: var(--edge-width) solid var(--surface-edge);
|
|
235
298
|
border-radius: var(--r-md);
|
|
236
299
|
transition:
|
|
237
300
|
border-color var(--dur-fast) var(--ease),
|
|
@@ -239,7 +302,7 @@
|
|
|
239
302
|
}
|
|
240
303
|
.row.selected {
|
|
241
304
|
border-color: var(--accent-dim);
|
|
242
|
-
background: var(--
|
|
305
|
+
background: var(--surface-fill);
|
|
243
306
|
}
|
|
244
307
|
.row .radio {
|
|
245
308
|
flex: 1 1 auto;
|
|
@@ -431,9 +431,10 @@
|
|
|
431
431
|
min-width: 0;
|
|
432
432
|
min-height: var(--rs-height);
|
|
433
433
|
padding: var(--sp-1) var(--sp-2) var(--sp-1) var(--sp-1);
|
|
434
|
-
border:
|
|
434
|
+
border: var(--edge-width) solid var(--control-edge);
|
|
435
435
|
border-radius: var(--r-md);
|
|
436
436
|
background: var(--surface);
|
|
437
|
+
box-shadow: var(--control-shadow);
|
|
437
438
|
color: var(--text);
|
|
438
439
|
text-align: start;
|
|
439
440
|
cursor: pointer;
|
|
@@ -444,6 +445,7 @@
|
|
|
444
445
|
.rich-select :global(.pop-trigger.rs-trigger:focus-visible) {
|
|
445
446
|
outline: var(--focus-ring);
|
|
446
447
|
outline-offset: var(--focus-ring-offset);
|
|
448
|
+
box-shadow: var(--control-shadow), var(--focus-glow);
|
|
447
449
|
}
|
|
448
450
|
.rich-select :global(.pop-trigger.rs-trigger:active:not(:disabled)) {
|
|
449
451
|
scale: var(--press-scale-lg);
|
|
@@ -534,8 +536,8 @@
|
|
|
534
536
|
}
|
|
535
537
|
.rs-row[data-dragging] {
|
|
536
538
|
z-index: 1;
|
|
537
|
-
box-shadow: var(--shadow
|
|
538
|
-
background: var(--
|
|
539
|
+
box-shadow: var(--raised-shadow);
|
|
540
|
+
background: var(--raised-fill);
|
|
539
541
|
transition: none;
|
|
540
542
|
}
|
|
541
543
|
.rs-option {
|
|
@@ -587,6 +589,6 @@
|
|
|
587
589
|
display: flex;
|
|
588
590
|
flex-direction: column;
|
|
589
591
|
padding-top: var(--sp-1);
|
|
590
|
-
border-top:
|
|
592
|
+
border-top: var(--edge-width) solid var(--surface-edge);
|
|
591
593
|
}
|
|
592
594
|
</style>
|
|
@@ -276,7 +276,7 @@
|
|
|
276
276
|
height: var(--seek-track);
|
|
277
277
|
margin-top: calc(var(--seek-track) / -2);
|
|
278
278
|
border-radius: var(--r-pill);
|
|
279
|
-
background: var(--
|
|
279
|
+
background: var(--track-fill);
|
|
280
280
|
overflow: hidden;
|
|
281
281
|
transform-origin: center;
|
|
282
282
|
transition: scale var(--dur-fast) var(--ease);
|
|
@@ -322,7 +322,7 @@
|
|
|
322
322
|
border-radius: var(--r-pill);
|
|
323
323
|
background: var(--seek-accent);
|
|
324
324
|
border: 2px solid var(--bg);
|
|
325
|
-
box-shadow: var(--shadow
|
|
325
|
+
box-shadow: var(--thumb-shadow);
|
|
326
326
|
transform: translate(-50%, -50%);
|
|
327
327
|
scale: 0.6;
|
|
328
328
|
opacity: 0;
|
|
@@ -346,7 +346,7 @@
|
|
|
346
346
|
.seek:not(.seek--inert):hover .seek-thumb {
|
|
347
347
|
opacity: 1;
|
|
348
348
|
scale: 1;
|
|
349
|
-
box-shadow: var(--shadow
|
|
349
|
+
box-shadow: var(--thumb-shadow), var(--seek-halo);
|
|
350
350
|
}
|
|
351
351
|
.seek--dragging .seek-thumb {
|
|
352
352
|
scale: 1.15;
|
|
@@ -370,9 +370,9 @@
|
|
|
370
370
|
gap: var(--sp-1);
|
|
371
371
|
padding: var(--sp-1) var(--sp-2);
|
|
372
372
|
border-radius: var(--r-sm);
|
|
373
|
-
background: var(--
|
|
374
|
-
border:
|
|
375
|
-
box-shadow: var(--shadow
|
|
373
|
+
background: var(--raised-fill);
|
|
374
|
+
border: var(--edge-width) solid var(--surface-edge);
|
|
375
|
+
box-shadow: var(--raised-shadow);
|
|
376
376
|
color: var(--text);
|
|
377
377
|
font-size: var(--fs-xs);
|
|
378
378
|
font-variant-numeric: tabular-nums;
|
|
@@ -238,7 +238,7 @@
|
|
|
238
238
|
items fill the inside, which is the height minus border and padding. */
|
|
239
239
|
.seg {
|
|
240
240
|
--seg-h: var(--control-md);
|
|
241
|
-
--seg-inset: calc(var(--sp-0-5) +
|
|
241
|
+
--seg-inset: calc(var(--sp-0-5) + var(--edge-width));
|
|
242
242
|
--seg-item-h: calc(var(--seg-h) - 2 * var(--seg-inset));
|
|
243
243
|
position: relative;
|
|
244
244
|
display: inline-flex;
|
|
@@ -247,8 +247,8 @@
|
|
|
247
247
|
height: var(--seg-h);
|
|
248
248
|
min-height: var(--seg-h);
|
|
249
249
|
padding: var(--sp-0-5);
|
|
250
|
-
background: var(--
|
|
251
|
-
border:
|
|
250
|
+
background: var(--track-fill);
|
|
251
|
+
border: var(--edge-width) solid var(--track-edge);
|
|
252
252
|
border-radius: var(--r-pill);
|
|
253
253
|
max-width: 100%;
|
|
254
254
|
min-width: 0;
|
|
@@ -326,8 +326,8 @@
|
|
|
326
326
|
width: 0;
|
|
327
327
|
height: 0;
|
|
328
328
|
border-radius: var(--r-pill);
|
|
329
|
-
background: var(--
|
|
330
|
-
box-shadow: var(--shadow
|
|
329
|
+
background: var(--thumb-fill);
|
|
330
|
+
box-shadow: var(--thumb-shadow);
|
|
331
331
|
transform-origin: top left;
|
|
332
332
|
pointer-events: none;
|
|
333
333
|
transition:
|
|
@@ -430,8 +430,8 @@
|
|
|
430
430
|
}
|
|
431
431
|
.seg-item.selected {
|
|
432
432
|
color: var(--text);
|
|
433
|
-
background: var(--
|
|
434
|
-
box-shadow: var(--shadow
|
|
433
|
+
background: var(--thumb-fill);
|
|
434
|
+
box-shadow: var(--thumb-shadow);
|
|
435
435
|
}
|
|
436
436
|
.seg.placed .seg-item.selected {
|
|
437
437
|
background: transparent;
|
|
@@ -571,7 +571,7 @@
|
|
|
571
571
|
}
|
|
572
572
|
.sl-row {
|
|
573
573
|
position: relative;
|
|
574
|
-
border-bottom:
|
|
574
|
+
border-bottom: var(--edge-width) solid var(--surface-edge);
|
|
575
575
|
}
|
|
576
576
|
.sl-row:last-child {
|
|
577
577
|
border-bottom: 0;
|
|
@@ -609,7 +609,7 @@
|
|
|
609
609
|
position: relative;
|
|
610
610
|
z-index: 1;
|
|
611
611
|
background: var(--bg-elevated-2);
|
|
612
|
-
box-shadow: var(--shadow
|
|
612
|
+
box-shadow: var(--raised-shadow);
|
|
613
613
|
transition: none;
|
|
614
614
|
}
|
|
615
615
|
.sl-grip,
|