@sveltia/ui 0.72.0 → 0.72.2

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 (90) hide show
  1. package/dist/components/alert/infobar.svelte +1 -1
  2. package/dist/components/button/button.svelte +1 -1
  3. package/dist/components/button/select-button.svelte +2 -1
  4. package/dist/components/calendar/calendar.d.ts +20 -0
  5. package/dist/components/calendar/calendar.js +81 -0
  6. package/dist/components/calendar/calendar.svelte +23 -45
  7. package/dist/components/checkbox/checkbox-group.svelte +1 -1
  8. package/dist/components/checkbox/checkbox.svelte +6 -1
  9. package/dist/components/dialog/dialog.svelte +1 -1
  10. package/dist/components/drawer/drawer.svelte +1 -1
  11. package/dist/components/emoji/emoji-suggestions.svelte +14 -40
  12. package/dist/components/emoji/position.d.ts +44 -0
  13. package/dist/components/emoji/position.js +60 -0
  14. package/dist/components/progressbar/progressbar.svelte +1 -1
  15. package/dist/components/radio/radio-group.svelte +1 -1
  16. package/dist/components/resizable-pane/resizable-handle.svelte +15 -47
  17. package/dist/components/resizable-pane/resizable-pane-group.svelte +37 -100
  18. package/dist/components/resizable-pane/resizable-pane.svelte +1 -1
  19. package/dist/components/resizable-pane/sizing.d.ts +48 -0
  20. package/dist/components/resizable-pane/sizing.js +190 -0
  21. package/dist/components/scroll/infinite-scroll.svelte +2 -0
  22. package/dist/components/select/combobox.svelte +3 -1
  23. package/dist/components/select/select-tags.d.ts +17 -0
  24. package/dist/components/select/select-tags.js +95 -0
  25. package/dist/components/select/select-tags.svelte +26 -28
  26. package/dist/components/slider/slider.d.ts +17 -0
  27. package/dist/components/slider/slider.js +96 -0
  28. package/dist/components/slider/slider.svelte +30 -56
  29. package/dist/components/tabs/tab-box.svelte +1 -1
  30. package/dist/components/tabs/tab-list.d.ts +6 -0
  31. package/dist/components/tabs/tab-list.js +19 -0
  32. package/dist/components/tabs/tab-list.svelte +2 -14
  33. package/dist/components/text-editor/code-editor.d.ts +5 -0
  34. package/dist/components/text-editor/code-editor.js +28 -0
  35. package/dist/components/text-editor/code-editor.svelte +7 -8
  36. package/dist/components/text-editor/emoji-autocomplete.svelte +9 -1
  37. package/dist/components/text-editor/lexical-root.svelte +3 -1
  38. package/dist/components/text-editor/shiki/facade.js +1 -1
  39. package/dist/components/text-editor/shiki/highlighter.js +40 -15
  40. package/dist/components/text-editor/shiki/version.d.ts +1 -1
  41. package/dist/components/text-editor/shiki/version.js +1 -1
  42. package/dist/components/text-editor/store.svelte.js +17 -7
  43. package/dist/components/text-editor/text-editor.svelte +4 -0
  44. package/dist/components/text-editor/toolbar/code-editor-toolbar.svelte +1 -1
  45. package/dist/components/text-editor/toolbar/code-language-switcher.svelte +4 -1
  46. package/dist/components/text-editor/toolbar/format-text-button.svelte +3 -1
  47. package/dist/components/text-editor/toolbar/insert-item-button.svelte +1 -1
  48. package/dist/components/text-editor/toolbar/insert-link-button.svelte +10 -3
  49. package/dist/components/text-editor/toolbar/text-editor-toolbar.svelte +4 -5
  50. package/dist/components/text-editor/toolbar/toggle-block-menu-item.svelte +2 -0
  51. package/dist/components/text-field/emoji-autocomplete.svelte +2 -0
  52. package/dist/components/text-field/number-input.d.ts +15 -0
  53. package/dist/components/text-field/number-input.js +98 -0
  54. package/dist/components/text-field/number-input.svelte +27 -23
  55. package/dist/components/text-field/text-input.svelte +9 -3
  56. package/dist/components/toast/toast.svelte +7 -2
  57. package/dist/components/toolbar/toolbar.svelte +1 -1
  58. package/dist/components/tree/tree-item.svelte +3 -2
  59. package/dist/components/typography/truncated-text.svelte +2 -1
  60. package/dist/components/util/app-shell.d.ts +1 -0
  61. package/dist/components/util/app-shell.js +29 -0
  62. package/dist/components/util/app-shell.svelte +5 -18
  63. package/dist/components/util/modal.d.ts +5 -0
  64. package/dist/components/util/modal.js +22 -0
  65. package/dist/components/util/modal.svelte +9 -10
  66. package/dist/components/util/popup.svelte +11 -0
  67. package/dist/locales/ar.yaml +2 -2
  68. package/dist/locales/ca.yaml +2 -2
  69. package/dist/locales/cs.yaml +2 -2
  70. package/dist/locales/da.yaml +2 -2
  71. package/dist/locales/de.yaml +1 -1
  72. package/dist/locales/el.yaml +2 -2
  73. package/dist/locales/en-CA.yaml +1 -1
  74. package/dist/locales/en-GB.yaml +1 -1
  75. package/dist/locales/en-US.yaml +1 -1
  76. package/dist/locales/es-CO.yaml +2 -2
  77. package/dist/locales/fa.yaml +2 -2
  78. package/dist/locales/fi.yaml +1 -1
  79. package/dist/locales/fr.yaml +2 -2
  80. package/dist/locales/hr.yaml +2 -2
  81. package/dist/locales/it.yaml +2 -2
  82. package/dist/locales/nl.yaml +1 -1
  83. package/dist/locales/pl.yaml +2 -2
  84. package/dist/locales/pt-BR.yaml +2 -2
  85. package/dist/locales/pt-PT.yaml +2 -2
  86. package/dist/locales/sv.yaml +2 -2
  87. package/dist/locales/zh-CN.yaml +1 -1
  88. package/dist/locales/zh-TW.yaml +1 -1
  89. package/dist/styles/variables.scss +1 -0
  90. package/package.json +13 -9
