diff --git a/.github/workflows/chromatic.demo.yml b/.github/workflows/chromatic.demo.yml new file mode 100644 index 00000000..a4aacaf4 --- /dev/null +++ b/.github/workflows/chromatic.demo.yml @@ -0,0 +1,22 @@ +name: "ds-demo-site/chromatic" +on: + pull_request: + paths: + - configs/storybook/** + - packages/styles/** + - packages/utils/** + - packages/react/ds-core/** + - apps/react/demo/** +jobs: + test-compile: + uses: ./.github/workflows/chromatic._template.yml + secrets: + CHROMATIC_PROJECT_TOKEN: ${{ secrets.CHROMATIC_TOKEN_CANONICAL_DS_DEMO_SITE }} + with: + working-directory: apps/react/demo + externals: '[ + "configs/storybook/**", + "packages/styles/**", + "packages/utils/**", + "packages/react/ds-core/**" + ]' \ No newline at end of file diff --git a/apps/react/demo/package.json b/apps/react/demo/package.json index cdf52d0c..9b901f51 100644 --- a/apps/react/demo/package.json +++ b/apps/react/demo/package.json @@ -20,20 +20,24 @@ "check:biome": "biome check", "check:biome:fix": "biome check --write", "check:ts": "tsc --noEmit", - "storybook": "storybook dev -p 6010 --no-open --host 0.0.0.0" + "storybook": "storybook dev -p 6011 --no-open --host 0.0.0.0" }, "dependencies": { "@canonical/storybook-config": "^0.9.0-experimental.5", "@canonical/react-ssr": "^0.9.0-experimental.10", "@canonical/styles": "^0.9.0-experimental.9", + "@tanstack/react-router": "^1.114.25", "react": "^19.0.0", - "react-dom": "^19.0.0" + "react-dom": "^19.0.0", + "react-shadow": "^20.6.0" }, "devDependencies": { "@biomejs/biome": "^1.9.4", "@canonical/biome-config": "^0.9.0-experimental.2", "@canonical/react-ds-core": "^0.9.0-experimental.11", "@canonical/typescript-config-react": "^0.9.0-experimental.2", + "@tanstack/react-router-devtools": "^1.114.25", + "@tanstack/router-plugin": "^1.114.25", "@chromatic-com/storybook": "^3.2.2", "@storybook/blocks": "^8.4.7", "@storybook/react": "^8.4.7", diff --git a/apps/react/demo/src/.gitignore b/apps/react/demo/src/.gitignore new file mode 100644 index 00000000..d7467f2e --- /dev/null +++ b/apps/react/demo/src/.gitignore @@ -0,0 +1,2 @@ +# Routing tree generated by TanStack +routeTree.gen.ts \ No newline at end of file diff --git a/apps/react/demo/src/Application.tsx b/apps/react/demo/src/Application.tsx index 616b5fdb..4e7f70ff 100644 --- a/apps/react/demo/src/Application.tsx +++ b/apps/react/demo/src/Application.tsx @@ -1,56 +1,18 @@ -import { Button, TooltipArea } from "@canonical/react-ds-core"; -import React, { Suspense, useState, lazy } from "react"; -import canonicalLogo from "./assets/canonical.svg"; -import reactLogo from "./assets/react.svg"; -import "./Application.css"; +import { RouterProvider, createRouter } from "@tanstack/react-router"; -const LazyButton = lazy( - () => - new Promise((resolve) => { - // @ts-ignore - setTimeout(() => resolve(import("./LazyComponent.js")), 2000); - }), -); +// Import the generated route tree +import { routeTree } from "./routeTree.gen.js"; -function App() { - const [count, setCount] = useState(0); +const router = createRouter({ routeTree }); + +declare module "@tanstack/react-router" { + interface Register { + router: typeof router; + } +} - return ( - <> -
- - Canonical logo - - - React logo - -
-

Canonical Design System

-

React Vite template

- - - -
- -
- - ); +function App() { + return ; } export default App; diff --git a/apps/react/demo/src/ExampleComponent/ExampleComponent.stories.tsx b/apps/react/demo/src/ExampleComponent/ExampleComponent.stories.tsx deleted file mode 100644 index 6e763eab..00000000 --- a/apps/react/demo/src/ExampleComponent/ExampleComponent.stories.tsx +++ /dev/null @@ -1,58 +0,0 @@ -/* @canonical/generator-ds 0.9.0-experimental.9 */ - -// Needed for function-based story, safe to remove otherwise -// import type { ExampleComponentProps } from './types.js' -import type { Meta, StoryObj } from "@storybook/react"; -import Component from "./ExampleComponent.js"; -// Needed for template-based story, safe to remove otherwise -// import type { StoryFn } from '@storybook/react' - -const meta = { - title: "ExampleComponent", - component: Component, -} satisfies Meta; - -export default meta; - -/* - CSF3 story - Uses object-based story declarations with strong TS support (`Meta` and `StoryObj`). - Uses the latest storybook format. -*/ -type Story = StoryObj; - -export const Default: Story = { - args: { - children: Hello world!, - }, -}; - -/* - Function-based story - Direct arguments passed to the component - Simple, but can lead to repetition if used across multiple stories with similar configurations - - export const Default = (args: ExampleComponentProps) => ; - Default.args = { children: Hello world! }; -*/ - -/* - Template-Based story - Uses a template function to bind story variations, making it more reusable - Slightly more boilerplate but more flexible for creating multiple stories with different configurations - - const Template: StoryFn = (args) => ; - export const Default: StoryFn = Template.bind({}); - Default.args = { - children: Hello world! - }; -*/ - -/* - Static story - Simple and straightforward, but offers the least flexibility and reusability - - export const Default: StoryFn = () => ( - Hello world! - ); -*/ diff --git a/apps/react/demo/src/ExampleComponent/ExampleComponent.tests.tsx b/apps/react/demo/src/ExampleComponent/ExampleComponent.tests.tsx deleted file mode 100644 index 25ca7841..00000000 --- a/apps/react/demo/src/ExampleComponent/ExampleComponent.tests.tsx +++ /dev/null @@ -1,17 +0,0 @@ -/* @canonical/generator-ds 0.9.0-experimental.9 */ - -import { render, screen } from "@testing-library/react"; -import { describe, expect, it } from "vitest"; -import Component from "./ExampleComponent.js"; - -describe("ExampleComponent component", () => { - it("renders", () => { - render(ExampleComponent); - expect(screen.getByText("ExampleComponent")).toBeInTheDocument(); - }); - - it("applies className", () => { - render(ExampleComponent); - expect(screen.getByText("ExampleComponent")).toHaveClass("test-class"); - }); -}); diff --git a/apps/react/demo/src/ExampleComponent/ExampleComponent.tsx b/apps/react/demo/src/ExampleComponent/ExampleComponent.tsx deleted file mode 100644 index 6cd877c8..00000000 --- a/apps/react/demo/src/ExampleComponent/ExampleComponent.tsx +++ /dev/null @@ -1,29 +0,0 @@ -/* @canonical/generator-ds 0.9.0-experimental.9 */ -import type React from "react"; -import type { ExampleComponentProps } from "./types.js"; -import "./styles.css"; - -const componentCssClassName = "ds example-component"; - -/** - * description of the ExampleComponent component - * @returns {React.ReactElement} - Rendered ExampleComponent - */ -const ExampleComponent = ({ - id, - children, - className, - style, -}: ExampleComponentProps): React.ReactElement => { - return ( -
- {children} -
- ); -}; - -export default ExampleComponent; diff --git a/apps/react/demo/src/ExampleComponent/index.ts b/apps/react/demo/src/ExampleComponent/index.ts deleted file mode 100644 index 9094f213..00000000 --- a/apps/react/demo/src/ExampleComponent/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -/* @canonical/generator-ds 0.9.0-experimental.9 */ -export { default as ExampleComponent } from "./ExampleComponent.js"; -export * from "./types.js"; diff --git a/apps/react/demo/src/ExampleComponent/styles.css b/apps/react/demo/src/ExampleComponent/styles.css deleted file mode 100644 index 2f9c6792..00000000 --- a/apps/react/demo/src/ExampleComponent/styles.css +++ /dev/null @@ -1,7 +0,0 @@ -/* @canonical/generator-ds 0.9.0-experimental.9 */ - -/* -.ds.example-component { - -} -*/ diff --git a/apps/react/demo/src/ExampleComponent/types.ts b/apps/react/demo/src/ExampleComponent/types.ts deleted file mode 100644 index 1bf992ee..00000000 --- a/apps/react/demo/src/ExampleComponent/types.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* @canonical/generator-ds 0.9.0-experimental.9 */ -import type React from "react"; - -export interface ExampleComponentProps { - /* A unique identifier for the ExampleComponent */ - id?: string; - /* Additional CSS classes */ - className?: string; - /* Child elements */ - children?: React.ReactNode; - /* Inline styles */ - style?: React.CSSProperties; -} diff --git a/apps/react/demo/src/LazyComponent.tsx b/apps/react/demo/src/LazyComponent.tsx deleted file mode 100644 index 8b80fd2a..00000000 --- a/apps/react/demo/src/LazyComponent.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { Button } from "@canonical/react-ds-core"; - -function LazyComponent() { - return ( - + + +
+

This is an h1 heading

+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent + finibus quam molestie elit porttitor faucibus. Duis eu orci tempor, + sodales dolor nec, aliquam neque. Nunc tempor odio eget arcu lobortis, + pellentesque pretium urna condimentum. Vivamus sit amet leo a lectus + maximus tristique sed lobortis leo. Nunc fermentum lobortis urna, + lacinia tincidunt est sagittis nec. Aenean mauris metus, elementum id + rhoncus eget, scelerisque ut lectus. +

+ +

THIS IS AN H2 HEADING

+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent + finibus quam molestie elit porttitor faucibus. Duis eu orci tempor, + sodales dolor nec, aliquam neque. Nunc tempor odio eget arcu lobortis, + pellentesque pretium urna condimentum. Vivamus sit amet leo a lectus + maximus tristique sed lobortis leo. Nunc fermentum lobortis urna, + lacinia tincidunt est sagittis nec. Aenean mauris metus, elementum id + rhoncus eget, scelerisque ut lectus. +

+ +

This is an h3 heading

+ +

THIS IS AN H4 HEADING

+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent + finibus quam molestie elit porttitor faucibus. Duis eu orci tempor, + sodales dolor nec, aliquam neque. Nunc tempor odio eget arcu lobortis, + pellentesque pretium urna condimentum. Vivamus sit amet leo a lectus + maximus tristique sed lobortis leo. Nunc fermentum lobortis urna, + lacinia tincidunt est sagittis nec. Aenean mauris metus, elementum id + rhoncus eget, scelerisque ut lectus. +

+ +
THIS IS AN H5 HEADING
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent + finibus quam molestie elit porttitor faucibus. Duis eu orci tempor, + sodales dolor nec, aliquam neque. Nunc tempor odio eget arcu lobortis, + pellentesque pretium urna condimentum. Vivamus sit amet leo a lectus + maximus tristique sed lobortis leo. Nunc fermentum lobortis urna, + lacinia tincidunt est sagittis nec. Aenean mauris metus, elementum id + rhoncus eget, scelerisque ut lectus. +

+ +
This is an h6 heading
+
+ +
+

Grid

+
+
+

Lorem ipsum dolor sit amet consectetur.

+
+
+

Lorern ipsum dolor sit amet consectetur.

+
+
+

+ Gravida leo sit a lobortis. Vulputate leo at eu pellentesque + mattis amet volutpat sapien volutpat. +

+
+
+

+ Proin ut pretium purus ipsum ipsum id egestas. In eget aliquam + gravida nunc senectus cras. Duis ac ut. +

+
+
+
+ +
+
+
+

+ The quick brown fox jumps over the lazy dog +

+

+ Lorem ipsum dolor sit amet consectetur. Odio eu at sapien urna dis + sociis nisi. Elementum tristique fermentum tempus a sagittis + fermentum vitae. Dis sit faucibus maecenas lectus suspendisse + vitae sagittis posuere lobortis, Varius. +

+
+
+

+ The quick brown fox jumps over the lazy dog +

+

+ Lorem ipsum dolor sit amet consectetur. Odio eu at sapien urna dis + sociis nisi. Elementum tristique fermentum tempus a sagittis + fermentum vitae. Dis sit faucibus maecenas lectus suspendisse + vitae sagittis posuere lobortis, Varius. +

+
+
+

+ The quick brown fox jumps over the lazy dog +

+

+ Lorem ipsum dolor sit amet consectetur, Odio eu at sapien urna dis + sociis nisi. Elementum tristique fermentum tempus a sagittis + fermentum vitae. Dis sit faucibus maecenas lectus suspendisse + vitae sagittis posuere lobortis, Varius. +

+
+
+

+ The quick brown fox jumps over the lazy dog +

+

+ Lorem ipsum dolor sit amet consectetur. Odio eu at sapien urna dis + sociis nisi. Elementum tristique fermentum tempus a sagittis + fermentum vitae, Dis sit faucibus maecenas lectus suspendisse + vitae sagittis posuere lobortis, Varius. +

+
+
+
+ + ); +}; + +export default TypographicSpecimen; diff --git a/apps/react/demo/src/ui/Example/common/examples/TypographicSpecimen/index.ts b/apps/react/demo/src/ui/Example/common/examples/TypographicSpecimen/index.ts new file mode 100644 index 00000000..486c785f --- /dev/null +++ b/apps/react/demo/src/ui/Example/common/examples/TypographicSpecimen/index.ts @@ -0,0 +1,2 @@ +export { default as TypographicSpecimen } from "./TypographicSpecimen.js"; +export * from "./types.js"; diff --git a/apps/react/demo/src/ui/Example/common/examples/TypographicSpecimen/styles.css b/apps/react/demo/src/ui/Example/common/examples/TypographicSpecimen/styles.css new file mode 100644 index 00000000..e69de29b diff --git a/apps/react/demo/src/ui/Example/common/examples/TypographicSpecimen/types.ts b/apps/react/demo/src/ui/Example/common/examples/TypographicSpecimen/types.ts new file mode 100644 index 00000000..e69de29b diff --git a/apps/react/demo/src/ui/Example/common/examples/index.ts b/apps/react/demo/src/ui/Example/common/examples/index.ts new file mode 100644 index 00000000..eaabb1a1 --- /dev/null +++ b/apps/react/demo/src/ui/Example/common/examples/index.ts @@ -0,0 +1,3 @@ +// button is a temporary example just so we have multiple examples to show in the showcase +export { default as ButtonExample } from "./ButtonExample.js"; +export * from "./TypographicSpecimen/index.js"; diff --git a/apps/react/demo/src/ui/Example/common/index.ts b/apps/react/demo/src/ui/Example/common/index.ts new file mode 100644 index 00000000..f7c567b0 --- /dev/null +++ b/apps/react/demo/src/ui/Example/common/index.ts @@ -0,0 +1,3 @@ +export * from "./Controls/index.js"; +export * from "./Renderer/index.js"; +export * from "./examples/index.js"; diff --git a/apps/react/demo/src/ui/Example/index.ts b/apps/react/demo/src/ui/Example/index.ts new file mode 100644 index 00000000..a0c4ebf2 --- /dev/null +++ b/apps/react/demo/src/ui/Example/index.ts @@ -0,0 +1 @@ +export * from "./types.js"; diff --git a/apps/react/demo/src/ui/Example/types.ts b/apps/react/demo/src/ui/Example/types.ts new file mode 100644 index 00000000..84c296c9 --- /dev/null +++ b/apps/react/demo/src/ui/Example/types.ts @@ -0,0 +1,85 @@ +import type { FC, ReactElement } from "react"; + +export type ExampleSettingValue = number | string; +export type ExampleOutputFormat = "css"; + +export interface ExampleSetting { + value: TValue; + default: TValue; + label: string; + disabledOutputFormats?: { + [key in ExampleOutputFormat]?: boolean; + }; + transformer?: (value: ExampleSettingValue) => ExampleSettingValue; + type: "number" | "string" | "choices"; +} + +export interface NumericExampleSetting extends ExampleSetting { + min: number; + max: number; + step?: number; + type: "number"; +} + +export interface ChoicesExampleSetting + extends ExampleSetting { + choices: TValue[]; + type: "choices"; +} + +export type MultipleChoicesExampleConfiguration< + TValue extends ExampleSettingValue, +> = Omit, "value" | "default"> & { + value: TValue[]; + default: TValue[]; +}; + +// --- Definition of All Possible Setting Types (Unchanged) --- + +/** + * All supported example settings + */ +export type AllExampleSettings = { + fontFamily?: ChoicesExampleSetting; + fontSize?: NumericExampleSetting; + color?: ChoicesExampleSetting; + backgroundColor?: ChoicesExampleSetting; + lineHeight?: NumericExampleSetting; + textAlign?: ChoicesExampleSetting; + padding?: NumericExampleSetting; + margin?: NumericExampleSetting; + border?: NumericExampleSetting; + borderRadius?: NumericExampleSetting; + boxShadow?: ChoicesExampleSetting; + textShadow?: ChoicesExampleSetting; +}; + +/** + * Represents the configuration and state for a single control/setting object + * within the `controls` array. It's a discriminated union based on the 'name' property. + * This structure is used both for initial configuration and within the state array. + */ +export type ExampleControl = { + [K in keyof AllExampleSettings]-?: { + name: K; + } & Required[K]; +}[keyof AllExampleSettings]; + +/** + * Defines the initial configuration required to set up a showcase example. + * This is typically used when initializing the context state via the Provider's `items` prop. + */ +export interface ShowcaseExampleOpts { + /** Unique identifier name */ + name: string; + /** User-friendly description */ + description: string; + /** The React component to render */ + Component: () => ReactElement; + /** + * Array defining the controls and their initial/default configuration for this example. + * The `value` property within these initial configs is often ignored, as the + * state initialization will typically set `value` based on `default`. + */ + controls: ExampleControl[]; +} diff --git a/apps/react/demo/src/ui/Showcase/Showcase.tsx b/apps/react/demo/src/ui/Showcase/Showcase.tsx new file mode 100644 index 00000000..261a4df6 --- /dev/null +++ b/apps/react/demo/src/ui/Showcase/Showcase.tsx @@ -0,0 +1,19 @@ +import { SHOWCASE_EXAMPLES } from "../../data/index.js"; +import { Controls, TypographicSpecimen } from "../Example/common/index.js"; + +const Showcase = () => { + return ( + // + //
+ // + // + //
+ //
+ <> + + + + ); +}; + +export default Showcase; diff --git a/apps/react/demo/src/ui/Showcase/index.ts b/apps/react/demo/src/ui/Showcase/index.ts new file mode 100644 index 00000000..a58d027a --- /dev/null +++ b/apps/react/demo/src/ui/Showcase/index.ts @@ -0,0 +1 @@ +export { default as Showcase } from "./Showcase.js"; diff --git a/apps/react/demo/src/ui/index.ts b/apps/react/demo/src/ui/index.ts new file mode 100644 index 00000000..73a2a82d --- /dev/null +++ b/apps/react/demo/src/ui/index.ts @@ -0,0 +1 @@ +export * from "./Showcase/index.js"; diff --git a/apps/react/demo/tsconfig.json b/apps/react/demo/tsconfig.json index 16138f93..7b21271f 100644 --- a/apps/react/demo/tsconfig.json +++ b/apps/react/demo/tsconfig.json @@ -2,7 +2,7 @@ "extends": "@canonical/typescript-config-react", "compilerOptions": { "baseUrl": "src", - "skipLibCheck": true, // Remove if not using storybook + "skipLibCheck": true, "types": [ "node", "react", @@ -17,8 +17,6 @@ "src/**/*.tsx", ".storybook/*.ts", ".storybook/*.tsx", - "vite.config.ts", - "vitest.setup.ts", - "vitest.config.ts" + "vite.config.ts" ] } diff --git a/apps/react/demo/vite.config.ts b/apps/react/demo/vite.config.ts index 52ccf205..4ddf1ebb 100644 --- a/apps/react/demo/vite.config.ts +++ b/apps/react/demo/vite.config.ts @@ -1,9 +1,14 @@ +import { TanStackRouterVite } from "@tanstack/router-plugin/vite"; import react from "@vitejs/plugin-react"; import { defineConfig } from "vite"; import tsconfigPaths from "vite-tsconfig-paths"; export default defineConfig({ - plugins: [tsconfigPaths(), react()], + plugins: [ + TanStackRouterVite({ target: "react", autoCodeSplitting: true }), + tsconfigPaths(), + react(), + ], server: { port: 5174, }, diff --git a/bun.lock b/bun.lock index 2bea9c31..3b433f24 100644 --- a/bun.lock +++ b/bun.lock @@ -44,8 +44,10 @@ "@canonical/react-ssr": "^0.9.0-experimental.10", "@canonical/storybook-config": "^0.9.0-experimental.5", "@canonical/styles": "^0.9.0-experimental.9", + "@tanstack/react-router": "^1.114.25", "react": "^19.0.0", "react-dom": "^19.0.0", + "react-shadow": "^20.6.0", }, "devDependencies": { "@biomejs/biome": "^1.9.4", @@ -56,6 +58,8 @@ "@storybook/blocks": "^8.4.7", "@storybook/react": "^8.4.7", "@storybook/test": "^8.4.7", + "@tanstack/react-router-devtools": "^1.114.25", + "@tanstack/router-plugin": "^1.114.25", "@types/node": "^22.10.1", "@types/react": "^19.0.1", "@types/react-dom": "^19.0.2", @@ -441,6 +445,10 @@ "@babel/parser": ["@babel/parser@7.26.10", "", { "dependencies": { "@babel/types": "^7.26.10" }, "bin": "./bin/babel-parser.js" }, "sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA=="], + "@babel/plugin-syntax-jsx": ["@babel/plugin-syntax-jsx@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA=="], + + "@babel/plugin-syntax-typescript": ["@babel/plugin-syntax-typescript@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ=="], + "@babel/plugin-transform-react-jsx-self": ["@babel/plugin-transform-react-jsx-self@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg=="], "@babel/plugin-transform-react-jsx-source": ["@babel/plugin-transform-react-jsx-source@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg=="], @@ -825,6 +833,28 @@ "@storybook/theming": ["@storybook/theming@8.6.7", "", { "peerDependencies": { "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" } }, "sha512-F/i4XS5bew9dvtNiHvDJF0mko1IUbPM9PUjTYPaw6cK8ytS0kdec703MsJ/GUA7seeEWBeGdZjV3ua0pys650A=="], + "@tanstack/history": ["@tanstack/history@1.114.22", "", {}, "sha512-CNwKraj/Xa8H7DUyzrFBQC3wL96JzIxT4i9CW0hxqFNNmLDyUcMJr8264iqqfxC0u1lFSG96URad08T2Qhadpw=="], + + "@tanstack/react-router": ["@tanstack/react-router@1.114.27", "", { "dependencies": { "@tanstack/history": "1.114.22", "@tanstack/react-store": "^0.7.0", "@tanstack/router-core": "1.114.25", "jsesc": "^3.1.0", "tiny-invariant": "^1.3.3", "tiny-warning": "^1.0.3" }, "peerDependencies": { "react": ">=18.0.0 || >=19.0.0", "react-dom": ">=18.0.0 || >=19.0.0" } }, "sha512-xfM+FMXpebZQ5//NQEgj5y5SKQqTQEr2/LvePU9IiksxUBCgfjbuOXW5vgDHJ3xXJm3pivYqRx29cHqhueClow=="], + + "@tanstack/react-router-devtools": ["@tanstack/react-router-devtools@1.114.27", "", { "dependencies": { "@tanstack/router-devtools-core": "^1.114.25", "solid-js": "^1.9.5" }, "peerDependencies": { "@tanstack/react-router": "^1.114.27", "react": ">=18.0.0 || >=19.0.0", "react-dom": ">=18.0.0 || >=19.0.0" } }, "sha512-DKgMeFMgVdWiNADSemtYfOMR0dQ8xTtShfgRybDGffDe4iOQgnmeFWW1N4oBJylcj7kFRVm3yVOpDC9G6/zW4w=="], + + "@tanstack/react-store": ["@tanstack/react-store@0.7.0", "", { "dependencies": { "@tanstack/store": "0.7.0", "use-sync-external-store": "^1.4.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-S/Rq17HaGOk+tQHV/yrePMnG1xbsKZIl/VsNWnNXt4XW+tTY8dTlvpJH2ZQ3GRALsusG5K6Q3unAGJ2pd9W/Ng=="], + + "@tanstack/router-core": ["@tanstack/router-core@1.114.25", "", { "dependencies": { "@tanstack/history": "1.114.22", "@tanstack/store": "^0.7.0", "tiny-invariant": "^1.3.3" } }, "sha512-OyLCfs7r+0LEhmQGAdyJxfO+pqGBITlr4aUN0rdhXqDTpqBn0tyrO6Tu+U9B3LQF9Xnux3KqbjzRopTY9QZBog=="], + + "@tanstack/router-devtools-core": ["@tanstack/router-devtools-core@1.114.25", "", { "dependencies": { "clsx": "^2.1.1", "goober": "^2.1.16" }, "peerDependencies": { "@tanstack/router-core": "^1.114.25", "csstype": "^3.0.10", "solid-js": ">=1.9.5", "tiny-invariant": "^1.3.3" }, "optionalPeers": ["csstype"] }, "sha512-3KFAAytAV6nWcXLTe3nWNaiRPV8AyM3jx5aa2UpB+RLDgDbO+GkVMnv3C7fnGCM6j2nw2/1boAvTvHcoKKO5UA=="], + + "@tanstack/router-generator": ["@tanstack/router-generator@1.114.27", "", { "dependencies": { "@tanstack/virtual-file-routes": "^1.114.12", "prettier": "^3.5.0", "tsx": "^4.19.2", "zod": "^3.24.2" }, "peerDependencies": { "@tanstack/react-router": "^1.114.27" }, "optionalPeers": ["@tanstack/react-router"] }, "sha512-13Cjn9wI2+OE1kK9L+JW8GypdzgA2Nf6D1H2nOiydSPph/iYsyRxCvv3S5hhuGk0L1U1NrRReCr4rVkhnhiQww=="], + + "@tanstack/router-plugin": ["@tanstack/router-plugin@1.114.27", "", { "dependencies": { "@babel/core": "^7.26.8", "@babel/plugin-syntax-jsx": "^7.25.9", "@babel/plugin-syntax-typescript": "^7.25.9", "@babel/template": "^7.26.8", "@babel/traverse": "^7.26.8", "@babel/types": "^7.26.8", "@tanstack/router-core": "^1.114.25", "@tanstack/router-generator": "^1.114.27", "@tanstack/router-utils": "^1.114.12", "@tanstack/virtual-file-routes": "^1.114.12", "@types/babel__core": "^7.20.5", "@types/babel__template": "^7.4.4", "@types/babel__traverse": "^7.20.6", "babel-dead-code-elimination": "^1.0.9", "chokidar": "^3.6.0", "unplugin": "^2.1.2", "zod": "^3.24.2" }, "peerDependencies": { "@rsbuild/core": ">=1.0.2", "@tanstack/react-router": "^1.114.27", "vite": ">=5.0.0 || >=6.0.0", "vite-plugin-solid": "^2.11.2", "webpack": ">=5.92.0" }, "optionalPeers": ["@rsbuild/core", "@tanstack/react-router", "vite", "vite-plugin-solid", "webpack"] }, "sha512-/juqdv+TZPsi8GYxq58TpztV93M6BwM7Tv148vM5EZIOCj7LkhQmh4X3E33Eczh8s4D1UCL2Kr607rGEpRpK1w=="], + + "@tanstack/router-utils": ["@tanstack/router-utils@1.114.12", "", { "dependencies": { "@babel/generator": "^7.26.8", "@babel/parser": "^7.26.8", "ansis": "^3.11.0", "diff": "^7.0.0" } }, "sha512-W4tltvM9FQuDEJejz/JJD3q/pVHBXBb8VmA77pZlj4IBW97RnUNy8CUwZUgSYcb9OReoO4i/VjjQCUq9ZdiDmg=="], + + "@tanstack/store": ["@tanstack/store@0.7.0", "", {}, "sha512-CNIhdoUsmD2NolYuaIs8VfWM467RK6oIBAW4nPEKZhg1smZ+/CwtCdpURgp7nxSqOaV9oKkzdWD80+bC66F/Jg=="], + + "@tanstack/virtual-file-routes": ["@tanstack/virtual-file-routes@1.114.12", "", {}, "sha512-aR13V1kSE/kUkP4a8snmqvj82OUlR5Q/rzxICmObLCsERGfzikUc4wquOy1d/RzJgsLb8o+FiOjSWynt4T7Jhg=="], + "@testing-library/dom": ["@testing-library/dom@10.4.0", "", { "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", "@types/aria-query": "^5.0.1", "aria-query": "5.3.0", "chalk": "^4.1.0", "dom-accessibility-api": "^0.5.9", "lz-string": "^1.5.0", "pretty-format": "^27.0.2" } }, "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ=="], "@testing-library/jest-dom": ["@testing-library/jest-dom@6.6.3", "", { "dependencies": { "@adobe/css-tools": "^4.4.0", "aria-query": "^5.0.0", "chalk": "^3.0.0", "css.escape": "^1.5.1", "dom-accessibility-api": "^0.6.3", "lodash": "^4.17.21", "redent": "^3.0.0" } }, "sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA=="], @@ -975,6 +1005,10 @@ "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], + "ansis": ["ansis@3.17.0", "", {}, "sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg=="], + + "anymatch": ["anymatch@3.1.3", "", { "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw=="], + "aproba": ["aproba@2.0.0", "", {}, "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ=="], "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], @@ -1005,6 +1039,8 @@ "b4a": ["b4a@1.6.7", "", {}, "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg=="], + "babel-dead-code-elimination": ["babel-dead-code-elimination@1.0.9", "", { "dependencies": { "@babel/core": "^7.23.7", "@babel/parser": "^7.23.6", "@babel/traverse": "^7.23.7", "@babel/types": "^7.23.6" } }, "sha512-JLIhax/xullfInZjtu13UJjaLHDeTzt3vOeomaSUdO/nAMEL/pWC/laKrSvWylXMnVWyL5bpmG9njqBZlUQOdg=="], + "bail": ["bail@2.0.2", "", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="], "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], @@ -1019,6 +1055,8 @@ "bin-links": ["bin-links@4.0.4", "", { "dependencies": { "cmd-shim": "^6.0.0", "npm-normalize-package-bin": "^3.0.0", "read-cmd-shim": "^4.0.0", "write-file-atomic": "^5.0.0" } }, "sha512-cMtq4W5ZsEwcutJrVId+a/tjt8GSbS+h0oNkdl6+6rBuEv8Ot33Bevj5KPm40t309zuhVic8NjpuL42QCiJWWA=="], + "binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="], + "binaryextensions": ["binaryextensions@6.11.0", "", { "dependencies": { "editions": "^6.21.0" } }, "sha512-sXnYK/Ij80TO3lcqZVV2YgfKN5QjUWIRk/XSm2J/4bd/lPko3lvk0O4ZppH6m+6hB2/GTu+ptNwVFe1xh+QLQw=="], "bl": ["bl@4.1.0", "", { "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", "readable-stream": "^3.4.0" } }, "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w=="], @@ -1079,6 +1117,8 @@ "check-error": ["check-error@2.1.1", "", {}, "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw=="], + "chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="], + "chownr": ["chownr@2.0.0", "", {}, "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="], "chromatic": ["chromatic@11.27.0", "", { "peerDependencies": { "@chromatic-com/cypress": "^0.*.* || ^1.0.0", "@chromatic-com/playwright": "^0.*.* || ^1.0.0" }, "optionalPeers": ["@chromatic-com/cypress", "@chromatic-com/playwright"], "bin": { "chroma": "dist/bin.js", "chromatic": "dist/bin.js", "chromatic-cli": "dist/bin.js" } }, "sha512-jQ2ufjS+ePpg+NtcPI9B2eOi+pAzlRd2nhd1LgNMsVCC9Bzf5t8mJtyd8v2AUuJS0LdX0QVBgkOnlNv9xviHzA=="], @@ -1103,6 +1143,8 @@ "clone-stats": ["clone-stats@1.0.0", "", {}, "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag=="], + "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], + "cmd-shim": ["cmd-shim@6.0.3", "", {}, "sha512-FMabTRlc5t5zjdenF6mS0MBeFZm0XqHqeOkcskKFb/LYCcRQ5fVgLOHVc4Lq9CqABd9zhjwPjMBCJvMCziSVtA=="], "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], @@ -1215,6 +1257,8 @@ "devlop": ["devlop@1.1.0", "", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="], + "diff": ["diff@7.0.0", "", {}, "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw=="], + "diff-sequences": ["diff-sequences@29.6.3", "", {}, "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q=="], "dir-glob": ["dir-glob@3.0.1", "", { "dependencies": { "path-type": "^4.0.0" } }, "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA=="], @@ -1385,6 +1429,8 @@ "get-stream": ["get-stream@6.0.0", "", {}, "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg=="], + "get-tsconfig": ["get-tsconfig@4.10.0", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A=="], + "git-raw-commits": ["git-raw-commits@3.0.0", "", { "dependencies": { "dargs": "^7.0.0", "meow": "^8.1.2", "split2": "^3.2.2" }, "bin": { "git-raw-commits": "cli.js" } }, "sha512-b5OHmZ3vAgGrDn/X0kS+9qCfNKWe4K/jFnhwzVWWg0/k5eLa3060tZShrRg8Dja5kPc+YjS0Gc6y7cRr44Lpjw=="], "git-remote-origin-url": ["git-remote-origin-url@2.0.0", "", { "dependencies": { "gitconfiglocal": "^1.0.0", "pify": "^2.3.0" } }, "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw=="], @@ -1409,6 +1455,8 @@ "globrex": ["globrex@0.1.2", "", {}, "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg=="], + "goober": ["goober@2.1.16", "", { "peerDependencies": { "csstype": "^3.0.10" } }, "sha512-erjk19y1U33+XAMe1VTvIONHYoSqE4iS7BYUZfHaqeohLmnC0FdxEh7rQU+6MZ4OajItzjZFSRtVANrQwNq6/g=="], + "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="], "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], @@ -1455,6 +1503,8 @@ "human-signals": ["human-signals@2.1.0", "", {}, "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw=="], + "humps": ["humps@2.0.1", "", {}, "sha512-E0eIbrFWUhwfXJmsbdjRQFQPrl5pTEoKlz163j1mTqqUnU9PgR4AgB8AIITzuB3vLBdxZXyZ9TDIrwB2OASz4g=="], + "iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="], "ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="], @@ -1497,6 +1547,8 @@ "is-arrayish": ["is-arrayish@0.2.1", "", {}, "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="], + "is-binary-path": ["is-binary-path@2.1.0", "", { "dependencies": { "binary-extensions": "^2.0.0" } }, "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw=="], + "is-callable": ["is-callable@1.2.7", "", {}, "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA=="], "is-ci": ["is-ci@3.0.1", "", { "dependencies": { "ci-info": "^3.2.0" }, "bin": { "is-ci": "bin.js" } }, "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ=="], @@ -1937,6 +1989,8 @@ "postcss-selector-parser": ["postcss-selector-parser@6.1.2", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg=="], + "prettier": ["prettier@3.5.3", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw=="], + "pretty-format": ["pretty-format@29.7.0", "", { "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" } }, "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ=="], "proc-log": ["proc-log@4.2.0", "", {}, "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA=="], @@ -2001,6 +2055,8 @@ "react-refresh": ["react-refresh@0.14.2", "", {}, "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA=="], + "react-shadow": ["react-shadow@20.6.0", "", { "dependencies": { "humps": "^2.0.1" }, "peerDependencies": { "prop-types": "^15.0.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-kY+w4OMNZ8Nj9YI9eiTgvvJ/wYO7XyX1D/LYhvwQZv5vw69iCiDtGB0BX/2U8gLUuZAMN+x/7rHJKqHh8wXFHQ=="], + "react-tooltip": ["react-tooltip@5.28.0", "", { "dependencies": { "@floating-ui/dom": "^1.6.1", "classnames": "^2.3.0" }, "peerDependencies": { "react": ">=16.14.0", "react-dom": ">=16.14.0" } }, "sha512-R5cO3JPPXk6FRbBHMO0rI9nkUG/JKfalBSQfZedZYzmqaZQgq7GLzF8vcCWx6IhUCKg0yPqJhXIzmIO5ff15xg=="], "read": ["read@3.0.1", "", { "dependencies": { "mute-stream": "^1.0.0" } }, "sha512-SLBrDU/Srs/9EoWhU5GdbAoxG1GzpQHo/6qiGItaoLJ1thmYpcNIM1qISEUvyHBzfGlWIyd6p2DNi1oV1VmAuw=="], @@ -2017,6 +2073,8 @@ "readable-stream": ["readable-stream@1.0.34", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.1", "isarray": "0.0.1", "string_decoder": "~0.10.x" } }, "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg=="], + "readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], + "recast": ["recast@0.23.11", "", { "dependencies": { "ast-types": "^0.16.1", "esprima": "~4.0.0", "source-map": "~0.6.1", "tiny-invariant": "^1.3.3", "tslib": "^2.0.1" } }, "sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA=="], "redent": ["redent@3.0.0", "", { "dependencies": { "indent-string": "^4.0.0", "strip-indent": "^3.0.0" } }, "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg=="], @@ -2049,6 +2107,8 @@ "resolve-from": ["resolve-from@5.0.0", "", {}, "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="], + "resolve-pkg-maps": ["resolve-pkg-maps@1.0.0", "", {}, "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw=="], + "resolve.exports": ["resolve.exports@2.0.3", "", {}, "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A=="], "restore-cursor": ["restore-cursor@3.1.0", "", { "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" } }, "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA=="], @@ -2083,6 +2143,10 @@ "send": ["send@0.19.0", "", { "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", "http-errors": "2.0.0", "mime": "1.6.0", "ms": "2.1.3", "on-finished": "2.4.1", "range-parser": "~1.2.1", "statuses": "2.0.1" } }, "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw=="], + "seroval": ["seroval@1.2.1", "", {}, "sha512-yBxFFs3zmkvKNmR0pFSU//rIsYjuX418TnlDmc2weaq5XFDqDIV/NOMPBoLrbxjLH42p4UzRuXHryXh9dYcKcw=="], + + "seroval-plugins": ["seroval-plugins@1.2.1", "", { "peerDependencies": { "seroval": "^1.0" } }, "sha512-H5vs53+39+x4Udwp4J5rNZfgFuA+Lt+uU+09w1gYBVWomtAl98B+E9w7yC05Xc81/HgLvJdlyqJbU0fJCKCmdw=="], + "serve-static": ["serve-static@1.16.2", "", { "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", "send": "0.19.0" } }, "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw=="], "set-blocking": ["set-blocking@2.0.0", "", {}, "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="], @@ -2121,6 +2185,8 @@ "socks-proxy-agent": ["socks-proxy-agent@8.0.5", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", "socks": "^2.8.3" } }, "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw=="], + "solid-js": ["solid-js@1.9.5", "", { "dependencies": { "csstype": "^3.1.0", "seroval": "^1.1.0", "seroval-plugins": "^1.1.0" } }, "sha512-ogI3DaFcyn6UhYhrgcyRAMbu/buBJitYQASZz5WzfQVPP10RD2AbCoRZ517psnezrasyCbWzIxZ6kVqet768xw=="], + "sort-keys": ["sort-keys@5.1.0", "", { "dependencies": { "is-plain-obj": "^4.0.0" } }, "sha512-aSbHV0DaBcr7u0PVHXzM6NbZNAtrr9sF6+Qfs9UUVG7Ll3jQ6hHi8F/xqIIcn2rvIVbr0v/2zyjSdwSV47AgLQ=="], "source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], @@ -2219,6 +2285,8 @@ "tiny-invariant": ["tiny-invariant@1.3.3", "", {}, "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg=="], + "tiny-warning": ["tiny-warning@1.0.3", "", {}, "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="], + "tinybench": ["tinybench@2.9.0", "", {}, "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg=="], "tinyexec": ["tinyexec@0.3.2", "", {}, "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA=="], @@ -2259,6 +2327,8 @@ "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "tsx": ["tsx@4.19.3", "", { "dependencies": { "esbuild": "~0.25.0", "get-tsconfig": "^4.7.5" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "bin": { "tsx": "dist/cli.mjs" } }, "sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ=="], + "tuf-js": ["tuf-js@2.2.1", "", { "dependencies": { "@tufjs/models": "2.0.1", "debug": "^4.3.4", "make-fetch-happen": "^13.0.1" } }, "sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA=="], "tween-functions": ["tween-functions@1.2.0", "", {}, "sha512-PZBtLYcCLtEcjL14Fzb1gSxPBeL7nWvGhO5ZFPGqziCcr8uvHp0NDmdjBchp6KHL+tExcg0m3NISmKxhU394dA=="], @@ -2299,7 +2369,7 @@ "unpipe": ["unpipe@1.0.0", "", {}, "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="], - "unplugin": ["unplugin@1.16.1", "", { "dependencies": { "acorn": "^8.14.0", "webpack-virtual-modules": "^0.6.2" } }, "sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w=="], + "unplugin": ["unplugin@2.2.2", "", { "dependencies": { "acorn": "^8.14.1", "webpack-virtual-modules": "^0.6.2" } }, "sha512-Qp+iiD+qCRnUek+nDoYvtWX7tfnYyXsrOnJ452FRTgOyKmTM7TUJ3l+PLPJOOWPTUyKISKp4isC5JJPSXUjGgw=="], "untildify": ["untildify@4.0.0", "", {}, "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw=="], @@ -2307,6 +2377,8 @@ "update-browserslist-db": ["update-browserslist-db@1.1.3", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw=="], + "use-sync-external-store": ["use-sync-external-store@1.4.0", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw=="], + "util": ["util@0.12.5", "", { "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", "is-generator-function": "^1.0.7", "is-typed-array": "^1.1.3", "which-typed-array": "^1.1.2" } }, "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA=="], "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="], @@ -2403,6 +2475,8 @@ "yoctocolors-cjs": ["yoctocolors-cjs@2.1.2", "", {}, "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA=="], + "zod": ["zod@3.24.2", "", {}, "sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ=="], + "zwitch": ["zwitch@2.0.4", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="], "@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], @@ -2441,6 +2515,8 @@ "@storybook/addon-actions/uuid": ["uuid@9.0.1", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA=="], + "@storybook/csf-plugin/unplugin": ["unplugin@1.16.1", "", { "dependencies": { "acorn": "^8.14.0", "webpack-virtual-modules": "^0.6.2" } }, "sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w=="], + "@storybook/instrumenter/@vitest/utils": ["@vitest/utils@2.1.9", "", { "dependencies": { "@vitest/pretty-format": "2.1.9", "loupe": "^3.1.2", "tinyrainbow": "^1.2.0" } }, "sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ=="], "@storybook/test/@testing-library/jest-dom": ["@testing-library/jest-dom@6.5.0", "", { "dependencies": { "@adobe/css-tools": "^4.4.0", "aria-query": "^5.0.0", "chalk": "^3.0.0", "css.escape": "^1.5.1", "dom-accessibility-api": "^0.6.3", "lodash": "^4.17.21", "redent": "^3.0.0" } }, "sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA=="], @@ -2475,6 +2551,8 @@ "ansi-escapes/type-fest": ["type-fest@0.21.3", "", {}, "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w=="], + "anymatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + "bl/readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="], "body-parser/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], @@ -2483,6 +2561,8 @@ "cacache/glob": ["glob@10.4.5", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg=="], + "chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], + "cliui/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], "cliui/wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], @@ -2633,6 +2713,8 @@ "read-pkg-up/find-up": ["find-up@2.1.0", "", { "dependencies": { "locate-path": "^2.0.0" } }, "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ=="], + "readdirp/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + "rimraf/glob": ["glob@9.3.5", "", { "dependencies": { "fs.realpath": "^1.0.0", "minimatch": "^8.0.2", "minipass": "^4.2.4", "path-scurry": "^1.6.1" } }, "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q=="], "send/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], diff --git a/configs/biome/biome.json b/configs/biome/biome.json index c3f3805a..f63f2d53 100644 --- a/configs/biome/biome.json +++ b/configs/biome/biome.json @@ -7,7 +7,7 @@ }, "files": { "ignoreUnknown": false, - "ignore": ["**/node_modules", "**/dist"] + "ignore": ["**/node_modules", "**/dist", "**/*.gen.ts"] }, "formatter": { "enabled": true,