@dorsk/tsumikit 0.74.0 → 0.76.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.
Files changed (132) hide show
  1. package/README.md +38 -1
  2. package/dist/autoresize.d.ts +2 -0
  3. package/dist/autoresize.js +8 -1
  4. package/dist/components/atoms/Artwork.svelte +12 -5
  5. package/dist/components/atoms/Avatar.svelte +1 -1
  6. package/dist/components/atoms/Badge.svelte +59 -23
  7. package/dist/components/atoms/Button.svelte +130 -96
  8. package/dist/components/atoms/Button.svelte.d.ts +2 -0
  9. package/dist/components/atoms/Card.svelte +10 -4
  10. package/dist/components/atoms/Checkbox.svelte +36 -9
  11. package/dist/components/atoms/Checkbox.svelte.d.ts +2 -0
  12. package/dist/components/atoms/Gauge.svelte +20 -14
  13. package/dist/components/atoms/Heading.svelte +1 -1
  14. package/dist/components/atoms/Icon.svelte +1 -0
  15. package/dist/components/atoms/Input.svelte +67 -13
  16. package/dist/components/atoms/Kbd.svelte +3 -3
  17. package/dist/components/atoms/Link.svelte +7 -2
  18. package/dist/components/atoms/Progress.svelte +4 -2
  19. package/dist/components/atoms/Scrim.svelte +3 -8
  20. package/dist/components/atoms/SegmentedProgress.svelte +5 -4
  21. package/dist/components/atoms/Select.svelte +58 -27
  22. package/dist/components/atoms/Slider.svelte +79 -22
  23. package/dist/components/atoms/Slider.svelte.d.ts +2 -0
  24. package/dist/components/atoms/Swatch.svelte +19 -8
  25. package/dist/components/atoms/Switch.svelte +34 -21
  26. package/dist/components/atoms/Switch.svelte.d.ts +2 -0
  27. package/dist/components/atoms/Text.svelte +1 -1
  28. package/dist/components/atoms/Textarea.svelte +34 -12
  29. package/dist/components/atoms/TimeDisplay.svelte +4 -2
  30. package/dist/components/layouts/AppShell.svelte +26 -15
  31. package/dist/components/layouts/MasterDetail.svelte +23 -21
  32. package/dist/components/layouts/NavBar.svelte +11 -8
  33. package/dist/components/layouts/NavItem.svelte +15 -7
  34. package/dist/components/layouts/NavSection.svelte +1 -1
  35. package/dist/components/layouts/ResizablePanel.svelte +37 -16
  36. package/dist/components/layouts/TabBar.svelte +24 -14
  37. package/dist/components/layouts/TabBar.svelte.d.ts +2 -0
  38. package/dist/components/molecules/Accordion.svelte +4 -0
  39. package/dist/components/molecules/Accordion.svelte.d.ts +2 -0
  40. package/dist/components/molecules/AttachmentList.svelte +14 -11
  41. package/dist/components/molecules/Breadcrumb.svelte +13 -9
  42. package/dist/components/molecules/Callout.svelte +3 -3
  43. package/dist/components/molecules/CapBar.svelte +23 -22
  44. package/dist/components/molecules/Carousel.svelte +27 -17
  45. package/dist/components/molecules/ChatBubble.svelte +2 -2
  46. package/dist/components/molecules/CodeBlock.svelte +2 -2
  47. package/dist/components/molecules/Combobox.svelte +30 -1
  48. package/dist/components/molecules/Combobox.svelte.d.ts +4 -0
  49. package/dist/components/molecules/Composer.svelte +2 -2
  50. package/dist/components/molecules/ConfirmModal.svelte +4 -0
  51. package/dist/components/molecules/ConfirmModal.svelte.d.ts +2 -0
  52. package/dist/components/molecules/CopyButton.svelte +46 -2
  53. package/dist/components/molecules/CopyButton.svelte.d.ts +2 -0
  54. package/dist/components/molecules/Disclosure.svelte +23 -12
  55. package/dist/components/molecules/Disclosure.svelte.d.ts +2 -0
  56. package/dist/components/molecules/Drawer.svelte +43 -23
  57. package/dist/components/molecules/Drawer.svelte.d.ts +2 -0
  58. package/dist/components/molecules/Dropzone.svelte +24 -8
  59. package/dist/components/molecules/EmojiPicker.svelte +27 -8
  60. package/dist/components/molecules/EmojiPicker.svelte.d.ts +2 -0
  61. package/dist/components/molecules/EmptyState.svelte +5 -5
  62. package/dist/components/molecules/Fieldset.svelte +8 -13
  63. package/dist/components/molecules/FileButton.svelte +57 -31
  64. package/dist/components/molecules/FileButton.svelte.d.ts +2 -0
  65. package/dist/components/molecules/FilterInput.svelte +51 -11
  66. package/dist/components/molecules/FontScalePicker.svelte +20 -9
  67. package/dist/components/molecules/GitRef.svelte +9 -7
  68. package/dist/components/molecules/GlyphStack.svelte +46 -14
  69. package/dist/components/molecules/IconButton.svelte +6 -3
  70. package/dist/components/molecules/IconButton.svelte.d.ts +2 -0
  71. package/dist/components/molecules/InputGroup.svelte +13 -12
  72. package/dist/components/molecules/LoadMore.svelte +6 -1
  73. package/dist/components/molecules/LoadMore.svelte.d.ts +2 -0
  74. package/dist/components/molecules/Menu.svelte +33 -7
  75. package/dist/components/molecules/Menu.svelte.d.ts +2 -0
  76. package/dist/components/molecules/Metric.svelte +11 -9
  77. package/dist/components/molecules/Modal.svelte +76 -26
  78. package/dist/components/molecules/Modal.svelte.d.ts +2 -0
  79. package/dist/components/molecules/OptionButton.svelte +28 -10
  80. package/dist/components/molecules/OptionButton.svelte.d.ts +2 -0
  81. package/dist/components/molecules/Pagination.svelte +26 -9
  82. package/dist/components/molecules/Pagination.svelte.d.ts +2 -0
  83. package/dist/components/molecules/Popover.svelte +107 -51
  84. package/dist/components/molecules/Popover.svelte.d.ts +2 -0
  85. package/dist/components/molecules/Prose.svelte +1 -1
  86. package/dist/components/molecules/PullToRefresh.svelte +14 -10
  87. package/dist/components/molecules/PullToRefresh.svelte.d.ts +2 -0
  88. package/dist/components/molecules/RadialMenu.svelte +52 -19
  89. package/dist/components/molecules/RadialMenu.svelte.d.ts +2 -0
  90. package/dist/components/molecules/RadioGroup.svelte +38 -23
  91. package/dist/components/molecules/RadioGroup.svelte.d.ts +2 -0
  92. package/dist/components/molecules/RichSelect.svelte +583 -0
  93. package/dist/components/molecules/RichSelect.svelte.d.ts +68 -0
  94. package/dist/components/molecules/SectionHeader.svelte +13 -8
  95. package/dist/components/molecules/SeekSlider.svelte +38 -27
  96. package/dist/components/molecules/SeekSlider.svelte.d.ts +2 -0
  97. package/dist/components/molecules/SegmentedControl.svelte +139 -86
  98. package/dist/components/molecules/SegmentedControl.svelte.d.ts +2 -0
  99. package/dist/components/molecules/SelectButton.svelte +21 -6
  100. package/dist/components/molecules/SelectButton.svelte.d.ts +2 -0
  101. package/dist/components/molecules/SortableList.svelte +10 -11
  102. package/dist/components/molecules/SoundSettings.svelte +161 -0
  103. package/dist/components/molecules/SoundSettings.svelte.d.ts +17 -0
  104. package/dist/components/molecules/SplitButton.svelte +30 -3
  105. package/dist/components/molecules/SplitButton.svelte.d.ts +2 -0
  106. package/dist/components/molecules/SwipeRow.svelte +18 -15
  107. package/dist/components/molecules/SwipeRow.svelte.d.ts +2 -0
  108. package/dist/components/molecules/Tabs.svelte +92 -10
  109. package/dist/components/molecules/Tabs.svelte.d.ts +2 -0
  110. package/dist/components/molecules/ThemePicker.svelte +25 -10
  111. package/dist/components/molecules/Timestamp.svelte +12 -7
  112. package/dist/components/molecules/Toaster.svelte +65 -14
  113. package/dist/components/molecules/Toaster.svelte.d.ts +2 -0
  114. package/dist/components/molecules/Toggle.svelte +36 -13
  115. package/dist/components/molecules/Toggle.svelte.d.ts +2 -0
  116. package/dist/components/molecules/Tooltip.svelte +41 -10
  117. package/dist/components/molecules/Tooltip.svelte.d.ts +1 -1
  118. package/dist/components/molecules/VolumeSlider.svelte +34 -14
  119. package/dist/components/molecules/VolumeSlider.svelte.d.ts +2 -0
  120. package/dist/components/molecules/WorkingDir.svelte +1 -0
  121. package/dist/components/molecules/rich-select-keyboard.d.ts +82 -0
  122. package/dist/components/molecules/rich-select-keyboard.js +114 -0
  123. package/dist/components/organisms/ConversationFeed.svelte +24 -1
  124. package/dist/components/organisms/DataTable.svelte +37 -14
  125. package/dist/floating.js +26 -0
  126. package/dist/index.d.ts +2 -0
  127. package/dist/index.js +2 -0
  128. package/dist/sound-synth.js +17 -12
  129. package/dist/stores/toast.svelte.d.ts +9 -0
  130. package/dist/stores/toast.svelte.js +45 -9
  131. package/dist/styles/reset.css +3 -3
  132. package/package.json +1 -1
