From 63fdb7566469b626946d4f206d42edad0c033430 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Wed, 26 Feb 2025 19:41:32 -0800 Subject: [PATCH 001/235] test(breadcrumb): add unit tests --- .../Breadcrumb/Breadcrumb.dynamic.test.svelte | 19 +++ .../Breadcrumb.noTrailingSlash.test.svelte | 8 ++ .../Breadcrumb.skeleton.test.svelte | 6 + tests/{ => Breadcrumb}/Breadcrumb.test.svelte | 7 - tests/Breadcrumb/Breadcrumb.test.ts | 120 ++++++++++++++++++ tests/Breadcrumbs.test.svelte | 28 ---- 6 files changed, 153 insertions(+), 35 deletions(-) create mode 100644 tests/Breadcrumb/Breadcrumb.dynamic.test.svelte create mode 100644 tests/Breadcrumb/Breadcrumb.noTrailingSlash.test.svelte create mode 100644 tests/Breadcrumb/Breadcrumb.skeleton.test.svelte rename tests/{ => Breadcrumb}/Breadcrumb.test.svelte (59%) create mode 100644 tests/Breadcrumb/Breadcrumb.test.ts delete mode 100644 tests/Breadcrumbs.test.svelte diff --git a/tests/Breadcrumb/Breadcrumb.dynamic.test.svelte b/tests/Breadcrumb/Breadcrumb.dynamic.test.svelte new file mode 100644 index 00000000..cb430acb --- /dev/null +++ b/tests/Breadcrumb/Breadcrumb.dynamic.test.svelte @@ -0,0 +1,19 @@ + + + + {#each items as item, i} + + {item.text} + + {/each} + diff --git a/tests/Breadcrumb/Breadcrumb.noTrailingSlash.test.svelte b/tests/Breadcrumb/Breadcrumb.noTrailingSlash.test.svelte new file mode 100644 index 00000000..ccd89676 --- /dev/null +++ b/tests/Breadcrumb/Breadcrumb.noTrailingSlash.test.svelte @@ -0,0 +1,8 @@ + + + + Home + Profile + diff --git a/tests/Breadcrumb/Breadcrumb.skeleton.test.svelte b/tests/Breadcrumb/Breadcrumb.skeleton.test.svelte new file mode 100644 index 00000000..4709295f --- /dev/null +++ b/tests/Breadcrumb/Breadcrumb.skeleton.test.svelte @@ -0,0 +1,6 @@ + + + + diff --git a/tests/Breadcrumb.test.svelte b/tests/Breadcrumb/Breadcrumb.test.svelte similarity index 59% rename from tests/Breadcrumb.test.svelte rename to tests/Breadcrumb/Breadcrumb.test.svelte index 1fbb2c19..058735fa 100644 --- a/tests/Breadcrumb.test.svelte +++ b/tests/Breadcrumb/Breadcrumb.test.svelte @@ -7,10 +7,3 @@ Annual reports 2019 - - - Home - Profile - - - diff --git a/tests/Breadcrumb/Breadcrumb.test.ts b/tests/Breadcrumb/Breadcrumb.test.ts new file mode 100644 index 00000000..5ad85014 --- /dev/null +++ b/tests/Breadcrumb/Breadcrumb.test.ts @@ -0,0 +1,120 @@ +import { render, screen } from "@testing-library/svelte"; +import Breadcrumb from "./Breadcrumb.test.svelte"; +import BreadcrumbNoTrailingSlash from "./Breadcrumb.noTrailingSlash.test.svelte"; +import BreadcrumbSkeleton from "./Breadcrumb.skeleton.test.svelte"; +import BreadcrumbDynamic from "./Breadcrumb.dynamic.test.svelte"; + +describe("Breadcrumb", () => { + it("renders with default props", () => { + render(Breadcrumb); + + const nav = screen.getByRole("navigation", { name: "Breadcrumb" }); + expect(nav).toBeInTheDocument(); + + const list = nav.querySelector("ol"); + expect(list).toHaveClass("bx--breadcrumb"); + expect(list).not.toHaveClass("bx--breadcrumb--no-trailing-slash"); + + const items = screen.getAllByRole("listitem"); + expect(items).toHaveLength(3); + + const links = screen.getAllByRole("link"); + expect(links).toHaveLength(3); + + expect(links[0]).toHaveTextContent("Dashboard"); + expect(links[0]).toHaveAttribute("href", "/"); + + expect(links[1]).toHaveTextContent("Annual reports"); + expect(links[1]).toHaveAttribute("href", "/reports"); + + expect(links[2]).toHaveTextContent("2019"); + expect(links[2]).toHaveAttribute("href", "/reports/2019"); + expect(items[2]).toHaveClass("bx--breadcrumb-item--current"); + }); + + it("renders with noTrailingSlash", () => { + render(BreadcrumbNoTrailingSlash); + + const nav = screen.getByRole("navigation", { name: "Breadcrumb" }); + const list = nav.querySelector("ol"); + expect(list).toHaveClass("bx--breadcrumb--no-trailing-slash"); + + const items = screen.getAllByRole("listitem"); + expect(items).toHaveLength(2); + + const links = screen.getAllByRole("link"); + expect(links[0]).toHaveTextContent("Home"); + expect(links[0]).toHaveAttribute("href", "/"); + + expect(links[1]).toHaveTextContent("Profile"); + expect(links[1]).toHaveAttribute("href", "/profile"); + expect(items[1]).toHaveClass("bx--breadcrumb-item--current"); + }); + + it("renders skeleton state", () => { + render(BreadcrumbSkeleton); + + const skeletons = document.querySelectorAll(".bx--skeleton.bx--breadcrumb"); + expect(skeletons).toHaveLength(2); + + const firstSkeleton = skeletons[0]; + expect(firstSkeleton).not.toHaveClass("bx--breadcrumb--no-trailing-slash"); + + const firstSkeletonItems = firstSkeleton.querySelectorAll( + ".bx--breadcrumb-item", + ); + expect(firstSkeletonItems).toHaveLength(3); + + const secondSkeleton = skeletons[1]; + expect(secondSkeleton).toHaveClass("bx--breadcrumb--no-trailing-slash"); + + const secondSkeletonItems = secondSkeleton.querySelectorAll( + ".bx--breadcrumb-item", + ); + expect(secondSkeletonItems).toHaveLength(5); + }); + + it("renders with dynamic items", () => { + render(BreadcrumbDynamic); + + const items = screen.getAllByRole("listitem"); + expect(items).toHaveLength(3); + + const links = screen.getAllByRole("link"); + expect(links[0]).toHaveTextContent("Dashboard"); + expect(links[0]).toHaveAttribute("href", "/"); + + expect(links[1]).toHaveTextContent("Annual reports"); + expect(links[1]).toHaveAttribute("href", "/reports"); + + expect(links[2]).toHaveTextContent("2019"); + expect(links[2]).toHaveAttribute("href", "/reports/2019"); + expect(items[2]).toHaveClass("bx--breadcrumb-item--current"); + }); + + it("updates when dynamic items change", async () => { + const { rerender } = render(BreadcrumbDynamic); + + let items = screen.getAllByRole("listitem"); + expect(items).toHaveLength(3); + + await rerender({ + items: [ + { href: "/", text: "Home" }, + { href: "/settings", text: "Settings" }, + ], + }); + + items = screen.getAllByRole("listitem"); + expect(items).toHaveLength(2); + + const links = screen.getAllByRole("link"); + expect(links[0]).toHaveTextContent("Home"); + expect(links[0]).toHaveAttribute("href", "/"); + + expect(links[1]).toHaveTextContent("Settings"); + expect(links[1]).toHaveAttribute("href", "/settings"); + + expect(items[1]).toHaveClass("bx--breadcrumb-item--current"); + }); +}); diff --git a/tests/Breadcrumbs.test.svelte b/tests/Breadcrumbs.test.svelte deleted file mode 100644 index d3a5d540..00000000 --- a/tests/Breadcrumbs.test.svelte +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - {#each items as item, i} - - {item.text} - - {/each} - - - From 67df81eac9ec9fa9714b10781cdea37dfcb7c84a Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Wed, 26 Feb 2025 19:45:15 -0800 Subject: [PATCH 002/235] test(content-switcher): add unit tests --- tests/ContentSwitcher.test.svelte | 15 -- .../ContentSwitcher.custom.test.svelte | 10 ++ .../ContentSwitcher.disabled.test.svelte | 9 + .../ContentSwitcher.selectedIndex.test.svelte | 11 ++ .../ContentSwitcher.size.test.svelte | 13 ++ .../ContentSwitcher.test.svelte | 9 + tests/ContentSwitcher/ContentSwitcher.test.ts | 167 ++++++++++++++++++ 7 files changed, 219 insertions(+), 15 deletions(-) delete mode 100644 tests/ContentSwitcher.test.svelte create mode 100644 tests/ContentSwitcher/ContentSwitcher.custom.test.svelte create mode 100644 tests/ContentSwitcher/ContentSwitcher.disabled.test.svelte create mode 100644 tests/ContentSwitcher/ContentSwitcher.selectedIndex.test.svelte create mode 100644 tests/ContentSwitcher/ContentSwitcher.size.test.svelte create mode 100644 tests/ContentSwitcher/ContentSwitcher.test.svelte create mode 100644 tests/ContentSwitcher/ContentSwitcher.test.ts diff --git a/tests/ContentSwitcher.test.svelte b/tests/ContentSwitcher.test.svelte deleted file mode 100644 index 4d3bb3e8..00000000 --- a/tests/ContentSwitcher.test.svelte +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - -
- - Trending -
-
-
diff --git a/tests/ContentSwitcher/ContentSwitcher.custom.test.svelte b/tests/ContentSwitcher/ContentSwitcher.custom.test.svelte new file mode 100644 index 00000000..2c756297 --- /dev/null +++ b/tests/ContentSwitcher/ContentSwitcher.custom.test.svelte @@ -0,0 +1,10 @@ + + + + +
Custom Content
+
+ +
diff --git a/tests/ContentSwitcher/ContentSwitcher.disabled.test.svelte b/tests/ContentSwitcher/ContentSwitcher.disabled.test.svelte new file mode 100644 index 00000000..c2a0799d --- /dev/null +++ b/tests/ContentSwitcher/ContentSwitcher.disabled.test.svelte @@ -0,0 +1,9 @@ + + + + + + + diff --git a/tests/ContentSwitcher/ContentSwitcher.selectedIndex.test.svelte b/tests/ContentSwitcher/ContentSwitcher.selectedIndex.test.svelte new file mode 100644 index 00000000..7f4c49f0 --- /dev/null +++ b/tests/ContentSwitcher/ContentSwitcher.selectedIndex.test.svelte @@ -0,0 +1,11 @@ + + + + + + + diff --git a/tests/ContentSwitcher/ContentSwitcher.size.test.svelte b/tests/ContentSwitcher/ContentSwitcher.size.test.svelte new file mode 100644 index 00000000..afa046ca --- /dev/null +++ b/tests/ContentSwitcher/ContentSwitcher.size.test.svelte @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/tests/ContentSwitcher/ContentSwitcher.test.svelte b/tests/ContentSwitcher/ContentSwitcher.test.svelte new file mode 100644 index 00000000..a1b7654e --- /dev/null +++ b/tests/ContentSwitcher/ContentSwitcher.test.svelte @@ -0,0 +1,9 @@ + + + + + + + diff --git a/tests/ContentSwitcher/ContentSwitcher.test.ts b/tests/ContentSwitcher/ContentSwitcher.test.ts new file mode 100644 index 00000000..11d20360 --- /dev/null +++ b/tests/ContentSwitcher/ContentSwitcher.test.ts @@ -0,0 +1,167 @@ +import { render, screen } from "@testing-library/svelte"; +import { user } from "../setup-tests"; +import ContentSwitcher from "./ContentSwitcher.test.svelte"; +import ContentSwitcherSize from "./ContentSwitcher.size.test.svelte"; +import ContentSwitcherSelectedIndex from "./ContentSwitcher.selectedIndex.test.svelte"; +import ContentSwitcherDisabled from "./ContentSwitcher.disabled.test.svelte"; +import ContentSwitcherCustom from "./ContentSwitcher.custom.test.svelte"; + +describe("ContentSwitcher", () => { + it("renders with default props", () => { + render(ContentSwitcher); + + const tablist = screen.getByRole("tablist"); + expect(tablist).toHaveClass("bx--content-switcher"); + expect(tablist).not.toHaveClass("bx--content-switcher--sm"); + expect(tablist).not.toHaveClass("bx--content-switcher--xl"); + + const tabs = screen.getAllByRole("tab"); + expect(tabs).toHaveLength(3); + + expect(tabs[0]).toHaveTextContent("Option 1"); + expect(tabs[1]).toHaveTextContent("Option 2"); + expect(tabs[2]).toHaveTextContent("Option 3"); + + expect(tabs[0]).toHaveClass("bx--content-switcher--selected"); + expect(tabs[0]).toHaveAttribute("aria-selected", "true"); + expect(tabs[0]).toHaveAttribute("tabindex", "0"); + + expect(tabs[1]).not.toHaveClass("bx--content-switcher--selected"); + expect(tabs[1]).toHaveAttribute("aria-selected", "false"); + expect(tabs[1]).toHaveAttribute("tabindex", "-1"); + + expect(tabs[2]).not.toHaveClass("bx--content-switcher--selected"); + expect(tabs[2]).toHaveAttribute("aria-selected", "false"); + expect(tabs[2]).toHaveAttribute("tabindex", "-1"); + }); + + it("renders with different sizes", () => { + render(ContentSwitcherSize); + + const tablists = screen.getAllByRole("tablist"); + expect(tablists).toHaveLength(2); + + expect(tablists[0]).toHaveClass("bx--content-switcher--sm"); + expect(tablists[0]).not.toHaveClass("bx--content-switcher--xl"); + + expect(tablists[1]).toHaveClass("bx--content-switcher--xl"); + expect(tablists[1]).not.toHaveClass("bx--content-switcher--sm"); + + const smallTabs = tablists[0].querySelectorAll('[role="tab"]'); + expect(smallTabs).toHaveLength(2); + expect(smallTabs[0]).toHaveTextContent("Small 1"); + expect(smallTabs[1]).toHaveTextContent("Small 2"); + + const xlTabs = tablists[1].querySelectorAll('[role="tab"]'); + expect(xlTabs).toHaveLength(2); + expect(xlTabs[0]).toHaveTextContent("XL 1"); + expect(xlTabs[1]).toHaveTextContent("XL 2"); + }); + + it("renders with selectedIndex prop", () => { + render(ContentSwitcherSelectedIndex); + + const tabs = screen.getAllByRole("tab"); + expect(tabs).toHaveLength(3); + + expect(tabs[0]).not.toHaveClass("bx--content-switcher--selected"); + expect(tabs[0]).toHaveAttribute("aria-selected", "false"); + expect(tabs[0]).toHaveAttribute("tabindex", "-1"); + + expect(tabs[1]).toHaveClass("bx--content-switcher--selected"); + expect(tabs[1]).toHaveAttribute("aria-selected", "true"); + expect(tabs[1]).toHaveAttribute("tabindex", "0"); + + expect(tabs[2]).not.toHaveClass("bx--content-switcher--selected"); + expect(tabs[2]).toHaveAttribute("aria-selected", "false"); + expect(tabs[2]).toHaveAttribute("tabindex", "-1"); + }); + + it("updates when selectedIndex changes", async () => { + const { rerender } = render(ContentSwitcherSelectedIndex); + + let tabs = screen.getAllByRole("tab"); + expect(tabs[1]).toHaveClass("bx--content-switcher--selected"); + + await rerender({ selectedIndex: 2 }); + + tabs = screen.getAllByRole("tab"); + expect(tabs[1]).not.toHaveClass("bx--content-switcher--selected"); + expect(tabs[2]).toHaveClass("bx--content-switcher--selected"); + expect(tabs[2]).toHaveAttribute("aria-selected", "true"); + expect(tabs[2]).toHaveAttribute("tabindex", "0"); + }); + + it("handles click events", async () => { + render(ContentSwitcher); + + const tabs = screen.getAllByRole("tab"); + expect(tabs[0]).toHaveClass("bx--content-switcher--selected"); + + await user.click(tabs[1]); + expect(tabs[0]).not.toHaveClass("bx--content-switcher--selected"); + expect(tabs[1]).toHaveClass("bx--content-switcher--selected"); + + await user.click(tabs[2]); + expect(tabs[1]).not.toHaveClass("bx--content-switcher--selected"); + expect(tabs[2]).toHaveClass("bx--content-switcher--selected"); + }); + + it("handles keyboard navigation", async () => { + render(ContentSwitcher); + + const tabs = screen.getAllByRole("tab"); + expect(tabs[0]).toHaveClass("bx--content-switcher--selected"); + + await user.tab(); + expect(document.activeElement).toBe(tabs[0]); + + await user.keyboard("{ArrowRight}"); + expect(tabs[0]).not.toHaveClass("bx--content-switcher--selected"); + expect(tabs[1]).toHaveClass("bx--content-switcher--selected"); + expect(document.activeElement).toBe(tabs[1]); + + await user.keyboard("{ArrowRight}"); + expect(tabs[1]).not.toHaveClass("bx--content-switcher--selected"); + expect(tabs[2]).toHaveClass("bx--content-switcher--selected"); + expect(document.activeElement).toBe(tabs[2]); + + await user.keyboard("{ArrowRight}"); + expect(tabs[2]).not.toHaveClass("bx--content-switcher--selected"); + expect(tabs[0]).toHaveClass("bx--content-switcher--selected"); + expect(document.activeElement).toBe(tabs[0]); + + await user.keyboard("{ArrowLeft}"); + expect(tabs[0]).not.toHaveClass("bx--content-switcher--selected"); + expect(tabs[2]).toHaveClass("bx--content-switcher--selected"); + expect(document.activeElement).toBe(tabs[2]); + }); + + it("respects disabled state", async () => { + render(ContentSwitcherDisabled); + + const tabs = screen.getAllByRole("tab"); + expect(tabs).toHaveLength(3); + expect(tabs[1]).toHaveAttribute("disabled"); + + await user.click(tabs[1]); + expect(tabs[0]).toHaveClass("bx--content-switcher--selected"); + expect(tabs[1]).not.toHaveClass("bx--content-switcher--selected"); + + await user.click(tabs[2]); + expect(tabs[0]).not.toHaveClass("bx--content-switcher--selected"); + expect(tabs[2]).toHaveClass("bx--content-switcher--selected"); + }); + + it("renders custom content", () => { + render(ContentSwitcherCustom); + + const customContent = screen.getByTestId("custom-content"); + expect(customContent).toBeInTheDocument(); + expect(customContent).toHaveTextContent("Custom Content"); + + const tabs = screen.getAllByRole("tab"); + expect(tabs).toHaveLength(2); + expect(tabs[1]).toHaveTextContent("Regular Text"); + }); +}); From 1ba777ade8f0a585f5f92acd28afec86ca4da572 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Wed, 26 Feb 2025 19:54:01 -0800 Subject: [PATCH 003/235] test(breakpoint): add unit tests --- tests/Breakpoint.test.svelte | 28 ----- tests/Breakpoint/Breakpoint.test.svelte | 28 +++++ tests/Breakpoint/Breakpoint.test.ts | 116 ++++++++++++++++++ .../Breakpoint/BreakpointObserver.test.svelte | 21 ++++ tests/Breakpoint/Breakpoints.test.svelte | 9 ++ 5 files changed, 174 insertions(+), 28 deletions(-) delete mode 100644 tests/Breakpoint.test.svelte create mode 100644 tests/Breakpoint/Breakpoint.test.svelte create mode 100644 tests/Breakpoint/Breakpoint.test.ts create mode 100644 tests/Breakpoint/BreakpointObserver.test.svelte create mode 100644 tests/Breakpoint/Breakpoints.test.svelte diff --git a/tests/Breakpoint.test.svelte b/tests/Breakpoint.test.svelte deleted file mode 100644 index f881cb4f..00000000 --- a/tests/Breakpoint.test.svelte +++ /dev/null @@ -1,28 +0,0 @@ - - -{smaller} -{larger} -{breakpoints.md} - - { - console.log(e.detail); - }} -> - {currentSize} - diff --git a/tests/Breakpoint/Breakpoint.test.svelte b/tests/Breakpoint/Breakpoint.test.svelte new file mode 100644 index 00000000..1c587c32 --- /dev/null +++ b/tests/Breakpoint/Breakpoint.test.svelte @@ -0,0 +1,28 @@ + + + +
{currentSize}
+
{currentSizes.sm}
+
{currentSizes.md}
+
{currentSizes.lg}
+
{currentSizes.xlg}
+
{currentSizes.max}
+
diff --git a/tests/Breakpoint/Breakpoint.test.ts b/tests/Breakpoint/Breakpoint.test.ts new file mode 100644 index 00000000..c76983b6 --- /dev/null +++ b/tests/Breakpoint/Breakpoint.test.ts @@ -0,0 +1,116 @@ +import { render, screen } from "@testing-library/svelte"; +import Breakpoint from "./Breakpoint.test.svelte"; +import BreakpointObserver from "./BreakpointObserver.test.svelte"; +import Breakpoints from "./Breakpoints.test.svelte"; + +describe("Breakpoint", () => { + beforeEach(() => { + vi.useFakeTimers(); + }); + + afterEach(() => { + vi.unstubAllGlobals(); + vi.useRealTimers(); + }); + + it("renders and detects breakpoint size", () => { + vi.stubGlobal("matchMedia", (query: string) => ({ + matches: query.includes("(min-width: 1056px) and (max-width: 1312px)"), + media: query, + addEventListener: vi.fn(), + removeEventListener: vi.fn(), + })); + + render(Breakpoint); + + expect(screen.getByTestId("current-size").textContent).toBe("lg"); + expect(screen.getByTestId("is-sm").textContent).toBe("false"); + expect(screen.getByTestId("is-md").textContent).toBe("false"); + expect(screen.getByTestId("is-lg").textContent).toBe("true"); + expect(screen.getByTestId("is-xlg").textContent).toBe("false"); + expect(screen.getByTestId("is-max").textContent).toBe("false"); + }); + + it("updates when window size changes", async () => { + const mockChangeHandler = vi.fn(); + const mediaQueryListeners = new Map(); + + vi.stubGlobal("matchMedia", (query: string) => { + const isLgQuery = query.includes( + "(min-width: 1056px) and (max-width: 1312px)", + ); + + return { + matches: isLgQuery, + media: query, + addEventListener: (event: string, listener: MediaQueryList) => { + if (!mediaQueryListeners.has(query)) { + mediaQueryListeners.set(query, []); + } + mediaQueryListeners.get(query).push({ event, listener }); + }, + removeEventListener: vi.fn(), + }; + }); + + const { component } = render(Breakpoint); + component.$on("change", mockChangeHandler); + + expect(screen.getByTestId("current-size").textContent).toBe("lg"); + mockChangeHandler.mockClear(); + + for (const [query, listeners] of mediaQueryListeners.entries()) { + const isXlgQuery = query.includes( + "(min-width: 1312px) and (max-width: 1584px)", + ); + + for (const { event, listener } of listeners) { + if (event === "change") { + listener({ matches: isXlgQuery, media: query }); + } + } + } + + await vi.runOnlyPendingTimersAsync(); + + expect(mockChangeHandler).toHaveBeenCalled(); + + component.$set({ + size: "xlg", + sizes: { + sm: false, + md: false, + lg: false, + xlg: true, + max: false, + }, + }); + + expect(screen.getByTestId("current-size").textContent).toBe("xlg"); + expect(screen.getByTestId("is-xlg").textContent).toBe("true"); + }); + + it("provides breakpointObserver utilities", () => { + vi.stubGlobal("matchMedia", (query: string) => ({ + matches: query.includes("(min-width: 1056px) and (max-width: 1312px)"), + media: query, + addEventListener: vi.fn(), + removeEventListener: vi.fn(), + })); + + render(BreakpointObserver); + + expect(screen.getByTestId("smaller-than-md").textContent).toBe("false"); + expect(screen.getByTestId("larger-than-md").textContent).toBe("true"); + }); + + it("exposes breakpoint values", () => { + render(Breakpoints); + + expect(screen.getByTestId("sm").textContent).toBe("320"); + expect(screen.getByTestId("md").textContent).toBe("672"); + expect(screen.getByTestId("lg").textContent).toBe("1056"); + expect(screen.getByTestId("xlg").textContent).toBe("1312"); + expect(screen.getByTestId("max").textContent).toBe("1584"); + }); +}); diff --git a/tests/Breakpoint/BreakpointObserver.test.svelte b/tests/Breakpoint/BreakpointObserver.test.svelte new file mode 100644 index 00000000..0a4591b8 --- /dev/null +++ b/tests/Breakpoint/BreakpointObserver.test.svelte @@ -0,0 +1,21 @@ + + +
{smallerThanMd}
+
{largerThanMd}
diff --git a/tests/Breakpoint/Breakpoints.test.svelte b/tests/Breakpoint/Breakpoints.test.svelte new file mode 100644 index 00000000..f50a7402 --- /dev/null +++ b/tests/Breakpoint/Breakpoints.test.svelte @@ -0,0 +1,9 @@ + + +
{breakpoints.sm}
+
{breakpoints.md}
+
{breakpoints.lg}
+
{breakpoints.xlg}
+
{breakpoints.max}
From ca4a12164d9ea649c4e2ccfe0ba81f406dce1c4e Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Wed, 26 Feb 2025 20:51:37 -0800 Subject: [PATCH 004/235] test(checkbox): add unit tests --- tests/Checkbox.test.svelte | 15 -- tests/Checkbox/Checkbox.group.test.svelte | 28 ++++ tests/Checkbox/Checkbox.skeleton.test.svelte | 5 + tests/Checkbox/Checkbox.slot.test.svelte | 7 + tests/Checkbox/Checkbox.test.svelte | 20 +++ tests/Checkbox/Checkbox.test.ts | 137 +++++++++++++++++++ 6 files changed, 197 insertions(+), 15 deletions(-) delete mode 100644 tests/Checkbox.test.svelte create mode 100644 tests/Checkbox/Checkbox.group.test.svelte create mode 100644 tests/Checkbox/Checkbox.skeleton.test.svelte create mode 100644 tests/Checkbox/Checkbox.slot.test.svelte create mode 100644 tests/Checkbox/Checkbox.test.svelte create mode 100644 tests/Checkbox/Checkbox.test.ts diff --git a/tests/Checkbox.test.svelte b/tests/Checkbox.test.svelte deleted file mode 100644 index d233bdca..00000000 --- a/tests/Checkbox.test.svelte +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - diff --git a/tests/Checkbox/Checkbox.group.test.svelte b/tests/Checkbox/Checkbox.group.test.svelte new file mode 100644 index 00000000..454c07f0 --- /dev/null +++ b/tests/Checkbox/Checkbox.group.test.svelte @@ -0,0 +1,28 @@ + + + + + + + diff --git a/tests/Checkbox/Checkbox.skeleton.test.svelte b/tests/Checkbox/Checkbox.skeleton.test.svelte new file mode 100644 index 00000000..7d8e5615 --- /dev/null +++ b/tests/Checkbox/Checkbox.skeleton.test.svelte @@ -0,0 +1,5 @@ + + + diff --git a/tests/Checkbox/Checkbox.slot.test.svelte b/tests/Checkbox/Checkbox.slot.test.svelte new file mode 100644 index 00000000..518a4315 --- /dev/null +++ b/tests/Checkbox/Checkbox.slot.test.svelte @@ -0,0 +1,7 @@ + + + + Custom label content + diff --git a/tests/Checkbox/Checkbox.test.svelte b/tests/Checkbox/Checkbox.test.svelte new file mode 100644 index 00000000..40bdbed9 --- /dev/null +++ b/tests/Checkbox/Checkbox.test.svelte @@ -0,0 +1,20 @@ + + + console.log("check")} + on:click={() => console.log("click")} +/> diff --git a/tests/Checkbox/Checkbox.test.ts b/tests/Checkbox/Checkbox.test.ts new file mode 100644 index 00000000..25b6bee8 --- /dev/null +++ b/tests/Checkbox/Checkbox.test.ts @@ -0,0 +1,137 @@ +import { render, screen } from "@testing-library/svelte"; +import { user } from "../setup-tests"; +import Checkbox from "./Checkbox.test.svelte"; +import CheckboxSkeleton from "./Checkbox.skeleton.test.svelte"; +import CheckboxGroup from "./Checkbox.group.test.svelte"; +import CheckboxSlot from "./Checkbox.slot.test.svelte"; + +describe("Checkbox", () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + it("renders with default props", () => { + render(Checkbox); + + const checkbox = screen.getByTestId("checkbox"); + expect(checkbox).toBeInTheDocument(); + + const input = checkbox.querySelector("input[type='checkbox']"); + expect(input).not.toBeChecked(); + expect(input).not.toBeDisabled(); + expect(input).not.toHaveAttribute("indeterminate"); + + const label = checkbox.querySelector("label"); + expect(label).toHaveTextContent("Checkbox label"); + const hiddenElement = label?.querySelector(".bx--visually-hidden"); + expect(hiddenElement).not.toBeInTheDocument(); + }); + + it("renders checked state", () => { + render(Checkbox, { checked: true }); + + const input = screen + .getByTestId("checkbox") + .querySelector("input[type='checkbox']"); + expect(input).toBeChecked(); + }); + + it("emits events", async () => { + const consoleLog = vi.spyOn(console, "log"); + render(Checkbox); + + const input = screen + .getByTestId("checkbox") + .querySelector("input[type='checkbox']") as HTMLInputElement; + await user.click(input); + expect(consoleLog).toHaveBeenCalledWith("check"); + expect(consoleLog).toHaveBeenCalledWith("click"); + expect(consoleLog).toHaveBeenCalledTimes(2); + }); + + it("renders indeterminate state", () => { + render(Checkbox, { indeterminate: true }); + + const input = screen + .getByTestId("checkbox") + .querySelector("input[type='checkbox']") as HTMLInputElement; + expect(input.indeterminate).toBe(true); + }); + + it("renders disabled state", () => { + render(Checkbox, { disabled: true }); + + const input = screen + .getByTestId("checkbox") + .querySelector("input[type='checkbox']"); + expect(input).toBeDisabled(); + }); + + it("renders with hidden label", () => { + render(Checkbox, { hideLabel: true }); + + const label = screen.getByTestId("checkbox").querySelector("label"); + const hiddenElement = label?.querySelector(".bx--visually-hidden"); + expect(hiddenElement).toBeInTheDocument(); + }); + + it("renders with custom label text", () => { + render(Checkbox, { labelText: "Custom label" }); + + const label = screen.getByTestId("checkbox").querySelector("label"); + expect(label).toHaveTextContent("Custom label"); + }); + + it("renders skeleton state", () => { + render(CheckboxSkeleton); + + const skeleton = screen.getByTestId("checkbox-skeleton"); + expect(skeleton).toBeInTheDocument(); + expect( + skeleton.querySelector(".bx--checkbox-label-text.bx--skeleton"), + ).toBeInTheDocument(); + expect( + skeleton.querySelector("input[type='checkbox']"), + ).not.toBeInTheDocument(); + }); + + it("works with checkbox groups", async () => { + const consoleLog = vi.spyOn(console, "log"); + render(CheckboxGroup); + + const checkbox1 = screen + .getByTestId("checkbox-1") + .querySelector("input[type='checkbox']") as HTMLInputElement; + const checkbox2 = screen + .getByTestId("checkbox-2") + .querySelector("input[type='checkbox']") as HTMLInputElement; + const checkbox3 = screen + .getByTestId("checkbox-3") + .querySelector("input[type='checkbox']") as HTMLInputElement; + + expect(checkbox1).not.toBeChecked(); + expect(checkbox2).toBeChecked(); + expect(checkbox3).not.toBeChecked(); + expect(consoleLog).toHaveBeenCalledWith(["option-2"]); + + await user.click(checkbox1); + expect(checkbox1).toBeChecked(); + expect(consoleLog).toHaveBeenCalledWith(["option-2", "option-1"]); + + await user.click(checkbox2); + expect(checkbox2).not.toBeChecked(); + expect(consoleLog).toHaveBeenCalledWith(["option-2"]); + + await user.click(checkbox3); + expect(checkbox3).toBeChecked(); + expect(consoleLog).toHaveBeenCalledWith(["option-1", "option-3"]); + }); + + it("supports custom label slot", () => { + render(CheckboxSlot); + + const customLabel = screen.getByTestId("custom-label"); + expect(customLabel).toBeInTheDocument(); + expect(customLabel).toHaveTextContent("Custom label content"); + }); +}); From 936a681194df954b665e86016b5c85bfe09aa323 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Sun, 2 Mar 2025 14:10:00 -0800 Subject: [PATCH 005/235] test(tooltip): add unit tests --- tests/Tooltip.test.svelte | 54 ------ tests/Tooltip/Tooltip.test.ts | 168 ++++++++++++++++++ tests/Tooltip/TooltipAlignments.test.svelte | 15 ++ .../Tooltip/TooltipCustomContent.test.svelte | 7 + tests/Tooltip/TooltipCustomIcon.test.svelte | 8 + tests/Tooltip/TooltipDefault.test.svelte | 5 + tests/Tooltip/TooltipDirections.test.svelte | 15 ++ tests/Tooltip/TooltipEvents.test.svelte | 27 +++ tests/Tooltip/TooltipHideIcon.test.svelte | 11 ++ tests/Tooltip/TooltipOpen.test.svelte | 7 + 10 files changed, 263 insertions(+), 54 deletions(-) delete mode 100644 tests/Tooltip.test.svelte create mode 100644 tests/Tooltip/Tooltip.test.ts create mode 100644 tests/Tooltip/TooltipAlignments.test.svelte create mode 100644 tests/Tooltip/TooltipCustomContent.test.svelte create mode 100644 tests/Tooltip/TooltipCustomIcon.test.svelte create mode 100644 tests/Tooltip/TooltipDefault.test.svelte create mode 100644 tests/Tooltip/TooltipDirections.test.svelte create mode 100644 tests/Tooltip/TooltipEvents.test.svelte create mode 100644 tests/Tooltip/TooltipHideIcon.test.svelte create mode 100644 tests/Tooltip/TooltipOpen.test.svelte diff --git a/tests/Tooltip.test.svelte b/tests/Tooltip.test.svelte deleted file mode 100644 index 7d57f2c8..00000000 --- a/tests/Tooltip.test.svelte +++ /dev/null @@ -1,54 +0,0 @@ - - - -

Resources are provisioned based on your account's organization.

-
- - -

Resources are provisioned based on your account's organization.

-
- - -

Top

-
- - -

Right

-
- - -

Bottom

-
- - -

Left

-
- - -

Resources are provisioned based on your account's organization.

- -
- -Learn more - - - - -

Resources are provisioned based on your account's organization.

-
- - -
-

Resources are provisioned based on your account's organization.

-
diff --git a/tests/Tooltip/Tooltip.test.ts b/tests/Tooltip/Tooltip.test.ts new file mode 100644 index 00000000..8dde83e3 --- /dev/null +++ b/tests/Tooltip/Tooltip.test.ts @@ -0,0 +1,168 @@ +import { render, screen, fireEvent } from "@testing-library/svelte"; +import TooltipDefault from "./TooltipDefault.test.svelte"; +import TooltipHideIcon from "./TooltipHideIcon.test.svelte"; +import TooltipOpen from "./TooltipOpen.test.svelte"; +import TooltipCustomContent from "./TooltipCustomContent.test.svelte"; +import TooltipCustomIcon from "./TooltipCustomIcon.test.svelte"; +import TooltipDirections from "./TooltipDirections.test.svelte"; +import TooltipAlignments from "./TooltipAlignments.test.svelte"; +import TooltipEvents from "./TooltipEvents.test.svelte"; +import { user } from "../setup-tests"; + +describe("Tooltip", () => { + test("should render with default props", () => { + const { container } = render(TooltipDefault); + expect(container.querySelector(".bx--tooltip__label")).toBeInTheDocument(); + expect( + container.querySelector(".bx--tooltip__trigger"), + ).toBeInTheDocument(); + }); + + test("should hide icon when hideIcon is true", async () => { + const { container } = render(TooltipHideIcon); + + expect( + container.querySelector(".bx--tooltip__trigger"), + ).not.toBeInTheDocument(); + expect(screen.getByText("Tooltip trigger")).toBeInTheDocument(); + await user.click(screen.getByText("Tooltip trigger")); + expect( + screen.getByText("This tooltip has its icon hidden"), + ).toBeInTheDocument(); + }); + + test("should show tooltip when open is true", () => { + const { container } = render(TooltipOpen); + + expect(container.querySelector(".bx--tooltip")).toBeInTheDocument(); + expect(container.querySelector(".bx--tooltip--shown")).toBeInTheDocument(); + expect( + screen.getByText("This tooltip is initially open"), + ).toBeInTheDocument(); + }); + + test("should open tooltip on focus", async () => { + const { container } = render(TooltipDefault); + + const trigger = container.querySelector(".bx--tooltip__trigger"); + assert(trigger); + + await fireEvent.focus(trigger); + expect(container.querySelector(".bx--tooltip")).toBeInTheDocument(); + expect(container.querySelector(".bx--tooltip--shown")).toBeInTheDocument(); + }); + + test("should close tooltip on Escape key", async () => { + const { container } = render(TooltipOpen); + + expect(container.querySelector(".bx--tooltip")).toBeInTheDocument(); + + const tooltip = container.querySelector(".bx--tooltip"); + assert(tooltip); + + await fireEvent.keyDown(tooltip, { key: "Escape" }); + expect(container.querySelector(".bx--tooltip")).not.toBeInTheDocument(); + }); + + test("should toggle tooltip on mousedown", async () => { + const { container } = render(TooltipDefault); + + const trigger = container.querySelector(".bx--tooltip__trigger"); + assert(trigger); + + await user.click(trigger); + expect(container.querySelector(".bx--tooltip")).toBeInTheDocument(); + + await user.click(trigger); + expect(container.querySelector(".bx--tooltip")).not.toBeInTheDocument(); + }); + + test("should render custom slot content", () => { + render(TooltipCustomContent); + + expect(screen.getByTestId("tooltip-content")).toBeInTheDocument(); + expect(screen.getByText("Custom tooltip content")).toBeInTheDocument(); + }); + + test("should render custom icon via slot", async () => { + render(TooltipCustomIcon); + + expect(screen.getByTestId("custom-icon")).toBeInTheDocument(); + expect(screen.getByText("🔍")).toBeInTheDocument(); + + await user.click(screen.getByTestId("custom-icon")); + expect(screen.getByText("Custom icon tooltip")).toBeInTheDocument(); + }); + + test("should apply correct direction classes", () => { + const { container } = render(TooltipDirections); + + const tooltips = container.querySelectorAll(".bx--tooltip"); + + expect(tooltips.length).toBe(4); + + expect(container.querySelector(".bx--tooltip--top")).toBeInTheDocument(); + expect(container.querySelector(".bx--tooltip--right")).toBeInTheDocument(); + expect(container.querySelector(".bx--tooltip--bottom")).toBeInTheDocument(); + expect(container.querySelector(".bx--tooltip--left")).toBeInTheDocument(); + + expect(screen.getByText("Tooltip with top direction")).toBeInTheDocument(); + expect( + screen.getByText("Tooltip with right direction"), + ).toBeInTheDocument(); + expect( + screen.getByText("Tooltip with bottom direction"), + ).toBeInTheDocument(); + expect(screen.getByText("Tooltip with left direction")).toBeInTheDocument(); + }); + + test("should apply correct alignment classes", () => { + const { container } = render(TooltipAlignments); + + const tooltips = container.querySelectorAll(".bx--tooltip"); + expect(tooltips.length).toBe(3); + + expect( + container.querySelector(".bx--tooltip--align-start"), + ).toBeInTheDocument(); + expect( + container.querySelector(".bx--tooltip--align-center"), + ).toBeInTheDocument(); + expect( + container.querySelector(".bx--tooltip--align-end"), + ).toBeInTheDocument(); + + expect( + screen.getByText("Tooltip with start alignment"), + ).toBeInTheDocument(); + expect( + screen.getByText("Tooltip with center alignment"), + ).toBeInTheDocument(); + expect(screen.getByText("Tooltip with end alignment")).toBeInTheDocument(); + }); + + test("should dispatch events when tooltip opens and closes", async () => { + const { container } = render(TooltipEvents); + + expect(screen.getByText("Open events: 0")).toBeInTheDocument(); + expect(screen.getByText("Close events: 0")).toBeInTheDocument(); + + const trigger = container.querySelector(".bx--tooltip__trigger"); + assert(trigger); + + await user.click(trigger); + expect(screen.getByText("Open events: 1")).toBeInTheDocument(); + + await user.keyboard("{Escape}"); + expect(screen.getByText("Close events: 1")).toBeInTheDocument(); + }); + + test("should close tooltip when clicking outside", async () => { + const { container } = render(TooltipOpen); + + expect(container.querySelector(".bx--tooltip")).toBeInTheDocument(); + + await user.click(document.body); + expect(container.querySelector(".bx--tooltip")).not.toBeInTheDocument(); + }); +}); diff --git a/tests/Tooltip/TooltipAlignments.test.svelte b/tests/Tooltip/TooltipAlignments.test.svelte new file mode 100644 index 00000000..73b170e7 --- /dev/null +++ b/tests/Tooltip/TooltipAlignments.test.svelte @@ -0,0 +1,15 @@ + + +
+ {#each alignments as align} +
+ + Tooltip with {align} alignment + +
+ {/each} +
diff --git a/tests/Tooltip/TooltipCustomContent.test.svelte b/tests/Tooltip/TooltipCustomContent.test.svelte new file mode 100644 index 00000000..837681e0 --- /dev/null +++ b/tests/Tooltip/TooltipCustomContent.test.svelte @@ -0,0 +1,7 @@ + + + +

Custom tooltip content

+
diff --git a/tests/Tooltip/TooltipCustomIcon.test.svelte b/tests/Tooltip/TooltipCustomIcon.test.svelte new file mode 100644 index 00000000..3546ac83 --- /dev/null +++ b/tests/Tooltip/TooltipCustomIcon.test.svelte @@ -0,0 +1,8 @@ + + + +
🔍
+ Custom icon tooltip +
diff --git a/tests/Tooltip/TooltipDefault.test.svelte b/tests/Tooltip/TooltipDefault.test.svelte new file mode 100644 index 00000000..af5a5827 --- /dev/null +++ b/tests/Tooltip/TooltipDefault.test.svelte @@ -0,0 +1,5 @@ + + + diff --git a/tests/Tooltip/TooltipDirections.test.svelte b/tests/Tooltip/TooltipDirections.test.svelte new file mode 100644 index 00000000..acfe4a26 --- /dev/null +++ b/tests/Tooltip/TooltipDirections.test.svelte @@ -0,0 +1,15 @@ + + +
+ {#each directions as direction} +
+ + Tooltip with {direction} direction + +
+ {/each} +
diff --git a/tests/Tooltip/TooltipEvents.test.svelte b/tests/Tooltip/TooltipEvents.test.svelte new file mode 100644 index 00000000..1d7e6fae --- /dev/null +++ b/tests/Tooltip/TooltipEvents.test.svelte @@ -0,0 +1,27 @@ + + +
+

Open events: {openCount}

+

Close events: {closeCount}

+ + + Interact with this tooltip to trigger events + +
diff --git a/tests/Tooltip/TooltipHideIcon.test.svelte b/tests/Tooltip/TooltipHideIcon.test.svelte new file mode 100644 index 00000000..f6716d31 --- /dev/null +++ b/tests/Tooltip/TooltipHideIcon.test.svelte @@ -0,0 +1,11 @@ + + + + This tooltip has its icon hidden + diff --git a/tests/Tooltip/TooltipOpen.test.svelte b/tests/Tooltip/TooltipOpen.test.svelte new file mode 100644 index 00000000..0468808e --- /dev/null +++ b/tests/Tooltip/TooltipOpen.test.svelte @@ -0,0 +1,7 @@ + + + + This tooltip is initially open + From b15bf65f88a3007ea9daeda9aab8d8088b4dec74 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Sun, 2 Mar 2025 14:38:20 -0800 Subject: [PATCH 006/235] test(code-snippet): add unit tests --- tests/CodeSnippet.test.svelte | 21 --- tests/CodeSnippet/CodeSnippet.test.ts | 123 ++++++++++++++++++ .../CodeSnippetCopyButton.test.svelte | 5 + .../CodeSnippetCustomEvents.test.svelte | 17 +++ .../CodeSnippetExpandable.test.svelte | 15 +++ .../CodeSnippetExpandedByDefault.svelte | 16 +++ .../CodeSnippet/CodeSnippetInline.test.svelte | 5 + .../CodeSnippetMultiline.test.svelte | 10 ++ .../CodeSnippetWithCustomCopyText.test.svelte | 9 ++ .../CodeSnippetWithHideShowMore.test.svelte | 16 +++ .../CodeSnippetWithWrapText.test.svelte | 16 +++ 11 files changed, 232 insertions(+), 21 deletions(-) delete mode 100644 tests/CodeSnippet.test.svelte create mode 100644 tests/CodeSnippet/CodeSnippet.test.ts create mode 100644 tests/CodeSnippet/CodeSnippetCopyButton.test.svelte create mode 100644 tests/CodeSnippet/CodeSnippetCustomEvents.test.svelte create mode 100644 tests/CodeSnippet/CodeSnippetExpandable.test.svelte create mode 100644 tests/CodeSnippet/CodeSnippetExpandedByDefault.svelte create mode 100644 tests/CodeSnippet/CodeSnippetInline.test.svelte create mode 100644 tests/CodeSnippet/CodeSnippetMultiline.test.svelte create mode 100644 tests/CodeSnippet/CodeSnippetWithCustomCopyText.test.svelte create mode 100644 tests/CodeSnippet/CodeSnippetWithHideShowMore.test.svelte create mode 100644 tests/CodeSnippet/CodeSnippetWithWrapText.test.svelte diff --git a/tests/CodeSnippet.test.svelte b/tests/CodeSnippet.test.svelte deleted file mode 100644 index 6ec4e88b..00000000 --- a/tests/CodeSnippet.test.svelte +++ /dev/null @@ -1,21 +0,0 @@ - - - text} - code="" - hideCopyButton - disabled - skeleton - wrapText - expanded - on:animationend - on:click - on:copy - on:expand - on:collapse -> - yarn add carbon-components-svelte - diff --git a/tests/CodeSnippet/CodeSnippet.test.ts b/tests/CodeSnippet/CodeSnippet.test.ts new file mode 100644 index 00000000..2de84a73 --- /dev/null +++ b/tests/CodeSnippet/CodeSnippet.test.ts @@ -0,0 +1,123 @@ +import { render, screen } from "@testing-library/svelte"; +import CodeSnippetInline from "./CodeSnippetInline.test.svelte"; +import CodeSnippetMultiline from "./CodeSnippetMultiline.test.svelte"; +import CodeSnippetExpandable from "./CodeSnippetExpandable.test.svelte"; +import CodeSnippetExpandedByDefault from "./CodeSnippetExpandedByDefault.svelte"; +import CodeSnippetCopyButton from "./CodeSnippetCopyButton.test.svelte"; +import CodeSnippetCustomEvents from "./CodeSnippetCustomEvents.test.svelte"; +import CodeSnippetWithWrapText from "./CodeSnippetWithWrapText.test.svelte"; +import CodeSnippetWithHideShowMore from "./CodeSnippetWithHideShowMore.test.svelte"; +import CodeSnippetWithCustomCopyText from "./CodeSnippetWithCustomCopyText.test.svelte"; +import { user } from "../setup-tests"; + +describe("CodeSnippet", () => { + test("should render inline variant", () => { + const { container } = render(CodeSnippetInline); + expect(container.querySelector(".bx--snippet--inline")).toBeInTheDocument(); + expect(screen.getByText("npm install -g @carbon/cli")).toBeInTheDocument(); + }); + + test("should render multiline variant", () => { + const { container } = render(CodeSnippetMultiline); + expect(container.querySelector(".bx--snippet--multi")).toBeInTheDocument(); + expect(screen.getByText(/node -v/)).toBeInTheDocument(); + }); + + test("should expand and collapse expandable snippet", async () => { + const { container } = render(CodeSnippetExpandable); + + expect( + container.querySelector(".bx--snippet--expand"), + ).not.toBeInTheDocument(); + + const showMoreButton = screen.getByText("Show more"); + await user.click(showMoreButton); + + expect(container.querySelector(".bx--snippet--expand")).toBeInTheDocument(); + expect(screen.getByText("Show less")).toBeInTheDocument(); + + const showLessButton = screen.getByText("Show less"); + await user.click(showLessButton); + + expect( + container.querySelector(".bx--snippet--expand"), + ).not.toBeInTheDocument(); + expect(screen.getByText("Show more")).toBeInTheDocument(); + }); + + test("should render expanded by default", async () => { + const { container } = render(CodeSnippetExpandedByDefault); + + expect(container.querySelector(".bx--snippet--expand")).toBeInTheDocument(); + expect(screen.getByText("Show less")).toBeInTheDocument(); + + await user.click(screen.getByText("Show less")); + + expect( + container.querySelector(".bx--snippet--expand"), + ).not.toBeInTheDocument(); + expect(screen.getByText("Show more")).toBeInTheDocument(); + }); + + test("should copy text when copy button is clicked", async () => { + const originalClipboard = navigator.clipboard; + const mockClipboard = { + writeText: vi.fn().mockImplementation(() => Promise.resolve()), + }; + Object.defineProperty(navigator, "clipboard", { + value: mockClipboard, + writable: true, + }); + + const { container } = render(CodeSnippetCopyButton); + + expect(container.querySelector(".bx--snippet--single")).toBeInTheDocument(); + expect( + screen.getByText("npm install --save @carbon/icons"), + ).toBeInTheDocument(); + + const copyButton = screen.getByLabelText("Copy to clipboard"); + assert(copyButton); + + await user.click(copyButton); + expect(mockClipboard.writeText).toHaveBeenCalledWith( + "npm install --save @carbon/icons", + ); + expect(screen.getByText("Copied!")).toBeInTheDocument(); + + Object.defineProperty(navigator, "clipboard", { + value: originalClipboard, + writable: true, + }); + }); + + test("should dispatch copy and copy error events", async () => { + render(CodeSnippetCustomEvents); + + expect(screen.getByText("Copy events: 0")).toBeInTheDocument(); + + const copyButton = screen.getByLabelText("Copy to clipboard"); + await user.click(copyButton); + expect(screen.getByText("Copy events: 1")).toBeInTheDocument(); + }); + + test("should wrap text when wrapText is true", () => { + const { container } = render(CodeSnippetWithWrapText); + expect( + container.querySelector(".bx--snippet--wraptext"), + ).toBeInTheDocument(); + }); + + test("should hide show more button when hideShowMore is true", () => { + render(CodeSnippetWithHideShowMore); + expect(screen.queryByText("Show more")).not.toBeInTheDocument(); + }); + + test("should display custom copy text", async () => { + render(CodeSnippetWithCustomCopyText); + + const copyButton = screen.getByLabelText("Copy to clipboard"); + await user.click(copyButton); + expect(screen.getByText("Custom copied text!")).toBeInTheDocument(); + }); +}); diff --git a/tests/CodeSnippet/CodeSnippetCopyButton.test.svelte b/tests/CodeSnippet/CodeSnippetCopyButton.test.svelte new file mode 100644 index 00000000..5aeb500b --- /dev/null +++ b/tests/CodeSnippet/CodeSnippetCopyButton.test.svelte @@ -0,0 +1,5 @@ + + + diff --git a/tests/CodeSnippet/CodeSnippetCustomEvents.test.svelte b/tests/CodeSnippet/CodeSnippetCustomEvents.test.svelte new file mode 100644 index 00000000..e9c66680 --- /dev/null +++ b/tests/CodeSnippet/CodeSnippetCustomEvents.test.svelte @@ -0,0 +1,17 @@ + + +Copy events: {copyCount} + + diff --git a/tests/CodeSnippet/CodeSnippetExpandable.test.svelte b/tests/CodeSnippet/CodeSnippetExpandable.test.svelte new file mode 100644 index 00000000..213646a4 --- /dev/null +++ b/tests/CodeSnippet/CodeSnippetExpandable.test.svelte @@ -0,0 +1,15 @@ + + + diff --git a/tests/CodeSnippet/CodeSnippetExpandedByDefault.svelte b/tests/CodeSnippet/CodeSnippetExpandedByDefault.svelte new file mode 100644 index 00000000..16abfd84 --- /dev/null +++ b/tests/CodeSnippet/CodeSnippetExpandedByDefault.svelte @@ -0,0 +1,16 @@ + + + diff --git a/tests/CodeSnippet/CodeSnippetInline.test.svelte b/tests/CodeSnippet/CodeSnippetInline.test.svelte new file mode 100644 index 00000000..33860928 --- /dev/null +++ b/tests/CodeSnippet/CodeSnippetInline.test.svelte @@ -0,0 +1,5 @@ + + + diff --git a/tests/CodeSnippet/CodeSnippetMultiline.test.svelte b/tests/CodeSnippet/CodeSnippetMultiline.test.svelte new file mode 100644 index 00000000..4c760ea2 --- /dev/null +++ b/tests/CodeSnippet/CodeSnippetMultiline.test.svelte @@ -0,0 +1,10 @@ + + + diff --git a/tests/CodeSnippet/CodeSnippetWithCustomCopyText.test.svelte b/tests/CodeSnippet/CodeSnippetWithCustomCopyText.test.svelte new file mode 100644 index 00000000..15234936 --- /dev/null +++ b/tests/CodeSnippet/CodeSnippetWithCustomCopyText.test.svelte @@ -0,0 +1,9 @@ + + + diff --git a/tests/CodeSnippet/CodeSnippetWithHideShowMore.test.svelte b/tests/CodeSnippet/CodeSnippetWithHideShowMore.test.svelte new file mode 100644 index 00000000..c5e83566 --- /dev/null +++ b/tests/CodeSnippet/CodeSnippetWithHideShowMore.test.svelte @@ -0,0 +1,16 @@ + + + diff --git a/tests/CodeSnippet/CodeSnippetWithWrapText.test.svelte b/tests/CodeSnippet/CodeSnippetWithWrapText.test.svelte new file mode 100644 index 00000000..879fee4c --- /dev/null +++ b/tests/CodeSnippet/CodeSnippetWithWrapText.test.svelte @@ -0,0 +1,16 @@ + + + From 5522c5b0b2b769ecd8d02ebff9944a623f266718 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Thu, 6 Mar 2025 18:32:22 -0800 Subject: [PATCH 007/235] test(select): add unit tests (#2109) --- tests/Select.test.svelte | 64 ------ tests/Select/Select.group.test.svelte | 21 ++ tests/Select/Select.skeleton.test.svelte | 5 + tests/Select/Select.test.svelte | 39 ++++ tests/Select/Select.test.ts | 241 +++++++++++++++++++++++ 5 files changed, 306 insertions(+), 64 deletions(-) delete mode 100644 tests/Select.test.svelte create mode 100644 tests/Select/Select.group.test.svelte create mode 100644 tests/Select/Select.skeleton.test.svelte create mode 100644 tests/Select/Select.test.svelte create mode 100644 tests/Select/Select.test.ts diff --git a/tests/Select.test.svelte b/tests/Select.test.svelte deleted file mode 100644 index 181c7643..00000000 --- a/tests/Select.test.svelte +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/tests/Select/Select.group.test.svelte b/tests/Select/Select.group.test.svelte new file mode 100644 index 00000000..f9bcab0a --- /dev/null +++ b/tests/Select/Select.group.test.svelte @@ -0,0 +1,21 @@ + + + diff --git a/tests/Select/Select.skeleton.test.svelte b/tests/Select/Select.skeleton.test.svelte new file mode 100644 index 00000000..8020f35a --- /dev/null +++ b/tests/Select/Select.skeleton.test.svelte @@ -0,0 +1,5 @@ + + + diff --git a/tests/Select/Select.test.svelte b/tests/Select/Select.test.svelte new file mode 100644 index 00000000..4af1594d --- /dev/null +++ b/tests/Select/Select.test.svelte @@ -0,0 +1,39 @@ + + + diff --git a/tests/Select/Select.test.ts b/tests/Select/Select.test.ts new file mode 100644 index 00000000..5e442323 --- /dev/null +++ b/tests/Select/Select.test.ts @@ -0,0 +1,241 @@ +import { render, screen } from "@testing-library/svelte"; +import { user } from "../setup-tests"; +import Select from "./Select.test.svelte"; +import SelectGroup from "./Select.group.test.svelte"; +import SelectSkeleton from "./Select.skeleton.test.svelte"; + +describe("Select", () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + it("renders with default props", () => { + render(Select); + + const select = screen.getByTestId("select"); + expect(select).toBeInTheDocument(); + + const label = select.querySelector("label"); + expect(label).toHaveTextContent("Select label"); + expect(label).not.toHaveClass("bx--visually-hidden"); + + const selectElement = select.querySelector("select") as HTMLSelectElement; + expect(selectElement).not.toBeDisabled(); + expect(selectElement).not.toHaveAttribute("aria-invalid"); + + const options = selectElement.querySelectorAll("option"); + expect(options).toHaveLength(3); + expect(options[0]).toHaveValue("option-1"); + expect(options[0]).toHaveTextContent("Option 1"); + }); + + it("renders with selected value", () => { + render(Select, { selected: "option-2" }); + + const selectElement = screen + .getByTestId("select") + .querySelector("select") as HTMLSelectElement; + expect(selectElement).toHaveValue("option-2"); + }); + + it("emits events", async () => { + const consoleLog = vi.spyOn(console, "log"); + render(Select); + + const selectElement = screen + .getByTestId("select") + .querySelector("select") as HTMLSelectElement; + await user.selectOptions(selectElement, "option-2"); + + expect(consoleLog).toHaveBeenCalledWith("change"); + expect(consoleLog).toHaveBeenCalledWith("input"); + expect(consoleLog).toHaveBeenCalledWith("update", "option-2"); + expect(consoleLog).toHaveBeenCalledTimes(3); + }); + + it("renders default size", () => { + render(Select); + const selectElement = screen + .getByTestId("select") + .querySelector("select") as HTMLSelectElement; + expect(selectElement).not.toHaveClass("bx--select-input--sm"); + expect(selectElement).not.toHaveClass("bx--select-input--xl"); + }); + + it("renders small size variant", () => { + render(Select, { size: "sm" }); + const selectElement = screen + .getByTestId("select") + .querySelector("select") as HTMLSelectElement; + expect(selectElement).toHaveClass("bx--select-input--sm"); + expect(selectElement).not.toHaveClass("bx--select-input--xl"); + }); + + it("renders extra large size variant", () => { + render(Select, { size: "xl" }); + const selectElement = screen + .getByTestId("select") + .querySelector("select") as HTMLSelectElement; + expect(selectElement).not.toHaveClass("bx--select-input--sm"); + expect(selectElement).toHaveClass("bx--select-input--xl"); + }); + + it("renders default variant", () => { + render(Select); + const selectWrapper = screen + .getByTestId("select") + .querySelector(".bx--select") as HTMLElement; + expect(selectWrapper).not.toHaveClass("bx--select--inline"); + }); + + it("renders inline variant", () => { + render(Select, { inline: true }); + const selectWrapper = screen + .getByTestId("select") + .querySelector(".bx--select") as HTMLElement; + expect(selectWrapper).toHaveClass("bx--select--inline"); + }); + + it("renders default theme", () => { + render(Select); + const selectWrapper = screen + .getByTestId("select") + .querySelector(".bx--select") as HTMLElement; + expect(selectWrapper).not.toHaveClass("bx--select--light"); + }); + + it("renders light theme", () => { + render(Select, { light: true }); + const selectWrapper = screen + .getByTestId("select") + .querySelector(".bx--select") as HTMLElement; + expect(selectWrapper).toHaveClass("bx--select--light"); + }); + + it("renders enabled by default", () => { + render(Select); + const selectElement = screen + .getByTestId("select") + .querySelector("select") as HTMLSelectElement; + expect(selectElement).not.toBeDisabled(); + }); + + it("renders disabled state", () => { + render(Select, { disabled: true }); + const selectElement = screen + .getByTestId("select") + .querySelector("select") as HTMLSelectElement; + expect(selectElement).toBeDisabled(); + }); + + it("renders valid by default", () => { + render(Select); + const wrapper = screen.getByTestId("select"); + const selectElement = wrapper.querySelector("select") as HTMLSelectElement; + const selectWrapper = wrapper.querySelector(".bx--select") as HTMLElement; + + expect(selectWrapper).not.toHaveClass("bx--select--invalid"); + expect(selectElement).not.toHaveAttribute("aria-invalid"); + expect( + wrapper.querySelector(".bx--form-requirement"), + ).not.toBeInTheDocument(); + }); + + it("renders invalid state", () => { + render(Select, { + invalid: true, + invalidText: "Invalid selection", + }); + + const wrapper = screen.getByTestId("select"); + const selectElement = wrapper.querySelector("select") as HTMLSelectElement; + const selectWrapper = wrapper.querySelector(".bx--select") as HTMLElement; + + expect(selectWrapper).toHaveClass("bx--select--invalid"); + expect(selectElement).toHaveAttribute("aria-invalid", "true"); + expect(wrapper.querySelector(".bx--form-requirement")).toHaveTextContent( + "Invalid selection", + ); + }); + + it("renders without warning by default", () => { + render(Select); + const wrapper = screen.getByTestId("select"); + const selectWrapper = wrapper.querySelector(".bx--select") as HTMLElement; + + expect(selectWrapper).not.toHaveClass("bx--select--warning"); + expect( + wrapper.querySelector(".bx--form-requirement"), + ).not.toBeInTheDocument(); + }); + + it("renders warning state", () => { + render(Select, { + warn: true, + warnText: "Warning message", + }); + + const wrapper = screen.getByTestId("select"); + const selectWrapper = wrapper.querySelector(".bx--select") as HTMLElement; + expect(selectWrapper).toHaveClass("bx--select--warning"); + expect(wrapper.querySelector(".bx--form-requirement")).toHaveTextContent( + "Warning message", + ); + }); + + it("renders without helper text by default", () => { + render(Select); + expect( + screen.getByTestId("select").querySelector(".bx--form__helper-text"), + ).not.toBeInTheDocument(); + }); + + it("renders helper text when provided", () => { + render(Select, { helperText: "Helper text" }); + const helperElement = screen + .getByTestId("select") + .querySelector(".bx--form__helper-text") as HTMLElement; + expect(helperElement).toHaveTextContent("Helper text"); + }); + + it("renders visible label by default", () => { + render(Select); + const label = screen + .getByTestId("select") + .querySelector("label") as HTMLElement; + expect(label).not.toHaveClass("bx--visually-hidden"); + }); + + it("renders with hidden label", () => { + render(Select, { hideLabel: true }); + const label = screen + .getByTestId("select") + .querySelector("label") as HTMLElement; + expect(label).toHaveClass("bx--visually-hidden"); + }); + + it("renders with SelectItemGroup", () => { + render(SelectGroup); + + const select = screen.getByTestId("select-group"); + const selectElement = select.querySelector("select") as HTMLSelectElement; + const optgroups = selectElement.querySelectorAll("optgroup"); + + expect(optgroups).toHaveLength(2); + expect(optgroups[0]).toHaveAttribute("label", "Category 1"); + expect(optgroups[1]).toHaveAttribute("label", "Category 2"); + + const options = selectElement.querySelectorAll("option"); + expect(options).toHaveLength(5); + expect(options[0]).toHaveAttribute("disabled"); + expect(options[0]).toHaveAttribute("hidden"); + }); + + it("renders skeleton state", () => { + render(SelectSkeleton); + + const skeleton = screen.getByTestId("select-skeleton"); + expect(skeleton).toBeInTheDocument(); + expect(skeleton.children[0]).toHaveClass("bx--skeleton"); + }); +}); From 9b4bfa6f86e23155516db156cbe1c980f3c699e8 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Thu, 6 Mar 2025 18:36:22 -0800 Subject: [PATCH 008/235] fix(select): avoid infinite update loop in Svelte 5 (#2108) Fixes #2107 --- src/Select/Select.svelte | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Select/Select.svelte b/src/Select/Select.svelte index 3ff81601..025f72f1 100644 --- a/src/Select/Select.svelte +++ b/src/Select/Select.svelte @@ -111,10 +111,11 @@ let prevSelected = undefined; afterUpdate(() => { - selected = $selectedValue; - - if (prevSelected !== undefined && selected !== prevSelected) { - dispatch("update", $selectedValue); + if (selected !== $selectedValue) { + selected = $selectedValue; + if (prevSelected !== undefined) { + dispatch("update", $selectedValue); + } } prevSelected = selected; From b4ae19e8e78d8f0df4a8186c125e02b8d2bfbf31 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Thu, 6 Mar 2025 18:37:11 -0800 Subject: [PATCH 009/235] v0.87.7 --- CHANGELOG.md | 6 ++++++ COMPONENT_INDEX.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cd79215a..98fb9a66 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +### [0.87.7](https://github.com/carbon-design-system/carbon-components-svelte/compare/v0.87.6...v0.87.7) (2025-03-07) + +### Bug Fixes + +- **select:** avoid infinite update loop in Svelte 5 ([#2108](https://github.com/carbon-design-system/carbon-components-svelte/issues/2108)) ([9b4bfa6](https://github.com/carbon-design-system/carbon-components-svelte/commit/9b4bfa6f86e23155516db156cbe1c980f3c699e8)), closes [#2107](https://github.com/carbon-design-system/carbon-components-svelte/issues/2107) + ### [0.87.6](https://github.com/carbon-design-system/carbon-components-svelte/compare/v0.87.5...v0.87.6) (2025-02-24) ### Bug Fixes diff --git a/COMPONENT_INDEX.md b/COMPONENT_INDEX.md index e06c3419..c51c63d1 100644 --- a/COMPONENT_INDEX.md +++ b/COMPONENT_INDEX.md @@ -1,6 +1,6 @@ # Component Index -> 165 components exported from carbon-components-svelte@0.87.6. +> 165 components exported from carbon-components-svelte@0.87.7. ## Components diff --git a/package-lock.json b/package-lock.json index 0c2438b8..adeb2085 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "carbon-components-svelte", - "version": "0.87.6", + "version": "0.87.7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "carbon-components-svelte", - "version": "0.87.6", + "version": "0.87.7", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { diff --git a/package.json b/package.json index a8659507..426c9b97 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "carbon-components-svelte", - "version": "0.87.6", + "version": "0.87.7", "license": "Apache-2.0", "description": "Svelte implementation of the Carbon Design System", "type": "module", From 7481b9a995dfbc8c2fbaeaae143c8372cf5fce66 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Sun, 9 Mar 2025 13:47:08 -0700 Subject: [PATCH 010/235] feat(data-table): allow custom `inputName` for radio/checkbox (#2087) Closes #2085 --- COMPONENT_INDEX.md | 49 ++++++++++--------- docs/src/COMPONENT_API.json | 12 +++++ docs/src/pages/components/DataTable.svx | 14 +++++- src/DataTable/DataTable.svelte | 11 ++++- .../DataTable/DuplicateDataTables.test.svelte | 20 ++++++-- types/DataTable/DataTable.svelte.d.ts | 9 ++++ 6 files changed, 85 insertions(+), 30 deletions(-) diff --git a/COMPONENT_INDEX.md b/COMPONENT_INDEX.md index c51c63d1..f9e2d300 100644 --- a/COMPONENT_INDEX.md +++ b/COMPONENT_INDEX.md @@ -971,30 +971,31 @@ export interface DataTableCell { ### Props -| Prop name | Required | Kind | Reactive | Type | Default value | Description | -| :------------------ | :------- | :--------------- | :------- | ------------------------------------------------------------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------- | -| selectedRowIds | No | let | Yes | ReadonlyArray | [] | Specify the row ids to be selected | -| selectable | No | let | Yes | boolean | false | Set to `true` for the selectable variant
Automatically set to `true` if `radio` or `batchSelection` are `true` | -| expandedRowIds | No | let | Yes | ReadonlyArray | [] | Specify the row ids to be expanded | -| expandable | No | let | Yes | boolean | false | Set to `true` for the expandable variant
Automatically set to `true` if `batchExpansion` is `true` | -| sortDirection | No | let | Yes | "none" | "ascending" | "descending" | "none" | Specify the sort direction | -| sortKey | No | let | Yes | DataTableKey | null | Specify the header key to sort by | -| headers | No | let | No | ReadonlyArray> | [] | Specify the data table headers | -| rows | No | let | No | ReadonlyArray | [] | Specify the rows the data table should render
keys defined in `headers` are used for the row ids | -| size | No | let | No | "compact" | "short" | "medium" | "tall" | undefined | Set the size of the data table | -| title | No | let | No | string | "" | Specify the title of the data table | -| description | No | let | No | string | "" | Specify the description of the data table | -| zebra | No | let | No | boolean | false | Set to `true` to use zebra styles | -| sortable | No | let | No | boolean | false | Set to `true` for the sortable variant | -| batchExpansion | No | let | No | boolean | false | Set to `true` to enable batch expansion | -| nonExpandableRowIds | No | let | No | ReadonlyArray | [] | Specify the ids for rows that should not be expandable | -| radio | No | let | No | boolean | false | Set to `true` for the radio selection variant | -| batchSelection | No | let | No | boolean | false | Set to `true` to enable batch selection | -| nonSelectableRowIds | No | let | No | ReadonlyArray | [] | Specify the ids of rows that should not be selectable | -| stickyHeader | No | let | No | boolean | false | Set to `true` to enable a sticky header | -| useStaticWidth | No | let | No | boolean | false | Set to `true` to use static width | -| pageSize | No | let | No | number | 0 | Specify the number of items to display in a page | -| page | No | let | No | number | 0 | Set to `number` to set current page | +| Prop name | Required | Kind | Reactive | Type | Default value | Description | +| :------------------ | :------- | :--------------- | :------- | ------------------------------------------------------------------- | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| selectedRowIds | No | let | Yes | ReadonlyArray | [] | Specify the row ids to be selected | +| selectable | No | let | Yes | boolean | false | Set to `true` for the selectable variant
Automatically set to `true` if `radio` or `batchSelection` are `true` | +| expandedRowIds | No | let | Yes | ReadonlyArray | [] | Specify the row ids to be expanded | +| expandable | No | let | Yes | boolean | false | Set to `true` for the expandable variant
Automatically set to `true` if `batchExpansion` is `true` | +| sortDirection | No | let | Yes | "none" | "ascending" | "descending" | "none" | Specify the sort direction | +| sortKey | No | let | Yes | DataTableKey | null | Specify the header key to sort by | +| headers | No | let | No | ReadonlyArray> | [] | Specify the data table headers | +| rows | No | let | No | ReadonlyArray | [] | Specify the rows the data table should render
keys defined in `headers` are used for the row ids | +| size | No | let | No | "compact" | "short" | "medium" | "tall" | undefined | Set the size of the data table | +| title | No | let | No | string | "" | Specify the title of the data table | +| description | No | let | No | string | "" | Specify the description of the data table | +| inputName | No | let | No | string | "ccs-" + Math.random().toString(36) | Specify a name attribute for the input elements
in a selectable data table (radio or checkbox).
When the table is inside a form, this name will
be included in the form data on submit. | +| zebra | No | let | No | boolean | false | Set to `true` to use zebra styles | +| sortable | No | let | No | boolean | false | Set to `true` for the sortable variant | +| batchExpansion | No | let | No | boolean | false | Set to `true` to enable batch expansion | +| nonExpandableRowIds | No | let | No | ReadonlyArray | [] | Specify the ids for rows that should not be expandable | +| radio | No | let | No | boolean | false | Set to `true` for the radio selection variant | +| batchSelection | No | let | No | boolean | false | Set to `true` to enable batch selection | +| nonSelectableRowIds | No | let | No | ReadonlyArray | [] | Specify the ids of rows that should not be selectable | +| stickyHeader | No | let | No | boolean | false | Set to `true` to enable a sticky header | +| useStaticWidth | No | let | No | boolean | false | Set to `true` to use static width | +| pageSize | No | let | No | number | 0 | Specify the number of items to display in a page | +| page | No | let | No | number | 0 | Set to `number` to set current page | ### Slots diff --git a/docs/src/COMPONENT_API.json b/docs/src/COMPONENT_API.json index 92f9dedb..2a73b860 100644 --- a/docs/src/COMPONENT_API.json +++ b/docs/src/COMPONENT_API.json @@ -2899,6 +2899,18 @@ "constant": false, "reactive": false }, + { + "name": "inputName", + "kind": "let", + "description": "Specify a name attribute for the input elements\nin a selectable data table (radio or checkbox).\nWhen the table is inside a form, this name will\nbe included in the form data on submit.", + "type": "string", + "value": "\"ccs-\" + Math.random().toString(36)", + "isFunction": false, + "isFunctionDeclaration": false, + "isRequired": false, + "constant": false, + "reactive": false + }, { "name": "zebra", "kind": "let", diff --git a/docs/src/pages/components/DataTable.svx b/docs/src/pages/components/DataTable.svx index f9d24ee0..70c758e3 100644 --- a/docs/src/pages/components/DataTable.svx +++ b/docs/src/pages/components/DataTable.svx @@ -1029,10 +1029,18 @@ In the following example, each row in the sortable data table has an overflow me Set `selectable` to `true` for rows to be multi-selectable. +Bind to `selectedRowIds` to get the ids of the selected rows. + +To customize the `input` name for the checkbox, use the `inputName` prop. + ## Batch selection +To enable batch selection, set `batchSelection` to `true`. + +This checkbox is used to select all rows. It enters an indeterminate state when some rows are selected. + ## Batch selection with initial selected rows @@ -1051,7 +1059,7 @@ By default, `ToolbarBatchActions` is activated if one or more rows is selected. Use the `active` prop to control the toolbar. Note that it will still activate if one or more rows are selected. -You can also prevent the default "Cancel" behavior in the dispatched `on:cancel` event. +You can prevent the default "Cancel" behavior in the dispatched `on:cancel` event. @@ -1059,6 +1067,10 @@ You can also prevent the default "Cancel" behavior in the dispatched `on:cancel` Set `radio` to `true` for only one row to be selected at a time. +Bind to `selectedRowIds` to get the ids of the selected rows. Because it's radio selection, `selectedRowIds` will only contain one id. + +To customize the `input` name for the radio button, use the `inputName` prop. + ## Non-selectable rows diff --git a/src/DataTable/DataTable.svelte b/src/DataTable/DataTable.svelte index 0561f73e..11456305 100644 --- a/src/DataTable/DataTable.svelte +++ b/src/DataTable/DataTable.svelte @@ -71,6 +71,14 @@ /** Specify the description of the data table */ export let description = ""; + /** + * Specify a name attribute for the input elements + * in a selectable data table (radio or checkbox). + * When the table is inside a form, this name will + * be included in the form data on submit. + */ + export let inputName = "ccs-" + Math.random().toString(36); + /** Set to `true` to use zebra styles */ export let zebra = false; @@ -515,12 +523,12 @@ > {#if !nonSelectableRowIds.includes(row.id)} {@const inputId = `${id}-${row.id}`} - {@const inputName = `${id}-name`} {#if radio} { selectedRowIds = [row.id]; dispatch("click:row--select", { row, selected: true }); @@ -531,6 +539,7 @@ id={inputId} name={inputName} checked={selectedRowIds.includes(row.id)} + value={row.id} on:change={() => { if (selectedRowIds.includes(row.id)) { selectedRowIds = selectedRowIds.filter( diff --git a/tests/DataTable/DuplicateDataTables.test.svelte b/tests/DataTable/DuplicateDataTables.test.svelte index 91756b80..dead66f0 100644 --- a/tests/DataTable/DuplicateDataTables.test.svelte +++ b/tests/DataTable/DuplicateDataTables.test.svelte @@ -12,8 +12,20 @@ ]; - - + + - - + + diff --git a/types/DataTable/DataTable.svelte.d.ts b/types/DataTable/DataTable.svelte.d.ts index 89dd9303..d5914a02 100644 --- a/types/DataTable/DataTable.svelte.d.ts +++ b/types/DataTable/DataTable.svelte.d.ts @@ -77,6 +77,15 @@ type $Props = { */ description?: string; + /** + * Specify a name attribute for the input elements + * in a selectable data table (radio or checkbox). + * When the table is inside a form, this name will + * be included in the form data on submit. + * @default "ccs-" + Math.random().toString(36) + */ + inputName?: string; + /** * Set to `true` to use zebra styles * @default false From 24b9cbc9c343537e5e74799ef8289bd29396cf04 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Sun, 9 Mar 2025 13:47:34 -0700 Subject: [PATCH 011/235] feat(ui-shell): `HeaderAction` supports tooltip (#2111) Closes #2110 --- COMPONENT_INDEX.md | 20 +++++++++-------- docs/src/COMPONENT_API.json | 25 ++++++++++++++++++++- src/UIShell/HeaderAction.svelte | 31 +++++++++++++++++++++++++- tests/HeaderUtilities.test.svelte | 2 ++ types/UIShell/HeaderAction.svelte.d.ts | 16 ++++++++++++- 5 files changed, 82 insertions(+), 12 deletions(-) diff --git a/COMPONENT_INDEX.md b/COMPONENT_INDEX.md index f9e2d300..8ab1b750 100644 --- a/COMPONENT_INDEX.md +++ b/COMPONENT_INDEX.md @@ -1616,15 +1616,17 @@ None. ### Props -| Prop name | Required | Kind | Reactive | Type | Default value | Description | -| :------------------------- | :------- | :--------------- | :------- | ----------------------------------------------------------------- | ------------------------------ | ---------------------------------------------------------------------------------------------------------------- | -| ref | No | let | Yes | null | HTMLButtonElement | null | Obtain a reference to the button HTML element | -| isOpen | No | let | Yes | boolean | false | Set to `true` to open the panel | -| icon | No | let | No | any | undefined | Specify the icon to render when the action panel is closed.
Defaults to `<Switcher size={20} />` | -| closeIcon | No | let | No | any | undefined | Specify the icon to render when the action panel is open.
Defaults to `<Close size={20} />` | -| text | No | let | No | string | undefined | Specify the text.
Alternatively, use the named slot "text" (e.g., `<div slot="text">...</div>`) | -| transition | No | let | No | false | import("svelte/transition").SlideParams | { duration: 200 } | Customize the panel transition (i.e., `transition:slide`).
Set to `false` to disable the transition | -| preventCloseOnClickOutside | No | let | No | boolean | false | Set to `true` to prevent the panel from closing when clicking outside | +| Prop name | Required | Kind | Reactive | Type | Default value | Description | +| :------------------------- | :------- | :--------------- | :------- | ----------------------------------------------------------------- | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------- | +| ref | No | let | Yes | null | HTMLButtonElement | null | Obtain a reference to the button HTML element | +| isOpen | No | let | Yes | boolean | false | Set to `true` to open the panel | +| icon | No | let | No | any | undefined | Specify the icon to render when the action panel is closed.
Defaults to `<Switcher size={20} />` | +| closeIcon | No | let | No | any | undefined | Specify the icon to render when the action panel is open.
Defaults to `<Close size={20} />` | +| text | No | let | No | string | undefined | Specify the text displayed next to the icon.
Alternatively, use the named slot "text" (e.g., `<div slot="text">...</div>`) | +| iconDescription | No | let | No | string | undefined | Specify an icon tooltip. The tooltip will not be displayed
if either the `text` prop or a named slot="text" is used | +| tooltipAlignment | No | let | No | "start" | "center" | "end" | "center" | Set the alignment of the tooltip relative to the icon.
Only applies when `iconDescription` is provided | +| transition | No | let | No | false | import("svelte/transition").SlideParams | { duration: 200 } | Customize the panel transition (i.e., `transition:slide`).
Set to `false` to disable the transition | +| preventCloseOnClickOutside | No | let | No | boolean | false | Set to `true` to prevent the panel from closing when clicking outside | ### Slots diff --git a/docs/src/COMPONENT_API.json b/docs/src/COMPONENT_API.json index 2a73b860..d1115787 100644 --- a/docs/src/COMPONENT_API.json +++ b/docs/src/COMPONENT_API.json @@ -5882,7 +5882,7 @@ { "name": "text", "kind": "let", - "description": "Specify the text.\nAlternatively, use the named slot \"text\" (e.g., `
...
`)", + "description": "Specify the text displayed next to the icon.\nAlternatively, use the named slot \"text\" (e.g., `
...
`)", "type": "string", "isFunction": false, "isFunctionDeclaration": false, @@ -5890,6 +5890,29 @@ "constant": false, "reactive": false }, + { + "name": "iconDescription", + "kind": "let", + "description": "Specify an icon tooltip. The tooltip will not be displayed\nif either the `text` prop or a named slot=\"text\" is used", + "type": "string", + "isFunction": false, + "isFunctionDeclaration": false, + "isRequired": false, + "constant": false, + "reactive": false + }, + { + "name": "tooltipAlignment", + "kind": "let", + "description": "Set the alignment of the tooltip relative to the icon.\nOnly applies when `iconDescription` is provided", + "type": "\"start\" | \"center\" | \"end\"", + "value": "\"center\"", + "isFunction": false, + "isFunctionDeclaration": false, + "isRequired": false, + "constant": false, + "reactive": false + }, { "name": "ref", "kind": "let", diff --git a/src/UIShell/HeaderAction.svelte b/src/UIShell/HeaderAction.svelte index f4d725a0..a574200b 100644 --- a/src/UIShell/HeaderAction.svelte +++ b/src/UIShell/HeaderAction.svelte @@ -22,12 +22,26 @@ export let closeIcon = Close; /** - * Specify the text. + * Specify the text displayed next to the icon. * Alternatively, use the named slot "text" (e.g., `
...
`) * @type {string} */ export let text = undefined; + /** + * Specify an icon tooltip. The tooltip will not be displayed + * if either the `text` prop or a named slot="text" is used + * @type {string} + */ + export let iconDescription = undefined; + + /** + * Set the alignment of the tooltip relative to the icon. + * Only applies when `iconDescription` is provided + * @type {"start" | "center" | "end"} + */ + export let tooltipAlignment = "center"; + /** Obtain a reference to the button HTML element */ export let ref = null; @@ -49,6 +63,17 @@ const dispatch = createEventDispatcher(); let refPanel = null; + + $: hasIconOnly = iconDescription && !(text || $$slots.text); + $: buttonClass = [ + hasIconOnly && "bx--btn bx--btn--primary", + hasIconOnly && "bx--tooltip__trigger bx--tooltip--a11y", + hasIconOnly && "bx--btn--icon-only bx--btn--icon-only--bottom", + hasIconOnly && `bx--tooltip--align-${tooltipAlignment}`, + $$restProps.class, + ] + .filter(Boolean) + .join(" "); { isOpen = !isOpen; dispatch(isOpen ? "open" : "close"); }} > + {#if hasIconOnly} + {iconDescription} + {/if} {#if isOpen} diff --git a/tests/HeaderUtilities.test.svelte b/tests/HeaderUtilities.test.svelte index 574a163a..d5dca180 100644 --- a/tests/HeaderUtilities.test.svelte +++ b/tests/HeaderUtilities.test.svelte @@ -35,6 +35,8 @@ bind:isOpen on:open on:close + iconDescription="Switcher" + tooltipAlignment="start" transition={{ duration: 400, easing: quintOut }} > diff --git a/types/UIShell/HeaderAction.svelte.d.ts b/types/UIShell/HeaderAction.svelte.d.ts index 73ed2853..ba5aa45c 100644 --- a/types/UIShell/HeaderAction.svelte.d.ts +++ b/types/UIShell/HeaderAction.svelte.d.ts @@ -25,12 +25,26 @@ type $Props = { closeIcon?: any; /** - * Specify the text. + * Specify the text displayed next to the icon. * Alternatively, use the named slot "text" (e.g., `
...
`) * @default undefined */ text?: string; + /** + * Specify an icon tooltip. The tooltip will not be displayed + * if either the `text` prop or a named slot="text" is used + * @default undefined + */ + iconDescription?: string; + + /** + * Set the alignment of the tooltip relative to the icon. + * Only applies when `iconDescription` is provided + * @default "center" + */ + tooltipAlignment?: "start" | "center" | "end"; + /** * Obtain a reference to the button HTML element * @default null From a4aefad0e4e6ca1ba3bc6d718a2f95d1f69d2d39 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Sun, 9 Mar 2025 13:59:36 -0700 Subject: [PATCH 012/235] docs(ui-shell): add "Header with multiple switchers" example (#2112) --- docs/src/pages/components/UIShell.svx | 10 +++ .../UIShell/HeaderMultipleSwitcher.svelte | 85 +++++++++++++++++++ 2 files changed, 95 insertions(+) create mode 100644 docs/src/pages/framed/UIShell/HeaderMultipleSwitcher.svelte diff --git a/docs/src/pages/components/UIShell.svx b/docs/src/pages/components/UIShell.svx index 507338c3..d5c650ef 100644 --- a/docs/src/pages/components/UIShell.svx +++ b/docs/src/pages/components/UIShell.svx @@ -59,6 +59,16 @@ You can disable the `transition` by setting it to `false`. +## Header with multiple switchers + +Multiple switchers can be used, and the switcher button can be customized. For example, display a tooltip using `iconDescription`. + +Control the tooltip alignment using `tooltipAlignment`. + +Note that providing `text` overrides the tooltip. + + + ## Header with global search diff --git a/docs/src/pages/framed/UIShell/HeaderMultipleSwitcher.svelte b/docs/src/pages/framed/UIShell/HeaderMultipleSwitcher.svelte new file mode 100644 index 00000000..6a9efdb6 --- /dev/null +++ b/docs/src/pages/framed/UIShell/HeaderMultipleSwitcher.svelte @@ -0,0 +1,85 @@ + + +
+ + + + + { + isOpen2 = false; + isOpen3 = false; + }} + > + + Switcher subject 1 + Switcher item 1 + Switcher subject 2 + Switcher item 1 + + + { + isOpen1 = false; + isOpen3 = false; + }} + > + + Switcher subject 1 + Switcher item 1 + Switcher subject 2 + Switcher item 1 + + + { + isOpen1 = false; + isOpen2 = false; + }} + > + + Switcher subject 1 + Switcher item 1 + + + +
+ + + + + +

Welcome

+
+
+
+
From a3d1d9f089c92246834df3c1d565dacd75d2a999 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Sun, 9 Mar 2025 14:28:04 -0700 Subject: [PATCH 013/235] chore(deps-dev): upgrade dependencies (#2113) --- docs/package-lock.json | 22 +-- docs/package.json | 2 +- docs/src/components/ComponentApi.svelte | 8 +- examples/rollup/package-lock.json | 204 +++++++++++----------- examples/rollup/package.json | 6 +- examples/sveltekit/package-lock.json | 214 ++++++++++++------------ examples/sveltekit/package.json | 6 +- examples/vite/package-lock.json | 194 ++++++++++----------- examples/vite/package.json | 4 +- examples/webpack/package-lock.json | 112 ++++++------- examples/webpack/package.json | 4 +- package-lock.json | 169 ++++++++----------- package.json | 12 +- tsconfig.json | 2 + 14 files changed, 466 insertions(+), 493 deletions(-) diff --git a/docs/package-lock.json b/docs/package-lock.json index 075326da..b418ab97 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -8,7 +8,7 @@ "@sveltech/routify": "^1.9.10", "@sveltejs/vite-plugin-svelte": "^3.1.2", "carbon-components-svelte": "file:..", - "carbon-icons-svelte": "^12.13.0", + "carbon-icons-svelte": "^13.3.0", "clipboard-copy": "^4.0.1", "cross-env": "^7.0.3", "mdsvex": "^0.12.3", @@ -24,7 +24,7 @@ } }, "..": { - "version": "0.87.5", + "version": "0.87.7", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", @@ -39,21 +39,21 @@ "@testing-library/user-event": "^14.6.1", "autoprefixer": "^10.4.8", "carbon-components": "10.58.12", - "carbon-icons-svelte": "^13.2.0", - "carbon-preprocess-svelte": "^0.11.10", + "carbon-icons-svelte": "^13.3.0", + "carbon-preprocess-svelte": "^0.11.11", "culls": "^0.1.1", "jsdom": "^26.0.0", "postcss": "^8.5.3", - "prettier": "^3.5.2", + "prettier": "^3.5.3", "prettier-plugin-svelte": "^3.3.3", "sass": "^1.49.11", "standard-version": "^9.5.0", "sveld": "^0.22.1", "svelte": "^4.2.19", - "svelte-check": "^4.1.4", + "svelte-check": "^4.1.5", "tinyglobby": "^0.2.12", - "typescript": "^5.7.3", - "vitest": "^3.0.6" + "typescript": "^5.8.2", + "vitest": "^3.0.8" } }, "node_modules/@ampproject/remapping": { @@ -1039,9 +1039,9 @@ "link": true }, "node_modules/carbon-icons-svelte": { - "version": "12.13.0", - "resolved": "https://registry.npmjs.org/carbon-icons-svelte/-/carbon-icons-svelte-12.13.0.tgz", - "integrity": "sha512-Tkp5Aa34GgAIQ5XSpD0JIKZTqiTUgtIt43SZxXuSDYvQjQ+HQVKNgYiDZ3oAA5etdcGT4O8+vDsVdGeL90Eezg==", + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/carbon-icons-svelte/-/carbon-icons-svelte-13.3.0.tgz", + "integrity": "sha512-pwOVRMYyct0KyzLPCwB7BdeO50lo3I3FclasSPgJiADm49YjYClewHnBsQOM2luu2JCLTdBnadtbVvWSpv+k+Q==", "dev": true }, "node_modules/chalk": { diff --git a/docs/package.json b/docs/package.json index 9523fa58..75298254 100644 --- a/docs/package.json +++ b/docs/package.json @@ -13,7 +13,7 @@ "@sveltech/routify": "^1.9.10", "@sveltejs/vite-plugin-svelte": "^3.1.2", "carbon-components-svelte": "file:..", - "carbon-icons-svelte": "^12.13.0", + "carbon-icons-svelte": "^13.3.0", "clipboard-copy": "^4.0.1", "cross-env": "^7.0.3", "mdsvex": "^0.12.3", diff --git a/docs/src/components/ComponentApi.svelte b/docs/src/components/ComponentApi.svelte index d8194186..df11a88a 100644 --- a/docs/src/components/ComponentApi.svelte +++ b/docs/src/components/ComponentApi.svelte @@ -314,10 +314,10 @@ } :global( - .cell .bx--snippet--inline code, - .cell .bx--snippet--single pre, - .bx--snippet--inline code - ) { + .cell .bx--snippet--inline code, + .cell .bx--snippet--single pre, + .bx--snippet--inline code + ) { white-space: pre-wrap !important; } diff --git a/examples/rollup/package-lock.json b/examples/rollup/package-lock.json index 561e8c2f..8f34db80 100644 --- a/examples/rollup/package-lock.json +++ b/examples/rollup/package-lock.json @@ -5,14 +5,14 @@ "packages": { "": { "dependencies": { - "carbon-components-svelte": "^0.87.5" + "carbon-components-svelte": "^0.87.7" }, "devDependencies": { "@rollup/plugin-commonjs": "^26.0.3", "@rollup/plugin-node-resolve": "^15.3.1", "@rollup/plugin-terser": "^0.4.4", - "carbon-preprocess-svelte": "^0.11.10", - "rollup": "^4.34.7", + "carbon-preprocess-svelte": "^0.11.11", + "rollup": "^4.35.0", "rollup-plugin-css-only": "^4.5.2", "rollup-plugin-svelte": "^7.2.2", "svelte": "^4.2.19" @@ -218,9 +218,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.7.tgz", - "integrity": "sha512-l6CtzHYo8D2TQ3J7qJNpp3Q1Iye56ssIAtqbM2H8axxCEEwvN7o8Ze9PuIapbxFL3OHrJU2JBX6FIIVnP/rYyw==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.35.0.tgz", + "integrity": "sha512-uYQ2WfPaqz5QtVgMxfN6NpLD+no0MYHDBywl7itPYd3K5TjjSghNKmX8ic9S8NU8w81NVhJv/XojcHptRly7qQ==", "cpu": [ "arm" ], @@ -231,9 +231,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.7.tgz", - "integrity": "sha512-KvyJpFUueUnSp53zhAa293QBYqwm94TgYTIfXyOTtidhm5V0LbLCJQRGkQClYiX3FXDQGSvPxOTD/6rPStMMDg==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.35.0.tgz", + "integrity": "sha512-FtKddj9XZudurLhdJnBl9fl6BwCJ3ky8riCXjEw3/UIbjmIY58ppWwPEvU3fNu+W7FUsAsB1CdH+7EQE6CXAPA==", "cpu": [ "arm64" ], @@ -244,9 +244,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.7.tgz", - "integrity": "sha512-jq87CjmgL9YIKvs8ybtIC98s/M3HdbqXhllcy9EdLV0yMg1DpxES2gr65nNy7ObNo/vZ/MrOTxt0bE5LinL6mA==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.35.0.tgz", + "integrity": "sha512-Uk+GjOJR6CY844/q6r5DR/6lkPFOw0hjfOIzVx22THJXMxktXG6CbejseJFznU8vHcEBLpiXKY3/6xc+cBm65Q==", "cpu": [ "arm64" ], @@ -257,9 +257,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.7.tgz", - "integrity": "sha512-rSI/m8OxBjsdnMMg0WEetu/w+LhLAcCDEiL66lmMX4R3oaml3eXz3Dxfvrxs1FbzPbJMaItQiksyMfv1hoIxnA==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.35.0.tgz", + "integrity": "sha512-3IrHjfAS6Vkp+5bISNQnPogRAW5GAV1n+bNCrDwXmfMHbPl5EhTmWtfmwlJxFRUCBZ+tZ/OxDyU08aF6NI/N5Q==", "cpu": [ "x64" ], @@ -270,9 +270,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.7.tgz", - "integrity": "sha512-oIoJRy3ZrdsXpFuWDtzsOOa/E/RbRWXVokpVrNnkS7npz8GEG++E1gYbzhYxhxHbO2om1T26BZjVmdIoyN2WtA==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.35.0.tgz", + "integrity": "sha512-sxjoD/6F9cDLSELuLNnY0fOrM9WA0KrM0vWm57XhrIMf5FGiN8D0l7fn+bpUeBSU7dCgPV2oX4zHAsAXyHFGcQ==", "cpu": [ "arm64" ], @@ -283,9 +283,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.7.tgz", - "integrity": "sha512-X++QSLm4NZfZ3VXGVwyHdRf58IBbCu9ammgJxuWZYLX0du6kZvdNqPwrjvDfwmi6wFdvfZ/s6K7ia0E5kI7m8Q==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.35.0.tgz", + "integrity": "sha512-2mpHCeRuD1u/2kruUiHSsnjWtHjqVbzhBkNVQ1aVD63CcexKVcQGwJ2g5VphOd84GvxfSvnnlEyBtQCE5hxVVw==", "cpu": [ "x64" ], @@ -296,9 +296,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.7.tgz", - "integrity": "sha512-Z0TzhrsNqukTz3ISzrvyshQpFnFRfLunYiXxlCRvcrb3nvC5rVKI+ZXPFG/Aa4jhQa1gHgH3A0exHaRRN4VmdQ==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.35.0.tgz", + "integrity": "sha512-mrA0v3QMy6ZSvEuLs0dMxcO2LnaCONs1Z73GUDBHWbY8tFFocM6yl7YyMu7rz4zS81NDSqhrUuolyZXGi8TEqg==", "cpu": [ "arm" ], @@ -309,9 +309,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.7.tgz", - "integrity": "sha512-nkznpyXekFAbvFBKBy4nNppSgneB1wwG1yx/hujN3wRnhnkrYVugMTCBXED4+Ni6thoWfQuHNYbFjgGH0MBXtw==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.35.0.tgz", + "integrity": "sha512-DnYhhzcvTAKNexIql8pFajr0PiDGrIsBYPRvCKlA5ixSS3uwo/CWNZxB09jhIapEIg945KOzcYEAGGSmTSpk7A==", "cpu": [ "arm" ], @@ -322,9 +322,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.7.tgz", - "integrity": "sha512-KCjlUkcKs6PjOcxolqrXglBDcfCuUCTVlX5BgzgoJHw+1rWH1MCkETLkLe5iLLS9dP5gKC7mp3y6x8c1oGBUtA==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.35.0.tgz", + "integrity": "sha512-uagpnH2M2g2b5iLsCTZ35CL1FgyuzzJQ8L9VtlJ+FckBXroTwNOaD0z0/UF+k5K3aNQjbm8LIVpxykUOQt1m/A==", "cpu": [ "arm64" ], @@ -335,9 +335,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.7.tgz", - "integrity": "sha512-uFLJFz6+utmpbR313TTx+NpPuAXbPz4BhTQzgaP0tozlLnGnQ6rCo6tLwaSa6b7l6gRErjLicXQ1iPiXzYotjw==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.35.0.tgz", + "integrity": "sha512-XQxVOCd6VJeHQA/7YcqyV0/88N6ysSVzRjJ9I9UA/xXpEsjvAgDTgH3wQYz5bmr7SPtVK2TsP2fQ2N9L4ukoUg==", "cpu": [ "arm64" ], @@ -348,9 +348,9 @@ ] }, "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.7.tgz", - "integrity": "sha512-ws8pc68UcJJqCpneDFepnwlsMUFoWvPbWXT/XUrJ7rWUL9vLoIN3GAasgG+nCvq8xrE3pIrd+qLX/jotcLy0Qw==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.35.0.tgz", + "integrity": "sha512-5pMT5PzfgwcXEwOaSrqVsz/LvjDZt+vQ8RT/70yhPU06PTuq8WaHhfT1LW+cdD7mW6i/J5/XIkX/1tCAkh1W6g==", "cpu": [ "loong64" ], @@ -361,9 +361,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.7.tgz", - "integrity": "sha512-vrDk9JDa/BFkxcS2PbWpr0C/LiiSLxFbNOBgfbW6P8TBe9PPHx9Wqbvx2xgNi1TOAyQHQJ7RZFqBiEohm79r0w==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.35.0.tgz", + "integrity": "sha512-c+zkcvbhbXF98f4CtEIP1EBA/lCic5xB0lToneZYvMeKu5Kamq3O8gqrxiYYLzlZH6E3Aq+TSW86E4ay8iD8EA==", "cpu": [ "ppc64" ], @@ -374,9 +374,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.7.tgz", - "integrity": "sha512-rB+ejFyjtmSo+g/a4eovDD1lHWHVqizN8P0Hm0RElkINpS0XOdpaXloqM4FBkF9ZWEzg6bezymbpLmeMldfLTw==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.35.0.tgz", + "integrity": "sha512-s91fuAHdOwH/Tad2tzTtPX7UZyytHIRR6V4+2IGlV0Cej5rkG0R61SX4l4y9sh0JBibMiploZx3oHKPnQBKe4g==", "cpu": [ "riscv64" ], @@ -387,9 +387,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.7.tgz", - "integrity": "sha512-nNXNjo4As6dNqRn7OrsnHzwTgtypfRA3u3AKr0B3sOOo+HkedIbn8ZtFnB+4XyKJojIfqDKmbIzO1QydQ8c+Pw==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.35.0.tgz", + "integrity": "sha512-hQRkPQPLYJZYGP+Hj4fR9dDBMIM7zrzJDWFEMPdTnTy95Ljnv0/4w/ixFw3pTBMEuuEuoqtBINYND4M7ujcuQw==", "cpu": [ "s390x" ], @@ -400,9 +400,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.7.tgz", - "integrity": "sha512-9kPVf9ahnpOMSGlCxXGv980wXD0zRR3wyk8+33/MXQIpQEOpaNe7dEHm5LMfyRZRNt9lMEQuH0jUKj15MkM7QA==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.35.0.tgz", + "integrity": "sha512-Pim1T8rXOri+0HmV4CdKSGrqcBWX0d1HoPnQ0uw0bdp1aP5SdQVNBy8LjYncvnLgu3fnnCt17xjWGd4cqh8/hA==", "cpu": [ "x64" ], @@ -413,9 +413,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.7.tgz", - "integrity": "sha512-7wJPXRWTTPtTFDFezA8sle/1sdgxDjuMoRXEKtx97ViRxGGkVQYovem+Q8Pr/2HxiHp74SSRG+o6R0Yq0shPwQ==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.35.0.tgz", + "integrity": "sha512-QysqXzYiDvQWfUiTm8XmJNO2zm9yC9P/2Gkrwg2dH9cxotQzunBHYr6jk4SujCTqnfGxduOmQcI7c2ryuW8XVg==", "cpu": [ "x64" ], @@ -426,9 +426,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.7.tgz", - "integrity": "sha512-MN7aaBC7mAjsiMEZcsJvwNsQVNZShgES/9SzWp1HC9Yjqb5OpexYnRjF7RmE4itbeesHMYYQiAtUAQaSKs2Rfw==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.35.0.tgz", + "integrity": "sha512-OUOlGqPkVJCdJETKOCEf1mw848ZyJ5w50/rZ/3IBQVdLfR5jk/6Sr5m3iO2tdPgwo0x7VcncYuOvMhBWZq8ayg==", "cpu": [ "arm64" ], @@ -439,9 +439,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.7.tgz", - "integrity": "sha512-aeawEKYswsFu1LhDM9RIgToobquzdtSc4jSVqHV8uApz4FVvhFl/mKh92wc8WpFc6aYCothV/03UjY6y7yLgbg==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.35.0.tgz", + "integrity": "sha512-2/lsgejMrtwQe44glq7AFFHLfJBPafpsTa6JvP2NGef/ifOa4KBoglVf7AKN7EV9o32evBPRqfg96fEHzWo5kw==", "cpu": [ "ia32" ], @@ -452,9 +452,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.7.tgz", - "integrity": "sha512-4ZedScpxxIrVO7otcZ8kCX1mZArtH2Wfj3uFCxRJ9NO80gg1XV0U/b2f/MKaGwj2X3QopHfoWiDQ917FRpwY3w==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.35.0.tgz", + "integrity": "sha512-PIQeY5XDkrOysbQblSW7v3l1MDZzkTEzAfTPkj5VAu3FW8fS4ynyLg2sINp0fp3SjZ8xkRYpLqoKcYqAkhU1dw==", "cpu": [ "x64" ], @@ -477,9 +477,9 @@ "dev": true }, "node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -552,9 +552,9 @@ "dev": true }, "node_modules/carbon-components-svelte": { - "version": "0.87.5", - "resolved": "https://registry.npmjs.org/carbon-components-svelte/-/carbon-components-svelte-0.87.5.tgz", - "integrity": "sha512-idZoLpbRl/cZwfCXUgFRsVjEaa1mj1L3H19v4VTnOyBehjAp3FcjwNlwqulawaE9XpugbbevEo8Sak0WgGU9xg==", + "version": "0.87.7", + "resolved": "https://registry.npmjs.org/carbon-components-svelte/-/carbon-components-svelte-0.87.7.tgz", + "integrity": "sha512-c9CJdZZZIzqEm7gaJu0Gvw2ZbEM5DZ9WrzA9Gp6bOhoqMGFKU8NRHK10Dj5ZsxuDJ3IgR4zy2/qTZi9q8TvDbQ==", "hasInstallScript": true, "dependencies": { "@ibm/telemetry-js": "^1.5.0", @@ -562,14 +562,14 @@ } }, "node_modules/carbon-preprocess-svelte": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/carbon-preprocess-svelte/-/carbon-preprocess-svelte-0.11.10.tgz", - "integrity": "sha512-AikYEHeMaNNnqbjXvYWGdU/dmIDmWcCIxb/hnDjVWUlOYXlqjqPCcNy2iaf1krRKozTE3E9L5cKJfnYEht/yyg==", + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/carbon-preprocess-svelte/-/carbon-preprocess-svelte-0.11.11.tgz", + "integrity": "sha512-F8dZ+evXjmGG/l7gZKHwX5vwJ5CngPFIIWyTsxoBKZqIyCgGZJh83X61q2ZE+jG1vhktZCAd18Z6Yyw1WQMN/Q==", "dev": true, "dependencies": { "estree-walker": "^2.0.2", "magic-string": "^0.30.17", - "postcss": "^8.4.49", + "postcss": "^8.5.3", "postcss-discard-empty": "^7.0.0" } }, @@ -685,12 +685,12 @@ "integrity": "sha512-F0azNNi8foVWKSF+8X+ZJzz8r9sE1G4hl06RyceIaLvyltKvDl6vqk9Lm/6AUUCi5HWaIjiUbk7UpeE/fOXOpw==" }, "node_modules/foreground-child": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", - "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, "dependencies": { - "cross-spawn": "^7.0.0", + "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" }, "engines": { @@ -867,9 +867,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.9.tgz", + "integrity": "sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg==", "dev": true, "funding": [ { @@ -969,9 +969,9 @@ } }, "node_modules/postcss": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.2.tgz", - "integrity": "sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", "dev": true, "funding": [ { @@ -1047,9 +1047,9 @@ } }, "node_modules/rollup": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.7.tgz", - "integrity": "sha512-8qhyN0oZ4x0H6wmBgfKxJtxM7qS98YJ0k0kNh5ECVtuchIJ7z9IVVvzpmtQyT10PXKMtBxYr1wQ5Apg8RS8kXQ==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.35.0.tgz", + "integrity": "sha512-kg6oI4g+vc41vePJyO6dHt/yl0Rz3Thv0kJeVQ3D1kS3E5XSuKbPc29G4IpT/Kv1KQwgHVcN+HtyS+HYLNSvQg==", "dev": true, "dependencies": { "@types/estree": "1.0.6" @@ -1062,25 +1062,25 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.34.7", - "@rollup/rollup-android-arm64": "4.34.7", - "@rollup/rollup-darwin-arm64": "4.34.7", - "@rollup/rollup-darwin-x64": "4.34.7", - "@rollup/rollup-freebsd-arm64": "4.34.7", - "@rollup/rollup-freebsd-x64": "4.34.7", - "@rollup/rollup-linux-arm-gnueabihf": "4.34.7", - "@rollup/rollup-linux-arm-musleabihf": "4.34.7", - "@rollup/rollup-linux-arm64-gnu": "4.34.7", - "@rollup/rollup-linux-arm64-musl": "4.34.7", - "@rollup/rollup-linux-loongarch64-gnu": "4.34.7", - "@rollup/rollup-linux-powerpc64le-gnu": "4.34.7", - "@rollup/rollup-linux-riscv64-gnu": "4.34.7", - "@rollup/rollup-linux-s390x-gnu": "4.34.7", - "@rollup/rollup-linux-x64-gnu": "4.34.7", - "@rollup/rollup-linux-x64-musl": "4.34.7", - "@rollup/rollup-win32-arm64-msvc": "4.34.7", - "@rollup/rollup-win32-ia32-msvc": "4.34.7", - "@rollup/rollup-win32-x64-msvc": "4.34.7", + "@rollup/rollup-android-arm-eabi": "4.35.0", + "@rollup/rollup-android-arm64": "4.35.0", + "@rollup/rollup-darwin-arm64": "4.35.0", + "@rollup/rollup-darwin-x64": "4.35.0", + "@rollup/rollup-freebsd-arm64": "4.35.0", + "@rollup/rollup-freebsd-x64": "4.35.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.35.0", + "@rollup/rollup-linux-arm-musleabihf": "4.35.0", + "@rollup/rollup-linux-arm64-gnu": "4.35.0", + "@rollup/rollup-linux-arm64-musl": "4.35.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.35.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.35.0", + "@rollup/rollup-linux-riscv64-gnu": "4.35.0", + "@rollup/rollup-linux-s390x-gnu": "4.35.0", + "@rollup/rollup-linux-x64-gnu": "4.35.0", + "@rollup/rollup-linux-x64-musl": "4.35.0", + "@rollup/rollup-win32-arm64-msvc": "4.35.0", + "@rollup/rollup-win32-ia32-msvc": "4.35.0", + "@rollup/rollup-win32-x64-msvc": "4.35.0", "fsevents": "~2.3.2" } }, diff --git a/examples/rollup/package.json b/examples/rollup/package.json index cd5af2ea..2472f916 100644 --- a/examples/rollup/package.json +++ b/examples/rollup/package.json @@ -6,14 +6,14 @@ "build": "rollup -c" }, "dependencies": { - "carbon-components-svelte": "^0.87.5" + "carbon-components-svelte": "^0.87.7" }, "devDependencies": { "@rollup/plugin-commonjs": "^26.0.3", "@rollup/plugin-node-resolve": "^15.3.1", "@rollup/plugin-terser": "^0.4.4", - "carbon-preprocess-svelte": "^0.11.10", - "rollup": "^4.34.7", + "carbon-preprocess-svelte": "^0.11.11", + "rollup": "^4.35.0", "rollup-plugin-css-only": "^4.5.2", "rollup-plugin-svelte": "^7.2.2", "svelte": "^4.2.19" diff --git a/examples/sveltekit/package-lock.json b/examples/sveltekit/package-lock.json index b4c21acd..31cbe9f6 100644 --- a/examples/sveltekit/package-lock.json +++ b/examples/sveltekit/package-lock.json @@ -5,13 +5,13 @@ "packages": { "": { "dependencies": { - "carbon-components-svelte": "^0.87.5", + "carbon-components-svelte": "^0.87.7", "carbon-pictograms-svelte": "^12.14.0" }, "devDependencies": { - "@sveltejs/kit": "^2.17.2", + "@sveltejs/kit": "^2.19.0", "@sveltejs/vite-plugin-svelte": "^3.1.2", - "carbon-preprocess-svelte": "^0.11.10", + "carbon-preprocess-svelte": "^0.11.11", "svelte": "^4.2.19", "vite": "^5.4.14" } @@ -460,9 +460,9 @@ "dev": true }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.7.tgz", - "integrity": "sha512-l6CtzHYo8D2TQ3J7qJNpp3Q1Iye56ssIAtqbM2H8axxCEEwvN7o8Ze9PuIapbxFL3OHrJU2JBX6FIIVnP/rYyw==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.35.0.tgz", + "integrity": "sha512-uYQ2WfPaqz5QtVgMxfN6NpLD+no0MYHDBywl7itPYd3K5TjjSghNKmX8ic9S8NU8w81NVhJv/XojcHptRly7qQ==", "cpu": [ "arm" ], @@ -473,9 +473,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.7.tgz", - "integrity": "sha512-KvyJpFUueUnSp53zhAa293QBYqwm94TgYTIfXyOTtidhm5V0LbLCJQRGkQClYiX3FXDQGSvPxOTD/6rPStMMDg==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.35.0.tgz", + "integrity": "sha512-FtKddj9XZudurLhdJnBl9fl6BwCJ3ky8riCXjEw3/UIbjmIY58ppWwPEvU3fNu+W7FUsAsB1CdH+7EQE6CXAPA==", "cpu": [ "arm64" ], @@ -486,9 +486,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.7.tgz", - "integrity": "sha512-jq87CjmgL9YIKvs8ybtIC98s/M3HdbqXhllcy9EdLV0yMg1DpxES2gr65nNy7ObNo/vZ/MrOTxt0bE5LinL6mA==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.35.0.tgz", + "integrity": "sha512-Uk+GjOJR6CY844/q6r5DR/6lkPFOw0hjfOIzVx22THJXMxktXG6CbejseJFznU8vHcEBLpiXKY3/6xc+cBm65Q==", "cpu": [ "arm64" ], @@ -499,9 +499,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.7.tgz", - "integrity": "sha512-rSI/m8OxBjsdnMMg0WEetu/w+LhLAcCDEiL66lmMX4R3oaml3eXz3Dxfvrxs1FbzPbJMaItQiksyMfv1hoIxnA==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.35.0.tgz", + "integrity": "sha512-3IrHjfAS6Vkp+5bISNQnPogRAW5GAV1n+bNCrDwXmfMHbPl5EhTmWtfmwlJxFRUCBZ+tZ/OxDyU08aF6NI/N5Q==", "cpu": [ "x64" ], @@ -512,9 +512,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.7.tgz", - "integrity": "sha512-oIoJRy3ZrdsXpFuWDtzsOOa/E/RbRWXVokpVrNnkS7npz8GEG++E1gYbzhYxhxHbO2om1T26BZjVmdIoyN2WtA==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.35.0.tgz", + "integrity": "sha512-sxjoD/6F9cDLSELuLNnY0fOrM9WA0KrM0vWm57XhrIMf5FGiN8D0l7fn+bpUeBSU7dCgPV2oX4zHAsAXyHFGcQ==", "cpu": [ "arm64" ], @@ -525,9 +525,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.7.tgz", - "integrity": "sha512-X++QSLm4NZfZ3VXGVwyHdRf58IBbCu9ammgJxuWZYLX0du6kZvdNqPwrjvDfwmi6wFdvfZ/s6K7ia0E5kI7m8Q==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.35.0.tgz", + "integrity": "sha512-2mpHCeRuD1u/2kruUiHSsnjWtHjqVbzhBkNVQ1aVD63CcexKVcQGwJ2g5VphOd84GvxfSvnnlEyBtQCE5hxVVw==", "cpu": [ "x64" ], @@ -538,9 +538,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.7.tgz", - "integrity": "sha512-Z0TzhrsNqukTz3ISzrvyshQpFnFRfLunYiXxlCRvcrb3nvC5rVKI+ZXPFG/Aa4jhQa1gHgH3A0exHaRRN4VmdQ==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.35.0.tgz", + "integrity": "sha512-mrA0v3QMy6ZSvEuLs0dMxcO2LnaCONs1Z73GUDBHWbY8tFFocM6yl7YyMu7rz4zS81NDSqhrUuolyZXGi8TEqg==", "cpu": [ "arm" ], @@ -551,9 +551,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.7.tgz", - "integrity": "sha512-nkznpyXekFAbvFBKBy4nNppSgneB1wwG1yx/hujN3wRnhnkrYVugMTCBXED4+Ni6thoWfQuHNYbFjgGH0MBXtw==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.35.0.tgz", + "integrity": "sha512-DnYhhzcvTAKNexIql8pFajr0PiDGrIsBYPRvCKlA5ixSS3uwo/CWNZxB09jhIapEIg945KOzcYEAGGSmTSpk7A==", "cpu": [ "arm" ], @@ -564,9 +564,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.7.tgz", - "integrity": "sha512-KCjlUkcKs6PjOcxolqrXglBDcfCuUCTVlX5BgzgoJHw+1rWH1MCkETLkLe5iLLS9dP5gKC7mp3y6x8c1oGBUtA==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.35.0.tgz", + "integrity": "sha512-uagpnH2M2g2b5iLsCTZ35CL1FgyuzzJQ8L9VtlJ+FckBXroTwNOaD0z0/UF+k5K3aNQjbm8LIVpxykUOQt1m/A==", "cpu": [ "arm64" ], @@ -577,9 +577,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.7.tgz", - "integrity": "sha512-uFLJFz6+utmpbR313TTx+NpPuAXbPz4BhTQzgaP0tozlLnGnQ6rCo6tLwaSa6b7l6gRErjLicXQ1iPiXzYotjw==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.35.0.tgz", + "integrity": "sha512-XQxVOCd6VJeHQA/7YcqyV0/88N6ysSVzRjJ9I9UA/xXpEsjvAgDTgH3wQYz5bmr7SPtVK2TsP2fQ2N9L4ukoUg==", "cpu": [ "arm64" ], @@ -590,9 +590,9 @@ ] }, "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.7.tgz", - "integrity": "sha512-ws8pc68UcJJqCpneDFepnwlsMUFoWvPbWXT/XUrJ7rWUL9vLoIN3GAasgG+nCvq8xrE3pIrd+qLX/jotcLy0Qw==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.35.0.tgz", + "integrity": "sha512-5pMT5PzfgwcXEwOaSrqVsz/LvjDZt+vQ8RT/70yhPU06PTuq8WaHhfT1LW+cdD7mW6i/J5/XIkX/1tCAkh1W6g==", "cpu": [ "loong64" ], @@ -603,9 +603,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.7.tgz", - "integrity": "sha512-vrDk9JDa/BFkxcS2PbWpr0C/LiiSLxFbNOBgfbW6P8TBe9PPHx9Wqbvx2xgNi1TOAyQHQJ7RZFqBiEohm79r0w==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.35.0.tgz", + "integrity": "sha512-c+zkcvbhbXF98f4CtEIP1EBA/lCic5xB0lToneZYvMeKu5Kamq3O8gqrxiYYLzlZH6E3Aq+TSW86E4ay8iD8EA==", "cpu": [ "ppc64" ], @@ -616,9 +616,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.7.tgz", - "integrity": "sha512-rB+ejFyjtmSo+g/a4eovDD1lHWHVqizN8P0Hm0RElkINpS0XOdpaXloqM4FBkF9ZWEzg6bezymbpLmeMldfLTw==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.35.0.tgz", + "integrity": "sha512-s91fuAHdOwH/Tad2tzTtPX7UZyytHIRR6V4+2IGlV0Cej5rkG0R61SX4l4y9sh0JBibMiploZx3oHKPnQBKe4g==", "cpu": [ "riscv64" ], @@ -629,9 +629,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.7.tgz", - "integrity": "sha512-nNXNjo4As6dNqRn7OrsnHzwTgtypfRA3u3AKr0B3sOOo+HkedIbn8ZtFnB+4XyKJojIfqDKmbIzO1QydQ8c+Pw==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.35.0.tgz", + "integrity": "sha512-hQRkPQPLYJZYGP+Hj4fR9dDBMIM7zrzJDWFEMPdTnTy95Ljnv0/4w/ixFw3pTBMEuuEuoqtBINYND4M7ujcuQw==", "cpu": [ "s390x" ], @@ -642,9 +642,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.7.tgz", - "integrity": "sha512-9kPVf9ahnpOMSGlCxXGv980wXD0zRR3wyk8+33/MXQIpQEOpaNe7dEHm5LMfyRZRNt9lMEQuH0jUKj15MkM7QA==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.35.0.tgz", + "integrity": "sha512-Pim1T8rXOri+0HmV4CdKSGrqcBWX0d1HoPnQ0uw0bdp1aP5SdQVNBy8LjYncvnLgu3fnnCt17xjWGd4cqh8/hA==", "cpu": [ "x64" ], @@ -655,9 +655,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.7.tgz", - "integrity": "sha512-7wJPXRWTTPtTFDFezA8sle/1sdgxDjuMoRXEKtx97ViRxGGkVQYovem+Q8Pr/2HxiHp74SSRG+o6R0Yq0shPwQ==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.35.0.tgz", + "integrity": "sha512-QysqXzYiDvQWfUiTm8XmJNO2zm9yC9P/2Gkrwg2dH9cxotQzunBHYr6jk4SujCTqnfGxduOmQcI7c2ryuW8XVg==", "cpu": [ "x64" ], @@ -668,9 +668,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.7.tgz", - "integrity": "sha512-MN7aaBC7mAjsiMEZcsJvwNsQVNZShgES/9SzWp1HC9Yjqb5OpexYnRjF7RmE4itbeesHMYYQiAtUAQaSKs2Rfw==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.35.0.tgz", + "integrity": "sha512-OUOlGqPkVJCdJETKOCEf1mw848ZyJ5w50/rZ/3IBQVdLfR5jk/6Sr5m3iO2tdPgwo0x7VcncYuOvMhBWZq8ayg==", "cpu": [ "arm64" ], @@ -681,9 +681,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.7.tgz", - "integrity": "sha512-aeawEKYswsFu1LhDM9RIgToobquzdtSc4jSVqHV8uApz4FVvhFl/mKh92wc8WpFc6aYCothV/03UjY6y7yLgbg==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.35.0.tgz", + "integrity": "sha512-2/lsgejMrtwQe44glq7AFFHLfJBPafpsTa6JvP2NGef/ifOa4KBoglVf7AKN7EV9o32evBPRqfg96fEHzWo5kw==", "cpu": [ "ia32" ], @@ -694,9 +694,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.7.tgz", - "integrity": "sha512-4ZedScpxxIrVO7otcZ8kCX1mZArtH2Wfj3uFCxRJ9NO80gg1XV0U/b2f/MKaGwj2X3QopHfoWiDQ917FRpwY3w==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.35.0.tgz", + "integrity": "sha512-PIQeY5XDkrOysbQblSW7v3l1MDZzkTEzAfTPkj5VAu3FW8fS4ynyLg2sINp0fp3SjZ8xkRYpLqoKcYqAkhU1dw==", "cpu": [ "x64" ], @@ -707,9 +707,9 @@ ] }, "node_modules/@sveltejs/kit": { - "version": "2.17.2", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.17.2.tgz", - "integrity": "sha512-Vypk02baf7qd3SOB1uUwUC/3Oka+srPo2J0a8YN3EfJypRshDkNx9HzNKjSmhOnGWwT+SSO06+N0mAb8iVTmTQ==", + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.19.0.tgz", + "integrity": "sha512-UTx28Ad4sYsLU//gqkEo5aFOPFBRT2uXCmXTsURqhurDCvzkVwXruJgBcHDaMiK6RKKpYRteDUaXYqZyGPgCXQ==", "dev": true, "dependencies": { "@types/cookie": "^0.6.0", @@ -788,9 +788,9 @@ "dev": true }, "node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -818,9 +818,9 @@ } }, "node_modules/carbon-components-svelte": { - "version": "0.87.5", - "resolved": "https://registry.npmjs.org/carbon-components-svelte/-/carbon-components-svelte-0.87.5.tgz", - "integrity": "sha512-idZoLpbRl/cZwfCXUgFRsVjEaa1mj1L3H19v4VTnOyBehjAp3FcjwNlwqulawaE9XpugbbevEo8Sak0WgGU9xg==", + "version": "0.87.7", + "resolved": "https://registry.npmjs.org/carbon-components-svelte/-/carbon-components-svelte-0.87.7.tgz", + "integrity": "sha512-c9CJdZZZIzqEm7gaJu0Gvw2ZbEM5DZ9WrzA9Gp6bOhoqMGFKU8NRHK10Dj5ZsxuDJ3IgR4zy2/qTZi9q8TvDbQ==", "hasInstallScript": true, "dependencies": { "@ibm/telemetry-js": "^1.5.0", @@ -833,14 +833,14 @@ "integrity": "sha512-A3pAf6GxUp3JgTy0B63Y8fLwCTyZ5bN+d879vOUf2xVktHgWuZeUj6yVrjFrZOPJ9aDydMPuRrQj+0seTf4i4Q==" }, "node_modules/carbon-preprocess-svelte": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/carbon-preprocess-svelte/-/carbon-preprocess-svelte-0.11.10.tgz", - "integrity": "sha512-AikYEHeMaNNnqbjXvYWGdU/dmIDmWcCIxb/hnDjVWUlOYXlqjqPCcNy2iaf1krRKozTE3E9L5cKJfnYEht/yyg==", + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/carbon-preprocess-svelte/-/carbon-preprocess-svelte-0.11.11.tgz", + "integrity": "sha512-F8dZ+evXjmGG/l7gZKHwX5vwJ5CngPFIIWyTsxoBKZqIyCgGZJh83X61q2ZE+jG1vhktZCAd18Z6Yyw1WQMN/Q==", "dev": true, "dependencies": { "estree-walker": "^2.0.2", "magic-string": "^0.30.17", - "postcss": "^8.4.49", + "postcss": "^8.5.3", "postcss-discard-empty": "^7.0.0" } }, @@ -1048,9 +1048,9 @@ } }, "node_modules/mrmime": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", - "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", "dev": true, "engines": { "node": ">=10" @@ -1063,9 +1063,9 @@ "dev": true }, "node_modules/nanoid": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.9.tgz", + "integrity": "sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg==", "dev": true, "funding": [ { @@ -1107,9 +1107,9 @@ "dev": true }, "node_modules/postcss": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.2.tgz", - "integrity": "sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", "dev": true, "funding": [ { @@ -1147,9 +1147,9 @@ } }, "node_modules/rollup": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.7.tgz", - "integrity": "sha512-8qhyN0oZ4x0H6wmBgfKxJtxM7qS98YJ0k0kNh5ECVtuchIJ7z9IVVvzpmtQyT10PXKMtBxYr1wQ5Apg8RS8kXQ==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.35.0.tgz", + "integrity": "sha512-kg6oI4g+vc41vePJyO6dHt/yl0Rz3Thv0kJeVQ3D1kS3E5XSuKbPc29G4IpT/Kv1KQwgHVcN+HtyS+HYLNSvQg==", "dev": true, "dependencies": { "@types/estree": "1.0.6" @@ -1162,25 +1162,25 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.34.7", - "@rollup/rollup-android-arm64": "4.34.7", - "@rollup/rollup-darwin-arm64": "4.34.7", - "@rollup/rollup-darwin-x64": "4.34.7", - "@rollup/rollup-freebsd-arm64": "4.34.7", - "@rollup/rollup-freebsd-x64": "4.34.7", - "@rollup/rollup-linux-arm-gnueabihf": "4.34.7", - "@rollup/rollup-linux-arm-musleabihf": "4.34.7", - "@rollup/rollup-linux-arm64-gnu": "4.34.7", - "@rollup/rollup-linux-arm64-musl": "4.34.7", - "@rollup/rollup-linux-loongarch64-gnu": "4.34.7", - "@rollup/rollup-linux-powerpc64le-gnu": "4.34.7", - "@rollup/rollup-linux-riscv64-gnu": "4.34.7", - "@rollup/rollup-linux-s390x-gnu": "4.34.7", - "@rollup/rollup-linux-x64-gnu": "4.34.7", - "@rollup/rollup-linux-x64-musl": "4.34.7", - "@rollup/rollup-win32-arm64-msvc": "4.34.7", - "@rollup/rollup-win32-ia32-msvc": "4.34.7", - "@rollup/rollup-win32-x64-msvc": "4.34.7", + "@rollup/rollup-android-arm-eabi": "4.35.0", + "@rollup/rollup-android-arm64": "4.35.0", + "@rollup/rollup-darwin-arm64": "4.35.0", + "@rollup/rollup-darwin-x64": "4.35.0", + "@rollup/rollup-freebsd-arm64": "4.35.0", + "@rollup/rollup-freebsd-x64": "4.35.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.35.0", + "@rollup/rollup-linux-arm-musleabihf": "4.35.0", + "@rollup/rollup-linux-arm64-gnu": "4.35.0", + "@rollup/rollup-linux-arm64-musl": "4.35.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.35.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.35.0", + "@rollup/rollup-linux-riscv64-gnu": "4.35.0", + "@rollup/rollup-linux-s390x-gnu": "4.35.0", + "@rollup/rollup-linux-x64-gnu": "4.35.0", + "@rollup/rollup-linux-x64-musl": "4.35.0", + "@rollup/rollup-win32-arm64-msvc": "4.35.0", + "@rollup/rollup-win32-ia32-msvc": "4.35.0", + "@rollup/rollup-win32-x64-msvc": "4.35.0", "fsevents": "~2.3.2" } }, @@ -1203,9 +1203,9 @@ "dev": true }, "node_modules/sirv": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.0.tgz", - "integrity": "sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.1.tgz", + "integrity": "sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==", "dev": true, "dependencies": { "@polka/url": "^1.0.0-next.24", diff --git a/examples/sveltekit/package.json b/examples/sveltekit/package.json index a3017b3e..e0c24228 100644 --- a/examples/sveltekit/package.json +++ b/examples/sveltekit/package.json @@ -7,13 +7,13 @@ "preview": "vite preview" }, "dependencies": { - "carbon-components-svelte": "^0.87.5", + "carbon-components-svelte": "^0.87.7", "carbon-pictograms-svelte": "^12.14.0" }, "devDependencies": { - "@sveltejs/kit": "^2.17.2", + "@sveltejs/kit": "^2.19.0", "@sveltejs/vite-plugin-svelte": "^3.1.2", - "carbon-preprocess-svelte": "^0.11.10", + "carbon-preprocess-svelte": "^0.11.11", "svelte": "^4.2.19", "vite": "^5.4.14" } diff --git a/examples/vite/package-lock.json b/examples/vite/package-lock.json index fd53eca2..59b11dd7 100644 --- a/examples/vite/package-lock.json +++ b/examples/vite/package-lock.json @@ -5,11 +5,11 @@ "packages": { "": { "dependencies": { - "carbon-components-svelte": "^0.87.5" + "carbon-components-svelte": "^0.87.7" }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^3.1.2", - "carbon-preprocess-svelte": "^0.11.10", + "carbon-preprocess-svelte": "^0.11.11", "svelte": "^4.2.19", "vite": "^5.4.14" } @@ -452,9 +452,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.7.tgz", - "integrity": "sha512-l6CtzHYo8D2TQ3J7qJNpp3Q1Iye56ssIAtqbM2H8axxCEEwvN7o8Ze9PuIapbxFL3OHrJU2JBX6FIIVnP/rYyw==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.35.0.tgz", + "integrity": "sha512-uYQ2WfPaqz5QtVgMxfN6NpLD+no0MYHDBywl7itPYd3K5TjjSghNKmX8ic9S8NU8w81NVhJv/XojcHptRly7qQ==", "cpu": [ "arm" ], @@ -465,9 +465,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.7.tgz", - "integrity": "sha512-KvyJpFUueUnSp53zhAa293QBYqwm94TgYTIfXyOTtidhm5V0LbLCJQRGkQClYiX3FXDQGSvPxOTD/6rPStMMDg==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.35.0.tgz", + "integrity": "sha512-FtKddj9XZudurLhdJnBl9fl6BwCJ3ky8riCXjEw3/UIbjmIY58ppWwPEvU3fNu+W7FUsAsB1CdH+7EQE6CXAPA==", "cpu": [ "arm64" ], @@ -478,9 +478,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.7.tgz", - "integrity": "sha512-jq87CjmgL9YIKvs8ybtIC98s/M3HdbqXhllcy9EdLV0yMg1DpxES2gr65nNy7ObNo/vZ/MrOTxt0bE5LinL6mA==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.35.0.tgz", + "integrity": "sha512-Uk+GjOJR6CY844/q6r5DR/6lkPFOw0hjfOIzVx22THJXMxktXG6CbejseJFznU8vHcEBLpiXKY3/6xc+cBm65Q==", "cpu": [ "arm64" ], @@ -491,9 +491,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.7.tgz", - "integrity": "sha512-rSI/m8OxBjsdnMMg0WEetu/w+LhLAcCDEiL66lmMX4R3oaml3eXz3Dxfvrxs1FbzPbJMaItQiksyMfv1hoIxnA==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.35.0.tgz", + "integrity": "sha512-3IrHjfAS6Vkp+5bISNQnPogRAW5GAV1n+bNCrDwXmfMHbPl5EhTmWtfmwlJxFRUCBZ+tZ/OxDyU08aF6NI/N5Q==", "cpu": [ "x64" ], @@ -504,9 +504,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.7.tgz", - "integrity": "sha512-oIoJRy3ZrdsXpFuWDtzsOOa/E/RbRWXVokpVrNnkS7npz8GEG++E1gYbzhYxhxHbO2om1T26BZjVmdIoyN2WtA==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.35.0.tgz", + "integrity": "sha512-sxjoD/6F9cDLSELuLNnY0fOrM9WA0KrM0vWm57XhrIMf5FGiN8D0l7fn+bpUeBSU7dCgPV2oX4zHAsAXyHFGcQ==", "cpu": [ "arm64" ], @@ -517,9 +517,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.7.tgz", - "integrity": "sha512-X++QSLm4NZfZ3VXGVwyHdRf58IBbCu9ammgJxuWZYLX0du6kZvdNqPwrjvDfwmi6wFdvfZ/s6K7ia0E5kI7m8Q==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.35.0.tgz", + "integrity": "sha512-2mpHCeRuD1u/2kruUiHSsnjWtHjqVbzhBkNVQ1aVD63CcexKVcQGwJ2g5VphOd84GvxfSvnnlEyBtQCE5hxVVw==", "cpu": [ "x64" ], @@ -530,9 +530,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.7.tgz", - "integrity": "sha512-Z0TzhrsNqukTz3ISzrvyshQpFnFRfLunYiXxlCRvcrb3nvC5rVKI+ZXPFG/Aa4jhQa1gHgH3A0exHaRRN4VmdQ==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.35.0.tgz", + "integrity": "sha512-mrA0v3QMy6ZSvEuLs0dMxcO2LnaCONs1Z73GUDBHWbY8tFFocM6yl7YyMu7rz4zS81NDSqhrUuolyZXGi8TEqg==", "cpu": [ "arm" ], @@ -543,9 +543,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.7.tgz", - "integrity": "sha512-nkznpyXekFAbvFBKBy4nNppSgneB1wwG1yx/hujN3wRnhnkrYVugMTCBXED4+Ni6thoWfQuHNYbFjgGH0MBXtw==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.35.0.tgz", + "integrity": "sha512-DnYhhzcvTAKNexIql8pFajr0PiDGrIsBYPRvCKlA5ixSS3uwo/CWNZxB09jhIapEIg945KOzcYEAGGSmTSpk7A==", "cpu": [ "arm" ], @@ -556,9 +556,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.7.tgz", - "integrity": "sha512-KCjlUkcKs6PjOcxolqrXglBDcfCuUCTVlX5BgzgoJHw+1rWH1MCkETLkLe5iLLS9dP5gKC7mp3y6x8c1oGBUtA==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.35.0.tgz", + "integrity": "sha512-uagpnH2M2g2b5iLsCTZ35CL1FgyuzzJQ8L9VtlJ+FckBXroTwNOaD0z0/UF+k5K3aNQjbm8LIVpxykUOQt1m/A==", "cpu": [ "arm64" ], @@ -569,9 +569,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.7.tgz", - "integrity": "sha512-uFLJFz6+utmpbR313TTx+NpPuAXbPz4BhTQzgaP0tozlLnGnQ6rCo6tLwaSa6b7l6gRErjLicXQ1iPiXzYotjw==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.35.0.tgz", + "integrity": "sha512-XQxVOCd6VJeHQA/7YcqyV0/88N6ysSVzRjJ9I9UA/xXpEsjvAgDTgH3wQYz5bmr7SPtVK2TsP2fQ2N9L4ukoUg==", "cpu": [ "arm64" ], @@ -582,9 +582,9 @@ ] }, "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.7.tgz", - "integrity": "sha512-ws8pc68UcJJqCpneDFepnwlsMUFoWvPbWXT/XUrJ7rWUL9vLoIN3GAasgG+nCvq8xrE3pIrd+qLX/jotcLy0Qw==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.35.0.tgz", + "integrity": "sha512-5pMT5PzfgwcXEwOaSrqVsz/LvjDZt+vQ8RT/70yhPU06PTuq8WaHhfT1LW+cdD7mW6i/J5/XIkX/1tCAkh1W6g==", "cpu": [ "loong64" ], @@ -595,9 +595,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.7.tgz", - "integrity": "sha512-vrDk9JDa/BFkxcS2PbWpr0C/LiiSLxFbNOBgfbW6P8TBe9PPHx9Wqbvx2xgNi1TOAyQHQJ7RZFqBiEohm79r0w==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.35.0.tgz", + "integrity": "sha512-c+zkcvbhbXF98f4CtEIP1EBA/lCic5xB0lToneZYvMeKu5Kamq3O8gqrxiYYLzlZH6E3Aq+TSW86E4ay8iD8EA==", "cpu": [ "ppc64" ], @@ -608,9 +608,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.7.tgz", - "integrity": "sha512-rB+ejFyjtmSo+g/a4eovDD1lHWHVqizN8P0Hm0RElkINpS0XOdpaXloqM4FBkF9ZWEzg6bezymbpLmeMldfLTw==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.35.0.tgz", + "integrity": "sha512-s91fuAHdOwH/Tad2tzTtPX7UZyytHIRR6V4+2IGlV0Cej5rkG0R61SX4l4y9sh0JBibMiploZx3oHKPnQBKe4g==", "cpu": [ "riscv64" ], @@ -621,9 +621,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.7.tgz", - "integrity": "sha512-nNXNjo4As6dNqRn7OrsnHzwTgtypfRA3u3AKr0B3sOOo+HkedIbn8ZtFnB+4XyKJojIfqDKmbIzO1QydQ8c+Pw==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.35.0.tgz", + "integrity": "sha512-hQRkPQPLYJZYGP+Hj4fR9dDBMIM7zrzJDWFEMPdTnTy95Ljnv0/4w/ixFw3pTBMEuuEuoqtBINYND4M7ujcuQw==", "cpu": [ "s390x" ], @@ -634,9 +634,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.7.tgz", - "integrity": "sha512-9kPVf9ahnpOMSGlCxXGv980wXD0zRR3wyk8+33/MXQIpQEOpaNe7dEHm5LMfyRZRNt9lMEQuH0jUKj15MkM7QA==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.35.0.tgz", + "integrity": "sha512-Pim1T8rXOri+0HmV4CdKSGrqcBWX0d1HoPnQ0uw0bdp1aP5SdQVNBy8LjYncvnLgu3fnnCt17xjWGd4cqh8/hA==", "cpu": [ "x64" ], @@ -647,9 +647,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.7.tgz", - "integrity": "sha512-7wJPXRWTTPtTFDFezA8sle/1sdgxDjuMoRXEKtx97ViRxGGkVQYovem+Q8Pr/2HxiHp74SSRG+o6R0Yq0shPwQ==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.35.0.tgz", + "integrity": "sha512-QysqXzYiDvQWfUiTm8XmJNO2zm9yC9P/2Gkrwg2dH9cxotQzunBHYr6jk4SujCTqnfGxduOmQcI7c2ryuW8XVg==", "cpu": [ "x64" ], @@ -660,9 +660,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.7.tgz", - "integrity": "sha512-MN7aaBC7mAjsiMEZcsJvwNsQVNZShgES/9SzWp1HC9Yjqb5OpexYnRjF7RmE4itbeesHMYYQiAtUAQaSKs2Rfw==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.35.0.tgz", + "integrity": "sha512-OUOlGqPkVJCdJETKOCEf1mw848ZyJ5w50/rZ/3IBQVdLfR5jk/6Sr5m3iO2tdPgwo0x7VcncYuOvMhBWZq8ayg==", "cpu": [ "arm64" ], @@ -673,9 +673,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.7.tgz", - "integrity": "sha512-aeawEKYswsFu1LhDM9RIgToobquzdtSc4jSVqHV8uApz4FVvhFl/mKh92wc8WpFc6aYCothV/03UjY6y7yLgbg==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.35.0.tgz", + "integrity": "sha512-2/lsgejMrtwQe44glq7AFFHLfJBPafpsTa6JvP2NGef/ifOa4KBoglVf7AKN7EV9o32evBPRqfg96fEHzWo5kw==", "cpu": [ "ia32" ], @@ -686,9 +686,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.7.tgz", - "integrity": "sha512-4ZedScpxxIrVO7otcZ8kCX1mZArtH2Wfj3uFCxRJ9NO80gg1XV0U/b2f/MKaGwj2X3QopHfoWiDQ917FRpwY3w==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.35.0.tgz", + "integrity": "sha512-PIQeY5XDkrOysbQblSW7v3l1MDZzkTEzAfTPkj5VAu3FW8fS4ynyLg2sINp0fp3SjZ8xkRYpLqoKcYqAkhU1dw==", "cpu": [ "x64" ], @@ -744,9 +744,9 @@ "dev": true }, "node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -774,9 +774,9 @@ } }, "node_modules/carbon-components-svelte": { - "version": "0.87.5", - "resolved": "https://registry.npmjs.org/carbon-components-svelte/-/carbon-components-svelte-0.87.5.tgz", - "integrity": "sha512-idZoLpbRl/cZwfCXUgFRsVjEaa1mj1L3H19v4VTnOyBehjAp3FcjwNlwqulawaE9XpugbbevEo8Sak0WgGU9xg==", + "version": "0.87.7", + "resolved": "https://registry.npmjs.org/carbon-components-svelte/-/carbon-components-svelte-0.87.7.tgz", + "integrity": "sha512-c9CJdZZZIzqEm7gaJu0Gvw2ZbEM5DZ9WrzA9Gp6bOhoqMGFKU8NRHK10Dj5ZsxuDJ3IgR4zy2/qTZi9q8TvDbQ==", "hasInstallScript": true, "dependencies": { "@ibm/telemetry-js": "^1.5.0", @@ -784,14 +784,14 @@ } }, "node_modules/carbon-preprocess-svelte": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/carbon-preprocess-svelte/-/carbon-preprocess-svelte-0.11.10.tgz", - "integrity": "sha512-AikYEHeMaNNnqbjXvYWGdU/dmIDmWcCIxb/hnDjVWUlOYXlqjqPCcNy2iaf1krRKozTE3E9L5cKJfnYEht/yyg==", + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/carbon-preprocess-svelte/-/carbon-preprocess-svelte-0.11.11.tgz", + "integrity": "sha512-F8dZ+evXjmGG/l7gZKHwX5vwJ5CngPFIIWyTsxoBKZqIyCgGZJh83X61q2ZE+jG1vhktZCAd18Z6Yyw1WQMN/Q==", "dev": true, "dependencies": { "estree-walker": "^2.0.2", "magic-string": "^0.30.17", - "postcss": "^8.4.49", + "postcss": "^8.5.3", "postcss-discard-empty": "^7.0.0" } }, @@ -965,9 +965,9 @@ "dev": true }, "node_modules/nanoid": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.9.tgz", + "integrity": "sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg==", "dev": true, "funding": [ { @@ -1009,9 +1009,9 @@ "dev": true }, "node_modules/postcss": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.2.tgz", - "integrity": "sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", "dev": true, "funding": [ { @@ -1049,9 +1049,9 @@ } }, "node_modules/rollup": { - "version": "4.34.7", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.7.tgz", - "integrity": "sha512-8qhyN0oZ4x0H6wmBgfKxJtxM7qS98YJ0k0kNh5ECVtuchIJ7z9IVVvzpmtQyT10PXKMtBxYr1wQ5Apg8RS8kXQ==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.35.0.tgz", + "integrity": "sha512-kg6oI4g+vc41vePJyO6dHt/yl0Rz3Thv0kJeVQ3D1kS3E5XSuKbPc29G4IpT/Kv1KQwgHVcN+HtyS+HYLNSvQg==", "dev": true, "dependencies": { "@types/estree": "1.0.6" @@ -1064,25 +1064,25 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.34.7", - "@rollup/rollup-android-arm64": "4.34.7", - "@rollup/rollup-darwin-arm64": "4.34.7", - "@rollup/rollup-darwin-x64": "4.34.7", - "@rollup/rollup-freebsd-arm64": "4.34.7", - "@rollup/rollup-freebsd-x64": "4.34.7", - "@rollup/rollup-linux-arm-gnueabihf": "4.34.7", - "@rollup/rollup-linux-arm-musleabihf": "4.34.7", - "@rollup/rollup-linux-arm64-gnu": "4.34.7", - "@rollup/rollup-linux-arm64-musl": "4.34.7", - "@rollup/rollup-linux-loongarch64-gnu": "4.34.7", - "@rollup/rollup-linux-powerpc64le-gnu": "4.34.7", - "@rollup/rollup-linux-riscv64-gnu": "4.34.7", - "@rollup/rollup-linux-s390x-gnu": "4.34.7", - "@rollup/rollup-linux-x64-gnu": "4.34.7", - "@rollup/rollup-linux-x64-musl": "4.34.7", - "@rollup/rollup-win32-arm64-msvc": "4.34.7", - "@rollup/rollup-win32-ia32-msvc": "4.34.7", - "@rollup/rollup-win32-x64-msvc": "4.34.7", + "@rollup/rollup-android-arm-eabi": "4.35.0", + "@rollup/rollup-android-arm64": "4.35.0", + "@rollup/rollup-darwin-arm64": "4.35.0", + "@rollup/rollup-darwin-x64": "4.35.0", + "@rollup/rollup-freebsd-arm64": "4.35.0", + "@rollup/rollup-freebsd-x64": "4.35.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.35.0", + "@rollup/rollup-linux-arm-musleabihf": "4.35.0", + "@rollup/rollup-linux-arm64-gnu": "4.35.0", + "@rollup/rollup-linux-arm64-musl": "4.35.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.35.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.35.0", + "@rollup/rollup-linux-riscv64-gnu": "4.35.0", + "@rollup/rollup-linux-s390x-gnu": "4.35.0", + "@rollup/rollup-linux-x64-gnu": "4.35.0", + "@rollup/rollup-linux-x64-musl": "4.35.0", + "@rollup/rollup-win32-arm64-msvc": "4.35.0", + "@rollup/rollup-win32-ia32-msvc": "4.35.0", + "@rollup/rollup-win32-x64-msvc": "4.35.0", "fsevents": "~2.3.2" } }, diff --git a/examples/vite/package.json b/examples/vite/package.json index 46af2d91..5489fac4 100644 --- a/examples/vite/package.json +++ b/examples/vite/package.json @@ -6,11 +6,11 @@ "build": "vite build" }, "dependencies": { - "carbon-components-svelte": "^0.87.5" + "carbon-components-svelte": "^0.87.7" }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^3.1.2", - "carbon-preprocess-svelte": "^0.11.10", + "carbon-preprocess-svelte": "^0.11.11", "svelte": "^4.2.19", "vite": "^5.4.14" } diff --git a/examples/webpack/package-lock.json b/examples/webpack/package-lock.json index 1004c8bc..2eb19b7d 100644 --- a/examples/webpack/package-lock.json +++ b/examples/webpack/package-lock.json @@ -5,10 +5,10 @@ "packages": { "": { "dependencies": { - "carbon-components-svelte": "^0.87.5" + "carbon-components-svelte": "^0.87.7" }, "devDependencies": { - "carbon-preprocess-svelte": "^0.11.10", + "carbon-preprocess-svelte": "^0.11.11", "css-loader": "^7.1.2", "html-webpack-plugin": "^5.6.3", "mini-css-extract-plugin": "^2.9.2", @@ -124,9 +124,9 @@ } }, "node_modules/@jsonjoy.com/json-pack": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.1.1.tgz", - "integrity": "sha512-osjeBqMJ2lb/j/M8NCPjs1ylqWIcTRTycIhVB5pt6LgzgeRSb0YRZ7j9RfA8wIUrsr/medIuhVyonXRZWLyfdw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.2.0.tgz", + "integrity": "sha512-io1zEbbYcElht3tdlqEOFxZ0dMTYrHz9iMf0gqn1pPjZFTCgM5R4R5IMA20Chb2UPYYsxjzs8CgZ7Nb5n2K2rA==", "dev": true, "dependencies": { "@jsonjoy.com/base64": "^1.1.1", @@ -301,9 +301,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "22.13.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.4.tgz", - "integrity": "sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg==", + "version": "22.13.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.10.tgz", + "integrity": "sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==", "dev": true, "dependencies": { "undici-types": "~6.20.0" @@ -376,9 +376,9 @@ } }, "node_modules/@types/ws": { - "version": "8.5.14", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.14.tgz", - "integrity": "sha512-bd/YFLW+URhBzMXurx7lWByOu+xzU9+kb3RboOteXYDfW+tr+JZa99OyNmPINEGB/ahzKrEuc8rcv4gnpJmxTw==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8svvI3hMyvN0kKCJMvTJP/x6Y/EoQbepff882wL+Sn5QsXb3etnamgrJq4isrBxSJj5L2AuXcI0+bgkoAXGUJw==", "dev": true, "dependencies": { "@types/node": "*" @@ -609,9 +609,9 @@ } }, "node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -878,13 +878,13 @@ } }, "node_modules/call-bound": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", - "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "dev": true, "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "get-intrinsic": "^1.2.6" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { "node": ">= 0.4" @@ -904,9 +904,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001699", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001699.tgz", - "integrity": "sha512-b+uH5BakXZ9Do9iK+CkDmctUSEqZl+SP056vc5usa0PL+ev5OHw003rZXcnjNDv3L8P5j6rwT6C0BPKSikW08w==", + "version": "1.0.30001703", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001703.tgz", + "integrity": "sha512-kRlAGTRWgPsOj7oARC9m1okJEXdL/8fekFVcxA8Hl7GH4r/sN4OJn/i6Flde373T50KS7Y37oFbMwlE8+F42kQ==", "dev": true, "funding": [ { @@ -924,9 +924,9 @@ ] }, "node_modules/carbon-components-svelte": { - "version": "0.87.5", - "resolved": "https://registry.npmjs.org/carbon-components-svelte/-/carbon-components-svelte-0.87.5.tgz", - "integrity": "sha512-idZoLpbRl/cZwfCXUgFRsVjEaa1mj1L3H19v4VTnOyBehjAp3FcjwNlwqulawaE9XpugbbevEo8Sak0WgGU9xg==", + "version": "0.87.7", + "resolved": "https://registry.npmjs.org/carbon-components-svelte/-/carbon-components-svelte-0.87.7.tgz", + "integrity": "sha512-c9CJdZZZIzqEm7gaJu0Gvw2ZbEM5DZ9WrzA9Gp6bOhoqMGFKU8NRHK10Dj5ZsxuDJ3IgR4zy2/qTZi9q8TvDbQ==", "hasInstallScript": true, "dependencies": { "@ibm/telemetry-js": "^1.5.0", @@ -934,14 +934,14 @@ } }, "node_modules/carbon-preprocess-svelte": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/carbon-preprocess-svelte/-/carbon-preprocess-svelte-0.11.10.tgz", - "integrity": "sha512-AikYEHeMaNNnqbjXvYWGdU/dmIDmWcCIxb/hnDjVWUlOYXlqjqPCcNy2iaf1krRKozTE3E9L5cKJfnYEht/yyg==", + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/carbon-preprocess-svelte/-/carbon-preprocess-svelte-0.11.11.tgz", + "integrity": "sha512-F8dZ+evXjmGG/l7gZKHwX5vwJ5CngPFIIWyTsxoBKZqIyCgGZJh83X61q2ZE+jG1vhktZCAd18Z6Yyw1WQMN/Q==", "dev": true, "dependencies": { "estree-walker": "^2.0.2", "magic-string": "^0.30.17", - "postcss": "^8.4.49", + "postcss": "^8.5.3", "postcss-discard-empty": "^7.0.0" } }, @@ -1405,9 +1405,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.5.101", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.101.tgz", - "integrity": "sha512-L0ISiQrP/56Acgu4/i/kfPwWSgrzYZUnQrC0+QPFuhqlLP1Ir7qzPPDVS9BcKIyWTRU8+o6CC8dKw38tSWhYIA==", + "version": "1.5.113", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.113.tgz", + "integrity": "sha512-wjT2O4hX+wdWPJ76gWSkMhcHAV2PTMX+QetUCPYEdCIe+cxmgzzSSiGRCKW8nuh4mwKZlpv0xvoW7OF2X+wmHg==", "dev": true }, "node_modules/emojis-list": { @@ -1794,17 +1794,17 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", - "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, "dependencies": { - "call-bind-apply-helpers": "^1.0.1", + "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", - "get-proto": "^1.0.0", + "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", @@ -2389,9 +2389,9 @@ } }, "node_modules/launch-editor": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.9.1.tgz", - "integrity": "sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.10.0.tgz", + "integrity": "sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA==", "dev": true, "dependencies": { "picocolors": "^1.0.0", @@ -2622,9 +2622,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.9.tgz", + "integrity": "sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg==", "dev": true, "funding": [ { @@ -2920,9 +2920,9 @@ } }, "node_modules/postcss": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.2.tgz", - "integrity": "sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", "dev": true, "funding": [ { @@ -3851,9 +3851,9 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.11", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.11.tgz", - "integrity": "sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==", + "version": "5.3.14", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", + "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", @@ -3980,9 +3980,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", - "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "dev": true, "funding": [ { @@ -4323,9 +4323,9 @@ "dev": true }, "node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", "dev": true, "engines": { "node": ">=10.0.0" diff --git a/examples/webpack/package.json b/examples/webpack/package.json index 6fe03ee4..18af0e0e 100644 --- a/examples/webpack/package.json +++ b/examples/webpack/package.json @@ -5,10 +5,10 @@ "build": "NODE_ENV=production webpack" }, "dependencies": { - "carbon-components-svelte": "^0.87.5" + "carbon-components-svelte": "^0.87.7" }, "devDependencies": { - "carbon-preprocess-svelte": "^0.11.10", + "carbon-preprocess-svelte": "^0.11.11", "css-loader": "^7.1.2", "html-webpack-plugin": "^5.6.3", "mini-css-extract-plugin": "^2.9.2", diff --git a/package-lock.json b/package-lock.json index adeb2085..5d49a79e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,21 +20,21 @@ "@testing-library/user-event": "^14.6.1", "autoprefixer": "^10.4.8", "carbon-components": "10.58.12", - "carbon-icons-svelte": "^13.2.0", - "carbon-preprocess-svelte": "^0.11.10", + "carbon-icons-svelte": "^13.3.0", + "carbon-preprocess-svelte": "^0.11.11", "culls": "^0.1.1", "jsdom": "^26.0.0", "postcss": "^8.5.3", - "prettier": "^3.5.2", + "prettier": "^3.5.3", "prettier-plugin-svelte": "^3.3.3", "sass": "^1.49.11", "standard-version": "^9.5.0", "sveld": "^0.22.1", "svelte": "^4.2.19", - "svelte-check": "^4.1.4", + "svelte-check": "^4.1.5", "tinyglobby": "^0.2.12", - "typescript": "^5.7.3", - "vitest": "^3.0.6" + "typescript": "^5.8.2", + "vitest": "^3.0.8" } }, "node_modules/@adobe/css-tools": { @@ -1008,7 +1008,6 @@ "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.1.2.tgz", "integrity": "sha512-Txsm1tJvtiYeLUVRNqxZGKR/mI+CzuIQuc2gn+YCs9rMTowpNZ2Nqt53JdL8KF9bLhAf2ruR/dr9eZCwdTriRA==", "dev": true, - "license": "MIT", "dependencies": { "@sveltejs/vite-plugin-svelte-inspector": "^2.1.0", "debug": "^4.3.4", @@ -1338,14 +1337,13 @@ } }, "node_modules/@vitest/expect": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.6.tgz", - "integrity": "sha512-zBduHf/ja7/QRX4HdP1DSq5XrPgdN+jzLOwaTq/0qZjYfgETNFCKf9nOAp2j3hmom3oTbczuUzrzg9Hafh7hNg==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.8.tgz", + "integrity": "sha512-Xu6TTIavTvSSS6LZaA3EebWFr6tsoXPetOWNMOlc7LO88QVVBwq2oQWBoDiLCN6YTvNYsGSjqOO8CAdjom5DCQ==", "dev": true, - "license": "MIT", "dependencies": { - "@vitest/spy": "3.0.6", - "@vitest/utils": "3.0.6", + "@vitest/spy": "3.0.8", + "@vitest/utils": "3.0.8", "chai": "^5.2.0", "tinyrainbow": "^2.0.0" }, @@ -1354,13 +1352,12 @@ } }, "node_modules/@vitest/mocker": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.6.tgz", - "integrity": "sha512-KPztr4/tn7qDGZfqlSPQoF2VgJcKxnDNhmfR3VgZ6Fy1bO8T9Fc1stUiTXtqz0yG24VpD00pZP5f8EOFknjNuQ==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.8.tgz", + "integrity": "sha512-n3LjS7fcW1BCoF+zWZxG7/5XvuYH+lsFg+BDwwAz0arIwHQJFUEsKBQ0BLU49fCxuM/2HSeBPHQD8WjgrxMfow==", "dev": true, - "license": "MIT", "dependencies": { - "@vitest/spy": "3.0.6", + "@vitest/spy": "3.0.8", "estree-walker": "^3.0.3", "magic-string": "^0.30.17" }, @@ -1384,25 +1381,22 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@vitest/mocker/node_modules/estree-walker": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dev": true, - "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" } }, "node_modules/@vitest/pretty-format": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.6.tgz", - "integrity": "sha512-Zyctv3dbNL+67qtHfRnUE/k8qxduOamRfAL1BurEIQSyOEFffoMvx2pnDSSbKAAVxY0Ej2J/GH2dQKI0W2JyVg==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.8.tgz", + "integrity": "sha512-BNqwbEyitFhzYMYHUVbIvepOyeQOSFA/NeJMIP9enMntkkxLgOcgABH6fjyXG85ipTgvero6noreavGIqfJcIg==", "dev": true, - "license": "MIT", "dependencies": { "tinyrainbow": "^2.0.0" }, @@ -1411,13 +1405,12 @@ } }, "node_modules/@vitest/runner": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.6.tgz", - "integrity": "sha512-JopP4m/jGoaG1+CBqubV/5VMbi7L+NQCJTu1J1Pf6YaUbk7bZtaq5CX7p+8sY64Sjn1UQ1XJparHfcvTTdu9cA==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.8.tgz", + "integrity": "sha512-c7UUw6gEcOzI8fih+uaAXS5DwjlBaCJUo7KJ4VvJcjL95+DSR1kova2hFuRt3w41KZEFcOEiq098KkyrjXeM5w==", "dev": true, - "license": "MIT", "dependencies": { - "@vitest/utils": "3.0.6", + "@vitest/utils": "3.0.8", "pathe": "^2.0.3" }, "funding": { @@ -1425,13 +1418,12 @@ } }, "node_modules/@vitest/snapshot": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.6.tgz", - "integrity": "sha512-qKSmxNQwT60kNwwJHMVwavvZsMGXWmngD023OHSgn873pV0lylK7dwBTfYP7e4URy5NiBCHHiQGA9DHkYkqRqg==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.8.tgz", + "integrity": "sha512-x8IlMGSEMugakInj44nUrLSILh/zy1f2/BgH0UeHpNyOocG18M9CWVIFBaXPt8TrqVZWmcPjwfG/ht5tnpba8A==", "dev": true, - "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.0.6", + "@vitest/pretty-format": "3.0.8", "magic-string": "^0.30.17", "pathe": "^2.0.3" }, @@ -1440,11 +1432,10 @@ } }, "node_modules/@vitest/spy": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.6.tgz", - "integrity": "sha512-HfOGx/bXtjy24fDlTOpgiAEJbRfFxoX3zIGagCqACkFKKZ/TTOE6gYMKXlqecvxEndKFuNHcHqP081ggZ2yM0Q==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.8.tgz", + "integrity": "sha512-MR+PzJa+22vFKYb934CejhR4BeRpMSoxkvNoDit68GQxRLSf11aT6CTj3XaqUU9rxgWJFnqicN/wxw6yBRkI1Q==", "dev": true, - "license": "MIT", "dependencies": { "tinyspy": "^3.0.2" }, @@ -1453,13 +1444,12 @@ } }, "node_modules/@vitest/utils": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.6.tgz", - "integrity": "sha512-18ktZpf4GQFTbf9jK543uspU03Q2qya7ZGya5yiZ0Gx0nnnalBvd5ZBislbl2EhLjM8A8rt4OilqKG7QwcGkvQ==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.8.tgz", + "integrity": "sha512-nkBC3aEhfX2PdtQI/QwAWp8qZWwzASsU4Npbcd5RdMPBSSLCpkZp52P3xku3s3uA0HIEhGvEcF8rNkBsz9dQ4Q==", "dev": true, - "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.0.6", + "@vitest/pretty-format": "3.0.8", "loupe": "^3.1.3", "tinyrainbow": "^2.0.0" }, @@ -1559,7 +1549,6 @@ "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" } @@ -1712,7 +1701,6 @@ "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -1783,22 +1771,20 @@ "dev": true }, "node_modules/carbon-icons-svelte": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/carbon-icons-svelte/-/carbon-icons-svelte-13.2.0.tgz", - "integrity": "sha512-Chswg+sVHcJGjou4f7FynVtobdldsfjt3EyrlxEtXaA6jINivr3M0y5TTw8BKyRVCzPldZNpdRPNTfnTnc/FKA==", - "dev": true, - "license": "Apache-2.0" + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/carbon-icons-svelte/-/carbon-icons-svelte-13.3.0.tgz", + "integrity": "sha512-pwOVRMYyct0KyzLPCwB7BdeO50lo3I3FclasSPgJiADm49YjYClewHnBsQOM2luu2JCLTdBnadtbVvWSpv+k+Q==", + "dev": true }, "node_modules/carbon-preprocess-svelte": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/carbon-preprocess-svelte/-/carbon-preprocess-svelte-0.11.10.tgz", - "integrity": "sha512-AikYEHeMaNNnqbjXvYWGdU/dmIDmWcCIxb/hnDjVWUlOYXlqjqPCcNy2iaf1krRKozTE3E9L5cKJfnYEht/yyg==", + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/carbon-preprocess-svelte/-/carbon-preprocess-svelte-0.11.11.tgz", + "integrity": "sha512-F8dZ+evXjmGG/l7gZKHwX5vwJ5CngPFIIWyTsxoBKZqIyCgGZJh83X61q2ZE+jG1vhktZCAd18Z6Yyw1WQMN/Q==", "dev": true, - "license": "Apache-2.0", "dependencies": { "estree-walker": "^2.0.2", "magic-string": "^0.30.17", - "postcss": "^8.4.49", + "postcss": "^8.5.3", "postcss-discard-empty": "^7.0.0" } }, @@ -1807,7 +1793,6 @@ "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", "dev": true, - "license": "MIT", "dependencies": { "assertion-error": "^2.0.1", "check-error": "^2.1.1", @@ -1838,7 +1823,6 @@ "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 16" } @@ -2384,7 +2368,6 @@ "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -2566,8 +2549,7 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/esbuild": { "version": "0.21.5", @@ -3383,8 +3365,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/lru-cache": { "version": "6.0.0", @@ -3876,15 +3857,13 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/pathval": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 14.16" } @@ -3995,11 +3974,10 @@ "dev": true }, "node_modules/prettier": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.2.tgz", - "integrity": "sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", "dev": true, - "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, @@ -4662,7 +4640,6 @@ "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.19.tgz", "integrity": "sha512-IY1rnGr6izd10B0A8LqsBfmlT5OILVuZ7XsI0vdGPEvuonFV7NYEUK4dAkm9Zg2q0Um92kYjTpS1CAP3Nh/KWw==", "dev": true, - "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.1", "@jridgewell/sourcemap-codec": "^1.4.15", @@ -4684,11 +4661,10 @@ } }, "node_modules/svelte-check": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.1.4.tgz", - "integrity": "sha512-v0j7yLbT29MezzaQJPEDwksybTE2Ups9rUxEXy92T06TiA0cbqcO8wAOwNUVkFW6B0hsYHA+oAX3BS8b/2oHtw==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.1.5.tgz", + "integrity": "sha512-Gb0T2IqBNe1tLB9EB1Qh+LOe+JB8wt2/rNBDGvkxQVvk8vNeAoG+vZgFB/3P5+zC7RWlyBlzm9dVjZFph/maIg==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "chokidar": "^4.0.1", @@ -4951,7 +4927,6 @@ "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", "dev": true, - "license": "MIT", "engines": { "node": ">=14.0.0" } @@ -4961,7 +4936,6 @@ "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=14.0.0" } @@ -5052,11 +5026,10 @@ "dev": true }, "node_modules/typescript": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", - "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true, - "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -5191,11 +5164,10 @@ } }, "node_modules/vite-node": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.6.tgz", - "integrity": "sha512-s51RzrTkXKJrhNbUzQRsarjmAae7VmMPAsRT7lppVpIg6mK3zGthP9Hgz0YQQKuNcF+Ii7DfYk3Fxz40jRmePw==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.8.tgz", + "integrity": "sha512-6PhR4H9VGlcwXZ+KWCdMqbtG649xCPZqfI9j2PsK1FcXgEzro5bGHcVKFCTqPLaNKZES8Evqv4LwvZARsq5qlg==", "dev": true, - "license": "MIT", "dependencies": { "cac": "^6.7.14", "debug": "^4.4.0", @@ -5274,19 +5246,18 @@ } }, "node_modules/vitest": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.6.tgz", - "integrity": "sha512-/iL1Sc5VeDZKPDe58oGK4HUFLhw6b5XdY1MYawjuSaDA4sEfYlY9HnS6aCEG26fX+MgUi7MwlduTBHHAI/OvMA==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.8.tgz", + "integrity": "sha512-dfqAsNqRGUc8hB9OVR2P0w8PZPEckti2+5rdZip0WIz9WW0MnImJ8XiR61QhqLa92EQzKP2uPkzenKOAHyEIbA==", "dev": true, - "license": "MIT", "dependencies": { - "@vitest/expect": "3.0.6", - "@vitest/mocker": "3.0.6", - "@vitest/pretty-format": "^3.0.6", - "@vitest/runner": "3.0.6", - "@vitest/snapshot": "3.0.6", - "@vitest/spy": "3.0.6", - "@vitest/utils": "3.0.6", + "@vitest/expect": "3.0.8", + "@vitest/mocker": "3.0.8", + "@vitest/pretty-format": "^3.0.8", + "@vitest/runner": "3.0.8", + "@vitest/snapshot": "3.0.8", + "@vitest/spy": "3.0.8", + "@vitest/utils": "3.0.8", "chai": "^5.2.0", "debug": "^4.4.0", "expect-type": "^1.1.0", @@ -5298,7 +5269,7 @@ "tinypool": "^1.0.2", "tinyrainbow": "^2.0.0", "vite": "^5.0.0 || ^6.0.0", - "vite-node": "3.0.6", + "vite-node": "3.0.8", "why-is-node-running": "^2.3.0" }, "bin": { @@ -5314,8 +5285,8 @@ "@edge-runtime/vm": "*", "@types/debug": "^4.1.12", "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "@vitest/browser": "3.0.6", - "@vitest/ui": "3.0.6", + "@vitest/browser": "3.0.8", + "@vitest/ui": "3.0.8", "happy-dom": "*", "jsdom": "*" }, diff --git a/package.json b/package.json index 426c9b97..6d4477cd 100644 --- a/package.json +++ b/package.json @@ -51,21 +51,21 @@ "@testing-library/user-event": "^14.6.1", "autoprefixer": "^10.4.8", "carbon-components": "10.58.12", - "carbon-icons-svelte": "^13.2.0", - "carbon-preprocess-svelte": "^0.11.10", + "carbon-icons-svelte": "^13.3.0", + "carbon-preprocess-svelte": "^0.11.11", "culls": "^0.1.1", "jsdom": "^26.0.0", "postcss": "^8.5.3", - "prettier": "^3.5.2", + "prettier": "^3.5.3", "prettier-plugin-svelte": "^3.3.3", "sass": "^1.49.11", "standard-version": "^9.5.0", "sveld": "^0.22.1", "svelte": "^4.2.19", - "svelte-check": "^4.1.4", + "svelte-check": "^4.1.5", "tinyglobby": "^0.2.12", - "typescript": "^5.7.3", - "vitest": "^3.0.6" + "typescript": "^5.8.2", + "vitest": "^3.0.8" }, "standard-version": { "skip": { diff --git a/tsconfig.json b/tsconfig.json index 941b1356..bf9727a7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,7 @@ { "compilerOptions": { "noEmit": true, + "erasableSyntaxOnly": true, "esModuleInterop": true, "forceConsistentCasingInFileNames": true, "ignoreDeprecations": "5.0", @@ -11,6 +12,7 @@ "moduleResolution": "node", "noUnusedLocals": true, "noUnusedParameters": true, + "noImplicitAny": true, "strict": true, "skipLibCheck": true, "skipDefaultLibCheck": true, From f385e2e379900892c0872dd7dfe446808667a367 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Sun, 9 Mar 2025 14:29:03 -0700 Subject: [PATCH 014/235] chore(package): use docs site for homepage (#2114) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6d4477cd..74bc12fc 100644 --- a/package.json +++ b/package.json @@ -82,7 +82,7 @@ "type": "git", "url": "git+https://github.com/carbon-design-system/carbon-components-svelte.git" }, - "homepage": "https://github.com/carbon-design-system/carbon-components-svelte", + "homepage": "https://svelte.carbondesignsystem.com/", "bugs": "https://github.com/carbon-design-system/carbon-components-svelte/issues", "keywords": [ "carbon", From 4466f7ec91b489334c07a8be5add6dd1149407c4 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Sun, 9 Mar 2025 14:59:34 -0700 Subject: [PATCH 015/235] v0.88.0 --- CHANGELOG.md | 7 +++++++ COMPONENT_INDEX.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 98fb9a66..de42a2b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +### [0.88.0](https://github.com/carbon-design-system/carbon-components-svelte/compare/v0.87.7...v0.88.0) (2025-03-09) + +### Features + +- **data-table:** allow custom `inputName` for radio/checkbox ([#2087](https://github.com/carbon-design-system/carbon-components-svelte/issues/2087)) ([7481b9a](https://github.com/carbon-design-system/carbon-components-svelte/commit/7481b9a995dfbc8c2fbaeaae143c8372cf5fce66)), closes [#2085](https://github.com/carbon-design-system/carbon-components-svelte/issues/2085) +- **ui-shell:** `HeaderAction` supports tooltip ([#2111](https://github.com/carbon-design-system/carbon-components-svelte/issues/2111)) ([24b9cbc](https://github.com/carbon-design-system/carbon-components-svelte/commit/24b9cbc9c343537e5e74799ef8289bd29396cf04)), closes [#2110](https://github.com/carbon-design-system/carbon-components-svelte/issues/2110) + ### [0.87.7](https://github.com/carbon-design-system/carbon-components-svelte/compare/v0.87.6...v0.87.7) (2025-03-07) ### Bug Fixes diff --git a/COMPONENT_INDEX.md b/COMPONENT_INDEX.md index 8ab1b750..f67f99d3 100644 --- a/COMPONENT_INDEX.md +++ b/COMPONENT_INDEX.md @@ -1,6 +1,6 @@ # Component Index -> 165 components exported from carbon-components-svelte@0.87.7. +> 165 components exported from carbon-components-svelte@0.87.8. ## Components diff --git a/package-lock.json b/package-lock.json index 5d49a79e..a74618d7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "carbon-components-svelte", - "version": "0.87.7", + "version": "0.87.8", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "carbon-components-svelte", - "version": "0.87.7", + "version": "0.87.8", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { diff --git a/package.json b/package.json index 74bc12fc..eddff5ef 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "carbon-components-svelte", - "version": "0.87.7", + "version": "0.88.0", "license": "Apache-2.0", "description": "Svelte implementation of the Carbon Design System", "type": "module", From f386c53e64775c7fb9e77ae057e5cbbee6f1d79c Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Mon, 10 Mar 2025 13:28:10 -0700 Subject: [PATCH 016/235] chore: remove errant Bun lockfile [ci skip] [deploy skip] --- bun.lockb | Bin 167723 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100755 bun.lockb diff --git a/bun.lockb b/bun.lockb deleted file mode 100755 index 1f96ec1f4aa393edb898d5b6ac858de2d201a4bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167723 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 I-}LYQ1NDesCjbBd From 49f9cb00ed463d89048a01fee7c697706609b41b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Mar 2025 15:36:51 -0700 Subject: [PATCH 017/235] build(deps-dev): bump prismjs from 1.29.0 to 1.30.0 in /docs (#2116) Bumps [prismjs](https://github.com/PrismJS/prism) from 1.29.0 to 1.30.0. - [Release notes](https://github.com/PrismJS/prism/releases) - [Changelog](https://github.com/PrismJS/prism/blob/master/CHANGELOG.md) - [Commits](https://github.com/PrismJS/prism/compare/v1.29.0...v1.30.0) --- updated-dependencies: - dependency-name: prismjs dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docs/package-lock.json | 12 +++++++----- docs/package.json | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/docs/package-lock.json b/docs/package-lock.json index b418ab97..6af63389 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -17,14 +17,15 @@ "prettier": "^2.8.8", "prettier-plugin-svelte": "^2.10.1", "prism-svelte": "^0.5.0", - "prismjs": "^1.29.0", + "prismjs": "^1.30.0", "remark-slug": "^6.1.0", "svelte": "^4.2.19", "vite": "^5.4.14" } }, "..": { - "version": "0.87.7", + "name": "carbon-components-svelte", + "version": "0.88.0", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", @@ -2960,10 +2961,11 @@ "dev": true }, "node_modules/prismjs": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", - "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", + "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } diff --git a/docs/package.json b/docs/package.json index 75298254..a926a1d2 100644 --- a/docs/package.json +++ b/docs/package.json @@ -22,7 +22,7 @@ "prettier": "^2.8.8", "prettier-plugin-svelte": "^2.10.1", "prism-svelte": "^0.5.0", - "prismjs": "^1.29.0", + "prismjs": "^1.30.0", "remark-slug": "^6.1.0", "svelte": "^4.2.19", "vite": "^5.4.14" From 663b79ad054d14a91a8bf700feb62dcf50976eb8 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Tue, 11 Mar 2025 10:09:28 -0700 Subject: [PATCH 018/235] fix(select): falsy item `text` should not override `value` (#2118) Fixes #2117 --- src/Select/SelectItem.svelte | 2 +- tests/Select/Select.falsy.test.svelte | 9 +++++++++ tests/Select/Select.test.ts | 8 ++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 tests/Select/Select.falsy.test.svelte diff --git a/src/Select/SelectItem.svelte b/src/Select/SelectItem.svelte index 9bb6b556..5a5abac8 100644 --- a/src/Select/SelectItem.svelte +++ b/src/Select/SelectItem.svelte @@ -55,5 +55,5 @@ class={className} {style} > - {text || value} + {text ?? value} diff --git a/tests/Select/Select.falsy.test.svelte b/tests/Select/Select.falsy.test.svelte new file mode 100644 index 00000000..2583be30 --- /dev/null +++ b/tests/Select/Select.falsy.test.svelte @@ -0,0 +1,9 @@ + + + diff --git a/tests/Select/Select.test.ts b/tests/Select/Select.test.ts index 5e442323..1d4800b4 100644 --- a/tests/Select/Select.test.ts +++ b/tests/Select/Select.test.ts @@ -3,6 +3,7 @@ import { user } from "../setup-tests"; import Select from "./Select.test.svelte"; import SelectGroup from "./Select.group.test.svelte"; import SelectSkeleton from "./Select.skeleton.test.svelte"; +import SelectFalsy from "./Select.falsy.test.svelte"; describe("Select", () => { beforeEach(() => { @@ -238,4 +239,11 @@ describe("Select", () => { expect(skeleton).toBeInTheDocument(); expect(skeleton.children[0]).toHaveClass("bx--skeleton"); }); + + it("renders value if `text` is falsy", () => { + render(SelectFalsy); + + expect(screen.getByLabelText("Falsy text")).toHaveValue("-1"); + expect(screen.getByDisplayValue("")).toBeInTheDocument(); + }); }); From d8fbdabc707a0a330b935f3a8269a19d5a8b7425 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Sun, 9 Mar 2025 15:23:01 -0700 Subject: [PATCH 019/235] test(button): add unit tests --- tests/Button.test.svelte | 61 ------------------ tests/Button/Button.test.svelte | 45 +++++++++++++ tests/Button/Button.test.ts | 109 ++++++++++++++++++++++++++++++++ 3 files changed, 154 insertions(+), 61 deletions(-) delete mode 100644 tests/Button.test.svelte create mode 100644 tests/Button/Button.test.svelte create mode 100644 tests/Button/Button.test.ts diff --git a/tests/Button.test.svelte b/tests/Button.test.svelte deleted file mode 100644 index 49bdcdbb..00000000 --- a/tests/Button.test.svelte +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + From 9e3d83031e69889472c4e84be256ea242854cf81 Mon Sep 17 00:00:00 2001 From: Brian West <157514993+b-r-i-a-n-w-e-s-t@users.noreply.github.com> Date: Wed, 19 Mar 2025 12:29:13 -0500 Subject: [PATCH 047/235] fix(combo-box): fix typing when refocusing input Fixes a bug where the input `value` is immediately reset when re-focusing the input. The `value` resetting is necessary to support programmatically clearing the value, but it should only execute if the input is not currently focused. --- src/ComboBox/ComboBox.svelte | 12 +++++++++--- tests/ComboBox/ComboBox.test.ts | 18 ++++++++++++++++++ 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/ComboBox/ComboBox.svelte b/src/ComboBox/ComboBox.svelte index 4ec4e85e..07a89433 100644 --- a/src/ComboBox/ComboBox.svelte +++ b/src/ComboBox/ComboBox.svelte @@ -175,12 +175,18 @@ filteredItems = []; if (!selectedItem) { selectedId = undefined; - value = ""; + // Only reset value if the input is not focused + if (!ref.contains(document.activeElement)) { + value = ""; + } highlightedIndex = -1; highlightedId = undefined; } else { - // programmatically set value - value = itemToString(selectedItem); + // Only set value if the input is not focused + if (!ref.contains(document.activeElement)) { + // programmatically set value + value = itemToString(selectedItem); + } } } }); diff --git a/tests/ComboBox/ComboBox.test.ts b/tests/ComboBox/ComboBox.test.ts index c2ee66b6..14144965 100644 --- a/tests/ComboBox/ComboBox.test.ts +++ b/tests/ComboBox/ComboBox.test.ts @@ -127,6 +127,24 @@ describe("ComboBox", () => { const options = screen.getAllByRole("option"); expect(options).toHaveLength(1); expect(options[0]).toHaveTextContent("Email"); + + await user.clear(input); + expect(input).toHaveValue(""); + expect(screen.getAllByRole("option")).toHaveLength(3); + + await user.click(document.body); + expect(input).not.toHaveFocus(); + + await user.keyboard("{Tab}"); + expect(input).toHaveFocus(); + + await user.type(input, "a"); + await user.click(screen.getAllByRole("option")[1]); + expect(input).toHaveValue("Email"); + + await user.click(document.body); + expect(input).not.toHaveFocus(); + expect(screen.queryByRole("option")).not.toBeInTheDocument(); }); it("should handle disabled items", async () => { From c67e095eaf57d4056e6de37799ae7efc0950efb8 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Wed, 19 Mar 2025 10:42:54 -0700 Subject: [PATCH 048/235] test(combo-box): more unit tests --- tests/ComboBox/ComboBox.test.ts | 35 +++++++++++++++++++++-- tests/ComboBox/ComboBoxCustom.test.svelte | 5 +++- 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/tests/ComboBox/ComboBox.test.ts b/tests/ComboBox/ComboBox.test.ts index 14144965..2ac7534f 100644 --- a/tests/ComboBox/ComboBox.test.ts +++ b/tests/ComboBox/ComboBox.test.ts @@ -141,12 +141,24 @@ describe("ComboBox", () => { await user.type(input, "a"); await user.click(screen.getAllByRole("option")[1]); expect(input).toHaveValue("Email"); - + await user.click(document.body); expect(input).not.toHaveFocus(); expect(screen.queryByRole("option")).not.toBeInTheDocument(); }); + it("should clear input when clicking clear button", async () => { + const consoleLog = vi.spyOn(console, "log"); + render(ComboBox, { props: { selectedId: "1" } }); + + expect(consoleLog).not.toBeCalled(); + const clearButton = screen.getByRole("button", { name: /clear/i }); + await user.click(clearButton); + + expect(screen.getByRole("textbox")).toHaveValue(""); + expect(consoleLog).toHaveBeenCalledWith("clear", "clear"); + }); + it("should handle disabled items", async () => { render(ComboBoxCustom); @@ -184,9 +196,26 @@ describe("ComboBox", () => { it("should programmatically clear selection", async () => { render(ComboBoxCustom, { props: { selectedId: "1" } }); - expect(screen.getByRole("textbox")).toHaveValue("Email"); + const textbox = screen.getByRole("textbox"); + expect(textbox).toHaveValue("Email"); await user.click(screen.getByText("Clear")); - expect(screen.getByRole("textbox")).toHaveValue(""); + expect(textbox).toHaveValue(""); + expect(textbox).toHaveFocus(); + }); + + it("should not re-focus textbox if clearOptions.focus is false", async () => { + render(ComboBoxCustom, { + props: { + selectedId: "1", + clearOptions: { focus: false }, + }, + }); + + const textbox = screen.getByRole("textbox"); + expect(textbox).toHaveValue("Email"); + await user.click(screen.getByText("Clear")); + expect(textbox).toHaveValue(""); + expect(textbox).not.toHaveFocus(); }); it("should close menu on Escape key", async () => { diff --git a/tests/ComboBox/ComboBoxCustom.test.svelte b/tests/ComboBox/ComboBoxCustom.test.svelte index 221aa005..85fe7f06 100644 --- a/tests/ComboBox/ComboBoxCustom.test.svelte +++ b/tests/ComboBox/ComboBoxCustom.test.svelte @@ -11,6 +11,7 @@ ]; export let selectedId: string | undefined = undefined; export let direction: "top" | "bottom" = "bottom"; + export let clearOptions: { focus?: boolean } = {}; export let shouldFilterItem = (item: ComboBoxItem, value: string) => item.text.toLowerCase().includes(value.toLowerCase()); export let itemToString = (item: ComboBoxItem) => item.text; @@ -33,4 +34,6 @@ Item {item.text} - + From e1b3ef22c9ee09474bacadbb0b22b41326566bab Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Wed, 19 Mar 2025 12:43:05 -0700 Subject: [PATCH 049/235] fix(list-box): use `aria-disabled` instead of invalid `disabled` attribute (#2125) --- src/ListBox/ListBoxMenuItem.svelte | 2 +- tests/ComboBox/ComboBox.test.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ListBox/ListBoxMenuItem.svelte b/src/ListBox/ListBoxMenuItem.svelte index dd2ff422..569f0e9e 100644 --- a/src/ListBox/ListBoxMenuItem.svelte +++ b/src/ListBox/ListBoxMenuItem.svelte @@ -25,7 +25,7 @@ class:bx--list-box__menu-item--active={active} class:bx--list-box__menu-item--highlighted={highlighted || active} aria-selected={active} - disabled={disabled ? true : undefined} + aria-disabled={disabled ? true : undefined} {...$$restProps} on:click on:mouseenter diff --git a/tests/ComboBox/ComboBox.test.ts b/tests/ComboBox/ComboBox.test.ts index 2ac7534f..697031a8 100644 --- a/tests/ComboBox/ComboBox.test.ts +++ b/tests/ComboBox/ComboBox.test.ts @@ -165,7 +165,7 @@ describe("ComboBox", () => { await user.click(screen.getByRole("textbox")); const disabledOption = screen.getByText(/Fax/).closest('[role="option"]'); assert(disabledOption); - expect(disabledOption).toHaveAttribute("disabled", "true"); + expect(disabledOption).toHaveAttribute("aria-disabled", "true"); await user.click(disabledOption); expect(screen.getByRole("textbox")).toHaveValue(""); From e85d7efc5ed15f5236d074fd7981ae527d9e5ab5 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Wed, 19 Mar 2025 12:43:23 -0700 Subject: [PATCH 050/235] fix(notification): remove invalid `kind` prop from markup (#2126) --- src/Notification/InlineNotification.svelte | 1 - src/Notification/ToastNotification.svelte | 1 - 2 files changed, 2 deletions(-) diff --git a/src/Notification/InlineNotification.svelte b/src/Notification/InlineNotification.svelte index 9cea92f4..0212b079 100644 --- a/src/Notification/InlineNotification.svelte +++ b/src/Notification/InlineNotification.svelte @@ -71,7 +71,6 @@ {#if open}
Date: Wed, 19 Mar 2025 12:43:33 -0700 Subject: [PATCH 051/235] fix(theme): remove invalid `themes` prop from markup (#2127) --- src/Theme/Theme.svelte | 12 +++++++----- tests/Theme/Theme.test.ts | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/Theme/Theme.svelte b/src/Theme/Theme.svelte index b276b483..e3ae9eda 100644 --- a/src/Theme/Theme.svelte +++ b/src/Theme/Theme.svelte @@ -100,16 +100,18 @@ {/if} {#if render === "toggle"} + {@const { themes: toggleThemes, ...toggleProps } = toggle} { - theme = detail.toggled ? toggle.themes[1] : toggle.themes[0]; + theme = detail.toggled ? toggleThemes[1] : toggleThemes[0]; }} /> {:else if render === "select"} - + {#each selectThemes as theme (theme)} {/each} diff --git a/tests/Theme/Theme.test.ts b/tests/Theme/Theme.test.ts index 9758855a..68cc09ba 100644 --- a/tests/Theme/Theme.test.ts +++ b/tests/Theme/Theme.test.ts @@ -130,14 +130,20 @@ describe("Theme", () => { it("should render custom toggle when render prop is set to toggle and custom toggle options are provided", async () => { render(ThemeToggleCustom); + const checkbox = screen.getByRole("switch"); + assert(checkbox); + expect(checkbox).not.toBeChecked(); + const toggle = screen.getAllByText("Enable dark mode")[0]; expect(toggle).toBeInTheDocument(); await user.click(toggle); expect(consoleLog).toHaveBeenCalledWith("update", { theme: "g80" }); + expect(checkbox).toBeChecked(); await user.click(toggle); expect(consoleLog).toHaveBeenCalledWith("update", { theme: "g10" }); + expect(checkbox).not.toBeChecked(); }); it("should render select when render prop is set to select", async () => { @@ -145,11 +151,17 @@ describe("Theme", () => { const select = screen.getByLabelText("Themes"); expect(select).toBeInTheDocument(); + expect(select).toHaveTextContent("White"); + expect(select).toHaveValue("white"); await user.selectOptions(select, "g100"); + expect(select).toHaveTextContent("Gray 100"); + expect(select).toHaveValue("g100"); expect(consoleLog).toHaveBeenCalledWith("update", { theme: "g100" }); await user.selectOptions(select, "white"); + expect(select).toHaveTextContent("White"); + expect(select).toHaveValue("white"); expect(consoleLog).toHaveBeenCalledWith("update", { theme: "white" }); }); @@ -158,11 +170,17 @@ describe("Theme", () => { const select = screen.getByLabelText("Select a theme"); expect(select).toBeInTheDocument(); + expect(select).toHaveTextContent("White"); + expect(select).toHaveValue("white"); await user.selectOptions(select, "g100"); + expect(select).toHaveTextContent("Gray 100"); + expect(select).toHaveValue("g100"); expect(consoleLog).toHaveBeenCalledWith("update", { theme: "g100" }); await user.selectOptions(select, "white"); + expect(select).toHaveTextContent("White"); + expect(select).toHaveValue("white"); expect(consoleLog).toHaveBeenCalledWith("update", { theme: "white" }); }); }); From e7939ff0e21c3430c9eea74c503b7c35f6823445 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Wed, 19 Mar 2025 12:43:46 -0700 Subject: [PATCH 052/235] fix(multi-select): fix keyboard navigation for disabled items (#2129) Fixes #2128 --- src/MultiSelect/MultiSelect.svelte | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/MultiSelect/MultiSelect.svelte b/src/MultiSelect/MultiSelect.svelte index 224746b1..ec4aeb54 100644 --- a/src/MultiSelect/MultiSelect.svelte +++ b/src/MultiSelect/MultiSelect.svelte @@ -201,7 +201,8 @@ function change(direction) { let index = highlightedIndex + direction; - const length = filterable ? filteredItems.length : items.length; + const itemsToUse = filterable ? filteredItems : sortedItems; + const length = itemsToUse.length; if (length === 0) return; if (index < 0) { index = length - 1; @@ -209,18 +210,18 @@ index = 0; } - let disabled = items[index].disabled; + let disabled = itemsToUse[index].disabled; while (disabled) { index = index + direction; if (index < 0) { - index = items.length - 1; - } else if (index >= items.length) { + index = length - 1; + } else if (index >= length) { index = 0; } - disabled = items[index].disabled; + disabled = itemsToUse[index].disabled; } highlightedIndex = index; From 86794dafe22bc98bb64a70d81b3961496242d9b1 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Wed, 19 Mar 2025 12:51:41 -0700 Subject: [PATCH 053/235] chore(examples): bump deps --- examples/rollup/package-lock.json | 347 +++++++++++------ examples/rollup/package.json | 4 +- examples/sveltekit/package-lock.json | 313 +++++++++------ examples/sveltekit/package.json | 6 +- examples/vite/package-lock.json | 273 ++++++++----- examples/vite/package.json | 2 +- examples/webpack/package-lock.json | 553 ++++++++++++++++++++++----- examples/webpack/package.json | 2 +- 8 files changed, 1089 insertions(+), 411 deletions(-) diff --git a/examples/rollup/package-lock.json b/examples/rollup/package-lock.json index 8f34db80..0af320f7 100644 --- a/examples/rollup/package-lock.json +++ b/examples/rollup/package-lock.json @@ -5,14 +5,14 @@ "packages": { "": { "dependencies": { - "carbon-components-svelte": "^0.87.7" + "carbon-components-svelte": "^0.88.1" }, "devDependencies": { "@rollup/plugin-commonjs": "^26.0.3", "@rollup/plugin-node-resolve": "^15.3.1", "@rollup/plugin-terser": "^0.4.4", "carbon-preprocess-svelte": "^0.11.11", - "rollup": "^4.35.0", + "rollup": "^4.36.0", "rollup-plugin-css-only": "^4.5.2", "rollup-plugin-svelte": "^7.2.2", "svelte": "^4.2.19" @@ -23,6 +23,7 @@ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" @@ -35,6 +36,7 @@ "version": "1.9.1", "resolved": "https://registry.npmjs.org/@ibm/telemetry-js/-/telemetry-js-1.9.1.tgz", "integrity": "sha512-qq8RPafUJHUQieXVCte1kbJEx6JctWzbA/YkXzopbfzIDRT2+hbR9QmgH+KH7bDDNRcDbdHWvHfwJKzThlMtPg==", + "license": "Apache-2.0", "bin": { "ibmtelemetry": "dist/collect.js" } @@ -44,6 +46,7 @@ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -61,6 +64,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -75,6 +79,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -84,6 +89,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -93,6 +99,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" @@ -102,13 +109,15 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -119,6 +128,7 @@ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=14" @@ -129,6 +139,7 @@ "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-26.0.3.tgz", "integrity": "sha512-2BJcolt43MY+y5Tz47djHkodCC3c1VKVrBDKpVqHKpQ9z9S158kCCqB8NF6/gzxLdNlYW9abB3Ibh+kOWLp8KQ==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^5.0.1", "commondir": "^1.0.1", @@ -154,6 +165,7 @@ "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.1.tgz", "integrity": "sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^5.0.1", "@types/resolve": "1.20.2", @@ -178,6 +190,7 @@ "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz", "integrity": "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==", "dev": true, + "license": "MIT", "dependencies": { "serialize-javascript": "^6.0.1", "smob": "^1.0.0", @@ -200,6 +213,7 @@ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz", "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", @@ -218,247 +232,266 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.35.0.tgz", - "integrity": "sha512-uYQ2WfPaqz5QtVgMxfN6NpLD+no0MYHDBywl7itPYd3K5TjjSghNKmX8ic9S8NU8w81NVhJv/XojcHptRly7qQ==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.36.0.tgz", + "integrity": "sha512-jgrXjjcEwN6XpZXL0HUeOVGfjXhPyxAbbhD0BlXUB+abTOpbPiN5Wb3kOT7yb+uEtATNYF5x5gIfwutmuBA26w==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.35.0.tgz", - "integrity": "sha512-FtKddj9XZudurLhdJnBl9fl6BwCJ3ky8riCXjEw3/UIbjmIY58ppWwPEvU3fNu+W7FUsAsB1CdH+7EQE6CXAPA==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.36.0.tgz", + "integrity": "sha512-NyfuLvdPdNUfUNeYKUwPwKsE5SXa2J6bCt2LdB/N+AxShnkpiczi3tcLJrm5mA+eqpy0HmaIY9F6XCa32N5yzg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.35.0.tgz", - "integrity": "sha512-Uk+GjOJR6CY844/q6r5DR/6lkPFOw0hjfOIzVx22THJXMxktXG6CbejseJFznU8vHcEBLpiXKY3/6xc+cBm65Q==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.36.0.tgz", + "integrity": "sha512-JQ1Jk5G4bGrD4pWJQzWsD8I1n1mgPXq33+/vP4sk8j/z/C2siRuxZtaUA7yMTf71TCZTZl/4e1bfzwUmFb3+rw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.35.0.tgz", - "integrity": "sha512-3IrHjfAS6Vkp+5bISNQnPogRAW5GAV1n+bNCrDwXmfMHbPl5EhTmWtfmwlJxFRUCBZ+tZ/OxDyU08aF6NI/N5Q==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.36.0.tgz", + "integrity": "sha512-6c6wMZa1lrtiRsbDziCmjE53YbTkxMYhhnWnSW8R/yqsM7a6mSJ3uAVT0t8Y/DGt7gxUWYuFM4bwWk9XCJrFKA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.35.0.tgz", - "integrity": "sha512-sxjoD/6F9cDLSELuLNnY0fOrM9WA0KrM0vWm57XhrIMf5FGiN8D0l7fn+bpUeBSU7dCgPV2oX4zHAsAXyHFGcQ==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.36.0.tgz", + "integrity": "sha512-KXVsijKeJXOl8QzXTsA+sHVDsFOmMCdBRgFmBb+mfEb/7geR7+C8ypAml4fquUt14ZyVXaw2o1FWhqAfOvA4sg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.35.0.tgz", - "integrity": "sha512-2mpHCeRuD1u/2kruUiHSsnjWtHjqVbzhBkNVQ1aVD63CcexKVcQGwJ2g5VphOd84GvxfSvnnlEyBtQCE5hxVVw==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.36.0.tgz", + "integrity": "sha512-dVeWq1ebbvByI+ndz4IJcD4a09RJgRYmLccwlQ8bPd4olz3Y213uf1iwvc7ZaxNn2ab7bjc08PrtBgMu6nb4pQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.35.0.tgz", - "integrity": "sha512-mrA0v3QMy6ZSvEuLs0dMxcO2LnaCONs1Z73GUDBHWbY8tFFocM6yl7YyMu7rz4zS81NDSqhrUuolyZXGi8TEqg==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.36.0.tgz", + "integrity": "sha512-bvXVU42mOVcF4le6XSjscdXjqx8okv4n5vmwgzcmtvFdifQ5U4dXFYaCB87namDRKlUL9ybVtLQ9ztnawaSzvg==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.35.0.tgz", - "integrity": "sha512-DnYhhzcvTAKNexIql8pFajr0PiDGrIsBYPRvCKlA5ixSS3uwo/CWNZxB09jhIapEIg945KOzcYEAGGSmTSpk7A==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.36.0.tgz", + "integrity": "sha512-JFIQrDJYrxOnyDQGYkqnNBtjDwTgbasdbUiQvcU8JmGDfValfH1lNpng+4FWlhaVIR4KPkeddYjsVVbmJYvDcg==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.35.0.tgz", - "integrity": "sha512-uagpnH2M2g2b5iLsCTZ35CL1FgyuzzJQ8L9VtlJ+FckBXroTwNOaD0z0/UF+k5K3aNQjbm8LIVpxykUOQt1m/A==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.36.0.tgz", + "integrity": "sha512-KqjYVh3oM1bj//5X7k79PSCZ6CvaVzb7Qs7VMWS+SlWB5M8p3FqufLP9VNp4CazJ0CsPDLwVD9r3vX7Ci4J56A==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.35.0.tgz", - "integrity": "sha512-XQxVOCd6VJeHQA/7YcqyV0/88N6ysSVzRjJ9I9UA/xXpEsjvAgDTgH3wQYz5bmr7SPtVK2TsP2fQ2N9L4ukoUg==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.36.0.tgz", + "integrity": "sha512-QiGnhScND+mAAtfHqeT+cB1S9yFnNQ/EwCg5yE3MzoaZZnIV0RV9O5alJAoJKX/sBONVKeZdMfO8QSaWEygMhw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.35.0.tgz", - "integrity": "sha512-5pMT5PzfgwcXEwOaSrqVsz/LvjDZt+vQ8RT/70yhPU06PTuq8WaHhfT1LW+cdD7mW6i/J5/XIkX/1tCAkh1W6g==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.36.0.tgz", + "integrity": "sha512-1ZPyEDWF8phd4FQtTzMh8FQwqzvIjLsl6/84gzUxnMNFBtExBtpL51H67mV9xipuxl1AEAerRBgBwFNpkw8+Lg==", "cpu": [ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.35.0.tgz", - "integrity": "sha512-c+zkcvbhbXF98f4CtEIP1EBA/lCic5xB0lToneZYvMeKu5Kamq3O8gqrxiYYLzlZH6E3Aq+TSW86E4ay8iD8EA==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.36.0.tgz", + "integrity": "sha512-VMPMEIUpPFKpPI9GZMhJrtu8rxnp6mJR3ZzQPykq4xc2GmdHj3Q4cA+7avMyegXy4n1v+Qynr9fR88BmyO74tg==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.35.0.tgz", - "integrity": "sha512-s91fuAHdOwH/Tad2tzTtPX7UZyytHIRR6V4+2IGlV0Cej5rkG0R61SX4l4y9sh0JBibMiploZx3oHKPnQBKe4g==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.36.0.tgz", + "integrity": "sha512-ttE6ayb/kHwNRJGYLpuAvB7SMtOeQnVXEIpMtAvx3kepFQeowVED0n1K9nAdraHUPJ5hydEMxBpIR7o4nrm8uA==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.35.0.tgz", - "integrity": "sha512-hQRkPQPLYJZYGP+Hj4fR9dDBMIM7zrzJDWFEMPdTnTy95Ljnv0/4w/ixFw3pTBMEuuEuoqtBINYND4M7ujcuQw==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.36.0.tgz", + "integrity": "sha512-4a5gf2jpS0AIe7uBjxDeUMNcFmaRTbNv7NxI5xOCs4lhzsVyGR/0qBXduPnoWf6dGC365saTiwag8hP1imTgag==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.35.0.tgz", - "integrity": "sha512-Pim1T8rXOri+0HmV4CdKSGrqcBWX0d1HoPnQ0uw0bdp1aP5SdQVNBy8LjYncvnLgu3fnnCt17xjWGd4cqh8/hA==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.36.0.tgz", + "integrity": "sha512-5KtoW8UWmwFKQ96aQL3LlRXX16IMwyzMq/jSSVIIyAANiE1doaQsx/KRyhAvpHlPjPiSU/AYX/8m+lQ9VToxFQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.35.0.tgz", - "integrity": "sha512-QysqXzYiDvQWfUiTm8XmJNO2zm9yC9P/2Gkrwg2dH9cxotQzunBHYr6jk4SujCTqnfGxduOmQcI7c2ryuW8XVg==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.36.0.tgz", + "integrity": "sha512-sycrYZPrv2ag4OCvaN5js+f01eoZ2U+RmT5as8vhxiFz+kxwlHrsxOwKPSA8WyS+Wc6Epid9QeI/IkQ9NkgYyQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.35.0.tgz", - "integrity": "sha512-OUOlGqPkVJCdJETKOCEf1mw848ZyJ5w50/rZ/3IBQVdLfR5jk/6Sr5m3iO2tdPgwo0x7VcncYuOvMhBWZq8ayg==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.36.0.tgz", + "integrity": "sha512-qbqt4N7tokFwwSVlWDsjfoHgviS3n/vZ8LK0h1uLG9TYIRuUTJC88E1xb3LM2iqZ/WTqNQjYrtmtGmrmmawB6A==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.35.0.tgz", - "integrity": "sha512-2/lsgejMrtwQe44glq7AFFHLfJBPafpsTa6JvP2NGef/ifOa4KBoglVf7AKN7EV9o32evBPRqfg96fEHzWo5kw==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.36.0.tgz", + "integrity": "sha512-t+RY0JuRamIocMuQcfwYSOkmdX9dtkr1PbhKW42AMvaDQa+jOdpUYysroTF/nuPpAaQMWp7ye+ndlmmthieJrQ==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.35.0.tgz", - "integrity": "sha512-PIQeY5XDkrOysbQblSW7v3l1MDZzkTEzAfTPkj5VAu3FW8fS4ynyLg2sINp0fp3SjZ8xkRYpLqoKcYqAkhU1dw==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.36.0.tgz", + "integrity": "sha512-aRXd7tRZkWLqGbChgcMMDEHjOKudo1kChb1Jt1IfR8cY/KIpgNviLeJy5FUb9IpSuQj8dU2fAYNMPW/hLKOSTw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -468,19 +501,22 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/resolve": { "version": "1.20.2", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/acorn": { "version": "8.14.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -493,6 +529,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -505,6 +542,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -517,6 +555,7 @@ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">= 0.4" } @@ -526,6 +565,7 @@ "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">= 0.4" } @@ -534,13 +574,15 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -549,13 +591,15 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/carbon-components-svelte": { - "version": "0.87.7", - "resolved": "https://registry.npmjs.org/carbon-components-svelte/-/carbon-components-svelte-0.87.7.tgz", - "integrity": "sha512-c9CJdZZZIzqEm7gaJu0Gvw2ZbEM5DZ9WrzA9Gp6bOhoqMGFKU8NRHK10Dj5ZsxuDJ3IgR4zy2/qTZi9q8TvDbQ==", + "version": "0.88.1", + "resolved": "https://registry.npmjs.org/carbon-components-svelte/-/carbon-components-svelte-0.88.1.tgz", + "integrity": "sha512-R5bJ4I3eTB1BSOCP/HAH/iNsltiNcKvY8EwNkUluuZD+s2J+D6DVlDOQyaa96UtGW9tJareVUuZE/r6E+4DwQA==", "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { "@ibm/telemetry-js": "^1.5.0", "flatpickr": "4.6.9" @@ -566,6 +610,7 @@ "resolved": "https://registry.npmjs.org/carbon-preprocess-svelte/-/carbon-preprocess-svelte-0.11.11.tgz", "integrity": "sha512-F8dZ+evXjmGG/l7gZKHwX5vwJ5CngPFIIWyTsxoBKZqIyCgGZJh83X61q2ZE+jG1vhktZCAd18Z6Yyw1WQMN/Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "estree-walker": "^2.0.2", "magic-string": "^0.30.17", @@ -578,6 +623,7 @@ "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz", "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15", "@types/estree": "^1.0.1", @@ -591,6 +637,7 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" } @@ -600,6 +647,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -611,25 +659,29 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -644,6 +696,7 @@ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", "dev": true, + "license": "MIT", "dependencies": { "mdn-data": "2.0.30", "source-map-js": "^1.0.1" @@ -657,6 +710,7 @@ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -665,30 +719,35 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/flatpickr": { "version": "4.6.9", "resolved": "https://registry.npmjs.org/flatpickr/-/flatpickr-4.6.9.tgz", - "integrity": "sha512-F0azNNi8foVWKSF+8X+ZJzz8r9sE1G4hl06RyceIaLvyltKvDl6vqk9Lm/6AUUCi5HWaIjiUbk7UpeE/fOXOpw==" + "integrity": "sha512-F0azNNi8foVWKSF+8X+ZJzz8r9sE1G4hl06RyceIaLvyltKvDl6vqk9Lm/6AUUCi5HWaIjiUbk7UpeE/fOXOpw==", + "license": "MIT" }, "node_modules/foreground-child": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, + "license": "ISC", "dependencies": { "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" @@ -706,6 +765,7 @@ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -719,6 +779,7 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -728,6 +789,7 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -748,6 +810,7 @@ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -760,6 +823,7 @@ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, + "license": "MIT", "dependencies": { "hasown": "^2.0.2" }, @@ -775,6 +839,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -783,13 +848,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-reference": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "*" } @@ -798,13 +865,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/jackspeak": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -819,19 +888,22 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/magic-string": { "version": "0.30.17", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } @@ -840,13 +912,15 @@ "version": "2.0.30", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", - "dev": true + "dev": true, + "license": "CC0-1.0" }, "node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -862,14 +936,15 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } }, "node_modules/nanoid": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.9.tgz", - "integrity": "sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "dev": true, "funding": [ { @@ -877,6 +952,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -888,13 +964,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true + "dev": true, + "license": "BlueOak-1.0.0" }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -903,13 +981,15 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-scurry": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -926,6 +1006,7 @@ "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^3.0.0", @@ -937,6 +1018,7 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" } @@ -946,6 +1028,7 @@ "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.6" } @@ -954,13 +1037,15 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -987,6 +1072,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.8", "picocolors": "^1.1.1", @@ -1001,6 +1087,7 @@ "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-7.0.0.tgz", "integrity": "sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA==", "dev": true, + "license": "MIT", "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" }, @@ -1013,6 +1100,7 @@ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } @@ -1022,6 +1110,7 @@ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.16.0", "path-parse": "^1.0.7", @@ -1042,15 +1131,17 @@ "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/rollup": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.35.0.tgz", - "integrity": "sha512-kg6oI4g+vc41vePJyO6dHt/yl0Rz3Thv0kJeVQ3D1kS3E5XSuKbPc29G4IpT/Kv1KQwgHVcN+HtyS+HYLNSvQg==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.36.0.tgz", + "integrity": "sha512-zwATAXNQxUcd40zgtQG0ZafcRK4g004WtEl7kbuhTWPvf07PsfohXl39jVUvPF7jvNAIkKPQ2XrsDlWuxBd++Q==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "1.0.6" }, @@ -1062,25 +1153,25 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.35.0", - "@rollup/rollup-android-arm64": "4.35.0", - "@rollup/rollup-darwin-arm64": "4.35.0", - "@rollup/rollup-darwin-x64": "4.35.0", - "@rollup/rollup-freebsd-arm64": "4.35.0", - "@rollup/rollup-freebsd-x64": "4.35.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.35.0", - "@rollup/rollup-linux-arm-musleabihf": "4.35.0", - "@rollup/rollup-linux-arm64-gnu": "4.35.0", - "@rollup/rollup-linux-arm64-musl": "4.35.0", - "@rollup/rollup-linux-loongarch64-gnu": "4.35.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.35.0", - "@rollup/rollup-linux-riscv64-gnu": "4.35.0", - "@rollup/rollup-linux-s390x-gnu": "4.35.0", - "@rollup/rollup-linux-x64-gnu": "4.35.0", - "@rollup/rollup-linux-x64-musl": "4.35.0", - "@rollup/rollup-win32-arm64-msvc": "4.35.0", - "@rollup/rollup-win32-ia32-msvc": "4.35.0", - "@rollup/rollup-win32-x64-msvc": "4.35.0", + "@rollup/rollup-android-arm-eabi": "4.36.0", + "@rollup/rollup-android-arm64": "4.36.0", + "@rollup/rollup-darwin-arm64": "4.36.0", + "@rollup/rollup-darwin-x64": "4.36.0", + "@rollup/rollup-freebsd-arm64": "4.36.0", + "@rollup/rollup-freebsd-x64": "4.36.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.36.0", + "@rollup/rollup-linux-arm-musleabihf": "4.36.0", + "@rollup/rollup-linux-arm64-gnu": "4.36.0", + "@rollup/rollup-linux-arm64-musl": "4.36.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.36.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.36.0", + "@rollup/rollup-linux-riscv64-gnu": "4.36.0", + "@rollup/rollup-linux-s390x-gnu": "4.36.0", + "@rollup/rollup-linux-x64-gnu": "4.36.0", + "@rollup/rollup-linux-x64-musl": "4.36.0", + "@rollup/rollup-win32-arm64-msvc": "4.36.0", + "@rollup/rollup-win32-ia32-msvc": "4.36.0", + "@rollup/rollup-win32-x64-msvc": "4.36.0", "fsevents": "~2.3.2" } }, @@ -1089,6 +1180,7 @@ "resolved": "https://registry.npmjs.org/rollup-plugin-css-only/-/rollup-plugin-css-only-4.5.2.tgz", "integrity": "sha512-7rj9+jB17Pz8LNcPgtMUb16JcgD8lxQMK9HcGfAVhMK3na/WXes3oGIo5QsrQQVqtgAU6q6KnQNXJrYunaUIQQ==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/pluginutils": "5" }, @@ -1104,6 +1196,7 @@ "resolved": "https://registry.npmjs.org/rollup-plugin-svelte/-/rollup-plugin-svelte-7.2.2.tgz", "integrity": "sha512-hgnIblTRewaBEVQD6N0Q43o+y6q1TmDRhBjaEzQCi50bs8TXqjc+d1zFZyE8tsfgcfNHZQzclh4RxlFUB85H8Q==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^4.1.0", "resolve.exports": "^2.0.0" @@ -1121,6 +1214,7 @@ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", "dev": true, + "license": "MIT", "dependencies": { "estree-walker": "^2.0.1", "picomatch": "^2.2.2" @@ -1134,6 +1228,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -1159,13 +1254,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/serialize-javascript": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } @@ -1175,6 +1272,7 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -1187,6 +1285,7 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1196,6 +1295,7 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -1207,13 +1307,15 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/smob/-/smob-1.5.0.tgz", "integrity": "sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -1223,6 +1325,7 @@ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -1232,6 +1335,7 @@ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -1242,6 +1346,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, + "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -1260,6 +1365,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -1274,6 +1380,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1282,13 +1389,15 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/string-width-cjs/node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -1301,6 +1410,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -1317,6 +1427,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -1329,6 +1440,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1338,6 +1450,7 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -1350,6 +1463,7 @@ "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.19.tgz", "integrity": "sha512-IY1rnGr6izd10B0A8LqsBfmlT5OILVuZ7XsI0vdGPEvuonFV7NYEUK4dAkm9Zg2q0Um92kYjTpS1CAP3Nh/KWw==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.1", "@jridgewell/sourcemap-codec": "^1.4.15", @@ -1375,6 +1489,7 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" } @@ -1384,6 +1499,7 @@ "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.6" } @@ -1393,6 +1509,7 @@ "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz", "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -1411,6 +1528,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -1426,6 +1544,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -1444,6 +1563,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -1461,6 +1581,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1470,6 +1591,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -1484,13 +1606,15 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/wrap-ansi-cjs/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -1505,6 +1629,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, diff --git a/examples/rollup/package.json b/examples/rollup/package.json index 2472f916..5ba8cce5 100644 --- a/examples/rollup/package.json +++ b/examples/rollup/package.json @@ -6,14 +6,14 @@ "build": "rollup -c" }, "dependencies": { - "carbon-components-svelte": "^0.87.7" + "carbon-components-svelte": "^0.88.1" }, "devDependencies": { "@rollup/plugin-commonjs": "^26.0.3", "@rollup/plugin-node-resolve": "^15.3.1", "@rollup/plugin-terser": "^0.4.4", "carbon-preprocess-svelte": "^0.11.11", - "rollup": "^4.35.0", + "rollup": "^4.36.0", "rollup-plugin-css-only": "^4.5.2", "rollup-plugin-svelte": "^7.2.2", "svelte": "^4.2.19" diff --git a/examples/sveltekit/package-lock.json b/examples/sveltekit/package-lock.json index 31cbe9f6..e0b0b8d9 100644 --- a/examples/sveltekit/package-lock.json +++ b/examples/sveltekit/package-lock.json @@ -5,11 +5,11 @@ "packages": { "": { "dependencies": { - "carbon-components-svelte": "^0.87.7", - "carbon-pictograms-svelte": "^12.14.0" + "carbon-components-svelte": "^0.88.1", + "carbon-pictograms-svelte": "^13.3.0" }, "devDependencies": { - "@sveltejs/kit": "^2.19.0", + "@sveltejs/kit": "^2.20.1", "@sveltejs/vite-plugin-svelte": "^3.1.2", "carbon-preprocess-svelte": "^0.11.11", "svelte": "^4.2.19", @@ -21,6 +21,7 @@ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" @@ -37,6 +38,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "aix" @@ -53,6 +55,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -69,6 +72,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -85,6 +89,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -101,6 +106,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -117,6 +123,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -133,6 +140,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -149,6 +157,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -165,6 +174,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -181,6 +191,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -197,6 +208,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -213,6 +225,7 @@ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -229,6 +242,7 @@ "mips64el" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -245,6 +259,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -261,6 +276,7 @@ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -277,6 +293,7 @@ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -293,6 +310,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -309,6 +327,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" @@ -325,6 +344,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -341,6 +361,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" @@ -357,6 +378,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -373,6 +395,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -389,6 +412,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -401,6 +425,7 @@ "version": "1.9.1", "resolved": "https://registry.npmjs.org/@ibm/telemetry-js/-/telemetry-js-1.9.1.tgz", "integrity": "sha512-qq8RPafUJHUQieXVCte1kbJEx6JctWzbA/YkXzopbfzIDRT2+hbR9QmgH+KH7bDDNRcDbdHWvHfwJKzThlMtPg==", + "license": "Apache-2.0", "bin": { "ibmtelemetry": "dist/collect.js" } @@ -410,6 +435,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -424,6 +450,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -433,6 +460,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -441,13 +469,15 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -457,260 +487,281 @@ "version": "1.0.0-next.28", "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz", "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.35.0.tgz", - "integrity": "sha512-uYQ2WfPaqz5QtVgMxfN6NpLD+no0MYHDBywl7itPYd3K5TjjSghNKmX8ic9S8NU8w81NVhJv/XojcHptRly7qQ==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.36.0.tgz", + "integrity": "sha512-jgrXjjcEwN6XpZXL0HUeOVGfjXhPyxAbbhD0BlXUB+abTOpbPiN5Wb3kOT7yb+uEtATNYF5x5gIfwutmuBA26w==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.35.0.tgz", - "integrity": "sha512-FtKddj9XZudurLhdJnBl9fl6BwCJ3ky8riCXjEw3/UIbjmIY58ppWwPEvU3fNu+W7FUsAsB1CdH+7EQE6CXAPA==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.36.0.tgz", + "integrity": "sha512-NyfuLvdPdNUfUNeYKUwPwKsE5SXa2J6bCt2LdB/N+AxShnkpiczi3tcLJrm5mA+eqpy0HmaIY9F6XCa32N5yzg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.35.0.tgz", - "integrity": "sha512-Uk+GjOJR6CY844/q6r5DR/6lkPFOw0hjfOIzVx22THJXMxktXG6CbejseJFznU8vHcEBLpiXKY3/6xc+cBm65Q==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.36.0.tgz", + "integrity": "sha512-JQ1Jk5G4bGrD4pWJQzWsD8I1n1mgPXq33+/vP4sk8j/z/C2siRuxZtaUA7yMTf71TCZTZl/4e1bfzwUmFb3+rw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.35.0.tgz", - "integrity": "sha512-3IrHjfAS6Vkp+5bISNQnPogRAW5GAV1n+bNCrDwXmfMHbPl5EhTmWtfmwlJxFRUCBZ+tZ/OxDyU08aF6NI/N5Q==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.36.0.tgz", + "integrity": "sha512-6c6wMZa1lrtiRsbDziCmjE53YbTkxMYhhnWnSW8R/yqsM7a6mSJ3uAVT0t8Y/DGt7gxUWYuFM4bwWk9XCJrFKA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.35.0.tgz", - "integrity": "sha512-sxjoD/6F9cDLSELuLNnY0fOrM9WA0KrM0vWm57XhrIMf5FGiN8D0l7fn+bpUeBSU7dCgPV2oX4zHAsAXyHFGcQ==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.36.0.tgz", + "integrity": "sha512-KXVsijKeJXOl8QzXTsA+sHVDsFOmMCdBRgFmBb+mfEb/7geR7+C8ypAml4fquUt14ZyVXaw2o1FWhqAfOvA4sg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.35.0.tgz", - "integrity": "sha512-2mpHCeRuD1u/2kruUiHSsnjWtHjqVbzhBkNVQ1aVD63CcexKVcQGwJ2g5VphOd84GvxfSvnnlEyBtQCE5hxVVw==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.36.0.tgz", + "integrity": "sha512-dVeWq1ebbvByI+ndz4IJcD4a09RJgRYmLccwlQ8bPd4olz3Y213uf1iwvc7ZaxNn2ab7bjc08PrtBgMu6nb4pQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.35.0.tgz", - "integrity": "sha512-mrA0v3QMy6ZSvEuLs0dMxcO2LnaCONs1Z73GUDBHWbY8tFFocM6yl7YyMu7rz4zS81NDSqhrUuolyZXGi8TEqg==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.36.0.tgz", + "integrity": "sha512-bvXVU42mOVcF4le6XSjscdXjqx8okv4n5vmwgzcmtvFdifQ5U4dXFYaCB87namDRKlUL9ybVtLQ9ztnawaSzvg==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.35.0.tgz", - "integrity": "sha512-DnYhhzcvTAKNexIql8pFajr0PiDGrIsBYPRvCKlA5ixSS3uwo/CWNZxB09jhIapEIg945KOzcYEAGGSmTSpk7A==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.36.0.tgz", + "integrity": "sha512-JFIQrDJYrxOnyDQGYkqnNBtjDwTgbasdbUiQvcU8JmGDfValfH1lNpng+4FWlhaVIR4KPkeddYjsVVbmJYvDcg==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.35.0.tgz", - "integrity": "sha512-uagpnH2M2g2b5iLsCTZ35CL1FgyuzzJQ8L9VtlJ+FckBXroTwNOaD0z0/UF+k5K3aNQjbm8LIVpxykUOQt1m/A==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.36.0.tgz", + "integrity": "sha512-KqjYVh3oM1bj//5X7k79PSCZ6CvaVzb7Qs7VMWS+SlWB5M8p3FqufLP9VNp4CazJ0CsPDLwVD9r3vX7Ci4J56A==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.35.0.tgz", - "integrity": "sha512-XQxVOCd6VJeHQA/7YcqyV0/88N6ysSVzRjJ9I9UA/xXpEsjvAgDTgH3wQYz5bmr7SPtVK2TsP2fQ2N9L4ukoUg==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.36.0.tgz", + "integrity": "sha512-QiGnhScND+mAAtfHqeT+cB1S9yFnNQ/EwCg5yE3MzoaZZnIV0RV9O5alJAoJKX/sBONVKeZdMfO8QSaWEygMhw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.35.0.tgz", - "integrity": "sha512-5pMT5PzfgwcXEwOaSrqVsz/LvjDZt+vQ8RT/70yhPU06PTuq8WaHhfT1LW+cdD7mW6i/J5/XIkX/1tCAkh1W6g==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.36.0.tgz", + "integrity": "sha512-1ZPyEDWF8phd4FQtTzMh8FQwqzvIjLsl6/84gzUxnMNFBtExBtpL51H67mV9xipuxl1AEAerRBgBwFNpkw8+Lg==", "cpu": [ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.35.0.tgz", - "integrity": "sha512-c+zkcvbhbXF98f4CtEIP1EBA/lCic5xB0lToneZYvMeKu5Kamq3O8gqrxiYYLzlZH6E3Aq+TSW86E4ay8iD8EA==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.36.0.tgz", + "integrity": "sha512-VMPMEIUpPFKpPI9GZMhJrtu8rxnp6mJR3ZzQPykq4xc2GmdHj3Q4cA+7avMyegXy4n1v+Qynr9fR88BmyO74tg==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.35.0.tgz", - "integrity": "sha512-s91fuAHdOwH/Tad2tzTtPX7UZyytHIRR6V4+2IGlV0Cej5rkG0R61SX4l4y9sh0JBibMiploZx3oHKPnQBKe4g==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.36.0.tgz", + "integrity": "sha512-ttE6ayb/kHwNRJGYLpuAvB7SMtOeQnVXEIpMtAvx3kepFQeowVED0n1K9nAdraHUPJ5hydEMxBpIR7o4nrm8uA==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.35.0.tgz", - "integrity": "sha512-hQRkPQPLYJZYGP+Hj4fR9dDBMIM7zrzJDWFEMPdTnTy95Ljnv0/4w/ixFw3pTBMEuuEuoqtBINYND4M7ujcuQw==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.36.0.tgz", + "integrity": "sha512-4a5gf2jpS0AIe7uBjxDeUMNcFmaRTbNv7NxI5xOCs4lhzsVyGR/0qBXduPnoWf6dGC365saTiwag8hP1imTgag==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.35.0.tgz", - "integrity": "sha512-Pim1T8rXOri+0HmV4CdKSGrqcBWX0d1HoPnQ0uw0bdp1aP5SdQVNBy8LjYncvnLgu3fnnCt17xjWGd4cqh8/hA==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.36.0.tgz", + "integrity": "sha512-5KtoW8UWmwFKQ96aQL3LlRXX16IMwyzMq/jSSVIIyAANiE1doaQsx/KRyhAvpHlPjPiSU/AYX/8m+lQ9VToxFQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.35.0.tgz", - "integrity": "sha512-QysqXzYiDvQWfUiTm8XmJNO2zm9yC9P/2Gkrwg2dH9cxotQzunBHYr6jk4SujCTqnfGxduOmQcI7c2ryuW8XVg==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.36.0.tgz", + "integrity": "sha512-sycrYZPrv2ag4OCvaN5js+f01eoZ2U+RmT5as8vhxiFz+kxwlHrsxOwKPSA8WyS+Wc6Epid9QeI/IkQ9NkgYyQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.35.0.tgz", - "integrity": "sha512-OUOlGqPkVJCdJETKOCEf1mw848ZyJ5w50/rZ/3IBQVdLfR5jk/6Sr5m3iO2tdPgwo0x7VcncYuOvMhBWZq8ayg==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.36.0.tgz", + "integrity": "sha512-qbqt4N7tokFwwSVlWDsjfoHgviS3n/vZ8LK0h1uLG9TYIRuUTJC88E1xb3LM2iqZ/WTqNQjYrtmtGmrmmawB6A==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.35.0.tgz", - "integrity": "sha512-2/lsgejMrtwQe44glq7AFFHLfJBPafpsTa6JvP2NGef/ifOa4KBoglVf7AKN7EV9o32evBPRqfg96fEHzWo5kw==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.36.0.tgz", + "integrity": "sha512-t+RY0JuRamIocMuQcfwYSOkmdX9dtkr1PbhKW42AMvaDQa+jOdpUYysroTF/nuPpAaQMWp7ye+ndlmmthieJrQ==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.35.0.tgz", - "integrity": "sha512-PIQeY5XDkrOysbQblSW7v3l1MDZzkTEzAfTPkj5VAu3FW8fS4ynyLg2sINp0fp3SjZ8xkRYpLqoKcYqAkhU1dw==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.36.0.tgz", + "integrity": "sha512-aRXd7tRZkWLqGbChgcMMDEHjOKudo1kChb1Jt1IfR8cY/KIpgNviLeJy5FUb9IpSuQj8dU2fAYNMPW/hLKOSTw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@sveltejs/kit": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.19.0.tgz", - "integrity": "sha512-UTx28Ad4sYsLU//gqkEo5aFOPFBRT2uXCmXTsURqhurDCvzkVwXruJgBcHDaMiK6RKKpYRteDUaXYqZyGPgCXQ==", + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.20.1.tgz", + "integrity": "sha512-XXd6hQKi9le+8rYIKsxTfgABjB3b8S21qZmMUTvAC5kuVA1AXvYPVEmxrMhRqyOacXu3e6P3ag5HtJi6j9K7UQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/cookie": "^0.6.0", "cookie": "^0.6.0", @@ -741,6 +792,7 @@ "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.1.2.tgz", "integrity": "sha512-Txsm1tJvtiYeLUVRNqxZGKR/mI+CzuIQuc2gn+YCs9rMTowpNZ2Nqt53JdL8KF9bLhAf2ruR/dr9eZCwdTriRA==", "dev": true, + "license": "MIT", "dependencies": { "@sveltejs/vite-plugin-svelte-inspector": "^2.1.0", "debug": "^4.3.4", @@ -763,6 +815,7 @@ "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-2.1.0.tgz", "integrity": "sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.3.4" }, @@ -779,19 +832,22 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/acorn": { "version": "8.14.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -804,6 +860,7 @@ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">= 0.4" } @@ -813,30 +870,34 @@ "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">= 0.4" } }, "node_modules/carbon-components-svelte": { - "version": "0.87.7", - "resolved": "https://registry.npmjs.org/carbon-components-svelte/-/carbon-components-svelte-0.87.7.tgz", - "integrity": "sha512-c9CJdZZZIzqEm7gaJu0Gvw2ZbEM5DZ9WrzA9Gp6bOhoqMGFKU8NRHK10Dj5ZsxuDJ3IgR4zy2/qTZi9q8TvDbQ==", + "version": "0.88.1", + "resolved": "https://registry.npmjs.org/carbon-components-svelte/-/carbon-components-svelte-0.88.1.tgz", + "integrity": "sha512-R5bJ4I3eTB1BSOCP/HAH/iNsltiNcKvY8EwNkUluuZD+s2J+D6DVlDOQyaa96UtGW9tJareVUuZE/r6E+4DwQA==", "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { "@ibm/telemetry-js": "^1.5.0", "flatpickr": "4.6.9" } }, "node_modules/carbon-pictograms-svelte": { - "version": "12.14.0", - "resolved": "https://registry.npmjs.org/carbon-pictograms-svelte/-/carbon-pictograms-svelte-12.14.0.tgz", - "integrity": "sha512-A3pAf6GxUp3JgTy0B63Y8fLwCTyZ5bN+d879vOUf2xVktHgWuZeUj6yVrjFrZOPJ9aDydMPuRrQj+0seTf4i4Q==" + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/carbon-pictograms-svelte/-/carbon-pictograms-svelte-13.3.0.tgz", + "integrity": "sha512-xeJOCeQ4YnX/yz0SIVehqpILGjxguiYOnyeg5nc9Xo5qTOWfvXXs8/HHOVJjOGEmURyEzaezrjjUeP0CHobnuw==", + "license": "Apache-2.0" }, "node_modules/carbon-preprocess-svelte": { "version": "0.11.11", "resolved": "https://registry.npmjs.org/carbon-preprocess-svelte/-/carbon-preprocess-svelte-0.11.11.tgz", "integrity": "sha512-F8dZ+evXjmGG/l7gZKHwX5vwJ5CngPFIIWyTsxoBKZqIyCgGZJh83X61q2ZE+jG1vhktZCAd18Z6Yyw1WQMN/Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "estree-walker": "^2.0.2", "magic-string": "^0.30.17", @@ -849,6 +910,7 @@ "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz", "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15", "@types/estree": "^1.0.1", @@ -862,6 +924,7 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" } @@ -871,6 +934,7 @@ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -880,6 +944,7 @@ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", "dev": true, + "license": "MIT", "dependencies": { "mdn-data": "2.0.30", "source-map-js": "^1.0.1" @@ -893,6 +958,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -910,6 +976,7 @@ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -918,7 +985,8 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.1.1.tgz", "integrity": "sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/esbuild": { "version": "0.21.5", @@ -926,6 +994,7 @@ "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -962,18 +1031,21 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.2.tgz", "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/flatpickr": { "version": "4.6.9", "resolved": "https://registry.npmjs.org/flatpickr/-/flatpickr-4.6.9.tgz", - "integrity": "sha512-F0azNNi8foVWKSF+8X+ZJzz8r9sE1G4hl06RyceIaLvyltKvDl6vqk9Lm/6AUUCi5HWaIjiUbk7UpeE/fOXOpw==" + "integrity": "sha512-F0azNNi8foVWKSF+8X+ZJzz8r9sE1G4hl06RyceIaLvyltKvDl6vqk9Lm/6AUUCi5HWaIjiUbk7UpeE/fOXOpw==", + "license": "MIT" }, "node_modules/fsevents": { "version": "2.3.3", @@ -981,6 +1053,7 @@ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -994,6 +1067,7 @@ "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -1004,6 +1078,7 @@ "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.6" } @@ -1013,6 +1088,7 @@ "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -1021,13 +1097,15 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/magic-string": { "version": "0.30.17", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } @@ -1036,13 +1114,15 @@ "version": "2.0.30", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", - "dev": true + "dev": true, + "license": "CC0-1.0" }, "node_modules/mri": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -1052,6 +1132,7 @@ "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } @@ -1060,12 +1141,13 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.9.tgz", - "integrity": "sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "dev": true, "funding": [ { @@ -1073,6 +1155,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -1085,6 +1168,7 @@ "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^3.0.0", @@ -1096,6 +1180,7 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" } @@ -1104,7 +1189,8 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/postcss": { "version": "8.5.3", @@ -1125,6 +1211,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.8", "picocolors": "^1.1.1", @@ -1139,6 +1226,7 @@ "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-7.0.0.tgz", "integrity": "sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA==", "dev": true, + "license": "MIT", "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" }, @@ -1147,10 +1235,11 @@ } }, "node_modules/rollup": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.35.0.tgz", - "integrity": "sha512-kg6oI4g+vc41vePJyO6dHt/yl0Rz3Thv0kJeVQ3D1kS3E5XSuKbPc29G4IpT/Kv1KQwgHVcN+HtyS+HYLNSvQg==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.36.0.tgz", + "integrity": "sha512-zwATAXNQxUcd40zgtQG0ZafcRK4g004WtEl7kbuhTWPvf07PsfohXl39jVUvPF7jvNAIkKPQ2XrsDlWuxBd++Q==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "1.0.6" }, @@ -1162,25 +1251,25 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.35.0", - "@rollup/rollup-android-arm64": "4.35.0", - "@rollup/rollup-darwin-arm64": "4.35.0", - "@rollup/rollup-darwin-x64": "4.35.0", - "@rollup/rollup-freebsd-arm64": "4.35.0", - "@rollup/rollup-freebsd-x64": "4.35.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.35.0", - "@rollup/rollup-linux-arm-musleabihf": "4.35.0", - "@rollup/rollup-linux-arm64-gnu": "4.35.0", - "@rollup/rollup-linux-arm64-musl": "4.35.0", - "@rollup/rollup-linux-loongarch64-gnu": "4.35.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.35.0", - "@rollup/rollup-linux-riscv64-gnu": "4.35.0", - "@rollup/rollup-linux-s390x-gnu": "4.35.0", - "@rollup/rollup-linux-x64-gnu": "4.35.0", - "@rollup/rollup-linux-x64-musl": "4.35.0", - "@rollup/rollup-win32-arm64-msvc": "4.35.0", - "@rollup/rollup-win32-ia32-msvc": "4.35.0", - "@rollup/rollup-win32-x64-msvc": "4.35.0", + "@rollup/rollup-android-arm-eabi": "4.36.0", + "@rollup/rollup-android-arm64": "4.36.0", + "@rollup/rollup-darwin-arm64": "4.36.0", + "@rollup/rollup-darwin-x64": "4.36.0", + "@rollup/rollup-freebsd-arm64": "4.36.0", + "@rollup/rollup-freebsd-x64": "4.36.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.36.0", + "@rollup/rollup-linux-arm-musleabihf": "4.36.0", + "@rollup/rollup-linux-arm64-gnu": "4.36.0", + "@rollup/rollup-linux-arm64-musl": "4.36.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.36.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.36.0", + "@rollup/rollup-linux-riscv64-gnu": "4.36.0", + "@rollup/rollup-linux-s390x-gnu": "4.36.0", + "@rollup/rollup-linux-x64-gnu": "4.36.0", + "@rollup/rollup-linux-x64-musl": "4.36.0", + "@rollup/rollup-win32-arm64-msvc": "4.36.0", + "@rollup/rollup-win32-ia32-msvc": "4.36.0", + "@rollup/rollup-win32-x64-msvc": "4.36.0", "fsevents": "~2.3.2" } }, @@ -1189,6 +1278,7 @@ "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", "dev": true, + "license": "MIT", "dependencies": { "mri": "^1.1.0" }, @@ -1200,13 +1290,15 @@ "version": "2.7.1", "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/sirv": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.1.tgz", "integrity": "sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==", "dev": true, + "license": "MIT", "dependencies": { "@polka/url": "^1.0.0-next.24", "mrmime": "^2.0.0", @@ -1221,6 +1313,7 @@ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -1230,6 +1323,7 @@ "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.19.tgz", "integrity": "sha512-IY1rnGr6izd10B0A8LqsBfmlT5OILVuZ7XsI0vdGPEvuonFV7NYEUK4dAkm9Zg2q0Um92kYjTpS1CAP3Nh/KWw==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.1", "@jridgewell/sourcemap-codec": "^1.4.15", @@ -1255,6 +1349,7 @@ "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.16.0.tgz", "integrity": "sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==", "dev": true, + "license": "ISC", "engines": { "node": "^12.20 || ^14.13.1 || >= 16" }, @@ -1267,6 +1362,7 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" } @@ -1276,6 +1372,7 @@ "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -1285,6 +1382,7 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.14.tgz", "integrity": "sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==", "dev": true, + "license": "MIT", "dependencies": { "esbuild": "^0.21.3", "postcss": "^8.4.43", @@ -1344,6 +1442,7 @@ "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz", "integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==", "dev": true, + "license": "MIT", "peerDependencies": { "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" }, diff --git a/examples/sveltekit/package.json b/examples/sveltekit/package.json index e0c24228..bd65cc43 100644 --- a/examples/sveltekit/package.json +++ b/examples/sveltekit/package.json @@ -7,11 +7,11 @@ "preview": "vite preview" }, "dependencies": { - "carbon-components-svelte": "^0.87.7", - "carbon-pictograms-svelte": "^12.14.0" + "carbon-components-svelte": "^0.88.1", + "carbon-pictograms-svelte": "^13.3.0" }, "devDependencies": { - "@sveltejs/kit": "^2.19.0", + "@sveltejs/kit": "^2.20.1", "@sveltejs/vite-plugin-svelte": "^3.1.2", "carbon-preprocess-svelte": "^0.11.11", "svelte": "^4.2.19", diff --git a/examples/vite/package-lock.json b/examples/vite/package-lock.json index 59b11dd7..98673789 100644 --- a/examples/vite/package-lock.json +++ b/examples/vite/package-lock.json @@ -5,7 +5,7 @@ "packages": { "": { "dependencies": { - "carbon-components-svelte": "^0.87.7" + "carbon-components-svelte": "^0.88.1" }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^3.1.2", @@ -19,6 +19,7 @@ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" @@ -35,6 +36,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "aix" @@ -51,6 +53,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -67,6 +70,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -83,6 +87,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -99,6 +104,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -115,6 +121,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -131,6 +138,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -147,6 +155,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -163,6 +172,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -179,6 +189,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -195,6 +206,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -211,6 +223,7 @@ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -227,6 +240,7 @@ "mips64el" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -243,6 +257,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -259,6 +274,7 @@ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -275,6 +291,7 @@ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -291,6 +308,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -307,6 +325,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" @@ -323,6 +342,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -339,6 +359,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" @@ -355,6 +376,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -371,6 +393,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -387,6 +410,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -399,6 +423,7 @@ "version": "1.9.1", "resolved": "https://registry.npmjs.org/@ibm/telemetry-js/-/telemetry-js-1.9.1.tgz", "integrity": "sha512-qq8RPafUJHUQieXVCte1kbJEx6JctWzbA/YkXzopbfzIDRT2+hbR9QmgH+KH7bDDNRcDbdHWvHfwJKzThlMtPg==", + "license": "Apache-2.0", "bin": { "ibmtelemetry": "dist/collect.js" } @@ -408,6 +433,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -422,6 +448,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -431,6 +458,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -439,260 +467,281 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.35.0.tgz", - "integrity": "sha512-uYQ2WfPaqz5QtVgMxfN6NpLD+no0MYHDBywl7itPYd3K5TjjSghNKmX8ic9S8NU8w81NVhJv/XojcHptRly7qQ==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.36.0.tgz", + "integrity": "sha512-jgrXjjcEwN6XpZXL0HUeOVGfjXhPyxAbbhD0BlXUB+abTOpbPiN5Wb3kOT7yb+uEtATNYF5x5gIfwutmuBA26w==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.35.0.tgz", - "integrity": "sha512-FtKddj9XZudurLhdJnBl9fl6BwCJ3ky8riCXjEw3/UIbjmIY58ppWwPEvU3fNu+W7FUsAsB1CdH+7EQE6CXAPA==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.36.0.tgz", + "integrity": "sha512-NyfuLvdPdNUfUNeYKUwPwKsE5SXa2J6bCt2LdB/N+AxShnkpiczi3tcLJrm5mA+eqpy0HmaIY9F6XCa32N5yzg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.35.0.tgz", - "integrity": "sha512-Uk+GjOJR6CY844/q6r5DR/6lkPFOw0hjfOIzVx22THJXMxktXG6CbejseJFznU8vHcEBLpiXKY3/6xc+cBm65Q==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.36.0.tgz", + "integrity": "sha512-JQ1Jk5G4bGrD4pWJQzWsD8I1n1mgPXq33+/vP4sk8j/z/C2siRuxZtaUA7yMTf71TCZTZl/4e1bfzwUmFb3+rw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.35.0.tgz", - "integrity": "sha512-3IrHjfAS6Vkp+5bISNQnPogRAW5GAV1n+bNCrDwXmfMHbPl5EhTmWtfmwlJxFRUCBZ+tZ/OxDyU08aF6NI/N5Q==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.36.0.tgz", + "integrity": "sha512-6c6wMZa1lrtiRsbDziCmjE53YbTkxMYhhnWnSW8R/yqsM7a6mSJ3uAVT0t8Y/DGt7gxUWYuFM4bwWk9XCJrFKA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.35.0.tgz", - "integrity": "sha512-sxjoD/6F9cDLSELuLNnY0fOrM9WA0KrM0vWm57XhrIMf5FGiN8D0l7fn+bpUeBSU7dCgPV2oX4zHAsAXyHFGcQ==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.36.0.tgz", + "integrity": "sha512-KXVsijKeJXOl8QzXTsA+sHVDsFOmMCdBRgFmBb+mfEb/7geR7+C8ypAml4fquUt14ZyVXaw2o1FWhqAfOvA4sg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.35.0.tgz", - "integrity": "sha512-2mpHCeRuD1u/2kruUiHSsnjWtHjqVbzhBkNVQ1aVD63CcexKVcQGwJ2g5VphOd84GvxfSvnnlEyBtQCE5hxVVw==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.36.0.tgz", + "integrity": "sha512-dVeWq1ebbvByI+ndz4IJcD4a09RJgRYmLccwlQ8bPd4olz3Y213uf1iwvc7ZaxNn2ab7bjc08PrtBgMu6nb4pQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.35.0.tgz", - "integrity": "sha512-mrA0v3QMy6ZSvEuLs0dMxcO2LnaCONs1Z73GUDBHWbY8tFFocM6yl7YyMu7rz4zS81NDSqhrUuolyZXGi8TEqg==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.36.0.tgz", + "integrity": "sha512-bvXVU42mOVcF4le6XSjscdXjqx8okv4n5vmwgzcmtvFdifQ5U4dXFYaCB87namDRKlUL9ybVtLQ9ztnawaSzvg==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.35.0.tgz", - "integrity": "sha512-DnYhhzcvTAKNexIql8pFajr0PiDGrIsBYPRvCKlA5ixSS3uwo/CWNZxB09jhIapEIg945KOzcYEAGGSmTSpk7A==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.36.0.tgz", + "integrity": "sha512-JFIQrDJYrxOnyDQGYkqnNBtjDwTgbasdbUiQvcU8JmGDfValfH1lNpng+4FWlhaVIR4KPkeddYjsVVbmJYvDcg==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.35.0.tgz", - "integrity": "sha512-uagpnH2M2g2b5iLsCTZ35CL1FgyuzzJQ8L9VtlJ+FckBXroTwNOaD0z0/UF+k5K3aNQjbm8LIVpxykUOQt1m/A==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.36.0.tgz", + "integrity": "sha512-KqjYVh3oM1bj//5X7k79PSCZ6CvaVzb7Qs7VMWS+SlWB5M8p3FqufLP9VNp4CazJ0CsPDLwVD9r3vX7Ci4J56A==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.35.0.tgz", - "integrity": "sha512-XQxVOCd6VJeHQA/7YcqyV0/88N6ysSVzRjJ9I9UA/xXpEsjvAgDTgH3wQYz5bmr7SPtVK2TsP2fQ2N9L4ukoUg==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.36.0.tgz", + "integrity": "sha512-QiGnhScND+mAAtfHqeT+cB1S9yFnNQ/EwCg5yE3MzoaZZnIV0RV9O5alJAoJKX/sBONVKeZdMfO8QSaWEygMhw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.35.0.tgz", - "integrity": "sha512-5pMT5PzfgwcXEwOaSrqVsz/LvjDZt+vQ8RT/70yhPU06PTuq8WaHhfT1LW+cdD7mW6i/J5/XIkX/1tCAkh1W6g==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.36.0.tgz", + "integrity": "sha512-1ZPyEDWF8phd4FQtTzMh8FQwqzvIjLsl6/84gzUxnMNFBtExBtpL51H67mV9xipuxl1AEAerRBgBwFNpkw8+Lg==", "cpu": [ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.35.0.tgz", - "integrity": "sha512-c+zkcvbhbXF98f4CtEIP1EBA/lCic5xB0lToneZYvMeKu5Kamq3O8gqrxiYYLzlZH6E3Aq+TSW86E4ay8iD8EA==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.36.0.tgz", + "integrity": "sha512-VMPMEIUpPFKpPI9GZMhJrtu8rxnp6mJR3ZzQPykq4xc2GmdHj3Q4cA+7avMyegXy4n1v+Qynr9fR88BmyO74tg==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.35.0.tgz", - "integrity": "sha512-s91fuAHdOwH/Tad2tzTtPX7UZyytHIRR6V4+2IGlV0Cej5rkG0R61SX4l4y9sh0JBibMiploZx3oHKPnQBKe4g==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.36.0.tgz", + "integrity": "sha512-ttE6ayb/kHwNRJGYLpuAvB7SMtOeQnVXEIpMtAvx3kepFQeowVED0n1K9nAdraHUPJ5hydEMxBpIR7o4nrm8uA==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.35.0.tgz", - "integrity": "sha512-hQRkPQPLYJZYGP+Hj4fR9dDBMIM7zrzJDWFEMPdTnTy95Ljnv0/4w/ixFw3pTBMEuuEuoqtBINYND4M7ujcuQw==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.36.0.tgz", + "integrity": "sha512-4a5gf2jpS0AIe7uBjxDeUMNcFmaRTbNv7NxI5xOCs4lhzsVyGR/0qBXduPnoWf6dGC365saTiwag8hP1imTgag==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.35.0.tgz", - "integrity": "sha512-Pim1T8rXOri+0HmV4CdKSGrqcBWX0d1HoPnQ0uw0bdp1aP5SdQVNBy8LjYncvnLgu3fnnCt17xjWGd4cqh8/hA==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.36.0.tgz", + "integrity": "sha512-5KtoW8UWmwFKQ96aQL3LlRXX16IMwyzMq/jSSVIIyAANiE1doaQsx/KRyhAvpHlPjPiSU/AYX/8m+lQ9VToxFQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.35.0.tgz", - "integrity": "sha512-QysqXzYiDvQWfUiTm8XmJNO2zm9yC9P/2Gkrwg2dH9cxotQzunBHYr6jk4SujCTqnfGxduOmQcI7c2ryuW8XVg==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.36.0.tgz", + "integrity": "sha512-sycrYZPrv2ag4OCvaN5js+f01eoZ2U+RmT5as8vhxiFz+kxwlHrsxOwKPSA8WyS+Wc6Epid9QeI/IkQ9NkgYyQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.35.0.tgz", - "integrity": "sha512-OUOlGqPkVJCdJETKOCEf1mw848ZyJ5w50/rZ/3IBQVdLfR5jk/6Sr5m3iO2tdPgwo0x7VcncYuOvMhBWZq8ayg==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.36.0.tgz", + "integrity": "sha512-qbqt4N7tokFwwSVlWDsjfoHgviS3n/vZ8LK0h1uLG9TYIRuUTJC88E1xb3LM2iqZ/WTqNQjYrtmtGmrmmawB6A==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.35.0.tgz", - "integrity": "sha512-2/lsgejMrtwQe44glq7AFFHLfJBPafpsTa6JvP2NGef/ifOa4KBoglVf7AKN7EV9o32evBPRqfg96fEHzWo5kw==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.36.0.tgz", + "integrity": "sha512-t+RY0JuRamIocMuQcfwYSOkmdX9dtkr1PbhKW42AMvaDQa+jOdpUYysroTF/nuPpAaQMWp7ye+ndlmmthieJrQ==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.35.0.tgz", - "integrity": "sha512-PIQeY5XDkrOysbQblSW7v3l1MDZzkTEzAfTPkj5VAu3FW8fS4ynyLg2sINp0fp3SjZ8xkRYpLqoKcYqAkhU1dw==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.36.0.tgz", + "integrity": "sha512-aRXd7tRZkWLqGbChgcMMDEHjOKudo1kChb1Jt1IfR8cY/KIpgNviLeJy5FUb9IpSuQj8dU2fAYNMPW/hLKOSTw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -703,6 +752,7 @@ "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.1.2.tgz", "integrity": "sha512-Txsm1tJvtiYeLUVRNqxZGKR/mI+CzuIQuc2gn+YCs9rMTowpNZ2Nqt53JdL8KF9bLhAf2ruR/dr9eZCwdTriRA==", "dev": true, + "license": "MIT", "dependencies": { "@sveltejs/vite-plugin-svelte-inspector": "^2.1.0", "debug": "^4.3.4", @@ -725,6 +775,7 @@ "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-2.1.0.tgz", "integrity": "sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.3.4" }, @@ -741,13 +792,15 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/acorn": { "version": "8.14.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -760,6 +813,7 @@ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">= 0.4" } @@ -769,15 +823,17 @@ "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">= 0.4" } }, "node_modules/carbon-components-svelte": { - "version": "0.87.7", - "resolved": "https://registry.npmjs.org/carbon-components-svelte/-/carbon-components-svelte-0.87.7.tgz", - "integrity": "sha512-c9CJdZZZIzqEm7gaJu0Gvw2ZbEM5DZ9WrzA9Gp6bOhoqMGFKU8NRHK10Dj5ZsxuDJ3IgR4zy2/qTZi9q8TvDbQ==", + "version": "0.88.1", + "resolved": "https://registry.npmjs.org/carbon-components-svelte/-/carbon-components-svelte-0.88.1.tgz", + "integrity": "sha512-R5bJ4I3eTB1BSOCP/HAH/iNsltiNcKvY8EwNkUluuZD+s2J+D6DVlDOQyaa96UtGW9tJareVUuZE/r6E+4DwQA==", "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { "@ibm/telemetry-js": "^1.5.0", "flatpickr": "4.6.9" @@ -788,6 +844,7 @@ "resolved": "https://registry.npmjs.org/carbon-preprocess-svelte/-/carbon-preprocess-svelte-0.11.11.tgz", "integrity": "sha512-F8dZ+evXjmGG/l7gZKHwX5vwJ5CngPFIIWyTsxoBKZqIyCgGZJh83X61q2ZE+jG1vhktZCAd18Z6Yyw1WQMN/Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "estree-walker": "^2.0.2", "magic-string": "^0.30.17", @@ -800,6 +857,7 @@ "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz", "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15", "@types/estree": "^1.0.1", @@ -813,6 +871,7 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" } @@ -822,6 +881,7 @@ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", "dev": true, + "license": "MIT", "dependencies": { "mdn-data": "2.0.30", "source-map-js": "^1.0.1" @@ -835,6 +895,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -852,6 +913,7 @@ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -862,6 +924,7 @@ "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -898,12 +961,14 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/flatpickr": { "version": "4.6.9", "resolved": "https://registry.npmjs.org/flatpickr/-/flatpickr-4.6.9.tgz", - "integrity": "sha512-F0azNNi8foVWKSF+8X+ZJzz8r9sE1G4hl06RyceIaLvyltKvDl6vqk9Lm/6AUUCi5HWaIjiUbk7UpeE/fOXOpw==" + "integrity": "sha512-F0azNNi8foVWKSF+8X+ZJzz8r9sE1G4hl06RyceIaLvyltKvDl6vqk9Lm/6AUUCi5HWaIjiUbk7UpeE/fOXOpw==", + "license": "MIT" }, "node_modules/fsevents": { "version": "2.3.3", @@ -911,6 +976,7 @@ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -924,6 +990,7 @@ "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.6" } @@ -933,6 +1000,7 @@ "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -941,13 +1009,15 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/magic-string": { "version": "0.30.17", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } @@ -956,18 +1026,20 @@ "version": "2.0.30", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", - "dev": true + "dev": true, + "license": "CC0-1.0" }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.9.tgz", - "integrity": "sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "dev": true, "funding": [ { @@ -975,6 +1047,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -987,6 +1060,7 @@ "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^3.0.0", @@ -998,6 +1072,7 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" } @@ -1006,7 +1081,8 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/postcss": { "version": "8.5.3", @@ -1027,6 +1103,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.8", "picocolors": "^1.1.1", @@ -1041,6 +1118,7 @@ "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-7.0.0.tgz", "integrity": "sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA==", "dev": true, + "license": "MIT", "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" }, @@ -1049,10 +1127,11 @@ } }, "node_modules/rollup": { - "version": "4.35.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.35.0.tgz", - "integrity": "sha512-kg6oI4g+vc41vePJyO6dHt/yl0Rz3Thv0kJeVQ3D1kS3E5XSuKbPc29G4IpT/Kv1KQwgHVcN+HtyS+HYLNSvQg==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.36.0.tgz", + "integrity": "sha512-zwATAXNQxUcd40zgtQG0ZafcRK4g004WtEl7kbuhTWPvf07PsfohXl39jVUvPF7jvNAIkKPQ2XrsDlWuxBd++Q==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "1.0.6" }, @@ -1064,25 +1143,25 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.35.0", - "@rollup/rollup-android-arm64": "4.35.0", - "@rollup/rollup-darwin-arm64": "4.35.0", - "@rollup/rollup-darwin-x64": "4.35.0", - "@rollup/rollup-freebsd-arm64": "4.35.0", - "@rollup/rollup-freebsd-x64": "4.35.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.35.0", - "@rollup/rollup-linux-arm-musleabihf": "4.35.0", - "@rollup/rollup-linux-arm64-gnu": "4.35.0", - "@rollup/rollup-linux-arm64-musl": "4.35.0", - "@rollup/rollup-linux-loongarch64-gnu": "4.35.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.35.0", - "@rollup/rollup-linux-riscv64-gnu": "4.35.0", - "@rollup/rollup-linux-s390x-gnu": "4.35.0", - "@rollup/rollup-linux-x64-gnu": "4.35.0", - "@rollup/rollup-linux-x64-musl": "4.35.0", - "@rollup/rollup-win32-arm64-msvc": "4.35.0", - "@rollup/rollup-win32-ia32-msvc": "4.35.0", - "@rollup/rollup-win32-x64-msvc": "4.35.0", + "@rollup/rollup-android-arm-eabi": "4.36.0", + "@rollup/rollup-android-arm64": "4.36.0", + "@rollup/rollup-darwin-arm64": "4.36.0", + "@rollup/rollup-darwin-x64": "4.36.0", + "@rollup/rollup-freebsd-arm64": "4.36.0", + "@rollup/rollup-freebsd-x64": "4.36.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.36.0", + "@rollup/rollup-linux-arm-musleabihf": "4.36.0", + "@rollup/rollup-linux-arm64-gnu": "4.36.0", + "@rollup/rollup-linux-arm64-musl": "4.36.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.36.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.36.0", + "@rollup/rollup-linux-riscv64-gnu": "4.36.0", + "@rollup/rollup-linux-s390x-gnu": "4.36.0", + "@rollup/rollup-linux-x64-gnu": "4.36.0", + "@rollup/rollup-linux-x64-musl": "4.36.0", + "@rollup/rollup-win32-arm64-msvc": "4.36.0", + "@rollup/rollup-win32-ia32-msvc": "4.36.0", + "@rollup/rollup-win32-x64-msvc": "4.36.0", "fsevents": "~2.3.2" } }, @@ -1091,6 +1170,7 @@ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -1100,6 +1180,7 @@ "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.19.tgz", "integrity": "sha512-IY1rnGr6izd10B0A8LqsBfmlT5OILVuZ7XsI0vdGPEvuonFV7NYEUK4dAkm9Zg2q0Um92kYjTpS1CAP3Nh/KWw==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.1", "@jridgewell/sourcemap-codec": "^1.4.15", @@ -1125,6 +1206,7 @@ "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.16.0.tgz", "integrity": "sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==", "dev": true, + "license": "ISC", "engines": { "node": "^12.20 || ^14.13.1 || >= 16" }, @@ -1137,6 +1219,7 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" } @@ -1146,6 +1229,7 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.14.tgz", "integrity": "sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==", "dev": true, + "license": "MIT", "dependencies": { "esbuild": "^0.21.3", "postcss": "^8.4.43", @@ -1205,6 +1289,7 @@ "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz", "integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==", "dev": true, + "license": "MIT", "peerDependencies": { "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" }, diff --git a/examples/vite/package.json b/examples/vite/package.json index 5489fac4..e444c996 100644 --- a/examples/vite/package.json +++ b/examples/vite/package.json @@ -6,7 +6,7 @@ "build": "vite build" }, "dependencies": { - "carbon-components-svelte": "^0.87.7" + "carbon-components-svelte": "^0.88.1" }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^3.1.2", diff --git a/examples/webpack/package-lock.json b/examples/webpack/package-lock.json index 2eb19b7d..356791de 100644 --- a/examples/webpack/package-lock.json +++ b/examples/webpack/package-lock.json @@ -5,7 +5,7 @@ "packages": { "": { "dependencies": { - "carbon-components-svelte": "^0.87.7" + "carbon-components-svelte": "^0.88.1" }, "devDependencies": { "carbon-preprocess-svelte": "^0.11.11", @@ -24,6 +24,7 @@ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" @@ -37,6 +38,7 @@ "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" } @@ -45,6 +47,7 @@ "version": "1.9.1", "resolved": "https://registry.npmjs.org/@ibm/telemetry-js/-/telemetry-js-1.9.1.tgz", "integrity": "sha512-qq8RPafUJHUQieXVCte1kbJEx6JctWzbA/YkXzopbfzIDRT2+hbR9QmgH+KH7bDDNRcDbdHWvHfwJKzThlMtPg==", + "license": "Apache-2.0", "bin": { "ibmtelemetry": "dist/collect.js" } @@ -54,6 +57,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -68,6 +72,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -77,6 +82,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -86,6 +92,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" @@ -95,13 +102,15 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -112,6 +121,7 @@ "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10.0" }, @@ -128,6 +138,7 @@ "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.2.0.tgz", "integrity": "sha512-io1zEbbYcElht3tdlqEOFxZ0dMTYrHz9iMf0gqn1pPjZFTCgM5R4R5IMA20Chb2UPYYsxjzs8CgZ7Nb5n2K2rA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@jsonjoy.com/base64": "^1.1.1", "@jsonjoy.com/util": "^1.1.2", @@ -150,6 +161,7 @@ "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.5.0.tgz", "integrity": "sha512-ojoNsrIuPI9g6o8UxhraZQSyF2ByJanAY4cTFbc8Mf2AXEF4aQRGY1dJxyJpuyav8r9FGflEt/Ff3u5Nt6YMPA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10.0" }, @@ -165,13 +177,15 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/body-parser": { "version": "1.19.5", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "dev": true, + "license": "MIT", "dependencies": { "@types/connect": "*", "@types/node": "*" @@ -182,6 +196,7 @@ "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -191,6 +206,7 @@ "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -200,6 +216,7 @@ "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", "dev": true, + "license": "MIT", "dependencies": { "@types/express-serve-static-core": "*", "@types/node": "*" @@ -210,6 +227,7 @@ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -220,6 +238,7 @@ "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "dev": true, + "license": "MIT", "dependencies": { "@types/eslint": "*", "@types/estree": "*" @@ -229,13 +248,15 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/express": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", @@ -248,6 +269,7 @@ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.6.tgz", "integrity": "sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -260,6 +282,7 @@ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -271,19 +294,22 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/http-errors": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/http-proxy": { "version": "1.17.16", "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.16.tgz", "integrity": "sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -292,19 +318,22 @@ "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/mime": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { "version": "22.13.10", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.10.tgz", "integrity": "sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==", "dev": true, + "license": "MIT", "dependencies": { "undici-types": "~6.20.0" } @@ -314,6 +343,7 @@ "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -322,25 +352,29 @@ "version": "6.9.18", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.18.tgz", "integrity": "sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/range-parser": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/retry": { "version": "0.12.2", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/send": { "version": "0.17.4", "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", "dev": true, + "license": "MIT", "dependencies": { "@types/mime": "^1", "@types/node": "*" @@ -351,6 +385,7 @@ "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", "dev": true, + "license": "MIT", "dependencies": { "@types/express": "*" } @@ -360,6 +395,7 @@ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", "dev": true, + "license": "MIT", "dependencies": { "@types/http-errors": "*", "@types/node": "*", @@ -371,6 +407,7 @@ "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -380,6 +417,7 @@ "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.0.tgz", "integrity": "sha512-8svvI3hMyvN0kKCJMvTJP/x6Y/EoQbepff882wL+Sn5QsXb3etnamgrJq4isrBxSJj5L2AuXcI0+bgkoAXGUJw==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -389,6 +427,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/helper-numbers": "1.13.2", "@webassemblyjs/helper-wasm-bytecode": "1.13.2" @@ -398,25 +437,29 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.13.2", "@webassemblyjs/helper-api-error": "1.13.2", @@ -427,13 +470,15 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -446,6 +491,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", "dev": true, + "license": "MIT", "dependencies": { "@xtuc/ieee754": "^1.2.0" } @@ -455,6 +501,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@xtuc/long": "4.2.2" } @@ -463,13 +510,15 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -486,6 +535,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-wasm-bytecode": "1.13.2", @@ -499,6 +549,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -511,6 +562,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-api-error": "1.13.2", @@ -525,6 +577,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@xtuc/long": "4.2.2" @@ -535,6 +588,7 @@ "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.15.0" }, @@ -548,6 +602,7 @@ "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.15.0" }, @@ -561,6 +616,7 @@ "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.15.0" }, @@ -578,19 +634,22 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, + "license": "MIT", "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -604,6 +663,7 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -613,6 +673,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -625,6 +686,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -641,6 +703,7 @@ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^8.0.0" }, @@ -658,6 +721,7 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -673,6 +737,7 @@ "engines": [ "node >= 0.8.0" ], + "license": "Apache-2.0", "bin": { "ansi-html": "bin/ansi-html" } @@ -682,6 +747,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -691,6 +757,7 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -704,6 +771,7 @@ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">= 0.4" } @@ -712,13 +780,15 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/axobject-query": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">= 0.4" } @@ -727,13 +797,15 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } @@ -743,6 +815,7 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -755,6 +828,7 @@ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dev": true, + "license": "MIT", "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.5", @@ -779,6 +853,7 @@ "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", "multicast-dns": "^7.2.5" @@ -788,13 +863,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/braces": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -821,6 +898,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "caniuse-lite": "^1.0.30001688", "electron-to-chromium": "^1.5.73", @@ -838,13 +916,15 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/bundle-name": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", "dev": true, + "license": "MIT", "dependencies": { "run-applescript": "^7.0.0" }, @@ -860,6 +940,7 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -869,6 +950,7 @@ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" @@ -882,6 +964,7 @@ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" @@ -898,15 +981,16 @@ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", "dev": true, + "license": "MIT", "dependencies": { "pascal-case": "^3.1.2", "tslib": "^2.0.3" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001703", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001703.tgz", - "integrity": "sha512-kRlAGTRWgPsOj7oARC9m1okJEXdL/8fekFVcxA8Hl7GH4r/sN4OJn/i6Flde373T50KS7Y37oFbMwlE8+F42kQ==", + "version": "1.0.30001706", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001706.tgz", + "integrity": "sha512-3ZczoTApMAZwPKYWmwVbQMFpXBDds3/0VciVoUwPUbldlYyVLmRVuRs/PcUZtHpbLRpzzDvrvnFuREsGt6lUug==", "dev": true, "funding": [ { @@ -921,13 +1005,15 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/carbon-components-svelte": { - "version": "0.87.7", - "resolved": "https://registry.npmjs.org/carbon-components-svelte/-/carbon-components-svelte-0.87.7.tgz", - "integrity": "sha512-c9CJdZZZIzqEm7gaJu0Gvw2ZbEM5DZ9WrzA9Gp6bOhoqMGFKU8NRHK10Dj5ZsxuDJ3IgR4zy2/qTZi9q8TvDbQ==", + "version": "0.88.1", + "resolved": "https://registry.npmjs.org/carbon-components-svelte/-/carbon-components-svelte-0.88.1.tgz", + "integrity": "sha512-R5bJ4I3eTB1BSOCP/HAH/iNsltiNcKvY8EwNkUluuZD+s2J+D6DVlDOQyaa96UtGW9tJareVUuZE/r6E+4DwQA==", "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { "@ibm/telemetry-js": "^1.5.0", "flatpickr": "4.6.9" @@ -938,6 +1024,7 @@ "resolved": "https://registry.npmjs.org/carbon-preprocess-svelte/-/carbon-preprocess-svelte-0.11.11.tgz", "integrity": "sha512-F8dZ+evXjmGG/l7gZKHwX5vwJ5CngPFIIWyTsxoBKZqIyCgGZJh83X61q2ZE+jG1vhktZCAd18Z6Yyw1WQMN/Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "estree-walker": "^2.0.2", "magic-string": "^0.30.17", @@ -950,6 +1037,7 @@ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -974,6 +1062,7 @@ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0" } @@ -983,6 +1072,7 @@ "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", "dev": true, + "license": "MIT", "dependencies": { "source-map": "~0.6.0" }, @@ -995,6 +1085,7 @@ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, + "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", @@ -1009,6 +1100,7 @@ "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz", "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15", "@types/estree": "^1.0.1", @@ -1022,6 +1114,7 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" } @@ -1030,13 +1123,15 @@ "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/commander": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true, + "license": "MIT", "engines": { "node": ">= 12" } @@ -1046,6 +1141,7 @@ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": ">= 1.43.0 < 2" }, @@ -1058,6 +1154,7 @@ "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.0.tgz", "integrity": "sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==", "dev": true, + "license": "MIT", "dependencies": { "bytes": "3.1.2", "compressible": "~2.0.18", @@ -1076,6 +1173,7 @@ "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8" } @@ -1085,6 +1183,7 @@ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "5.2.1" }, @@ -1097,6 +1196,7 @@ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -1106,6 +1206,7 @@ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -1114,19 +1215,22 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -1141,6 +1245,7 @@ "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", "dev": true, + "license": "MIT", "dependencies": { "icss-utils": "^5.1.0", "postcss": "^8.4.33", @@ -1176,6 +1281,7 @@ "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.0.1", @@ -1192,6 +1298,7 @@ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", "dev": true, + "license": "MIT", "dependencies": { "mdn-data": "2.0.30", "source-map-js": "^1.0.1" @@ -1205,6 +1312,7 @@ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">= 6" }, @@ -1217,6 +1325,7 @@ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, + "license": "MIT", "bin": { "cssesc": "bin/cssesc" }, @@ -1229,6 +1338,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -1238,6 +1348,7 @@ "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", "dev": true, + "license": "MIT", "dependencies": { "bundle-name": "^4.1.0", "default-browser-id": "^5.0.0" @@ -1254,6 +1365,7 @@ "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -1266,6 +1378,7 @@ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -1278,6 +1391,7 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -1287,6 +1401,7 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" @@ -1296,13 +1411,15 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/dns-packet": { "version": "5.6.1", "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", "dev": true, + "license": "MIT", "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" }, @@ -1315,6 +1432,7 @@ "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", "dev": true, + "license": "MIT", "dependencies": { "utila": "~0.4" } @@ -1324,6 +1442,7 @@ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", "dev": true, + "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.2.0", @@ -1343,13 +1462,15 @@ "type": "github", "url": "https://github.com/sponsors/fb55" } - ] + ], + "license": "BSD-2-Clause" }, "node_modules/domhandler": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.2.0" }, @@ -1365,6 +1486,7 @@ "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^1.0.1", "domelementtype": "^2.2.0", @@ -1379,6 +1501,7 @@ "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", "dev": true, + "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -1389,6 +1512,7 @@ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "dev": true, + "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", @@ -1402,19 +1526,22 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.113", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.113.tgz", - "integrity": "sha512-wjT2O4hX+wdWPJ76gWSkMhcHAV2PTMX+QetUCPYEdCIe+cxmgzzSSiGRCKW8nuh4mwKZlpv0xvoW7OF2X+wmHg==", - "dev": true + "version": "1.5.120", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.120.tgz", + "integrity": "sha512-oTUp3gfX1gZI+xfD2djr2rzQdHCwHzPQrrK0CD7WpTdF0nPdQ/INcRVjWgLdCT4a9W3jFObR9DAfsuyFQnI8CQ==", + "dev": true, + "license": "ISC" }, "node_modules/emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -1424,6 +1551,7 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -1433,6 +1561,7 @@ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -1446,6 +1575,7 @@ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true, + "license": "BSD-2-Clause", "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } @@ -1455,6 +1585,7 @@ "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.14.0.tgz", "integrity": "sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==", "dev": true, + "license": "MIT", "bin": { "envinfo": "dist/cli.js" }, @@ -1467,6 +1598,7 @@ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -1476,6 +1608,7 @@ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -1484,13 +1617,15 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/es-object-atoms": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0" }, @@ -1503,6 +1638,7 @@ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -1511,13 +1647,15 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -1531,6 +1669,7 @@ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -1543,6 +1682,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -1552,6 +1692,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -1560,13 +1701,15 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -1575,13 +1718,15 @@ "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.x" } @@ -1591,6 +1736,7 @@ "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -1636,7 +1782,8 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-uri": { "version": "3.0.6", @@ -1652,13 +1799,15 @@ "type": "opencollective", "url": "https://opencollective.com/fastify" } - ] + ], + "license": "BSD-3-Clause" }, "node_modules/fastest-levenshtein": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4.9.1" } @@ -1668,6 +1817,7 @@ "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dev": true, + "license": "Apache-2.0", "dependencies": { "websocket-driver": ">=0.5.1" }, @@ -1680,6 +1830,7 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -1692,6 +1843,7 @@ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~2.0.0", @@ -1710,6 +1862,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -1723,6 +1876,7 @@ "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, + "license": "BSD-3-Clause", "bin": { "flat": "cli.js" } @@ -1730,7 +1884,8 @@ "node_modules/flatpickr": { "version": "4.6.9", "resolved": "https://registry.npmjs.org/flatpickr/-/flatpickr-4.6.9.tgz", - "integrity": "sha512-F0azNNi8foVWKSF+8X+ZJzz8r9sE1G4hl06RyceIaLvyltKvDl6vqk9Lm/6AUUCi5HWaIjiUbk7UpeE/fOXOpw==" + "integrity": "sha512-F0azNNi8foVWKSF+8X+ZJzz8r9sE1G4hl06RyceIaLvyltKvDl6vqk9Lm/6AUUCi5HWaIjiUbk7UpeE/fOXOpw==", + "license": "MIT" }, "node_modules/follow-redirects": { "version": "1.15.9", @@ -1743,6 +1898,7 @@ "url": "https://github.com/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -1757,6 +1913,7 @@ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -1766,6 +1923,7 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -1776,6 +1934,7 @@ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -1789,6 +1948,7 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -1798,6 +1958,7 @@ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", @@ -1822,6 +1983,7 @@ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "dev": true, + "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" @@ -1835,6 +1997,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -1846,13 +2009,15 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -1864,19 +2029,22 @@ "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1886,6 +2054,7 @@ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -1898,6 +2067,7 @@ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -1910,6 +2080,7 @@ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, + "license": "MIT", "bin": { "he": "bin/he" } @@ -1919,6 +2090,7 @@ "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "obuf": "^1.0.0", @@ -1931,6 +2103,7 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -1945,13 +2118,15 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/hpack.js/node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } @@ -1961,6 +2136,7 @@ "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", "dev": true, + "license": "MIT", "dependencies": { "camel-case": "^4.1.2", "clean-css": "^5.2.2", @@ -1982,6 +2158,7 @@ "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.3.tgz", "integrity": "sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg==", "dev": true, + "license": "MIT", "dependencies": { "@types/html-minifier-terser": "^6.0.0", "html-minifier-terser": "^6.0.2", @@ -2021,6 +2198,7 @@ "url": "https://github.com/sponsors/fb55" } ], + "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.0.0", @@ -2032,13 +2210,15 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, + "license": "MIT", "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -2054,13 +2234,15 @@ "version": "0.5.9", "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.9.tgz", "integrity": "sha512-n1XsPy3rXVxlqxVioEWdC+0+M+SQw0DpJynwtOPo1X+ZlvdzTLtDBIJJlDQTnwZIFJrZSzSGmIOUdP8tu+SgLw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/http-proxy": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, + "license": "MIT", "dependencies": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", @@ -2075,6 +2257,7 @@ "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz", "integrity": "sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==", "dev": true, + "license": "MIT", "dependencies": { "@types/http-proxy": "^1.17.8", "http-proxy": "^1.18.1", @@ -2099,6 +2282,7 @@ "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.18" } @@ -2108,6 +2292,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -2120,6 +2305,7 @@ "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true, + "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -2132,6 +2318,7 @@ "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, + "license": "MIT", "dependencies": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" @@ -2150,13 +2337,15 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/interpret": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.13.0" } @@ -2166,6 +2355,7 @@ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10" } @@ -2175,6 +2365,7 @@ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, + "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -2187,6 +2378,7 @@ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, + "license": "MIT", "dependencies": { "hasown": "^2.0.2" }, @@ -2202,6 +2394,7 @@ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", "dev": true, + "license": "MIT", "bin": { "is-docker": "cli.js" }, @@ -2217,6 +2410,7 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -2226,6 +2420,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -2238,6 +2433,7 @@ "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", "dev": true, + "license": "MIT", "dependencies": { "is-docker": "^3.0.0" }, @@ -2256,6 +2452,7 @@ "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz", "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==", "dev": true, + "license": "MIT", "engines": { "node": ">=16" }, @@ -2268,6 +2465,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -2277,6 +2475,7 @@ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -2289,6 +2488,7 @@ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, + "license": "MIT", "dependencies": { "isobject": "^3.0.1" }, @@ -2301,6 +2501,7 @@ "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.6" } @@ -2310,6 +2511,7 @@ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", "dev": true, + "license": "MIT", "dependencies": { "is-inside-container": "^1.0.0" }, @@ -2324,19 +2526,22 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -2346,6 +2551,7 @@ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -2359,19 +2565,22 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, + "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -2384,6 +2593,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -2393,6 +2603,7 @@ "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.10.0.tgz", "integrity": "sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA==", "dev": true, + "license": "MIT", "dependencies": { "picocolors": "^1.0.0", "shell-quote": "^1.8.1" @@ -2403,6 +2614,7 @@ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.11.5" } @@ -2412,6 +2624,7 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, + "license": "MIT", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -2425,13 +2638,15 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -2443,13 +2658,15 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lower-case": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.3" } @@ -2459,6 +2676,7 @@ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } @@ -2468,6 +2686,7 @@ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -2476,13 +2695,15 @@ "version": "2.0.30", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", - "dev": true + "dev": true, + "license": "CC0-1.0" }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -2492,6 +2713,7 @@ "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.17.0.tgz", "integrity": "sha512-4eirfZ7thblFmqFjywlTmuWVSvccHAJbn1r8qQLzmTO11qcqpohOjmY2mFce6x7x7WtskzRqApPD0hv+Oa74jg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@jsonjoy.com/json-pack": "^1.0.3", "@jsonjoy.com/util": "^1.3.0", @@ -2511,6 +2733,7 @@ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/sindresorhus" } @@ -2519,13 +2742,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -2535,6 +2760,7 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -2548,6 +2774,7 @@ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, + "license": "MIT", "bin": { "mime": "cli.js" }, @@ -2560,6 +2787,7 @@ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -2569,6 +2797,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -2581,6 +2810,7 @@ "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.2.tgz", "integrity": "sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==", "dev": true, + "license": "MIT", "dependencies": { "schema-utils": "^4.0.0", "tapable": "^2.2.1" @@ -2600,19 +2830,22 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/multicast-dns": { "version": "7.2.5", "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", "dev": true, + "license": "MIT", "dependencies": { "dns-packet": "^5.2.2", "thunky": "^1.0.2" @@ -2622,9 +2855,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.9.tgz", - "integrity": "sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "dev": true, "funding": [ { @@ -2632,6 +2865,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -2644,6 +2878,7 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -2652,13 +2887,15 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/no-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", "dev": true, + "license": "MIT", "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" @@ -2669,6 +2906,7 @@ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true, + "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { "node": ">= 6.13.0" } @@ -2677,13 +2915,15 @@ "version": "2.0.19", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -2693,6 +2933,7 @@ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0" }, @@ -2705,6 +2946,7 @@ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -2716,13 +2958,15 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, + "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -2735,6 +2979,7 @@ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -2744,6 +2989,7 @@ "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", "dev": true, + "license": "MIT", "dependencies": { "default-browser": "^5.2.1", "define-lazy-prop": "^3.0.0", @@ -2762,6 +3008,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -2777,6 +3024,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -2789,6 +3037,7 @@ "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz", "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/retry": "0.12.2", "is-network-error": "^1.0.0", @@ -2806,6 +3055,7 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -2815,6 +3065,7 @@ "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", "dev": true, + "license": "MIT", "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -2825,6 +3076,7 @@ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -2834,6 +3086,7 @@ "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", "dev": true, + "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -2844,6 +3097,7 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2853,6 +3107,7 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2861,19 +3116,22 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-to-regexp": { "version": "0.1.12", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/periscopic": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^3.0.0", @@ -2885,6 +3143,7 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" } @@ -2893,13 +3152,15 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -2912,6 +3173,7 @@ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -2938,6 +3200,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.8", "picocolors": "^1.1.1", @@ -2952,6 +3215,7 @@ "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-7.0.0.tgz", "integrity": "sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA==", "dev": true, + "license": "MIT", "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" }, @@ -2964,6 +3228,7 @@ "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", "dev": true, + "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -2976,6 +3241,7 @@ "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", "dev": true, + "license": "MIT", "dependencies": { "icss-utils": "^5.0.0", "postcss-selector-parser": "^7.0.0", @@ -2993,6 +3259,7 @@ "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", "dev": true, + "license": "ISC", "dependencies": { "postcss-selector-parser": "^7.0.0" }, @@ -3008,6 +3275,7 @@ "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", "dev": true, + "license": "ISC", "dependencies": { "icss-utils": "^5.0.0" }, @@ -3023,6 +3291,7 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", "dev": true, + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -3035,13 +3304,15 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/pretty-error": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", "dev": true, + "license": "MIT", "dependencies": { "lodash": "^4.17.20", "renderkid": "^3.0.0" @@ -3051,13 +3322,15 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dev": true, + "license": "MIT", "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" @@ -3071,6 +3344,7 @@ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } @@ -3080,6 +3354,7 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.6" }, @@ -3095,6 +3370,7 @@ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } @@ -3104,6 +3380,7 @@ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -3113,6 +3390,7 @@ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, + "license": "MIT", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -3128,6 +3406,7 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -3142,6 +3421,7 @@ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, + "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -3154,6 +3434,7 @@ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "dev": true, + "license": "MIT", "dependencies": { "resolve": "^1.20.0" }, @@ -3166,6 +3447,7 @@ "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } @@ -3175,6 +3457,7 @@ "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", "dev": true, + "license": "MIT", "dependencies": { "css-select": "^4.1.3", "dom-converter": "^0.2.0", @@ -3188,6 +3471,7 @@ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -3196,13 +3480,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/resolve": { "version": "1.22.10", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.16.0", "path-parse": "^1.0.7", @@ -3223,6 +3509,7 @@ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, + "license": "MIT", "dependencies": { "resolve-from": "^5.0.0" }, @@ -3235,6 +3522,7 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -3244,6 +3532,7 @@ "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -3253,6 +3542,7 @@ "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -3278,19 +3568,22 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/schema-utils": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", @@ -3309,13 +3602,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/selfsigned": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", "dev": true, + "license": "MIT", "dependencies": { "@types/node-forge": "^1.3.0", "node-forge": "^1" @@ -3329,6 +3624,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -3341,6 +3637,7 @@ "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -3365,6 +3662,7 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -3373,13 +3671,15 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/serialize-javascript": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } @@ -3389,6 +3689,7 @@ "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.4", "batch": "0.6.1", @@ -3407,6 +3708,7 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -3416,6 +3718,7 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, + "license": "MIT", "dependencies": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -3430,19 +3733,22 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/serve-index/node_modules/setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/serve-index/node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -3452,6 +3758,7 @@ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dev": true, + "license": "MIT", "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", @@ -3466,13 +3773,15 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, + "license": "MIT", "dependencies": { "kind-of": "^6.0.2" }, @@ -3485,6 +3794,7 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -3497,6 +3807,7 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -3506,6 +3817,7 @@ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz", "integrity": "sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -3518,6 +3830,7 @@ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", @@ -3537,6 +3850,7 @@ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" @@ -3553,6 +3867,7 @@ "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -3571,6 +3886,7 @@ "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -3590,6 +3906,7 @@ "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", "dev": true, + "license": "MIT", "dependencies": { "faye-websocket": "^0.11.3", "uuid": "^8.3.2", @@ -3601,6 +3918,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -3610,6 +3928,7 @@ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -3619,6 +3938,7 @@ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -3629,6 +3949,7 @@ "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.1.0", "handle-thing": "^2.0.0", @@ -3645,6 +3966,7 @@ "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.1.0", "detect-node": "^2.0.4", @@ -3659,6 +3981,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -3675,13 +3998,15 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/spdy/node_modules/debug": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -3698,13 +4023,15 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -3714,6 +4041,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" } @@ -3723,6 +4051,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -3735,6 +4064,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -3750,6 +4080,7 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -3762,6 +4093,7 @@ "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.19.tgz", "integrity": "sha512-IY1rnGr6izd10B0A8LqsBfmlT5OILVuZ7XsI0vdGPEvuonFV7NYEUK4dAkm9Zg2q0Um92kYjTpS1CAP3Nh/KWw==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.1", "@jridgewell/sourcemap-codec": "^1.4.15", @@ -3786,13 +4118,15 @@ "version": "1.1.9", "resolved": "https://registry.npmjs.org/svelte-dev-helper/-/svelte-dev-helper-1.1.9.tgz", "integrity": "sha512-oU+Xv7Dl4kRU2kdFjsoPLfJfnt5hUhsFUZtuzI3Ku/f2iAFZqBoEuXOqK3N9ngD4dxQOmN4OKWPHVi3NeAeAfQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/svelte-hmr": { "version": "0.14.12", "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.14.12.tgz", "integrity": "sha512-4QSW/VvXuqVcFZ+RhxiR8/newmwOCTlbYIezvkeN6302YFRE8cXy0naamHcjz8Y9Ce3ITTZtrHrIL0AGfyo61w==", "dev": true, + "license": "ISC", "engines": { "node": "^12.20 || ^14.13.1 || >= 16" }, @@ -3805,6 +4139,7 @@ "resolved": "https://registry.npmjs.org/svelte-loader/-/svelte-loader-3.2.4.tgz", "integrity": "sha512-e0HdDnkYH/MDx4/IfTSka5AOFg9yYJcPuoZJB5x0l60fkHjVjNvrrxr+rJegDG9J7ZymmdHt00/hdLw+QF299w==", "dev": true, + "license": "MIT", "dependencies": { "loader-utils": "^2.0.4", "svelte-dev-helper": "^1.1.9", @@ -3819,6 +4154,7 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" } @@ -3828,6 +4164,7 @@ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -3837,6 +4174,7 @@ "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz", "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -3855,6 +4193,7 @@ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", @@ -3888,13 +4227,15 @@ "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/thingies": { "version": "1.21.0", "resolved": "https://registry.npmjs.org/thingies/-/thingies-1.21.0.tgz", "integrity": "sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==", "dev": true, + "license": "Unlicense", "engines": { "node": ">=10.18" }, @@ -3906,13 +4247,15 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -3925,6 +4268,7 @@ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.6" } @@ -3934,6 +4278,7 @@ "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.2.tgz", "integrity": "sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10.0" }, @@ -3949,13 +4294,15 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true + "dev": true, + "license": "0BSD" }, "node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, + "license": "MIT", "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -3968,13 +4315,15 @@ "version": "6.20.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -3998,6 +4347,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" @@ -4013,19 +4363,22 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/utila": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4.0" } @@ -4035,6 +4388,7 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } @@ -4044,6 +4398,7 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -4053,6 +4408,7 @@ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", "dev": true, + "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -4066,6 +4422,7 @@ "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", "dev": true, + "license": "MIT", "dependencies": { "minimalistic-assert": "^1.0.0" } @@ -4075,6 +4432,7 @@ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.98.0.tgz", "integrity": "sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA==", "dev": true, + "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.6", @@ -4121,6 +4479,7 @@ "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", "dev": true, + "license": "MIT", "dependencies": { "@discoveryjs/json-ext": "^0.5.0", "@webpack-cli/configtest": "^2.1.1", @@ -4166,6 +4525,7 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true, + "license": "MIT", "engines": { "node": ">=14" } @@ -4175,6 +4535,7 @@ "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.2.tgz", "integrity": "sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==", "dev": true, + "license": "MIT", "dependencies": { "colorette": "^2.0.10", "memfs": "^4.6.0", @@ -4204,6 +4565,7 @@ "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.0.tgz", "integrity": "sha512-90SqqYXA2SK36KcT6o1bvwvZfJFcmoamqeJY7+boioffX9g9C0wjjJRGUrQIuh43pb0ttX7+ssavmj/WN2RHtA==", "dev": true, + "license": "MIT", "dependencies": { "@types/bonjour": "^3.5.13", "@types/connect-history-api-fallback": "^1.5.4", @@ -4260,6 +4622,7 @@ "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", "dev": true, + "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", @@ -4274,6 +4637,7 @@ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.13.0" } @@ -4283,6 +4647,7 @@ "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "http-parser-js": ">=0.5.1", "safe-buffer": ">=5.1.0", @@ -4297,6 +4662,7 @@ "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=0.8.0" } @@ -4306,6 +4672,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -4320,13 +4687,15 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ws": { "version": "8.18.1", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" }, diff --git a/examples/webpack/package.json b/examples/webpack/package.json index 18af0e0e..a036acb1 100644 --- a/examples/webpack/package.json +++ b/examples/webpack/package.json @@ -5,7 +5,7 @@ "build": "NODE_ENV=production webpack" }, "dependencies": { - "carbon-components-svelte": "^0.87.7" + "carbon-components-svelte": "^0.88.1" }, "devDependencies": { "carbon-preprocess-svelte": "^0.11.11", From be9c13fbc66e79b87ed8e22df9a99dee861da27f Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Wed, 19 Mar 2025 12:52:48 -0700 Subject: [PATCH 054/235] v0.88.2 --- CHANGELOG.md | 10 ++++++++++ COMPONENT_INDEX.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 143edd7d..594e1c11 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,16 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +### [0.88.2](https://github.com/carbon-design-system/carbon-components-svelte/compare/v0.88.1...v0.88.2) (2025-03-19) + +### Bug Fixes + +- **combo-box:** fix typing when refocusing input ([9e3d830](https://github.com/carbon-design-system/carbon-components-svelte/commit/9e3d83031e69889472c4e84be256ea242854cf81)) +- **list-box:** use `aria-disabled` instead of invalid `disabled` attribute ([#2125](https://github.com/carbon-design-system/carbon-components-svelte/issues/2125)) ([e1b3ef2](https://github.com/carbon-design-system/carbon-components-svelte/commit/e1b3ef22c9ee09474bacadbb0b22b41326566bab)) +- **multi-select:** fix keyboard navigation for disabled items ([#2129](https://github.com/carbon-design-system/carbon-components-svelte/issues/2129)) ([e7939ff](https://github.com/carbon-design-system/carbon-components-svelte/commit/e7939ff0e21c3430c9eea74c503b7c35f6823445)), closes [#2128](https://github.com/carbon-design-system/carbon-components-svelte/issues/2128) +- **notification:** remove invalid `kind` prop from markup ([#2126](https://github.com/carbon-design-system/carbon-components-svelte/issues/2126)) ([e85d7ef](https://github.com/carbon-design-system/carbon-components-svelte/commit/e85d7efc5ed15f5236d074fd7981ae527d9e5ab5)) +- **theme:** remove invalid `themes` prop from markup ([#2127](https://github.com/carbon-design-system/carbon-components-svelte/issues/2127)) ([5987b61](https://github.com/carbon-design-system/carbon-components-svelte/commit/5987b61a5522fff09468bddd586eed4a537edcc8)) + ### [0.88.1](https://github.com/carbon-design-system/carbon-components-svelte/compare/v0.88.0...v0.88.1) (2025-03-12) ### Bug Fixes diff --git a/COMPONENT_INDEX.md b/COMPONENT_INDEX.md index b97158aa..b2c72de3 100644 --- a/COMPONENT_INDEX.md +++ b/COMPONENT_INDEX.md @@ -1,6 +1,6 @@ # Component Index -> 165 components exported from carbon-components-svelte@0.88.1. +> 165 components exported from carbon-components-svelte@0.88.2. ## Components diff --git a/package-lock.json b/package-lock.json index 01a204ba..3ad4f3f3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "carbon-components-svelte", - "version": "0.88.1", + "version": "0.88.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "carbon-components-svelte", - "version": "0.88.1", + "version": "0.88.2", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { diff --git a/package.json b/package.json index 97239e25..ab100279 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "carbon-components-svelte", - "version": "0.88.1", + "version": "0.88.2", "license": "Apache-2.0", "description": "Svelte implementation of the Carbon Design System", "type": "module", From 199bb0eb8e27c485de46295dcf0ee25f8cbccf5f Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Wed, 19 Mar 2025 13:05:28 -0700 Subject: [PATCH 055/235] Revert "fix(list-box): use `aria-disabled` instead of invalid `disabled` attribute" (#2130) This reverts commit e1b3ef22c9ee09474bacadbb0b22b41326566bab. --- src/ListBox/ListBoxMenuItem.svelte | 2 +- tests/ComboBox/ComboBox.test.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ListBox/ListBoxMenuItem.svelte b/src/ListBox/ListBoxMenuItem.svelte index 569f0e9e..dd2ff422 100644 --- a/src/ListBox/ListBoxMenuItem.svelte +++ b/src/ListBox/ListBoxMenuItem.svelte @@ -25,7 +25,7 @@ class:bx--list-box__menu-item--active={active} class:bx--list-box__menu-item--highlighted={highlighted || active} aria-selected={active} - aria-disabled={disabled ? true : undefined} + disabled={disabled ? true : undefined} {...$$restProps} on:click on:mouseenter diff --git a/tests/ComboBox/ComboBox.test.ts b/tests/ComboBox/ComboBox.test.ts index 697031a8..2ac7534f 100644 --- a/tests/ComboBox/ComboBox.test.ts +++ b/tests/ComboBox/ComboBox.test.ts @@ -165,7 +165,7 @@ describe("ComboBox", () => { await user.click(screen.getByRole("textbox")); const disabledOption = screen.getByText(/Fax/).closest('[role="option"]'); assert(disabledOption); - expect(disabledOption).toHaveAttribute("aria-disabled", "true"); + expect(disabledOption).toHaveAttribute("disabled", "true"); await user.click(disabledOption); expect(screen.getByRole("textbox")).toHaveValue(""); From 0e082e495098b90b7d44f82b3ffd1fabc2dec858 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Wed, 19 Mar 2025 13:06:20 -0700 Subject: [PATCH 056/235] v0.88.3 --- CHANGELOG.md | 2 ++ COMPONENT_INDEX.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 594e1c11..4241b3cd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +### [0.88.3](https://github.com/carbon-design-system/carbon-components-svelte/compare/v0.88.2...v0.88.3) (2025-03-19) + ### [0.88.2](https://github.com/carbon-design-system/carbon-components-svelte/compare/v0.88.1...v0.88.2) (2025-03-19) ### Bug Fixes diff --git a/COMPONENT_INDEX.md b/COMPONENT_INDEX.md index b2c72de3..9a14e927 100644 --- a/COMPONENT_INDEX.md +++ b/COMPONENT_INDEX.md @@ -1,6 +1,6 @@ # Component Index -> 165 components exported from carbon-components-svelte@0.88.2. +> 165 components exported from carbon-components-svelte@0.88.3. ## Components diff --git a/package-lock.json b/package-lock.json index 3ad4f3f3..bd402490 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "carbon-components-svelte", - "version": "0.88.2", + "version": "0.88.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "carbon-components-svelte", - "version": "0.88.2", + "version": "0.88.3", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { diff --git a/package.json b/package.json index ab100279..68599533 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "carbon-components-svelte", - "version": "0.88.2", + "version": "0.88.3", "license": "Apache-2.0", "description": "Svelte implementation of the Carbon Design System", "type": "module", From 49d961bbb501c7e9de2c1c7638c8d240e95669fb Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Wed, 19 Mar 2025 13:08:24 -0700 Subject: [PATCH 057/235] chore(changelog): add release notes for v0.88.3 [ci skip] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4241b3cd..12c285f8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file. See [standa ### [0.88.3](https://github.com/carbon-design-system/carbon-components-svelte/compare/v0.88.2...v0.88.3) (2025-03-19) +### Bug Fixes + +- Revert **list-box:** use `aria-disabled` instead of invalid `disabled` attribute ([#2125](https://github.com/carbon-design-system/carbon-components-svelte/issues/2125)) ([e1b3ef2](https://github.com/carbon-design-system/carbon-components-svelte/commit/e1b3ef22c9ee09474bacadbb0b22b41326566bab)) + ### [0.88.2](https://github.com/carbon-design-system/carbon-components-svelte/compare/v0.88.1...v0.88.2) (2025-03-19) ### Bug Fixes From d67b3e0a844a7df517ef02ce5b7aa37625422d13 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Wed, 19 Mar 2025 13:21:14 -0700 Subject: [PATCH 058/235] docs(code-snippet): remove note on compatibility --- docs/src/pages/components/CodeSnippet.svx | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/src/pages/components/CodeSnippet.svx b/docs/src/pages/components/CodeSnippet.svx index f29d59b1..394becc4 100644 --- a/docs/src/pages/components/CodeSnippet.svx +++ b/docs/src/pages/components/CodeSnippet.svx @@ -29,8 +29,6 @@ let comment = ` This component uses the native, asynchronous [Clipboard API](https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/writeText) to copy text. -Please note that the `clipboard.writeText` API is not supported in [IE 11 nor Safari iOS version 13.3 or lower](https://caniuse.com/mdn-api_clipboard_writetext). - You can override the default copy functionality with your own implementation. See [Overriding copy functionality](#overriding-copy-functionality). From 7317192e90b1fc6dbc6ca51b16150f49bc55fd2f Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Thu, 20 Mar 2025 12:20:46 -0700 Subject: [PATCH 059/235] test(inline-notification): add unit tests --- tests/InlineNotification.test.svelte | 49 ------ .../InlineNotification.close.test.svelte | 12 ++ .../InlineNotification.test.svelte | 29 ++++ .../InlineNotification.test.ts | 156 ++++++++++++++++++ .../InlineNotificationCustom.test.svelte | 14 ++ 5 files changed, 211 insertions(+), 49 deletions(-) delete mode 100644 tests/InlineNotification.test.svelte create mode 100644 tests/InlineNotification/InlineNotification.close.test.svelte create mode 100644 tests/InlineNotification/InlineNotification.test.svelte create mode 100644 tests/InlineNotification/InlineNotification.test.ts create mode 100644 tests/InlineNotification/InlineNotificationCustom.test.svelte diff --git a/tests/InlineNotification.test.svelte b/tests/InlineNotification.test.svelte deleted file mode 100644 index 856bc2b8..00000000 --- a/tests/InlineNotification.test.svelte +++ /dev/null @@ -1,49 +0,0 @@ - - - - - { - console.log(e.detail.timeout); - }} -/> - - -
- Learn more -
-
- -Learn more - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/InlineNotification/InlineNotification.close.test.svelte b/tests/InlineNotification/InlineNotification.close.test.svelte new file mode 100644 index 00000000..6f66810c --- /dev/null +++ b/tests/InlineNotification/InlineNotification.close.test.svelte @@ -0,0 +1,12 @@ + + + { + e.preventDefault(); + console.log("close", e.detail); + }} +/> diff --git a/tests/InlineNotification/InlineNotification.test.svelte b/tests/InlineNotification/InlineNotification.test.svelte new file mode 100644 index 00000000..320683d2 --- /dev/null +++ b/tests/InlineNotification/InlineNotification.test.svelte @@ -0,0 +1,29 @@ + + + { + console.log("close", e.detail); + }} +/> diff --git a/tests/InlineNotification/InlineNotification.test.ts b/tests/InlineNotification/InlineNotification.test.ts new file mode 100644 index 00000000..d7d3b6de --- /dev/null +++ b/tests/InlineNotification/InlineNotification.test.ts @@ -0,0 +1,156 @@ +import { render, screen } from "@testing-library/svelte"; +import { user } from "../setup-tests"; +import InlineNotification from "./InlineNotification.test.svelte"; +import InlineNotificationCustom from "./InlineNotificationCustom.test.svelte"; +import InlineNotificationClose from "./InlineNotification.close.test.svelte"; + +describe("InlineNotification", () => { + beforeEach(() => { + vi.restoreAllMocks(); + }); + + it("should render with default props", () => { + render(InlineNotification); + + expect(screen.getByRole("alert")).toHaveClass( + "bx--inline-notification--error", + ); + expect(screen.getByText("Error:")).toBeInTheDocument(); + expect( + screen.getByText("An internal server error occurred."), + ).toBeInTheDocument(); + }); + + it("should handle different kinds", () => { + ( + [ + "error", + "info", + "info-square", + "success", + "warning", + "warning-alt", + ] as const + ).forEach((kind) => { + const { container } = render(InlineNotification, { + props: { kind }, + }); + + expect( + container.querySelector(`.bx--inline-notification--${kind}`), + ).toBeInTheDocument(); + container.remove(); + }); + }); + + it("should handle low contrast variant", () => { + render(InlineNotification, { + props: { lowContrast: true }, + }); + + expect(screen.getByRole("alert")).toHaveClass( + "bx--inline-notification--low-contrast", + ); + }); + + it("should handle close button click", async () => { + const consoleLog = vi.spyOn(console, "log"); + render(InlineNotification); + + await user.click(screen.getByRole("button")); + + expect(consoleLog).toHaveBeenCalledWith("close", { timeout: false }); + expect(screen.queryByRole("alert")).not.toBeInTheDocument(); + }); + + it("should hide close button", () => { + render(InlineNotification, { + props: { hideCloseButton: true }, + }); + + expect( + screen.queryByLabelText("Close notification"), + ).not.toBeInTheDocument(); + expect(screen.getByRole("alert")).toHaveClass( + "bx--inline-notification--hide-close-button", + ); + }); + + it("should handle custom icon descriptions", () => { + render(InlineNotification, { + props: { + statusIconDescription: "Custom status", + closeButtonDescription: "Custom close", + }, + }); + + expect(screen.getByText("Custom status")).toBeInTheDocument(); + expect(screen.getByRole("button")).toHaveAttribute( + "aria-label", + "Custom close", + ); + }); + + it("should handle custom role", () => { + render(InlineNotification, { + props: { role: "status" }, + }); + + expect(screen.getByRole("status")).toBeInTheDocument(); + }); + + it("should handle timeout", async () => { + vi.useFakeTimers(); + const consoleLog = vi.spyOn(console, "log"); + render(InlineNotification, { props: { timeout: 1000 } }); + + expect(screen.getByRole("alert")).toBeInTheDocument(); + await vi.advanceTimersByTimeAsync(1000); + + expect(consoleLog).toHaveBeenCalledWith("close", { timeout: true }); + expect(screen.queryByRole("alert")).not.toBeInTheDocument(); + vi.useRealTimers(); + }); + + it("should handle custom slots", () => { + render(InlineNotificationCustom); + + const title = screen.getByText("Custom Title:"); + expect(title).not.toHaveClass("bx--inline-notification__title"); + expect(title.tagName).toBe("STRONG"); + + const subtitle = screen.getByText("Custom subtitle content."); + expect(subtitle).not.toHaveClass("bx--inline-notification__subtitle"); + expect(subtitle.tagName).toBe("STRONG"); + }); + + it("should render action button", () => { + render(InlineNotificationCustom); + + expect( + screen.getByRole("button", { name: "Learn more" }), + ).toBeInTheDocument(); + }); + + it("should cleanup timeout on unmount", () => { + vi.useFakeTimers(); + const clearTimeoutSpy = vi.spyOn(window, "clearTimeout"); + + const { unmount } = render(InlineNotification, { + props: { timeout: 1_000 }, + }); + + unmount(); + expect(clearTimeoutSpy).toHaveBeenCalled(); + vi.useRealTimers(); + }); + + it("should prevent default close behavior", async () => { + const consoleLog = vi.spyOn(console, "log"); + render(InlineNotificationClose); + + await user.click(screen.getByRole("button")); + expect(consoleLog).toHaveBeenCalledWith("close", { timeout: false }); + expect(screen.getByRole("alert")).toBeInTheDocument(); + }); +}); diff --git a/tests/InlineNotification/InlineNotificationCustom.test.svelte b/tests/InlineNotification/InlineNotificationCustom.test.svelte new file mode 100644 index 00000000..4186595f --- /dev/null +++ b/tests/InlineNotification/InlineNotificationCustom.test.svelte @@ -0,0 +1,14 @@ + + + + Custom Title: + Custom subtitle content. + + Learn more + + From 7c436bd747c736c9ceac719fac4d094e5c6f4a59 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Thu, 20 Mar 2025 12:27:37 -0700 Subject: [PATCH 060/235] test(toast-notification): add unit tests --- tests/ToastNotification.test.svelte | 38 ----- .../ToastNotification.close.test.svelte | 13 ++ .../ToastNotification.test.svelte | 33 ++++ .../ToastNotification.test.ts | 159 ++++++++++++++++++ .../ToastNotificationCustom.test.svelte | 9 + 5 files changed, 214 insertions(+), 38 deletions(-) delete mode 100644 tests/ToastNotification.test.svelte create mode 100644 tests/ToastNotification/ToastNotification.close.test.svelte create mode 100644 tests/ToastNotification/ToastNotification.test.svelte create mode 100644 tests/ToastNotification/ToastNotification.test.ts create mode 100644 tests/ToastNotification/ToastNotificationCustom.test.svelte diff --git a/tests/ToastNotification.test.svelte b/tests/ToastNotification.test.svelte deleted file mode 100644 index 7610e7c9..00000000 --- a/tests/ToastNotification.test.svelte +++ /dev/null @@ -1,38 +0,0 @@ - - - - - { - console.log(e.detail.timeout); - }} -/> - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/ToastNotification/ToastNotification.close.test.svelte b/tests/ToastNotification/ToastNotification.close.test.svelte new file mode 100644 index 00000000..28293b17 --- /dev/null +++ b/tests/ToastNotification/ToastNotification.close.test.svelte @@ -0,0 +1,13 @@ + + + { + e.preventDefault(); + console.log("close", e.detail); + }} +/> diff --git a/tests/ToastNotification/ToastNotification.test.svelte b/tests/ToastNotification/ToastNotification.test.svelte new file mode 100644 index 00000000..068e4cd2 --- /dev/null +++ b/tests/ToastNotification/ToastNotification.test.svelte @@ -0,0 +1,33 @@ + + + { + console.log("close", e.detail); + }} +/> diff --git a/tests/ToastNotification/ToastNotification.test.ts b/tests/ToastNotification/ToastNotification.test.ts new file mode 100644 index 00000000..2fdb8659 --- /dev/null +++ b/tests/ToastNotification/ToastNotification.test.ts @@ -0,0 +1,159 @@ +import { render, screen } from "@testing-library/svelte"; +import { user } from "../setup-tests"; +import ToastNotification from "./ToastNotification.test.svelte"; +import ToastNotificationCustom from "./ToastNotificationCustom.test.svelte"; +import ToastNotificationClose from "./ToastNotification.close.test.svelte"; + +describe("ToastNotification", () => { + beforeEach(() => { + vi.restoreAllMocks(); + }); + + it("should render with default props", () => { + render(ToastNotification); + + expect(screen.getByRole("alert")).toHaveClass( + "bx--toast-notification--error", + ); + expect(screen.getByText("Error")).toBeInTheDocument(); + expect( + screen.getByText("An internal server error occurred."), + ).toBeInTheDocument(); + expect(screen.getByText("2024-03-21 12:00:00")).toBeInTheDocument(); + }); + + it("should handle different kinds", () => { + const kinds = [ + "error", + "info", + "info-square", + "success", + "warning", + "warning-alt", + ] as const; + + kinds.forEach((kind) => { + const { container } = render(ToastNotification, { + props: { kind }, + }); + + expect( + container.querySelector(`.bx--toast-notification--${kind}`), + ).toBeInTheDocument(); + container.remove(); + }); + }); + + it("should handle low contrast variant", () => { + render(ToastNotification, { + props: { lowContrast: true }, + }); + + expect(screen.getByRole("alert")).toHaveClass( + "bx--toast-notification--low-contrast", + ); + }); + + it("should handle close button click", async () => { + const consoleLog = vi.spyOn(console, "log"); + render(ToastNotification); + + await user.click(screen.getByRole("button")); + + expect(consoleLog).toHaveBeenCalledWith("close", { timeout: false }); + expect(screen.queryByRole("alert")).not.toBeInTheDocument(); + }); + + it("should hide close button", () => { + render(ToastNotification, { + props: { hideCloseButton: true }, + }); + + expect( + screen.queryByLabelText("Close notification"), + ).not.toBeInTheDocument(); + }); + + it("should handle custom icon descriptions", () => { + render(ToastNotification, { + props: { + statusIconDescription: "Custom status", + closeButtonDescription: "Custom close", + }, + }); + + expect(screen.getByText("Custom status")).toBeInTheDocument(); + expect(screen.getByRole("button")).toHaveAttribute( + "aria-label", + "Custom close", + ); + }); + + it("should handle custom role", () => { + render(ToastNotification, { + props: { role: "status" }, + }); + + expect(screen.getByRole("status")).toBeInTheDocument(); + }); + + it("should handle timeout", async () => { + vi.useFakeTimers(); + const consoleLog = vi.spyOn(console, "log"); + + render(ToastNotification, { props: { timeout: 1000 } }); + + expect(screen.getByRole("alert")).toBeInTheDocument(); + + await vi.advanceTimersByTimeAsync(1000); + + expect(consoleLog).toHaveBeenCalledWith("close", { timeout: true }); + expect(screen.queryByRole("alert")).not.toBeInTheDocument(); + vi.useRealTimers(); + }); + + it("should handle custom slots", () => { + render(ToastNotificationCustom); + + const title = screen.getByText("Custom Title:"); + expect(title).not.toHaveClass("bx--toast-notification__title"); + expect(title.tagName).toBe("STRONG"); + + const subtitle = screen.getByText("Custom subtitle content."); + expect(subtitle).not.toHaveClass("bx--toast-notification__subtitle"); + expect(subtitle.tagName).toBe("STRONG"); + + const caption = screen.getByText("Custom caption content."); + expect(caption).not.toHaveClass("bx--toast-notification__caption"); + expect(caption.tagName).toBe("STRONG"); + }); + + it("should handle full width", () => { + render(ToastNotification, { props: { fullWidth: true } }); + + const notification = screen.getByRole("alert"); + expect(notification).toHaveStyle({ width: "100%" }); + }); + + it("should cleanup timeout on unmount", () => { + vi.useFakeTimers(); + const clearTimeoutSpy = vi.spyOn(window, "clearTimeout"); + + const { unmount } = render(ToastNotification, { + props: { timeout: 1000 }, + }); + + unmount(); + expect(clearTimeoutSpy).toHaveBeenCalled(); + vi.useRealTimers(); + }); + + it("should prevent default close behavior", async () => { + const consoleLog = vi.spyOn(console, "log"); + render(ToastNotificationClose); + + await user.click(screen.getByRole("button")); + expect(consoleLog).toHaveBeenCalledWith("close", { timeout: false }); + expect(screen.getByRole("alert")).toBeInTheDocument(); + }); +}); diff --git a/tests/ToastNotification/ToastNotificationCustom.test.svelte b/tests/ToastNotification/ToastNotificationCustom.test.svelte new file mode 100644 index 00000000..9b2b2436 --- /dev/null +++ b/tests/ToastNotification/ToastNotificationCustom.test.svelte @@ -0,0 +1,9 @@ + + + + Custom Title: + Custom subtitle content. + Custom caption content. + From e35a25de819bd9db985e966a0a6bd4cb6eceacfb Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Thu, 20 Mar 2025 12:35:26 -0700 Subject: [PATCH 061/235] test(text-area): add unit tests --- tests/TextArea.test.svelte | 19 --- tests/TextArea/TextArea.test.svelte | 49 +++++++ tests/TextArea/TextArea.test.ts | 153 ++++++++++++++++++++++ tests/TextArea/TextAreaCustom.test.svelte | 7 + 4 files changed, 209 insertions(+), 19 deletions(-) delete mode 100644 tests/TextArea.test.svelte create mode 100644 tests/TextArea/TextArea.test.svelte create mode 100644 tests/TextArea/TextArea.test.ts create mode 100644 tests/TextArea/TextAreaCustom.test.svelte diff --git a/tests/TextArea.test.svelte b/tests/TextArea.test.svelte deleted file mode 100644 index 104dea23..00000000 --- a/tests/TextArea.test.svelte +++ /dev/null @@ -1,19 +0,0 @@ - - - From eb413a1fbac54503f9ab1464e6dc1538bb685b84 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Thu, 20 Mar 2025 12:39:51 -0700 Subject: [PATCH 062/235] test(text-input): add unit tests --- tests/TextInput.test.svelte | 45 ----- tests/TextInput/TextInput.test.svelte | 55 ++++++ tests/TextInput/TextInput.test.ts | 198 ++++++++++++++++++++ tests/TextInput/TextInputCustom.test.svelte | 7 + 4 files changed, 260 insertions(+), 45 deletions(-) delete mode 100644 tests/TextInput.test.svelte create mode 100644 tests/TextInput/TextInput.test.svelte create mode 100644 tests/TextInput/TextInput.test.ts create mode 100644 tests/TextInput/TextInputCustom.test.svelte diff --git a/tests/TextInput.test.svelte b/tests/TextInput.test.svelte deleted file mode 100644 index 63b5dd87..00000000 --- a/tests/TextInput.test.svelte +++ /dev/null @@ -1,45 +0,0 @@ - - - console.log(e.detail)} - on:change={(e) => (value = e.detail)} - on:paste={(e) => console.log(e)} -/> - - - - - - - - - - - - - - - - - - - - diff --git a/tests/TextInput/TextInput.test.svelte b/tests/TextInput/TextInput.test.svelte new file mode 100644 index 00000000..5dc88aac --- /dev/null +++ b/tests/TextInput/TextInput.test.svelte @@ -0,0 +1,55 @@ + + + + +
{value}
diff --git a/tests/TextInput/TextInput.test.ts b/tests/TextInput/TextInput.test.ts new file mode 100644 index 00000000..74271739 --- /dev/null +++ b/tests/TextInput/TextInput.test.ts @@ -0,0 +1,198 @@ +import { render, screen } from "@testing-library/svelte"; +import { user } from "../setup-tests"; +import TextInput from "./TextInput.test.svelte"; +import TextInputCustom from "./TextInputCustom.test.svelte"; + +describe("TextInput", () => { + it("should render with default props", () => { + render(TextInput); + + expect(screen.getByLabelText("User name")).toBeInTheDocument(); + }); + + it("should handle placeholder text", () => { + render(TextInput, { + props: { placeholder: "Enter user name..." }, + }); + + expect( + screen.getByPlaceholderText("Enter user name..."), + ).toBeInTheDocument(); + }); + + it("should handle different sizes", () => { + (["sm", "xl"] as const).forEach((size) => { + const { container } = render(TextInput, { + props: { size }, + }); + + const input = container.querySelector("input"); + expect(input).toHaveClass(`bx--text-input--${size}`); + container.remove(); + }); + }); + + it("should handle light variant", () => { + render(TextInput, { props: { light: true } }); + + expect(screen.getByRole("textbox")).toHaveClass("bx--text-input--light"); + }); + + it("should handle disabled state", () => { + render(TextInput, { props: { disabled: true } }); + + const input = screen.getByRole("textbox"); + expect(input).toBeDisabled(); + expect(screen.getByText("User name")).toHaveClass("bx--label--disabled"); + }); + + it("should handle helper text", () => { + render(TextInput, { props: { helperText: "Helper text" } }); + + expect(screen.getByText("Helper text")).toHaveClass( + "bx--form__helper-text", + ); + }); + + it("should handle invalid state", () => { + render(TextInput, { + props: { invalid: true, invalidText: "Invalid input" }, + }); + + const input = screen.getByRole("textbox"); + expect(input).toHaveClass("bx--text-input--invalid"); + expect(input).toHaveAttribute("aria-invalid", "true"); + expect(screen.getByText("Invalid input")).toHaveClass( + "bx--form-requirement", + ); + }); + + it("should handle warning state", () => { + render(TextInput, { + props: { warn: true, warnText: "Warning message" }, + }); + + const input = screen.getByRole("textbox"); + expect(input).toHaveClass("bx--text-input--warning"); + expect(screen.getByText("Warning message")).toHaveClass( + "bx--form-requirement", + ); + }); + + it("should handle hidden label", () => { + render(TextInput, { props: { hideLabel: true } }); + + expect(screen.getByText("User name")).toHaveClass("bx--visually-hidden"); + }); + + it("should handle custom id", () => { + render(TextInput, { props: { id: "custom-id" } }); + + const input = screen.getByRole("textbox"); + expect(input).toHaveAttribute("id", "custom-id"); + expect(screen.getByText("User name")).toHaveAttribute("for", "custom-id"); + }); + + it("should handle custom name", () => { + render(TextInput, { props: { name: "custom-name" } }); + + expect(screen.getByRole("textbox")).toHaveAttribute("name", "custom-name"); + }); + + it("should handle required state", () => { + render(TextInput, { props: { required: true } }); + + expect(screen.getByRole("textbox")).toHaveAttribute("required"); + }); + + it("should handle inline variant", () => { + render(TextInput, { props: { inline: true } }); + + expect(screen.getByText("User name")).toHaveClass("bx--label--inline"); + }); + + it("should handle readonly state", () => { + render(TextInput, { + props: { readonly: true }, + }); + + expect(screen.getByRole("textbox")).toHaveAttribute("readonly"); + }); + + it("should handle custom slots", () => { + render(TextInputCustom); + + expect(screen.getByText("Custom Label Text").tagName).toBe("SPAN"); + }); + + it("should handle value binding", async () => { + render(TextInput); + + const input = screen.getByRole("textbox"); + await user.type(input, "Test value"); + expect(screen.getByTestId("value").textContent).toBe("Test value"); + }); + + it("should handle number type input", async () => { + render(TextInput, { props: { type: "number" } }); + + const input = screen.getByLabelText("User name"); + await user.type(input, "123"); + expect(input).toHaveValue(123); + + await user.clear(input); + expect(input).toHaveValue(null); + }); + + it("should not show helper text when invalid", () => { + render(TextInput, { + props: { + invalid: true, + invalidText: "Invalid input", + helperText: "Helper text", + }, + }); + + expect(screen.queryByText("Helper text")).not.toBeInTheDocument(); + expect(screen.getByText("Invalid input")).toBeInTheDocument(); + }); + + it("should not show helper text when warning", () => { + render(TextInput, { + props: { + warn: true, + warnText: "Warning message", + helperText: "Helper text", + }, + }); + + expect(screen.queryByText("Helper text")).not.toBeInTheDocument(); + expect(screen.getByText("Warning message")).toBeInTheDocument(); + }); + + it("should handle disabled helper text", () => { + render(TextInput, { + props: { + disabled: true, + helperText: "Helper text", + }, + }); + + expect(screen.getByText("Helper text")).toHaveClass( + "bx--form__helper-text--disabled", + ); + }); + + it("should handle inline helper text", () => { + render(TextInput, { + props: { + inline: true, + helperText: "Helper text", + }, + }); + + expect(screen.getByText("Helper text")).toHaveClass( + "bx--form__helper-text--inline", + ); + }); +}); diff --git a/tests/TextInput/TextInputCustom.test.svelte b/tests/TextInput/TextInputCustom.test.svelte new file mode 100644 index 00000000..2eea26dc --- /dev/null +++ b/tests/TextInput/TextInputCustom.test.svelte @@ -0,0 +1,7 @@ + + + + Custom Label Text + From 6dccd5cbe2040ab1e47d0f2ac8386cd25e9e137a Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Thu, 20 Mar 2025 12:52:19 -0700 Subject: [PATCH 063/235] test(number-input): add unit tests --- tests/NumberInput.test.svelte | 51 ---- tests/NumberInput/NumberInput.test.svelte | 59 +++++ tests/NumberInput/NumberInput.test.ts | 237 ++++++++++++++++++ .../NumberInput/NumberInputCustom.test.svelte | 7 + 4 files changed, 303 insertions(+), 51 deletions(-) delete mode 100644 tests/NumberInput.test.svelte create mode 100644 tests/NumberInput/NumberInput.test.svelte create mode 100644 tests/NumberInput/NumberInput.test.ts create mode 100644 tests/NumberInput/NumberInputCustom.test.svelte diff --git a/tests/NumberInput.test.svelte b/tests/NumberInput.test.svelte deleted file mode 100644 index c1176783..00000000 --- a/tests/NumberInput.test.svelte +++ /dev/null @@ -1,51 +0,0 @@ - - -{value} - - { - console.log({ input: e.detail }); // null | number - }} - on:change={(e) => { - console.log({ change: e.detail }); // null | number - }} - on:keydown - on:keyup - on:paste -/> - - { - console.log({ input: e.detail }); // null | number - }} - on:change={(e) => { - console.log(e.detail); // null | number - }} - on:keydown - on:keyup - on:paste -/> - - diff --git a/tests/NumberInput/NumberInput.test.svelte b/tests/NumberInput/NumberInput.test.svelte new file mode 100644 index 00000000..9794540c --- /dev/null +++ b/tests/NumberInput/NumberInput.test.svelte @@ -0,0 +1,59 @@ + + + + +
{value}
diff --git a/tests/NumberInput/NumberInput.test.ts b/tests/NumberInput/NumberInput.test.ts new file mode 100644 index 00000000..769a9f7c --- /dev/null +++ b/tests/NumberInput/NumberInput.test.ts @@ -0,0 +1,237 @@ +import { render, screen } from "@testing-library/svelte"; +import { user } from "../setup-tests"; +import NumberInput from "./NumberInput.test.svelte"; +import NumberInputCustom from "./NumberInputCustom.test.svelte"; + +describe("NumberInput", () => { + it("should render with default props", () => { + render(NumberInput); + + expect(screen.getByLabelText("Clusters")).toBeInTheDocument(); + expect(screen.getByRole("spinbutton")).toHaveValue(0); + }); + + it("should handle step value", () => { + render(NumberInput, { props: { step: 0.1 } }); + + expect(screen.getByRole("spinbutton")).toHaveAttribute("step", "0.1"); + }); + + it("should handle min and max values", () => { + render(NumberInput, { props: { min: 4, max: 20 } }); + + const input = screen.getByRole("spinbutton"); + expect(input).toHaveAttribute("min", "4"); + expect(input).toHaveAttribute("max", "20"); + }); + + it("should handle different sizes", () => { + (["sm", "xl"] as const).forEach((size) => { + const { container } = render(NumberInput, { + props: { size }, + }); + + const input = container.querySelector("input"); + expect(input?.closest(".bx--number")).toHaveClass(`bx--number--${size}`); + container.remove(); + }); + }); + + it("should handle light variant", () => { + render(NumberInput, { props: { light: true } }); + + expect(screen.getByRole("spinbutton").closest(".bx--number")).toHaveClass( + "bx--number--light", + ); + }); + + it("should handle disabled state", () => { + render(NumberInput, { + props: { disabled: true }, + }); + + const input = screen.getByRole("spinbutton"); + expect(input).toBeDisabled(); + expect(screen.getByText("Clusters")).toHaveClass("bx--label--disabled"); + }); + + it("should handle helper text", () => { + render(NumberInput, { + props: { helperText: "Helper text" }, + }); + + expect(screen.getByText("Helper text")).toHaveClass( + "bx--form__helper-text", + ); + }); + + it("should handle invalid state", () => { + render(NumberInput, { + props: { invalid: true, invalidText: "Invalid input" }, + }); + + const input = screen.getByRole("spinbutton"); + expect(input).toHaveAttribute("aria-invalid", "true"); + expect(screen.getByText("Invalid input")).toBeInTheDocument(); + + expect(input.closest(".bx--number")).toHaveAttribute( + "data-invalid", + "true", + ); + }); + + it("should handle warning state", () => { + render(NumberInput, { + props: { warn: true, warnText: "Warning message" }, + }); + + const input = screen.getByRole("spinbutton"); + expect(input.closest(".bx--number__input-wrapper")).toHaveClass( + "bx--number__input-wrapper--warning", + ); + expect(screen.getByText("Warning message")).toBeInTheDocument(); + }); + + it("should handle hidden label", () => { + render(NumberInput, { props: { hideLabel: true } }); + + expect(screen.getByText("Clusters")).toHaveClass("bx--visually-hidden"); + }); + + it("should handle custom id", () => { + render(NumberInput, { props: { id: "custom-id" } }); + + const input = screen.getByRole("spinbutton"); + expect(input).toHaveAttribute("id", "custom-id"); + expect(screen.getByText("Clusters")).toHaveAttribute("for", "custom-id"); + }); + + it("should handle custom name", () => { + render(NumberInput, { props: { name: "custom-name" } }); + + expect(screen.getByRole("spinbutton")).toHaveAttribute( + "name", + "custom-name", + ); + }); + + it("should handle readonly state", () => { + render(NumberInput, { props: { readonly: true } }); + + expect(screen.getByRole("spinbutton")).toHaveAttribute("readonly"); + }); + + it("should handle hidden steppers", () => { + render(NumberInput, { props: { hideSteppers: true } }); + + expect( + screen.queryByRole("button", { name: "Increment number" }), + ).not.toBeInTheDocument(); + expect( + screen.queryByRole("button", { name: "Decrement number" }), + ).not.toBeInTheDocument(); + }); + + // TODO(bug): The icon descriptions are not being applied. + it.skip("should handle custom icon descriptions", () => { + render(NumberInput, { + props: { iconDescription: "Custom description" }, + }); + + screen.getAllByRole("button").forEach((button) => { + expect(button).toHaveAttribute("title", "Custom description"); + }); + }); + + it("should handle custom slots", () => { + render(NumberInputCustom); + + expect(screen.getByText("Custom Label Text")).toBeInTheDocument(); + }); + + it("should handle value binding", async () => { + render(NumberInput); + + const input = screen.getByRole("spinbutton"); + await user.type(input, "5"); + expect(screen.getByTestId("value").textContent).toBe("5"); + }); + + it("should handle increment/decrement buttons", async () => { + render(NumberInput); + + const incrementButton = screen.getByRole("button", { + name: "Increment number", + }); + const decrementButton = screen.getByRole("button", { + name: "Decrement number", + }); + + await user.click(incrementButton); + expect(screen.getByTestId("value").textContent).toBe("1"); + + await user.click(decrementButton); + expect(screen.getByTestId("value").textContent).toBe("0"); + }); + + it("should handle empty value when allowEmpty is true", async () => { + render(NumberInput, { + props: { allowEmpty: true }, + }); + + const input = screen.getByRole("spinbutton"); + await user.clear(input); + expect(input).toHaveValue(null); + }); + + it("should handle min/max validation", async () => { + render(NumberInput, { props: { min: 4, max: 20 } }); + + const input = screen.getByRole("spinbutton"); + await user.type(input, "25"); + expect(screen.getByTestId("value").textContent).toBe("25"); + expect(screen.getByRole("spinbutton")).toHaveAttribute( + "aria-invalid", + "true", + ); + }); + + it("should not show helper text when invalid", () => { + render(NumberInput, { + props: { + invalid: true, + invalidText: "Invalid input", + helperText: "Helper text", + }, + }); + + expect(screen.queryByText("Helper text")).not.toBeInTheDocument(); + expect(screen.getByText("Invalid input")).toBeInTheDocument(); + }); + + it("should not show helper text when warning", () => { + render(NumberInput, { + props: { + warn: true, + warnText: "Warning message", + helperText: "Helper text", + }, + }); + + expect(screen.queryByText("Helper text")).not.toBeInTheDocument(); + expect(screen.getByText("Warning message")).toBeInTheDocument(); + }); + + it("should handle disabled helper text", () => { + render(NumberInput, { + props: { + disabled: true, + helperText: "Helper text", + }, + }); + + expect(screen.getByText("Helper text")).toHaveClass( + "bx--form__helper-text--disabled", + ); + }); +}); diff --git a/tests/NumberInput/NumberInputCustom.test.svelte b/tests/NumberInput/NumberInputCustom.test.svelte new file mode 100644 index 00000000..4fa329a9 --- /dev/null +++ b/tests/NumberInput/NumberInputCustom.test.svelte @@ -0,0 +1,7 @@ + + + + Custom Label Text + From ec7d79878355826efe5253a16c4be15d72b5daf2 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Thu, 20 Mar 2025 13:03:15 -0700 Subject: [PATCH 064/235] test(radio-button): add unit tests --- tests/RadioButton.test.svelte | 35 ----- tests/RadioButton/RadioButton.test.svelte | 32 +++++ tests/RadioButton/RadioButton.test.ts | 128 ++++++++++++++++++ .../RadioButton/RadioButtonCustom.test.svelte | 7 + 4 files changed, 167 insertions(+), 35 deletions(-) delete mode 100644 tests/RadioButton.test.svelte create mode 100644 tests/RadioButton/RadioButton.test.svelte create mode 100644 tests/RadioButton/RadioButton.test.ts create mode 100644 tests/RadioButton/RadioButtonCustom.test.svelte diff --git a/tests/RadioButton.test.svelte b/tests/RadioButton.test.svelte deleted file mode 100644 index e22109ce..00000000 --- a/tests/RadioButton.test.svelte +++ /dev/null @@ -1,35 +0,0 @@ - - - { - console.log(e.detail); // string - }} -> - - - - - - - - - - - - - - - - diff --git a/tests/RadioButton/RadioButton.test.svelte b/tests/RadioButton/RadioButton.test.svelte new file mode 100644 index 00000000..166c4b42 --- /dev/null +++ b/tests/RadioButton/RadioButton.test.svelte @@ -0,0 +1,32 @@ + + + { + console.log("change"); + }} +/> diff --git a/tests/RadioButton/RadioButton.test.ts b/tests/RadioButton/RadioButton.test.ts new file mode 100644 index 00000000..6103c8d8 --- /dev/null +++ b/tests/RadioButton/RadioButton.test.ts @@ -0,0 +1,128 @@ +import { render, screen } from "@testing-library/svelte"; +import { user } from "../setup-tests"; +import RadioButton from "./RadioButton.test.svelte"; +import RadioButtonCustom from "./RadioButtonCustom.test.svelte"; + +describe("RadioButton", () => { + it("should render with default props", () => { + render(RadioButton); + + const input = screen.getByRole("radio"); + expect(input).toBeInTheDocument(); + expect(input).toHaveAttribute("name", "test-group"); + expect(input).toHaveAttribute("value", ""); + expect(input).not.toBeChecked(); + expect(screen.getByText("Option 1")).toBeInTheDocument(); + }); + + it("should handle checked state", () => { + render(RadioButton, { props: { checked: true } }); + + expect(screen.getByRole("radio")).toBeChecked(); + }); + + it("should handle disabled state", () => { + render(RadioButton, { props: { disabled: true } }); + + expect(screen.getByRole("radio")).toBeDisabled(); + }); + + it("should handle required state", () => { + render(RadioButton, { props: { required: true } }); + + expect(screen.getByRole("radio")).toHaveAttribute("required"); + }); + + it("should handle label position", () => { + render(RadioButton, { props: { labelPosition: "left" } }); + + expect( + screen.getByText("Option 1").closest(".bx--radio-button-wrapper"), + ).toHaveClass("bx--radio-button-wrapper--label-left"); + }); + + it("should handle hidden label", () => { + render(RadioButton, { props: { hideLabel: true } }); + + expect(screen.getByText("Option 1")).toHaveClass("bx--visually-hidden"); + }); + + it("should handle custom id", () => { + render(RadioButton, { props: { id: "custom-id" } }); + + expect(screen.getByRole("radio")).toHaveAttribute("id", "custom-id"); + + const radioButton = screen + .getByText("Option 1") + .closest(".bx--radio-button-wrapper"); + assert(radioButton); + expect(radioButton.querySelector("label")).toHaveAttribute( + "for", + "custom-id", + ); + }); + + it("should handle custom name", () => { + render(RadioButton, { props: { name: "custom-name" } }); + + expect(screen.getByRole("radio")).toHaveAttribute("name", "custom-name"); + }); + + it("should handle custom value", () => { + render(RadioButton, { props: { value: "custom-value" } }); + + expect(screen.getByRole("radio")).toHaveAttribute("value", "custom-value"); + }); + + it("should handle custom slots", () => { + render(RadioButtonCustom); + + expect(screen.getByText("Custom Label Text")).toBeInTheDocument(); + }); + + it("should handle change event", async () => { + const consoleLog = vi.spyOn(console, "log"); + render(RadioButton); + + const input = screen.getByRole("radio"); + await user.click(input); + + expect(input).toBeChecked(); + expect(consoleLog).toHaveBeenCalledWith("change"); + }); + + // TODO(bug): forward focus/blur events. + it.skip("should handle focus and blur events", async () => { + const consoleLog = vi.spyOn(console, "log"); + render(RadioButton); + + const input = screen.getByRole("radio"); + await user.tab(); + expect(input).toHaveFocus(); + expect(consoleLog).toHaveBeenCalledWith("focus"); + + await user.tab(); + expect(input).not.toHaveFocus(); + expect(consoleLog).toHaveBeenCalledWith("blur"); + }); + + it("should handle disabled state with events", async () => { + render(RadioButton, { props: { disabled: true } }); + + const input = screen.getByRole("radio"); + await user.click(input); + expect(input).not.toBeChecked(); + }); + + it("should handle required state with form validation", () => { + render(RadioButton, { props: { required: true } }); + + expect(screen.getByRole("radio")).toHaveAttribute("required"); + }); + + it("should handle label text slot", () => { + render(RadioButtonCustom); + + expect(screen.getByText("Custom Label Text").tagName).toBe("SPAN"); + }); +}); diff --git a/tests/RadioButton/RadioButtonCustom.test.svelte b/tests/RadioButton/RadioButtonCustom.test.svelte new file mode 100644 index 00000000..5913e719 --- /dev/null +++ b/tests/RadioButton/RadioButtonCustom.test.svelte @@ -0,0 +1,7 @@ + + + + Custom Label Text + From 6e62ce5416487e7938ce8ad6b0c883f319365240 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Thu, 20 Mar 2025 13:10:59 -0700 Subject: [PATCH 065/235] test(time-picker): add unit tests --- tests/TimePicker.test.svelte | 67 ------- tests/TimePicker/TimePicker.test.svelte | 68 +++++++ tests/TimePicker/TimePicker.test.ts | 182 ++++++++++++++++++ tests/TimePicker/TimePickerCustom.test.svelte | 19 ++ 4 files changed, 269 insertions(+), 67 deletions(-) delete mode 100644 tests/TimePicker.test.svelte create mode 100644 tests/TimePicker/TimePicker.test.svelte create mode 100644 tests/TimePicker/TimePicker.test.ts create mode 100644 tests/TimePicker/TimePickerCustom.test.svelte diff --git a/tests/TimePicker.test.svelte b/tests/TimePicker.test.svelte deleted file mode 100644 index 8f25bf81..00000000 --- a/tests/TimePicker.test.svelte +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/TimePicker/TimePicker.test.svelte b/tests/TimePicker/TimePicker.test.svelte new file mode 100644 index 00000000..e2b06eb3 --- /dev/null +++ b/tests/TimePicker/TimePicker.test.svelte @@ -0,0 +1,68 @@ + + + { + console.log("change"); + }} + on:input={() => { + console.log("input"); + }} + on:keydown={() => { + console.log("keydown"); + }} + on:keyup={() => { + console.log("keyup"); + }} + on:focus={() => { + console.log("focus"); + }} + on:blur={() => { + console.log("blur"); + }} +> + + + + + + + + + diff --git a/tests/TimePicker/TimePicker.test.ts b/tests/TimePicker/TimePicker.test.ts new file mode 100644 index 00000000..43cdbcdf --- /dev/null +++ b/tests/TimePicker/TimePicker.test.ts @@ -0,0 +1,182 @@ +import { render, screen } from "@testing-library/svelte"; +import { user } from "../setup-tests"; +import TimePicker from "./TimePicker.test.svelte"; +import TimePickerCustom from "./TimePickerCustom.test.svelte"; + +describe("TimePicker", () => { + it("should render with default props", () => { + render(TimePicker); + + const input = screen.getByRole("textbox"); + expect(input).toBeInTheDocument(); + expect(input).toHaveAttribute("name", "test-time"); + expect(input).toHaveAttribute("placeholder", "hh:mm"); + expect(input).toHaveAttribute("pattern", "(1[012]|[1-9]):[0-5][0-9](\\s)?"); + expect(input).toHaveAttribute("maxlength", "5"); + expect(screen.getByText("Time")).toBeInTheDocument(); + expect(screen.getByText("AM")).toBeInTheDocument(); + expect(screen.getByText("PM")).toBeInTheDocument(); + expect(screen.getByText("PDT")).toBeInTheDocument(); + expect(screen.getByText("GMT")).toBeInTheDocument(); + }); + + it("should handle different sizes", () => { + (["sm", "xl"] as const).forEach((size) => { + const { container } = render(TimePicker, { + props: { size }, + }); + + expect(container.querySelector(".bx--time-picker")).toHaveClass( + `bx--time-picker--${size}`, + ); + container.remove(); + }); + }); + + it("should handle light variant", () => { + render(TimePicker, { props: { light: true } }); + + const timePicker = screen.getByRole("textbox").closest(".bx--time-picker"); + expect(timePicker).toHaveClass("bx--time-picker--light"); + }); + + it("should handle disabled state", () => { + render(TimePicker, { props: { disabled: true } }); + + const input = screen.getByRole("textbox"); + expect(input).toBeDisabled(); + expect(screen.getByText("Time")).toHaveClass("bx--label--disabled"); + }); + + it("should handle invalid state", () => { + render(TimePicker, { + props: { invalid: true, invalidText: "Invalid time" }, + }); + + const input = screen.getByRole("textbox"); + expect(input).toHaveClass("bx--text-input--invalid"); + expect(input).toHaveAttribute("data-invalid"); + expect(screen.getByText("Invalid time")).toHaveClass( + "bx--form-requirement", + ); + }); + + it("should handle hidden label", () => { + render(TimePicker, { props: { hideLabel: true } }); + + expect(screen.getByText("Time")).toHaveClass("bx--visually-hidden"); + }); + + it("should handle custom id", () => { + render(TimePicker, { props: { id: "custom-id" } }); + + const input = screen.getByRole("textbox"); + expect(input).toHaveAttribute("id", "custom-id"); + expect(screen.getByText("Time")).toHaveAttribute("for", "custom-id"); + }); + + it("should handle custom name", () => { + render(TimePicker, { props: { name: "custom-name" } }); + + expect(screen.getByRole("textbox")).toHaveAttribute("name", "custom-name"); + }); + + it("should handle custom placeholder", () => { + render(TimePicker, { props: { placeholder: "Enter time" } }); + + expect(screen.getByRole("textbox")).toHaveAttribute( + "placeholder", + "Enter time", + ); + }); + + it("should handle custom pattern", () => { + render(TimePicker, { props: { pattern: "custom-pattern" } }); + + expect(screen.getByRole("textbox")).toHaveAttribute( + "pattern", + "custom-pattern", + ); + }); + + it("should handle custom maxlength", () => { + render(TimePicker, { props: { maxlength: 10 } }); + + expect(screen.getByRole("textbox")).toHaveAttribute("maxlength", "10"); + }); + + it("should handle value binding", async () => { + render(TimePicker); + + const input = screen.getByRole("textbox"); + await user.type(input, "10:30"); + expect(input).toHaveValue("10:30"); + }); + + it("should handle change event", async () => { + const consoleLog = vi.spyOn(console, "log"); + render(TimePicker); + + const input = screen.getByRole("textbox"); + await user.type(input, "10:30"); + expect(consoleLog).toHaveBeenCalledWith("focus"); + expect(consoleLog).toHaveBeenCalledWith("input"); + await user.keyboard("{Enter}"); + expect(consoleLog).toHaveBeenCalledWith("keydown"); + expect(consoleLog).toHaveBeenCalledWith("input"); + + expect(input).toHaveValue("10:30"); + await user.keyboard("{Tab}"); + expect(consoleLog).toHaveBeenCalledWith("change"); + }); + + it("should handle focus and blur events", async () => { + const consoleLog = vi.spyOn(console, "log"); + render(TimePicker); + + const input = screen.getByRole("textbox"); + await user.tab(); + expect(input).toHaveFocus(); + expect(consoleLog).toHaveBeenCalledWith("focus"); + + await user.tab(); + expect(input).not.toHaveFocus(); + expect(consoleLog).toHaveBeenCalledWith("blur"); + }); + + it("should handle disabled state with events", async () => { + render(TimePicker, { props: { disabled: true } }); + + const input = screen.getByRole("textbox"); + await user.type(input, "10:30"); + expect(input).toHaveValue(""); + }); + + it("should handle invalid state with helper text", () => { + render(TimePicker, { + props: { + invalid: true, + invalidText: "Invalid time", + }, + }); + + expect(screen.getByText("Invalid time")).toBeInTheDocument(); + }); + + it("should handle label text slot", () => { + render(TimePickerCustom); + + const label = screen.getByText("Custom Label Text"); + expect(label).toBeInTheDocument(); + expect(label.tagName).toBe("SPAN"); + }); + + it("should handle TimePickerSelect components", () => { + render(TimePicker); + + const selects = screen.getAllByRole("combobox"); + expect(selects).toHaveLength(2); + expect(selects[0]).toHaveValue("pm"); + expect(selects[1]).toHaveValue("pdt"); + }); +}); diff --git a/tests/TimePicker/TimePickerCustom.test.svelte b/tests/TimePicker/TimePickerCustom.test.svelte new file mode 100644 index 00000000..3e9c4867 --- /dev/null +++ b/tests/TimePicker/TimePickerCustom.test.svelte @@ -0,0 +1,19 @@ + + + + Custom Label Text + + + + + + + + + From 490d3b42ea510aab3de3e89a5bcf47ad38a67931 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Thu, 20 Mar 2025 13:28:01 -0700 Subject: [PATCH 066/235] test(radio-tile): add unit tests --- tests/RadioTile.test.svelte | 17 -- tests/RadioTile/RadioTile.group.test.svelte | 25 +++ tests/RadioTile/RadioTile.single.test.svelte | 7 + tests/RadioTile/RadioTile.test.svelte | 43 ++++ tests/RadioTile/RadioTile.test.ts | 197 +++++++++++++++++++ tests/RadioTile/RadioTileCustom.test.svelte | 9 + 6 files changed, 281 insertions(+), 17 deletions(-) delete mode 100644 tests/RadioTile.test.svelte create mode 100644 tests/RadioTile/RadioTile.group.test.svelte create mode 100644 tests/RadioTile/RadioTile.single.test.svelte create mode 100644 tests/RadioTile/RadioTile.test.svelte create mode 100644 tests/RadioTile/RadioTile.test.ts create mode 100644 tests/RadioTile/RadioTileCustom.test.svelte diff --git a/tests/RadioTile.test.svelte b/tests/RadioTile.test.svelte deleted file mode 100644 index 45356d3b..00000000 --- a/tests/RadioTile.test.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - - { - console.log(e.detail); // string - }} -> - Lite plan - Standard plan - Plus plan - diff --git a/tests/RadioTile/RadioTile.group.test.svelte b/tests/RadioTile/RadioTile.group.test.svelte new file mode 100644 index 00000000..defafb8a --- /dev/null +++ b/tests/RadioTile/RadioTile.group.test.svelte @@ -0,0 +1,25 @@ + + + + {#each values as value} + {value} + {/each} + + +
+ Selected: {selected} +
+ + diff --git a/tests/RadioTile/RadioTile.single.test.svelte b/tests/RadioTile/RadioTile.single.test.svelte new file mode 100644 index 00000000..6a986a02 --- /dev/null +++ b/tests/RadioTile/RadioTile.single.test.svelte @@ -0,0 +1,7 @@ + + + +
Custom content
+
diff --git a/tests/RadioTile/RadioTile.test.svelte b/tests/RadioTile/RadioTile.test.svelte new file mode 100644 index 00000000..84d734e4 --- /dev/null +++ b/tests/RadioTile/RadioTile.test.svelte @@ -0,0 +1,43 @@ + + + + { + console.log("change"); + }} + on:keydown + on:click + on:mouseover + on:mouseenter + on:mouseleave + > + Test content + + diff --git a/tests/RadioTile/RadioTile.test.ts b/tests/RadioTile/RadioTile.test.ts new file mode 100644 index 00000000..351c01dc --- /dev/null +++ b/tests/RadioTile/RadioTile.test.ts @@ -0,0 +1,197 @@ +import { render, screen } from "@testing-library/svelte"; +import { user } from "../setup-tests"; +import RadioTile from "./RadioTile.test.svelte"; +import RadioTileCustom from "./RadioTileCustom.test.svelte"; +import RadioTileSingle from "./RadioTile.single.test.svelte"; +import RadioTileGroup from "./RadioTile.group.test.svelte"; + +describe("RadioTile", () => { + it("should render with default props", () => { + render(RadioTile); + + const input = screen.getByRole("radio"); + expect(input).toBeInTheDocument(); + expect(input).toHaveAttribute("name", "test-group"); + expect(input).toHaveAttribute("value", "test"); + expect(input).not.toBeChecked(); + expect(screen.getByText("Test content")).toBeInTheDocument(); + expect(screen.getByTitle("Tile checkmark")).toBeInTheDocument(); + }); + + it("should handle checked state", () => { + render(RadioTile, { + props: { checked: true }, + }); + + const input = screen.getByRole("radio"); + expect(input).toBeChecked(); + expect(screen.getByText("Test content").closest(".bx--tile")).toHaveClass( + "bx--tile--is-selected", + ); + }); + + it("should handle light variant", () => { + render(RadioTile, { + props: { light: true }, + }); + + expect(screen.getByText("Test content").closest(".bx--tile")).toHaveClass( + "bx--tile--light", + ); + }); + + it("should handle disabled state", () => { + render(RadioTile, { + props: { disabled: true }, + }); + + const input = screen.getByRole("radio"); + expect(input).toBeDisabled(); + expect(screen.getByText("Test content").closest(".bx--tile")).toHaveClass( + "bx--tile--disabled", + ); + }); + + it("should handle required state", () => { + render(RadioTile, { + props: { required: true }, + }); + + expect(screen.getByRole("radio")).toHaveAttribute("required"); + }); + + it("should handle custom value", () => { + render(RadioTile, { + props: { value: "custom-value" }, + }); + + expect(screen.getByRole("radio")).toHaveAttribute("value", "custom-value"); + }); + + it("should handle custom tabindex", () => { + render(RadioTile, { + props: { tabindex: "1" }, + }); + + expect(screen.getByRole("radio")).toHaveAttribute("tabindex", "1"); + }); + + it("should handle custom icon description", () => { + render(RadioTile, { + props: { iconDescription: "Custom checkmark" }, + }); + + expect(screen.getByTitle("Custom checkmark")).toBeInTheDocument(); + }); + + it("should handle custom id", () => { + render(RadioTile, { props: { id: "custom-id" } }); + + expect(screen.getByRole("radio")).toHaveAttribute("id", "custom-id"); + + const radioTileLabel = screen.getByText("Test content").closest("label"); + assert(radioTileLabel); + expect(radioTileLabel).toHaveAttribute("for", "custom-id"); + }); + + // TODO(bug): support standalone radio tile. + it.skip("should handle custom name", () => { + render(RadioTileSingle); + + expect(screen.getByRole("radio")).toHaveAttribute("name", "custom-name"); + }); + + it("should handle custom slots", () => { + render(RadioTileCustom); + + expect(screen.getByText("Custom content")).toBeInTheDocument(); + }); + + it("should handle change event", async () => { + const consoleLog = vi.spyOn(console, "log"); + render(RadioTile); + + const input = screen.getByRole("radio"); + await user.click(input); + + expect(input).toBeChecked(); + expect(consoleLog).toHaveBeenCalledWith("change"); + }); + + it("should handle keyboard events", async () => { + render(RadioTileGroup); + + const inputs = screen.getAllByRole("radio"); + + expect(inputs[1]).not.toHaveFocus(); + expect(inputs[1]).toBeChecked(); + + await user.tab(); + expect(inputs[1]).toHaveFocus(); + + await user.keyboard("{ArrowDown}"); + expect(inputs[2]).toHaveFocus(); + expect(inputs[2]).toBeChecked(); + + await user.keyboard("{ArrowDown}"); + expect(inputs[0]).toHaveFocus(); + expect(inputs[0]).toBeChecked(); + }); + + it("supports programmatic selection", async () => { + render(RadioTileGroup); + + const inputs = screen.getAllByRole("radio"); + expect(inputs[1]).not.toHaveFocus(); + expect(inputs[1]).toBeChecked(); + expect(screen.getByText(/Selected: Standard plan/)).toBeInTheDocument(); + + await user.click(inputs[2]); + expect(inputs[2]).toHaveFocus(); + expect(inputs[2]).toBeChecked(); + expect(screen.getByText(/Selected: Plus plan/)).toBeInTheDocument(); + + await user.click(screen.getByRole("button")); + expect(inputs[1]).not.toHaveFocus(); + expect(inputs[1]).toBeChecked(); + expect(screen.getByText(/Selected: Standard plan/)).toBeInTheDocument(); + }); + + it("should handle disabled state with events", async () => { + render(RadioTile, { + props: { disabled: true }, + }); + + const input = screen.getByRole("radio"); + await user.click(input); + expect(input).not.toBeChecked(); + }); + + it("should handle mouse events", async () => { + render(RadioTile); + + const tile = screen.getByText("Test content").closest(".bx--tile"); + assert(tile); + await user.hover(tile); + await user.unhover(tile); + }); + + it("should handle custom content slot", () => { + render(RadioTileCustom); + + const content = screen.getByText("Custom content"); + expect(content).toBeInTheDocument(); + expect(content.tagName).toBe("DIV"); + }); + + it("should handle TileGroup context", () => { + render(RadioTile, { props: { checked: true } }); + + const input = screen.getByRole("radio"); + expect(input).toBeChecked(); + expect(screen.getByText("Test content").closest(".bx--tile")).toHaveClass( + "bx--tile--is-selected", + ); + expect(input).toHaveAttribute("name", "test-group"); + }); +}); diff --git a/tests/RadioTile/RadioTileCustom.test.svelte b/tests/RadioTile/RadioTileCustom.test.svelte new file mode 100644 index 00000000..9d97ddf9 --- /dev/null +++ b/tests/RadioTile/RadioTileCustom.test.svelte @@ -0,0 +1,9 @@ + + + + +
Custom content
+
+
From f89e9df8f01ac8f0ca48df690e0b16da0093801b Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Thu, 20 Mar 2025 15:50:54 -0700 Subject: [PATCH 067/235] test(expandable-tile): add unit tests --- tests/ExpandableTile.test.svelte | 22 --- .../ExpandableTile/ExpandableTile.test.svelte | 46 ++++++ tests/ExpandableTile/ExpandableTile.test.ts | 149 ++++++++++++++++++ .../ExpandableTileCustom.test.svelte | 31 ++++ tests/setup-tests.ts | 37 +++++ 5 files changed, 263 insertions(+), 22 deletions(-) delete mode 100644 tests/ExpandableTile.test.svelte create mode 100644 tests/ExpandableTile/ExpandableTile.test.svelte create mode 100644 tests/ExpandableTile/ExpandableTile.test.ts create mode 100644 tests/ExpandableTile/ExpandableTileCustom.test.svelte diff --git a/tests/ExpandableTile.test.svelte b/tests/ExpandableTile.test.svelte deleted file mode 100644 index 53927f6d..00000000 --- a/tests/ExpandableTile.test.svelte +++ /dev/null @@ -1,22 +0,0 @@ - - - -
Above the fold content here
-
Below the fold content here
-
- - -
Above the fold content here
-
Below the fold content here
-
- - -
Above the fold content here
-
Below the fold content here
-
diff --git a/tests/ExpandableTile/ExpandableTile.test.svelte b/tests/ExpandableTile/ExpandableTile.test.svelte new file mode 100644 index 00000000..9592038f --- /dev/null +++ b/tests/ExpandableTile/ExpandableTile.test.svelte @@ -0,0 +1,46 @@ + + + +
+ Above the fold content here +
+
+ Below the fold content here +
+
diff --git a/tests/ExpandableTile/ExpandableTile.test.ts b/tests/ExpandableTile/ExpandableTile.test.ts new file mode 100644 index 00000000..471722aa --- /dev/null +++ b/tests/ExpandableTile/ExpandableTile.test.ts @@ -0,0 +1,149 @@ +import { render, screen } from "@testing-library/svelte"; +import { user } from "../setup-tests"; +import ExpandableTile from "./ExpandableTile.test.svelte"; +import ExpandableTileCustom from "./ExpandableTileCustom.test.svelte"; + +describe("ExpandableTile", () => { + it("should render with default props", () => { + render(ExpandableTile); + + const tile = screen.getByRole("button"); + expect(tile).toBeInTheDocument(); + expect(tile).toHaveAttribute("aria-expanded", "false"); + expect(tile).toHaveAttribute("title", "Interact to expand Tile"); + expect(screen.getByTestId("above-content")).toBeInTheDocument(); + expect(screen.getByTestId("below-content")).toBeInTheDocument(); + }); + + it("should handle expanded state", () => { + render(ExpandableTile, { props: { expanded: true } }); + + const tile = screen.getByRole("button"); + expect(tile).toHaveAttribute("aria-expanded", "true"); + expect(tile).toHaveAttribute("title", "Interact to collapse Tile"); + expect(tile).toHaveClass("bx--tile--is-expanded"); + }); + + it("should handle light variant", () => { + render(ExpandableTile, { props: { light: true } }); + + expect(screen.getByRole("button")).toHaveClass("bx--tile--light"); + }); + + it("should handle custom icon text", async () => { + render(ExpandableTile, { + props: { + tileCollapsedIconText: "Custom collapsed text", + tileExpandedIconText: "Custom expanded text", + }, + }); + + const tile = screen.getByRole("button"); + expect(tile).toHaveAttribute("title", "Custom collapsed text"); + + await user.click(tile); + expect(tile).toHaveAttribute("title", "Custom expanded text"); + }); + + it("should handle custom labels", async () => { + render(ExpandableTile, { + props: { + tileCollapsedLabel: "Show more", + tileExpandedLabel: "Show less", + }, + }); + + expect(screen.getByText("Show more")).toBeInTheDocument(); + + await user.click(screen.getByRole("button")); + expect(screen.getByText("Show less")).toBeInTheDocument(); + }); + + it("should handle custom tabindex", () => { + render(ExpandableTile, { props: { tabindex: "1" } }); + + expect(screen.getByRole("button")).toHaveAttribute("tabindex", "1"); + }); + + it("should handle custom id", () => { + render(ExpandableTile, { props: { id: "custom-id" } }); + + expect(screen.getByRole("button")).toHaveAttribute("id", "custom-id"); + }); + + it("should toggle expanded state on click", async () => { + render(ExpandableTile); + + const tile = screen.getByRole("button"); + expect(tile).toHaveAttribute("aria-expanded", "false"); + + await user.click(tile); + expect(tile).toHaveAttribute("aria-expanded", "true"); + + await user.click(tile); + expect(tile).toHaveAttribute("aria-expanded", "false"); + }); + + it("should handle keyboard events", async () => { + render(ExpandableTile); + + const tile = screen.getByRole("button"); + await user.tab(); + expect(tile).toHaveFocus(); + + await user.keyboard("{Enter}"); + expect(tile).toHaveAttribute("aria-expanded", "true"); + + await user.keyboard(" "); + expect(tile).toHaveAttribute("aria-expanded", "false"); + }); + + it("should handle interactive content without toggling", async () => { + render(ExpandableTileCustom); + + const tileButton = screen.getAllByRole("button")[0]; + const link = screen.getByTestId("test-link"); + const button = screen.getByTestId("test-button"); + + expect(tileButton).toHaveAttribute("aria-expanded", "false"); + + await user.click(link); + expect(tileButton).toHaveAttribute("aria-expanded", "false"); + + await user.click(button); + expect(tileButton).toHaveAttribute("aria-expanded", "false"); + }); + + it("should handle mouse events", async () => { + render(ExpandableTile); + + const tile = screen.getByRole("button"); + await user.hover(tile); + await user.unhover(tile); + }); + + it("should handle custom content slots", () => { + render(ExpandableTile); + + const aboveContent = screen.getByTestId("above-content"); + const belowContent = screen.getByTestId("below-content"); + + expect(aboveContent).toHaveTextContent("Above the fold content here"); + expect(belowContent).toHaveTextContent("Below the fold content here"); + }); + + it("should handle max height and padding", async () => { + render(ExpandableTile, { + props: { + tileMaxHeight: 200, + tilePadding: 20, + }, + }); + + const tile = screen.getByRole("button"); + expect(tile.getAttribute("style")).toBe("max-height: 105px;"); + + await user.click(tile); + expect(tile.getAttribute("style")).toBe("max-height: none;"); + }); +}); diff --git a/tests/ExpandableTile/ExpandableTileCustom.test.svelte b/tests/ExpandableTile/ExpandableTileCustom.test.svelte new file mode 100644 index 00000000..035b59bf --- /dev/null +++ b/tests/ExpandableTile/ExpandableTileCustom.test.svelte @@ -0,0 +1,31 @@ + + + +
+ { + linkClicked = true; + }} + > + Test link + +

+ +
+
Below the fold content here
+ diff --git a/tests/setup-tests.ts b/tests/setup-tests.ts index c69af710..8f22aad9 100644 --- a/tests/setup-tests.ts +++ b/tests/setup-tests.ts @@ -6,4 +6,41 @@ import "../css/all.css"; // Mock scrollIntoView since it's not implemented in JSDOM Element.prototype.scrollIntoView = vi.fn(); +// Mock ResizeObserver since it's not implemented in JSDOM +class ResizeObserverMock { + callback: ResizeObserverCallback; + elements: Element[]; + + constructor(callback: ResizeObserverCallback) { + this.callback = callback; + this.elements = []; + } + + observe(element: Element) { + this.elements.push(element); + this.callback( + [ + { + target: element, + contentRect: { height: 100 } as DOMRectReadOnly, + borderBoxSize: [], + contentBoxSize: [], + devicePixelContentBoxSize: [], + }, + ], + this, + ); + } + + unobserve(element: Element) { + this.elements = this.elements.filter((el) => el !== element); + } + + disconnect() { + this.elements = []; + } +} + +global.ResizeObserver = ResizeObserverMock; + export const user = userEvent.setup(); From f5342d4b96ffc8cd9cf3479c51e308b31627dfd2 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Thu, 20 Mar 2025 16:02:16 -0700 Subject: [PATCH 068/235] test(structured-list): add unit tests --- tests/StructuredList.test.svelte | 100 ------------- .../StructuredList/StructuredList.test.svelte | 79 +++++++++++ tests/StructuredList/StructuredList.test.ts | 131 ++++++++++++++++++ .../StructuredListCustom.test.svelte | 26 ++++ 4 files changed, 236 insertions(+), 100 deletions(-) delete mode 100644 tests/StructuredList.test.svelte create mode 100644 tests/StructuredList/StructuredList.test.svelte create mode 100644 tests/StructuredList/StructuredList.test.ts create mode 100644 tests/StructuredList/StructuredListCustom.test.svelte diff --git a/tests/StructuredList.test.svelte b/tests/StructuredList.test.svelte deleted file mode 100644 index f04ece1f..00000000 --- a/tests/StructuredList.test.svelte +++ /dev/null @@ -1,100 +0,0 @@ - - - { - console.log(e.detail); // string - }} -> - - - Column A - Column B - Column C - - - - - Row 1 - Row 1 - - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc dui magna, - finibus id tortor sed, aliquet bibendum augue. Aenean posuere sem vel - euismod dignissim. Nulla ut cursus dolor. Pellentesque vulputate nisl a - porttitor interdum. - - - - Row 2 - Row 2 - - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc dui magna, - finibus id tortor sed, aliquet bibendum augue. Aenean posuere sem vel - euismod dignissim. Nulla ut cursus dolor. Pellentesque vulputate nisl a - porttitor interdum. - - - - Row 3 - Row 3 - - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc dui magna, - finibus id tortor sed, aliquet bibendum augue. Aenean posuere sem vel - euismod dignissim. Nulla ut cursus dolor. Pellentesque vulputate nisl a - porttitor interdum. - - - - - - - - - ColumnA - ColumnB - ColumnC - {""} - - - - {#each [1, 2, 3] as item} - - Row {item} - Row {item} - - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc dui - magna, finibus id tortor sed, aliquet bibendum augue. Aenean posuere - sem vel euismod dignissim. Nulla ut cursus dolor. Pellentesque - vulputate nisl a porttitor interdum. - - - - - - - {/each} - - - - diff --git a/tests/StructuredList/StructuredList.test.svelte b/tests/StructuredList/StructuredList.test.svelte new file mode 100644 index 00000000..cacf5f64 --- /dev/null +++ b/tests/StructuredList/StructuredList.test.svelte @@ -0,0 +1,79 @@ + + + { + console.log("click"); + }} + on:mouseover={() => { + console.log("mouseover"); + }} + on:mouseenter={() => { + console.log("mouseenter"); + }} + on:mouseleave={() => { + console.log("mouseleave"); + }} + on:change={(e) => { + console.log("change", e.detail); + }} +> + + + Column A + Column B + Column C + {#if selection} + {""} + {/if} + + + + {#each ["1", "2", "3"] as item} + + Row {item} + Row {item} + Content {item} + {#if selection} + + + + + {/if} + + {/each} + + + +
{selected}
diff --git a/tests/StructuredList/StructuredList.test.ts b/tests/StructuredList/StructuredList.test.ts new file mode 100644 index 00000000..c11e7c89 --- /dev/null +++ b/tests/StructuredList/StructuredList.test.ts @@ -0,0 +1,131 @@ +import { render, screen } from "@testing-library/svelte"; +import { user } from "../setup-tests"; +import StructuredList from "./StructuredList.test.svelte"; +import StructuredListCustom from "./StructuredListCustom.test.svelte"; + +describe("StructuredList", () => { + it("should render with default props", () => { + render(StructuredList); + + const list = screen.getByRole("table"); + expect(list).toBeInTheDocument(); + expect(list).toHaveClass("bx--structured-list"); + + // Check header cells + const headerCells = screen.getAllByRole("columnheader"); + expect(headerCells).toHaveLength(3); + expect(headerCells[0]).toHaveTextContent("Column A"); + expect(headerCells[1]).toHaveTextContent("Column B"); + expect(headerCells[2]).toHaveTextContent("Column C"); + + // Check body cells + const cells = screen.getAllByRole("cell"); + expect(cells).toHaveLength(9); // 3 rows x 3 columns + expect(cells[0]).toHaveTextContent("Row 1"); + expect(cells[1]).toHaveTextContent("Row 1"); + expect(cells[2]).toHaveTextContent("Content 1"); + }); + + it("should handle condensed variant", () => { + render(StructuredList, { props: { condensed: true } }); + + expect(screen.getByRole("table")).toHaveClass( + "bx--structured-list--condensed", + ); + }); + + it("should handle flush variant", () => { + render(StructuredList, { props: { flush: true } }); + + expect(screen.getByRole("table")).toHaveClass("bx--structured-list--flush"); + }); + + it("should handle selection variant", () => { + render(StructuredList, { props: { selection: true } }); + + const list = screen.getByRole("table"); + expect(list).toHaveClass("bx--structured-list--selection"); + + const inputs = screen.getAllByRole("radio"); + expect(inputs).toHaveLength(3); + + const checkmarks = screen.getAllByTitle("select an option"); + expect(checkmarks).toHaveLength(3); + }); + + it("should handle selected state", async () => { + render(StructuredList, { + props: { selection: true, selected: "row-1-value" }, + }); + + const selectedInput = screen.getByRole("radio", { checked: true }); + expect(selectedInput.closest("label")).toHaveTextContent("Row 1"); + + await user.click(screen.getAllByRole("radio")[1]); + expect( + screen.getByRole("radio", { checked: true }).closest("label"), + ).toHaveTextContent("Row 2"); + }); + + it("should handle selection change", async () => { + render(StructuredList, { props: { selection: true } }); + + const secondInput = screen.getAllByRole("radio")[1]; + await user.click(secondInput); + + expect(screen.getByTestId("value").textContent).toBe("row-2-value"); + }); + + it("should handle custom content", () => { + render(StructuredListCustom); + + expect(screen.getByTestId("custom-header")).toHaveTextContent( + "Custom Header", + ); + expect(screen.getByTestId("custom-content")).toHaveTextContent( + "Custom Content", + ); + }); + + it("should handle mouse events", async () => { + const consoleLog = vi.spyOn(console, "log"); + render(StructuredList); + + const list = screen.getByRole("table"); + + await user.click(list); + expect(consoleLog).toHaveBeenCalledWith("click"); + await user.hover(list); + expect(consoleLog).toHaveBeenCalledWith("mouseover"); + await user.unhover(list); + expect(consoleLog).toHaveBeenCalledWith("mouseleave"); + }); + + it("should handle noWrap cells", () => { + render(StructuredList); + + const noWrapCells = screen + .getAllByRole("cell") + .filter( + (cell) => + cell.textContent?.startsWith("Row") && cell.textContent?.length === 5, + ); + + noWrapCells.forEach((cell) => { + expect(cell).toHaveClass("bx--structured-list-td"); + }); + }); + + it("should emit change event on selection", async () => { + const consoleLog = vi.spyOn(console, "log"); + render(StructuredList, { props: { selection: true } }); + + expect(consoleLog).not.toHaveBeenCalled(); + + await user.click(screen.getAllByRole("radio")[1]); + expect(consoleLog).toHaveBeenCalledWith("change", "row-2-value"); + + await user.click(screen.getAllByRole("radio")[0]); + expect(consoleLog).toHaveBeenCalledWith("change", "row-1-value"); + }); +}); diff --git a/tests/StructuredList/StructuredListCustom.test.svelte b/tests/StructuredList/StructuredListCustom.test.svelte new file mode 100644 index 00000000..3ef8a400 --- /dev/null +++ b/tests/StructuredList/StructuredListCustom.test.svelte @@ -0,0 +1,26 @@ + + + + + + +
Custom Header
+
+
+
+ + + +
Custom Content
+
+
+
+
From a4b10500a30d5f7fc6edcd7a915ade3f09a4af5c Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Thu, 20 Mar 2025 16:05:12 -0700 Subject: [PATCH 069/235] test(skeleton-text): add unit tests --- tests/SkeletonText.test.svelte | 15 ---- tests/SkeletonText/SkeletonText.test.svelte | 27 +++++++ tests/SkeletonText/SkeletonText.test.ts | 90 +++++++++++++++++++++ 3 files changed, 117 insertions(+), 15 deletions(-) delete mode 100644 tests/SkeletonText.test.svelte create mode 100644 tests/SkeletonText/SkeletonText.test.svelte create mode 100644 tests/SkeletonText/SkeletonText.test.ts diff --git a/tests/SkeletonText.test.svelte b/tests/SkeletonText.test.svelte deleted file mode 100644 index 9a96f2bd..00000000 --- a/tests/SkeletonText.test.svelte +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - diff --git a/tests/SkeletonText/SkeletonText.test.svelte b/tests/SkeletonText/SkeletonText.test.svelte new file mode 100644 index 00000000..1caddcfc --- /dev/null +++ b/tests/SkeletonText/SkeletonText.test.svelte @@ -0,0 +1,27 @@ + + + { + console.log("click"); + }} + on:mouseover={() => { + console.log("mouseover"); + }} + on:mouseenter={() => { + console.log("mouseenter"); + }} + on:mouseleave={() => { + console.log("mouseleave"); + }} +/> diff --git a/tests/SkeletonText/SkeletonText.test.ts b/tests/SkeletonText/SkeletonText.test.ts new file mode 100644 index 00000000..7796b09a --- /dev/null +++ b/tests/SkeletonText/SkeletonText.test.ts @@ -0,0 +1,90 @@ +import { render, screen } from "@testing-library/svelte"; +import { user } from "../setup-tests"; +import SkeletonText from "./SkeletonText.test.svelte"; + +describe("SkeletonText", () => { + it("should render with default props", () => { + render(SkeletonText); + const element = screen.getByRole("paragraph"); + expect(element).toHaveClass("bx--skeleton__text"); + expect(element).toHaveStyle({ width: "100%" }); + }); + + it("should render heading variant", () => { + render(SkeletonText, { props: { heading: true } }); + const element = screen.getByRole("paragraph"); + expect(element).toHaveClass("bx--skeleton__text", "bx--skeleton__heading"); + }); + + it("should render paragraph variant with default lines", () => { + render(SkeletonText, { props: { paragraph: true } }); + + const elements = screen.getAllByRole("paragraph"); + expect(elements).toHaveLength(3); // default lines is 3 + elements.forEach((element) => { + expect(element).toHaveClass("bx--skeleton__text"); + }); + }); + + it("should render paragraph with custom line count", () => { + render(SkeletonText, { props: { paragraph: true, lines: 8 } }); + + const elements = screen.getAllByRole("paragraph"); + expect(elements).toHaveLength(8); + }); + + it("should render with custom width", () => { + render(SkeletonText, { props: { width: "50%" } }); + + const element = screen.getByRole("paragraph"); + expect(element).toHaveStyle({ width: "50%" }); + }); + + it("should render paragraph with pixel width", () => { + render(SkeletonText, { props: { paragraph: true, width: "200px" } }); + + const elements = screen.getAllByRole("paragraph"); + elements.forEach((element) => { + const width = element.style.width; + expect(width).toMatch(/^\d+px$/); + const numWidth = parseInt(width); + expect(numWidth).toBeGreaterThanOrEqual(125); // 200 - 75 + expect(numWidth).toBeLessThanOrEqual(200); + }); + }); + + it("should handle mouse events", async () => { + const consoleLog = vi.spyOn(console, "log"); + render(SkeletonText); + + const element = screen.getByRole("paragraph"); + + await user.click(element); + expect(consoleLog).toHaveBeenCalledWith("click"); + + await user.hover(element); + expect(consoleLog).toHaveBeenCalledWith("mouseover"); + + await user.unhover(element); + expect(consoleLog).toHaveBeenCalledWith("mouseleave"); + }); + + it("should handle paragraph mouse events", async () => { + const consoleLog = vi.spyOn(console, "log"); + render(SkeletonText, { props: { paragraph: true } }); + + const container = screen.getAllByRole("paragraph")[0].parentElement; + expect(container).toBeTruthy(); + + if (container) { + await user.click(container); + expect(consoleLog).toHaveBeenCalledWith("click"); + + await user.hover(container); + expect(consoleLog).toHaveBeenCalledWith("mouseover"); + + await user.unhover(container); + expect(consoleLog).toHaveBeenCalledWith("mouseleave"); + } + }); +}); From 3607c70070accca0578102ab497b878d841d6cd8 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Thu, 20 Mar 2025 16:09:09 -0700 Subject: [PATCH 070/235] test(skeleton-placeholder): add unit tests --- tests/SkeletonPlaceholder.test.svelte | 7 --- .../SkeletonPlaceholder.test.svelte | 20 +++++++ .../SkeletonPlaceholder.test.ts | 58 +++++++++++++++++++ 3 files changed, 78 insertions(+), 7 deletions(-) delete mode 100644 tests/SkeletonPlaceholder.test.svelte create mode 100644 tests/SkeletonPlaceholder/SkeletonPlaceholder.test.svelte create mode 100644 tests/SkeletonPlaceholder/SkeletonPlaceholder.test.ts diff --git a/tests/SkeletonPlaceholder.test.svelte b/tests/SkeletonPlaceholder.test.svelte deleted file mode 100644 index 46ceb881..00000000 --- a/tests/SkeletonPlaceholder.test.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/tests/SkeletonPlaceholder/SkeletonPlaceholder.test.svelte b/tests/SkeletonPlaceholder/SkeletonPlaceholder.test.svelte new file mode 100644 index 00000000..c79dc33b --- /dev/null +++ b/tests/SkeletonPlaceholder/SkeletonPlaceholder.test.svelte @@ -0,0 +1,20 @@ + + + { + console.log("click"); + }} + on:mouseover={() => { + console.log("mouseover"); + }} + on:mouseenter={() => { + console.log("mouseenter"); + }} + on:mouseleave={() => { + console.log("mouseleave"); + }} +/> diff --git a/tests/SkeletonPlaceholder/SkeletonPlaceholder.test.ts b/tests/SkeletonPlaceholder/SkeletonPlaceholder.test.ts new file mode 100644 index 00000000..0df9df0a --- /dev/null +++ b/tests/SkeletonPlaceholder/SkeletonPlaceholder.test.ts @@ -0,0 +1,58 @@ +import { render, screen } from "@testing-library/svelte"; +import { user } from "../setup-tests"; +import SkeletonPlaceholder from "./SkeletonPlaceholder.test.svelte"; + +describe("SkeletonPlaceholder", () => { + it("should render with default props", () => { + render(SkeletonPlaceholder); + + const element = screen.getByTestId("skeleton-placeholder"); + expect(element).toHaveClass("bx--skeleton__placeholder"); + }); + + it("should render with custom size", () => { + render(SkeletonPlaceholder, { + props: { style: "height: 12rem; width: 12rem;" }, + }); + + const element = screen.getByTestId("skeleton-placeholder"); + expect(element).toHaveStyle({ height: "12rem", width: "12rem" }); + }); + + it("should handle mouse events", async () => { + const consoleLog = vi.spyOn(console, "log"); + render(SkeletonPlaceholder); + + const element = screen.getByTestId("skeleton-placeholder"); + + await user.click(element); + expect(consoleLog).toHaveBeenCalledWith("click"); + + await user.hover(element); + expect(consoleLog).toHaveBeenCalledWith("mouseover"); + + await user.unhover(element); + expect(consoleLog).toHaveBeenCalledWith("mouseleave"); + }); + + it("should accept additional attributes", () => { + render(SkeletonPlaceholder, { + props: { + "data-testid": "custom-placeholder", + "aria-label": "Loading placeholder", + }, + }); + + const element = screen.getByTestId("custom-placeholder"); + expect(element).toHaveAttribute("aria-label", "Loading placeholder"); + }); + + it("should accept additional classes", () => { + render(SkeletonPlaceholder, { + props: { class: "custom-class" }, + }); + + const element = screen.getByTestId("skeleton-placeholder"); + expect(element).toHaveClass("bx--skeleton__placeholder", "custom-class"); + }); +}); From 0b799d64b7ec5a7d774f239b42b854810b03fdc9 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Thu, 20 Mar 2025 16:28:46 -0700 Subject: [PATCH 071/235] test(dropdown): add unit tests --- tests/Dropdown.test.svelte | 115 ---------- tests/Dropdown/Dropdown.test.svelte | 53 +++++ tests/Dropdown/Dropdown.test.ts | 266 ++++++++++++++++++++++++ tests/Dropdown/DropdownSlot.test.svelte | 25 +++ 4 files changed, 344 insertions(+), 115 deletions(-) delete mode 100644 tests/Dropdown.test.svelte create mode 100644 tests/Dropdown/Dropdown.test.svelte create mode 100644 tests/Dropdown/Dropdown.test.ts create mode 100644 tests/Dropdown/DropdownSlot.test.svelte diff --git a/tests/Dropdown.test.svelte b/tests/Dropdown.test.svelte deleted file mode 100644 index 3ba410d6..00000000 --- a/tests/Dropdown.test.svelte +++ /dev/null @@ -1,115 +0,0 @@ - - - { - console.log(e.detail.selectedId); - }} - translateWithId={(id) => { - console.log(id); // "open" | "close" - return id; - }} - let:item - let:index -> - {item.id} - {index} - - - { - return item.text + " (" + item.id + ")"; - }} - titleText="Contact" - selectedId="0" - items={itemsWithoutConst} -/> - - - - - - - - - - - - diff --git a/tests/Dropdown/Dropdown.test.svelte b/tests/Dropdown/Dropdown.test.svelte new file mode 100644 index 00000000..6e5663f9 --- /dev/null +++ b/tests/Dropdown/Dropdown.test.svelte @@ -0,0 +1,53 @@ + + + diff --git a/tests/Dropdown/Dropdown.test.ts b/tests/Dropdown/Dropdown.test.ts new file mode 100644 index 00000000..4154d81e --- /dev/null +++ b/tests/Dropdown/Dropdown.test.ts @@ -0,0 +1,266 @@ +import { render, screen } from "@testing-library/svelte"; +import { user } from "../setup-tests"; +import Dropdown from "./Dropdown.test.svelte"; +import DropdownSlot from "./DropdownSlot.test.svelte"; + +const items = [ + { id: "0", text: "Slack" }, + { id: "1", text: "Email" }, + { id: "2", text: "Fax" }, +] as const; + +describe("Dropdown", () => { + it("should render with default props", () => { + render(Dropdown, { + props: { items, selectedId: "0", titleText: "Contact" }, + }); + + expect(screen.getByText("Contact")).toBeInTheDocument(); + const button = screen.getByRole("button"); + expect(button.querySelector(".bx--list-box__label")).toHaveTextContent( + "Slack", + ); + }); + + it("should handle custom item display text", () => { + render(Dropdown, { + props: { + items, + selectedId: "0", + titleText: "Contact", + itemToString: (item) => `${item.text} (${item.id})`, + }, + }); + + const button = screen.getByRole("button"); + expect(button.querySelector(".bx--list-box__label")).toHaveTextContent( + "Slack (0)", + ); + }); + + it("should handle hidden label", () => { + render(Dropdown, { + props: { + items, + selectedId: "0", + titleText: "Contact", + hideLabel: true, + }, + }); + + const label = screen.getByText("Contact"); + expect(label).toHaveClass("bx--visually-hidden"); + }); + + it("should handle light variant", () => { + render(Dropdown, { + props: { + items, + selectedId: "0", + light: true, + }, + }); + + const button = screen.getByRole("button"); + expect(button.closest(".bx--dropdown")).toHaveClass("bx--dropdown--light"); + }); + + it("should handle inline variant", () => { + render(Dropdown, { + props: { + items, + selectedId: "0", + type: "inline", + }, + }); + + const button = screen.getByRole("button"); + expect(button).toBeEnabled(); + expect(button).toHaveTextContent("Slack"); + expect(button.closest(".bx--dropdown__wrapper")).toHaveClass( + "bx--dropdown__wrapper--inline", + ); + }); + + it("should handle size variants", async () => { + const { rerender } = render(Dropdown, { + props: { + items, + selectedId: "0", + size: "sm", + }, + }); + + const button = screen.getByRole("button"); + expect(button.closest(".bx--dropdown")).toHaveClass("bx--dropdown--sm"); + + await rerender({ items, selectedId: "0", size: "xl" }); + expect(button.closest(".bx--dropdown")).toHaveClass("bx--dropdown--xl"); + }); + + it("should handle invalid state", () => { + render(Dropdown, { + props: { + items, + selectedId: "0", + invalid: true, + invalidText: "Invalid selection", + }, + }); + + const button = screen.getByRole("button"); + expect(button).toBeEnabled(); + expect(button).toHaveTextContent("Slack"); + expect(button.closest(".bx--dropdown")).toHaveAttribute( + "data-invalid", + "true", + ); + expect(screen.getByText("Invalid selection")).toBeInTheDocument(); + }); + + it("should handle warning state", () => { + render(Dropdown, { + props: { + items, + selectedId: "0", + warn: true, + warnText: "Warning message", + }, + }); + + const button = screen.getByRole("button"); + expect(button).toBeEnabled(); + expect(button).toHaveTextContent("Slack"); + expect(button.closest(".bx--dropdown")).toHaveClass( + "bx--dropdown--warning", + ); + expect(screen.getByText("Warning message")).toBeInTheDocument(); + }); + + it("should handle disabled state", () => { + render(Dropdown, { + props: { + items, + selectedId: "0", + disabled: true, + }, + }); + + expect(screen.queryByRole("listbox")).not.toBeInTheDocument(); + expect(screen.getByRole("button")).toHaveAttribute("disabled"); + expect(screen.getByRole("button")).toHaveTextContent("Slack"); + }); + + it("should handle helper text", () => { + render(Dropdown, { + props: { + items, + selectedId: "0", + helperText: "Help text", + }, + }); + + expect(screen.getByText("Help text")).toHaveClass("bx--form__helper-text"); + }); + + it("should handle item selection", async () => { + const { component } = render(Dropdown, { + props: { + items, + selectedId: "0", + }, + }); + + const selectHandler = vi.fn(); + component.$on("select", selectHandler); + + const button = screen.getByRole("button"); + await user.click(button); + + const menuItemText = screen.getByText("Email"); + const menuItem = menuItemText.closest(".bx--list-box__menu-item"); + expect(menuItem).not.toBeNull(); + await user.click(menuItem!); + + expect(selectHandler).toHaveBeenCalledWith( + expect.objectContaining({ + detail: { selectedId: "1", selectedItem: items[1] }, + }), + ); + }); + + it("should handle keyboard navigation", async () => { + render(Dropdown, { + props: { + items, + selectedId: "0", + }, + }); + + const button = screen.getByRole("button"); + await user.tab(); + expect(button).toHaveFocus(); + + await user.keyboard("{Enter}"); + expect(screen.getByRole("listbox")).toBeVisible(); + expect(screen.getByRole("option", { selected: true })).toHaveTextContent( + "Slack", + ); + + await user.keyboard("{ArrowDown}{ArrowDown}"); + await user.keyboard("{Enter}"); + + expect(screen.queryByRole("listbox")).not.toBeInTheDocument(); + expect(button).toHaveTextContent("Email"); + }); + + it("should handle disabled items", async () => { + const itemsWithDisabled = [ + { id: "0", text: "Slack" }, + { id: "1", text: "Email", disabled: true }, + { id: "2", text: "Fax" }, + ]; + + render(Dropdown, { + props: { + items: itemsWithDisabled, + selectedId: "0", + }, + }); + + const button = screen.getByRole("button"); + await user.click(button); + + const menuItemText = screen.getByText("Email"); + const menuItem = menuItemText.closest(".bx--list-box__menu-item"); + expect(menuItem).not.toBeNull(); + expect(menuItem).toHaveAttribute("disabled"); + }); + + it("should handle custom slot content", async () => { + render(DropdownSlot); + + await user.click(screen.getByRole("button")); + + const customItems = screen.getAllByTestId("custom-item"); + expect(customItems).toHaveLength(3); + expect(customItems[0]).toHaveTextContent("Item 1: Option 1"); + expect(customItems[1]).toHaveTextContent("Item 2: Option 2"); + expect(customItems[2]).toHaveTextContent("Item 3: Option 3"); + }); + + it("should close on outside click", async () => { + render(Dropdown, { + props: { + items, + selectedId: "0", + }, + }); + + await user.click(screen.getByRole("button")); + expect(screen.getByRole("listbox")).toBeVisible(); + + await user.click(document.body); + expect(screen.queryByRole("listbox")).not.toBeInTheDocument(); + }); +}); diff --git a/tests/Dropdown/DropdownSlot.test.svelte b/tests/Dropdown/DropdownSlot.test.svelte new file mode 100644 index 00000000..7be8caad --- /dev/null +++ b/tests/Dropdown/DropdownSlot.test.svelte @@ -0,0 +1,25 @@ + + + + + Item {index + 1}: {item.text} + + From f200dadb97603998f13b897bd863627d2ff61f83 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Thu, 20 Mar 2025 16:42:13 -0700 Subject: [PATCH 072/235] test(multi-select): more unit tests --- tests/MultiSelect/MultiSelect.test.ts | 367 +++++++++++++++++++++----- 1 file changed, 297 insertions(+), 70 deletions(-) diff --git a/tests/MultiSelect/MultiSelect.test.ts b/tests/MultiSelect/MultiSelect.test.ts index aed26b4a..7d2b8fae 100644 --- a/tests/MultiSelect/MultiSelect.test.ts +++ b/tests/MultiSelect/MultiSelect.test.ts @@ -2,7 +2,13 @@ import { render, screen } from "@testing-library/svelte"; import { MultiSelect } from "carbon-components-svelte"; import { user } from "../setup-tests"; -describe("MultiSelect sorts items correctly", () => { +const items = [ + { id: "0", text: "Slack" }, + { id: "1", text: "Email" }, + { id: "2", text: "Fax" }, +] as const; + +describe("MultiSelect", () => { /** Opens the dropdown. */ const openMenu = async () => await user.click( @@ -29,96 +35,317 @@ describe("MultiSelect sorts items correctly", () => { const nthRenderedOptionText = (index: number) => screen.queryAllByRole("option").at(index)?.textContent?.trim(); - it("initially sorts items alphabetically", async () => { - render(MultiSelect, { - items: [ - { id: "1", text: "C" }, - { id: "3", text: "A" }, - { id: "2", text: "B" }, - ], + describe("sorting behavior", () => { + it("initially sorts items alphabetically", async () => { + render(MultiSelect, { + items: [ + { id: "1", text: "C" }, + { id: "3", text: "A" }, + { id: "2", text: "B" }, + ], + }); + + // Initially, items should be sorted alphabetically. + await openMenu(); + expect(nthRenderedOptionText(0)).toBe("A"); + expect(nthRenderedOptionText(1)).toBe("B"); + expect(nthRenderedOptionText(2)).toBe("C"); }); - await openMenu(); - expect(nthRenderedOptionText(0)).toBe("A"); - expect(nthRenderedOptionText(1)).toBe("B"); - expect(nthRenderedOptionText(2)).toBe("C"); + it("immediately moves selected items to the top (with selectionFeedback: top)", async () => { + render(MultiSelect, { + items: [ + { id: "3", text: "C" }, + { id: "1", text: "A" }, + { id: "2", text: "B" }, + ], + selectionFeedback: "top", + }); + + // Initially, items should be sorted alphabetically. + await openMenu(); + expect(nthRenderedOptionText(0)).toBe("A"); + + await toggleOption("C"); + expect(nthRenderedOptionText(0)).toBe("C"); + + await toggleOption("C"); + expect(nthRenderedOptionText(0)).toBe("A"); + }); + + it("sorts newly-toggled items only after the dropdown is reoponed (with selectionFeedback: top-after-reopen)", async () => { + render(MultiSelect, { + items: [ + { id: "3", text: "C" }, + { id: "1", text: "A" }, + { id: "2", text: "B" }, + ], + }); + + // Initially, items should be sorted alphabetically. + await openMenu(); + expect(nthRenderedOptionText(0)).toBe("A"); + + // While the menu is still open, a newly-selected item should not move. + await toggleOption("C"); + expect(nthRenderedOptionText(0)).toBe("A"); + + // The newly-selected item should move after the menu is closed and + // re-opened. + await closeMenu(); + await openMenu(); + expect(nthRenderedOptionText(0)).toBe("C"); + + // A deselected item should not move while the dropdown is still open. + await toggleOption("C"); + expect(nthRenderedOptionText(0)).toBe("C"); + + // The deselected item should move after closing and re-opening the dropdown. + await closeMenu(); + await openMenu(); + expect(nthRenderedOptionText(0)).toBe("A"); + }); + + it("never moves selected items to the top (with selectionFeedback: fixed)", async () => { + render(MultiSelect, { + items: [ + { id: "3", text: "C" }, + { id: "1", text: "A" }, + { id: "2", text: "B" }, + ], + selectionFeedback: "fixed", + }); + + // Items should be sorted alphabetically. + await openMenu(); + expect(nthRenderedOptionText(0)).toBe("A"); + + // A newly-selected item should not move after the selection is made. + await toggleOption("C"); + expect(nthRenderedOptionText(0)).toBe("A"); + + // The newly-selected item also shouldn’t move after the dropdown is closed + // and reopened. + await closeMenu(); + await openMenu(); + expect(nthRenderedOptionText(0)).toBe("A"); + }); }); - it("immediately moves selected items to the top (with selectionFeedback: top)", async () => { - render(MultiSelect, { - items: [ - { id: "3", text: "C" }, - { id: "1", text: "A" }, - { id: "2", text: "B" }, - ], - selectionFeedback: "top", + describe("filtering behavior", () => { + it("should filter items based on input value", async () => { + render(MultiSelect, { + items, + filterable: true, + placeholder: "Filter items...", + }); + + await openMenu(); + const input = screen.getByPlaceholderText("Filter items..."); + await user.type(input, "em"); + + expect(screen.queryByText("Slack")).not.toBeInTheDocument(); + expect(screen.getByText("Email")).toBeInTheDocument(); + expect(screen.queryByText("Fax")).not.toBeInTheDocument(); }); - await openMenu(); - expect(nthRenderedOptionText(0)).toBe("A"); + it("should use custom filter function", async () => { + render(MultiSelect, { + items, + filterable: true, + filterItem: (item, value) => + item.text.toLowerCase().startsWith(value.toLowerCase()), + }); - await toggleOption("C"); - expect(nthRenderedOptionText(0)).toBe("C"); + await openMenu(); + const input = screen.getByRole("combobox"); + await user.type(input, "e"); - await toggleOption("C"); - expect(nthRenderedOptionText(0)).toBe("A"); + expect(screen.queryByText("Slack")).not.toBeInTheDocument(); + expect(screen.getByText("Email")).toBeInTheDocument(); + expect(screen.queryByText("Fax")).not.toBeInTheDocument(); + }); + + // TODO(bug): ListBoxSelection aria-labels should be user-friendly + it.skip("should clear filter on selection clear", async () => { + render(MultiSelect, { + items, + filterable: true, + selectedIds: ["0"], + }); + + const clearButton = screen.getByLabelText("Clear all"); + await user.click(clearButton); + + const input = screen.getByRole("combobox"); + expect(input).toHaveValue(""); + }); }); - it("sorts newly-toggled items only after the dropdown is reoponed (with selectionFeedback: top-after-reopen)", async () => { - render(MultiSelect, { - items: [ - { id: "3", text: "C" }, - { id: "1", text: "A" }, - { id: "2", text: "B" }, - ], + describe("keyboard navigation", () => { + it("should handle arrow keys for navigation", async () => { + render(MultiSelect, { items }); + + await openMenu(); + await user.keyboard("{ArrowDown}"); + + const options = screen.getAllByRole("option"); + expect(options[0]).toHaveClass("bx--list-box__menu-item--highlighted"); }); - // Initially, items should be sorted alphabetically. - await openMenu(); - expect(nthRenderedOptionText(0)).toBe("A"); + it("should select item with Enter key", async () => { + const { component } = render(MultiSelect, { items }); + const selectHandler = vi.fn(); + component.$on("select", selectHandler); - // While the menu is still open, a newly-selected item should not move. - await toggleOption("C"); - expect(nthRenderedOptionText(0)).toBe("A"); + await openMenu(); + await user.keyboard("{ArrowDown}"); + await user.keyboard("{Enter}"); - // The newly-selected item should move after the menu is closed and - // re-opened. - await closeMenu(); - await openMenu(); - expect(nthRenderedOptionText(0)).toBe("C"); + expect(selectHandler).toHaveBeenCalled(); + }); - // A deselected item should not move while the dropdown is still open. - await toggleOption("C"); - expect(nthRenderedOptionText(0)).toBe("C"); + it("should close menu with Escape key", async () => { + render(MultiSelect, { items }); - // The deselected item should move after closing and re-opening the dropdown. - await closeMenu(); - await openMenu(); - expect(nthRenderedOptionText(0)).toBe("A"); + await openMenu(); + await user.keyboard("{Escape}"); + + const button = screen.getByRole("button"); + expect(button).toHaveAttribute("aria-expanded", "false"); + }); }); - it("never moves selected items to the top (with selectionFeedback: fixed)", async () => { - render(MultiSelect, { - items: [ - { id: "3", text: "C" }, - { id: "1", text: "A" }, - { id: "2", text: "B" }, - ], - selectionFeedback: "fixed", + describe("accessibility", () => { + it("should handle hidden label", () => { + render(MultiSelect, { + items, + titleText: "Contact methods", + hideLabel: true, + }); + + const label = screen.getByText("Contact methods"); + expect(label).toHaveClass("bx--visually-hidden"); }); - // Items should be sorted alphabetically. - await openMenu(); - expect(nthRenderedOptionText(0)).toBe("A"); + it("should handle custom aria-label", async () => { + render(MultiSelect, { + items, + "aria-label": "Custom label", + }); - // A newly-selected item should not move after the selection is made. - await toggleOption("C"); - expect(nthRenderedOptionText(0)).toBe("A"); + await openMenu(); + const menu = screen.getByLabelText("Custom label"); + expect(menu).toBeInTheDocument(); + }); + }); - // The newly-selected item also shouldn’t move after the dropdown is closed - // and reopened. - await closeMenu(); - await openMenu(); - expect(nthRenderedOptionText(0)).toBe("A"); + describe("variants and states", () => { + it("should render in light variant", async () => { + render(MultiSelect, { + items, + light: true, + }); + + await openMenu(); + const listBox = screen.getByRole("listbox").closest(".bx--list-box"); + expect(listBox).toHaveClass("bx--list-box--light"); + }); + + it("should render in inline variant", () => { + render(MultiSelect, { + items, + type: "inline", + }); + + const wrapper = screen + .getByRole("button") + .closest(".bx--multi-select__wrapper"); + expect(wrapper).toHaveClass("bx--multi-select__wrapper--inline"); + }); + + it("should handle invalid state", () => { + render(MultiSelect, { + items, + invalid: true, + invalidText: "Invalid selection", + }); + + expect(screen.getByText("Invalid selection")).toBeInTheDocument(); + const wrapper = screen.getByRole("button").closest(".bx--list-box"); + expect(wrapper).toHaveClass("bx--multi-select--invalid"); + }); + + it("should handle warning state", () => { + render(MultiSelect, { + items, + warn: true, + warnText: "Warning message", + }); + + expect(screen.getByText("Warning message")).toBeInTheDocument(); + const wrapper = screen.getByRole("button").closest(".bx--list-box"); + expect(wrapper).toHaveClass("bx--list-box--warning"); + }); + + it("should handle disabled state", () => { + render(MultiSelect, { items, disabled: true }); + + const field = screen.getByRole("button"); + expect(field).toHaveAttribute("aria-disabled", "true"); + expect(field).toHaveAttribute("tabindex", "-1"); + expect(field.closest(".bx--multi-select")).toHaveAttribute( + "tabindex", + "-1", + ); + }); + + it("should handle disabled items", async () => { + const itemsWithDisabled = [ + { id: "0", text: "Slack" }, + { id: "1", text: "Email", disabled: true }, + { id: "2", text: "Fax" }, + ]; + + render(MultiSelect, { + items: itemsWithDisabled, + }); + + await openMenu(); + const emailOption = screen + .getByText("Email") + .closest(".bx--list-box__menu-item"); + expect(emailOption).toHaveAttribute("disabled"); + }); + }); + + describe("custom formatting", () => { + it("should handle custom itemToString", () => { + render(MultiSelect, { + items, + selectedIds: ["0"], + itemToString: (item) => `${item.text} (${item.id})`, + }); + + expect(screen.getByText("Slack (0)")).toBeInTheDocument(); + }); + + it("should handle custom itemToInput", async () => { + render(MultiSelect, { + items, + itemToInput: (item) => ({ + name: `contact_${item.id}`, + value: item.text.toLowerCase(), + }), + }); + + await openMenu(); + const checkbox = screen.getByText("Slack"); + const checkboxWrapper = checkbox.closest(".bx--checkbox-wrapper"); + assert(checkboxWrapper); + + const checkboxInput = checkboxWrapper.querySelector("input"); + expect(checkboxInput).toHaveAttribute("name", "contact_0"); + }); }); }); From 1478486d8ff20ec505f43fbaa435897dbc40fe19 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Thu, 20 Mar 2025 16:54:42 -0700 Subject: [PATCH 073/235] test(password-input): add unit tests --- tests/PasswordInput.test.svelte | 30 --- tests/PasswordInput/PasswordInput.test.svelte | 66 ++++++ tests/PasswordInput/PasswordInput.test.ts | 196 ++++++++++++++++++ 3 files changed, 262 insertions(+), 30 deletions(-) delete mode 100644 tests/PasswordInput.test.svelte create mode 100644 tests/PasswordInput/PasswordInput.test.svelte create mode 100644 tests/PasswordInput/PasswordInput.test.ts diff --git a/tests/PasswordInput.test.svelte b/tests/PasswordInput.test.svelte deleted file mode 100644 index d690c514..00000000 --- a/tests/PasswordInput.test.svelte +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/tests/PasswordInput/PasswordInput.test.svelte b/tests/PasswordInput/PasswordInput.test.svelte new file mode 100644 index 00000000..2f451be2 --- /dev/null +++ b/tests/PasswordInput/PasswordInput.test.svelte @@ -0,0 +1,66 @@ + + + { + console.log("focus"); + }} + on:blur={() => { + console.log("blur"); + }} + on:paste +/> + +
{value}
diff --git a/tests/PasswordInput/PasswordInput.test.ts b/tests/PasswordInput/PasswordInput.test.ts new file mode 100644 index 00000000..33605239 --- /dev/null +++ b/tests/PasswordInput/PasswordInput.test.ts @@ -0,0 +1,196 @@ +import { render, screen } from "@testing-library/svelte"; +import PasswordInput from "./PasswordInput.test.svelte"; +import { user } from "../setup-tests"; + +describe("PasswordInput", () => { + describe("Default", () => { + it("should render with a label", () => { + render(PasswordInput, { + labelText: "Password", + placeholder: "Enter password...", + }); + + expect(screen.getByLabelText("Password")).toBeInTheDocument(); + expect( + screen.getByPlaceholderText("Enter password..."), + ).toBeInTheDocument(); + }); + + it("should toggle password visibility", async () => { + render(PasswordInput, { labelText: "Password", value: "secret123" }); + + const input = screen.getByLabelText("Password"); + expect(input).toHaveAttribute("type", "password"); + + await user.click(screen.getByText("Show password")); + expect(input).toHaveAttribute("type", "text"); + + await user.click(screen.getByText("Hide password")); + expect(input).toHaveAttribute("type", "password"); + }); + + it("should handle custom visibility labels", async () => { + render(PasswordInput, { + labelText: "Password", + hidePasswordLabel: "Custom hide", + showPasswordLabel: "Custom show", + }); + + expect(screen.getByLabelText("Password")).toBeInTheDocument(); + await user.click(screen.getByText("Custom show")); + expect(screen.getByText("Custom hide")).toBeInTheDocument(); + await user.click(screen.getByText("Custom hide")); + expect(screen.getByText("Custom show")).toBeInTheDocument(); + }); + }); + + describe("Tooltip", () => { + it("should handle custom tooltip alignment", () => { + render(PasswordInput, { + labelText: "Password", + tooltipAlignment: "start", + tooltipPosition: "left", + }); + + const button = screen.getByRole("button"); + expect(button).toHaveClass("bx--tooltip--align-start"); + expect(button).toHaveClass("bx--tooltip--left"); + }); + }); + + describe("States", () => { + it("should handle invalid state", () => { + render(PasswordInput, { + labelText: "Password", + invalid: true, + invalidText: "Password must be at least 8 characters", + }); + + expect( + screen.getByText("Password must be at least 8 characters"), + ).toBeInTheDocument(); + const wrapper = screen + .getByLabelText("Password") + .closest(".bx--text-input__field-wrapper"); + expect(wrapper).toHaveAttribute("data-invalid"); + }); + + it("should handle warning state", () => { + render(PasswordInput, { + labelText: "Password", + warn: true, + warnText: "Password will expire soon", + }); + + expect(screen.getByText("Password will expire soon")).toBeInTheDocument(); + const input = screen.getByLabelText("Password"); + expect(input).toHaveClass("bx--text-input--warning"); + }); + + it("should handle disabled state", () => { + render(PasswordInput, { + labelText: "Password", + disabled: true, + value: "disabled-password", + }); + + const input = screen.getByLabelText("Password"); + expect(input).toBeDisabled(); + expect(input).toHaveValue("disabled-password"); + + const toggleButton = screen.getByRole("button"); + expect(toggleButton).toBeDisabled(); + expect(toggleButton).toHaveClass("bx--btn--disabled"); + }); + + it("should handle helper text", () => { + render(PasswordInput, { + labelText: "Password", + helperText: "Your password should be hard to guess", + }); + + expect( + screen.getByText("Your password should be hard to guess"), + ).toBeInTheDocument(); + }); + }); + + describe("Variants", () => { + it("should render light variant", () => { + render(PasswordInput, { labelText: "Password", light: true }); + + const wrapper = screen + .getByLabelText("Password") + .closest(".bx--text-input-wrapper"); + expect(wrapper).toHaveClass("bx--text-input-wrapper--light"); + }); + + it("should render inline variant", () => { + render(PasswordInput, { + labelText: "Password", + inline: true, + }); + + const wrapper = screen + .getByLabelText("Password") + .closest(".bx--text-input-wrapper"); + expect(wrapper).toHaveClass("bx--text-input-wrapper--inline"); + }); + + it("should render in small size", () => { + render(PasswordInput, { labelText: "Password", size: "sm" }); + + const input = screen.getByLabelText("Password"); + expect(input).toHaveClass("bx--text-input--sm"); + }); + + it("should render in extra-large size", () => { + render(PasswordInput, { + labelText: "Password", + size: "xl", + }); + + const input = screen.getByLabelText("Password"); + expect(input).toHaveClass("bx--text-input--xl"); + }); + }); + + describe("Label handling", () => { + it("should handle hidden label", () => { + render(PasswordInput, { labelText: "Password", hideLabel: true }); + + const label = screen.getByText("Password"); + expect(label).toHaveClass("bx--visually-hidden"); + }); + + it("should handle custom id", () => { + render(PasswordInput, { labelText: "Password", id: "custom-id" }); + + const input = screen.getByLabelText("Password"); + expect(input).toHaveAttribute("id", "custom-id"); + }); + }); + + describe("Events", () => { + it("should handle input events", async () => { + render(PasswordInput, { labelText: "Password" }); + + const input = screen.getByLabelText("Password"); + await user.type(input, "test123"); + expect(screen.getByTestId("value")).toHaveTextContent("test123"); + }); + + it("should handle focus and blur events", async () => { + const consoleLog = vi.spyOn(console, "log"); + render(PasswordInput, { labelText: "Password" }); + + expect(consoleLog).not.toHaveBeenCalled(); + const input = screen.getByLabelText("Password"); + await user.click(input); + expect(consoleLog).toHaveBeenCalledWith("focus"); + + await user.tab(); + expect(consoleLog).toHaveBeenCalledWith("blur"); + }); + }); +}); From f7ac0e3f224317ef8664be718bc6ff75ce37e821 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Thu, 20 Mar 2025 17:05:24 -0700 Subject: [PATCH 074/235] test(progress-indicator): add unit tests --- tests/ProgressIndicator.test.svelte | 83 ------ .../ProgressIndicator.test.svelte | 35 +++ .../ProgressIndicator.test.ts | 247 ++++++++++++++++++ 3 files changed, 282 insertions(+), 83 deletions(-) delete mode 100644 tests/ProgressIndicator.test.svelte create mode 100644 tests/ProgressIndicator/ProgressIndicator.test.svelte create mode 100644 tests/ProgressIndicator/ProgressIndicator.test.ts diff --git a/tests/ProgressIndicator.test.svelte b/tests/ProgressIndicator.test.svelte deleted file mode 100644 index 0f1e5cc7..00000000 --- a/tests/ProgressIndicator.test.svelte +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/ProgressIndicator/ProgressIndicator.test.svelte b/tests/ProgressIndicator/ProgressIndicator.test.svelte new file mode 100644 index 00000000..4f8a4d06 --- /dev/null +++ b/tests/ProgressIndicator/ProgressIndicator.test.svelte @@ -0,0 +1,35 @@ + + + { + console.log("change", e.detail); + }} +> + {#each steps as step} + + {/each} + diff --git a/tests/ProgressIndicator/ProgressIndicator.test.ts b/tests/ProgressIndicator/ProgressIndicator.test.ts new file mode 100644 index 00000000..649d37cb --- /dev/null +++ b/tests/ProgressIndicator/ProgressIndicator.test.ts @@ -0,0 +1,247 @@ +import { render, screen } from "@testing-library/svelte"; +import ProgressIndicator from "./ProgressIndicator.test.svelte"; +import { user } from "../setup-tests"; + +describe("ProgressIndicator", () => { + describe("Default (horizontal)", () => { + it("should render steps with correct states", () => { + render(ProgressIndicator, { + currentIndex: 2, + steps: [ + { label: "Step 1", description: "First step", complete: true }, + { label: "Step 2", description: "Second step", complete: true }, + { label: "Step 3", description: "Third step", complete: true }, + { label: "Step 4", description: "Fourth step", complete: false }, + ], + }); + + const listItems = screen.getAllByRole("listitem"); + + // Check if all steps are rendered + expect(listItems).toHaveLength(4); + + // Check completed steps + const completedSteps = listItems.filter((step) => + step.classList.contains("bx--progress-step--complete"), + ); + expect(completedSteps).toHaveLength(3); + + // Check current step + expect(listItems[2]).toHaveTextContent("Step 3"); + + // Check incomplete step + const incompleteStep = screen.getByText("Step 4"); + expect(incompleteStep).toBeInTheDocument(); + expect(incompleteStep.closest("li")).not.toHaveClass( + "bx--progress-step--complete", + ); + }); + + it("should update currentIndex when clicking on completed steps", async () => { + const consoleLog = vi.spyOn(console, "log"); + render(ProgressIndicator, { + currentIndex: 2, + steps: [ + { label: "Step 1", description: "First step", complete: true }, + { label: "Step 2", description: "Second step", complete: true }, + { label: "Step 3", description: "Third step", complete: true }, + { label: "Step 4", description: "Fourth step", complete: false }, + ], + }); + + expect(consoleLog).not.toHaveBeenCalled(); + + // Click on a completed step + await user.click(screen.getByText("Step 1")); + expect(consoleLog).toHaveBeenCalledWith("change", 0); + }); + + it("should not update currentIndex when preventChangeOnClick is true", async () => { + const { component } = render(ProgressIndicator, { + currentIndex: 2, + preventChangeOnClick: true, + steps: [ + { label: "Step 1", description: "First step", complete: true }, + { label: "Step 2", description: "Second step", complete: true }, + { label: "Step 3", description: "Third step", complete: true }, + { label: "Step 4", description: "Fourth step", complete: false }, + ], + }); + + const changeHandler = vi.fn(); + component.$on("change", changeHandler); + + // Click on a completed step + await user.click(screen.getByText("Step 1")); + expect(changeHandler).not.toHaveBeenCalled(); + }); + }); + + describe("Invalid and disabled states", () => { + it("should render invalid step", () => { + render(ProgressIndicator, { + steps: [ + { label: "Step 1", description: "First step", complete: true }, + { + label: "Step 2", + description: "Second step", + complete: false, + invalid: true, + disabled: false, + }, + { label: "Step 3", description: "Third step", complete: false }, + ], + }); + + const invalidStep = screen.getByText("Step 2").closest("li"); + expect(invalidStep).toHaveClass("bx--progress-step--incomplete"); + }); + + it("should render disabled steps", () => { + render(ProgressIndicator, { + steps: [ + { label: "Step 1", description: "First step", complete: true }, + { + label: "Step 2", + description: "Second step", + complete: false, + invalid: false, + disabled: true, + }, + { + label: "Step 3", + description: "Third step", + complete: false, + invalid: false, + disabled: true, + }, + ], + }); + + const disabledSteps = screen.getAllByRole("listitem").slice(1); + disabledSteps.forEach((step) => { + expect(step).toHaveClass("bx--progress-step--disabled"); + }); + }); + }); + + describe("Variants", () => { + it("should render vertical variant", () => { + render(ProgressIndicator, { + vertical: true, + steps: [ + { label: "Step 1", description: "First step", complete: false }, + { label: "Step 2", description: "Second step", complete: false }, + { label: "Step 3", description: "Third step", complete: false }, + ], + }); + + const progressIndicator = screen.getByRole("list"); + expect(progressIndicator).toHaveClass("bx--progress--vertical"); + }); + + it("should render with equal spacing", () => { + render(ProgressIndicator, { + spaceEqually: true, + steps: [ + { label: "Step 1", description: "First step", complete: false }, + { label: "Step 2", description: "Second step", complete: false }, + { label: "Step 3", description: "Third step", complete: false }, + ], + }); + + const progressIndicator = screen.getByRole("list"); + expect(progressIndicator).toHaveClass("bx--progress--space-equal"); + }); + + it("should not apply equal spacing in vertical variant", () => { + render(ProgressIndicator, { + vertical: true, + spaceEqually: true, + steps: [ + { label: "Step 1", description: "First step", complete: false }, + { label: "Step 2", description: "Second step", complete: false }, + { label: "Step 3", description: "Third step", complete: false }, + ], + }); + + const progressIndicator = screen.getByRole("list"); + expect(progressIndicator).not.toHaveClass("bx--progress--space-equal"); + }); + }); + + describe("Accessibility", () => { + it("should have correct button attributes for different states", () => { + render(ProgressIndicator, { + currentIndex: 1, + steps: [ + { label: "Step 1", description: "First step", complete: true }, + { label: "Step 2", description: "Second step", complete: false }, + { label: "Step 3", description: "Third step", complete: false }, + ], + }); + + const buttons = screen.getAllByRole("button"); + + // Complete step button should be clickable + expect(buttons[0]).toHaveAttribute("tabindex", "0"); + expect(buttons[0]).toHaveAttribute("aria-disabled", "false"); + expect(buttons[0]).not.toHaveClass( + "bx--progress-step-button--unclickable", + ); + + // Current step button should be unclickable + expect(buttons[1]).toHaveAttribute("tabindex", "-1"); + expect(buttons[1]).toHaveAttribute("aria-disabled", "false"); + expect(buttons[1]).toHaveClass("bx--progress-step-button--unclickable"); + + // Incomplete step button should be unclickable + expect(buttons[2]).toHaveAttribute("tabindex", "0"); + expect(buttons[2]).toHaveAttribute("aria-disabled", "false"); + expect(buttons[2]).not.toHaveClass( + "bx--progress-step-button--unclickable", + ); + }); + + it("should have correct button attributes for disabled state", () => { + render(ProgressIndicator, { + steps: [ + { label: "Step 1", description: "First step", complete: true }, + { + label: "Step 2", + description: "Second step", + complete: false, + disabled: true, + }, + ], + }); + + const disabledButton = screen.getAllByRole("button")[1]; + expect(disabledButton).toHaveAttribute("disabled"); + expect(disabledButton).toHaveAttribute("aria-disabled", "true"); + expect(disabledButton).toHaveAttribute("tabindex", "-1"); + }); + + it("should support keyboard navigation for complete steps", async () => { + const consoleLog = vi.spyOn(console, "log"); + render(ProgressIndicator, { + currentIndex: 1, + steps: [ + { label: "Step 1", description: "First step", complete: true }, + { label: "Step 2", description: "Second step", complete: false }, + ], + }); + + expect(consoleLog).not.toHaveBeenCalled(); + const completeStepButton = screen.getAllByRole("button")[0]; + await user.tab(); + expect(completeStepButton).toHaveFocus(); + + await user.keyboard("{Enter}"); + expect(consoleLog).toHaveBeenCalledWith("change", 0); + + await user.keyboard(" "); + expect(consoleLog).toHaveBeenCalledWith("change", 0); + }); + }); +}); From d45409c7f3245565c117b290718534e828fd164e Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Thu, 20 Mar 2025 17:19:33 -0700 Subject: [PATCH 075/235] test(grid): add unit tests --- tests/FullWidthGrid.test.svelte | 12 --- tests/Grid.test.svelte | 12 --- tests/Grid/Grid.test.svelte | 44 ++++++++++ tests/Grid/Grid.test.ts | 137 ++++++++++++++++++++++++++++++++ tests/NarrowGrid.test.svelte | 12 --- 5 files changed, 181 insertions(+), 36 deletions(-) delete mode 100644 tests/FullWidthGrid.test.svelte delete mode 100644 tests/Grid.test.svelte create mode 100644 tests/Grid/Grid.test.svelte create mode 100644 tests/Grid/Grid.test.ts delete mode 100644 tests/NarrowGrid.test.svelte diff --git a/tests/FullWidthGrid.test.svelte b/tests/FullWidthGrid.test.svelte deleted file mode 100644 index 40157f83..00000000 --- a/tests/FullWidthGrid.test.svelte +++ /dev/null @@ -1,12 +0,0 @@ - - - - - Column - Column - Column - Column - - diff --git a/tests/Grid.test.svelte b/tests/Grid.test.svelte deleted file mode 100644 index b6a74224..00000000 --- a/tests/Grid.test.svelte +++ /dev/null @@ -1,12 +0,0 @@ - - - - - Column - Column - Column - Column - - diff --git a/tests/Grid/Grid.test.svelte b/tests/Grid/Grid.test.svelte new file mode 100644 index 00000000..96cf0199 --- /dev/null +++ b/tests/Grid/Grid.test.svelte @@ -0,0 +1,44 @@ + + +{#if as} + +
+ +
+
+{:else} + + + +{/if} diff --git a/tests/Grid/Grid.test.ts b/tests/Grid/Grid.test.ts new file mode 100644 index 00000000..e9d7be1c --- /dev/null +++ b/tests/Grid/Grid.test.ts @@ -0,0 +1,137 @@ +import { render } from "@testing-library/svelte"; +import Grid from "./Grid.test.svelte"; + +describe("Grid", () => { + describe("Default", () => { + it("should render as a div by default", () => { + const { container } = render(Grid); + const grid = container.querySelector("div.bx--grid"); + expect(grid).toHaveClass("bx--grid"); + }); + + it("should support rest props", () => { + const { container } = render(Grid, { + props: { + "data-testid": "custom-grid", + "aria-label": "Grid layout", + }, + }); + const grid = container.querySelector("[data-testid='custom-grid']"); + expect(grid).toHaveClass("bx--grid"); + expect(grid).toHaveAttribute("aria-label", "Grid layout"); + }); + }); + + it("should render condensed variant", () => { + const { container } = render(Grid, { + props: { condensed: true }, + }); + const grid = container.querySelector("div.bx--grid"); + expect(grid).toHaveClass("bx--grid--condensed"); + }); + + it("should render narrow variant", () => { + const { container } = render(Grid, { + props: { narrow: true }, + }); + const grid = container.querySelector("div.bx--grid"); + expect(grid).toHaveClass("bx--grid--narrow"); + }); + + it("should render full width variant", () => { + const { container } = render(Grid, { + props: { fullWidth: true }, + }); + const grid = container.querySelector("div.bx--grid"); + expect(grid).toHaveClass("bx--grid--full-width"); + }); + + it("should render with no gutter", () => { + const { container } = render(Grid, { + props: { noGutter: true }, + }); + const grid = container.querySelector("div.bx--grid"); + expect(grid).toHaveClass("bx--no-gutter"); + }); + + it("should render with no left gutter", () => { + const { container } = render(Grid, { + props: { noGutterLeft: true }, + }); + const grid = container.querySelector("div.bx--grid"); + expect(grid).toHaveClass("bx--no-gutter--left"); + }); + + it("should render with no right gutter", () => { + const { container } = render(Grid, { + props: { + noGutterRight: true, + }, + }); + const grid = container.querySelector("div.bx--grid"); + expect(grid).toHaveClass("bx--no-gutter--right"); + }); + + it("should render with row padding", () => { + const { container } = render(Grid, { + props: { + padding: true, + }, + }); + const grid = container.querySelector("div.bx--grid"); + expect(grid).toHaveClass("bx--row-padding"); + }); + + it("should render as a custom element using the as prop", () => { + const { container } = render(Grid, { props: { as: true } }); + + const header = container.querySelector("header"); + expect(header).toHaveClass("bx--grid"); + }); + + it("should pass all variant classes and rest props to custom element", () => { + const { container } = render(Grid, { + props: { + as: true, + condensed: true, + narrow: true, + fullWidth: true, + noGutter: true, + padding: true, + "data-testid": "custom-header", + "aria-label": "Custom header grid", + }, + }); + const header = container.querySelector("[data-testid='custom-header']"); + expect(header).toHaveClass( + "bx--grid", + "bx--grid--condensed", + "bx--grid--narrow", + "bx--grid--full-width", + "bx--no-gutter", + "bx--row-padding", + ); + expect(header).toHaveAttribute("aria-label", "Custom header grid"); + }); + + it("should combine multiple variant classes", () => { + const { container } = render(Grid, { + props: { + condensed: true, + narrow: true, + noGutterLeft: true, + noGutterRight: true, + padding: true, + }, + }); + const grid = container.querySelector("div.bx--grid"); + expect(grid).toHaveClass( + "bx--grid", + "bx--grid--condensed", + "bx--grid--narrow", + "bx--no-gutter--left", + "bx--no-gutter--right", + "bx--row-padding", + ); + }); +}); diff --git a/tests/NarrowGrid.test.svelte b/tests/NarrowGrid.test.svelte deleted file mode 100644 index ff498960..00000000 --- a/tests/NarrowGrid.test.svelte +++ /dev/null @@ -1,12 +0,0 @@ - - - - - Column - Column - Column - Column - - From 95f6c97a57594222767e7e4ec7783d252fe54644 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Thu, 20 Mar 2025 17:08:13 -0700 Subject: [PATCH 076/235] test: remove old files --- tests/CopyableCodeSnippet.test.svelte | 8 ---- tests/DynamicCodeSnippet.test.svelte | 10 ----- tests/FilterableComboBox.test.svelte | 19 ---------- tests/InlineLoadingUx.test.svelte | 54 --------------------------- 4 files changed, 91 deletions(-) delete mode 100644 tests/CopyableCodeSnippet.test.svelte delete mode 100644 tests/DynamicCodeSnippet.test.svelte delete mode 100644 tests/FilterableComboBox.test.svelte delete mode 100644 tests/InlineLoadingUx.test.svelte diff --git a/tests/CopyableCodeSnippet.test.svelte b/tests/CopyableCodeSnippet.test.svelte deleted file mode 100644 index b22b0eb6..00000000 --- a/tests/CopyableCodeSnippet.test.svelte +++ /dev/null @@ -1,8 +0,0 @@ - - - copy(code)}>{code} diff --git a/tests/DynamicCodeSnippet.test.svelte b/tests/DynamicCodeSnippet.test.svelte deleted file mode 100644 index 9c7ff1db..00000000 --- a/tests/DynamicCodeSnippet.test.svelte +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/tests/FilterableComboBox.test.svelte b/tests/FilterableComboBox.test.svelte deleted file mode 100644 index d4e216b3..00000000 --- a/tests/FilterableComboBox.test.svelte +++ /dev/null @@ -1,19 +0,0 @@ - - - diff --git a/tests/InlineLoadingUx.test.svelte b/tests/InlineLoadingUx.test.svelte deleted file mode 100644 index 85ee8031..00000000 --- a/tests/InlineLoadingUx.test.svelte +++ /dev/null @@ -1,54 +0,0 @@ - - - - - {#if state !== "dormant"} - - {:else} - - {/if} - From c6c80d35a90bf8b41b6c18932b6a26f6448e0cb8 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Thu, 20 Mar 2025 17:20:53 -0700 Subject: [PATCH 077/235] test: remove CSS import from set-up file --- tests/setup-tests.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/setup-tests.ts b/tests/setup-tests.ts index 8f22aad9..9b36ceec 100644 --- a/tests/setup-tests.ts +++ b/tests/setup-tests.ts @@ -1,7 +1,6 @@ /// import "@testing-library/jest-dom/vitest"; import { userEvent } from "@testing-library/user-event"; -import "../css/all.css"; // Mock scrollIntoView since it's not implemented in JSDOM Element.prototype.scrollIntoView = vi.fn(); From dd1338ffc47926a13e231d4a0f724e923f2219e2 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Sat, 22 Mar 2025 12:59:16 -0700 Subject: [PATCH 078/235] fix(list-box-selection): fix `aria-label` for clear button (#2134) `ListBoxSelection`, used by `MultiSelect` and `ComboBox`, currently applies the wrong `aria-label` for the clear selection button. It uses the `translateId` (e.g., `"clearAll"`) instead of the user-friendly copy. --- src/ListBox/ListBoxSelection.svelte | 6 ++++-- tests/ComboBox/ComboBox.test.ts | 10 ++++++++++ tests/MultiSelect/MultiSelect.test.ts | 5 ++--- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/ListBox/ListBoxSelection.svelte b/src/ListBox/ListBoxSelection.svelte index beb800d8..f4192015 100644 --- a/src/ListBox/ListBoxSelection.svelte +++ b/src/ListBox/ListBoxSelection.svelte @@ -48,7 +48,9 @@ $: translationId = selectionCount ? translationIds.clearAll : translationIds.clearSelection; - + $: buttonLabel = + translateWithId?.(translationIds.clearAll) ?? + defaultTranslations[translationIds.clearAll]; $: description = translateWithId?.(translationId) ?? defaultTranslations[translationId]; @@ -79,7 +81,7 @@ } }} {disabled} - aria-label={translationIds.clearAll} + aria-label={buttonLabel} title={description} > diff --git a/tests/ComboBox/ComboBox.test.ts b/tests/ComboBox/ComboBox.test.ts index 2ac7534f..f14fd581 100644 --- a/tests/ComboBox/ComboBox.test.ts +++ b/tests/ComboBox/ComboBox.test.ts @@ -193,6 +193,16 @@ describe("ComboBox", () => { expect(screen.getByRole("listbox")).toHaveClass("bx--list-box--up"); }); + it("should clear filter on selection clear", async () => { + render(ComboBoxCustom, { props: { selectedId: "1" } }); + + const clearButton = screen.getByLabelText("Clear selected item"); + await user.click(clearButton); + + const input = screen.getByRole("textbox"); + expect(input).toHaveValue(""); + }); + it("should programmatically clear selection", async () => { render(ComboBoxCustom, { props: { selectedId: "1" } }); diff --git a/tests/MultiSelect/MultiSelect.test.ts b/tests/MultiSelect/MultiSelect.test.ts index 7d2b8fae..cfd668e6 100644 --- a/tests/MultiSelect/MultiSelect.test.ts +++ b/tests/MultiSelect/MultiSelect.test.ts @@ -166,15 +166,14 @@ describe("MultiSelect", () => { expect(screen.queryByText("Fax")).not.toBeInTheDocument(); }); - // TODO(bug): ListBoxSelection aria-labels should be user-friendly - it.skip("should clear filter on selection clear", async () => { + it("should clear filter on selection clear", async () => { render(MultiSelect, { items, filterable: true, selectedIds: ["0"], }); - const clearButton = screen.getByLabelText("Clear all"); + const clearButton = screen.getByLabelText("Clear all selected items"); await user.click(clearButton); const input = screen.getByRole("combobox"); From 1462e300d69f0cd7ee5476dfe3a7ea892ac8f4ad Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Sat, 22 Mar 2025 13:02:28 -0700 Subject: [PATCH 079/235] fix(radio-button): forward `focus`, `blur` events (#2135) As identified in #2131, `focus` and `blur` events should be forwarded to the underlying `RadioButton` element. --- COMPONENT_INDEX.md | 2 ++ docs/src/COMPONENT_API.json | 10 ++++++++++ src/RadioButton/RadioButton.svelte | 2 ++ tests/RadioButton/RadioButton.test.svelte | 6 ++++++ tests/RadioButton/RadioButton.test.ts | 3 +-- types/RadioButton/RadioButton.svelte.d.ts | 6 +++++- 6 files changed, 26 insertions(+), 3 deletions(-) diff --git a/COMPONENT_INDEX.md b/COMPONENT_INDEX.md index 9a14e927..be19a1ca 100644 --- a/COMPONENT_INDEX.md +++ b/COMPONENT_INDEX.md @@ -2966,6 +2966,8 @@ None. | Event name | Type | Detail | | :--------- | :-------- | :----- | +| focus | forwarded | -- | +| blur | forwarded | -- | | change | forwarded | -- | ## `RadioButtonGroup` diff --git a/docs/src/COMPONENT_API.json b/docs/src/COMPONENT_API.json index d1115787..e4826601 100644 --- a/docs/src/COMPONENT_API.json +++ b/docs/src/COMPONENT_API.json @@ -11389,6 +11389,16 @@ } ], "events": [ + { + "type": "forwarded", + "name": "focus", + "element": "input" + }, + { + "type": "forwarded", + "name": "blur", + "element": "input" + }, { "type": "forwarded", "name": "change", diff --git a/src/RadioButton/RadioButton.svelte b/src/RadioButton/RadioButton.svelte index 6fecf17e..3ce9aa22 100644 --- a/src/RadioButton/RadioButton.svelte +++ b/src/RadioButton/RadioButton.svelte @@ -71,6 +71,8 @@ required={$groupRequired ?? required} {value} class:bx--radio-button={true} + on:focus + on:blur on:change on:change={() => { if (update) { diff --git a/tests/RadioButton/RadioButton.test.svelte b/tests/RadioButton/RadioButton.test.svelte index 166c4b42..59282887 100644 --- a/tests/RadioButton/RadioButton.test.svelte +++ b/tests/RadioButton/RadioButton.test.svelte @@ -26,6 +26,12 @@ {id} {name} {ref} + on:focus={() => { + console.log("focus"); + }} + on:blur={() => { + console.log("blur"); + }} on:change={() => { console.log("change"); }} diff --git a/tests/RadioButton/RadioButton.test.ts b/tests/RadioButton/RadioButton.test.ts index 6103c8d8..3b321c57 100644 --- a/tests/RadioButton/RadioButton.test.ts +++ b/tests/RadioButton/RadioButton.test.ts @@ -91,8 +91,7 @@ describe("RadioButton", () => { expect(consoleLog).toHaveBeenCalledWith("change"); }); - // TODO(bug): forward focus/blur events. - it.skip("should handle focus and blur events", async () => { + it("should handle focus and blur events", async () => { const consoleLog = vi.spyOn(console, "log"); render(RadioButton); diff --git a/types/RadioButton/RadioButton.svelte.d.ts b/types/RadioButton/RadioButton.svelte.d.ts index bc2e94d3..6933bef7 100644 --- a/types/RadioButton/RadioButton.svelte.d.ts +++ b/types/RadioButton/RadioButton.svelte.d.ts @@ -71,6 +71,10 @@ export type RadioButtonProps = Omit<$RestProps, keyof $Props> & $Props; export default class RadioButton extends SvelteComponentTyped< RadioButtonProps, - { change: WindowEventMap["change"] }, + { + focus: WindowEventMap["focus"]; + blur: WindowEventMap["blur"]; + change: WindowEventMap["change"]; + }, { labelText: {} } > {} From ca9beebaeac7eaed8079c010a86a78926b00147f Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Sat, 22 Mar 2025 13:03:20 -0700 Subject: [PATCH 080/235] fix(radio-tile): allow standalone `RadioTile` usage (#2136) Although `RadioTile` is meant to be used inside a `TileGroup`, it feels unpolished for standalone usage to crash due to a missing parent context. This fixes `RadioTile` to fail open by providing a no-op `add: () => {}` when `TileGroup` context is not found. --- src/Tile/RadioTile.svelte | 1 + tests/RadioTile/RadioTile.test.ts | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Tile/RadioTile.svelte b/src/Tile/RadioTile.svelte index 5e960c89..8ded1870 100644 --- a/src/Tile/RadioTile.svelte +++ b/src/Tile/RadioTile.svelte @@ -36,6 +36,7 @@ const { add, update, selectedValue, groupName, groupRequired } = getContext( "TileGroup", ) ?? { + add: () => {}, groupName: readable(undefined), groupRequired: readable(undefined), selectedValue: readable(checked ? value : undefined), diff --git a/tests/RadioTile/RadioTile.test.ts b/tests/RadioTile/RadioTile.test.ts index 351c01dc..9697654a 100644 --- a/tests/RadioTile/RadioTile.test.ts +++ b/tests/RadioTile/RadioTile.test.ts @@ -94,8 +94,7 @@ describe("RadioTile", () => { expect(radioTileLabel).toHaveAttribute("for", "custom-id"); }); - // TODO(bug): support standalone radio tile. - it.skip("should handle custom name", () => { + it("should handle custom name", () => { render(RadioTileSingle); expect(screen.getByRole("radio")).toHaveAttribute("name", "custom-name"); From 43511e09ecf312c1b8e9339856b9d7d0785036de Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Sat, 22 Mar 2025 13:03:52 -0700 Subject: [PATCH 081/235] fix(text-area): allow visually hidden label (#2137) This fixes an accessibility issue with `TextArea`. Currently, if `hideLabel` is `true`, the label is not rendered at all. The expected behavior is that it should be visually hidden while still being available to screen readers. --- src/TextArea/TextArea.svelte | 2 +- tests/TextArea/TextArea.test.ts | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/TextArea/TextArea.svelte b/src/TextArea/TextArea.svelte index 5c54aeb5..77f39419 100644 --- a/src/TextArea/TextArea.svelte +++ b/src/TextArea/TextArea.svelte @@ -71,7 +71,7 @@ on:mouseleave class:bx--form-item={true} > - {#if (labelText || $$slots.labelText) && !hideLabel} + {#if labelText || $$slots.labelText}