@lavalogic/scoria 0.38.11 → 0.38.13

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 CHANGED
@@ -1,58 +1,58 @@
1
- # Svelte library
2
-
3
- Everything you need to build a Svelte library, powered by [`sv`](https://npmjs.com/package/sv).
4
-
5
- Read more about creating a library [in the docs](https://svelte.dev/docs/kit/packaging).
6
-
7
- ## Creating a project
8
-
9
- If you're seeing this, you've probably already done this step. Congrats!
10
-
11
- ```sh
12
- # create a new project in the current directory
13
- npx sv create
14
-
15
- # create a new project in my-app
16
- npx sv create my-app
17
- ```
18
-
19
- ## Developing
20
-
21
- Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
22
-
23
- ```sh
24
- npm run dev
25
-
26
- # or start the server and open the app in a new browser tab
27
- npm run dev -- --open
28
- ```
29
-
30
- Everything inside `src/lib` is part of your library, everything inside `src/routes` can be used as a showcase or preview app.
31
-
32
- ## Building
33
-
34
- To build your library:
35
-
36
- ```sh
37
- npm pack
38
- ```
39
-
40
- To create a production version of your showcase app:
41
-
42
- ```sh
43
- npm run build
44
- ```
45
-
46
- You can preview the production build with `npm run preview`.
47
-
48
- > To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment.
49
-
50
- ## Publishing
51
-
52
- Go into the `package.json` and give your package the desired name through the `"name"` option. Also consider adding a `"license"` field and point it to a `LICENSE` file which you can create from a template (one popular option is the [MIT license](https://opensource.org/license/mit/)).
53
-
54
- To publish your library to [npm](https://www.npmjs.com):
55
-
56
- ```sh
57
- npm publish
58
- ```
1
+ # Svelte library
2
+
3
+ Everything you need to build a Svelte library, powered by [`sv`](https://npmjs.com/package/sv).
4
+
5
+ Read more about creating a library [in the docs](https://svelte.dev/docs/kit/packaging).
6
+
7
+ ## Creating a project
8
+
9
+ If you're seeing this, you've probably already done this step. Congrats!
10
+
11
+ ```sh
12
+ # create a new project in the current directory
13
+ npx sv create
14
+
15
+ # create a new project in my-app
16
+ npx sv create my-app
17
+ ```
18
+
19
+ ## Developing
20
+
21
+ Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
22
+
23
+ ```sh
24
+ npm run dev
25
+
26
+ # or start the server and open the app in a new browser tab
27
+ npm run dev -- --open
28
+ ```
29
+
30
+ Everything inside `src/lib` is part of your library, everything inside `src/routes` can be used as a showcase or preview app.
31
+
32
+ ## Building
33
+
34
+ To build your library:
35
+
36
+ ```sh
37
+ npm pack
38
+ ```
39
+
40
+ To create a production version of your showcase app:
41
+
42
+ ```sh
43
+ npm run build
44
+ ```
45
+
46
+ You can preview the production build with `npm run preview`.
47
+
48
+ > To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment.
49
+
50
+ ## Publishing
51
+
52
+ Go into the `package.json` and give your package the desired name through the `"name"` option. Also consider adding a `"license"` field and point it to a `LICENSE` file which you can create from a template (one popular option is the [MIT license](https://opensource.org/license/mit/)).
53
+
54
+ To publish your library to [npm](https://www.npmjs.com):
55
+
56
+ ```sh
57
+ npm publish
58
+ ```
@@ -229,7 +229,12 @@
229
229
  let dragStartSlotIndex: number | null = $state(null);
230
230
  let dragEndSlotIndex: number | null = $state(null);
231
231
 
232
- function onSlotMouseDown(doorId: number, slotIndex: number): void {
232
+ function onSlotMouseDown(doorId: number, slotIndex: number, e: MouseEvent): void {
233
+ // Only start a drag-create on the primary (left) button. Otherwise a
234
+ // middle-click (autoscroll) or right-click would open the create modal.
235
+ if (e.button !== 0) {
236
+ return;
237
+ }
233
238
  if (!ondragcreate || appointmentDragStarted) {
234
239
  return;
235
240
  }
@@ -371,6 +376,11 @@
371
376
  let moveTargetSlotIndex: number | null = $state(null);
372
377
 
373
378
  function onAppointmentMouseDown(apt: CalendarAppointment, e: MouseEvent): void {
379
+ // Only react to the primary (left) button so middle/right clicks don't
380
+ // start a move or register as an appointment click.
381
+ if (e.button !== 0) {
382
+ return;
383
+ }
374
384
  if (!onappointmentmove) {
375
385
  return;
376
386
  }
@@ -664,8 +674,8 @@
664
674
  class:drag-selected={isSlotInDragRange(door.id, slotIdx)}
665
675
  class:move-target={isSlotInMoveTarget(door.id, slotIdx)}
666
676
  class:row-hover={hoveredSlotIndex === slotIdx}
667
- onmousedown={() => {
668
- onSlotMouseDown(door.id, slotIdx);
677
+ onmousedown={(e) => {
678
+ onSlotMouseDown(door.id, slotIdx, e);
669
679
  }}
670
680
  onmouseenter={() => {
671
681
  hoveredSlotIndex = slotIdx;
@@ -124,31 +124,52 @@
124
124
  console.debug(`${def.id}: `, 'has query');
125
125
  }
126
126
 
127
- untrack(async () => {
127
+ untrack(() => {
128
128
  try {
129
- // as unknown as string | number | undefined;
130
-
131
- if (filteringStateValue != undefined) {
129
+ if (filteringStateValue == undefined) {
130
+ // Filter cleared externally (saved view applied with an
131
+ // empty filter, or "Clear All" hit). Drop the typeahead
132
+ // echo so the next selection isn't masked by a stale
133
+ // cache, and clear the local value so the chip clears.
132
134
  if (def.debug) {
133
- console.debug(`${def.id}: query values:`, tableContext.queryValues.snapshot());
135
+ console.debug(
136
+ `${def.id}: filtering state value was undefined`,
137
+ $state.snapshot(tableContext.paginationRepo?.filtering)
138
+ );
134
139
  }
135
- const x = tableContext.queryValues.get(def);
140
+ value = null;
141
+ tableContext.queryValues.delete(def);
142
+ return;
143
+ }
136
144
 
137
- if (def.debug) {
138
- console.debug(`${def.id}: value:`, $state.snapshot(x));
139
- }
140
- value = (x ?? null) as SelectOption<unknown> | null;
141
- } else if (def.debug) {
142
- console.debug(
143
- `${def.id}: filtering state value was undefined`,
144
- $state.snapshot(tableContext.paginationRepo?.filtering)
145
- );
145
+ if (def.debug) {
146
+ console.debug(`${def.id}: query values:`, tableContext.queryValues.snapshot());
147
+ }
148
+ // Prefer the typeahead echo it carries the real label
149
+ // from the option the user clicked. Fall back to the saved
150
+ // primitive (the usual case after applying a saved view)
151
+ // so the chip is at least visible; QuerySelect's own
152
+ // `$effect.pre` adds a placeholder option keyed on the
153
+ // primitive so it renders.
154
+ const cached = tableContext.queryValues.get(def);
155
+ if (def.debug) {
156
+ console.debug(`${def.id}: cached value:`, $state.snapshot(cached));
157
+ }
158
+ if (cached != null) {
159
+ value = cached;
160
+ } else if (customFilter.valueAsObject === true) {
161
+ value = {
162
+ value: filteringStateValue,
163
+ label: String(filteringStateValue),
164
+ };
165
+ } else {
166
+ value = filteringStateValue;
146
167
  }
147
168
  } catch (e) {
148
169
  console.warn(e);
149
170
  value = null;
150
171
  }
151
- }).catch(devCatch);
172
+ });
152
173
  } else if (isSelect) {
153
174
  if (def.debug) {
154
175
  console.debug(`${def.id}: is select (not query)`);
@@ -1,13 +1,13 @@
1
- <svelte:options runes />
2
-
3
- <script lang="ts">
4
- import { TestContext } from '../../Contexts/TestContext.svelte.js';
5
- import { getContext } from 'svelte';
6
-
7
- const testContext = getContext<TestContext>(TestContext.identifier);
8
- </script>
9
-
10
- <h1>counter 1: {testContext.value1.value}</h1>
11
- <p>Ref wrapper 1 is incremented every time you click the button</p>
12
- <h2>counter 2: {testContext.value2.value}</h2>
13
- <p>ref wrapper 2 adds ref wrapper 1's value every time ref wrapper 1's value is divisible by 3</p>
1
+ <svelte:options runes />
2
+
3
+ <script lang="ts">
4
+ import { TestContext } from '../../Contexts/TestContext.svelte.js';
5
+ import { getContext } from 'svelte';
6
+
7
+ const testContext = getContext<TestContext>(TestContext.identifier);
8
+ </script>
9
+
10
+ <h1>counter 1: {testContext.value1.value}</h1>
11
+ <p>Ref wrapper 1 is incremented every time you click the button</p>
12
+ <h2>counter 2: {testContext.value2.value}</h2>
13
+ <p>ref wrapper 2 adds ref wrapper 1's value every time ref wrapper 1's value is divisible by 3</p>
@@ -1,12 +1,12 @@
1
- @use './colours.scss';
2
-
3
- //border
4
- $border: solid 1px colours.$ui-blue-4;
5
- $border-mid: solid 2px colours.$ui-blue-4;
6
- $border-thick: solid 3px colours.$ui-blue-4;
7
-
8
- //box-shadow
9
- $table-focus: 0px 0px 1px 1px colours.$brand-primary inset;
10
-
11
- $box-shadow: 0px 0px 5px 0px #0002;
12
- $error-box-shadow: 0px 0px 5px 0px #aa141422;
1
+ @use './colours.scss';
2
+
3
+ //border
4
+ $border: solid 1px colours.$ui-blue-4;
5
+ $border-mid: solid 2px colours.$ui-blue-4;
6
+ $border-thick: solid 3px colours.$ui-blue-4;
7
+
8
+ //box-shadow
9
+ $table-focus: 0px 0px 1px 1px colours.$brand-primary inset;
10
+
11
+ $box-shadow: 0px 0px 5px 0px #0002;
12
+ $error-box-shadow: 0px 0px 5px 0px #aa141422;
@@ -1,134 +1,134 @@
1
- $transparent-0: rgba(0, 0, 0, 0);
2
- $transparent-10: rgba(0, 0, 0, 0.1);
3
- $transparent-20: rgba(0, 0, 0, 0.2);
4
-
5
- $ui-black: #000000;
6
- $ui-white: #ffffff;
7
- $purple: #9b51e0; // For Testing
8
-
9
- $ui-blue-1: #f4f7f9;
10
- $ui-blue-2: #e9ecf1;
11
- $ui-blue-3: #dae0e5;
12
- $ui-blue-4: #cbd4da; // Standard Border Colour
13
- $ui-blue-5: #bcc8d0;
14
- $ui-blue-6: #adbbc5;
15
- $ui-blue-7: #9eafba;
16
- $ui-blue-8: #8fa3b0;
17
- $ui-blue-9: #8096a5; // Font Disabled
18
- $ui-blue-10: #718a9b;
19
- $ui-blue-11: #647d8e; // Font Secondary
20
- $ui-blue-12: #5a707f;
21
- $ui-blue-13: #4f6370;
22
- $ui-blue-14: #455661;
23
- $ui-blue-15: #3a4952; // Font Primary
24
- $ui-blue-16: #2f3b43;
25
- $ui-blue-17: #252e34;
26
- $ui-blue-18: #1a2125;
27
- $ui-blue-19: #101416;
28
- $ui-blue-20: #050707;
29
-
30
- $primary-blue-1: #f4fbfd;
31
- $primary-blue-2: #e6f8fd;
32
- $primary-blue-3: #caeaf5;
33
- $primary-blue-4: #b4e2f0;
34
- $primary-blue-5: #9fdaec;
35
- $primary-blue-6: #8ad1e8;
36
- $primary-blue-7: #74c9e4;
37
- $primary-blue-8: #5fc1e0;
38
- $primary-blue-9: #49b8dc;
39
- $primary-blue-10: #34b0d8;
40
- $primary-blue-11: #259fc7; // Brand Primary
41
- $primary-blue-12: #2392b5;
42
- $primary-blue-13: #1f81a0; // Brand Dark
43
- $primary-blue-14: #1b708b;
44
- $primary-blue-15: #175f75;
45
- $primary-blue-16: #134d60;
46
- $primary-blue-17: #0f3c4b;
47
- $primary-blue-18: #0a2b35;
48
- $primary-blue-19: #061a20;
49
- $primary-blue-20: #02090b;
50
-
51
- $primary-background: #edfaff;
52
- $brand-primary: #259fc7;
53
- $brand-dark: #1f81a0;
54
- $brand-dark-transparent-20: rgba(31, 129, 160, 0.2);
55
- $brand-dark-transparent-40: rgba(31, 129, 160, 0.4);
56
-
57
- $font-primary: #3a4952;
58
- $font-secondary-heading: #46525b;
59
- $font-secondary: #647d8e;
60
- $font-disabled: #8096a5;
61
-
62
- $error: #c31818;
63
- $error-border: #aa1414;
64
- $error-background: #f9e9e9;
65
- $warning: #f8eab8;
66
- $warning-border: #e7b500;
67
-
68
- $allocated-background: #e7b100;
69
- $in-picking-background: #ec58c3;
70
- $in-picking-colour: #720653;
71
- $picked-background: #bd2e95;
72
- $in-sorting-background: #b259ea;
73
- $in-sorting-colour: #560985;
74
- $sorted-background: #9032ca;
75
- $in-kitting-background: #9d85fc;
76
- $in-kitting-colour: #4129a4;
77
- $kitted-background: #6e51e0;
78
- $in-packing-background: #8ab1df;
79
- $in-packing-colour: #103977;
80
- $packed-background: #3e6eb5;
81
- $in-marshalling-background: #8ad0df;
82
- $in-marshalling-colour: #13758a;
83
- $marshalled-background: #3ea0b5;
84
- $in-loading-background: #8adfc8;
85
- $in-loading-colour: #126a51;
86
- $loaded-background: #3eb592;
87
- $in-despatch-background: #7bbc6f;
88
- $in-despatch-colour: #104c05;
89
- $despatched-background: #2f921d;
90
-
91
- // Borders are $ui-blue-4
92
-
93
- // $ui-two: #ececec;
94
- // $ui-three: #c0c0c0;
95
- // $ui-four: #515b65;
96
- // $ui-four: #9B51E0;
97
- // $ui-seven: #d5dbe0;
98
- // $ui-eight: #fcfcfc;
99
- // $ui-grey: #c0c8ce;
100
- // $main: #54636d;
101
- $alt: #8f989e;
102
- // $background-light: #dce1e5;
103
- // $background: #f6f7f8;
104
- // $background-dark: #e8ebed;
105
- // $dark-blue: #3888c1;
106
- // $primary: #2f97ba;
107
- // $info-text: #0e82ae;
108
- // $info-light-text: #6ac1e8;
109
- // $primary-dark: #0e7598;
110
- // $primary-hover: hsl(205, 55%, 35%);
111
- // $brand-one: #4db0da;
112
- // $brand-two: #18769d;
113
- // $shipments: #129acd;
114
- // $progress: #259abf;
115
-
116
- // $dark-blue-transparent: rgba(56, 136, 193, 0.2);
117
- // $dark-blue-semi-transparent: rgba(56, 136, 193, 0.4);
118
- // $secondary: #4f5a63;
119
- // $info-background: #d6effa;
120
- // $info-light-background: #f3f9fb;
121
- // $hovered: rgba(166, 167, 168, 0.369);
122
- // $white: #fff;
123
- // $light-border: #ced2d6;
124
- // $state-info: #e8f6fd;
125
- // $state-info--alt: #f9fdff;
126
- // $ui-dark-opacity: rgba(0, 0, 0, 0.2);
127
- // $info-text-text: #525252;
128
- // $info-text-background: #f6fcfe;
129
- // $marked: #e8f6fd;
130
- // $marked: #f9fdff;
131
- // $side-menu-background: #eef1f3;
132
- // $label: #6d7883;
133
- // $warehouse-bubble: #c3cad3;
134
- // $warning: rgba(231, 181, 0, 0.228);
1
+ $transparent-0: rgba(0, 0, 0, 0);
2
+ $transparent-10: rgba(0, 0, 0, 0.1);
3
+ $transparent-20: rgba(0, 0, 0, 0.2);
4
+
5
+ $ui-black: #000000;
6
+ $ui-white: #ffffff;
7
+ $purple: #9b51e0; // For Testing
8
+
9
+ $ui-blue-1: #f4f7f9;
10
+ $ui-blue-2: #e9ecf1;
11
+ $ui-blue-3: #dae0e5;
12
+ $ui-blue-4: #cbd4da; // Standard Border Colour
13
+ $ui-blue-5: #bcc8d0;
14
+ $ui-blue-6: #adbbc5;
15
+ $ui-blue-7: #9eafba;
16
+ $ui-blue-8: #8fa3b0;
17
+ $ui-blue-9: #8096a5; // Font Disabled
18
+ $ui-blue-10: #718a9b;
19
+ $ui-blue-11: #647d8e; // Font Secondary
20
+ $ui-blue-12: #5a707f;
21
+ $ui-blue-13: #4f6370;
22
+ $ui-blue-14: #455661;
23
+ $ui-blue-15: #3a4952; // Font Primary
24
+ $ui-blue-16: #2f3b43;
25
+ $ui-blue-17: #252e34;
26
+ $ui-blue-18: #1a2125;
27
+ $ui-blue-19: #101416;
28
+ $ui-blue-20: #050707;
29
+
30
+ $primary-blue-1: #f4fbfd;
31
+ $primary-blue-2: #e6f8fd;
32
+ $primary-blue-3: #caeaf5;
33
+ $primary-blue-4: #b4e2f0;
34
+ $primary-blue-5: #9fdaec;
35
+ $primary-blue-6: #8ad1e8;
36
+ $primary-blue-7: #74c9e4;
37
+ $primary-blue-8: #5fc1e0;
38
+ $primary-blue-9: #49b8dc;
39
+ $primary-blue-10: #34b0d8;
40
+ $primary-blue-11: #259fc7; // Brand Primary
41
+ $primary-blue-12: #2392b5;
42
+ $primary-blue-13: #1f81a0; // Brand Dark
43
+ $primary-blue-14: #1b708b;
44
+ $primary-blue-15: #175f75;
45
+ $primary-blue-16: #134d60;
46
+ $primary-blue-17: #0f3c4b;
47
+ $primary-blue-18: #0a2b35;
48
+ $primary-blue-19: #061a20;
49
+ $primary-blue-20: #02090b;
50
+
51
+ $primary-background: #edfaff;
52
+ $brand-primary: #259fc7;
53
+ $brand-dark: #1f81a0;
54
+ $brand-dark-transparent-20: rgba(31, 129, 160, 0.2);
55
+ $brand-dark-transparent-40: rgba(31, 129, 160, 0.4);
56
+
57
+ $font-primary: #3a4952;
58
+ $font-secondary-heading: #46525b;
59
+ $font-secondary: #647d8e;
60
+ $font-disabled: #8096a5;
61
+
62
+ $error: #c31818;
63
+ $error-border: #aa1414;
64
+ $error-background: #f9e9e9;
65
+ $warning: #f8eab8;
66
+ $warning-border: #e7b500;
67
+
68
+ $allocated-background: #e7b100;
69
+ $in-picking-background: #ec58c3;
70
+ $in-picking-colour: #720653;
71
+ $picked-background: #bd2e95;
72
+ $in-sorting-background: #b259ea;
73
+ $in-sorting-colour: #560985;
74
+ $sorted-background: #9032ca;
75
+ $in-kitting-background: #9d85fc;
76
+ $in-kitting-colour: #4129a4;
77
+ $kitted-background: #6e51e0;
78
+ $in-packing-background: #8ab1df;
79
+ $in-packing-colour: #103977;
80
+ $packed-background: #3e6eb5;
81
+ $in-marshalling-background: #8ad0df;
82
+ $in-marshalling-colour: #13758a;
83
+ $marshalled-background: #3ea0b5;
84
+ $in-loading-background: #8adfc8;
85
+ $in-loading-colour: #126a51;
86
+ $loaded-background: #3eb592;
87
+ $in-despatch-background: #7bbc6f;
88
+ $in-despatch-colour: #104c05;
89
+ $despatched-background: #2f921d;
90
+
91
+ // Borders are $ui-blue-4
92
+
93
+ // $ui-two: #ececec;
94
+ // $ui-three: #c0c0c0;
95
+ // $ui-four: #515b65;
96
+ // $ui-four: #9B51E0;
97
+ // $ui-seven: #d5dbe0;
98
+ // $ui-eight: #fcfcfc;
99
+ // $ui-grey: #c0c8ce;
100
+ // $main: #54636d;
101
+ $alt: #8f989e;
102
+ // $background-light: #dce1e5;
103
+ // $background: #f6f7f8;
104
+ // $background-dark: #e8ebed;
105
+ // $dark-blue: #3888c1;
106
+ // $primary: #2f97ba;
107
+ // $info-text: #0e82ae;
108
+ // $info-light-text: #6ac1e8;
109
+ // $primary-dark: #0e7598;
110
+ // $primary-hover: hsl(205, 55%, 35%);
111
+ // $brand-one: #4db0da;
112
+ // $brand-two: #18769d;
113
+ // $shipments: #129acd;
114
+ // $progress: #259abf;
115
+
116
+ // $dark-blue-transparent: rgba(56, 136, 193, 0.2);
117
+ // $dark-blue-semi-transparent: rgba(56, 136, 193, 0.4);
118
+ // $secondary: #4f5a63;
119
+ // $info-background: #d6effa;
120
+ // $info-light-background: #f3f9fb;
121
+ // $hovered: rgba(166, 167, 168, 0.369);
122
+ // $white: #fff;
123
+ // $light-border: #ced2d6;
124
+ // $state-info: #e8f6fd;
125
+ // $state-info--alt: #f9fdff;
126
+ // $ui-dark-opacity: rgba(0, 0, 0, 0.2);
127
+ // $info-text-text: #525252;
128
+ // $info-text-background: #f6fcfe;
129
+ // $marked: #e8f6fd;
130
+ // $marked: #f9fdff;
131
+ // $side-menu-background: #eef1f3;
132
+ // $label: #6d7883;
133
+ // $warehouse-bubble: #c3cad3;
134
+ // $warning: rgba(231, 181, 0, 0.228);
@@ -1,8 +1,8 @@
1
- $transition-length: 0.15s;
2
- $transition-delay: 0s;
3
-
4
- $colours:
5
- border-color ease-out $transition-length $transition-delay,
6
- background-color ease-out $transition-length $transition-delay,
7
- color ease-out $transition-length $transition-delay,
8
- fill ease-out $transition-length $transition-delay;
1
+ $transition-length: 0.15s;
2
+ $transition-delay: 0s;
3
+
4
+ $colours:
5
+ border-color ease-out $transition-length $transition-delay,
6
+ background-color ease-out $transition-length $transition-delay,
7
+ color ease-out $transition-length $transition-delay,
8
+ fill ease-out $transition-length $transition-delay;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@lavalogic/scoria",
3
3
  "description": "Svelte components used for the FloWMS Web Frontend",
4
- "version": "0.38.11",
4
+ "version": "0.38.13",
5
5
  "publishConfig": {
6
6
  "access": "restricted"
7
7
  },
@@ -31,48 +31,48 @@
31
31
  },
32
32
  "peerDependencies": {
33
33
  "@sveltejs/kit": "^2.57.1",
34
- "svelte": "^5.53.5"
34
+ "svelte": "^5.55.7"
35
35
  },
36
36
  "devDependencies": {
37
- "@chromatic-com/storybook": "^5.1.2",
38
- "@eslint/compat": "^2.0.5",
37
+ "@chromatic-com/storybook": "^5.2.1",
38
+ "@eslint/compat": "^2.1.0",
39
39
  "@eslint/js": "^10.0.1",
40
- "@playwright/test": "^1.59.1",
41
- "@storybook/addon-a11y": "^10.3.5",
42
- "@storybook/addon-docs": "^10.3.5",
40
+ "@playwright/test": "^1.60.0",
41
+ "@storybook/addon-a11y": "^10.4.0",
42
+ "@storybook/addon-docs": "^10.4.0",
43
43
  "@storybook/addon-svelte-csf": "^5.1.2",
44
- "@storybook/addon-vitest": "^10.3.5",
45
- "@storybook/sveltekit": "^10.3.5",
44
+ "@storybook/addon-vitest": "^10.4.0",
45
+ "@storybook/sveltekit": "^10.4.0",
46
46
  "@sveltejs/adapter-node": "^5.5.4",
47
- "@sveltejs/kit": "^2.57.1",
47
+ "@sveltejs/kit": "^2.60.1",
48
48
  "@sveltejs/package": "^2.5.7",
49
- "@sveltejs/vite-plugin-svelte": "^7.0.0",
49
+ "@sveltejs/vite-plugin-svelte": "^7.1.2",
50
50
  "@types/eslint": "^9.6.1",
51
- "@types/node": "^25.6.0",
52
- "@typescript-eslint/eslint-plugin": "^8.58.2",
53
- "@typescript-eslint/parser": "^8.58.2",
54
- "@vitest/browser": "^4.1.4",
55
- "@vitest/browser-playwright": "^4.1.4",
56
- "eslint": "^10.2.0",
51
+ "@types/node": "^25.8.0",
52
+ "@typescript-eslint/eslint-plugin": "^8.59.3",
53
+ "@typescript-eslint/parser": "^8.59.3",
54
+ "@vitest/browser": "^4.1.6",
55
+ "@vitest/browser-playwright": "^4.1.6",
56
+ "eslint": "^10.4.0",
57
57
  "eslint-config-prettier": "^10.1.8",
58
- "eslint-plugin-storybook": "^10.3.5",
59
- "eslint-plugin-svelte": "^3.17.0",
60
- "globals": "^17.5.0",
58
+ "eslint-plugin-storybook": "^10.4.0",
59
+ "eslint-plugin-svelte": "^3.17.1",
60
+ "globals": "^17.6.0",
61
61
  "mdsvex": "^0.12.7",
62
- "playwright": "^1.59.1",
62
+ "playwright": "^1.60.0",
63
63
  "prettier": "^3.8.3",
64
- "prettier-plugin-svelte": "^3.5.1",
65
- "publint": "^0.3.18",
64
+ "prettier-plugin-svelte": "^3.5.2",
65
+ "publint": "^0.3.21",
66
66
  "sass": "^1.99.0",
67
- "storybook": "^10.3.5",
68
- "svelte": "^5.55.4",
69
- "svelte-check": "^4.4.6",
67
+ "storybook": "^10.4.0",
68
+ "svelte": "^5.55.7",
69
+ "svelte-check": "^4.4.8",
70
70
  "svelte-render-scan": "^1.1.0",
71
- "typescript": "^6.0.2",
72
- "typescript-eslint": "^8.58.2",
73
- "vite": "^8.0.8",
71
+ "typescript": "^6.0.3",
72
+ "typescript-eslint": "^8.59.3",
73
+ "vite": "^8.0.13",
74
74
  "vite-plugin-devtools-json": "^1.0.0",
75
- "vitest": "^4.1.4",
75
+ "vitest": "^4.1.6",
76
76
  "vitest-browser-svelte": "^2.1.1"
77
77
  },
78
78
  "keywords": [