@@ -15,6 +15,8 @@ type Own = {
15
15
  open?: boolean;
16
16
  onopen?: () => void;
17
17
  onclose?: () => void;
18
+ /** Play UI sounds when enabled globally; false silences this instance. */
19
+ sound?: boolean;
18
20
  /** Replaces the default FAB content. */
19
21
  trigger?: Snippet<[{
20
22
  open: boolean;
@@ -14,6 +14,7 @@
14
14
 
15
15
  <script lang="ts">
16
16
  import type { Snippet } from 'svelte';
17
+ import { playSound } from '../../sound';
17
18
 
18
19
  // Native <input type="radio"> sharing one `name`: the browser handles
19
20
  // single-selection, arrow keys and form participation. `variant="rows"`
@@ -28,6 +29,7 @@
28
29
  action,
29
30
  below,
30
31
  onfocuschange,
32
+ sound = true,
31
33
  class: klass = ''
32
34
  }: {
33
35
  options: RadioOption[];
@@ -41,6 +43,8 @@
41
43
  /** Fires once each time a different option becomes active — by keyboard
42
44
  * focus or by pointer hover — so a consumer can drive a preview pane. */
43
45
  onfocuschange?: (value: string) => void;
46
+ /** Play UI sounds when enabled globally; false silences this instance. */
47
+ sound?: boolean;
44
48
  class?: string;
45
49
  } = $props();
46
50
 
@@ -53,6 +57,7 @@
53
57
  active = v;
54
58
  onfocuschange?.(v);
55
59
  }
60
+ const onchange = () => playSound('click', sound);
56
61
  </script>
57
62
 
58
63
  <div
@@ -76,6 +81,7 @@
76
81
  aria-label={o.label}
77
82
  aria-describedby={descId(o)}
78
83
  onfocus={() => activate(o.value)}
84
+ {onchange}
79
85
  />
80
86
  {#if o.description}<span class="sr-only" id={descId(o)}>{o.description}</span>{/if}
81
87
  <span class="swatch-chip" aria-hidden="true" style="--swatch: {o.color ?? 'var(--accent)'}"></span>
@@ -92,6 +98,7 @@
92
98
  disabled={o.disabled}
93
99
  aria-describedby={descId(o)}
94
100
  onfocus={() => activate(o.value)}
101
+ {onchange}
95
102
  />
96
103
  <span class="dot-ctl" aria-hidden="true"></span>
97
104
  <span class="texts">
@@ -117,6 +124,7 @@
117
124
  disabled={o.disabled}
118
125
  aria-describedby={descId(o)}
119
126
  onfocus={() => activate(o.value)}
127
+ {onchange}
120
128
  />
121
129
  <span class="dot-ctl" aria-hidden="true"></span>
122
130
  <span class="texts">
@@ -149,7 +157,7 @@
149
157
  }
150
158
  .radio.disabled,
151
159
  .row.disabled {
152
- opacity: 0.45;
160
+ opacity: var(--disabled-opacity);
153
161
  }
154
162
  input {
155
163
  position: absolute;
@@ -161,40 +169,47 @@
161
169
  .dot-ctl {
162
170
  position: relative;
163
171
  flex: none;
164
- width: 1.15rem;
165
- height: 1.15rem;
166
- margin-top: 0.1rem;
172
+ width: var(--chip-sm);
173
+ height: var(--chip-sm);
174
+ margin-top: var(--sp-px);
167
175
  border: 1px solid var(--border-strong);
168
176
  border-radius: var(--r-pill);
169
177
  background: var(--bg);
170
- transition: border-color 0.12s var(--ease);
178
+ transition: border-color var(--dur-fast) var(--ease);
171
179
  }
172
180
  .dot-ctl::after {
173
181
  content: '';
174
182
  position: absolute;
175
- inset: 50%;
176
- width: 0.55rem;
177
- height: 0.55rem;
178
- margin: -0.275rem 0 0 -0.275rem;
183
+ inset: 0;
184
+ width: var(--sp-2);
185
+ height: var(--sp-2);
186
+ margin: auto;
179
187
  border-radius: var(--r-pill);
180
188
  background: var(--accent);
181
- transform: scale(0);
182
- transition: transform 0.1s var(--ease);
189
+ opacity: 0;
190
+ scale: 0.5;
191
+ transition:
192
+ opacity var(--dur-exit-fast) var(--ease-out),
193
+ scale var(--dur-exit-fast) var(--ease-out);
183
194
  }
184
195
  input:checked + .dot-ctl {
185
196
  border-color: var(--accent);
186
197
  }
187
198
  input:checked + .dot-ctl::after {
188
- transform: scale(1);
199
+ opacity: 1;
200
+ scale: 1;
201
+ transition:
202
+ opacity var(--dur-spring) var(--ease-spring),
203
+ scale var(--dur-spring) var(--ease-spring);
189
204
  }
190
205
  input:focus-visible + .dot-ctl {
191
- outline: 2px solid var(--accent);
192
- outline-offset: 2px;
206
+ outline: var(--focus-ring);
207
+ outline-offset: var(--focus-ring-offset);
193
208
  }
194
209
  .texts {
195
210
  display: flex;
196
211
  flex-direction: column;
197
- gap: 1px;
212
+ gap: var(--sp-px);
198
213
  min-width: 0;
199
214
  }
200
215
  .hint {
@@ -218,8 +233,8 @@
218
233
  border: 1px solid var(--border);
219
234
  border-radius: var(--r-md);
220
235
  transition:
221
- border-color 0.12s var(--ease),
222
- background-color 0.12s var(--ease);
236
+ border-color var(--dur-fast) var(--ease),
237
+ background-color var(--dur-fast) var(--ease);
223
238
  }
224
239
  .row.selected {
225
240
  border-color: var(--accent-dim);
@@ -240,7 +255,7 @@
240
255
  min-width: 0;
241
256
  }
242
257
  .row .label-text {
243
- font-weight: 600;
258
+ font-weight: var(--fw-semibold);
244
259
  }
245
260
  .note {
246
261
  font-size: var(--fs-xs);
@@ -287,17 +302,17 @@
287
302
  cursor: pointer;
288
303
  }
289
304
  .swatch.disabled {
290
- opacity: 0.45;
305
+ opacity: var(--disabled-opacity);
291
306
  cursor: not-allowed;
292
307
  }
293
308
  .swatch-chip {
294
- width: 1.6rem;
295
- height: 1.6rem;
309
+ width: var(--chip-md);
310
+ height: var(--chip-md);
296
311
  border-radius: var(--r-pill);
297
312
  background: var(--swatch);
298
313
  border: 2px solid transparent;
299
314
  box-shadow: 0 0 0 1px var(--border-strong);
300
- transition: box-shadow 0.12s var(--ease);
315
+ transition: box-shadow var(--dur-fast) var(--ease);
301
316
  }
302
317
  .swatch input:checked + .swatch-chip {
303
318
  border-color: var(--bg);
@@ -305,6 +320,6 @@
305
320
  }
306
321
  .swatch input:focus-visible + .swatch-chip {
307
322
  outline: var(--focus-ring);
308
- outline-offset: 2px;
323
+ outline-offset: var(--focus-ring-offset);
309
324
  }
310
325
  </style>
@@ -22,6 +22,8 @@ type $$ComponentProps = {
22
22
  /** Fires once each time a different option becomes active — by keyboard
23
23
  * focus or by pointer hover — so a consumer can drive a preview pane. */
24
24
  onfocuschange?: (value: string) => void;
25
+ /** Play UI sounds when enabled globally; false silences this instance. */
26
+ sound?: boolean;
25
27
  class?: string;
26
28
  };
27
29
  declare const RadioGroup: import("svelte").Component<$$ComponentProps, {}, "value">;