@websline/system-components 1.4.4 → 1.4.6

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 (52) hide show
  1. package/dist/components/atoms/checkbox/checkbox.variants.d.ts +2 -2
  2. package/dist/components/atoms/checkbox/checkbox.variants.js +1 -1
  3. package/dist/components/atoms/inputDate/InputDate.svelte +114 -0
  4. package/dist/components/atoms/inputDate/InputDate.svelte.d.ts +97 -0
  5. package/dist/components/atoms/inputDate/Picker.svelte +36 -0
  6. package/dist/components/atoms/inputDate/Picker.svelte.d.ts +21 -0
  7. package/dist/components/atoms/inputDate/input.variants.d.ts +64 -0
  8. package/dist/components/atoms/inputDate/input.variants.js +20 -0
  9. package/dist/components/atoms/radio/Radio.svelte +55 -2
  10. package/dist/components/atoms/tag/Tag.svelte +9 -7
  11. package/dist/components/atoms/tag/Tag.svelte.d.ts +8 -8
  12. package/dist/components/atoms/tag/tag.variants.d.ts +0 -9
  13. package/dist/components/atoms/tag/tag.variants.js +1 -4
  14. package/dist/components/molecules/calendar/Calendar.svelte +95 -0
  15. package/dist/components/molecules/calendar/Calendar.svelte.d.ts +42 -0
  16. package/dist/components/molecules/calendar/Container.svelte +25 -0
  17. package/dist/components/molecules/calendar/Container.svelte.d.ts +25 -0
  18. package/dist/components/molecules/calendar/DayCell.svelte +47 -0
  19. package/dist/components/molecules/calendar/RootContext.svelte +28 -0
  20. package/dist/components/molecules/calendar/RootContext.svelte.d.ts +21 -0
  21. package/dist/components/molecules/calendar/WeekRow.svelte +65 -0
  22. package/dist/components/molecules/calendar/Weekdays.svelte +27 -0
  23. package/dist/components/molecules/calendar/Weekdays.svelte.d.ts +17 -0
  24. package/dist/components/molecules/calendar/calendar.variant.d.ts +79 -0
  25. package/dist/components/molecules/calendar/calendar.variant.js +36 -0
  26. package/dist/components/molecules/calendar/index.d.ts +8 -0
  27. package/dist/components/molecules/calendar/index.js +10 -0
  28. package/dist/components/molecules/formField/FormField.svelte +1 -1
  29. package/dist/components/molecules/formField/FormField.svelte.d.ts +2 -2
  30. package/dist/components/molecules/formField/formField.variants.d.ts +12 -12
  31. package/dist/components/molecules/formField/formField.variants.js +21 -5
  32. package/dist/components/molecules/richTextEditor/RichTextEditor.svelte +2 -4
  33. package/dist/components/molecules/selectorCard/SelectorCard.svelte +8 -2
  34. package/dist/components/molecules/selectorCard/SelectorCard.svelte.d.ts +2 -2
  35. package/dist/components/molecules/tagSelector/TagSelector.svelte +12 -0
  36. package/dist/components/molecules/tagSelector/TagSelector.svelte.d.ts +16 -0
  37. package/dist/components/molecules/tagSelector/ValueList.svelte +12 -2
  38. package/dist/components/molecules/tagSelector/ValueList.svelte.d.ts +4 -0
  39. package/dist/components/molecules/tagSelector/tagSelector.variants.js +2 -2
  40. package/dist/components/organisms/tooltip/Content.svelte +51 -0
  41. package/dist/components/organisms/tooltip/Content.svelte.d.ts +57 -0
  42. package/dist/components/organisms/tooltip/Tooltip.svelte +15 -0
  43. package/dist/components/organisms/tooltip/Tooltip.svelte.d.ts +17 -0
  44. package/dist/components/organisms/tooltip/Trigger.svelte +13 -0
  45. package/dist/components/organisms/tooltip/Trigger.svelte.d.ts +17 -0
  46. package/dist/components/organisms/tooltip/index.d.ts +4 -0
  47. package/dist/components/organisms/tooltip/index.js +5 -0
  48. package/dist/components/organisms/tooltip/tooltip.variant.d.ts +24 -0
  49. package/dist/components/organisms/tooltip/tooltip.variant.js +20 -0
  50. package/dist/index.d.ts +3 -0
  51. package/dist/index.js +3 -0
  52. package/package.json +25 -25
