From e9561a0f22f971accc412ed143c4e56877951896 Mon Sep 17 00:00:00 2001
From: YuGilJong <101111364+XionWCFM@users.noreply.github.com>
Date: Sun, 22 Dec 2024 23:00:01 +0900
Subject: [PATCH] feat: Progress Development UI Packages (#27)
---
packages/ui/README.md | 3 +
packages/ui/package.json | 57 +
packages/ui/postcss.config.mjs | 10 +
packages/ui/src/box.test.tsx | 90 +
packages/ui/src/box.tsx | 19 +
packages/ui/src/center-stack.tsx | 18 +
packages/ui/src/center.test.tsx | 16 +
packages/ui/src/center.tsx | 13 +
packages/ui/src/flex.tsx | 11 +
packages/ui/src/index.ts | 12 +
packages/ui/src/internal/is-string.tsx | 1 +
packages/ui/src/internal/separated.tsx | 21 +
packages/ui/src/justify-between.tsx | 11 +
packages/ui/src/justify-end.tsx | 11 +
packages/ui/src/list.tsx | 28 +
packages/ui/src/polymorphics.ts | 16 +
packages/ui/src/row.test.tsx | 68 +
packages/ui/src/row.tsx | 29 +
packages/ui/src/skeleton.test.tsx | 91 +
packages/ui/src/skeleton.tsx | 25 +
packages/ui/src/spacing.tsx | 11 +
packages/ui/src/stack.test.tsx | 93 +
packages/ui/src/stack.tsx | 11 +
packages/ui/src/toggle-button-group.test.tsx | 86 +
packages/ui/src/toggle-button-group.tsx | 66 +
.../src/toggle-button-multiple-group.test.tsx | 122 ++
.../ui/src/toggle-button-multiple-group.tsx | 71 +
packages/ui/src/toggle-button.test.tsx | 107 ++
packages/ui/src/toggle-button.tsx | 26 +
packages/ui/style.css | 22 +
packages/ui/tailwind.config.ts | 7 +
packages/ui/tsconfig.json | 9 +
packages/ui/tsconfig.lint.json | 8 +
packages/ui/tsup.config.ts | 13 +
packages/ui/vitest.config.mts | 14 +
packages/ui/vitest.setup.tsx | 7 +
packages/xds/package.json | 20 +-
packages/xds/src/toggle-button-group.tsx | 15 -
packages/xds/src/toggle-button.tsx | 20 -
packages/xds/tsup.config.ts | 3 +-
packages/xds/vitest.config.mts | 14 +
packages/xds/vitest.setup.tsx | 7 +
pnpm-lock.yaml | 1651 +++++++++--------
43 files changed, 2179 insertions(+), 774 deletions(-)
create mode 100644 packages/ui/README.md
create mode 100644 packages/ui/package.json
create mode 100644 packages/ui/postcss.config.mjs
create mode 100644 packages/ui/src/box.test.tsx
create mode 100644 packages/ui/src/box.tsx
create mode 100644 packages/ui/src/center-stack.tsx
create mode 100644 packages/ui/src/center.test.tsx
create mode 100644 packages/ui/src/center.tsx
create mode 100644 packages/ui/src/flex.tsx
create mode 100644 packages/ui/src/index.ts
create mode 100644 packages/ui/src/internal/is-string.tsx
create mode 100644 packages/ui/src/internal/separated.tsx
create mode 100644 packages/ui/src/justify-between.tsx
create mode 100644 packages/ui/src/justify-end.tsx
create mode 100644 packages/ui/src/list.tsx
create mode 100644 packages/ui/src/polymorphics.ts
create mode 100644 packages/ui/src/row.test.tsx
create mode 100644 packages/ui/src/row.tsx
create mode 100644 packages/ui/src/skeleton.test.tsx
create mode 100644 packages/ui/src/skeleton.tsx
create mode 100644 packages/ui/src/spacing.tsx
create mode 100644 packages/ui/src/stack.test.tsx
create mode 100644 packages/ui/src/stack.tsx
create mode 100644 packages/ui/src/toggle-button-group.test.tsx
create mode 100644 packages/ui/src/toggle-button-group.tsx
create mode 100644 packages/ui/src/toggle-button-multiple-group.test.tsx
create mode 100644 packages/ui/src/toggle-button-multiple-group.tsx
create mode 100644 packages/ui/src/toggle-button.test.tsx
create mode 100644 packages/ui/src/toggle-button.tsx
create mode 100644 packages/ui/style.css
create mode 100644 packages/ui/tailwind.config.ts
create mode 100644 packages/ui/tsconfig.json
create mode 100644 packages/ui/tsconfig.lint.json
create mode 100644 packages/ui/tsup.config.ts
create mode 100644 packages/ui/vitest.config.mts
create mode 100644 packages/ui/vitest.setup.tsx
delete mode 100644 packages/xds/src/toggle-button-group.tsx
delete mode 100644 packages/xds/src/toggle-button.tsx
create mode 100644 packages/xds/vitest.config.mts
create mode 100644 packages/xds/vitest.setup.tsx
diff --git a/packages/ui/README.md b/packages/ui/README.md
new file mode 100644
index 0000000..cae8127
--- /dev/null
+++ b/packages/ui/README.md
@@ -0,0 +1,3 @@
+# Xion Design System
+
+..
\ No newline at end of file
diff --git a/packages/ui/package.json b/packages/ui/package.json
new file mode 100644
index 0000000..1262d01
--- /dev/null
+++ b/packages/ui/package.json
@@ -0,0 +1,57 @@
+{
+ "name": "@xionwcfm/ui",
+ "version": "0.0.1",
+ "license": "MIT",
+ "main": "./dist/index.js",
+ "module": "./dist/index.mjs",
+ "types": "./dist/index.d.ts",
+ "style": "./dist/style.css",
+ "exports": {
+ "./package.json": "./package.json",
+ ".": {
+ "import": {
+ "types": "./dist/index.d.mts",
+ "default": "./dist/index.mjs"
+ },
+ "require": {
+ "types": "./dist/index.d.ts",
+ "default": "./dist/index.js"
+ }
+ }
+ },
+ "files": ["dist"],
+ "scripts": {
+ "build": "tsup && pnpm run build:css",
+ "build:css": "tailwindcss -i ./style.css -o dist/style.css --minify --postcss",
+ "build:no": "tailwindcss -i ./style.css -o dist/style.css --postcss",
+ "test": "vitest",
+ "test:ci": "vitest run"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "devDependencies": {
+ "@testing-library/jest-dom": "^6.6.3",
+ "@testing-library/react": "^16.1.0",
+ "@testing-library/user-event": "^14.5.2",
+ "@types/node": "catalog:",
+ "@types/react": "catalog:react18",
+ "@types/react-dom": "catalog:react18",
+ "@vitejs/plugin-react": "^4.3.4",
+ "@xionwcfm/typescript-config": "workspace:*",
+ "autoprefixer": "catalog:",
+ "happy-dom": "^15.11.7",
+ "postcss": "catalog:",
+ "react": "catalog:react18",
+ "tailwindcss": "catalog:",
+ "tsup": "catalog:",
+ "typescript": "catalog:",
+ "vite": "^6.0.5",
+ "vite-tsconfig-paths": "^5.1.4",
+ "vitest": "^2.1.8"
+ },
+ "peerDependencies": {
+ "react": ">=18",
+ "react-dom": ">=18"
+ }
+}
diff --git a/packages/ui/postcss.config.mjs b/packages/ui/postcss.config.mjs
new file mode 100644
index 0000000..1e2282a
--- /dev/null
+++ b/packages/ui/postcss.config.mjs
@@ -0,0 +1,10 @@
+/** @type {import('postcss-load-config').Config} */
+const config = {
+ plugins: {
+ tailwindcss: {},
+ autoprefixer: {},
+ // "postcss-variable-compress": {},
+ },
+};
+
+export default config;
diff --git a/packages/ui/src/box.test.tsx b/packages/ui/src/box.test.tsx
new file mode 100644
index 0000000..4e67e03
--- /dev/null
+++ b/packages/ui/src/box.test.tsx
@@ -0,0 +1,90 @@
+import { render, screen } from "@testing-library/react";
+import userEvent from "@testing-library/user-event";
+import { useRef } from "react";
+import "@testing-library/jest-dom";
+import { Box } from "./box";
+
+describe("Box", () => {
+ it("should render as default div element", () => {
+ render(Content);
+ const element = screen.getByText("Content");
+ expect(element.tagName).toBe("DIV");
+ });
+
+ it("should render as specified element", () => {
+ render(Content);
+ const element = screen.getByText("Content");
+ expect(element.tagName).toBe("SECTION");
+ });
+
+ it("should apply custom className", () => {
+ render(Content);
+ const element = screen.getByText("Content");
+ expect(element).toHaveClass("custom-class");
+ });
+
+ it("should forward ref correctly", () => {
+ function TestComponent() {
+ const ref = useRef(null);
+ return Content;
+ }
+
+ render();
+ const element = screen.getByText("Content");
+ expect(element).toBeInTheDocument();
+ expect(element.tagName).toBe("DIV");
+ });
+
+ it("should handle click events", async () => {
+ const handleClick = vi.fn();
+ render(Clickable);
+
+ await userEvent.click(screen.getByText("Clickable"));
+ expect(handleClick).toHaveBeenCalledTimes(1);
+ });
+
+ it("should handle keyboard events", async () => {
+ const handleKeyDown = vi.fn();
+ render(
+
+ Interactive
+ ,
+ );
+
+ const element = screen.getByText("Interactive");
+ await userEvent.tab();
+ expect(element).toHaveFocus();
+
+ await userEvent.keyboard("[Enter]");
+ expect(handleKeyDown).toHaveBeenCalledTimes(1);
+ });
+
+ it("should handle aria attributes", () => {
+ render(
+
+ Accessible Content
+ ,
+ );
+
+ const element = screen.getByLabelText("Test label");
+ expect(element).toHaveAttribute("aria-describedby", "description");
+ });
+
+ it("should handle data attributes", () => {
+ render(
+
+ Content
+ ,
+ );
+
+ const element = screen.getByTestId("test-box");
+ expect(element).toHaveAttribute("data-custom", "value");
+ });
+
+ it("should handle style prop", () => {
+ render(Styled Content);
+
+ const element = screen.getByText("Styled Content");
+ expect(element).toHaveStyle({ backgroundColor: "red" });
+ });
+});
diff --git a/packages/ui/src/box.tsx b/packages/ui/src/box.tsx
new file mode 100644
index 0000000..7c28566
--- /dev/null
+++ b/packages/ui/src/box.tsx
@@ -0,0 +1,19 @@
+import { type ElementType, type ReactNode, forwardRef } from "react";
+import { type PolymorphicComponentProps, type PolymorphicRef } from "./polymorphics";
+export type BoxProps = PolymorphicComponentProps<
+ C,
+ {
+ className?: string;
+ children?: ReactNode;
+ }
+>;
+
+export type BoxRef = PolymorphicRef;
+
+export const Box = forwardRef(function Box(
+ { as, className, ...rest }: BoxProps,
+ ref?: BoxRef,
+) {
+ const Component = as ?? "div";
+ return ;
+}) as (props: BoxProps & { ref?: BoxRef }) => JSX.Element;
diff --git a/packages/ui/src/center-stack.tsx b/packages/ui/src/center-stack.tsx
new file mode 100644
index 0000000..c1dfb46
--- /dev/null
+++ b/packages/ui/src/center-stack.tsx
@@ -0,0 +1,18 @@
+import { type ElementType, forwardRef } from "react";
+import { Box, type BoxRef } from "./box";
+import type { BoxProps } from "./box";
+
+export const CenterStack = forwardRef(function CenterStack(
+ { as, className, ...rest }: BoxProps,
+ ref?: BoxRef,
+) {
+ const typesRest = rest as BoxProps;
+ return (
+
+ );
+}) as (props: BoxProps & { ref?: BoxRef }) => JSX.Element;
diff --git a/packages/ui/src/center.test.tsx b/packages/ui/src/center.test.tsx
new file mode 100644
index 0000000..9be457f
--- /dev/null
+++ b/packages/ui/src/center.test.tsx
@@ -0,0 +1,16 @@
+import { render, screen } from "@testing-library/react";
+import "@testing-library/jest-dom";
+import { Center } from "./center";
+
+describe("Center", () => {
+ it("should handle aria attributes", () => {
+ render(
+
+ Accessible Content
+ ,
+ );
+
+ const element = screen.getByLabelText("Test label");
+ expect(element).toHaveAttribute("aria-describedby", "description");
+ });
+});
diff --git a/packages/ui/src/center.tsx b/packages/ui/src/center.tsx
new file mode 100644
index 0000000..2bf2264
--- /dev/null
+++ b/packages/ui/src/center.tsx
@@ -0,0 +1,13 @@
+import { type ElementType, forwardRef } from "react";
+import { Box, type BoxRef } from "./box";
+import type { BoxProps } from "./box";
+
+export const Center = forwardRef(function Center(
+ { as, className, ...rest }: BoxProps,
+ ref?: BoxRef,
+) {
+ const typesRest = rest as BoxProps;
+ return (
+
+ );
+}) as (props: BoxProps & { ref?: BoxRef }) => JSX.Element;
diff --git a/packages/ui/src/flex.tsx b/packages/ui/src/flex.tsx
new file mode 100644
index 0000000..2f13de6
--- /dev/null
+++ b/packages/ui/src/flex.tsx
@@ -0,0 +1,11 @@
+import { type ElementType, forwardRef } from "react";
+import { Box, type BoxRef } from "./box";
+import type { BoxProps } from "./box";
+
+export const Flex = forwardRef(function Flex(
+ { as, className, ...rest }: BoxProps,
+ ref?: BoxRef,
+) {
+ const typesRest = rest as BoxProps;
+ return ;
+}) as (props: BoxProps & { ref?: BoxRef }) => JSX.Element;
diff --git a/packages/ui/src/index.ts b/packages/ui/src/index.ts
new file mode 100644
index 0000000..f567627
--- /dev/null
+++ b/packages/ui/src/index.ts
@@ -0,0 +1,12 @@
+import { Box } from "./box";
+import { Center } from "./center";
+import { CenterStack } from "./center-stack";
+import { Flex } from "./flex";
+import { JustifyBetween } from "./justify-between";
+import { JustifyEnd } from "./justify-end";
+import { List } from "./list";
+import { Row } from "./row";
+import { Skeleton } from "./skeleton";
+import { Spacing } from "./spacing";
+import { Stack } from "./stack";
+import { ToggleButton } from "./toggle-button";
diff --git a/packages/ui/src/internal/is-string.tsx b/packages/ui/src/internal/is-string.tsx
new file mode 100644
index 0000000..ee860f5
--- /dev/null
+++ b/packages/ui/src/internal/is-string.tsx
@@ -0,0 +1 @@
+export const isString = (value: unknown): value is string => typeof value === "string";
diff --git a/packages/ui/src/internal/separated.tsx b/packages/ui/src/internal/separated.tsx
new file mode 100644
index 0000000..645f567
--- /dev/null
+++ b/packages/ui/src/internal/separated.tsx
@@ -0,0 +1,21 @@
+import { Children, Fragment, type PropsWithChildren, type ReactNode, isValidElement } from "react";
+
+interface Props extends PropsWithChildren {
+ with: ReactNode;
+}
+
+export function Separated({ children, with: separator }: Props) {
+ const childrenArray = Children.toArray(children).filter(isValidElement);
+ const childrenLength = childrenArray.length;
+
+ return (
+ <>
+ {childrenArray.map((child, i) => (
+
+ {child}
+ {i + 1 !== childrenLength ? separator : null}
+
+ ))}
+ >
+ );
+}
diff --git a/packages/ui/src/justify-between.tsx b/packages/ui/src/justify-between.tsx
new file mode 100644
index 0000000..7738384
--- /dev/null
+++ b/packages/ui/src/justify-between.tsx
@@ -0,0 +1,11 @@
+import { type ElementType, forwardRef } from "react";
+import { Box, type BoxRef } from "./box";
+import type { BoxProps } from "./box";
+
+export const JustifyBetween = forwardRef(function JustifyBetween(
+ { as, className, ...rest }: BoxProps,
+ ref?: BoxRef,
+) {
+ const typesRest = rest as BoxProps;
+ return ;
+}) as (props: BoxProps & { ref?: BoxRef }) => JSX.Element;
diff --git a/packages/ui/src/justify-end.tsx b/packages/ui/src/justify-end.tsx
new file mode 100644
index 0000000..d418a6e
--- /dev/null
+++ b/packages/ui/src/justify-end.tsx
@@ -0,0 +1,11 @@
+import { type ElementType, forwardRef } from "react";
+import { Box, type BoxRef } from "./box";
+import type { BoxProps } from "./box";
+
+export const JustifyEnd = forwardRef(function JustifyEnd(
+ { as, className, ...rest }: BoxProps,
+ ref?: BoxRef,
+) {
+ const typesRest = rest as BoxProps;
+ return ;
+}) as (props: BoxProps & { ref?: BoxRef }) => JSX.Element;
diff --git a/packages/ui/src/list.tsx b/packages/ui/src/list.tsx
new file mode 100644
index 0000000..2a519b6
--- /dev/null
+++ b/packages/ui/src/list.tsx
@@ -0,0 +1,28 @@
+import { Children, type ElementType, type ReactNode, forwardRef } from "react";
+import { Box, type BoxRef } from "./box";
+import type { BoxProps } from "./box";
+import { Separated } from "./internal/separated";
+
+type ListProps = {
+ fallback?: ReactNode;
+ with?: ReactNode;
+};
+
+export const List = forwardRef(function List(
+ { as, className, children, fallback, ...rest }: BoxProps & ListProps,
+ ref?: BoxRef,
+) {
+ const typesRest = rest as BoxProps;
+ const child = Children.toArray(children);
+ const isEmpty = child.length === 0;
+
+ if (isEmpty) {
+ return <>{fallback}>;
+ }
+
+ return (
+
+ {rest.with ? {children} : children}
+
+ );
+}) as (props: BoxProps & ListProps & { ref?: BoxRef }) => JSX.Element;
diff --git a/packages/ui/src/polymorphics.ts b/packages/ui/src/polymorphics.ts
new file mode 100644
index 0000000..6d3f35a
--- /dev/null
+++ b/packages/ui/src/polymorphics.ts
@@ -0,0 +1,16 @@
+import type { ComponentPropsWithoutRef, ElementType } from "react";
+
+export type AsProp = {
+ as?: C;
+};
+
+export type KeyWithAs = keyof (AsProp & Props);
+
+export type PolymorphicRef = ComponentPropsWithoutRef["ref"];
+
+export type PolymorphicComponentProps = (Props & AsProp) &
+ Omit, KeyWithAs>;
+
+export type PolymorphicComponentPropsWithRef = Props & {
+ ref?: PolymorphicRef;
+};
diff --git a/packages/ui/src/row.test.tsx b/packages/ui/src/row.test.tsx
new file mode 100644
index 0000000..2094c49
--- /dev/null
+++ b/packages/ui/src/row.test.tsx
@@ -0,0 +1,68 @@
+import { render, screen } from "@testing-library/react";
+import userEvent from "@testing-library/user-event";
+import { Row } from "./row";
+
+describe("Row", () => {
+ const user = userEvent.setup();
+
+ it("renders children correctly", () => {
+ render(Content
);
+ expect(screen.getByText("Content")).toBeInTheDocument();
+ });
+
+ it("renders left and right content correctly", () => {
+ render(
+
+ Middle Content
+
,
+ );
+ expect(screen.getByText("Left Content")).toBeInTheDocument();
+ expect(screen.getByText("Middle Content")).toBeInTheDocument();
+ expect(screen.getByText("Right Content")).toBeInTheDocument();
+ });
+
+ it("renders with custom element type", () => {
+ render(
+
+ Content
+
,
+ );
+ const row = screen.getByTestId("custom-row");
+ expect(row.tagName).toBe("DIV");
+ });
+
+ it("renders with custom className", () => {
+ render(Content
);
+ const content = screen.getByText("Content");
+ expect(content.parentElement).toHaveClass("custom-class");
+ });
+
+ it("renders ReactNode elements correctly", () => {
+ const LeftComponent = () => Left Node
;
+ const RightComponent = () => Right Node
;
+
+ render(
+
} right={}>
+ Child Node
+ ,
+ );
+
+ expect(screen.getByText("Left Node")).toBeInTheDocument();
+ expect(screen.getByText("Child Node")).toBeInTheDocument();
+ expect(screen.getByText("Right Node")).toBeInTheDocument();
+ });
+
+ it("maintains proper layout structure", () => {
+ render(
+
+ Center
+
,
+ );
+
+ const container = screen.getByText("Center").parentElement;
+ expect(container).toHaveClass("@xui-flex");
+ expect(container).toHaveClass("@xui-w-full");
+ expect(container).toHaveClass("@xui-justify-between");
+ expect(container).toHaveClass("@xui-items-center");
+ });
+});
diff --git a/packages/ui/src/row.tsx b/packages/ui/src/row.tsx
new file mode 100644
index 0000000..0ca5fd3
--- /dev/null
+++ b/packages/ui/src/row.tsx
@@ -0,0 +1,29 @@
+import { type ElementType, forwardRef } from "react";
+import { Box, type BoxRef } from "./box";
+import type { BoxProps } from "./box";
+import { isString } from "./internal/is-string";
+
+type RowProps = {
+ left?: React.ReactNode;
+ children?: React.ReactNode;
+ right?: React.ReactNode;
+};
+
+export const Row = forwardRef(function Row(
+ { as, className, left, children, right, ...rest }: BoxProps & RowProps,
+ ref?: BoxRef,
+) {
+ const typesRest = rest as BoxProps;
+ return (
+
+ {isString(left) ? {left}
: left}
+ {isString(children) ? {children}
: children}
+ {isString(right) ? {right}
: right}
+
+ );
+}) as (props: BoxProps & RowProps & { ref?: BoxRef }) => JSX.Element;
diff --git a/packages/ui/src/skeleton.test.tsx b/packages/ui/src/skeleton.test.tsx
new file mode 100644
index 0000000..dbcb1b3
--- /dev/null
+++ b/packages/ui/src/skeleton.test.tsx
@@ -0,0 +1,91 @@
+import { render, screen } from "@testing-library/react";
+import userEvent from "@testing-library/user-event";
+import { useRef } from "react";
+import "@testing-library/jest-dom";
+import type { BoxRef } from "./box";
+import { Skeleton } from "./skeleton";
+
+describe("Skeleton", () => {
+ it("should render as default div element with skeleton classes", () => {
+ render(Content);
+ const element = screen.getByText("Content");
+ expect(element.tagName).toBe("DIV");
+ expect(element).toHaveClass("xui-skeleton-color", "@xui-animate-pulse");
+ });
+
+ it("should render with custom width and height", () => {
+ render(
+
+ Content
+ ,
+ );
+ const element = screen.getByText("Content");
+ expect(element).toHaveStyle({ width: "100px", height: "50px" });
+ });
+
+ it("should render as specified element", () => {
+ render(Content);
+ const element = screen.getByText("Content");
+ expect(element.tagName).toBe("SECTION");
+ });
+
+ it("should apply custom className while preserving default classes", () => {
+ render(Content);
+ const element = screen.getByText("Content");
+ expect(element).toHaveClass("custom-class", "xui-skeleton-color", "@xui-animate-pulse");
+ });
+
+ it("should forward ref correctly", () => {
+ function TestComponent() {
+ const ref = useRef(null);
+ return Content;
+ }
+
+ render();
+ const element = screen.getByText("Content");
+ expect(element).toBeInTheDocument();
+ expect(element.tagName).toBe("DIV");
+ });
+
+ it("should handle click events", async () => {
+ const handleClick = vi.fn();
+ render(Clickable);
+
+ await userEvent.click(screen.getByText("Clickable"));
+ expect(handleClick).toHaveBeenCalledTimes(1);
+ });
+
+ it("should handle keyboard events", async () => {
+ const handleKeyDown = vi.fn();
+ render(
+
+ Interactive
+ ,
+ );
+
+ const element = screen.getByText("Interactive");
+ await userEvent.tab();
+ expect(element).toHaveFocus();
+
+ await userEvent.keyboard("[Enter]");
+ expect(handleKeyDown).toHaveBeenCalledTimes(1);
+ });
+
+ it("should handle custom styles", () => {
+ render(Styled Content);
+
+ const element = screen.getByText("Styled Content");
+ expect(element).toHaveStyle({ backgroundColor: "red" });
+ });
+
+ it("should handle aria attributes", () => {
+ render(
+
+ Loading
+ ,
+ );
+
+ const element = screen.getByLabelText("Loading content");
+ expect(element).toHaveAttribute("aria-busy", "true");
+ });
+});
diff --git a/packages/ui/src/skeleton.tsx b/packages/ui/src/skeleton.tsx
new file mode 100644
index 0000000..46bd52e
--- /dev/null
+++ b/packages/ui/src/skeleton.tsx
@@ -0,0 +1,25 @@
+import { type ElementType, forwardRef } from "react";
+import { Box, type BoxRef } from "./box";
+import type { BoxProps } from "./box";
+
+type Props = {
+ w?: string;
+ h?: string;
+};
+
+export const Skeleton = forwardRef(function Skeleton(
+ { as, className, w, h, style, variant, ...rest }: BoxProps & Props,
+ ref?: BoxRef,
+) {
+ const typesRest = rest as BoxProps;
+
+ return (
+
+ );
+}) as (props: BoxProps & Props & { ref?: BoxRef }) => JSX.Element;
diff --git a/packages/ui/src/spacing.tsx b/packages/ui/src/spacing.tsx
new file mode 100644
index 0000000..b153918
--- /dev/null
+++ b/packages/ui/src/spacing.tsx
@@ -0,0 +1,11 @@
+import { type ElementType, forwardRef } from "react";
+import { Box, type BoxRef } from "./box";
+import type { BoxProps } from "./box";
+
+export const Spacing = forwardRef(function Spacing(
+ { as, className, ...rest }: BoxProps,
+ ref?: BoxRef,
+) {
+ const typesRest = rest as BoxProps;
+ return ;
+}) as (props: BoxProps & { ref?: BoxRef }) => JSX.Element;
diff --git a/packages/ui/src/stack.test.tsx b/packages/ui/src/stack.test.tsx
new file mode 100644
index 0000000..a246807
--- /dev/null
+++ b/packages/ui/src/stack.test.tsx
@@ -0,0 +1,93 @@
+import { render, screen } from "@testing-library/react";
+import userEvent from "@testing-library/user-event";
+import { ElementType, useRef } from "react";
+import "@testing-library/jest-dom";
+import type { BoxProps, BoxRef } from "./box";
+import { Stack } from "./stack";
+
+describe("Stack", () => {
+ it("should render as default div element with flex column", () => {
+ render(Content);
+ const element = screen.getByText("Content");
+ expect(element.tagName).toBe("DIV");
+ expect(element).toHaveClass("@xui-flex", "@xui-flex-col");
+ });
+
+ it("should render as specified element", () => {
+ render(Content);
+ const element = screen.getByText("Content");
+ expect(element.tagName).toBe("SECTION");
+ expect(element).toHaveClass("@xui-flex", "@xui-flex-col");
+ });
+
+ it("should apply custom className while preserving default classes", () => {
+ render(Content);
+ const element = screen.getByText("Content");
+ expect(element).toHaveClass("custom-class", "@xui-flex", "@xui-flex-col");
+ });
+
+ it("should forward ref correctly", () => {
+ function TestComponent() {
+ const ref = useRef(null);
+ return (
+ ref={ref} as="div">
+ Content
+
+ );
+ }
+
+ render();
+ const element = screen.getByText("Content");
+ expect(element).toBeInTheDocument();
+ expect(element.tagName).toBe("DIV");
+ });
+
+ it("should handle click events", async () => {
+ const handleClick = vi.fn();
+ render(Clickable);
+
+ await userEvent.click(screen.getByText("Clickable"));
+ expect(handleClick).toHaveBeenCalledTimes(1);
+ });
+
+ it("should handle keyboard events", async () => {
+ const handleKeyDown = vi.fn();
+ render(
+
+ Interactive
+ ,
+ );
+
+ const element = screen.getByText("Interactive");
+ await userEvent.tab();
+ expect(element).toHaveFocus();
+
+ await userEvent.keyboard("[Enter]");
+ expect(handleKeyDown).toHaveBeenCalledTimes(1);
+ });
+
+ it("should handle aria attributes", () => {
+ render(
+
+ Accessible Content
+ ,
+ );
+
+ const element = screen.getByLabelText("Test stack");
+ expect(element).toHaveAttribute("aria-describedby", "description");
+ });
+
+ it("should handle nested elements", () => {
+ render(
+
+ Child 1
+ Child 2
+ Child 3
+ ,
+ );
+
+ expect(screen.getByText("Child 1")).toBeInTheDocument();
+ expect(screen.getByText("Child 2")).toBeInTheDocument();
+ expect(screen.getByText("Child 3")).toBeInTheDocument();
+ });
+});
diff --git a/packages/ui/src/stack.tsx b/packages/ui/src/stack.tsx
new file mode 100644
index 0000000..5c083ba
--- /dev/null
+++ b/packages/ui/src/stack.tsx
@@ -0,0 +1,11 @@
+import { type ElementType, forwardRef } from "react";
+import { Box, type BoxRef } from "./box";
+import type { BoxProps } from "./box";
+
+export const Stack = forwardRef(function Stack(
+ { as, className, ...rest }: BoxProps,
+ ref?: BoxRef,
+) {
+ const typesRest = rest as BoxProps;
+ return ;
+}) as (props: BoxProps & { ref?: BoxRef }) => JSX.Element;
diff --git a/packages/ui/src/toggle-button-group.test.tsx b/packages/ui/src/toggle-button-group.test.tsx
new file mode 100644
index 0000000..b22c5a9
--- /dev/null
+++ b/packages/ui/src/toggle-button-group.test.tsx
@@ -0,0 +1,86 @@
+import { render, screen } from "@testing-library/react";
+import userEvent from "@testing-library/user-event";
+import { useState } from "react";
+import { ToggleButton } from "./toggle-button";
+import { ToggleButtonGroup } from "./toggle-button-group";
+import "@testing-library/jest-dom";
+
+describe("ToggleButtonGroup", () => {
+ const TestComponent = ({ allowToggle }: { allowToggle: boolean }) => {
+ const [value, setValue] = useState(null);
+ return (
+
+ 1
+ 2
+
+ );
+ };
+
+ it("should render buttons correctly", () => {
+ render();
+ expect(screen.getByText("1")).toBeInTheDocument();
+ expect(screen.getByText("2")).toBeInTheDocument();
+ });
+
+ describe("when allowToggle is true", () => {
+ it("should toggle selected state on click", async () => {
+ render();
+ const button1 = screen.getByText("1");
+
+ // 초기 상태 확인
+ expect(button1).toHaveAttribute("data-state", "unselected");
+
+ // 첫 번째 클릭
+ await userEvent.click(button1);
+ expect(button1).toHaveAttribute("data-state", "selected");
+
+ // 두 번째 클릭 (토글 해제)
+ await userEvent.click(button1);
+ expect(button1).toHaveAttribute("data-state", "unselected");
+ });
+ });
+
+ describe("when allowToggle is false", () => {
+ it("should not toggle off selected button on click", async () => {
+ render();
+ const button1 = screen.getByText("1");
+
+ await userEvent.click(button1);
+ expect(button1).toHaveAttribute("data-state", "selected");
+
+ await userEvent.click(button1);
+ expect(button1).toHaveAttribute("data-state", "selected");
+ });
+
+ it("should only allow one button to be selected at a time", async () => {
+ render();
+ const button1 = screen.getByText("1");
+ const button2 = screen.getByText("2");
+
+ await userEvent.click(button1);
+ expect(button1).toHaveAttribute("data-state", "selected");
+ expect(button2).toHaveAttribute("data-state", "unselected");
+
+ await userEvent.click(button2);
+ expect(button1).toHaveAttribute("data-state", "unselected");
+ expect(button2).toHaveAttribute("data-state", "selected");
+ });
+ });
+
+ it("should handle keyboard interactions", async () => {
+ render();
+ const button1 = screen.getByText("1");
+
+ // Tab으로 포커스
+ await userEvent.tab();
+ expect(button1).toHaveFocus();
+
+ // Space로 선택
+ await userEvent.keyboard(" ");
+ expect(button1).toHaveAttribute("data-state", "selected");
+
+ // Enter로 선택 해제
+ await userEvent.keyboard("[Enter]");
+ expect(button1).toHaveAttribute("data-state", "unselected");
+ });
+});
diff --git a/packages/ui/src/toggle-button-group.tsx b/packages/ui/src/toggle-button-group.tsx
new file mode 100644
index 0000000..32b2419
--- /dev/null
+++ b/packages/ui/src/toggle-button-group.tsx
@@ -0,0 +1,66 @@
+import { Children, KeyboardEvent, MouseEvent, ReactElement, cloneElement, createContext } from "react";
+import { ToggleButtonProps } from "./toggle-button";
+
+export interface ToggleButtonGroupProps {
+ children: ReactElement | ReactElement[];
+ value: string | null;
+ onChange: (value: string | null) => void;
+ allowToggle?: boolean;
+}
+
+export const ToggleButtonGroupContext = createContext(null);
+
+export function ToggleButtonGroup(props: ToggleButtonGroupProps) {
+ const { allowToggle = true, value, children, onChange } = props;
+ const childs = Children.toArray(children) as ReactElement[];
+
+ return (
+
+
+ {(context) => {
+ const handleClick = (newValue: string | null) => {
+ if (newValue === null) {
+ return onChange(null);
+ }
+
+ if (newValue === context && allowToggle) {
+ return onChange(null);
+ }
+
+ if (newValue === context && !allowToggle) {
+ return;
+ }
+
+ return onChange(newValue);
+ };
+
+ const handleKeyDown = (event: KeyboardEvent, newValue: string | null) => {
+ if (event.key === " " || event.key === "Enter") {
+ event.preventDefault();
+ handleClick(newValue);
+ }
+ };
+ return (
+ <>
+ {childs.map((child) => {
+ const childElement = child as ReactElement;
+ return cloneElement(childElement, {
+ selected: context === childElement.props.value,
+ onClick: (event: MouseEvent) => {
+ handleClick(childElement.props.value ?? null);
+ childElement.props.onClick?.(event);
+ },
+ onKeyDown: (event: KeyboardEvent) => {
+ handleKeyDown(event, childElement.props.value ?? null);
+ childElement.props.onKeyDown?.(event);
+ },
+ role: "button",
+ });
+ })}
+ >
+ );
+ }}
+
+
+ );
+}
diff --git a/packages/ui/src/toggle-button-multiple-group.test.tsx b/packages/ui/src/toggle-button-multiple-group.test.tsx
new file mode 100644
index 0000000..65d1481
--- /dev/null
+++ b/packages/ui/src/toggle-button-multiple-group.test.tsx
@@ -0,0 +1,122 @@
+import { render, screen } from "@testing-library/react";
+import userEvent from "@testing-library/user-event";
+import { useState } from "react";
+import { ToggleButton } from "./toggle-button";
+import { ToggleButtonMultipleGroup } from "./toggle-button-multiple-group";
+import "@testing-library/jest-dom";
+
+describe("ToggleButtonMultipleGroup", () => {
+ const TestComponent = ({ allowToggle }: { allowToggle: boolean }) => {
+ const [value, setValue] = useState([]);
+ return (
+
+ 1
+ 2
+ 3
+
+ );
+ };
+
+ it("should render buttons correctly", () => {
+ render();
+ expect(screen.getByText("1")).toBeInTheDocument();
+ expect(screen.getByText("2")).toBeInTheDocument();
+ expect(screen.getByText("3")).toBeInTheDocument();
+ });
+
+ describe("when allowToggle is true", () => {
+ it("should toggle selected state on click", async () => {
+ render();
+ const button1 = screen.getByText("1");
+
+ // 초기 상태 확인
+ expect(button1).toHaveAttribute("data-state", "unselected");
+
+ // 첫 번째 클릭 (선택)
+ await userEvent.click(button1);
+ expect(button1).toHaveAttribute("data-state", "selected");
+
+ // 두 번째 클릭 (토글 해제)
+ await userEvent.click(button1);
+ expect(button1).toHaveAttribute("data-state", "unselected");
+ });
+
+ it("should allow multiple buttons to be selected", async () => {
+ render();
+ const button1 = screen.getByText("1");
+ const button2 = screen.getByText("2");
+ const button3 = screen.getByText("3");
+
+ await userEvent.click(button1);
+ await userEvent.click(button2);
+ await userEvent.click(button3);
+
+ expect(button1).toHaveAttribute("data-state", "selected");
+ expect(button2).toHaveAttribute("data-state", "selected");
+ expect(button3).toHaveAttribute("data-state", "selected");
+ });
+
+ it("should allow deselecting individual buttons", async () => {
+ render();
+ const button1 = screen.getByText("1");
+ const button2 = screen.getByText("2");
+
+ // 두 버튼 선택
+ await userEvent.click(button1);
+ await userEvent.click(button2);
+
+ // button1만 선택 해제
+ await userEvent.click(button1);
+
+ expect(button1).toHaveAttribute("data-state", "unselected");
+ expect(button2).toHaveAttribute("data-state", "selected");
+ });
+ });
+
+ describe("when allowToggle is false", () => {
+ it("should not allow deselecting buttons", async () => {
+ render();
+ const button1 = screen.getByText("1");
+
+ await userEvent.click(button1);
+ expect(button1).toHaveAttribute("data-state", "selected");
+
+ // 다시 클릭해도 선택 해제되지 않음
+ await userEvent.click(button1);
+ expect(button1).toHaveAttribute("data-state", "selected");
+ });
+
+ it("should allow selecting multiple buttons without deselection", async () => {
+ render();
+ const button1 = screen.getByText("1");
+ const button2 = screen.getByText("2");
+
+ await userEvent.click(button1);
+ await userEvent.click(button2);
+
+ expect(button1).toHaveAttribute("data-state", "selected");
+ expect(button2).toHaveAttribute("data-state", "selected");
+
+ // 다시 클릭해도 선택 해제되��� 않음
+ await userEvent.click(button1);
+ expect(button1).toHaveAttribute("data-state", "selected");
+ });
+ });
+
+ it("should handle keyboard interactions", async () => {
+ render();
+ const button1 = screen.getByText("1");
+
+ // Tab으로 포커스
+ await userEvent.tab();
+ expect(button1).toHaveFocus();
+
+ // Space로 선택
+ await userEvent.keyboard(" ");
+ expect(button1).toHaveAttribute("data-state", "selected");
+
+ // Enter로 선택 해제
+ await userEvent.keyboard("[Enter]");
+ expect(button1).toHaveAttribute("data-state", "unselected");
+ });
+});
diff --git a/packages/ui/src/toggle-button-multiple-group.tsx b/packages/ui/src/toggle-button-multiple-group.tsx
new file mode 100644
index 0000000..5c654be
--- /dev/null
+++ b/packages/ui/src/toggle-button-multiple-group.tsx
@@ -0,0 +1,71 @@
+import { Children, KeyboardEvent, MouseEvent, ReactElement, cloneElement, createContext } from "react";
+import { ToggleButtonProps } from "./toggle-button";
+
+export interface ToggleButtonMultipleGroupProps {
+ children: ReactElement | ReactElement[];
+ value: string[];
+ onChange: (value: string[]) => void;
+ allowToggle?: boolean;
+}
+
+export const ToggleButtonMultipleGroupContext = createContext([]);
+
+export function ToggleButtonMultipleGroup(props: ToggleButtonMultipleGroupProps) {
+ const { allowToggle = true, value, children, onChange } = props;
+ const childs = Children.toArray(children) as ReactElement[];
+
+ return (
+
+
+ {(context) => {
+ const isSelected = (newValue: string | undefined) => {
+ if (!newValue) {
+ return false;
+ }
+ return context.includes(newValue);
+ };
+
+ const handleClick = (newValue: string | null) => {
+ if (newValue === null) {
+ return;
+ }
+
+ const isIncludes = context.includes(newValue);
+ if (isIncludes && allowToggle) {
+ return onChange(context.filter((v) => v !== newValue));
+ }
+
+ return onChange([...context, newValue]);
+ };
+
+ const handleKeyDown = (event: KeyboardEvent, newValue: string | null) => {
+ if (event.key === " " || event.key === "Enter") {
+ event.preventDefault();
+ handleClick(newValue);
+ }
+ };
+
+ return (
+ <>
+ {childs.map((child) => {
+ const childElement = child as ReactElement;
+ return cloneElement(childElement, {
+ selected: isSelected(childElement.props.value),
+ onClick: (event: MouseEvent) => {
+ handleClick(childElement.props.value ?? null);
+ childElement.props.onClick?.(event);
+ },
+ onKeyDown: (event: KeyboardEvent) => {
+ handleKeyDown(event, childElement.props.value ?? null);
+ childElement.props.onKeyDown?.(event);
+ },
+ role: "button",
+ });
+ })}
+ >
+ );
+ }}
+
+
+ );
+}
diff --git a/packages/ui/src/toggle-button.test.tsx b/packages/ui/src/toggle-button.test.tsx
new file mode 100644
index 0000000..1a41788
--- /dev/null
+++ b/packages/ui/src/toggle-button.test.tsx
@@ -0,0 +1,107 @@
+import { render, screen } from "@testing-library/react";
+import userEvent from "@testing-library/user-event";
+import { ToggleButton } from "./toggle-button";
+import "@testing-library/jest-dom";
+
+describe("ToggleButton", () => {
+ it("should render correctly with default props", () => {
+ render(Test Button);
+ const button = screen.getByText("Test Button");
+
+ expect(button).toBeInTheDocument();
+ expect(button).toHaveAttribute("data-state", "unselected");
+ expect(button).toHaveAttribute("role", "button");
+ expect(button).toHaveAttribute("tabIndex", "0");
+ });
+
+ it("should render with selected state", () => {
+ render(
+
+ Test Button
+ ,
+ );
+ const button = screen.getByText("Test Button");
+
+ expect(button).toHaveAttribute("data-state", "selected");
+ });
+
+ it("should handle click events", async () => {
+ const handleClick = vi.fn();
+ render(
+
+ Test Button
+ ,
+ );
+ const button = screen.getByText("Test Button");
+
+ await userEvent.click(button);
+ expect(handleClick).toHaveBeenCalledTimes(1);
+ });
+
+ it("should handle keyboard events", async () => {
+ const handleKeyDown = vi.fn();
+ render(
+
+ Test Button
+ ,
+ );
+ const button = screen.getByText("Test Button");
+
+ // Space 키 테스트
+ await userEvent.tab();
+ expect(button).toHaveFocus();
+ await userEvent.keyboard(" ");
+ expect(handleKeyDown).toHaveBeenCalledTimes(1);
+
+ // Enter 키 테스트
+ await userEvent.keyboard("[Enter]");
+ expect(handleKeyDown).toHaveBeenCalledTimes(2);
+ });
+
+ it("should apply custom className", () => {
+ render(
+
+ Test Button
+ ,
+ );
+ const button = screen.getByText("Test Button");
+
+ expect(button).toHaveClass("custom-class");
+ });
+
+ it("should be disabled when disabled prop is true", () => {
+ render(
+
+ Test Button
+ ,
+ );
+ const button = screen.getByText("Test Button");
+
+ expect(button).toBeDisabled();
+ expect(button).toHaveAttribute("aria-disabled", "true");
+ });
+
+ it("should not trigger click handler when disabled", async () => {
+ const handleClick = vi.fn();
+ render(
+
+ Test Button
+ ,
+ );
+ const button = screen.getByText("Test Button");
+
+ await userEvent.click(button);
+ expect(handleClick).not.toHaveBeenCalled();
+ });
+
+ it("should handle aria-label prop", () => {
+ render(
+
+ Test Button
+ ,
+ );
+ const button = screen.getByLabelText("Test Label");
+
+ expect(button).toBeInTheDocument();
+ });
+});
diff --git a/packages/ui/src/toggle-button.tsx b/packages/ui/src/toggle-button.tsx
new file mode 100644
index 0000000..68f9e7e
--- /dev/null
+++ b/packages/ui/src/toggle-button.tsx
@@ -0,0 +1,26 @@
+import { ComponentPropsWithoutRef, Ref, forwardRef } from "react";
+
+export interface ToggleButtonProps extends ComponentPropsWithoutRef<"button"> {
+ selected?: boolean;
+ value: string;
+}
+
+export const ToggleButton = forwardRef(function ToggleButton(props: ToggleButtonProps, ref: Ref) {
+ const { className, selected, value, disabled, role = "button", tabIndex = 0, ...rest } = props;
+ const typesRest = rest;
+ const selectedState = selected ? "selected" : "unselected";
+
+ return (
+
+ );
+});
diff --git a/packages/ui/style.css b/packages/ui/style.css
new file mode 100644
index 0000000..2e77339
--- /dev/null
+++ b/packages/ui/style.css
@@ -0,0 +1,22 @@
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
+
+:root {
+ --xui-skeleton-color: #f3f4f6;
+ --xui-skeleton-color-dark: #f3f4f6;
+}
+
+.xui-skeleton-color {
+ background-color: var(--xui-skeleton-color);
+}
+
+.dark .xui-skeleton-color {
+ background-color: var(--xui-skeleton-color-dark);
+}
+
+@media screen and (prefers-color-scheme: dark) {
+ .xui-skeleton-color {
+ background-color: var(--xui-skeleton-color-dark);
+ }
+}
diff --git a/packages/ui/tailwind.config.ts b/packages/ui/tailwind.config.ts
new file mode 100644
index 0000000..8f13179
--- /dev/null
+++ b/packages/ui/tailwind.config.ts
@@ -0,0 +1,7 @@
+import type { Config } from "tailwindcss";
+const config: Config = {
+ theme: {},
+ prefix: "@xui-",
+ content: ["./src/**/*.{js,ts,jsx,tsx,mdx}", "./.storybook/**/*.{js,ts,jsx,tsx,mdx}"],
+};
+export default config;
diff --git a/packages/ui/tsconfig.json b/packages/ui/tsconfig.json
new file mode 100644
index 0000000..8954157
--- /dev/null
+++ b/packages/ui/tsconfig.json
@@ -0,0 +1,9 @@
+{
+ "extends": "@xionwcfm/typescript-config/react-library.json",
+ "compilerOptions": {
+ "outDir": "dist",
+ "rootDir": "src"
+ },
+ "include": ["src"],
+ "exclude": ["node_modules", "dist"]
+}
diff --git a/packages/ui/tsconfig.lint.json b/packages/ui/tsconfig.lint.json
new file mode 100644
index 0000000..f92ec39
--- /dev/null
+++ b/packages/ui/tsconfig.lint.json
@@ -0,0 +1,8 @@
+{
+ "extends": "@xionwcfm/typescript-config/react-library.json",
+ "compilerOptions": {
+ "outDir": "dist"
+ },
+ "include": ["src", "turbo"],
+ "exclude": ["node_modules", "dist"]
+}
diff --git a/packages/ui/tsup.config.ts b/packages/ui/tsup.config.ts
new file mode 100644
index 0000000..a489f9f
--- /dev/null
+++ b/packages/ui/tsup.config.ts
@@ -0,0 +1,13 @@
+import { defineConfig } from "tsup";
+
+export default defineConfig({
+ format: ["cjs", "esm"],
+ entry: ["./src/*.(ts|tsx)", "!./src/**/*.test.(ts|tsx)", "!./src/**/*.stories.(ts|tsx)", "!./stories/*"],
+ sourcemap: false,
+ dts: true,
+ clean: true,
+ minify: true,
+ treeshake: true,
+ splitting: false,
+ external: ["react", "react-dom"],
+});
diff --git a/packages/ui/vitest.config.mts b/packages/ui/vitest.config.mts
new file mode 100644
index 0000000..6686069
--- /dev/null
+++ b/packages/ui/vitest.config.mts
@@ -0,0 +1,14 @@
+import tsConfigPaths from "vite-tsconfig-paths";
+import { defineConfig } from "vitest/config";
+
+import react from "@vitejs/plugin-react";
+
+export default defineConfig({
+ plugins: [react() as any, tsConfigPaths()],
+ test: {
+ globals: true,
+ environment: "happy-dom",
+ setupFiles: ["./vitest.setup.tsx"],
+ include: ["**/*.test.+(ts|tsx|js)"],
+ },
+});
diff --git a/packages/ui/vitest.setup.tsx b/packages/ui/vitest.setup.tsx
new file mode 100644
index 0000000..e262193
--- /dev/null
+++ b/packages/ui/vitest.setup.tsx
@@ -0,0 +1,7 @@
+import "@testing-library/jest-dom/vitest";
+import { cleanup } from "@testing-library/react";
+import { afterEach } from "vitest";
+
+afterEach(() => {
+ cleanup();
+});
diff --git a/packages/xds/package.json b/packages/xds/package.json
index db21efd..eac9931 100644
--- a/packages/xds/package.json
+++ b/packages/xds/package.json
@@ -498,31 +498,29 @@
"@storybook/react": "^8.3.6",
"@storybook/react-vite": "^8.3.6",
"@storybook/test": "^8.3.6",
+ "@testing-library/jest-dom": "^6.6.3",
+ "@testing-library/react": "^16.1.0",
+ "@testing-library/user-event": "^14.5.2",
"@turbo/gen": "^1.12.4",
"@types/node": "catalog:",
"@types/react": "catalog:react18",
"@types/react-dom": "catalog:react18",
+ "@vitejs/plugin-react": "^4.3.4",
"@xionwcfm/icon": "workspace:*",
"@xionwcfm/tailwindcss-config": "workspace:*",
"@xionwcfm/token": "workspace:*",
"@xionwcfm/typescript-config": "workspace:*",
"autoprefixer": "catalog:",
- "cssnano": "^7.0.5",
+ "happy-dom": "^15.11.7",
"postcss": "catalog:",
- "postcss-colormin": "^7.0.2",
- "postcss-combine-media-query": "^1.0.1",
- "postcss-custom-properties": "^14.0.1",
- "postcss-discard-duplicates": "^7.0.1",
- "postcss-import": "^16.1.0",
- "postcss-minify-gradients": "^7.0.0",
- "postcss-minify-selectors": "^7.0.3",
- "postcss-reduce-initial": "^7.0.2",
- "postcss-variable-compress": "^3.0.0",
"react": "catalog:react18",
"storybook": "^8.3.6",
"tailwindcss": "catalog:",
"tsup": "catalog:",
- "typescript": "catalog:"
+ "typescript": "catalog:",
+ "vite": "^6.0.5",
+ "vite-tsconfig-paths": "^5.1.4",
+ "vitest": "^2.1.8"
},
"dependencies": {
"@radix-ui/react-accordion": "^1.2.0",
diff --git a/packages/xds/src/toggle-button-group.tsx b/packages/xds/src/toggle-button-group.tsx
deleted file mode 100644
index 56bf530..0000000
--- a/packages/xds/src/toggle-button-group.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-import { ReactElement, createContext } from "react";
-import { ToggleButtonProps } from "./toggle-button";
-
-interface ToggleButtonGroupProps {
- children: ReactElement | ReactElement[];
- value: string;
- onChange: (value: string) => void;
-}
-
-const SingleValueContext = createContext(null);
-
-export function ToggleButtonGroup(props: ToggleButtonGroupProps) {
- const { value, children, onChange } = props;
- return {children};
-}
diff --git a/packages/xds/src/toggle-button.tsx b/packages/xds/src/toggle-button.tsx
deleted file mode 100644
index 42a877b..0000000
--- a/packages/xds/src/toggle-button.tsx
+++ /dev/null
@@ -1,20 +0,0 @@
-import { type ElementType, forwardRef } from "react";
-import { Box, type BoxRef } from "./box";
-import type { BoxProps } from "./box";
-import { cn } from "./cn";
-
-export interface ToggleButtonProps {
- selected?: boolean;
- value?: string;
-}
-
-export const ToggleButton = forwardRef(function ToggleButton(
- { as, className, selected, value, ...rest }: BoxProps & ToggleButtonProps,
- ref?: BoxRef,
-) {
- const typesRest = rest as BoxProps;
- const selectedState = selected ? "selected" : "unselected";
- return (
-
- );
-}) as (props: BoxProps & ToggleButtonProps, ref?: BoxRef) => JSX.Element;
diff --git a/packages/xds/tsup.config.ts b/packages/xds/tsup.config.ts
index 573df23..396eb81 100644
--- a/packages/xds/tsup.config.ts
+++ b/packages/xds/tsup.config.ts
@@ -2,11 +2,12 @@ import { defineConfig } from "tsup";
export default defineConfig({
format: ["cjs", "esm"],
- entry: ["./src/*.(ts|tsx)", "!./src/**/*.stories.(ts|tsx)", "!./stories/*"],
+ entry: ["./src/*.(ts|tsx)", "!./src/**/*.stories.(ts|tsx)", "!./src/**/*.test.(ts|tsx)", "!./stories/*"],
sourcemap: false,
dts: true,
clean: true,
minify: true,
treeshake: true,
splitting: false,
+ external: ["react", "react-dom"],
});
diff --git a/packages/xds/vitest.config.mts b/packages/xds/vitest.config.mts
new file mode 100644
index 0000000..6686069
--- /dev/null
+++ b/packages/xds/vitest.config.mts
@@ -0,0 +1,14 @@
+import tsConfigPaths from "vite-tsconfig-paths";
+import { defineConfig } from "vitest/config";
+
+import react from "@vitejs/plugin-react";
+
+export default defineConfig({
+ plugins: [react() as any, tsConfigPaths()],
+ test: {
+ globals: true,
+ environment: "happy-dom",
+ setupFiles: ["./vitest.setup.tsx"],
+ include: ["**/*.test.+(ts|tsx|js)"],
+ },
+});
diff --git a/packages/xds/vitest.setup.tsx b/packages/xds/vitest.setup.tsx
new file mode 100644
index 0000000..e262193
--- /dev/null
+++ b/packages/xds/vitest.setup.tsx
@@ -0,0 +1,7 @@
+import "@testing-library/jest-dom/vitest";
+import { cleanup } from "@testing-library/react";
+import { afterEach } from "vitest";
+
+afterEach(() => {
+ cleanup();
+});
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 9b2cc84..2acafee 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -90,7 +90,7 @@ importers:
version: 19.5.0
'@vitest/coverage-v8':
specifier: ^2.1.5
- version: 2.1.5(vitest@2.1.5(@types/node@22.9.0)(happy-dom@15.11.6))
+ version: 2.1.5(vitest@2.1.5(@types/node@22.9.0)(happy-dom@15.11.7))
'@xionwcfm/typescript-config':
specifier: workspace:*
version: link:configs/typescript
@@ -111,7 +111,7 @@ importers:
version: 5.6.3
vitest:
specifier: ^2.1.5
- version: 2.1.5(@types/node@22.9.0)(happy-dom@15.11.6)
+ version: 2.1.5(@types/node@22.9.0)(happy-dom@15.11.7)
apps/playground:
dependencies:
@@ -166,13 +166,13 @@ importers:
version: link:../typescript
tailwindcss:
specifier: ^3.4.1
- version: 3.4.10(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.6.3))
+ version: 3.4.10(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.7.2))
tailwindcss-animate:
specifier: ^1.0.7
- version: 1.0.7(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.6.3)))
+ version: 1.0.7(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.7.2)))
typescript:
specifier: latest
- version: 5.6.3
+ version: 5.7.2
configs/typescript: {}
@@ -374,6 +374,67 @@ importers:
specifier: 'catalog:'
version: 5.6.3
+ packages/ui:
+ dependencies:
+ react-dom:
+ specifier: '>=18'
+ version: 18.3.1(react@18.3.1)
+ devDependencies:
+ '@testing-library/jest-dom':
+ specifier: ^6.6.3
+ version: 6.6.3
+ '@testing-library/react':
+ specifier: ^16.1.0
+ version: 16.1.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@testing-library/user-event':
+ specifier: ^14.5.2
+ version: 14.5.2(@testing-library/dom@10.4.0)
+ '@types/node':
+ specifier: 'catalog:'
+ version: 20.16.3
+ '@types/react':
+ specifier: catalog:react18
+ version: 18.3.12
+ '@types/react-dom':
+ specifier: catalog:react18
+ version: 18.3.1
+ '@vitejs/plugin-react':
+ specifier: ^4.3.4
+ version: 4.3.4(vite@6.0.5(@types/node@20.16.3)(jiti@2.4.0)(yaml@2.5.0))
+ '@xionwcfm/typescript-config':
+ specifier: workspace:*
+ version: link:../../configs/typescript
+ autoprefixer:
+ specifier: 'catalog:'
+ version: 10.4.20(postcss@8.4.49)
+ happy-dom:
+ specifier: ^15.11.7
+ version: 15.11.7
+ postcss:
+ specifier: 'catalog:'
+ version: 8.4.49
+ react:
+ specifier: catalog:react18
+ version: 18.3.1
+ tailwindcss:
+ specifier: 'catalog:'
+ version: 3.4.15(ts-node@10.9.2(@types/node@20.16.3)(typescript@5.6.3))
+ tsup:
+ specifier: 'catalog:'
+ version: 8.1.0(postcss@8.4.49)(ts-node@10.9.2(@types/node@20.16.3)(typescript@5.6.3))(typescript@5.6.3)
+ typescript:
+ specifier: 'catalog:'
+ version: 5.6.3
+ vite:
+ specifier: ^6.0.5
+ version: 6.0.5(@types/node@20.16.3)(jiti@2.4.0)(yaml@2.5.0)
+ vite-tsconfig-paths:
+ specifier: ^5.1.4
+ version: 5.1.4(typescript@5.6.3)(vite@6.0.5(@types/node@20.16.3)(jiti@2.4.0)(yaml@2.5.0))
+ vitest:
+ specifier: ^2.1.8
+ version: 2.1.8(@types/node@20.16.3)(happy-dom@15.11.7)
+
packages/utils:
devDependencies:
'@types/node':
@@ -508,10 +569,19 @@ importers:
version: 8.3.6(@storybook/test@8.3.6(storybook@8.3.6))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.6)(typescript@5.6.3)
'@storybook/react-vite':
specifier: ^8.3.6
- version: 8.3.6(@storybook/test@8.3.6(storybook@8.3.6))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.27.2)(storybook@8.3.6)(typescript@5.6.3)(vite@5.4.11(@types/node@20.16.3))
+ version: 8.3.6(@storybook/test@8.3.6(storybook@8.3.6))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.27.2)(storybook@8.3.6)(typescript@5.6.3)(vite@6.0.5(@types/node@20.16.3)(jiti@2.4.0)(yaml@2.5.0))
'@storybook/test':
specifier: ^8.3.6
version: 8.3.6(storybook@8.3.6)
+ '@testing-library/jest-dom':
+ specifier: ^6.6.3
+ version: 6.6.3
+ '@testing-library/react':
+ specifier: ^16.1.0
+ version: 16.1.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@testing-library/user-event':
+ specifier: ^14.5.2
+ version: 14.5.2(@testing-library/dom@10.4.0)
'@turbo/gen':
specifier: ^1.12.4
version: 1.13.4(@types/node@20.16.3)(typescript@5.6.3)
@@ -524,6 +594,9 @@ importers:
'@types/react-dom':
specifier: catalog:react18
version: 18.3.1
+ '@vitejs/plugin-react':
+ specifier: ^4.3.4
+ version: 4.3.4(vite@6.0.5(@types/node@20.16.3)(jiti@2.4.0)(yaml@2.5.0))
'@xionwcfm/icon':
specifier: workspace:*
version: link:../icon
@@ -539,39 +612,12 @@ importers:
autoprefixer:
specifier: 'catalog:'
version: 10.4.20(postcss@8.4.49)
- cssnano:
- specifier: ^7.0.5
- version: 7.0.5(postcss@8.4.49)
+ happy-dom:
+ specifier: ^15.11.7
+ version: 15.11.7
postcss:
specifier: 'catalog:'
version: 8.4.49
- postcss-colormin:
- specifier: ^7.0.2
- version: 7.0.2(postcss@8.4.49)
- postcss-combine-media-query:
- specifier: ^1.0.1
- version: 1.0.1
- postcss-custom-properties:
- specifier: ^14.0.1
- version: 14.0.1(postcss@8.4.49)
- postcss-discard-duplicates:
- specifier: ^7.0.1
- version: 7.0.1(postcss@8.4.49)
- postcss-import:
- specifier: ^16.1.0
- version: 16.1.0(postcss@8.4.49)
- postcss-minify-gradients:
- specifier: ^7.0.0
- version: 7.0.0(postcss@8.4.49)
- postcss-minify-selectors:
- specifier: ^7.0.3
- version: 7.0.3(postcss@8.4.49)
- postcss-reduce-initial:
- specifier: ^7.0.2
- version: 7.0.2(postcss@8.4.49)
- postcss-variable-compress:
- specifier: ^3.0.0
- version: 3.0.0(postcss@8.4.49)
react:
specifier: catalog:react18
version: 18.3.1
@@ -587,6 +633,15 @@ importers:
typescript:
specifier: 'catalog:'
version: 5.6.3
+ vite:
+ specifier: ^6.0.5
+ version: 6.0.5(@types/node@20.16.3)(jiti@2.4.0)(yaml@2.5.0)
+ vite-tsconfig-paths:
+ specifier: ^5.1.4
+ version: 5.1.4(typescript@5.6.3)(vite@6.0.5(@types/node@20.16.3)(jiti@2.4.0)(yaml@2.5.0))
+ vitest:
+ specifier: ^2.1.8
+ version: 2.1.8(@types/node@20.16.3)(happy-dom@15.11.7)
packages:
@@ -613,32 +668,62 @@ packages:
resolution: {integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==}
engines: {node: '>=6.9.0'}
+ '@babel/compat-data@7.26.3':
+ resolution: {integrity: sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==}
+ engines: {node: '>=6.9.0'}
+
'@babel/core@7.25.2':
resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==}
engines: {node: '>=6.9.0'}
+ '@babel/core@7.26.0':
+ resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==}
+ engines: {node: '>=6.9.0'}
+
'@babel/generator@7.25.6':
resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==}
engines: {node: '>=6.9.0'}
+ '@babel/generator@7.26.3':
+ resolution: {integrity: sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==}
+ engines: {node: '>=6.9.0'}
+
'@babel/helper-compilation-targets@7.25.2':
resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==}
engines: {node: '>=6.9.0'}
+ '@babel/helper-compilation-targets@7.25.9':
+ resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==}
+ engines: {node: '>=6.9.0'}
+
'@babel/helper-module-imports@7.24.7':
resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==}
engines: {node: '>=6.9.0'}
+ '@babel/helper-module-imports@7.25.9':
+ resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==}
+ engines: {node: '>=6.9.0'}
+
'@babel/helper-module-transforms@7.25.2':
resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
+ '@babel/helper-module-transforms@7.26.0':
+ resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
'@babel/helper-plugin-utils@7.24.8':
resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==}
engines: {node: '>=6.9.0'}
+ '@babel/helper-plugin-utils@7.25.9':
+ resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==}
+ engines: {node: '>=6.9.0'}
+
'@babel/helper-simple-access@7.24.7':
resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==}
engines: {node: '>=6.9.0'}
@@ -647,6 +732,10 @@ packages:
resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==}
engines: {node: '>=6.9.0'}
+ '@babel/helper-string-parser@7.25.9':
+ resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==}
+ engines: {node: '>=6.9.0'}
+
'@babel/helper-validator-identifier@7.24.7':
resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==}
engines: {node: '>=6.9.0'}
@@ -659,10 +748,18 @@ packages:
resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==}
engines: {node: '>=6.9.0'}
+ '@babel/helper-validator-option@7.25.9':
+ resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==}
+ engines: {node: '>=6.9.0'}
+
'@babel/helpers@7.25.6':
resolution: {integrity: sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==}
engines: {node: '>=6.9.0'}
+ '@babel/helpers@7.26.0':
+ resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==}
+ engines: {node: '>=6.9.0'}
+
'@babel/highlight@7.24.7':
resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==}
engines: {node: '>=6.9.0'}
@@ -672,18 +769,35 @@ packages:
engines: {node: '>=6.0.0'}
hasBin: true
+ '@babel/parser@7.26.3':
+ resolution: {integrity: sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
'@babel/plugin-transform-react-jsx-self@7.24.7':
resolution: {integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
+ '@babel/plugin-transform-react-jsx-self@7.25.9':
+ resolution: {integrity: sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
'@babel/plugin-transform-react-jsx-source@7.24.7':
resolution: {integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
+ '@babel/plugin-transform-react-jsx-source@7.25.9':
+ resolution: {integrity: sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
'@babel/runtime-corejs3@7.25.6':
resolution: {integrity: sha512-Gz0Nrobx8szge6kQQ5Z5MX9L3ObqNwCQY1PSwSNzreFL7aHGxv8Fp2j3ETV6/wWdbiV+mW6OSm8oQhg3Tcsniw==}
engines: {node: '>=6.9.0'}
@@ -696,14 +810,26 @@ packages:
resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==}
engines: {node: '>=6.9.0'}
+ '@babel/template@7.25.9':
+ resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==}
+ engines: {node: '>=6.9.0'}
+
'@babel/traverse@7.25.6':
resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==}
engines: {node: '>=6.9.0'}
+ '@babel/traverse@7.26.4':
+ resolution: {integrity: sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==}
+ engines: {node: '>=6.9.0'}
+
'@babel/types@7.25.6':
resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==}
engines: {node: '>=6.9.0'}
+ '@babel/types@7.26.3':
+ resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==}
+ engines: {node: '>=6.9.0'}
+
'@base2/pretty-print-object@1.0.1':
resolution: {integrity: sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==}
@@ -840,29 +966,6 @@ packages:
resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
engines: {node: '>=12'}
- '@csstools/cascade-layer-name-parser@2.0.1':
- resolution: {integrity: sha512-G9ZYN5+yr/E6xYSiy1BwOEFP5p88ZtWo8sL4NztKBkRRAwRkzVGa70M+D+fYHugMID5jkLeNt5X9jYd5EaVuyg==}
- engines: {node: '>=18'}
- peerDependencies:
- '@csstools/css-parser-algorithms': ^3.0.1
- '@csstools/css-tokenizer': ^3.0.1
-
- '@csstools/css-parser-algorithms@3.0.1':
- resolution: {integrity: sha512-lSquqZCHxDfuTg/Sk2hiS0mcSFCEBuj49JfzPHJogDBT0mGCyY5A1AQzBWngitrp7i1/HAZpIgzF/VjhOEIJIg==}
- engines: {node: '>=18'}
- peerDependencies:
- '@csstools/css-tokenizer': ^3.0.1
-
- '@csstools/css-tokenizer@3.0.1':
- resolution: {integrity: sha512-UBqaiu7kU0lfvaP982/o3khfXccVlHPWp0/vwwiIgDF0GmqqqxoiXC/6FCjlS9u92f7CoEz6nXKQnrn1kIAkOw==}
- engines: {node: '>=18'}
-
- '@csstools/utilities@2.0.0':
- resolution: {integrity: sha512-5VdOr0Z71u+Yp3ozOx8T11N703wIFGVRgOWbOZMKgglPJsWA54MRIoMNVMa7shUToIhx5J8vX4sOZgD2XiihiQ==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
-
'@esbuild/aix-ppc64@0.21.5':
resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
engines: {node: '>=12'}
@@ -875,6 +978,12 @@ packages:
cpu: [ppc64]
os: [aix]
+ '@esbuild/aix-ppc64@0.24.0':
+ resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [aix]
+
'@esbuild/android-arm64@0.21.5':
resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
engines: {node: '>=12'}
@@ -887,6 +996,12 @@ packages:
cpu: [arm64]
os: [android]
+ '@esbuild/android-arm64@0.24.0':
+ resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [android]
+
'@esbuild/android-arm@0.21.5':
resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
engines: {node: '>=12'}
@@ -899,6 +1014,12 @@ packages:
cpu: [arm]
os: [android]
+ '@esbuild/android-arm@0.24.0':
+ resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [android]
+
'@esbuild/android-x64@0.21.5':
resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
engines: {node: '>=12'}
@@ -911,6 +1032,12 @@ packages:
cpu: [x64]
os: [android]
+ '@esbuild/android-x64@0.24.0':
+ resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [android]
+
'@esbuild/darwin-arm64@0.21.5':
resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
engines: {node: '>=12'}
@@ -923,6 +1050,12 @@ packages:
cpu: [arm64]
os: [darwin]
+ '@esbuild/darwin-arm64@0.24.0':
+ resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [darwin]
+
'@esbuild/darwin-x64@0.21.5':
resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
engines: {node: '>=12'}
@@ -935,6 +1068,12 @@ packages:
cpu: [x64]
os: [darwin]
+ '@esbuild/darwin-x64@0.24.0':
+ resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [darwin]
+
'@esbuild/freebsd-arm64@0.21.5':
resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
engines: {node: '>=12'}
@@ -947,6 +1086,12 @@ packages:
cpu: [arm64]
os: [freebsd]
+ '@esbuild/freebsd-arm64@0.24.0':
+ resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [freebsd]
+
'@esbuild/freebsd-x64@0.21.5':
resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
engines: {node: '>=12'}
@@ -959,6 +1104,12 @@ packages:
cpu: [x64]
os: [freebsd]
+ '@esbuild/freebsd-x64@0.24.0':
+ resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [freebsd]
+
'@esbuild/linux-arm64@0.21.5':
resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
engines: {node: '>=12'}
@@ -971,6 +1122,12 @@ packages:
cpu: [arm64]
os: [linux]
+ '@esbuild/linux-arm64@0.24.0':
+ resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [linux]
+
'@esbuild/linux-arm@0.21.5':
resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
engines: {node: '>=12'}
@@ -983,6 +1140,12 @@ packages:
cpu: [arm]
os: [linux]
+ '@esbuild/linux-arm@0.24.0':
+ resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [linux]
+
'@esbuild/linux-ia32@0.21.5':
resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
engines: {node: '>=12'}
@@ -995,6 +1158,12 @@ packages:
cpu: [ia32]
os: [linux]
+ '@esbuild/linux-ia32@0.24.0':
+ resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [linux]
+
'@esbuild/linux-loong64@0.21.5':
resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
engines: {node: '>=12'}
@@ -1007,6 +1176,12 @@ packages:
cpu: [loong64]
os: [linux]
+ '@esbuild/linux-loong64@0.24.0':
+ resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==}
+ engines: {node: '>=18'}
+ cpu: [loong64]
+ os: [linux]
+
'@esbuild/linux-mips64el@0.21.5':
resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
engines: {node: '>=12'}
@@ -1019,6 +1194,12 @@ packages:
cpu: [mips64el]
os: [linux]
+ '@esbuild/linux-mips64el@0.24.0':
+ resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==}
+ engines: {node: '>=18'}
+ cpu: [mips64el]
+ os: [linux]
+
'@esbuild/linux-ppc64@0.21.5':
resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
engines: {node: '>=12'}
@@ -1031,6 +1212,12 @@ packages:
cpu: [ppc64]
os: [linux]
+ '@esbuild/linux-ppc64@0.24.0':
+ resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [linux]
+
'@esbuild/linux-riscv64@0.21.5':
resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
engines: {node: '>=12'}
@@ -1043,6 +1230,12 @@ packages:
cpu: [riscv64]
os: [linux]
+ '@esbuild/linux-riscv64@0.24.0':
+ resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==}
+ engines: {node: '>=18'}
+ cpu: [riscv64]
+ os: [linux]
+
'@esbuild/linux-s390x@0.21.5':
resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
engines: {node: '>=12'}
@@ -1055,6 +1248,12 @@ packages:
cpu: [s390x]
os: [linux]
+ '@esbuild/linux-s390x@0.24.0':
+ resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==}
+ engines: {node: '>=18'}
+ cpu: [s390x]
+ os: [linux]
+
'@esbuild/linux-x64@0.21.5':
resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
engines: {node: '>=12'}
@@ -1067,6 +1266,12 @@ packages:
cpu: [x64]
os: [linux]
+ '@esbuild/linux-x64@0.24.0':
+ resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [linux]
+
'@esbuild/netbsd-x64@0.21.5':
resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
engines: {node: '>=12'}
@@ -1079,12 +1284,24 @@ packages:
cpu: [x64]
os: [netbsd]
+ '@esbuild/netbsd-x64@0.24.0':
+ resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [netbsd]
+
'@esbuild/openbsd-arm64@0.23.1':
resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==}
engines: {node: '>=18'}
cpu: [arm64]
os: [openbsd]
+ '@esbuild/openbsd-arm64@0.24.0':
+ resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openbsd]
+
'@esbuild/openbsd-x64@0.21.5':
resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
engines: {node: '>=12'}
@@ -1097,6 +1314,12 @@ packages:
cpu: [x64]
os: [openbsd]
+ '@esbuild/openbsd-x64@0.24.0':
+ resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [openbsd]
+
'@esbuild/sunos-x64@0.21.5':
resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
engines: {node: '>=12'}
@@ -1109,6 +1332,12 @@ packages:
cpu: [x64]
os: [sunos]
+ '@esbuild/sunos-x64@0.24.0':
+ resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [sunos]
+
'@esbuild/win32-arm64@0.21.5':
resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
engines: {node: '>=12'}
@@ -1121,6 +1350,12 @@ packages:
cpu: [arm64]
os: [win32]
+ '@esbuild/win32-arm64@0.24.0':
+ resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [win32]
+
'@esbuild/win32-ia32@0.21.5':
resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
engines: {node: '>=12'}
@@ -1133,6 +1368,12 @@ packages:
cpu: [ia32]
os: [win32]
+ '@esbuild/win32-ia32@0.24.0':
+ resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [win32]
+
'@esbuild/win32-x64@0.21.5':
resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
engines: {node: '>=12'}
@@ -1145,6 +1386,12 @@ packages:
cpu: [x64]
os: [win32]
+ '@esbuild/win32-x64@0.24.0':
+ resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [win32]
+
'@floating-ui/core@1.6.7':
resolution: {integrity: sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g==}
@@ -2161,6 +2408,10 @@ packages:
resolution: {integrity: sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==}
engines: {node: '>=14', npm: '>=6', yarn: '>=1'}
+ '@testing-library/jest-dom@6.6.3':
+ resolution: {integrity: sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==}
+ engines: {node: '>=14', npm: '>=6', yarn: '>=1'}
+
'@testing-library/react@16.0.0':
resolution: {integrity: sha512-guuxUKRWQ+FgNX0h0NS0FIq3Q3uLtWVpBzcLOggmfMoUpgBnzBzvLLd4fbm6yS8ydJd94cIfY4yP9qUQjM2KwQ==}
engines: {node: '>=18'}
@@ -2176,6 +2427,21 @@ packages:
'@types/react-dom':
optional: true
+ '@testing-library/react@16.1.0':
+ resolution: {integrity: sha512-Q2ToPvg0KsVL0ohND9A3zLJWcOXXcO8IDu3fj11KhNt0UlCWyFyvnCIBkd12tidB2lkiVRG8VFqdhcqhqnAQtg==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@testing-library/dom': ^10.0.0
+ '@types/react': ^18.0.0 || ^19.0.0
+ '@types/react-dom': ^18.0.0 || ^19.0.0
+ react: ^18.0.0 || ^19.0.0
+ react-dom: ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
'@testing-library/user-event@14.5.2':
resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==}
engines: {node: '>=12', npm: '>=6'}
@@ -2185,10 +2451,6 @@ packages:
'@tootallnate/quickjs-emscripten@0.23.0':
resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==}
- '@trysound/sax@0.2.0':
- resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
- engines: {node: '>=10.13.0'}
-
'@tsconfig/node10@1.0.11':
resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==}
@@ -2332,6 +2594,12 @@ packages:
peerDependencies:
vite: ^4.2.0 || ^5.0.0
+ '@vitejs/plugin-react@4.3.4':
+ resolution: {integrity: sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ peerDependencies:
+ vite: ^4.2.0 || ^5.0.0 || ^6.0.0
+
'@vitest/coverage-v8@2.1.5':
resolution: {integrity: sha512-/RoopB7XGW7UEkUndRXF87A9CwkoZAJW01pj8/3pgmDVsjMH2IKy6H1A38po9tmUlwhSyYs0az82rbKd9Yaynw==}
peerDependencies:
@@ -2347,6 +2615,9 @@ packages:
'@vitest/expect@2.1.5':
resolution: {integrity: sha512-nZSBTW1XIdpZvEJyoP/Sy8fUg0b8od7ZpGDkTUcfJ7wz/VoZAFzFfLyxVxGFhUjJzhYqSbIpfMtl/+k/dpWa3Q==}
+ '@vitest/expect@2.1.8':
+ resolution: {integrity: sha512-8ytZ/fFHq2g4PJVAtDX57mayemKgDR6X3Oa2Foro+EygiOJHUXhCqBAAKQYYajZpFoIfvBCF1j6R6IYRSIUFuw==}
+
'@vitest/mocker@2.1.5':
resolution: {integrity: sha512-XYW6l3UuBmitWqSUXTNXcVBUCRytDogBsWuNXQijc00dtnU/9OqpXWp4OJroVrad/gLIomAq9aW8yWDBtMthhQ==}
peerDependencies:
@@ -2358,30 +2629,56 @@ packages:
vite:
optional: true
+ '@vitest/mocker@2.1.8':
+ resolution: {integrity: sha512-7guJ/47I6uqfttp33mgo6ga5Gr1VnL58rcqYKyShoRK9ebu8T5Rs6HN3s1NABiBeVTdWNrwUMcHH54uXZBN4zA==}
+ peerDependencies:
+ msw: ^2.4.9
+ vite: ^5.0.0
+ peerDependenciesMeta:
+ msw:
+ optional: true
+ vite:
+ optional: true
+
'@vitest/pretty-format@2.0.5':
resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==}
'@vitest/pretty-format@2.1.5':
resolution: {integrity: sha512-4ZOwtk2bqG5Y6xRGHcveZVr+6txkH7M2e+nPFd6guSoN638v/1XQ0K06eOpi0ptVU/2tW/pIU4IoPotY/GZ9fw==}
+ '@vitest/pretty-format@2.1.8':
+ resolution: {integrity: sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ==}
+
'@vitest/runner@2.1.5':
resolution: {integrity: sha512-pKHKy3uaUdh7X6p1pxOkgkVAFW7r2I818vHDthYLvUyjRfkKOU6P45PztOch4DZarWQne+VOaIMwA/erSSpB9g==}
+ '@vitest/runner@2.1.8':
+ resolution: {integrity: sha512-17ub8vQstRnRlIU5k50bG+QOMLHRhYPAna5tw8tYbj+jzjcspnwnwtPtiOlkuKC4+ixDPTuLZiqiWWQ2PSXHVg==}
+
'@vitest/snapshot@2.1.5':
resolution: {integrity: sha512-zmYw47mhfdfnYbuhkQvkkzYroXUumrwWDGlMjpdUr4jBd3HZiV2w7CQHj+z7AAS4VOtWxI4Zt4bWt4/sKcoIjg==}
+ '@vitest/snapshot@2.1.8':
+ resolution: {integrity: sha512-20T7xRFbmnkfcmgVEz+z3AU/3b0cEzZOt/zmnvZEctg64/QZbSDJEVm9fLnnlSi74KibmRsO9/Qabi+t0vCRPg==}
+
'@vitest/spy@2.0.5':
resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==}
'@vitest/spy@2.1.5':
resolution: {integrity: sha512-aWZF3P0r3w6DiYTVskOYuhBc7EMc3jvn1TkBg8ttylFFRqNN2XGD7V5a4aQdk6QiUzZQ4klNBSpCLJgWNdIiNw==}
+ '@vitest/spy@2.1.8':
+ resolution: {integrity: sha512-5swjf2q95gXeYPevtW0BLk6H8+bPlMb4Vw/9Em4hFxDcaOxS+e0LOX4yqNxoHzMR2akEB2xfpnWUzkZokmgWDg==}
+
'@vitest/utils@2.0.5':
resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==}
'@vitest/utils@2.1.5':
resolution: {integrity: sha512-yfj6Yrp0Vesw2cwJbP+cl04OC+IHFsuQsrsJBL9pyGeQXE56v1UAOQco+SR55Vf1nQzfV0QJg1Qum7AaWUwwYg==}
+ '@vitest/utils@2.1.8':
+ resolution: {integrity: sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==}
+
'@xionwcfm/react@0.0.2':
resolution: {integrity: sha512-sDw0uGJpdiPsAknStyEgfE6fTmEewTscZVaRGvgSug7RwLxhv6rrvyBjrfythrXmniknC7K87xw9GUsBvqOhCA==}
peerDependencies:
@@ -2602,9 +2899,6 @@ packages:
resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==}
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
- boolbase@1.0.0:
- resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
-
brace-expansion@1.1.11:
resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
@@ -2628,6 +2922,11 @@ packages:
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
+ browserslist@4.24.3:
+ resolution: {integrity: sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+
buffer-from@1.1.2:
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
@@ -2683,12 +2982,12 @@ packages:
resolution: {integrity: sha512-wzLkDa4K/mzI1OSITC+DUyjgIl/ETNHE9QvYgy6J6Jvqyyz4C0Xfd+lQhb19sX2jMpZV4IssUn0VDVmglV+s4g==}
engines: {node: '>=0.10.0'}
- caniuse-api@3.0.0:
- resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==}
-
caniuse-lite@1.0.30001655:
resolution: {integrity: sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg==}
+ caniuse-lite@1.0.30001690:
+ resolution: {integrity: sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==}
+
caseless@0.12.0:
resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==}
@@ -2808,9 +3107,6 @@ packages:
color-name@1.1.4:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
- colord@2.9.3:
- resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==}
-
colors@1.0.3:
resolution: {integrity: sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==}
engines: {node: '>=0.1.90'}
@@ -2830,10 +3126,6 @@ packages:
resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
engines: {node: '>= 6'}
- commander@7.2.0:
- resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
- engines: {node: '>= 10'}
-
commondir@1.0.1:
resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==}
@@ -2921,27 +3213,6 @@ packages:
resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
engines: {node: '>= 8'}
- css-declaration-sorter@7.2.0:
- resolution: {integrity: sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==}
- engines: {node: ^14 || ^16 || >=18}
- peerDependencies:
- postcss: ^8.0.9
-
- css-select@5.1.0:
- resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==}
-
- css-tree@2.2.1:
- resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==}
- engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'}
-
- css-tree@2.3.1:
- resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==}
- engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
-
- css-what@6.1.0:
- resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==}
- engines: {node: '>= 6'}
-
css.escape@1.5.1:
resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==}
@@ -2950,30 +3221,8 @@ packages:
engines: {node: '>=4'}
hasBin: true
- cssnano-preset-default@7.0.5:
- resolution: {integrity: sha512-Jbzja0xaKwc5JzxPQoc+fotKpYtWEu4wQLMQe29CM0FjjdRjA4omvbGHl2DTGgARKxSTpPssBsok+ixv8uTBqw==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.31
-
- cssnano-utils@5.0.0:
- resolution: {integrity: sha512-Uij0Xdxc24L6SirFr25MlwC2rCFX6scyUmuKpzI+JQ7cyqDEwD42fJ0xfB3yLfOnRDU5LKGgjQ9FA6LYh76GWQ==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.31
-
- cssnano@7.0.5:
- resolution: {integrity: sha512-Aq0vqBLtpTT5Yxj+hLlLfNPFuRQCDIjx5JQAhhaedQKLNDvDGeVziF24PS+S1f0Z5KCxWvw0QVI3VNHNBITxVQ==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.31
-
- csso@5.0.5:
- resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==}
- engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'}
-
- csstype@3.1.3:
- resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
+ csstype@3.1.3:
+ resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
dargs@8.1.0:
resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==}
@@ -2995,15 +3244,6 @@ packages:
supports-color:
optional: true
- debug@4.3.6:
- resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==}
- engines: {node: '>=6.0'}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
-
debug@4.3.7:
resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==}
engines: {node: '>=6.0'}
@@ -3090,19 +3330,6 @@ packages:
dom-accessibility-api@0.6.3:
resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==}
- dom-serializer@2.0.0:
- resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==}
-
- domelementtype@2.3.0:
- resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
-
- domhandler@5.0.3:
- resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==}
- engines: {node: '>= 4'}
-
- domutils@3.1.0:
- resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==}
-
dot-case@2.1.1:
resolution: {integrity: sha512-HnM6ZlFqcajLsyudHq7LeeLDr2rFAVYtDv/hV5qchQEidSck8j9OPUsXY9KwJv/lHMtYlX4DjRQqwFYa+0r8Ug==}
@@ -3128,6 +3355,9 @@ packages:
electron-to-chromium@1.5.13:
resolution: {integrity: sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==}
+ electron-to-chromium@1.5.75:
+ resolution: {integrity: sha512-Lf3++DumRE/QmweGjU+ZcKqQ+3bKkU/qjaKYhIJKEOhgIO9Xs6IiAQFkfFoj+RhgDk4LUeNsLo6plExHqSyu6Q==}
+
emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
@@ -3189,6 +3419,11 @@ packages:
engines: {node: '>=18'}
hasBin: true
+ esbuild@0.24.0:
+ resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==}
+ engines: {node: '>=18'}
+ hasBin: true
+
escalade@3.2.0:
resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
engines: {node: '>=6'}
@@ -3454,6 +3689,10 @@ packages:
resolution: {integrity: sha512-elX7iUTu+5+3b2+NGQc0L3eWyq9jKhuJJ4GpOMxxT/c2pg9O3L5H3ty2VECX0XXZgRmmRqXyOK8brA2hDI6LsQ==}
engines: {node: '>=18.0.0'}
+ happy-dom@15.11.7:
+ resolution: {integrity: sha512-KyrFvnl+J9US63TEzwoiJOQzZBJY7KgBushJA8X61DMbNsH+2ONkDuLDnCnwUiPTF42tLoEmrPyoqbenVA5zrg==}
+ engines: {node: '>=18.0.0'}
+
har-schema@2.0.0:
resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==}
engines: {node: '>=4'}
@@ -3796,6 +4035,11 @@ packages:
engines: {node: '>=4'}
hasBin: true
+ jsesc@3.1.0:
+ resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
+ engines: {node: '>=6'}
+ hasBin: true
+
json-parse-even-better-errors@2.3.1:
resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
@@ -3939,9 +4183,6 @@ packages:
lodash.kebabcase@4.1.1:
resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==}
- lodash.memoize@4.1.2:
- resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==}
-
lodash.merge@4.6.2:
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
@@ -4043,12 +4284,6 @@ packages:
maybe-callback@2.1.0:
resolution: {integrity: sha512-P8CekEs8v3zn0bM/tXgfL0UkBXO//BAQkoAmn8s+eFmH451+7wBWY2aKEmyItoZUcbpaI2OCcM6tcuIil/n5mA==}
- mdn-data@2.0.28:
- resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==}
-
- mdn-data@2.0.30:
- resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
-
media-typer@0.3.0:
resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
engines: {node: '>= 0.6'}
@@ -4120,9 +4355,6 @@ packages:
ms@2.0.0:
resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
- ms@2.1.2:
- resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
-
ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
@@ -4185,6 +4417,9 @@ packages:
node-releases@2.0.18:
resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==}
+ node-releases@2.0.19:
+ resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==}
+
nopt@3.0.6:
resolution: {integrity: sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==}
hasBin: true
@@ -4206,9 +4441,6 @@ packages:
resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
engines: {node: '>=8'}
- nth-check@2.1.1:
- resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
-
oauth-sign@0.9.0:
resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==}
@@ -4383,9 +4615,6 @@ packages:
performance-now@2.1.0:
resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==}
- picocolors@0.2.1:
- resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==}
-
picocolors@1.1.0:
resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==}
@@ -4420,69 +4649,12 @@ packages:
resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==}
engines: {node: '>= 0.4'}
- postcss-calc@10.0.2:
- resolution: {integrity: sha512-DT/Wwm6fCKgpYVI7ZEWuPJ4az8hiEHtCUeYjZXqU7Ou4QqYh1Df2yCQ7Ca6N7xqKPFkxN3fhf+u9KSoOCJNAjg==}
- engines: {node: ^18.12 || ^20.9 || >=22.0}
- peerDependencies:
- postcss: ^8.4.38
-
- postcss-colormin@7.0.2:
- resolution: {integrity: sha512-YntRXNngcvEvDbEjTdRWGU606eZvB5prmHG4BF0yLmVpamXbpsRJzevyy6MZVyuecgzI2AWAlvFi8DAeCqwpvA==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-combine-media-query@1.0.1:
- resolution: {integrity: sha512-DFSXuYy3ltDkC2esIF0ORoS9DCjlyfWhtoQkG9brZMuJY1ABOER95sm3dvccR6IEgSrYX4RgqiHD4Lq3JGrxyw==}
-
- postcss-convert-values@7.0.3:
- resolution: {integrity: sha512-yJhocjCs2SQer0uZ9lXTMOwDowbxvhwFVrZeS6NPEij/XXthl73ggUmfwVvJM+Vaj5gtCKJV1jiUu4IhAUkX/Q==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-custom-properties@14.0.1:
- resolution: {integrity: sha512-SB4GjuZjIq5GQFNbxFrirQPbkdbJooyNy8bh+fcJ8ZG0oasJTflTTtR4geb56h+FBVDIb9Hx4v/NiG2caOj8nQ==}
- engines: {node: '>=18'}
- peerDependencies:
- postcss: ^8.4
-
- postcss-discard-comments@7.0.2:
- resolution: {integrity: sha512-/Hje9Ls1IYcB9duELO/AyDUJI6aQVY3h5Rj1ziXgaLYCTi1iVBLnjg/TS0D6NszR/kDG6I86OwLmAYe+bvJjiQ==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-discard-duplicates@7.0.1:
- resolution: {integrity: sha512-oZA+v8Jkpu1ct/xbbrntHRsfLGuzoP+cpt0nJe5ED2FQF8n8bJtn7Bo28jSmBYwqgqnqkuSXJfSUEE7if4nClQ==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-discard-empty@7.0.0:
- resolution: {integrity: sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-discard-overridden@7.0.0:
- resolution: {integrity: sha512-GmNAzx88u3k2+sBTZrJSDauR0ccpE24omTQCVmaTTZFz1du6AasspjaUPMJ2ud4RslZpoFKyf+6MSPETLojc6w==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.31
-
postcss-import@15.1.0:
resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
engines: {node: '>=14.0.0'}
peerDependencies:
postcss: ^8.0.0
- postcss-import@16.1.0:
- resolution: {integrity: sha512-7hsAZ4xGXl4MW+OKEWCnF6T5jqBw80/EE9aXg1r2yyn1RsVEU8EtKXbijEODa+rg7iih4bKf7vlvTGYR4CnPNg==}
- engines: {node: '>=18.0.0'}
- peerDependencies:
- postcss: ^8.0.0
-
postcss-js@4.0.1:
resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
engines: {node: ^12 || ^14 || >= 16}
@@ -4501,149 +4673,19 @@ packages:
ts-node:
optional: true
- postcss-merge-longhand@7.0.3:
- resolution: {integrity: sha512-8waYomFxshdv6M9Em3QRM9MettRLDRcH2JQi2l0Z1KlYD/vhal3gbkeSES0NuACXOlZBB0V/B0AseHZaklzWOA==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-merge-rules@7.0.3:
- resolution: {integrity: sha512-2eSas2p3voPxNfdI5sQrvIkMaeUHpVc3EezgVs18hz/wRTQAC9U99tp9j3W5Jx9/L3qHkEDvizEx/LdnmumIvQ==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-minify-font-values@7.0.0:
- resolution: {integrity: sha512-2ckkZtgT0zG8SMc5aoNwtm5234eUx1GGFJKf2b1bSp8UflqaeFzR50lid4PfqVI9NtGqJ2J4Y7fwvnP/u1cQog==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-minify-gradients@7.0.0:
- resolution: {integrity: sha512-pdUIIdj/C93ryCHew0UgBnL2DtUS3hfFa5XtERrs4x+hmpMYGhbzo6l/Ir5de41O0GaKVpK1ZbDNXSY6GkXvtg==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-minify-params@7.0.2:
- resolution: {integrity: sha512-nyqVLu4MFl9df32zTsdcLqCFfE/z2+f8GE1KHPxWOAmegSo6lpV2GNy5XQvrzwbLmiU7d+fYay4cwto1oNdAaQ==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-minify-selectors@7.0.3:
- resolution: {integrity: sha512-SxTgUQSgBk6wEqzQZKEv1xQYIp9UBju6no9q+npohzSdhuSICQdkqmD1UMKkZWItS3olJSJMDDEY9WOJ5oGJew==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.31
-
postcss-nested@6.2.0:
resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==}
engines: {node: '>=12.0'}
peerDependencies:
postcss: ^8.2.14
- postcss-normalize-charset@7.0.0:
- resolution: {integrity: sha512-ABisNUXMeZeDNzCQxPxBCkXexvBrUHV+p7/BXOY+ulxkcjUZO0cp8ekGBwvIh2LbCwnWbyMPNJVtBSdyhM2zYQ==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-normalize-display-values@7.0.0:
- resolution: {integrity: sha512-lnFZzNPeDf5uGMPYgGOw7v0BfB45+irSRz9gHQStdkkhiM0gTfvWkWB5BMxpn0OqgOQuZG/mRlZyJxp0EImr2Q==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-normalize-positions@7.0.0:
- resolution: {integrity: sha512-I0yt8wX529UKIGs2y/9Ybs2CelSvItfmvg/DBIjTnoUSrPxSV7Z0yZ8ShSVtKNaV/wAY+m7bgtyVQLhB00A1NQ==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-normalize-repeat-style@7.0.0:
- resolution: {integrity: sha512-o3uSGYH+2q30ieM3ppu9GTjSXIzOrRdCUn8UOMGNw7Af61bmurHTWI87hRybrP6xDHvOe5WlAj3XzN6vEO8jLw==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-normalize-string@7.0.0:
- resolution: {integrity: sha512-w/qzL212DFVOpMy3UGyxrND+Kb0fvCiBBujiaONIihq7VvtC7bswjWgKQU/w4VcRyDD8gpfqUiBQ4DUOwEJ6Qg==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-normalize-timing-functions@7.0.0:
- resolution: {integrity: sha512-tNgw3YV0LYoRwg43N3lTe3AEWZ66W7Dh7lVEpJbHoKOuHc1sLrzMLMFjP8SNULHaykzsonUEDbKedv8C+7ej6g==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-normalize-unicode@7.0.2:
- resolution: {integrity: sha512-ztisabK5C/+ZWBdYC+Y9JCkp3M9qBv/XFvDtSw0d/XwfT3UaKeW/YTm/MD/QrPNxuecia46vkfEhewjwcYFjkg==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-normalize-url@7.0.0:
- resolution: {integrity: sha512-+d7+PpE+jyPX1hDQZYG+NaFD+Nd2ris6r8fPTBAjE8z/U41n/bib3vze8x7rKs5H1uEw5ppe9IojewouHk0klQ==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-normalize-whitespace@7.0.0:
- resolution: {integrity: sha512-37/toN4wwZErqohedXYqWgvcHUGlT8O/m2jVkAfAe9Bd4MzRqlBmXrJRePH0e9Wgnz2X7KymTgTOaaFizQe3AQ==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-ordered-values@7.0.1:
- resolution: {integrity: sha512-irWScWRL6nRzYmBOXReIKch75RRhNS86UPUAxXdmW/l0FcAsg0lvAXQCby/1lymxn/o0gVa6Rv/0f03eJOwHxw==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-reduce-initial@7.0.2:
- resolution: {integrity: sha512-pOnu9zqQww7dEKf62Nuju6JgsW2V0KRNBHxeKohU+JkHd/GAH5uvoObqFLqkeB2n20mr6yrlWDvo5UBU5GnkfA==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-reduce-transforms@7.0.0:
- resolution: {integrity: sha512-pnt1HKKZ07/idH8cpATX/ujMbtOGhUfE+m8gbqwJE05aTaNw8gbo34a2e3if0xc0dlu75sUOiqvwCGY3fzOHew==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.31
-
postcss-selector-parser@6.1.2:
resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
engines: {node: '>=4'}
- postcss-svgo@7.0.1:
- resolution: {integrity: sha512-0WBUlSL4lhD9rA5k1e5D8EN5wCEyZD6HJk0jIvRxl+FDVOMlJ7DePHYWGGVc5QRqrJ3/06FTXM0bxjmJpmTPSA==}
- engines: {node: ^18.12.0 || ^20.9.0 || >= 18}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-unique-selectors@7.0.2:
- resolution: {integrity: sha512-CjSam+7Vf8cflJQsHrMS0P2hmy9u0+n/P001kb5eAszLmhjMqrt/i5AqQuNFihhViwDvEAezqTmXqaYXL2ugMw==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.31
-
postcss-value-parser@4.2.0:
resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
- postcss-variable-compress@3.0.0:
- resolution: {integrity: sha512-BTQHgBF3dmM1UmqR/Zn8X4U1jYnE9iQywKJFYaf4h0+KRKYvXd6jjU8ODlPq681I/Wdy97sja603b9kD3xq9Ow==}
- engines: {node: '>=10.0.0'}
- peerDependencies:
- postcss: ^8.2.8
-
- postcss@7.0.39:
- resolution: {integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==}
- engines: {node: '>=6.0.0'}
-
postcss@8.4.31:
resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
engines: {node: ^10 || ^12 || >=14}
@@ -5141,12 +5183,6 @@ packages:
babel-plugin-macros:
optional: true
- stylehacks@7.0.3:
- resolution: {integrity: sha512-4DqtecvI/Nd+2BCvW9YEF6lhBN5UM50IJ1R3rnEAhBwbCKf4VehRf+uqvnVArnBayjYD/WtT3g0G/HSRxWfTRg==}
- engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
- peerDependencies:
- postcss: ^8.4.31
-
sucrase@3.35.0:
resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
engines: {node: '>=16 || 14 >=14.17'}
@@ -5176,11 +5212,6 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
- svgo@3.3.2:
- resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==}
- engines: {node: '>=14.0.0'}
- hasBin: true
-
swap-case@1.1.2:
resolution: {integrity: sha512-BAmWG6/bx8syfc6qXPprof3Mn5vQgf5dwdUNJhsNqU9WdPt5P+ES/wQ5bxfijy8zwZgZZHslC3iAsxsuQMCzJQ==}
@@ -5423,6 +5454,11 @@ packages:
engines: {node: '>=14.17'}
hasBin: true
+ typescript@5.7.2:
+ resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+
uglify-js@3.19.3:
resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==}
engines: {node: '>=0.8.0'}
@@ -5462,6 +5498,12 @@ packages:
peerDependencies:
browserslist: '>= 4.21.0'
+ update-browserslist-db@1.1.1:
+ resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+
update-check@1.5.4:
resolution: {integrity: sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==}
@@ -5555,6 +5597,11 @@ packages:
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
+ vite-node@2.1.8:
+ resolution: {integrity: sha512-uPAwSr57kYjAUux+8E2j0q0Fxpn8M9VoyfGiRI8Kfktz9NcYMCenwY5RnZxnF1WTu3TGiYipirIzacLL3VVGFg==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+ hasBin: true
+
vite-tsconfig-paths@4.3.2:
resolution: {integrity: sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==}
peerDependencies:
@@ -5563,6 +5610,14 @@ packages:
vite:
optional: true
+ vite-tsconfig-paths@5.1.4:
+ resolution: {integrity: sha512-cYj0LRuLV2c2sMqhqhGpaO3LretdtMn/BVX4cPLanIZuwwrkVl+lK84E/miEXkCHWXuq65rhNN4rXsBcOB3S4w==}
+ peerDependencies:
+ vite: '*'
+ peerDependenciesMeta:
+ vite:
+ optional: true
+
vite@5.3.4:
resolution: {integrity: sha512-Cw+7zL3ZG9/NZBB8C+8QbQZmR54GwqIz+WMI4b3JgdYJvX+ny9AjJXqkGQlDXSXRP9rP0B4tbciRMOVEKulVOA==}
engines: {node: ^18.0.0 || >=20.0.0}
@@ -5622,6 +5677,46 @@ packages:
terser:
optional: true
+ vite@6.0.5:
+ resolution: {integrity: sha512-akD5IAH/ID5imgue2DYhzsEwCi0/4VKY31uhMLEYJwPP4TiUp8pL5PIK+Wo7H8qT8JY9i+pVfPydcFPYD1EL7g==}
+ engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
+ jiti: '>=1.21.0'
+ less: '*'
+ lightningcss: ^1.21.0
+ sass: '*'
+ sass-embedded: '*'
+ stylus: '*'
+ sugarss: '*'
+ terser: ^5.16.0
+ tsx: ^4.8.1
+ yaml: ^2.4.2
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ jiti:
+ optional: true
+ less:
+ optional: true
+ lightningcss:
+ optional: true
+ sass:
+ optional: true
+ sass-embedded:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+ tsx:
+ optional: true
+ yaml:
+ optional: true
+
vitest-fetch-mock@0.2.2:
resolution: {integrity: sha512-XmH6QgTSjCWrqXoPREIdbj40T7i1xnGmAsTAgfckoO75W1IEHKR8hcPCQ7SO16RsdW1t85oUm6pcQRLeBgjVYQ==}
engines: {node: '>=14.14.0'}
@@ -5653,6 +5748,31 @@ packages:
jsdom:
optional: true
+ vitest@2.1.8:
+ resolution: {integrity: sha512-1vBKTZskHw/aosXqQUlVWWlGUxSJR8YtiyZDJAFeW2kPAeX6S3Sool0mjspO+kXLuxVWlEDDowBAeqeAQefqLQ==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+ hasBin: true
+ peerDependencies:
+ '@edge-runtime/vm': '*'
+ '@types/node': ^18.0.0 || >=20.0.0
+ '@vitest/browser': 2.1.8
+ '@vitest/ui': 2.1.8
+ happy-dom: '*'
+ jsdom: '*'
+ peerDependenciesMeta:
+ '@edge-runtime/vm':
+ optional: true
+ '@types/node':
+ optional: true
+ '@vitest/browser':
+ optional: true
+ '@vitest/ui':
+ optional: true
+ happy-dom:
+ optional: true
+ jsdom:
+ optional: true
+
wcwidth@1.0.1:
resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
@@ -5806,6 +5926,8 @@ snapshots:
'@babel/compat-data@7.25.4': {}
+ '@babel/compat-data@7.26.3': {}
+
'@babel/core@7.25.2':
dependencies:
'@ampproject/remapping': 2.3.0
@@ -5819,7 +5941,27 @@ snapshots:
'@babel/traverse': 7.25.6
'@babel/types': 7.25.6
convert-source-map: 2.0.0
- debug: 4.3.6
+ debug: 4.3.7
+ gensync: 1.0.0-beta.2
+ json5: 2.2.3
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/core@7.26.0':
+ dependencies:
+ '@ampproject/remapping': 2.3.0
+ '@babel/code-frame': 7.26.2
+ '@babel/generator': 7.26.3
+ '@babel/helper-compilation-targets': 7.25.9
+ '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0)
+ '@babel/helpers': 7.26.0
+ '@babel/parser': 7.26.3
+ '@babel/template': 7.25.9
+ '@babel/traverse': 7.26.4
+ '@babel/types': 7.26.3
+ convert-source-map: 2.0.0
+ debug: 4.3.7
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
@@ -5833,6 +5975,14 @@ snapshots:
'@jridgewell/trace-mapping': 0.3.25
jsesc: 2.5.2
+ '@babel/generator@7.26.3':
+ dependencies:
+ '@babel/parser': 7.26.3
+ '@babel/types': 7.26.3
+ '@jridgewell/gen-mapping': 0.3.5
+ '@jridgewell/trace-mapping': 0.3.25
+ jsesc: 3.1.0
+
'@babel/helper-compilation-targets@7.25.2':
dependencies:
'@babel/compat-data': 7.25.4
@@ -5841,6 +5991,14 @@ snapshots:
lru-cache: 5.1.1
semver: 6.3.1
+ '@babel/helper-compilation-targets@7.25.9':
+ dependencies:
+ '@babel/compat-data': 7.26.3
+ '@babel/helper-validator-option': 7.25.9
+ browserslist: 4.24.3
+ lru-cache: 5.1.1
+ semver: 6.3.1
+
'@babel/helper-module-imports@7.24.7':
dependencies:
'@babel/traverse': 7.25.6
@@ -5848,6 +6006,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@babel/helper-module-imports@7.25.9':
+ dependencies:
+ '@babel/traverse': 7.26.4
+ '@babel/types': 7.26.3
+ transitivePeerDependencies:
+ - supports-color
+
'@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)':
dependencies:
'@babel/core': 7.25.2
@@ -5858,8 +6023,19 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-module-imports': 7.25.9
+ '@babel/helper-validator-identifier': 7.25.9
+ '@babel/traverse': 7.26.4
+ transitivePeerDependencies:
+ - supports-color
+
'@babel/helper-plugin-utils@7.24.8': {}
+ '@babel/helper-plugin-utils@7.25.9': {}
+
'@babel/helper-simple-access@7.24.7':
dependencies:
'@babel/traverse': 7.25.6
@@ -5869,17 +6045,26 @@ snapshots:
'@babel/helper-string-parser@7.24.8': {}
+ '@babel/helper-string-parser@7.25.9': {}
+
'@babel/helper-validator-identifier@7.24.7': {}
'@babel/helper-validator-identifier@7.25.9': {}
'@babel/helper-validator-option@7.24.8': {}
+ '@babel/helper-validator-option@7.25.9': {}
+
'@babel/helpers@7.25.6':
dependencies:
'@babel/template': 7.25.0
'@babel/types': 7.25.6
+ '@babel/helpers@7.26.0':
+ dependencies:
+ '@babel/template': 7.25.9
+ '@babel/types': 7.26.3
+
'@babel/highlight@7.24.7':
dependencies:
'@babel/helper-validator-identifier': 7.24.7
@@ -5891,16 +6076,30 @@ snapshots:
dependencies:
'@babel/types': 7.25.6
+ '@babel/parser@7.26.3':
+ dependencies:
+ '@babel/types': 7.26.3
+
'@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.25.2)':
dependencies:
'@babel/core': 7.25.2
'@babel/helper-plugin-utils': 7.24.8
+ '@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
'@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.25.2)':
dependencies:
'@babel/core': 7.25.2
'@babel/helper-plugin-utils': 7.24.8
+ '@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
'@babel/runtime-corejs3@7.25.6':
dependencies:
core-js-pure: 3.38.1
@@ -5912,10 +6111,16 @@ snapshots:
'@babel/template@7.25.0':
dependencies:
- '@babel/code-frame': 7.24.7
+ '@babel/code-frame': 7.26.2
'@babel/parser': 7.25.6
'@babel/types': 7.25.6
+ '@babel/template@7.25.9':
+ dependencies:
+ '@babel/code-frame': 7.26.2
+ '@babel/parser': 7.26.3
+ '@babel/types': 7.26.3
+
'@babel/traverse@7.25.6':
dependencies:
'@babel/code-frame': 7.24.7
@@ -5928,12 +6133,29 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@babel/traverse@7.26.4':
+ dependencies:
+ '@babel/code-frame': 7.26.2
+ '@babel/generator': 7.26.3
+ '@babel/parser': 7.26.3
+ '@babel/template': 7.25.9
+ '@babel/types': 7.26.3
+ debug: 4.3.7
+ globals: 11.12.0
+ transitivePeerDependencies:
+ - supports-color
+
'@babel/types@7.25.6':
dependencies:
'@babel/helper-string-parser': 7.24.8
'@babel/helper-validator-identifier': 7.24.7
to-fast-properties: 2.0.0
+ '@babel/types@7.26.3':
+ dependencies:
+ '@babel/helper-string-parser': 7.25.9
+ '@babel/helper-validator-identifier': 7.25.9
+
'@base2/pretty-print-object@1.0.1': {}
'@bcoe/v8-coverage@0.2.3': {}
@@ -6099,162 +6321,219 @@ snapshots:
dependencies:
'@jridgewell/trace-mapping': 0.3.9
- '@csstools/cascade-layer-name-parser@2.0.1(@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1))(@csstools/css-tokenizer@3.0.1)':
- dependencies:
- '@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1)
- '@csstools/css-tokenizer': 3.0.1
-
- '@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1)':
- dependencies:
- '@csstools/css-tokenizer': 3.0.1
-
- '@csstools/css-tokenizer@3.0.1': {}
-
- '@csstools/utilities@2.0.0(postcss@8.4.49)':
- dependencies:
- postcss: 8.4.49
-
'@esbuild/aix-ppc64@0.21.5':
optional: true
'@esbuild/aix-ppc64@0.23.1':
optional: true
+ '@esbuild/aix-ppc64@0.24.0':
+ optional: true
+
'@esbuild/android-arm64@0.21.5':
optional: true
'@esbuild/android-arm64@0.23.1':
optional: true
+ '@esbuild/android-arm64@0.24.0':
+ optional: true
+
'@esbuild/android-arm@0.21.5':
optional: true
'@esbuild/android-arm@0.23.1':
optional: true
+ '@esbuild/android-arm@0.24.0':
+ optional: true
+
'@esbuild/android-x64@0.21.5':
optional: true
'@esbuild/android-x64@0.23.1':
optional: true
+ '@esbuild/android-x64@0.24.0':
+ optional: true
+
'@esbuild/darwin-arm64@0.21.5':
optional: true
'@esbuild/darwin-arm64@0.23.1':
optional: true
+ '@esbuild/darwin-arm64@0.24.0':
+ optional: true
+
'@esbuild/darwin-x64@0.21.5':
optional: true
'@esbuild/darwin-x64@0.23.1':
optional: true
+ '@esbuild/darwin-x64@0.24.0':
+ optional: true
+
'@esbuild/freebsd-arm64@0.21.5':
optional: true
'@esbuild/freebsd-arm64@0.23.1':
optional: true
+ '@esbuild/freebsd-arm64@0.24.0':
+ optional: true
+
'@esbuild/freebsd-x64@0.21.5':
optional: true
'@esbuild/freebsd-x64@0.23.1':
optional: true
+ '@esbuild/freebsd-x64@0.24.0':
+ optional: true
+
'@esbuild/linux-arm64@0.21.5':
optional: true
'@esbuild/linux-arm64@0.23.1':
optional: true
+ '@esbuild/linux-arm64@0.24.0':
+ optional: true
+
'@esbuild/linux-arm@0.21.5':
optional: true
'@esbuild/linux-arm@0.23.1':
optional: true
+ '@esbuild/linux-arm@0.24.0':
+ optional: true
+
'@esbuild/linux-ia32@0.21.5':
optional: true
'@esbuild/linux-ia32@0.23.1':
optional: true
+ '@esbuild/linux-ia32@0.24.0':
+ optional: true
+
'@esbuild/linux-loong64@0.21.5':
optional: true
'@esbuild/linux-loong64@0.23.1':
optional: true
+ '@esbuild/linux-loong64@0.24.0':
+ optional: true
+
'@esbuild/linux-mips64el@0.21.5':
optional: true
'@esbuild/linux-mips64el@0.23.1':
optional: true
+ '@esbuild/linux-mips64el@0.24.0':
+ optional: true
+
'@esbuild/linux-ppc64@0.21.5':
optional: true
'@esbuild/linux-ppc64@0.23.1':
optional: true
+ '@esbuild/linux-ppc64@0.24.0':
+ optional: true
+
'@esbuild/linux-riscv64@0.21.5':
optional: true
'@esbuild/linux-riscv64@0.23.1':
optional: true
+ '@esbuild/linux-riscv64@0.24.0':
+ optional: true
+
'@esbuild/linux-s390x@0.21.5':
optional: true
'@esbuild/linux-s390x@0.23.1':
optional: true
+ '@esbuild/linux-s390x@0.24.0':
+ optional: true
+
'@esbuild/linux-x64@0.21.5':
optional: true
'@esbuild/linux-x64@0.23.1':
optional: true
+ '@esbuild/linux-x64@0.24.0':
+ optional: true
+
'@esbuild/netbsd-x64@0.21.5':
optional: true
'@esbuild/netbsd-x64@0.23.1':
optional: true
+ '@esbuild/netbsd-x64@0.24.0':
+ optional: true
+
'@esbuild/openbsd-arm64@0.23.1':
optional: true
+ '@esbuild/openbsd-arm64@0.24.0':
+ optional: true
+
'@esbuild/openbsd-x64@0.21.5':
optional: true
'@esbuild/openbsd-x64@0.23.1':
optional: true
+ '@esbuild/openbsd-x64@0.24.0':
+ optional: true
+
'@esbuild/sunos-x64@0.21.5':
optional: true
'@esbuild/sunos-x64@0.23.1':
optional: true
+ '@esbuild/sunos-x64@0.24.0':
+ optional: true
+
'@esbuild/win32-arm64@0.21.5':
optional: true
'@esbuild/win32-arm64@0.23.1':
optional: true
+ '@esbuild/win32-arm64@0.24.0':
+ optional: true
+
'@esbuild/win32-ia32@0.21.5':
optional: true
'@esbuild/win32-ia32@0.23.1':
optional: true
+ '@esbuild/win32-ia32@0.24.0':
+ optional: true
+
'@esbuild/win32-x64@0.21.5':
optional: true
'@esbuild/win32-x64@0.23.1':
optional: true
+ '@esbuild/win32-x64@0.24.0':
+ optional: true
+
'@floating-ui/core@1.6.7':
dependencies:
'@floating-ui/utils': 0.2.7
@@ -6283,13 +6562,13 @@ snapshots:
'@istanbuljs/schema@0.1.3': {}
- '@joshwooding/vite-plugin-react-docgen-typescript@0.3.0(typescript@5.6.3)(vite@5.4.11(@types/node@20.16.3))':
+ '@joshwooding/vite-plugin-react-docgen-typescript@0.3.0(typescript@5.6.3)(vite@6.0.5(@types/node@20.16.3)(jiti@2.4.0)(yaml@2.5.0))':
dependencies:
glob: 7.2.3
glob-promise: 4.2.2(glob@7.2.3)
magic-string: 0.27.0
react-docgen-typescript: 2.2.2(typescript@5.6.3)
- vite: 5.4.11(@types/node@20.16.3)
+ vite: 6.0.5(@types/node@20.16.3)(jiti@2.4.0)(yaml@2.5.0)
optionalDependencies:
typescript: 5.6.3
@@ -7140,7 +7419,7 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@storybook/builder-vite@8.3.6(storybook@8.3.6)(typescript@5.6.3)(vite@5.4.11(@types/node@20.16.3))':
+ '@storybook/builder-vite@8.3.6(storybook@8.3.6)(typescript@5.6.3)(vite@6.0.5(@types/node@20.16.3)(jiti@2.4.0)(yaml@2.5.0))':
dependencies:
'@storybook/csf-plugin': 8.3.6(storybook@8.3.6)
'@types/find-cache-dir': 3.2.1
@@ -7152,7 +7431,7 @@ snapshots:
magic-string: 0.30.11
storybook: 8.3.6
ts-dedent: 2.2.0
- vite: 5.4.11(@types/node@20.16.3)
+ vite: 6.0.5(@types/node@20.16.3)(jiti@2.4.0)(yaml@2.5.0)
optionalDependencies:
typescript: 5.6.3
transitivePeerDependencies:
@@ -7219,11 +7498,11 @@ snapshots:
react-dom: 18.3.1(react@18.3.1)
storybook: 8.3.6
- '@storybook/react-vite@8.3.6(@storybook/test@8.3.6(storybook@8.3.6))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.27.2)(storybook@8.3.6)(typescript@5.6.3)(vite@5.4.11(@types/node@20.16.3))':
+ '@storybook/react-vite@8.3.6(@storybook/test@8.3.6(storybook@8.3.6))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.27.2)(storybook@8.3.6)(typescript@5.6.3)(vite@6.0.5(@types/node@20.16.3)(jiti@2.4.0)(yaml@2.5.0))':
dependencies:
- '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.0(typescript@5.6.3)(vite@5.4.11(@types/node@20.16.3))
+ '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.0(typescript@5.6.3)(vite@6.0.5(@types/node@20.16.3)(jiti@2.4.0)(yaml@2.5.0))
'@rollup/pluginutils': 5.1.0(rollup@4.27.2)
- '@storybook/builder-vite': 8.3.6(storybook@8.3.6)(typescript@5.6.3)(vite@5.4.11(@types/node@20.16.3))
+ '@storybook/builder-vite': 8.3.6(storybook@8.3.6)(typescript@5.6.3)(vite@6.0.5(@types/node@20.16.3)(jiti@2.4.0)(yaml@2.5.0))
'@storybook/react': 8.3.6(@storybook/test@8.3.6(storybook@8.3.6))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.6)(typescript@5.6.3)
find-up: 5.0.0
magic-string: 0.30.11
@@ -7233,7 +7512,7 @@ snapshots:
resolve: 1.22.8
storybook: 8.3.6
tsconfig-paths: 4.2.0
- vite: 5.4.11(@types/node@20.16.3)
+ vite: 6.0.5(@types/node@20.16.3)(jiti@2.4.0)(yaml@2.5.0)
transitivePeerDependencies:
- '@preact/preset-vite'
- '@storybook/test'
@@ -7357,6 +7636,16 @@ snapshots:
lodash: 4.17.21
redent: 3.0.0
+ '@testing-library/jest-dom@6.6.3':
+ dependencies:
+ '@adobe/css-tools': 4.4.0
+ aria-query: 5.3.0
+ chalk: 3.0.0
+ css.escape: 1.5.1
+ dom-accessibility-api: 0.6.3
+ lodash: 4.17.21
+ redent: 3.0.0
+
'@testing-library/react@16.0.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/runtime': 7.25.6
@@ -7367,14 +7656,22 @@ snapshots:
'@types/react': 18.3.12
'@types/react-dom': 18.3.1
+ '@testing-library/react@16.1.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ dependencies:
+ '@babel/runtime': 7.25.6
+ '@testing-library/dom': 10.4.0
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.12
+ '@types/react-dom': 18.3.1
+
'@testing-library/user-event@14.5.2(@testing-library/dom@10.4.0)':
dependencies:
'@testing-library/dom': 10.4.0
'@tootallnate/quickjs-emscripten@0.23.0': {}
- '@trysound/sax@0.2.0': {}
-
'@tsconfig/node10@1.0.11': {}
'@tsconfig/node12@1.0.11': {}
@@ -7422,20 +7719,20 @@ snapshots:
'@types/babel__core@7.20.5':
dependencies:
- '@babel/parser': 7.25.6
- '@babel/types': 7.25.6
+ '@babel/parser': 7.26.3
+ '@babel/types': 7.26.3
'@types/babel__generator': 7.6.8
'@types/babel__template': 7.4.4
'@types/babel__traverse': 7.20.6
'@types/babel__generator@7.6.8':
dependencies:
- '@babel/types': 7.25.6
+ '@babel/types': 7.26.3
'@types/babel__template@7.4.4':
dependencies:
- '@babel/parser': 7.25.6
- '@babel/types': 7.25.6
+ '@babel/parser': 7.26.3
+ '@babel/types': 7.26.3
'@types/babel__traverse@7.20.6':
dependencies:
@@ -7563,7 +7860,18 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@vitest/coverage-v8@2.1.5(vitest@2.1.5(@types/node@22.9.0)(happy-dom@15.11.6))':
+ '@vitejs/plugin-react@4.3.4(vite@6.0.5(@types/node@20.16.3)(jiti@2.4.0)(yaml@2.5.0))':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0)
+ '@types/babel__core': 7.20.5
+ react-refresh: 0.14.2
+ vite: 6.0.5(@types/node@20.16.3)(jiti@2.4.0)(yaml@2.5.0)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@vitest/coverage-v8@2.1.5(vitest@2.1.5(@types/node@22.9.0)(happy-dom@15.11.7))':
dependencies:
'@ampproject/remapping': 2.3.0
'@bcoe/v8-coverage': 0.2.3
@@ -7577,7 +7885,7 @@ snapshots:
std-env: 3.8.0
test-exclude: 7.0.1
tinyrainbow: 1.2.0
- vitest: 2.1.5(@types/node@22.9.0)(happy-dom@15.11.6)
+ vitest: 2.1.5(@types/node@22.9.0)(happy-dom@15.11.7)
transitivePeerDependencies:
- supports-color
@@ -7595,21 +7903,36 @@ snapshots:
chai: 5.1.2
tinyrainbow: 1.2.0
- '@vitest/mocker@2.1.5(vite@5.3.4(@types/node@20.16.3))':
+ '@vitest/expect@2.1.8':
+ dependencies:
+ '@vitest/spy': 2.1.8
+ '@vitest/utils': 2.1.8
+ chai: 5.1.2
+ tinyrainbow: 1.2.0
+
+ '@vitest/mocker@2.1.5(vite@5.4.11(@types/node@20.16.3))':
dependencies:
'@vitest/spy': 2.1.5
estree-walker: 3.0.3
magic-string: 0.30.12
optionalDependencies:
- vite: 5.3.4(@types/node@20.16.3)
+ vite: 5.4.11(@types/node@20.16.3)
- '@vitest/mocker@2.1.5(vite@5.3.4(@types/node@22.9.0))':
+ '@vitest/mocker@2.1.5(vite@5.4.11(@types/node@22.9.0))':
dependencies:
'@vitest/spy': 2.1.5
estree-walker: 3.0.3
magic-string: 0.30.12
optionalDependencies:
- vite: 5.3.4(@types/node@22.9.0)
+ vite: 5.4.11(@types/node@22.9.0)
+
+ '@vitest/mocker@2.1.8(vite@5.4.11(@types/node@20.16.3))':
+ dependencies:
+ '@vitest/spy': 2.1.8
+ estree-walker: 3.0.3
+ magic-string: 0.30.12
+ optionalDependencies:
+ vite: 5.4.11(@types/node@20.16.3)
'@vitest/pretty-format@2.0.5':
dependencies:
@@ -7619,17 +7942,32 @@ snapshots:
dependencies:
tinyrainbow: 1.2.0
+ '@vitest/pretty-format@2.1.8':
+ dependencies:
+ tinyrainbow: 1.2.0
+
'@vitest/runner@2.1.5':
dependencies:
'@vitest/utils': 2.1.5
pathe: 1.1.2
+ '@vitest/runner@2.1.8':
+ dependencies:
+ '@vitest/utils': 2.1.8
+ pathe: 1.1.2
+
'@vitest/snapshot@2.1.5':
dependencies:
'@vitest/pretty-format': 2.1.5
magic-string: 0.30.12
pathe: 1.1.2
+ '@vitest/snapshot@2.1.8':
+ dependencies:
+ '@vitest/pretty-format': 2.1.8
+ magic-string: 0.30.12
+ pathe: 1.1.2
+
'@vitest/spy@2.0.5':
dependencies:
tinyspy: 3.0.0
@@ -7638,6 +7976,10 @@ snapshots:
dependencies:
tinyspy: 3.0.2
+ '@vitest/spy@2.1.8':
+ dependencies:
+ tinyspy: 3.0.2
+
'@vitest/utils@2.0.5':
dependencies:
'@vitest/pretty-format': 2.0.5
@@ -7651,6 +7993,12 @@ snapshots:
loupe: 3.1.2
tinyrainbow: 1.2.0
+ '@vitest/utils@2.1.8':
+ dependencies:
+ '@vitest/pretty-format': 2.1.8
+ loupe: 3.1.2
+ tinyrainbow: 1.2.0
+
'@xionwcfm/react@0.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
react: 18.3.1
@@ -7895,8 +8243,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- boolbase@1.0.0: {}
-
brace-expansion@1.1.11:
dependencies:
balanced-match: 1.0.2
@@ -7946,6 +8292,13 @@ snapshots:
node-releases: 2.0.18
update-browserslist-db: 1.1.0(browserslist@4.23.3)
+ browserslist@4.24.3:
+ dependencies:
+ caniuse-lite: 1.0.30001690
+ electron-to-chromium: 1.5.75
+ node-releases: 2.0.19
+ update-browserslist-db: 1.1.1(browserslist@4.24.3)
+
buffer-from@1.1.2: {}
buffer@5.7.1:
@@ -7993,15 +8346,10 @@ snapshots:
camelcase@1.2.1: {}
- caniuse-api@3.0.0:
- dependencies:
- browserslist: 4.23.3
- caniuse-lite: 1.0.30001655
- lodash.memoize: 4.1.2
- lodash.uniq: 4.5.0
-
caniuse-lite@1.0.30001655: {}
+ caniuse-lite@1.0.30001690: {}
+
caseless@0.12.0: {}
chai@5.1.1:
@@ -8139,8 +8487,6 @@ snapshots:
color-name@1.1.4: {}
- colord@2.9.3: {}
-
colors@1.0.3: {}
combined-stream2@1.1.2:
@@ -8159,8 +8505,6 @@ snapshots:
commander@4.1.1: {}
- commander@7.2.0: {}
-
commondir@1.0.1: {}
compare-func@2.0.0:
@@ -8247,82 +8591,10 @@ snapshots:
shebang-command: 2.0.0
which: 2.0.2
- css-declaration-sorter@7.2.0(postcss@8.4.49):
- dependencies:
- postcss: 8.4.49
-
- css-select@5.1.0:
- dependencies:
- boolbase: 1.0.0
- css-what: 6.1.0
- domhandler: 5.0.3
- domutils: 3.1.0
- nth-check: 2.1.1
-
- css-tree@2.2.1:
- dependencies:
- mdn-data: 2.0.28
- source-map-js: 1.2.1
-
- css-tree@2.3.1:
- dependencies:
- mdn-data: 2.0.30
- source-map-js: 1.2.1
-
- css-what@6.1.0: {}
-
css.escape@1.5.1: {}
cssesc@3.0.0: {}
- cssnano-preset-default@7.0.5(postcss@8.4.49):
- dependencies:
- browserslist: 4.23.3
- css-declaration-sorter: 7.2.0(postcss@8.4.49)
- cssnano-utils: 5.0.0(postcss@8.4.49)
- postcss: 8.4.49
- postcss-calc: 10.0.2(postcss@8.4.49)
- postcss-colormin: 7.0.2(postcss@8.4.49)
- postcss-convert-values: 7.0.3(postcss@8.4.49)
- postcss-discard-comments: 7.0.2(postcss@8.4.49)
- postcss-discard-duplicates: 7.0.1(postcss@8.4.49)
- postcss-discard-empty: 7.0.0(postcss@8.4.49)
- postcss-discard-overridden: 7.0.0(postcss@8.4.49)
- postcss-merge-longhand: 7.0.3(postcss@8.4.49)
- postcss-merge-rules: 7.0.3(postcss@8.4.49)
- postcss-minify-font-values: 7.0.0(postcss@8.4.49)
- postcss-minify-gradients: 7.0.0(postcss@8.4.49)
- postcss-minify-params: 7.0.2(postcss@8.4.49)
- postcss-minify-selectors: 7.0.3(postcss@8.4.49)
- postcss-normalize-charset: 7.0.0(postcss@8.4.49)
- postcss-normalize-display-values: 7.0.0(postcss@8.4.49)
- postcss-normalize-positions: 7.0.0(postcss@8.4.49)
- postcss-normalize-repeat-style: 7.0.0(postcss@8.4.49)
- postcss-normalize-string: 7.0.0(postcss@8.4.49)
- postcss-normalize-timing-functions: 7.0.0(postcss@8.4.49)
- postcss-normalize-unicode: 7.0.2(postcss@8.4.49)
- postcss-normalize-url: 7.0.0(postcss@8.4.49)
- postcss-normalize-whitespace: 7.0.0(postcss@8.4.49)
- postcss-ordered-values: 7.0.1(postcss@8.4.49)
- postcss-reduce-initial: 7.0.2(postcss@8.4.49)
- postcss-reduce-transforms: 7.0.0(postcss@8.4.49)
- postcss-svgo: 7.0.1(postcss@8.4.49)
- postcss-unique-selectors: 7.0.2(postcss@8.4.49)
-
- cssnano-utils@5.0.0(postcss@8.4.49):
- dependencies:
- postcss: 8.4.49
-
- cssnano@7.0.5(postcss@8.4.49):
- dependencies:
- cssnano-preset-default: 7.0.5(postcss@8.4.49)
- lilconfig: 3.1.2
- postcss: 8.4.49
-
- csso@5.0.5:
- dependencies:
- css-tree: 2.2.1
-
csstype@3.1.3: {}
dargs@8.1.0: {}
@@ -8337,10 +8609,6 @@ snapshots:
dependencies:
ms: 2.0.0
- debug@4.3.6:
- dependencies:
- ms: 2.1.2
-
debug@4.3.7:
dependencies:
ms: 2.1.3
@@ -8412,24 +8680,6 @@ snapshots:
dom-accessibility-api@0.6.3: {}
- dom-serializer@2.0.0:
- dependencies:
- domelementtype: 2.3.0
- domhandler: 5.0.3
- entities: 4.5.0
-
- domelementtype@2.3.0: {}
-
- domhandler@5.0.3:
- dependencies:
- domelementtype: 2.3.0
-
- domutils@3.1.0:
- dependencies:
- dom-serializer: 2.0.0
- domelementtype: 2.3.0
- domhandler: 5.0.3
-
dot-case@2.1.1:
dependencies:
no-case: 2.3.2
@@ -8457,6 +8707,8 @@ snapshots:
electron-to-chromium@1.5.13: {}
+ electron-to-chromium@1.5.75: {}
+
emoji-regex@8.0.0: {}
emoji-regex@9.2.2: {}
@@ -8552,6 +8804,33 @@ snapshots:
'@esbuild/win32-ia32': 0.23.1
'@esbuild/win32-x64': 0.23.1
+ esbuild@0.24.0:
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.24.0
+ '@esbuild/android-arm': 0.24.0
+ '@esbuild/android-arm64': 0.24.0
+ '@esbuild/android-x64': 0.24.0
+ '@esbuild/darwin-arm64': 0.24.0
+ '@esbuild/darwin-x64': 0.24.0
+ '@esbuild/freebsd-arm64': 0.24.0
+ '@esbuild/freebsd-x64': 0.24.0
+ '@esbuild/linux-arm': 0.24.0
+ '@esbuild/linux-arm64': 0.24.0
+ '@esbuild/linux-ia32': 0.24.0
+ '@esbuild/linux-loong64': 0.24.0
+ '@esbuild/linux-mips64el': 0.24.0
+ '@esbuild/linux-ppc64': 0.24.0
+ '@esbuild/linux-riscv64': 0.24.0
+ '@esbuild/linux-s390x': 0.24.0
+ '@esbuild/linux-x64': 0.24.0
+ '@esbuild/netbsd-x64': 0.24.0
+ '@esbuild/openbsd-arm64': 0.24.0
+ '@esbuild/openbsd-x64': 0.24.0
+ '@esbuild/sunos-x64': 0.24.0
+ '@esbuild/win32-arm64': 0.24.0
+ '@esbuild/win32-ia32': 0.24.0
+ '@esbuild/win32-x64': 0.24.0
+
escalade@3.2.0: {}
escape-html@1.0.3: {}
@@ -8888,6 +9167,12 @@ snapshots:
webidl-conversions: 7.0.0
whatwg-mimetype: 3.0.0
+ happy-dom@15.11.7:
+ dependencies:
+ entities: 4.5.0
+ webidl-conversions: 7.0.0
+ whatwg-mimetype: 3.0.0
+
har-schema@2.0.0: {}
har-validator@5.1.5:
@@ -9196,6 +9481,8 @@ snapshots:
jsesc@2.5.2: {}
+ jsesc@3.1.0: {}
+
json-parse-even-better-errors@2.3.1: {}
json-schema-traverse@0.4.1: {}
@@ -9324,8 +9611,6 @@ snapshots:
lodash.kebabcase@4.1.1: {}
- lodash.memoize@4.1.2: {}
-
lodash.merge@4.6.2: {}
lodash.mergewith@4.6.2: {}
@@ -9418,10 +9703,6 @@ snapshots:
maybe-callback@2.1.0: {}
- mdn-data@2.0.28: {}
-
- mdn-data@2.0.30: {}
-
media-typer@0.3.0: {}
memoizerific@1.11.3:
@@ -9473,8 +9754,6 @@ snapshots:
ms@2.0.0: {}
- ms@2.1.2: {}
-
ms@2.1.3: {}
mute-stream@0.0.8: {}
@@ -9542,6 +9821,8 @@ snapshots:
node-releases@2.0.18: {}
+ node-releases@2.0.19: {}
+
nopt@3.0.6:
dependencies:
abbrev: 1.1.1
@@ -9565,10 +9846,6 @@ snapshots:
dependencies:
path-key: 3.1.1
- nth-check@2.1.1:
- dependencies:
- boolbase: 1.0.0
-
oauth-sign@0.9.0: {}
object-assign@2.1.1: {}
@@ -9744,8 +10021,6 @@ snapshots:
performance-now@2.1.0: {}
- picocolors@0.2.1: {}
-
picocolors@1.1.0: {}
picocolors@1.1.1: {}
@@ -9768,56 +10043,6 @@ snapshots:
possible-typed-array-names@1.0.0: {}
- postcss-calc@10.0.2(postcss@8.4.49):
- dependencies:
- postcss: 8.4.49
- postcss-selector-parser: 6.1.2
- postcss-value-parser: 4.2.0
-
- postcss-colormin@7.0.2(postcss@8.4.49):
- dependencies:
- browserslist: 4.23.3
- caniuse-api: 3.0.0
- colord: 2.9.3
- postcss: 8.4.49
- postcss-value-parser: 4.2.0
-
- postcss-combine-media-query@1.0.1:
- dependencies:
- postcss: 7.0.39
-
- postcss-convert-values@7.0.3(postcss@8.4.49):
- dependencies:
- browserslist: 4.23.3
- postcss: 8.4.49
- postcss-value-parser: 4.2.0
-
- postcss-custom-properties@14.0.1(postcss@8.4.49):
- dependencies:
- '@csstools/cascade-layer-name-parser': 2.0.1(@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1))(@csstools/css-tokenizer@3.0.1)
- '@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1)
- '@csstools/css-tokenizer': 3.0.1
- '@csstools/utilities': 2.0.0(postcss@8.4.49)
- postcss: 8.4.49
- postcss-value-parser: 4.2.0
-
- postcss-discard-comments@7.0.2(postcss@8.4.49):
- dependencies:
- postcss: 8.4.49
- postcss-selector-parser: 6.1.2
-
- postcss-discard-duplicates@7.0.1(postcss@8.4.49):
- dependencies:
- postcss: 8.4.49
-
- postcss-discard-empty@7.0.0(postcss@8.4.49):
- dependencies:
- postcss: 8.4.49
-
- postcss-discard-overridden@7.0.0(postcss@8.4.49):
- dependencies:
- postcss: 8.4.49
-
postcss-import@15.1.0(postcss@8.4.49):
dependencies:
postcss: 8.4.49
@@ -9825,13 +10050,6 @@ snapshots:
read-cache: 1.0.0
resolve: 1.22.8
- postcss-import@16.1.0(postcss@8.4.49):
- dependencies:
- postcss: 8.4.49
- postcss-value-parser: 4.2.0
- read-cache: 1.0.0
- resolve: 1.22.8
-
postcss-js@4.0.1(postcss@8.4.49):
dependencies:
camelcase-css: 2.0.1
@@ -9853,139 +10071,26 @@ snapshots:
postcss: 8.4.49
ts-node: 10.9.2(@types/node@22.9.0)(typescript@5.6.3)
- postcss-merge-longhand@7.0.3(postcss@8.4.49):
+ postcss-load-config@4.0.2(postcss@8.4.49)(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.7.2)):
dependencies:
+ lilconfig: 3.1.2
+ yaml: 2.5.0
+ optionalDependencies:
postcss: 8.4.49
- postcss-value-parser: 4.2.0
- stylehacks: 7.0.3(postcss@8.4.49)
-
- postcss-merge-rules@7.0.3(postcss@8.4.49):
- dependencies:
- browserslist: 4.23.3
- caniuse-api: 3.0.0
- cssnano-utils: 5.0.0(postcss@8.4.49)
- postcss: 8.4.49
- postcss-selector-parser: 6.1.2
-
- postcss-minify-font-values@7.0.0(postcss@8.4.49):
- dependencies:
- postcss: 8.4.49
- postcss-value-parser: 4.2.0
-
- postcss-minify-gradients@7.0.0(postcss@8.4.49):
- dependencies:
- colord: 2.9.3
- cssnano-utils: 5.0.0(postcss@8.4.49)
- postcss: 8.4.49
- postcss-value-parser: 4.2.0
-
- postcss-minify-params@7.0.2(postcss@8.4.49):
- dependencies:
- browserslist: 4.23.3
- cssnano-utils: 5.0.0(postcss@8.4.49)
- postcss: 8.4.49
- postcss-value-parser: 4.2.0
-
- postcss-minify-selectors@7.0.3(postcss@8.4.49):
- dependencies:
- cssesc: 3.0.0
- postcss: 8.4.49
- postcss-selector-parser: 6.1.2
+ ts-node: 10.9.2(@types/node@22.9.0)(typescript@5.7.2)
postcss-nested@6.2.0(postcss@8.4.49):
dependencies:
postcss: 8.4.49
postcss-selector-parser: 6.1.2
- postcss-normalize-charset@7.0.0(postcss@8.4.49):
- dependencies:
- postcss: 8.4.49
-
- postcss-normalize-display-values@7.0.0(postcss@8.4.49):
- dependencies:
- postcss: 8.4.49
- postcss-value-parser: 4.2.0
-
- postcss-normalize-positions@7.0.0(postcss@8.4.49):
- dependencies:
- postcss: 8.4.49
- postcss-value-parser: 4.2.0
-
- postcss-normalize-repeat-style@7.0.0(postcss@8.4.49):
- dependencies:
- postcss: 8.4.49
- postcss-value-parser: 4.2.0
-
- postcss-normalize-string@7.0.0(postcss@8.4.49):
- dependencies:
- postcss: 8.4.49
- postcss-value-parser: 4.2.0
-
- postcss-normalize-timing-functions@7.0.0(postcss@8.4.49):
- dependencies:
- postcss: 8.4.49
- postcss-value-parser: 4.2.0
-
- postcss-normalize-unicode@7.0.2(postcss@8.4.49):
- dependencies:
- browserslist: 4.23.3
- postcss: 8.4.49
- postcss-value-parser: 4.2.0
-
- postcss-normalize-url@7.0.0(postcss@8.4.49):
- dependencies:
- postcss: 8.4.49
- postcss-value-parser: 4.2.0
-
- postcss-normalize-whitespace@7.0.0(postcss@8.4.49):
- dependencies:
- postcss: 8.4.49
- postcss-value-parser: 4.2.0
-
- postcss-ordered-values@7.0.1(postcss@8.4.49):
- dependencies:
- cssnano-utils: 5.0.0(postcss@8.4.49)
- postcss: 8.4.49
- postcss-value-parser: 4.2.0
-
- postcss-reduce-initial@7.0.2(postcss@8.4.49):
- dependencies:
- browserslist: 4.23.3
- caniuse-api: 3.0.0
- postcss: 8.4.49
-
- postcss-reduce-transforms@7.0.0(postcss@8.4.49):
- dependencies:
- postcss: 8.4.49
- postcss-value-parser: 4.2.0
-
postcss-selector-parser@6.1.2:
dependencies:
cssesc: 3.0.0
util-deprecate: 1.0.2
- postcss-svgo@7.0.1(postcss@8.4.49):
- dependencies:
- postcss: 8.4.49
- postcss-value-parser: 4.2.0
- svgo: 3.3.2
-
- postcss-unique-selectors@7.0.2(postcss@8.4.49):
- dependencies:
- postcss: 8.4.49
- postcss-selector-parser: 6.1.2
-
postcss-value-parser@4.2.0: {}
- postcss-variable-compress@3.0.0(postcss@8.4.49):
- dependencies:
- postcss: 8.4.49
-
- postcss@7.0.39:
- dependencies:
- picocolors: 0.2.1
- source-map: 0.6.1
-
postcss@8.4.31:
dependencies:
nanoid: 3.3.7
@@ -10028,7 +10133,7 @@ snapshots:
proxy-agent@6.4.0:
dependencies:
agent-base: 7.1.1
- debug: 4.3.6
+ debug: 4.3.7
http-proxy-agent: 7.0.2
https-proxy-agent: 7.0.5
lru-cache: 7.18.3
@@ -10557,12 +10662,6 @@ snapshots:
client-only: 0.0.1
react: 18.3.1
- stylehacks@7.0.3(postcss@8.4.49):
- dependencies:
- browserslist: 4.23.3
- postcss: 8.4.49
- postcss-selector-parser: 6.1.2
-
sucrase@3.35.0:
dependencies:
'@jridgewell/gen-mapping': 0.3.5
@@ -10589,16 +10688,6 @@ snapshots:
supports-preserve-symlinks-flag@1.0.0: {}
- svgo@3.3.2:
- dependencies:
- '@trysound/sax': 0.2.0
- commander: 7.2.0
- css-select: 5.1.0
- css-tree: 2.3.1
- css-what: 6.1.0
- csso: 5.0.5
- picocolors: 1.1.1
-
swap-case@1.1.2:
dependencies:
lower-case: 1.1.4
@@ -10606,11 +10695,11 @@ snapshots:
tailwind-merge@1.14.0: {}
- tailwindcss-animate@1.0.7(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.6.3))):
+ tailwindcss-animate@1.0.7(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.7.2))):
dependencies:
- tailwindcss: 3.4.10(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.6.3))
+ tailwindcss: 3.4.10(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.7.2))
- tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.6.3)):
+ tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.7.2)):
dependencies:
'@alloc/quick-lru': 5.2.0
arg: 5.0.2
@@ -10629,7 +10718,7 @@ snapshots:
postcss: 8.4.49
postcss-import: 15.1.0(postcss@8.4.49)
postcss-js: 4.0.1(postcss@8.4.49)
- postcss-load-config: 4.0.2(postcss@8.4.49)(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.6.3))
+ postcss-load-config: 4.0.2(postcss@8.4.49)(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.7.2))
postcss-nested: 6.2.0(postcss@8.4.49)
postcss-selector-parser: 6.1.2
resolve: 1.22.8
@@ -10795,6 +10884,25 @@ snapshots:
yn: 3.1.1
optional: true
+ ts-node@10.9.2(@types/node@22.9.0)(typescript@5.7.2):
+ dependencies:
+ '@cspotcode/source-map-support': 0.8.1
+ '@tsconfig/node10': 1.0.11
+ '@tsconfig/node12': 1.0.11
+ '@tsconfig/node14': 1.0.3
+ '@tsconfig/node16': 1.0.4
+ '@types/node': 22.9.0
+ acorn: 8.12.1
+ acorn-walk: 8.3.3
+ arg: 4.1.3
+ create-require: 1.1.1
+ diff: 4.0.2
+ make-error: 1.3.6
+ typescript: 5.7.2
+ v8-compile-cache-lib: 3.0.1
+ yn: 3.1.1
+ optional: true
+
tsconfck@3.1.3(typescript@5.6.3):
optionalDependencies:
typescript: 5.6.3
@@ -10903,6 +11011,8 @@ snapshots:
typescript@5.6.3: {}
+ typescript@5.7.2: {}
+
uglify-js@3.19.3:
optional: true
@@ -10941,6 +11051,12 @@ snapshots:
escalade: 3.2.0
picocolors: 1.1.1
+ update-browserslist-db@1.1.1(browserslist@4.24.3):
+ dependencies:
+ browserslist: 4.24.3
+ escalade: 3.2.0
+ picocolors: 1.1.1
+
update-check@1.5.4:
dependencies:
registry-auth-token: 3.3.2
@@ -11034,12 +11150,13 @@ snapshots:
debug: 4.3.7
es-module-lexer: 1.5.4
pathe: 1.1.2
- vite: 5.3.4(@types/node@20.16.3)
+ vite: 5.4.11(@types/node@20.16.3)
transitivePeerDependencies:
- '@types/node'
- less
- lightningcss
- sass
+ - sass-embedded
- stylus
- sugarss
- supports-color
@@ -11051,12 +11168,31 @@ snapshots:
debug: 4.3.7
es-module-lexer: 1.5.4
pathe: 1.1.2
- vite: 5.3.4(@types/node@22.9.0)
+ vite: 5.4.11(@types/node@22.9.0)
+ transitivePeerDependencies:
+ - '@types/node'
+ - less
+ - lightningcss
+ - sass
+ - sass-embedded
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+
+ vite-node@2.1.8(@types/node@20.16.3):
+ dependencies:
+ cac: 6.7.14
+ debug: 4.3.7
+ es-module-lexer: 1.5.4
+ pathe: 1.1.2
+ vite: 5.4.11(@types/node@20.16.3)
transitivePeerDependencies:
- '@types/node'
- less
- lightningcss
- sass
+ - sass-embedded
- stylus
- sugarss
- supports-color
@@ -11073,6 +11209,17 @@ snapshots:
- supports-color
- typescript
+ vite-tsconfig-paths@5.1.4(typescript@5.6.3)(vite@6.0.5(@types/node@20.16.3)(jiti@2.4.0)(yaml@2.5.0)):
+ dependencies:
+ debug: 4.3.7
+ globrex: 0.1.2
+ tsconfck: 3.1.3(typescript@5.6.3)
+ optionalDependencies:
+ vite: 6.0.5(@types/node@20.16.3)(jiti@2.4.0)(yaml@2.5.0)
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
vite@5.3.4(@types/node@20.16.3):
dependencies:
esbuild: 0.21.5
@@ -11082,23 +11229,34 @@ snapshots:
'@types/node': 20.16.3
fsevents: 2.3.3
- vite@5.3.4(@types/node@22.9.0):
+ vite@5.4.11(@types/node@20.16.3):
dependencies:
esbuild: 0.21.5
postcss: 8.4.49
rollup: 4.27.2
optionalDependencies:
- '@types/node': 22.9.0
+ '@types/node': 20.16.3
fsevents: 2.3.3
- vite@5.4.11(@types/node@20.16.3):
+ vite@5.4.11(@types/node@22.9.0):
dependencies:
esbuild: 0.21.5
postcss: 8.4.49
rollup: 4.27.2
+ optionalDependencies:
+ '@types/node': 22.9.0
+ fsevents: 2.3.3
+
+ vite@6.0.5(@types/node@20.16.3)(jiti@2.4.0)(yaml@2.5.0):
+ dependencies:
+ esbuild: 0.24.0
+ postcss: 8.4.49
+ rollup: 4.27.2
optionalDependencies:
'@types/node': 20.16.3
fsevents: 2.3.3
+ jiti: 2.4.0
+ yaml: 2.5.0
vitest-fetch-mock@0.2.2(vitest@2.1.5(@types/node@20.16.3)(happy-dom@14.12.0)):
dependencies:
@@ -11117,7 +11275,7 @@ snapshots:
vitest@2.1.5(@types/node@20.16.3)(happy-dom@14.12.0):
dependencies:
'@vitest/expect': 2.1.5
- '@vitest/mocker': 2.1.5(vite@5.3.4(@types/node@20.16.3))
+ '@vitest/mocker': 2.1.5(vite@5.4.11(@types/node@20.16.3))
'@vitest/pretty-format': 2.1.5
'@vitest/runner': 2.1.5
'@vitest/snapshot': 2.1.5
@@ -11133,7 +11291,7 @@ snapshots:
tinyexec: 0.3.1
tinypool: 1.0.2
tinyrainbow: 1.2.0
- vite: 5.3.4(@types/node@20.16.3)
+ vite: 5.4.11(@types/node@20.16.3)
vite-node: 2.1.5(@types/node@20.16.3)
why-is-node-running: 2.3.0
optionalDependencies:
@@ -11144,6 +11302,7 @@ snapshots:
- lightningcss
- msw
- sass
+ - sass-embedded
- stylus
- sugarss
- supports-color
@@ -11152,7 +11311,7 @@ snapshots:
vitest@2.1.5(@types/node@20.16.3)(happy-dom@15.11.6):
dependencies:
'@vitest/expect': 2.1.5
- '@vitest/mocker': 2.1.5(vite@5.3.4(@types/node@20.16.3))
+ '@vitest/mocker': 2.1.5(vite@5.4.11(@types/node@20.16.3))
'@vitest/pretty-format': 2.1.5
'@vitest/runner': 2.1.5
'@vitest/snapshot': 2.1.5
@@ -11168,7 +11327,7 @@ snapshots:
tinyexec: 0.3.1
tinypool: 1.0.2
tinyrainbow: 1.2.0
- vite: 5.3.4(@types/node@20.16.3)
+ vite: 5.4.11(@types/node@20.16.3)
vite-node: 2.1.5(@types/node@20.16.3)
why-is-node-running: 2.3.0
optionalDependencies:
@@ -11179,15 +11338,16 @@ snapshots:
- lightningcss
- msw
- sass
+ - sass-embedded
- stylus
- sugarss
- supports-color
- terser
- vitest@2.1.5(@types/node@22.9.0)(happy-dom@15.11.6):
+ vitest@2.1.5(@types/node@22.9.0)(happy-dom@15.11.7):
dependencies:
'@vitest/expect': 2.1.5
- '@vitest/mocker': 2.1.5(vite@5.3.4(@types/node@22.9.0))
+ '@vitest/mocker': 2.1.5(vite@5.4.11(@types/node@22.9.0))
'@vitest/pretty-format': 2.1.5
'@vitest/runner': 2.1.5
'@vitest/snapshot': 2.1.5
@@ -11203,17 +11363,54 @@ snapshots:
tinyexec: 0.3.1
tinypool: 1.0.2
tinyrainbow: 1.2.0
- vite: 5.3.4(@types/node@22.9.0)
+ vite: 5.4.11(@types/node@22.9.0)
vite-node: 2.1.5(@types/node@22.9.0)
why-is-node-running: 2.3.0
optionalDependencies:
'@types/node': 22.9.0
- happy-dom: 15.11.6
+ happy-dom: 15.11.7
+ transitivePeerDependencies:
+ - less
+ - lightningcss
+ - msw
+ - sass
+ - sass-embedded
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+
+ vitest@2.1.8(@types/node@20.16.3)(happy-dom@15.11.7):
+ dependencies:
+ '@vitest/expect': 2.1.8
+ '@vitest/mocker': 2.1.8(vite@5.4.11(@types/node@20.16.3))
+ '@vitest/pretty-format': 2.1.8
+ '@vitest/runner': 2.1.8
+ '@vitest/snapshot': 2.1.8
+ '@vitest/spy': 2.1.8
+ '@vitest/utils': 2.1.8
+ chai: 5.1.2
+ debug: 4.3.7
+ expect-type: 1.1.0
+ magic-string: 0.30.12
+ pathe: 1.1.2
+ std-env: 3.8.0
+ tinybench: 2.9.0
+ tinyexec: 0.3.1
+ tinypool: 1.0.2
+ tinyrainbow: 1.2.0
+ vite: 5.4.11(@types/node@20.16.3)
+ vite-node: 2.1.8(@types/node@20.16.3)
+ why-is-node-running: 2.3.0
+ optionalDependencies:
+ '@types/node': 20.16.3
+ happy-dom: 15.11.7
transitivePeerDependencies:
- less
- lightningcss
- msw
- sass
+ - sass-embedded
- stylus
- sugarss
- supports-color