@@ -21,6 +21,7 @@
21
21
  unmount,
22
22
  untrack,
23
23
  } from 'svelte';
24
+ import { getTransitionTimeout } from './modal.js';
24
25
  import Placeholder from './placeholder.svelte';
25
26
 
26
27
  /**
@@ -193,14 +194,6 @@
193
194
  });
194
195
  };
195
196
 
196
- /**
197
- * Get the longest time from a computed CSS time list, such as `transition-duration`.
198
- * @param {string} value Comma-separated CSS time values in seconds, e.g. `0.4s, 0.15s`.
199
- * @returns {number} Time in milliseconds.
200
- */
201
- const getLongestTime = (value) =>
202
- Math.max(0, ...value.split(',').map((time) => Number.parseFloat(time) || 0)) * 1000;
203
-
204
197
  /**
205
198
  * Resolve once the transition is complete.
206
199
  * @returns {Promise<void>} Nothing.
@@ -213,11 +206,10 @@
213
206
  return;
214
207
  }
215
208
 
216
- const { transitionDuration, transitionDelay } = getComputedStyle(dialog);
217
209
  // Fall back to a timer, so the modal is never stuck half-open (and, more importantly, never
218
210
  // left mounted) in case `transitionend` is never fired, e.g. when the transition is removed by
219
211
  // the consumer’s CSS or the element is not rendered at all
220
- const timeout = getLongestTime(transitionDuration) + getLongestTime(transitionDelay) + 100;
212
+ const timeout = getTransitionTimeout(getComputedStyle(dialog));
221
213
  const controller = new AbortController();
222
214
  const { signal } = controller;
223
215
 
@@ -244,6 +236,8 @@
244
236
  * Show the modal.
245
237
  */
