@dorsk/tsumikit 0.74.0 → 0.75.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/README.md +38 -1
- package/dist/autoresize.d.ts +2 -0
- package/dist/autoresize.js +8 -1
- package/dist/components/atoms/Artwork.svelte +12 -5
- package/dist/components/atoms/Avatar.svelte +1 -1
- package/dist/components/atoms/Badge.svelte +59 -23
- package/dist/components/atoms/Button.svelte +130 -96
- package/dist/components/atoms/Button.svelte.d.ts +2 -0
- package/dist/components/atoms/Card.svelte +10 -4
- package/dist/components/atoms/Checkbox.svelte +36 -9
- package/dist/components/atoms/Checkbox.svelte.d.ts +2 -0
- package/dist/components/atoms/Gauge.svelte +20 -14
- package/dist/components/atoms/Heading.svelte +1 -1
- package/dist/components/atoms/Icon.svelte +1 -0
- package/dist/components/atoms/Input.svelte +67 -13
- package/dist/components/atoms/Kbd.svelte +3 -3
- package/dist/components/atoms/Link.svelte +7 -2
- package/dist/components/atoms/Progress.svelte +4 -2
- package/dist/components/atoms/Scrim.svelte +3 -8
- package/dist/components/atoms/SegmentedProgress.svelte +5 -4
- package/dist/components/atoms/Select.svelte +58 -27
- package/dist/components/atoms/Slider.svelte +79 -22
- package/dist/components/atoms/Slider.svelte.d.ts +2 -0
- package/dist/components/atoms/Swatch.svelte +19 -8
- package/dist/components/atoms/Switch.svelte +34 -21
- package/dist/components/atoms/Switch.svelte.d.ts +2 -0
- package/dist/components/atoms/Text.svelte +1 -1
- package/dist/components/atoms/Textarea.svelte +34 -12
- package/dist/components/atoms/TimeDisplay.svelte +4 -2
- package/dist/components/layouts/AppShell.svelte +26 -15
- package/dist/components/layouts/MasterDetail.svelte +23 -21
- package/dist/components/layouts/NavBar.svelte +11 -8
- package/dist/components/layouts/NavItem.svelte +15 -7
- package/dist/components/layouts/NavSection.svelte +1 -1
- package/dist/components/layouts/ResizablePanel.svelte +37 -16
- package/dist/components/layouts/TabBar.svelte +24 -14
- package/dist/components/layouts/TabBar.svelte.d.ts +2 -0
- package/dist/components/molecules/Accordion.svelte +4 -0
- package/dist/components/molecules/Accordion.svelte.d.ts +2 -0
- package/dist/components/molecules/AttachmentList.svelte +14 -11
- package/dist/components/molecules/Breadcrumb.svelte +13 -9
- package/dist/components/molecules/Callout.svelte +3 -3
- package/dist/components/molecules/CapBar.svelte +23 -22
- package/dist/components/molecules/Carousel.svelte +27 -17
- package/dist/components/molecules/ChatBubble.svelte +2 -2
- package/dist/components/molecules/CodeBlock.svelte +2 -2
- package/dist/components/molecules/Combobox.svelte +30 -1
- package/dist/components/molecules/Combobox.svelte.d.ts +4 -0
- package/dist/components/molecules/Composer.svelte +2 -2
- package/dist/components/molecules/ConfirmModal.svelte +4 -0
- package/dist/components/molecules/ConfirmModal.svelte.d.ts +2 -0
- package/dist/components/molecules/CopyButton.svelte +46 -2
- package/dist/components/molecules/CopyButton.svelte.d.ts +2 -0
- package/dist/components/molecules/Disclosure.svelte +23 -12
- package/dist/components/molecules/Disclosure.svelte.d.ts +2 -0
- package/dist/components/molecules/Drawer.svelte +43 -23
- package/dist/components/molecules/Drawer.svelte.d.ts +2 -0
- package/dist/components/molecules/Dropzone.svelte +24 -8
- package/dist/components/molecules/EmojiPicker.svelte +27 -8
- package/dist/components/molecules/EmojiPicker.svelte.d.ts +2 -0
- package/dist/components/molecules/EmptyState.svelte +5 -5
- package/dist/components/molecules/Fieldset.svelte +8 -13
- package/dist/components/molecules/FileButton.svelte +57 -31
- package/dist/components/molecules/FileButton.svelte.d.ts +2 -0
- package/dist/components/molecules/FilterInput.svelte +51 -11
- package/dist/components/molecules/FontScalePicker.svelte +20 -9
- package/dist/components/molecules/GitRef.svelte +9 -7
- package/dist/components/molecules/GlyphStack.svelte +38 -14
- package/dist/components/molecules/IconButton.svelte +6 -3
- package/dist/components/molecules/IconButton.svelte.d.ts +2 -0
- package/dist/components/molecules/InputGroup.svelte +13 -12
- package/dist/components/molecules/LoadMore.svelte +6 -1
- package/dist/components/molecules/LoadMore.svelte.d.ts +2 -0
- package/dist/components/molecules/Menu.svelte +33 -7
- package/dist/components/molecules/Menu.svelte.d.ts +2 -0
- package/dist/components/molecules/Metric.svelte +11 -9
- package/dist/components/molecules/Modal.svelte +76 -26
- package/dist/components/molecules/Modal.svelte.d.ts +2 -0
- package/dist/components/molecules/OptionButton.svelte +28 -10
- package/dist/components/molecules/OptionButton.svelte.d.ts +2 -0
- package/dist/components/molecules/Pagination.svelte +26 -9
- package/dist/components/molecules/Pagination.svelte.d.ts +2 -0
- package/dist/components/molecules/Popover.svelte +107 -51
- package/dist/components/molecules/Popover.svelte.d.ts +2 -0
- package/dist/components/molecules/Prose.svelte +1 -1
- package/dist/components/molecules/PullToRefresh.svelte +14 -10
- package/dist/components/molecules/PullToRefresh.svelte.d.ts +2 -0
- package/dist/components/molecules/RadialMenu.svelte +52 -19
- package/dist/components/molecules/RadialMenu.svelte.d.ts +2 -0
- package/dist/components/molecules/RadioGroup.svelte +38 -23
- package/dist/components/molecules/RadioGroup.svelte.d.ts +2 -0
- package/dist/components/molecules/SectionHeader.svelte +13 -8
- package/dist/components/molecules/SeekSlider.svelte +38 -27
- package/dist/components/molecules/SeekSlider.svelte.d.ts +2 -0
- package/dist/components/molecules/SegmentedControl.svelte +139 -86
- package/dist/components/molecules/SegmentedControl.svelte.d.ts +2 -0
- package/dist/components/molecules/SelectButton.svelte +21 -6
- package/dist/components/molecules/SelectButton.svelte.d.ts +2 -0
- package/dist/components/molecules/SortableList.svelte +10 -11
- package/dist/components/molecules/SoundSettings.svelte +161 -0
- package/dist/components/molecules/SoundSettings.svelte.d.ts +17 -0
- package/dist/components/molecules/SplitButton.svelte +30 -3
- package/dist/components/molecules/SplitButton.svelte.d.ts +2 -0
- package/dist/components/molecules/SwipeRow.svelte +18 -15
- package/dist/components/molecules/SwipeRow.svelte.d.ts +2 -0
- package/dist/components/molecules/Tabs.svelte +92 -10
- package/dist/components/molecules/Tabs.svelte.d.ts +2 -0
- package/dist/components/molecules/ThemePicker.svelte +25 -10
- package/dist/components/molecules/Timestamp.svelte +12 -7
- package/dist/components/molecules/Toaster.svelte +65 -14
- package/dist/components/molecules/Toaster.svelte.d.ts +2 -0
- package/dist/components/molecules/Toggle.svelte +36 -13
- package/dist/components/molecules/Toggle.svelte.d.ts +2 -0
- package/dist/components/molecules/Tooltip.svelte +41 -10
- package/dist/components/molecules/Tooltip.svelte.d.ts +1 -1
- package/dist/components/molecules/VolumeSlider.svelte +34 -14
- package/dist/components/molecules/VolumeSlider.svelte.d.ts +2 -0
- package/dist/components/molecules/WorkingDir.svelte +1 -0
- package/dist/components/organisms/ConversationFeed.svelte +4 -0
- package/dist/components/organisms/DataTable.svelte +37 -14
- package/dist/floating.js +26 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/sound-synth.js +17 -12
- package/dist/stores/toast.svelte.d.ts +9 -0
- package/dist/stores/toast.svelte.js +45 -9
- package/package.json +1 -1
|
@@ -5,22 +5,54 @@
|
|
|
5
5
|
export const TOAST_MS = 4000;
|
|
6
6
|
/** Toasts with an action linger longer: the action is only reachable while visible. */
|
|
7
7
|
export const ACTION_TOAST_MS = 7000;
|
|
8
|
+
/** Matches `--dur-exit-slow`; the removal never waits on `transitionend` alone. */
|
|
9
|
+
export const TOAST_EXIT_MS = 200;
|
|
8
10
|
let seq = 0;
|
|
9
11
|
class Toasts {
|
|
10
12
|
items = $state([]);
|
|
11
13
|
#timers = new Map();
|
|
14
|
+
#due = new Map();
|
|
15
|
+
#paused = new Map();
|
|
16
|
+
#arm(id, ms) {
|
|
17
|
+
this.#due.set(id, Date.now() + ms);
|
|
18
|
+
this.#timers.set(id, setTimeout(() => this.dismiss(id), ms));
|
|
19
|
+
}
|
|
20
|
+
#disarm(id) {
|
|
21
|
+
const timer = this.#timers.get(id);
|
|
22
|
+
if (timer)
|
|
23
|
+
clearTimeout(timer);
|
|
24
|
+
this.#timers.delete(id);
|
|
25
|
+
this.#due.delete(id);
|
|
26
|
+
this.#paused.delete(id);
|
|
27
|
+
}
|
|
12
28
|
show(message, opts = {}) {
|
|
13
29
|
const id = ++seq;
|
|
14
30
|
const duration = opts.duration ?? (opts.action ? ACTION_TOAST_MS : TOAST_MS);
|
|
15
31
|
const tone = opts.tone === 'danger' ? 'error' : (opts.tone ?? 'neutral');
|
|
16
32
|
this.items = [
|
|
17
33
|
...this.items,
|
|
18
|
-
{ id, message, tone, duration, action: opts.action, pending: false },
|
|
34
|
+
{ id, message, tone, duration, action: opts.action, pending: false, leaving: false },
|
|
19
35
|
];
|
|
20
36
|
if (duration > 0)
|
|
21
|
-
this.#
|
|
37
|
+
this.#arm(id, duration);
|
|
22
38
|
return id;
|
|
23
39
|
}
|
|
40
|
+
/** Hold the auto-dismiss (pointer over the toast); `resume` restarts the remaining time. */
|
|
41
|
+
pause(id) {
|
|
42
|
+
const due = this.#due.get(id);
|
|
43
|
+
if (due === undefined)
|
|
44
|
+
return;
|
|
45
|
+
const left = Math.max(0, due - Date.now());
|
|
46
|
+
this.#disarm(id);
|
|
47
|
+
this.#paused.set(id, left);
|
|
48
|
+
}
|
|
49
|
+
resume(id) {
|
|
50
|
+
const left = this.#paused.get(id);
|
|
51
|
+
this.#paused.delete(id);
|
|
52
|
+
if (left === undefined || !this.items.some((t) => t.id === id && !t.leaving))
|
|
53
|
+
return;
|
|
54
|
+
this.#arm(id, left);
|
|
55
|
+
}
|
|
24
56
|
ok(message, duration, action) {
|
|
25
57
|
return this.show(message, { tone: 'ok', duration, action });
|
|
26
58
|
}
|
|
@@ -31,10 +63,16 @@ class Toasts {
|
|
|
31
63
|
return this.show(message, { tone: 'info', duration, action });
|
|
32
64
|
}
|
|
33
65
|
dismiss(id) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
66
|
+
this.#disarm(id);
|
|
67
|
+
const t = this.items.find((x) => x.id === id);
|
|
68
|
+
if (!t || t.leaving)
|
|
69
|
+
return;
|
|
70
|
+
this.items = this.items.map((x) => (x.id === id ? { ...x, leaving: true } : x));
|
|
71
|
+
setTimeout(() => this.remove(id), TOAST_EXIT_MS);
|
|
72
|
+
}
|
|
73
|
+
/** Drop a toast at once, skipping the exit. */
|
|
74
|
+
remove(id) {
|
|
75
|
+
this.#disarm(id);
|
|
38
76
|
this.items = this.items.filter((t) => t.id !== id);
|
|
39
77
|
}
|
|
40
78
|
/** Run a toast's action once: the toast stays (button loading) until run settles, then dismisses. */
|
|
@@ -42,9 +80,7 @@ class Toasts {
|
|
|
42
80
|
const t = this.items.find((x) => x.id === id);
|
|
43
81
|
if (!t?.action || t.pending)
|
|
44
82
|
return;
|
|
45
|
-
|
|
46
|
-
if (timer)
|
|
47
|
-
clearTimeout(timer);
|
|
83
|
+
this.#disarm(id);
|
|
48
84
|
this.items = this.items.map((x) => (x.id === id ? { ...x, pending: true } : x));
|
|
49
85
|
try {
|
|
50
86
|
await t.action.run();
|
package/package.json
CHANGED