@@ -16,6 +16,14 @@ declare const TagSelector: import("svelte").Component<{
16
16
  * Whether the component is disabled
17
17
  */
18
18
  disabled?: boolean;
19
+ /**
20
+ * The name of the icon to distinguish fixed tags from others
21
+ */
22
+ fixedValueIcon?: string | undefined;
23
+ /**
24
+ * The unremovable and always selected tags
25
+ */
26
+ fixedValues?: Array<string>;
19
27
  /**
20
28
  * The ID of the input element
21
29
  */
@@ -57,6 +65,14 @@ type Props = {
57
65
  * Whether the component is disabled
58
66
  */
59
67
  disabled?: boolean;
68
+ /**
69
+ * The name of the icon to distinguish fixed tags from others
70
+ */
71
+ fixedValueIcon?: string | undefined;
72
+ /**
73
+ * The unremovable and always selected tags
74
+ */
75
+ fixedValues?: Array<string>;
60
76
  /**
61
77
  * The ID of the input element
62
78
  */
@@ -3,6 +3,8 @@
3
3
  import { tagSelectorVariants } from "./tagSelector.variants.js";
4
4
 
5
5
  let {
6
+ fixedValueIcon,
7
+ fixedValues = [],
6
8
  localValues,
7
9
  onKeydown,
8
10
  onOpenDropdown,
@@ -19,15 +21,23 @@
19
21
  </script>
20
22
 
21
23
  <div class={styles.valueList()}>
24
+ {#each fixedValues as s (s)}
25
+ <Tag class={styles.item()} iconStart={fixedValueIcon} size="big">{s}</Tag>
26
+ {/each}
27
+
22
28
  {#each value as s (s)}
23
29
  {@const opt = options.find((i) => i.id === s)}
24
- <Tag class={styles.item()} icon="closeSmall" onclick={() => onRemoveItem(s)}>
30
+ <Tag
31
+ class={styles.item()}
32
+ iconEnd="closeSmall"
33
+ onclick={() => onRemoveItem(s)}
34
+ size="big">
25
35
  {opt?.label ?? s}
26
36
  </Tag>
27
37
  {/each}
28
38
 
29
39
  {#if !localValues.disabled}
30
- <Tag class={styles.searchField()} icon="add" variant="outline">
40
+ <Tag class={styles.searchField()} iconEnd="add" size="big" variant="outline">
31
41
  <input
32
42
  bind:value={query}
33
43
  autocomplete="off"
@@ -4,6 +4,8 @@ type ValueList = {
4
4
  $set?(props: Partial<$$ComponentProps>): void;
5
5
  };
6
6
  declare const ValueList: import("svelte").Component<{
7
+ fixedValueIcon: any;
8
+ fixedValues?: any[];
7
9
  localValues: any;
8
10
  onKeydown: any;
9
11
  onOpenDropdown: any;
@@ -15,6 +17,8 @@ declare const ValueList: import("svelte").Component<{
15
17
  value?: any[];
16
18
  } & Record<string, any>, {}, "query">;
17
19
  type $$ComponentProps = {
20
+ fixedValueIcon: any;
21
+ fixedValues?: any[];
18
22
  localValues: any;
19
23
  onKeydown: any;
20
24
  onOpenDropdown: any;
@@ -6,9 +6,9 @@ const tagSelectorVariants = tv({
6
6
  base: "relative min-h-10 p-1",
7
7
  valueList: "flex flex-wrap gap-1",
8
8
  item: "h-7.5",
9
- searchField: "relative h-7.5 w-30",
9
+ searchField: "relative h-7.5 w-30 flex-row-reverse gap-0",
10
10
  searchInput:
11
- "absolute inset-0 appearance-none border-0 bg-transparent pr-1 pl-7 ui-tag-badge placeholder-current focus:ring-0",
11
+ "absolute inset-0 appearance-none border-0 bg-transparent pr-8 pl-3 ui-tag-badge placeholder-current focus:ring-0",
12
12
  dropdown:
13
13
  "absolute z-1 w-full max-w-100 overflow-y-auto bg-white p-1 pr-5 shadow-sm dark:border-neutral-700 dark:bg-neutral-800",
14
14
  dropdownCheckmark: "ml-auto shrink-0",
@@ -0,0 +1,51 @@
1
+ <script>
2
+ import { Popover } from "bits-ui";
3
+ import { quintOut } from "svelte/easing";
4
+ import { scale } from "svelte/transition";
5
+ import { tooltipVariants } from "./tooltip.variant.js";
6
+
7
+ /**
8
+ * @typedef {Object} Props
9
+ * @property {import('svelte').Snippet} [children] Children content – can be text, HTML, or other Svelte components
10
+ * @property {string} [class=""] Additional CSS classes for the content
11
+ * @property {boolean} [portalDisabled=false] Whether the portal is disabled or not. When disabled, the content will be rendered in its original DOM location.
12
+ * @property {string} [portalTarget='body'] Where to render the content when it is open. Defaults to the body.
13
+ * @property {"top" | "right" | "bottom" | "left"} [side="top"] The preferred side of the anchor to render the floating element against when open. Will be reversed when collisions occur.
14
+ * @property {number} [sideOffset=8] The distance in pixels from the anchor to the floating element.
15
+ */
16
+
17
+ /** @type {Props} */
18
+ let {
19
+ children,
20
+ class: className = "",
21
+ portalDisabled = true,
22
+ portalTarget = "body",
23
+ side = "right",
24
+ sideOffset = 8,
25
+ ...rest
26
+ } = $props();
27
+
28
+ let styles = tooltipVariants();
29
+ </script>
30
+
31
+ <Popover.Portal disabled={portalDisabled} to={portalTarget}>
32
+ <Popover.Content
33
+ align="center"
34
+ class={styles.base()}
35
+ forceMount
36
+ {side}
37
+ {sideOffset}
38
+ {...rest}>
39
+ {#snippet child({ open, props, wrapperProps })}
40
+ {#if open}
41
+ <div {...wrapperProps}>
42
+ <div {...props} in:scale={{ duration: 300, easing: quintOut, start: 0.75 }}>
43
+ <div class={styles.child({ class: className })}>
44
+ {@render children()}
45
+ </div>
46
+ </div>
47
+ </div>
48
+ {/if}
49
+ {/snippet}
50
+ </Popover.Content>
51
+ </Popover.Portal>
@@ -0,0 +1,57 @@
1
+ export default Content;
2
+ type Content = {
3
+ $on?(type: string, callback: (e: any) => void): () => void;
4
+ $set?(props: Partial<Props>): void;
5
+ };
6
+ declare const Content: import("svelte").Component<{
7
+ /**
8
+ * Children content – can be text, HTML, or other Svelte components
9
+ */
10
+ children?: import("svelte").Snippet;
11
+ /**
12
+ * Additional CSS classes for the content
13
+ */
14
+ class?: string;
15
+ /**
16
+ * Whether the portal is disabled or not. When disabled, the content will be rendered in its original DOM location.
17
+ */
18
+ portalDisabled?: boolean;
19
+ /**
20
+ * Where to render the content when it is open. Defaults to the body.
21
+ */
22
+ portalTarget?: string;
23
+ /**
24
+ * The preferred side of the anchor to render the floating element against when open. Will be reversed when collisions occur.
25
+ */
26
+ side?: "top" | "right" | "bottom" | "left";
27
+ /**
28
+ * The distance in pixels from the anchor to the floating element.
29
+ */
30
+ sideOffset?: number;
31
+ }, {}, "">;
32
+ type Props = {
33
+ /**
34
+ * Children content – can be text, HTML, or other Svelte components
35
+ */
36
+ children?: import("svelte").Snippet;
37
+ /**
38
+ * Additional CSS classes for the content
39
+ */
40
+ class?: string;
41
+ /**
42
+ * Whether the portal is disabled or not. When disabled, the content will be rendered in its original DOM location.
43
+ */
44
+ portalDisabled?: boolean;
45
+ /**
46
+ * Where to render the content when it is open. Defaults to the body.
47
+ */
48
+ portalTarget?: string;
49
+ /**
50
+ * The preferred side of the anchor to render the floating element against when open. Will be reversed when collisions occur.
51
+ */
52
+ side?: "top" | "right" | "bottom" | "left";
53
+ /**
54
+ * The distance in pixels from the anchor to the floating element.
55
+ */
56
+ sideOffset?: number;
57
+ };
@@ -0,0 +1,15 @@
1
+ <script>
2
+ import { Popover } from "bits-ui";
3
+
4
+ /**
5
+ * @typedef {Object} Props
6
+ * @property {import('svelte').Snippet} [children] Children content – can be text, HTML, or other Svelte components
7
+ */
8
+
9
+ /** @type {Props} */
10
+ let { children, ...rest } = $props();
11
+ </script>
12
+
13
+ <Popover.Root {...rest}>
14
+ {@render children()}
15
+ </Popover.Root>
@@ -0,0 +1,17 @@
1
+ export default Tooltip;
2
+ type Tooltip = {
3
+ $on?(type: string, callback: (e: any) => void): () => void;
4
+ $set?(props: Partial<Props>): void;
5
+ };
6
+ declare const Tooltip: import("svelte").Component<{
7
+ /**
8
+ * Children content – can be text, HTML, or other Svelte components
9
+ */
10
+ children?: import("svelte").Snippet;
11
+ }, {}, "">;
12
+ type Props = {
13
+ /**
14
+ * Children content – can be text, HTML, or other Svelte components
15
+ */
16
+ children?: import("svelte").Snippet;
17
+ };
@@ -0,0 +1,13 @@
1
+ <script>
2
+ import { Popover } from "bits-ui";
3
+
4
+ /**
5
+ * @typedef {Object} Props
6
+ * @property {boolean} [openOnHover=true] Whether the tooltip should open on hover
7
+ */
8
+
9
+ /** @type {Props & Omit<import("bits-ui").PopoverTriggerPropsWithoutHTML, "openOnHover">} */
10
+ let { openOnHover = true, ...rest } = $props();
11
+ </script>
12
+
13
+ <Popover.Trigger {openOnHover} {...rest} />
@@ -0,0 +1,17 @@
1
+ export default Trigger;
2
+ type Trigger = {
3
+ $on?(type: string, callback: (e: any) => void): () => void;
4
+ $set?(props: Partial<Props & Omit<PopoverTriggerPropsWithoutHTML, "openOnHover">>): void;
5
+ };
6
+ declare const Trigger: import("svelte").Component<{
7
+ /**
8
+ * Whether the tooltip should open on hover
9
+ */
10
+ openOnHover?: boolean;
11
+ } & Omit<import("bits-ui").DatePickerTriggerPropsWithoutHTML, "openOnHover">, {}, "">;
12
+ type Props = {
13
+ /**
14
+ * Whether the tooltip should open on hover
15
+ */
16
+ openOnHover?: boolean;
17
+ };
@@ -0,0 +1,4 @@
1
+ import Root from "./Tooltip.svelte";
2
+ import Trigger from "./Trigger.svelte";
3
+ import Content from "./Content.svelte";
4
+ export { Root, Trigger, Content };
@@ -0,0 +1,5 @@
1
+ import Root from "./Tooltip.svelte";
2
+ import Trigger from "./Trigger.svelte";
3
+ import Content from "./Content.svelte";
4
+
5
+ export { Root, Trigger, Content };
@@ -0,0 +1,24 @@
1
+ export const tooltipVariants: import("tailwind-variants").TVReturnType<{
2
+ [key: string]: {
3
+ [key: string]: import("tailwind-variants").ClassValue | {
4
+ base?: import("tailwind-variants").ClassValue;
5
+ child?: import("tailwind-variants").ClassValue;
6
+ };
7
+ };
8
+ } | {
9
+ [x: string]: {
10
+ [x: string]: import("tailwind-variants").ClassValue | {
11
+ base?: import("tailwind-variants").ClassValue;
12
+ child?: import("tailwind-variants").ClassValue;
13
+ };
14
+ };
15
+ }, {
16
+ base: string[];
17
+ child: string;
18
+ }, undefined, any, {
19
+ base: string[];
20
+ child: string;
21
+ }, import("tailwind-variants").TVReturnType<any, {
22
+ base: string[];
23
+ child: string;
24
+ }, undefined, unknown, unknown, undefined>>;
@@ -0,0 +1,20 @@
1
+ import { tv } from "../../../utils/tailwind.js";
2
+
3
+ const tooltipVariants = tv({
4
+ slots: {
5
+ base: [
6
+ "relative rounded-sm bg-current p-2 ui-caption-helper text-neutral-800 drop-shadow-sm dark:text-neutral-200",
7
+
8
+ // arrow styles
9
+ "after:absolute after:size-3 after:rotate-45 after:rounded-[3px] after:bg-current",
10
+ // 🔥 using side data attr. as the component may choose the opposite side if the provided one is too cramped
11
+ "data-[side=top]:after:-bottom-1 data-[side=top]:after:left-1/2 data-[side=top]:after:-translate-x-1/2",
12
+ "data-[side=bottom]:after:-top-1 data-[side=bottom]:after:left-1/2 data-[side=bottom]:after:-translate-x-1/2",
13
+ "data-[side=left]:after:top-1/2 data-[side=left]:after:-right-1 data-[side=left]:after:-translate-y-1/2",
14
+ "data-[side=right]:after:top-1/2 data-[side=right]:after:-left-1 data-[side=right]:after:-translate-y-1/2",
15
+ ],
16
+ child: "text-neutral-100 dark:text-neutral-900",
17
+ },
18
+ });
19
+
20
+ export { tooltipVariants };
package/dist/index.d.ts CHANGED
@@ -12,6 +12,7 @@ export { addIconsToRegistry } from "./components/atoms/icon/index.js";
12
12
  export { default as Icon } from "./components/atoms/icon/Icon.svelte";
13
13
  export { default as IconButton } from "./components/atoms/actions/iconButton/IconButton.svelte";
14
14
  export { default as Input } from "./components/atoms/input/Input.svelte";
15
+ export { default as InputDate } from "./components/atoms/inputDate/InputDate.svelte";
15
16
  export { default as Label } from "./components/atoms/label/Label.svelte";
16
17
  export { default as ProgressBar } from "./components/atoms/feedback/progressBar/ProgressBar.svelte";
17
18
  export { default as Radio } from "./components/atoms/radio/Radio.svelte";
@@ -21,6 +22,7 @@ export { default as Switch } from "./components/atoms/switch/Switch.svelte";
21
22
  export { default as Tag } from "./components/atoms/tag/Tag.svelte";
22
23
  export { default as Textarea } from "./components/atoms/textarea/Textarea.svelte";
23
24
  export { default as XScroll } from "./components/atoms/utils/xScroll/XScroll.svelte";
25
+ export * as Calendar from "./components/molecules/calendar/index.js";
24
26
  export * as ColorSwatch from "./components/molecules/pickers/colorSwatch/index.js";
25
27
  export { default as ComboBox } from "./components/molecules/comboBox/ComboBox.svelte";
26
28
  export { default as FormActions } from "./components/molecules/formActions/FormActions.svelte";
@@ -37,3 +39,4 @@ export * as Dialog from "./components/organisms/dialog/index.js";
37
39
  export * as Modal from "./components/organisms/modal/index.js";
38
40
  export { default as NotificationGroup } from "./components/organisms/notificationGroup/NotificationGroup.svelte";
39
41
  export * as Popover from "./components/organisms/popover/index.js";
42
+ export * as Tooltip from "./components/organisms/tooltip/index.js";
package/dist/index.js CHANGED
@@ -17,6 +17,7 @@ export { addIconsToRegistry } from "./components/atoms/icon/index.js";
17
17
  export { default as Icon } from "./components/atoms/icon/Icon.svelte";
18
18
  export { default as IconButton } from "./components/atoms/actions/iconButton/IconButton.svelte";
19
19
  export { default as Input } from "./components/atoms/input/Input.svelte";
20
+ export { default as InputDate } from "./components/atoms/inputDate/InputDate.svelte";
20
21
  export { default as Label } from "./components/atoms/label/Label.svelte";
21
22
  export { default as ProgressBar } from "./components/atoms/feedback/progressBar/ProgressBar.svelte";
22
23
  export { default as Radio } from "./components/atoms/radio/Radio.svelte";
@@ -31,6 +32,7 @@ export { default as XScroll } from "./components/atoms/utils/xScroll/XScroll.sve
31
32
  * Molecules
32
33
  */
33
34
 
35
+ export * as Calendar from "./components/molecules/calendar/index.js";
34
36
  export * as ColorSwatch from "./components/molecules/pickers/colorSwatch/index.js";
35
37
  export { default as ComboBox } from "./components/molecules/comboBox/ComboBox.svelte";
36
38
  export { default as FormActions } from "./components/molecules/formActions/FormActions.svelte";
@@ -52,3 +54,4 @@ export * as Dialog from "./components/organisms/dialog/index.js";
52
54
  export * as Modal from "./components/organisms/modal/index.js";
53
55
  export { default as NotificationGroup } from "./components/organisms/notificationGroup/NotificationGroup.svelte";
54
56
  export * as Popover from "./components/organisms/popover/index.js";
57
+ export * as Tooltip from "./components/organisms/tooltip/index.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@websline/system-components",
3
- "version": "1.4.4",
3
+ "version": "1.4.6",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -33,16 +33,16 @@
33
33
  }
34
34
  },
35
35
  "dependencies": {
36
- "@tiptap/core": "^3.21.0",
37
- "@tiptap/extension-color": "^3.21.0",
38
- "@tiptap/extension-highlight": "^3.21.0",
39
- "@tiptap/extension-link": "^3.21.0",
40
- "@tiptap/extension-placeholder": "^3.21.0",
41
- "@tiptap/extension-text-align": "^3.21.0",
42
- "@tiptap/extension-text-style": "^3.21.0",
43
- "@tiptap/pm": "^3.21.0",
44
- "@tiptap/starter-kit": "^3.21.0",
45
- "bits-ui": "^2.16.5",
36
+ "@tiptap/core": "^3.22.2",
37
+ "@tiptap/extension-color": "^3.22.2",
38
+ "@tiptap/extension-highlight": "^3.22.2",
39
+ "@tiptap/extension-link": "^3.22.2",
40
+ "@tiptap/extension-placeholder": "^3.22.2",
41
+ "@tiptap/extension-text-align": "^3.22.2",
42
+ "@tiptap/extension-text-style": "^3.22.2",
43
+ "@tiptap/pm": "^3.22.2",
44
+ "@tiptap/starter-kit": "^3.22.2",
45
+ "bits-ui": "^2.17.2",
46
46
  "dompurify": "^3.3.3",
47
47
  "tailwind-variants": "^3.2.2"
48
48
  },
@@ -50,38 +50,38 @@
50
50
  "svelte": "^5.38.7"
51
51
  },
52
52
  "devDependencies": {
53
- "@eslint/compat": "^2.0.3",
53
+ "@eslint/compat": "^2.0.4",
54
54
  "@eslint/js": "^10.0.1",
55
- "@storybook/addon-a11y": "^10.3.3",
56
- "@storybook/addon-docs": "^10.3.3",
55
+ "@storybook/addon-a11y": "^10.3.4",
56
+ "@storybook/addon-docs": "^10.3.4",
57
57
  "@storybook/addon-svelte-csf": "^5.1.2",
58
- "@storybook/sveltekit": "^10.3.3",
58
+ "@storybook/sveltekit": "^10.3.4",
59
59
  "@sveltejs/adapter-auto": "^7.0.1",
60
- "@sveltejs/kit": "^2.55.0",
60
+ "@sveltejs/kit": "^2.56.1",
61
61
  "@sveltejs/package": "^2.5.7",
62
62
  "@sveltejs/vite-plugin-svelte": "^7.0.0",
63
63
  "@tailwindcss/forms": "^0.5.11",
64
64
  "@tailwindcss/typography": "^0.5.19",
65
65
  "@tailwindcss/vite": "^4.2.2",
66
- "@types/node": "^25.5.0",
67
- "@vitest/browser": "^4.1.2",
68
- "eslint": "^10.1.0",
66
+ "@types/node": "^25.5.2",
67
+ "@vitest/browser": "^4.1.3",
68
+ "eslint": "^10.2.0",
69
69
  "eslint-config-prettier": "^10.1.8",
70
- "eslint-plugin-storybook": "^10.3.3",
71
- "eslint-plugin-svelte": "^3.16.0",
70
+ "eslint-plugin-storybook": "^10.3.4",
71
+ "eslint-plugin-svelte": "^3.17.0",
72
72
  "globals": "^17.4.0",
73
- "playwright": "^1.58.2",
73
+ "playwright": "^1.59.1",
74
74
  "postcss-url": "^10.1.3",
75
75
  "prettier": "^3.8.1",
76
76
  "prettier-plugin-svelte": "^3.5.1",
77
77
  "prettier-plugin-tailwindcss": "^0.7.2",
78
78
  "publint": "^0.3.18",
79
- "storybook": "^10.3.3",
79
+ "storybook": "^10.3.4",
80
80
  "svelte": "^5.55.1",
81
81
  "tailwindcss": "^4.2.2",
82
82
  "typescript": "^5.9.3",
83
- "vite": "^8.0.3",
84
- "vitest": "^4.1.2",
83
+ "vite": "^8.0.6",
84
+ "vitest": "^4.1.3",
85
85
  "vitest-browser-svelte": "^2.1.0"
86
86
  },
87
87
  "keywords": [