246
238
  const openDialog = async () => {
239
+ // Only called when the `open` prop changes, so it can’t be requested twice in a row
240
+ /* v8 ignore next */
247
241
  if (requestedOpen) {
248
242
  return;
249
243
  }
@@ -278,8 +272,11 @@
278
272
  // such as `<Dialog>`, may then move the focus to a specific control, like an input field.
279
273
  await tick();
280
274
 
275
+ // The focus is on `<body>` at this point, because the element was still `inert` when shown
276
+ /* v8 ignore next */
281
277
  if (gen !== generation || !dialog) return;
282
278
 
279
+ /* v8 ignore else */
283
280
  if (!dialog.contains(document.activeElement)) {
284
281
  focus();
285
282
  }
@@ -302,6 +299,8 @@
302
299
 
303
300
  const gen = generation;
304
301
  const wasOpen = setOpenClass;
302
+ // The element is mounted by the time a close can be requested; see `openDialog()` above
303
+ /* v8 ignore next */
305
304
  const returnValue = dialog?.returnValue ?? '';
306
305
 
307
306
  onClosing?.(new CustomEvent('Closing'));
@@ -81,12 +81,23 @@
81
81
  let popupInstance = $state();
82
82
  let hoveredTimeout = 0;
83
83
 
84
+ // Keep the `open` prop and the instance in sync both ways. The instance opens the popup when
85
+ // the anchor is activated, and closes it when the backdrop or an item is clicked, or Escape is
86
+ // pressed; the prop is what a consumer such as `<Combobox>` or `<MenuItem>` toggles from its own
87
+ // controls. The instance has to follow the prop as well, because it’s the instance that handles
88
+ // the dismissal, and it ignores a popup it doesn’t know to be open.
84
89
  $effect(() => {
85
90
  if (popupInstance) {
86
91
  open = popupInstance.open;
87
92
  }
88
93
  });
89
94
 
95
+ $effect(() => {
96
+ if (popupInstance && popupInstance.open !== open) {
97
+ popupInstance.open = open;
98
+ }
99
+ });
100
+
90
101
  $effect(() => {
91
102
  if (parentDialogElement && !dialogElement && content) {
92
103
  dialogElement = parentDialogElement;
@@ -36,7 +36,7 @@ calendar:
36
36
  # Split button component
37
37
  split_button:
38
38
  # Wrapper aria-label, e.g. “Save Options” when primary button is “Save”
39
- x_options: 'خيارات {$name}'
39
+ x_options: خيارات {$name}
40
40
  # Dropdown toggle aria-label
41
41
  more_options: خيارات إضافية
42
42
 
@@ -72,7 +72,7 @@ select_tags:
72
72
  # Listbox aria-label
73
73
  selected_options: الخيارات المحددة
74
74
  # Remove button aria-label, e.g. “Remove Option 1”
75
- remove_x: 'إزالة {$name}'
75
+ remove_x: إزالة {$name}
76
76
 
77
77
  # Text editor component
78
78
  text_editor:
@@ -36,7 +36,7 @@ calendar:
36
36
  # Split button component
37
37
  split_button:
38
38
  # Wrapper aria-label, e.g. “Save Options” when primary button is “Save”
39
- x_options: 'Opcions de {$name}'
39
+ x_options: Opcions de {$name}
40
40
  # Dropdown toggle aria-label
41
41
  more_options: Més opcions
42
42
 
@@ -72,7 +72,7 @@ select_tags:
72
72
  # Listbox aria-label
73
73
  selected_options: Opcions seleccionades
74
74
  # Remove button aria-label, e.g. “Remove Option 1”
75
- remove_x: 'Suprimeix {$name}'
75
+ remove_x: Suprimeix {$name}
76
76
 
77
77
  # Text editor component
78
78
  text_editor:
@@ -36,7 +36,7 @@ calendar:
36
36
  # Split button component
37
37
  split_button:
38
38
  # Wrapper aria-label, e.g. “Save Options” when primary button is “Save”
39
- x_options: 'Možnosti pro {$name}'
39
+ x_options: Možnosti pro {$name}
40
40
  # Dropdown toggle aria-label
41
41
  more_options: Další možnosti
42
42
 
@@ -72,7 +72,7 @@ select_tags:
72
72
  # Listbox aria-label
73
73
  selected_options: Vybrané možnosti
74
74
  # Remove button aria-label, e.g. “Remove Option 1”
75
- remove_x: 'Odebrat {$name}'
75
+ remove_x: Odebrat {$name}
76
76
 
77
77
  # Text editor component
78
78
  text_editor:
@@ -36,7 +36,7 @@ calendar:
36
36
  # Split button component
37
37
  split_button:
38
38
  # Wrapper aria-label, e.g. “Save Options” when primary button is “Save”
39
- x_options: 'Muligheder for {$name}'
39
+ x_options: Muligheder for {$name}
40
40
  # Dropdown toggle aria-label
41
41
  more_options: Flere muligheder
42
42
 
@@ -72,7 +72,7 @@ select_tags:
72
72
  # Listbox aria-label
73
73
  selected_options: Valgte muligheder
74
74
  # Remove button aria-label, e.g. “Remove Option 1”
75
- remove_x: 'Fjern {$name}'
75
+ remove_x: Fjern {$name}
76
76
 
77
77
  # Text editor component
78
78
  text_editor:
@@ -36,7 +36,7 @@ calendar:
36
36
  # Split button component
37
37
  split_button:
38
38
  # Wrapper aria-label, e.g. “Save Options” when primary button is “Save”
39
- x_options: 'Optionen für {$name}'
39
+ x_options: Optionen für {$name}
40
40
  # Dropdown toggle aria-label
41
41
  more_options: Weitere Optionen
42
42
 
@@ -36,7 +36,7 @@ calendar:
36
36
  # Split button component
37
37
  split_button:
38
38
  # Wrapper aria-label, e.g. “Save Options” when primary button is “Save”
39
- x_options: 'Επιλογές για {$name}'
39
+ x_options: Επιλογές για {$name}
40
40
  # Dropdown toggle aria-label
41
41
  more_options: Περισσότερες επιλογές
42
42
 
@@ -72,7 +72,7 @@ select_tags:
72
72
  # Listbox aria-label
73
73
  selected_options: Επιλεγμένες επιλογές
74
74
  # Remove button aria-label, e.g. “Remove Option 1”
75
- remove_x: 'Κατάργηση {$name}'
75
+ remove_x: Κατάργηση {$name}
76
76
 
77
77
  # Text editor component
78
78
  text_editor:
@@ -72,7 +72,7 @@ select_tags:
72
72
  # Listbox aria-label
73
73
  selected_options: Selected Options
74
74
  # Remove button aria-label, e.g. “Remove Option 1”
75
- remove_x: 'Remove {$name}'
75
+ remove_x: Remove {$name}
76
76
 
77
77
  # Text editor component
78
78
  text_editor:
@@ -72,7 +72,7 @@ select_tags:
72
72
  # Listbox aria-label
73
73
  selected_options: Selected Options
74
74
  # Remove button aria-label, e.g. “Remove Option 1”
75
- remove_x: 'Remove {$name}'
75
+ remove_x: Remove {$name}
76
76
 
77
77
  # Text editor component
78
78
  text_editor:
@@ -72,7 +72,7 @@ select_tags:
72
72
  # Listbox aria-label
73
73
  selected_options: Selected Options
74
74
  # Remove button aria-label, e.g. “Remove Option 1”
75
- remove_x: 'Remove {$name}'
75
+ remove_x: Remove {$name}
76
76
 
77
77
  # Text editor component
78
78
  text_editor:
@@ -36,7 +36,7 @@ calendar:
36
36
  # Split button component
37
37
  split_button:
38
38
  # Wrapper aria-label, e.g. “Save Options” when primary button is “Save”
39
- x_options: 'Opciones de {$name}'
39
+ x_options: Opciones de {$name}
40
40
  # Dropdown toggle aria-label
41
41
  more_options: Más opciones
42
42
 
@@ -72,7 +72,7 @@ select_tags:
72
72
  # Listbox aria-label
73
73
  selected_options: Opciones seleccionadas
74
74
  # Remove button aria-label, e.g. “Remove Option 1”
75
- remove_x: 'Quitar {$name}'
75
+ remove_x: Quitar {$name}
76
76
 
77
77
  # Text editor component
78
78
  text_editor:
@@ -36,7 +36,7 @@ calendar:
36
36
  # Split button component
37
37
  split_button:
38
38
  # Wrapper aria-label, e.g. “Save Options” when primary button is “Save”
39
- x_options: 'گزینه‌های {$name}'
39
+ x_options: گزینه‌های {$name}
40
40
  # Dropdown toggle aria-label
41
41
  more_options: گزینه‌های بیشتر
42
42
 
@@ -72,7 +72,7 @@ select_tags:
72
72
  # Listbox aria-label
73
73
  selected_options: گزینه‌های انتخاب‌شده
74
74
  # Remove button aria-label, e.g. “Remove Option 1”
75
- remove_x: 'حذف {$name}'
75
+ remove_x: حذف {$name}
76
76
 
77
77
  # Text editor component
78
78
  text_editor:
@@ -72,7 +72,7 @@ select_tags:
72
72
  # Listbox aria-label
73
73
  selected_options: Valitut vaihtoehdot
74
74
  # Remove button aria-label, e.g. “Remove Option 1”
75
- remove_x: 'Poista {$name}'
75
+ remove_x: Poista {$name}
76
76
 
77
77
  # Text editor component
78
78
  text_editor:
@@ -36,7 +36,7 @@ calendar:
36
36
  # Split button component
37
37
  split_button:
38
38
  # Wrapper aria-label, e.g. “Save Options” when primary button is “Save”
39
- x_options: 'Options de {$name}'
39
+ x_options: Options de {$name}
40
40
  # Dropdown toggle aria-label
41
41
  more_options: Plus d’options
42
42
 
@@ -72,7 +72,7 @@ select_tags:
72
72
  # Listbox aria-label
73
73
  selected_options: Options sélectionnées
74
74
  # Remove button aria-label, e.g. “Remove Option 1”
75
- remove_x: 'Retirer {$name}'
75
+ remove_x: Retirer {$name}
76
76
 
77
77
  # Text editor component
78
78
  text_editor:
@@ -36,7 +36,7 @@ calendar:
36
36
  # Split button component
37
37
  split_button:
38
38
  # Wrapper aria-label, e.g. “Save Options” when primary button is “Save”
39
- x_options: 'Opcije za {$name}'
39
+ x_options: Opcije za {$name}
40
40
  # Dropdown toggle aria-label
41
41
  more_options: Više opcija
42
42
 
@@ -72,7 +72,7 @@ select_tags:
72
72
  # Listbox aria-label
73
73
  selected_options: Odabrane opcije
74
74
  # Remove button aria-label, e.g. “Remove Option 1”
75
- remove_x: 'Ukloni {$name}'
75
+ remove_x: Ukloni {$name}
76
76
 
77
77
  # Text editor component
78
78
  text_editor:
@@ -36,7 +36,7 @@ calendar:
36
36
  # Split button component
37
37
  split_button:
38
38
  # Wrapper aria-label, e.g. “Save Options” when primary button is “Save”
39
- x_options: 'Opzioni {$name}'
39
+ x_options: Opzioni {$name}
40
40
  # Dropdown toggle aria-label
41
41
  more_options: Altre Opzioni
42
42
 
@@ -72,7 +72,7 @@ select_tags:
72
72
  # Listbox aria-label
73
73
  selected_options: Opzioni Selezionate
74
74
  # Remove button aria-label, e.g. “Remove Option 1”
75
- remove_x: 'Rimuovi {$name}'
75
+ remove_x: Rimuovi {$name}
76
76
 
77
77
  # Text editor component
78
78
  text_editor:
@@ -36,7 +36,7 @@ calendar:
36
36
  # Split button component
37
37
  split_button:
38
38
  # Wrapper aria-label, e.g. “Save Options” when primary button is “Save”
39
- x_options: 'Opties voor {$name}'
39
+ x_options: Opties voor {$name}
40
40
  # Dropdown toggle aria-label
41
41
  more_options: Meer opties
42
42
 
@@ -36,7 +36,7 @@ calendar:
36
36
  # Split button component
37
37
  split_button:
38
38
  # Wrapper aria-label, e.g. “Save Options” when primary button is “Save”
39
- x_options: 'Opcje {$name}'
39
+ x_options: Opcje {$name}
40
40
  # Dropdown toggle aria-label
41
41
  more_options: Więcej opcji
42
42
 
@@ -72,7 +72,7 @@ select_tags:
72
72
  # Listbox aria-label
73
73
  selected_options: Wybrane opcje
74
74
  # Remove button aria-label, e.g. “Remove Option 1”
75
- remove_x: 'Usuń {$name}'
75
+ remove_x: Usuń {$name}
76
76
 
77
77
  # Text editor component
78
78
  text_editor:
@@ -36,7 +36,7 @@ calendar:
36
36
  # Split button component
37
37
  split_button:
38
38
  # Wrapper aria-label, e.g. “Save Options” when primary button is “Save”
39
- x_options: 'Opções de {$name}'
39
+ x_options: Opções de {$name}
40
40
  # Dropdown toggle aria-label
41
41
  more_options: Mais opções
42
42
 
@@ -72,7 +72,7 @@ select_tags:
72
72
  # Listbox aria-label
73
73
  selected_options: Opções selecionadas
74
74
  # Remove button aria-label, e.g. “Remove Option 1”
75
- remove_x: 'Remover {$name}'
75
+ remove_x: Remover {$name}
76
76
 
77
77
  # Text editor component
78
78
  text_editor:
@@ -36,7 +36,7 @@ calendar:
36
36
  # Split button component
37
37
  split_button:
38
38
  # Wrapper aria-label, e.g. “Save Options” when primary button is “Save”
39
- x_options: 'Opções de {$name}'
39
+ x_options: Opções de {$name}
40
40
  # Dropdown toggle aria-label
41
41
  more_options: Mais opções
42
42
 
@@ -72,7 +72,7 @@ select_tags:
72
72
  # Listbox aria-label
73
73
  selected_options: Opções selecionadas
74
74
  # Remove button aria-label, e.g. “Remove Option 1”
75
- remove_x: 'Remover {$name}'
75
+ remove_x: Remover {$name}
76
76
 
77
77
  # Text editor component
78
78
  text_editor:
@@ -36,7 +36,7 @@ calendar:
36
36
  # Split button component
37
37
  split_button:
38
38
  # Wrapper aria-label, e.g. “Save Options” when primary button is “Save”
39
- x_options: 'Alternativ för {$name}'
39
+ x_options: Alternativ för {$name}
40
40
  # Dropdown toggle aria-label
41
41
  more_options: Fler alternativ
42
42
 
@@ -72,7 +72,7 @@ select_tags:
72
72
  # Listbox aria-label
73
73
  selected_options: Valda inställningar
74
74
  # Remove button aria-label, e.g. “Remove Option 1”
75
- remove_x: 'Ta bort {$name}'
75
+ remove_x: Ta bort {$name}
76
76
 
77
77
  # Text editor component
78
78
  text_editor:
@@ -72,7 +72,7 @@ select_tags:
72
72
  # Listbox aria-label
73
73
  selected_options: 已选选项
74
74
  # Remove button aria-label, e.g. “Remove Option 1”
75
- remove_x: '移除 {$name}'
75
+ remove_x: 移除 {$name}
76
76
 
77
77
  # Text editor component
78
78
  text_editor:
@@ -72,7 +72,7 @@ select_tags:
72
72
  # Listbox aria-label
73
73
  selected_options: 已選取的選項
74
74
  # Remove button aria-label, e.g. “Remove Option 1”
75
- remove_x: '移除 {$name}'
75
+ remove_x: 移除 {$name}
76
76
 
77
77
  # Text editor component
78
78
  text_editor:
@@ -227,6 +227,7 @@
227
227
  --sui-tree-foreground-color: var(--sui-control-foreground-color);
228
228
  --sui-tree-background-color: hsl(var(--sui-background-color-1-hsl));
229
229
  --sui-tree-item-border-radius: var(--sui-control-medium-border-radius);
230
+ --sui-tree-item-padding: var(--sui-option-padding);
230
231
  --sui-tree-item-height: var(--sui-control-medium-height);
231
232
  --sui-tree-item-indent: 16px;
232
233
  // Textbox: singleline & multiline text fields
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sveltia/ui",
3
- "version": "0.72.0",
3
+ "version": "0.72.2",
4
4
  "description": "A collection of Svelte components and utilities for building user interfaces.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -32,7 +32,8 @@
32
32
  },
33
33
  "files": [
34
34
  "dist",
35
- "!dist/**/*.test.*"
35
+ "!dist/**/*.test.*",
36
+ "!dist/test-utils"
36
37
  ],
37
38
  "dependencies": {
38
39
  "@lexical/code-core": "^0.50.0",
@@ -56,24 +57,26 @@
56
57
  "@sveltejs/kit": "^2.70.3",
57
58
  "@sveltejs/package": "^2.5.8",
58
59
  "@sveltejs/vite-plugin-svelte": "^7.3.0",
60
+ "@vitest/browser-playwright": "^5.0.0",
59
61
  "@vitest/coverage-v8": "^5.0.0",
60
- "cspell": "^10.3.0",
62
+ "cspell": "^10.3.1",
61
63
  "eslint": "^9.39.5",
62
64
  "eslint-config-airbnb-extended": "^3.2.0",
63
65
  "eslint-config-prettier": "^10.1.8",
64
66
  "eslint-plugin-import": "^2.32.0",
65
- "eslint-plugin-jsdoc": "^64.3.9",
66
- "eslint-plugin-package-json": "^1.8.0",
67
+ "eslint-plugin-jsdoc": "^64.3.10",
68
+ "eslint-plugin-package-json": "^1.8.1",
67
69
  "eslint-plugin-svelte": "^3.23.0",
68
70
  "globals": "^17.12.0",
69
- "happy-dom": "^20.14.3",
71
+ "happy-dom": "^20.14.5",
70
72
  "oxlint": "^1.82.0",
73
+ "playwright": "^1.63.0",
71
74
  "postcss": "^8.5.28",
72
75
  "postcss-html": "^2.0.0",
73
76
  "prettier": "^3.9.6",
74
77
  "prettier-plugin-svelte": "^4.1.1",
75
78
  "rolldown": "^1.2.8",
76
- "sass": "^1.104.0",
79
+ "sass": "^1.104.1",
77
80
  "shiki": "^4.4.3",
78
81
  "stylelint": "^17.15.0",
79
82
  "stylelint-config-recommended-scss": "^17.0.1",
@@ -83,7 +86,8 @@
83
86
  "svelte-preprocess": "^6.0.5",
84
87
  "tslib": "^2.8.1",
85
88
  "vite": "^8.3.0",
86
- "vitest": "^5.0.0"
89
+ "vitest": "^5.0.0",
90
+ "vitest-browser-svelte": "^3.1.0"
87
91
  },
88
92
  "peerDependencies": {
89
93
  "svelte": "^5.0.0"
@@ -95,7 +99,7 @@
95
99
  "scripts": {
96
100
  "build": "npm run generate:shiki && svelte-kit sync && svelte-package && node scripts/build-shiki-engine.js",
97
101
  "build:watch": "svelte-kit sync && svelte-package --watch",
98
- "check": "pnpm run '/^check:.*/'",
102
+ "check": "pnpm run --no-bail '/^check:.*/'",
99
103
  "check:audit": "pnpm audit --ignore-registry-errors",
100
104
  "check:cspell": "cspell --no-progress",
101
105
  "check:eslint": "eslint .",