diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index af6f672..3ad11bc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,4 +1,4 @@ -name: CI +name: Build & Test on: push: diff --git a/.github/workflows/storybook.yml b/.github/workflows/storybook.yml new file mode 100644 index 0000000..fc006b7 --- /dev/null +++ b/.github/workflows/storybook.yml @@ -0,0 +1,46 @@ +name: Storybook + +on: + push: + branches: ["main"] + pull_request: + types: [opened, synchronize] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + # Checkout the repository + - uses: actions/checkout@v4 + + - name: Cache turbo build setup + uses: actions/cache@v4 + with: + path: .turbo + key: ${{ runner.os }}-turbo-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-turbo- + + # Setup pnpm + - uses: pnpm/action-setup@v3 + with: + version: 8 + + # Install dependencies + - name: Install Dependencies + run: pnpm install + + # Build Storybook + - name: Build Storybook + run: pnpm run build-storybook + + # Deploy to GitHub Pages (only on push to main) + - name: Deploy to GitHub Pages + if: github.ref == 'refs/heads/main' && github.event_name == 'push' + uses: peaceiris/actions-gh-pages@v3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./dist-storybook + # Optionally specify the branch + # publish_branch: gh-pages diff --git a/.gitignore b/.gitignore index e2bfa23..5299244 100644 --- a/.gitignore +++ b/.gitignore @@ -54,3 +54,6 @@ dist-ssr *.njsproj *.sln *.sw? + +*storybook.log +/dist-storybook \ No newline at end of file diff --git a/apps/web/.eslintrc.cjs b/apps/web/.eslintrc.cjs index 6d980e9..432891d 100644 --- a/apps/web/.eslintrc.cjs +++ b/apps/web/.eslintrc.cjs @@ -1,5 +1,8 @@ /** @type {import("eslint").Linter.Config} */ module.exports = { root: true, - extends: ["@rentment/eslint-config/web.config.mjs"], + extends: [ + "@rentment/eslint-config/web.config.mjs", + "plugin:storybook/recommended", + ], }; diff --git a/apps/web/.storybook/main.ts b/apps/web/.storybook/main.ts new file mode 100644 index 0000000..714d8f0 --- /dev/null +++ b/apps/web/.storybook/main.ts @@ -0,0 +1,25 @@ +import type { StorybookConfig } from "@storybook/react-vite"; + +import { join, dirname } from "path"; + +/** + * This function is used to resolve the absolute path of a package. + * It is needed in projects that use Yarn PnP or are set up within a monorepo. + */ +function getAbsolutePath(value: string): any { + return dirname(require.resolve(join(value, "package.json"))); +} +const config: StorybookConfig = { + stories: ["../src/**/*.mdx", "../src/**/*.stories.@(js|jsx|mjs|ts|tsx)"], + addons: [ + getAbsolutePath("@storybook/addon-onboarding"), + getAbsolutePath("@storybook/addon-essentials"), + getAbsolutePath("@chromatic-com/storybook"), + getAbsolutePath("@storybook/addon-interactions"), + ], + framework: { + name: getAbsolutePath("@storybook/react-vite"), + options: {}, + }, +}; +export default config; diff --git a/apps/web/.storybook/preview.tsx b/apps/web/.storybook/preview.tsx new file mode 100644 index 0000000..4e346cb --- /dev/null +++ b/apps/web/.storybook/preview.tsx @@ -0,0 +1,25 @@ +import React from "react"; +import type { Preview } from "@storybook/react"; +import "../src/App.css"; + +const preview: Preview = { + parameters: { + controls: { + matchers: { + color: /(background|color)$/i, + date: /Date$/i, + }, + }, + }, +}; + +// Optional: Add global decorators +export const decorators = [ + (Story) => ( +
+ +
+ ), +]; + +export default preview; diff --git a/apps/web/package.json b/apps/web/package.json index 0c22f39..4fc48f0 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -7,7 +7,9 @@ "dev": "vite --clearScreen false", "build": "tsc -b && vite build", "preview": "vite preview", - "lint": "eslint . --config ../../packages/eslint-config/web.config.mjs" + "lint": "eslint . --config ../../packages/eslint-config/web.config.mjs", + "storybook": "storybook dev -p 6006", + "build-storybook": "storybook build -o ../../dist-storybook" }, "dependencies": { "@rentment/ui": "workspace:*", @@ -16,13 +18,23 @@ "react-icons": "^5.3.0" }, "devDependencies": { + "@chromatic-com/storybook": "^3.2.2", "@eslint/js": "^9.13.0", "@rentment/eslint-config": "workspace:*", "@rentment/typescript-config": "workspace:*", + "@storybook/addon-essentials": "^8.4.2", + "@storybook/addon-interactions": "^8.4.2", + "@storybook/addon-onboarding": "^8.4.2", + "@storybook/blocks": "^8.4.2", + "@storybook/react": "^8.4.2", + "@storybook/react-vite": "^8.4.2", + "@storybook/test": "^8.4.2", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", "@vitejs/plugin-react": "^4.3.3", + "eslint-plugin-storybook": "^0.11.0", "globals": "^15.11.0", + "storybook": "^8.4.2", "typescript": "~5.6.2", "vite": "^5.4.10" } diff --git a/apps/web/src/App.tsx b/apps/web/src/App.tsx index da7a285..7d4aa37 100644 --- a/apps/web/src/App.tsx +++ b/apps/web/src/App.tsx @@ -3,7 +3,7 @@ import reactLogo from "./assets/react.svg"; import viteLogo from "/vite.svg"; import "./App.css"; import { FaSignInAlt } from "react-icons/fa"; -import Button from "./components/Button/Button"; +import { Button } from "./components"; function App() { const [count, setCount] = useState(0); @@ -40,97 +40,97 @@ function App() { }} > ); }; -export default Button; +export { Button }; diff --git a/apps/web/src/components/Header/Header.stories.ts b/apps/web/src/components/Header/Header.stories.ts new file mode 100644 index 0000000..28e09fd --- /dev/null +++ b/apps/web/src/components/Header/Header.stories.ts @@ -0,0 +1,33 @@ +import type { Meta, StoryObj } from "@storybook/react"; +import { fn } from "@storybook/test"; + +import { Header } from "./Header"; + +const meta: Meta = { + title: "Sections/Header", + component: Header, + // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs + tags: ["autodocs"], + parameters: { + // More on how to position stories at: https://storybook.js.org/docs/configure/story-layout + layout: "fullscreen", + }, + args: { + onLogin: fn(), + onLogout: fn(), + onCreateAccount: fn(), + }, +} satisfies Meta; + +export default meta; +type Story = StoryObj; + +export const LoggedIn: Story = { + args: { + user: { + name: "Jane Doe", + }, + }, +}; + +export const LoggedOut: Story = {}; diff --git a/apps/web/src/components/Header/Header.tsx b/apps/web/src/components/Header/Header.tsx new file mode 100644 index 0000000..7253b9e --- /dev/null +++ b/apps/web/src/components/Header/Header.tsx @@ -0,0 +1,68 @@ +import React from "react"; +import { Button } from "../Button/Button"; +import "./header.css"; + +type User = { + name: string; +}; + +export interface HeaderProps { + user?: User; + onLogin?: () => void; + onLogout?: () => void; + onCreateAccount?: () => void; +} + +const Header = ({ user, onLogin, onLogout, onCreateAccount }: HeaderProps) => ( +
+
+
+ + + + + + + +

Acme

+
+
+ {user ? ( + <> + + Welcome, {user.name}! + +
+
+
+); + +export { Header }; diff --git a/apps/web/src/components/Header/header.css b/apps/web/src/components/Header/header.css new file mode 100644 index 0000000..ad77492 --- /dev/null +++ b/apps/web/src/components/Header/header.css @@ -0,0 +1,32 @@ +.storybook-header { + display: flex; + justify-content: space-between; + align-items: center; + border-bottom: 1px solid rgba(0, 0, 0, 0.1); + padding: 15px 20px; + font-family: "Nunito Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +.storybook-header svg { + display: inline-block; + vertical-align: top; +} + +.storybook-header h1 { + display: inline-block; + vertical-align: top; + margin: 6px 0 6px 10px; + font-weight: 700; + font-size: 20px; + line-height: 1; +} + +.storybook-header button + button { + margin-left: 10px; +} + +.storybook-header .welcome { + margin-right: 10px; + color: #333; + font-size: 14px; +} diff --git a/apps/web/src/components/index.ts b/apps/web/src/components/index.ts new file mode 100644 index 0000000..e8939ef --- /dev/null +++ b/apps/web/src/components/index.ts @@ -0,0 +1,2 @@ +export { Button } from "./Button/Button"; +export { Header } from "./Header/Header"; diff --git a/apps/web/src/stories/Configure.mdx b/apps/web/src/stories/Configure.mdx new file mode 100644 index 0000000..9352e60 --- /dev/null +++ b/apps/web/src/stories/Configure.mdx @@ -0,0 +1,369 @@ +import { Meta } from "@storybook/blocks"; + +import Github from "./assets/github.svg"; +import Discord from "./assets/discord.svg"; +import Youtube from "./assets/youtube.svg"; +import Tutorials from "./assets/tutorials.svg"; +import Styling from "./assets/styling.png"; +import Context from "./assets/context.png"; +import Assets from "./assets/assets.png"; +import Docs from "./assets/docs.png"; +import Share from "./assets/share.png"; +import FigmaPlugin from "./assets/figma-plugin.png"; +import Testing from "./assets/testing.png"; +import Accessibility from "./assets/accessibility.png"; +import Theming from "./assets/theming.png"; +import AddonLibrary from "./assets/addon-library.png"; + +export const RightArrow = () => ( + + + +); + + + +
+
+ # Configure your project + + Because Storybook works separately from your app, you'll need to configure it for your specific stack and setup. Below, explore guides for configuring Storybook with popular frameworks and tools. If you get stuck, learn how you can ask for help from our community. + +
+
+
+ A wall of logos representing different styling technologies +

Add styling and CSS

+

Like with web applications, there are many ways to include CSS within Storybook. Learn more about setting up styling within Storybook.

+ Learn more +
+
+ An abstraction representing the composition of data for a component +

Provide context and mocking

+

Often when a story doesn't render, it's because your component is expecting a specific environment or context (like a theme provider) to be available.

+ Learn more +
+
+ A representation of typography and image assets +
+

Load assets and resources

+

To link static files (like fonts) to your projects and stories, use the + `staticDirs` configuration option to specify folders to load when + starting Storybook.

+ Learn more +
+
+
+
+
+
+ # Do more with Storybook + + Now that you know the basics, let's explore other parts of Storybook that will improve your experience. This list is just to get you started. You can customise Storybook in many ways to fit your needs. + +
+ +
+
+
+ A screenshot showing the autodocs tag being set, pointing a docs page being generated +

Autodocs

+

Auto-generate living, + interactive reference documentation from your components and stories.

+ Learn more +
+
+ A browser window showing a Storybook being published to a chromatic.com URL +

Publish to Chromatic

+

Publish your Storybook to review and collaborate with your entire team.

+ Learn more +
+
+ Windows showing the Storybook plugin in Figma +

Figma Plugin

+

Embed your stories into Figma to cross-reference the design and live + implementation in one place.

+ Learn more +
+
+ Screenshot of tests passing and failing +

Testing

+

Use stories to test a component in all its variations, no matter how + complex.

+ Learn more +
+
+ Screenshot of accessibility tests passing and failing +

Accessibility

+

Automatically test your components for a11y issues as you develop.

+ Learn more +
+
+ Screenshot of Storybook in light and dark mode +

Theming

+

Theme Storybook's UI to personalize it to your project.

+ Learn more +
+
+
+
+
+
+

Addons

+

Integrate your tools with Storybook to connect workflows.

+ Discover all addons +
+
+ Integrate your tools with Storybook to connect workflows. +
+
+ +
+
+ Github logo + Join our contributors building the future of UI development. + + Star on GitHub +
+
+ Discord logo +
+ Get support and chat with frontend developers. + + Join Discord server +
+
+
+ Youtube logo +
+ Watch tutorials, feature previews and interviews. + + Watch on YouTube +
+
+
+ A book +

Follow guided walkthroughs on for key workflows.

+ + Discover tutorials +
+ +
+ + diff --git a/apps/web/src/stories/Page.stories.ts b/apps/web/src/stories/Page.stories.ts new file mode 100644 index 0000000..f5c5a0b --- /dev/null +++ b/apps/web/src/stories/Page.stories.ts @@ -0,0 +1,32 @@ +import type { Meta, StoryObj } from "@storybook/react"; +import { expect, userEvent, within } from "@storybook/test"; + +import { Page } from "./Page"; + +const meta = { + title: "Example/Page", + component: Page, + parameters: { + // More on how to position stories at: https://storybook.js.org/docs/configure/story-layout + layout: "fullscreen", + }, +} satisfies Meta; + +export default meta; +type Story = StoryObj; + +export const LoggedOut: Story = {}; + +// More on interaction testing: https://storybook.js.org/docs/writing-tests/interaction-testing +export const LoggedIn: Story = { + play: async ({ canvasElement }) => { + const canvas = within(canvasElement); + const loginButton = canvas.getByRole("button", { name: /Log in/i }); + await expect(loginButton).toBeInTheDocument(); + await userEvent.click(loginButton); + await expect(loginButton).not.toBeInTheDocument(); + + const logoutButton = canvas.getByRole("button", { name: /Log out/i }); + await expect(logoutButton).toBeInTheDocument(); + }, +}; diff --git a/apps/web/src/stories/Page.tsx b/apps/web/src/stories/Page.tsx new file mode 100644 index 0000000..ccced19 --- /dev/null +++ b/apps/web/src/stories/Page.tsx @@ -0,0 +1,90 @@ +import React from "react"; +import { Header } from "../components"; +import "./page.css"; + +type User = { + name: string; +}; + +export const Page: React.FC = () => { + const [user, setUser] = React.useState(); + + return ( +
+
setUser({ name: "Jane Doe" })} + onLogout={() => setUser(undefined)} + onCreateAccount={() => setUser({ name: "Jane Doe" })} + /> + +
+

Pages in Storybook

+

+ We recommend building UIs with a{" "} + + component-driven + {" "} + process starting with atomic components and ending with pages. +

+

+ Render pages with mock data. This makes it easy to build and review + page states without needing to navigate to them in your app. Here are + some handy patterns for managing page data in Storybook: +

+
    +
  • + Use a higher-level connected component. Storybook helps you compose + such data from the "args" of child component stories +
  • +
  • + Assemble data in the page component from your services. You can mock + these services out using Storybook. +
  • +
+

+ Get a guided tutorial on component-driven development at{" "} + + Storybook tutorials + + . Read more in the{" "} + + docs + + . +

+
+ Tip Adjust the width of the canvas with + the{" "} + + + + + + Viewports addon in the toolbar +
+
+
+ ); +}; diff --git a/apps/web/src/stories/assets/accessibility.png b/apps/web/src/stories/assets/accessibility.png new file mode 100644 index 0000000..6ffe6fe Binary files /dev/null and b/apps/web/src/stories/assets/accessibility.png differ diff --git a/apps/web/src/stories/assets/accessibility.svg b/apps/web/src/stories/assets/accessibility.svg new file mode 100644 index 0000000..107e93f --- /dev/null +++ b/apps/web/src/stories/assets/accessibility.svg @@ -0,0 +1 @@ +Accessibility \ No newline at end of file diff --git a/apps/web/src/stories/assets/addon-library.png b/apps/web/src/stories/assets/addon-library.png new file mode 100644 index 0000000..95deb38 Binary files /dev/null and b/apps/web/src/stories/assets/addon-library.png differ diff --git a/apps/web/src/stories/assets/assets.png b/apps/web/src/stories/assets/assets.png new file mode 100644 index 0000000..cfba681 Binary files /dev/null and b/apps/web/src/stories/assets/assets.png differ diff --git a/apps/web/src/stories/assets/avif-test-image.avif b/apps/web/src/stories/assets/avif-test-image.avif new file mode 100644 index 0000000..530709b Binary files /dev/null and b/apps/web/src/stories/assets/avif-test-image.avif differ diff --git a/apps/web/src/stories/assets/context.png b/apps/web/src/stories/assets/context.png new file mode 100644 index 0000000..e5cd249 Binary files /dev/null and b/apps/web/src/stories/assets/context.png differ diff --git a/apps/web/src/stories/assets/discord.svg b/apps/web/src/stories/assets/discord.svg new file mode 100644 index 0000000..d638958 --- /dev/null +++ b/apps/web/src/stories/assets/discord.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/web/src/stories/assets/docs.png b/apps/web/src/stories/assets/docs.png new file mode 100644 index 0000000..a749629 Binary files /dev/null and b/apps/web/src/stories/assets/docs.png differ diff --git a/apps/web/src/stories/assets/figma-plugin.png b/apps/web/src/stories/assets/figma-plugin.png new file mode 100644 index 0000000..8f79b08 Binary files /dev/null and b/apps/web/src/stories/assets/figma-plugin.png differ diff --git a/apps/web/src/stories/assets/github.svg b/apps/web/src/stories/assets/github.svg new file mode 100644 index 0000000..dc51352 --- /dev/null +++ b/apps/web/src/stories/assets/github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/web/src/stories/assets/share.png b/apps/web/src/stories/assets/share.png new file mode 100644 index 0000000..8097a37 Binary files /dev/null and b/apps/web/src/stories/assets/share.png differ diff --git a/apps/web/src/stories/assets/styling.png b/apps/web/src/stories/assets/styling.png new file mode 100644 index 0000000..d341e82 Binary files /dev/null and b/apps/web/src/stories/assets/styling.png differ diff --git a/apps/web/src/stories/assets/testing.png b/apps/web/src/stories/assets/testing.png new file mode 100644 index 0000000..d4ac39a Binary files /dev/null and b/apps/web/src/stories/assets/testing.png differ diff --git a/apps/web/src/stories/assets/theming.png b/apps/web/src/stories/assets/theming.png new file mode 100644 index 0000000..1535eb9 Binary files /dev/null and b/apps/web/src/stories/assets/theming.png differ diff --git a/apps/web/src/stories/assets/tutorials.svg b/apps/web/src/stories/assets/tutorials.svg new file mode 100644 index 0000000..b492a9c --- /dev/null +++ b/apps/web/src/stories/assets/tutorials.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/web/src/stories/assets/youtube.svg b/apps/web/src/stories/assets/youtube.svg new file mode 100644 index 0000000..a7515d7 --- /dev/null +++ b/apps/web/src/stories/assets/youtube.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/web/src/stories/page.css b/apps/web/src/stories/page.css new file mode 100644 index 0000000..d1cf495 --- /dev/null +++ b/apps/web/src/stories/page.css @@ -0,0 +1,69 @@ +.storybook-page { + margin: 0 auto; + padding: 48px 20px; + max-width: 600px; + color: #333; + font-size: 14px; + line-height: 24px; + font-family: "Nunito Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +.storybook-page h2 { + display: inline-block; + vertical-align: top; + margin: 0 0 4px; + font-weight: 700; + font-size: 32px; + line-height: 1; +} + +.storybook-page p { + margin: 1em 0; +} + +.storybook-page a { + color: #1ea7fd; + text-decoration: none; +} + +.storybook-page ul { + margin: 1em 0; + padding-left: 30px; +} + +.storybook-page li { + margin-bottom: 8px; +} + +.storybook-page .tip { + display: inline-block; + vertical-align: top; + margin-right: 10px; + border-radius: 1em; + background: #e7fdd8; + padding: 4px 12px; + color: #66bf3c; + font-weight: 700; + font-size: 11px; + line-height: 12px; +} + +.storybook-page .tip-wrapper { + margin-top: 40px; + margin-bottom: 40px; + font-size: 13px; + line-height: 20px; +} + +.storybook-page .tip-wrapper svg { + display: inline-block; + vertical-align: top; + margin-top: 3px; + margin-right: 4px; + width: 12px; + height: 12px; +} + +.storybook-page .tip-wrapper svg path { + fill: #1ea7fd; +} diff --git a/package.json b/package.json index 908c2bc..af6efea 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,8 @@ "format": "prettier --write \"**/*.{ts,tsx,md}\"", "test": "cross-env FORCE_COLOR=1 turbo run test", "typecheck": "turbo run typecheck", + "storybook": "turbo run storybook --parallel", + "build-storybook": "turbo run build-storybook", "prepare": "husky" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d5a7032..bea3a70 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -81,6 +81,9 @@ importers: specifier: ^5.3.0 version: 5.3.0(react@18.3.1) devDependencies: + "@chromatic-com/storybook": + specifier: ^3.2.2 + version: 3.2.2(react@18.3.1)(storybook@8.4.2(prettier@3.3.3)) "@eslint/js": specifier: ^9.13.0 version: 9.13.0 @@ -90,6 +93,27 @@ importers: "@rentment/typescript-config": specifier: workspace:* version: link:../../packages/typescript-config + "@storybook/addon-essentials": + specifier: ^8.4.2 + version: 8.4.2(@types/react@18.3.12)(storybook@8.4.2(prettier@3.3.3)) + "@storybook/addon-interactions": + specifier: ^8.4.2 + version: 8.4.2(storybook@8.4.2(prettier@3.3.3)) + "@storybook/addon-onboarding": + specifier: ^8.4.2 + version: 8.4.2(react@18.3.1)(storybook@8.4.2(prettier@3.3.3)) + "@storybook/blocks": + specifier: ^8.4.2 + version: 8.4.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.2(prettier@3.3.3)) + "@storybook/react": + specifier: ^8.4.2 + version: 8.4.2(@storybook/test@8.4.2(storybook@8.4.2(prettier@3.3.3)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.2(prettier@3.3.3))(typescript@5.6.3) + "@storybook/react-vite": + specifier: ^8.4.2 + version: 8.4.2(@storybook/test@8.4.2(storybook@8.4.2(prettier@3.3.3)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.24.3)(storybook@8.4.2(prettier@3.3.3))(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.6)) + "@storybook/test": + specifier: ^8.4.2 + version: 8.4.2(storybook@8.4.2(prettier@3.3.3)) "@types/react": specifier: ^18.3.12 version: 18.3.12 @@ -99,9 +123,15 @@ importers: "@vitejs/plugin-react": specifier: ^4.3.3 version: 4.3.3(vite@5.4.10(@types/node@22.8.6)) + eslint-plugin-storybook: + specifier: ^0.11.0 + version: 0.11.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) globals: specifier: ^15.11.0 version: 15.12.0 + storybook: + specifier: ^8.4.2 + version: 8.4.2(prettier@3.3.3) typescript: specifier: ~5.6.2 version: 5.6.3 @@ -164,6 +194,12 @@ importers: version: 5.6.3 packages: + "@adobe/css-tools@4.4.0": + resolution: + { + integrity: sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==, + } + "@ampproject/remapping@2.3.0": resolution: { @@ -283,6 +319,13 @@ packages: peerDependencies: "@babel/core": ^7.0.0-0 + "@babel/runtime@7.26.0": + resolution: + { + integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==, + } + engines: { node: ">=6.9.0" } + "@babel/template@7.25.9": resolution: { @@ -304,6 +347,15 @@ packages: } engines: { node: ">=6.9.0" } + "@chromatic-com/storybook@3.2.2": + resolution: + { + integrity: sha512-xmXt/GW0hAPbzNTrxYuVo43Adrtjue4DeVrsoIIEeJdGaPNNeNf+DHMlJKOBdlHmCnFUoe9R/0mLM9zUp5bKWw==, + } + engines: { node: ">=16.0.0", yarn: ">=1.22.18" } + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + "@commitlint/cli@19.5.0": resolution: { @@ -947,6 +999,18 @@ packages: } engines: { node: ">=12" } + "@joshwooding/vite-plugin-react-docgen-typescript@0.3.0": + resolution: + { + integrity: sha512-2D6y7fNvFmsLmRt6UCOFJPvFoPMJGT0Uh1Wg0RaigUp7kdQPs6yYn8Dmx6GZkOH/NW0yMTwRz/p0SRMMRo50vA==, + } + peerDependencies: + typescript: ">= 4.3.x" + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + "@jridgewell/gen-mapping@0.3.5": resolution: { @@ -986,6 +1050,15 @@ packages: integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==, } + "@mdx-js/react@3.1.0": + resolution: + { + integrity: sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==, + } + peerDependencies: + "@types/react": ">=16" + react: ">=16" + "@nodelib/fs.scandir@2.1.5": resolution: { @@ -1021,6 +1094,18 @@ packages: } engines: { node: ^12.20.0 || ^14.18.0 || >=16.0.0 } + "@rollup/pluginutils@5.1.3": + resolution: + { + integrity: sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==, + } + engines: { node: ">=14.0.0" } + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + "@rollup/rollup-android-arm-eabi@4.24.3": resolution: { @@ -1165,6 +1250,255 @@ packages: cpu: [x64] os: [win32] + "@storybook/addon-actions@8.4.2": + resolution: + { + integrity: sha512-+hA200XN5aeA4T3jq8IifQq6Y+9FyNQ0Q+blM1L0Tl7WLzBc7B1kHQnKvhSj5pvMSBWc/Q/kY7Ev5t9gdOu13g==, + } + peerDependencies: + storybook: ^8.4.2 + + "@storybook/addon-backgrounds@8.4.2": + resolution: + { + integrity: sha512-s4uag5VKuk8q2MSnuNS7Sv+v1/mykzGPXe/zZRW2ammtkdHp8Uy78eQS2G0aiG02chXCX+qQgWMyy5QItDcTFQ==, + } + peerDependencies: + storybook: ^8.4.2 + + "@storybook/addon-controls@8.4.2": + resolution: + { + integrity: sha512-raCbHEj1xl4F3wKH6IdfEXNRaxKpY4QGhjSTE8Pte5iJSVhKG86taLqqRr+4dC7H1/LVMPU1XCGV4mkgDGtyxQ==, + } + peerDependencies: + storybook: ^8.4.2 + + "@storybook/addon-docs@8.4.2": + resolution: + { + integrity: sha512-jIpykha7hv2Inlrq31ZoYg2QhuCuvcO+Q+uvhT45RDTB+2US/fg3rJINKlw2Djq8RPPOXvty5W0yvE6CrWKhnQ==, + } + peerDependencies: + storybook: ^8.4.2 + + "@storybook/addon-essentials@8.4.2": + resolution: + { + integrity: sha512-+/vfPrXM/GWU3Kbrg92PepwAZr7lOeulTTYF4THK0CL3DfUUlkGNpBPLP5PtjCuIkVrTCjXiIEdVWk47d5m2+w==, + } + peerDependencies: + storybook: ^8.4.2 + + "@storybook/addon-highlight@8.4.2": + resolution: + { + integrity: sha512-vTtwp7nyJ09SXrsMnH+pukCjHjRMjQXgHZHxvbrv09uoH8ldQMv9B7u+X+9Wcy/jYSKFz/ng7pWo4b4a2oXHkg==, + } + peerDependencies: + storybook: ^8.4.2 + + "@storybook/addon-interactions@8.4.2": + resolution: + { + integrity: sha512-+/NTENTApeOcONgFNQ6Olbk0GH3pTDG3w0eh00slCB+2agD1BcVKg8SSlHQV0lQF1cK3vWL/X3jeaxdFLYOjjg==, + } + peerDependencies: + storybook: ^8.4.2 + + "@storybook/addon-measure@8.4.2": + resolution: + { + integrity: sha512-z+j6xQwcUBSpgzl1XDU+xU4YYgLraLMljECW7NvRNyJ/PYixvol8R3wtzWbr+CBpxmvbXjEJCPlF+EjF9/mBWQ==, + } + peerDependencies: + storybook: ^8.4.2 + + "@storybook/addon-onboarding@8.4.2": + resolution: + { + integrity: sha512-zWzOyRASnIPt2AcaEl1KhI+aOaKDuoIcNB7u1GoABj0YM+V9d6o3lvcsmOAQG5pgwgFyqyOnLwpTfvRSEyzGFA==, + } + peerDependencies: + storybook: ^8.4.2 + + "@storybook/addon-outline@8.4.2": + resolution: + { + integrity: sha512-oTMlPEyT4CBqzcQbfemoJzJ6yzeRAmvrAx9ssaBcnQQRsKxo0D2Ri/Jmm6SNcR0yBHxYRkvIH+2phLw8aiflCQ==, + } + peerDependencies: + storybook: ^8.4.2 + + "@storybook/addon-toolbars@8.4.2": + resolution: + { + integrity: sha512-DidzW/NQS224niMJIjcJI2ls83emqygUcS9GYNGgdc5Xwro/TPgGYOXP2qnXgYUxXQTHbrxmIbHdEehxC7CcYQ==, + } + peerDependencies: + storybook: ^8.4.2 + + "@storybook/addon-viewport@8.4.2": + resolution: + { + integrity: sha512-qVQ2UaxCNsUSFHnAAAizNPIJ/QwfMg7p5bBdpYROTZXJe+bxVp0rFzZmQgHZ3/sn+lzE4ItM4QEfxkfQUWi1ag==, + } + peerDependencies: + storybook: ^8.4.2 + + "@storybook/blocks@8.4.2": + resolution: + { + integrity: sha512-yAAvmOWaD8gIrepOxCh/RxQqd/1xZIwd/V+gsvAhW/thawN+SpI+zK63gmcqAPLX84hJ3Dh5pegRk0SoHNuDVA==, + } + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.4.2 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + + "@storybook/builder-vite@8.4.2": + resolution: + { + integrity: sha512-dO5FB5yH1C6tr/kBHn1frvGwp8Pt0D1apgXWkJ5ITWEUfh6WwOqX2fqsWsqaNwE7gP0qn0XgwCIEkI/4Mj55SA==, + } + peerDependencies: + storybook: ^8.4.2 + vite: ^4.0.0 || ^5.0.0 + + "@storybook/components@8.4.2": + resolution: + { + integrity: sha512-+W59oF7D73LAxLNmCfFrfs98cH9pyNHK9HlJoO5/lKbK4IdWhhOoqUR/AJ3ueksoLuetFat4DxyE8SN1H4Bvrg==, + } + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + + "@storybook/core@8.4.2": + resolution: + { + integrity: sha512-hF8GWoUZTjwwuV5j4OLhMHZtZQL/NYcVUBReC2Ba06c8PkFIKqKZwATr1zKd301gQ5Qwcn9WgmZxJTMgdKQtOg==, + } + peerDependencies: + prettier: ^2 || ^3 + peerDependenciesMeta: + prettier: + optional: true + + "@storybook/csf-plugin@8.4.2": + resolution: + { + integrity: sha512-1f0t6W5xbC1sSAHHs3uXYPIQs2NXAEtIGqn6X9i3xbbub6hDS8PF8BIm7dOjQ8dZOPp7d9ltR64V5CoLlsOigA==, + } + peerDependencies: + storybook: ^8.4.2 + + "@storybook/csf@0.1.11": + resolution: + { + integrity: sha512-dHYFQH3mA+EtnCkHXzicbLgsvzYjcDJ1JWsogbItZogkPHgSJM/Wr71uMkcvw8v9mmCyP4NpXJuu6bPoVsOnzg==, + } + + "@storybook/global@5.0.0": + resolution: + { + integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==, + } + + "@storybook/icons@1.2.12": + resolution: + { + integrity: sha512-UxgyK5W3/UV4VrI3dl6ajGfHM4aOqMAkFLWe2KibeQudLf6NJpDrDMSHwZj+3iKC4jFU7dkKbbtH2h/al4sW3Q==, + } + engines: { node: ">=14.0.0" } + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + + "@storybook/instrumenter@8.4.2": + resolution: + { + integrity: sha512-gPYCZ/0O6gRLI3zmenu2N6QtKzxDZFdT2xf4RWcNUSZyp28RZkRCIgKFMt3fTmvE0yMzAjQyRSkBdrONjQ44HA==, + } + peerDependencies: + storybook: ^8.4.2 + + "@storybook/manager-api@8.4.2": + resolution: + { + integrity: sha512-rhPc4cgQDKDH8NUyRh/ZaJW7QIhR/PO5MNX4xc+vz71sM2nO7ONA/FrgLtCuu4SULdwilEPvGefYvLK0dE+Caw==, + } + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + + "@storybook/preview-api@8.4.2": + resolution: + { + integrity: sha512-5X/xvIvDPaWJKUBCo5zVeBbbjkhnwcI2KPkuOgrHVRRhuQ5WqD0RYxVtOOFNyQXme7g0nNl5RFNgvT7qv9qGeg==, + } + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + + "@storybook/react-dom-shim@8.4.2": + resolution: + { + integrity: sha512-FZVTM1f34FpGnf6e3MDIKkz05gmn8H9wEccvQAgr8pEFe8VWfrpVWeUrmatSAfgrCMNXYC1avDend8UX6IM8Fg==, + } + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.4.2 + + "@storybook/react-vite@8.4.2": + resolution: + { + integrity: sha512-OoXaW/V1AqLggMyniRcnuwmqQ1/OtSn38t31lePX4nDDeJhbGT3ZPldRrwvsLb0EaD3N27uoL+QbAOgsYJIhwA==, + } + engines: { node: ">=18.0.0" } + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.4.2 + vite: ^4.0.0 || ^5.0.0 + + "@storybook/react@8.4.2": + resolution: + { + integrity: sha512-rO5/aVKBVhIKENcL7G8ud4QKC5OyWBPCkJIvY6XUHIuhErJy9/4pP+sZ85jypVwx5kq+EqCPF8AEOWjIxB/4/Q==, + } + engines: { node: ">=18.0.0" } + peerDependencies: + "@storybook/test": 8.4.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.4.2 + typescript: ">= 4.2.x" + peerDependenciesMeta: + "@storybook/test": + optional: true + typescript: + optional: true + + "@storybook/test@8.4.2": + resolution: + { + integrity: sha512-MipTdboStv0hsqF2Sw8TZgP0YnxCcDYwxkTOd4hmRzev/7Brtvpi4pqjqh8k98ZCvhrCPAPVIoX5drk+oi3YUA==, + } + peerDependencies: + storybook: ^8.4.2 + + "@storybook/theming@8.4.2": + resolution: + { + integrity: sha512-9j4fnu5LcV+qSs1rdwf61Bt14lms0T1LOZkHxGNcS1c1oH+cPS+sxECh2lxtni+mvOAHUlBs9pKhVZzRPdWpvg==, + } + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + "@swc/core-darwin-arm64@1.3.36": resolution: { @@ -1262,6 +1596,29 @@ packages: } engines: { node: ">=10" } + "@testing-library/dom@10.4.0": + resolution: + { + integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==, + } + engines: { node: ">=18" } + + "@testing-library/jest-dom@6.5.0": + resolution: + { + integrity: sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==, + } + engines: { node: ">=14", npm: ">=6", yarn: ">=1" } + + "@testing-library/user-event@14.5.2": + resolution: + { + integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==, + } + engines: { node: ">=12", npm: ">=6" } + peerDependencies: + "@testing-library/dom": ">=7.21.4" + "@tsconfig/node10@1.0.11": resolution: { @@ -1286,6 +1643,12 @@ packages: integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==, } + "@types/aria-query@5.0.4": + resolution: + { + integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==, + } + "@types/babel__core@7.20.5": resolution: { @@ -1328,6 +1691,12 @@ packages: integrity: sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==, } + "@types/doctrine@0.0.9": + resolution: + { + integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==, + } + "@types/estree@1.0.6": resolution: { @@ -1346,6 +1715,12 @@ packages: integrity: sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ==, } + "@types/glob@7.2.0": + resolution: + { + integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==, + } + "@types/http-errors@2.0.4": resolution: { @@ -1358,12 +1733,24 @@ packages: integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==, } + "@types/mdx@2.0.13": + resolution: + { + integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==, + } + "@types/mime@1.3.5": resolution: { integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==, } + "@types/minimatch@5.1.2": + resolution: + { + integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==, + } + "@types/node@22.8.6": resolution: { @@ -1400,6 +1787,12 @@ packages: integrity: sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==, } + "@types/resolve@1.20.6": + resolution: + { + integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==, + } + "@types/send@0.17.4": resolution: { @@ -1424,6 +1817,12 @@ packages: integrity: sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==, } + "@types/uuid@9.0.8": + resolution: + { + integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==, + } + "@typescript-eslint/eslint-plugin@8.12.2": resolution: { @@ -1514,6 +1913,42 @@ packages: peerDependencies: vite: ^4.2.0 || ^5.0.0 + "@vitest/expect@2.0.5": + resolution: + { + integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==, + } + + "@vitest/pretty-format@2.0.5": + resolution: + { + integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==, + } + + "@vitest/pretty-format@2.1.4": + resolution: + { + integrity: sha512-L95zIAkEuTDbUX1IsjRl+vyBSLh3PwLLgKpghl37aCK9Jvw0iP+wKwIFhfjdUtA2myLgjrG6VU6JCFLv8q/3Ww==, + } + + "@vitest/spy@2.0.5": + resolution: + { + integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==, + } + + "@vitest/utils@2.0.5": + resolution: + { + integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==, + } + + "@vitest/utils@2.1.4": + resolution: + { + integrity: sha512-MXDnZn0Awl2S86PSNIim5PWXgIAx8CIkzu35mBdSApUip6RFOGXBCf3YFyeEu8n1IHk4bWD46DeYFu9mQlFIRg==, + } + JSONStream@1.3.5: resolution: { @@ -1598,6 +2033,13 @@ packages: } engines: { node: ">=8" } + ansi-styles@5.2.0: + resolution: + { + integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==, + } + engines: { node: ">=10" } + ansi-styles@6.2.1: resolution: { @@ -1630,6 +2072,19 @@ packages: integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, } + aria-query@5.3.0: + resolution: + { + integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==, + } + + aria-query@5.3.2: + resolution: + { + integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==, + } + engines: { node: ">= 0.4" } + array-buffer-byte-length@1.0.1: resolution: { @@ -1691,6 +2146,20 @@ packages: } engines: { node: ">= 0.4" } + assertion-error@2.0.1: + resolution: + { + integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==, + } + engines: { node: ">=12" } + + ast-types@0.16.1: + resolution: + { + integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==, + } + engines: { node: ">=4" } + atomic-sleep@1.0.0: resolution: { @@ -1717,6 +2186,13 @@ packages: integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, } + better-opn@3.0.2: + resolution: + { + integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==, + } + engines: { node: ">=12.0.0" } + binary-extensions@2.3.0: resolution: { @@ -1750,6 +2226,12 @@ packages: } engines: { node: ">=8" } + browser-assert@1.2.1: + resolution: + { + integrity: sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==, + } + browserslist@4.24.2: resolution: { @@ -1813,6 +2295,20 @@ packages: integrity: sha512-fmfjsOlJUpMWu+mAAtZZZHz7UEwsUxIIvu1TJfO1HqFQvB/B+ii0xr9B5HpbZY/mC4XZ8SvjHJqtAY6pDPQEog==, } + chai@5.1.2: + resolution: + { + integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==, + } + engines: { node: ">=12" } + + chalk@3.0.0: + resolution: + { + integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==, + } + engines: { node: ">=8" } + chalk@4.1.2: resolution: { @@ -1827,6 +2323,13 @@ packages: } engines: { node: ^12.17.0 || ^14.13 || >=16.0.0 } + check-error@2.1.1: + resolution: + { + integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==, + } + engines: { node: ">= 16" } + chokidar@3.6.0: resolution: { @@ -1841,6 +2344,21 @@ packages: } engines: { node: ">= 14.16.0" } + chromatic@11.18.0: + resolution: + { + integrity: sha512-3o9Frn1oIS1hFLsJxVH9yVJ1O7+TCYoyL7OZzUorL/DCYduhXr5LDSBfpUsp7EdCPb64ufkbyFzSRNbt/xy9kg==, + } + hasBin: true + peerDependencies: + "@chromatic-com/cypress": ^0.*.* || ^1.0.0 + "@chromatic-com/playwright": ^0.*.* || ^1.0.0 + peerDependenciesMeta: + "@chromatic-com/cypress": + optional: true + "@chromatic-com/playwright": + optional: true + cli-cursor@5.0.0: resolution: { @@ -2013,6 +2531,12 @@ packages: } engines: { node: ">= 8" } + css.escape@1.5.1: + resolution: + { + integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==, + } + csstype@3.1.3: resolution: { @@ -2076,6 +2600,13 @@ packages: supports-color: optional: true + deep-eql@5.0.2: + resolution: + { + integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==, + } + engines: { node: ">=6" } + deep-is@0.1.4: resolution: { @@ -2089,6 +2620,13 @@ packages: } engines: { node: ">= 0.4" } + define-lazy-prop@2.0.0: + resolution: + { + integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==, + } + engines: { node: ">=8" } + define-properties@1.2.1: resolution: { @@ -2103,6 +2641,13 @@ packages: } engines: { node: ">= 0.8" } + dequal@2.0.3: + resolution: + { + integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==, + } + engines: { node: ">=6" } + destroy@1.2.0: resolution: { @@ -2124,6 +2669,25 @@ packages: } engines: { node: ">=0.10.0" } + doctrine@3.0.0: + resolution: + { + integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==, + } + engines: { node: ">=6.0.0" } + + dom-accessibility-api@0.5.16: + resolution: + { + integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==, + } + + dom-accessibility-api@0.6.3: + resolution: + { + integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==, + } + dot-prop@5.3.0: resolution: { @@ -2278,9 +2842,17 @@ packages: es-to-primitive@1.2.1: resolution: { - integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==, + integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==, + } + engines: { node: ">= 0.4" } + + esbuild-register@3.6.0: + resolution: + { + integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==, } - engines: { node: ">= 0.4" } + peerDependencies: + esbuild: ">=0.12 <1" esbuild@0.21.5: resolution: @@ -2377,6 +2949,15 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + eslint-plugin-storybook@0.11.0: + resolution: + { + integrity: sha512-MvPJgF+ORwgK04a1CY5itO4pwdAOFIRqczlNEHL62+4Ocvj1d61GWRqIdeX1BNCKno6fdPC6TksUHCZMGsq26g==, + } + engines: { node: ">= 18" } + peerDependencies: + eslint: ">=6" + eslint-plugin-turbo@2.2.3: resolution: { @@ -2426,6 +3007,14 @@ packages: } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + esprima@4.0.1: + resolution: + { + integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==, + } + engines: { node: ">=4" } + hasBin: true + esquery@1.6.0: resolution: { @@ -2447,6 +3036,18 @@ packages: } engines: { node: ">=4.0" } + estree-walker@2.0.2: + resolution: + { + integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==, + } + + estree-walker@3.0.3: + resolution: + { + integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==, + } + esutils@2.0.3: resolution: { @@ -2575,6 +3176,13 @@ packages: } engines: { node: ">=16.0.0" } + filesize@10.1.6: + resolution: + { + integrity: sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==, + } + engines: { node: ">= 10.4.0" } + fill-range@7.1.1: resolution: { @@ -2740,6 +3348,15 @@ packages: } engines: { node: ">=10.13.0" } + glob-promise@4.2.2: + resolution: + { + integrity: sha512-xcUzJ8NWN5bktoTIX7eOclO1Npxd/dyVqUJxlLIDasT4C7KZyqlPIwkdJ0Ypiy3p2ZKahTjK4M9uC3sNSfNMzw==, + } + engines: { node: ">=12" } + peerDependencies: + glob: ^7.1.6 + glob@10.4.5: resolution: { @@ -2795,6 +3412,12 @@ packages: integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==, } + graceful-fs@4.2.11: + resolution: + { + integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, + } + graphemer@1.4.0: resolution: { @@ -2916,6 +3539,13 @@ packages: } engines: { node: ">=0.8.19" } + indent-string@4.0.0: + resolution: + { + integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==, + } + engines: { node: ">=8" } + inflight@1.0.6: resolution: { @@ -2950,6 +3580,13 @@ packages: } engines: { node: ">= 0.10" } + is-arguments@1.1.1: + resolution: + { + integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==, + } + engines: { node: ">= 0.4" } + is-array-buffer@3.0.4: resolution: { @@ -3018,6 +3655,14 @@ packages: } engines: { node: ">= 0.4" } + is-docker@2.2.1: + resolution: + { + integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==, + } + engines: { node: ">=8" } + hasBin: true + is-extglob@2.1.1: resolution: { @@ -3177,6 +3822,13 @@ packages: } engines: { node: ">= 0.4" } + is-wsl@2.2.0: + resolution: + { + integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==, + } + engines: { node: ">=8" } + isarray@2.0.5: resolution: { @@ -3229,6 +3881,13 @@ packages: } hasBin: true + jsdoc-type-pratt-parser@4.1.0: + resolution: + { + integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==, + } + engines: { node: ">=12.0.0" } + jsesc@3.0.2: resolution: { @@ -3275,6 +3934,12 @@ packages: engines: { node: ">=6" } hasBin: true + jsonfile@6.1.0: + resolution: + { + integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==, + } + jsonparse@1.3.1: resolution: { @@ -3411,6 +4076,12 @@ packages: integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==, } + lodash@4.17.21: + resolution: + { + integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==, + } + log-update@6.1.0: resolution: { @@ -3425,6 +4096,12 @@ packages: } hasBin: true + loupe@3.1.2: + resolution: + { + integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==, + } + lru-cache@10.4.3: resolution: { @@ -3437,12 +4114,38 @@ packages: integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==, } + lz-string@1.5.0: + resolution: + { + integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==, + } + hasBin: true + + magic-string@0.27.0: + resolution: + { + integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==, + } + engines: { node: ">=12" } + + magic-string@0.30.12: + resolution: + { + integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==, + } + make-error@1.3.6: resolution: { integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==, } + map-or-similar@1.5.0: + resolution: + { + integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==, + } + media-typer@0.3.0: resolution: { @@ -3450,6 +4153,12 @@ packages: } engines: { node: ">= 0.6" } + memoizerific@1.11.3: + resolution: + { + integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==, + } + meow@12.1.1: resolution: { @@ -3526,6 +4235,13 @@ packages: } engines: { node: ">=18" } + min-indent@1.0.1: + resolution: + { + integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==, + } + engines: { node: ">=4" } + minimatch@3.1.2: resolution: { @@ -3702,6 +4418,13 @@ packages: } engines: { node: ">=18" } + open@8.4.2: + resolution: + { + integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==, + } + engines: { node: ">=12" } + optionator@0.9.4: resolution: { @@ -3818,6 +4541,13 @@ packages: integrity: sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==, } + pathval@2.0.0: + resolution: + { + integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==, + } + engines: { node: ">= 14.16" } + picocolors@1.1.1: resolution: { @@ -3879,6 +4609,13 @@ packages: } engines: { node: ">= 6" } + polished@4.3.1: + resolution: + { + integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==, + } + engines: { node: ">=10" } + possible-typed-array-names@1.0.0: resolution: { @@ -3936,6 +4673,13 @@ packages: engines: { node: ">=14" } hasBin: true + pretty-format@27.5.1: + resolution: + { + integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==, + } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } + process-warning@4.0.0: resolution: { @@ -4008,6 +4752,30 @@ packages: } engines: { node: ">= 0.8" } + react-confetti@6.1.0: + resolution: + { + integrity: sha512-7Ypx4vz0+g8ECVxr88W9zhcQpbeujJAVqL14ZnXJ3I23mOI9/oBVTQ3dkJhUmB0D6XOtCZEM6N0Gm9PMngkORw==, + } + engines: { node: ">=10.18" } + peerDependencies: + react: ^16.3.0 || ^17.0.1 || ^18.0.0 + + react-docgen-typescript@2.2.2: + resolution: + { + integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==, + } + peerDependencies: + typescript: ">= 4.3.x" + + react-docgen@7.1.0: + resolution: + { + integrity: sha512-APPU8HB2uZnpl6Vt/+0AFoVYgSRtfiP6FLrZgPPTDmqSb2R4qZRbgd0A3VzIFxDt5e+Fozjx79WjLWnF69DK8g==, + } + engines: { node: ">=16.14.0" } + react-dom@18.3.1: resolution: { @@ -4030,6 +4798,12 @@ packages: integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==, } + react-is@17.0.2: + resolution: + { + integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==, + } + react-refresh@0.14.2: resolution: { @@ -4072,6 +4846,20 @@ packages: } engines: { node: ">= 12.13.0" } + recast@0.23.9: + resolution: + { + integrity: sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==, + } + engines: { node: ">= 4" } + + redent@3.0.0: + resolution: + { + integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==, + } + engines: { node: ">=8" } + reflect.getprototypeof@1.0.6: resolution: { @@ -4079,6 +4867,12 @@ packages: } engines: { node: ">= 0.4" } + regenerator-runtime@0.14.1: + resolution: + { + integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==, + } + regexp.prototype.flags@1.5.3: resolution: { @@ -4353,6 +5147,18 @@ packages: } engines: { node: ">= 0.8" } + storybook@8.4.2: + resolution: + { + integrity: sha512-GMCgyAulmLNrkUtDkCpFO4SB77YrpiIxq6e5tzaQdXEuaDu1mdNwOuP3VG7nE2FzxmqDvagSgriM68YW9iFaZA==, + } + hasBin: true + peerDependencies: + prettier: ^2 || ^3 + peerDependenciesMeta: + prettier: + optional: true + string-argv@0.3.2: resolution: { @@ -4448,6 +5254,20 @@ packages: } engines: { node: ">=12" } + strip-indent@3.0.0: + resolution: + { + integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==, + } + engines: { node: ">=8" } + + strip-indent@4.0.0: + resolution: + { + integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==, + } + engines: { node: ">=12" } + strip-json-comments@2.0.1: resolution: { @@ -4529,6 +5349,12 @@ packages: integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==, } + tiny-invariant@1.3.3: + resolution: + { + integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==, + } + tinyexec@0.3.1: resolution: { @@ -4542,6 +5368,20 @@ packages: } engines: { node: ">=12.0.0" } + tinyrainbow@1.2.0: + resolution: + { + integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==, + } + engines: { node: ">=14.0.0" } + + tinyspy@3.0.2: + resolution: + { + integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==, + } + engines: { node: ">=14.0.0" } + to-regex-range@5.0.1: resolution: { @@ -4578,6 +5418,13 @@ packages: peerDependencies: typescript: ">=4.2.0" + ts-dedent@2.2.0: + resolution: + { + integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==, + } + engines: { node: ">=6.10" } + ts-interface-checker@0.1.13: resolution: { @@ -4615,6 +5462,13 @@ packages: "@swc/wasm": optional: true + tsconfig-paths@4.2.0: + resolution: + { + integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==, + } + engines: { node: ">=6" } + tsconfig@7.0.0: resolution: { @@ -4704,6 +5558,12 @@ packages: } hasBin: true + tween-functions@1.2.0: + resolution: + { + integrity: sha512-PZBtLYcCLtEcjL14Fzb1gSxPBeL7nWvGhO5ZFPGqziCcr8uvHp0NDmdjBchp6KHL+tExcg0m3NISmKxhU394dA==, + } + type-check@0.4.0: resolution: { @@ -4711,6 +5571,13 @@ packages: } engines: { node: ">= 0.8.0" } + type-fest@2.19.0: + resolution: + { + integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==, + } + engines: { node: ">=12.20" } + type-is@1.6.18: resolution: { @@ -4773,6 +5640,13 @@ packages: } engines: { node: ">=18" } + universalify@2.0.1: + resolution: + { + integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==, + } + engines: { node: ">= 10.0.0" } + unpipe@1.0.0: resolution: { @@ -4780,6 +5654,18 @@ packages: } engines: { node: ">= 0.8" } + unplugin@1.15.0: + resolution: + { + integrity: sha512-jTPIs63W+DUEDW207ztbaoO7cQ4p5aVaB823LSlxpsFEU3Mykwxf3ZGC/wzxFJeZlASZYgVrWeo7LgOrqJZ8RA==, + } + engines: { node: ">=14.0.0" } + peerDependencies: + webpack-sources: ^3 + peerDependenciesMeta: + webpack-sources: + optional: true + update-browserslist-db@1.1.1: resolution: { @@ -4795,6 +5681,12 @@ packages: integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, } + util@0.12.5: + resolution: + { + integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==, + } + utils-merge@1.0.1: resolution: { @@ -4802,6 +5694,13 @@ packages: } engines: { node: ">= 0.4.0" } + uuid@9.0.1: + resolution: + { + integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==, + } + hasBin: true + v8-compile-cache-lib@3.0.1: resolution: { @@ -4855,6 +5754,12 @@ packages: integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==, } + webpack-virtual-modules@0.6.2: + resolution: + { + integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==, + } + whatwg-url@7.1.0: resolution: { @@ -4930,6 +5835,21 @@ packages: integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, } + ws@8.18.0: + resolution: + { + integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==, + } + engines: { node: ">=10.0.0" } + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + xtend@4.0.2: resolution: { @@ -4994,6 +5914,8 @@ packages: engines: { node: ">=12.20" } snapshots: + "@adobe/css-tools@4.4.0": {} + "@ampproject/remapping@2.3.0": dependencies: "@jridgewell/gen-mapping": 0.3.5 @@ -5086,6 +6008,10 @@ snapshots: "@babel/core": 7.26.0 "@babel/helper-plugin-utils": 7.25.9 + "@babel/runtime@7.26.0": + dependencies: + regenerator-runtime: 0.14.1 + "@babel/template@7.25.9": dependencies: "@babel/code-frame": 7.26.2 @@ -5109,6 +6035,19 @@ snapshots: "@babel/helper-string-parser": 7.25.9 "@babel/helper-validator-identifier": 7.25.9 + "@chromatic-com/storybook@3.2.2(react@18.3.1)(storybook@8.4.2(prettier@3.3.3))": + dependencies: + chromatic: 11.18.0 + filesize: 10.1.6 + jsonfile: 6.1.0 + react-confetti: 6.1.0(react@18.3.1) + storybook: 8.4.2(prettier@3.3.3) + strip-ansi: 7.1.0 + transitivePeerDependencies: + - "@chromatic-com/cypress" + - "@chromatic-com/playwright" + - react + "@commitlint/cli@19.5.0(@types/node@22.8.6)(typescript@5.6.3)": dependencies: "@commitlint/format": 19.5.0 @@ -5423,6 +6362,16 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 + "@joshwooding/vite-plugin-react-docgen-typescript@0.3.0(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.6))": + 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.10(@types/node@22.8.6) + optionalDependencies: + typescript: 5.6.3 + "@jridgewell/gen-mapping@0.3.5": dependencies: "@jridgewell/set-array": 1.2.1 @@ -5445,6 +6394,12 @@ snapshots: "@jridgewell/resolve-uri": 3.1.2 "@jridgewell/sourcemap-codec": 1.5.0 + "@mdx-js/react@3.1.0(@types/react@18.3.12)(react@18.3.1)": + dependencies: + "@types/mdx": 2.0.13 + "@types/react": 18.3.12 + react: 18.3.1 + "@nodelib/fs.scandir@2.1.5": dependencies: "@nodelib/fs.stat": 2.0.5 @@ -5462,6 +6417,14 @@ snapshots: "@pkgr/core@0.1.1": {} + "@rollup/pluginutils@5.1.3(rollup@4.24.3)": + dependencies: + "@types/estree": 1.0.6 + estree-walker: 2.0.2 + picomatch: 4.0.2 + optionalDependencies: + rollup: 4.24.3 + "@rollup/rollup-android-arm-eabi@4.24.3": optional: true @@ -5516,6 +6479,237 @@ snapshots: "@rollup/rollup-win32-x64-msvc@4.24.3": optional: true + "@storybook/addon-actions@8.4.2(storybook@8.4.2(prettier@3.3.3))": + dependencies: + "@storybook/global": 5.0.0 + "@types/uuid": 9.0.8 + dequal: 2.0.3 + polished: 4.3.1 + storybook: 8.4.2(prettier@3.3.3) + uuid: 9.0.1 + + "@storybook/addon-backgrounds@8.4.2(storybook@8.4.2(prettier@3.3.3))": + dependencies: + "@storybook/global": 5.0.0 + memoizerific: 1.11.3 + storybook: 8.4.2(prettier@3.3.3) + ts-dedent: 2.2.0 + + "@storybook/addon-controls@8.4.2(storybook@8.4.2(prettier@3.3.3))": + dependencies: + "@storybook/global": 5.0.0 + dequal: 2.0.3 + storybook: 8.4.2(prettier@3.3.3) + ts-dedent: 2.2.0 + + "@storybook/addon-docs@8.4.2(@types/react@18.3.12)(storybook@8.4.2(prettier@3.3.3))": + dependencies: + "@mdx-js/react": 3.1.0(@types/react@18.3.12)(react@18.3.1) + "@storybook/blocks": 8.4.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.2(prettier@3.3.3)) + "@storybook/csf-plugin": 8.4.2(storybook@8.4.2(prettier@3.3.3)) + "@storybook/react-dom-shim": 8.4.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.2(prettier@3.3.3)) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + storybook: 8.4.2(prettier@3.3.3) + ts-dedent: 2.2.0 + transitivePeerDependencies: + - "@types/react" + - webpack-sources + + "@storybook/addon-essentials@8.4.2(@types/react@18.3.12)(storybook@8.4.2(prettier@3.3.3))": + dependencies: + "@storybook/addon-actions": 8.4.2(storybook@8.4.2(prettier@3.3.3)) + "@storybook/addon-backgrounds": 8.4.2(storybook@8.4.2(prettier@3.3.3)) + "@storybook/addon-controls": 8.4.2(storybook@8.4.2(prettier@3.3.3)) + "@storybook/addon-docs": 8.4.2(@types/react@18.3.12)(storybook@8.4.2(prettier@3.3.3)) + "@storybook/addon-highlight": 8.4.2(storybook@8.4.2(prettier@3.3.3)) + "@storybook/addon-measure": 8.4.2(storybook@8.4.2(prettier@3.3.3)) + "@storybook/addon-outline": 8.4.2(storybook@8.4.2(prettier@3.3.3)) + "@storybook/addon-toolbars": 8.4.2(storybook@8.4.2(prettier@3.3.3)) + "@storybook/addon-viewport": 8.4.2(storybook@8.4.2(prettier@3.3.3)) + storybook: 8.4.2(prettier@3.3.3) + ts-dedent: 2.2.0 + transitivePeerDependencies: + - "@types/react" + - webpack-sources + + "@storybook/addon-highlight@8.4.2(storybook@8.4.2(prettier@3.3.3))": + dependencies: + "@storybook/global": 5.0.0 + storybook: 8.4.2(prettier@3.3.3) + + "@storybook/addon-interactions@8.4.2(storybook@8.4.2(prettier@3.3.3))": + dependencies: + "@storybook/global": 5.0.0 + "@storybook/instrumenter": 8.4.2(storybook@8.4.2(prettier@3.3.3)) + "@storybook/test": 8.4.2(storybook@8.4.2(prettier@3.3.3)) + polished: 4.3.1 + storybook: 8.4.2(prettier@3.3.3) + ts-dedent: 2.2.0 + + "@storybook/addon-measure@8.4.2(storybook@8.4.2(prettier@3.3.3))": + dependencies: + "@storybook/global": 5.0.0 + storybook: 8.4.2(prettier@3.3.3) + tiny-invariant: 1.3.3 + + "@storybook/addon-onboarding@8.4.2(react@18.3.1)(storybook@8.4.2(prettier@3.3.3))": + dependencies: + react-confetti: 6.1.0(react@18.3.1) + storybook: 8.4.2(prettier@3.3.3) + transitivePeerDependencies: + - react + + "@storybook/addon-outline@8.4.2(storybook@8.4.2(prettier@3.3.3))": + dependencies: + "@storybook/global": 5.0.0 + storybook: 8.4.2(prettier@3.3.3) + ts-dedent: 2.2.0 + + "@storybook/addon-toolbars@8.4.2(storybook@8.4.2(prettier@3.3.3))": + dependencies: + storybook: 8.4.2(prettier@3.3.3) + + "@storybook/addon-viewport@8.4.2(storybook@8.4.2(prettier@3.3.3))": + dependencies: + memoizerific: 1.11.3 + storybook: 8.4.2(prettier@3.3.3) + + "@storybook/blocks@8.4.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.2(prettier@3.3.3))": + dependencies: + "@storybook/csf": 0.1.11 + "@storybook/icons": 1.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + storybook: 8.4.2(prettier@3.3.3) + ts-dedent: 2.2.0 + optionalDependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + "@storybook/builder-vite@8.4.2(storybook@8.4.2(prettier@3.3.3))(vite@5.4.10(@types/node@22.8.6))": + dependencies: + "@storybook/csf-plugin": 8.4.2(storybook@8.4.2(prettier@3.3.3)) + browser-assert: 1.2.1 + storybook: 8.4.2(prettier@3.3.3) + ts-dedent: 2.2.0 + vite: 5.4.10(@types/node@22.8.6) + transitivePeerDependencies: + - webpack-sources + + "@storybook/components@8.4.2(storybook@8.4.2(prettier@3.3.3))": + dependencies: + storybook: 8.4.2(prettier@3.3.3) + + "@storybook/core@8.4.2(prettier@3.3.3)": + dependencies: + "@storybook/csf": 0.1.11 + better-opn: 3.0.2 + browser-assert: 1.2.1 + esbuild: 0.24.0 + esbuild-register: 3.6.0(esbuild@0.24.0) + jsdoc-type-pratt-parser: 4.1.0 + process: 0.11.10 + recast: 0.23.9 + semver: 7.6.3 + util: 0.12.5 + ws: 8.18.0 + optionalDependencies: + prettier: 3.3.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + "@storybook/csf-plugin@8.4.2(storybook@8.4.2(prettier@3.3.3))": + dependencies: + storybook: 8.4.2(prettier@3.3.3) + unplugin: 1.15.0 + transitivePeerDependencies: + - webpack-sources + + "@storybook/csf@0.1.11": + dependencies: + type-fest: 2.19.0 + + "@storybook/global@5.0.0": {} + + "@storybook/icons@1.2.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)": + dependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + "@storybook/instrumenter@8.4.2(storybook@8.4.2(prettier@3.3.3))": + dependencies: + "@storybook/global": 5.0.0 + "@vitest/utils": 2.1.4 + storybook: 8.4.2(prettier@3.3.3) + + "@storybook/manager-api@8.4.2(storybook@8.4.2(prettier@3.3.3))": + dependencies: + storybook: 8.4.2(prettier@3.3.3) + + "@storybook/preview-api@8.4.2(storybook@8.4.2(prettier@3.3.3))": + dependencies: + storybook: 8.4.2(prettier@3.3.3) + + "@storybook/react-dom-shim@8.4.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.2(prettier@3.3.3))": + dependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + storybook: 8.4.2(prettier@3.3.3) + + "@storybook/react-vite@8.4.2(@storybook/test@8.4.2(storybook@8.4.2(prettier@3.3.3)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.24.3)(storybook@8.4.2(prettier@3.3.3))(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.6))": + dependencies: + "@joshwooding/vite-plugin-react-docgen-typescript": 0.3.0(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.6)) + "@rollup/pluginutils": 5.1.3(rollup@4.24.3) + "@storybook/builder-vite": 8.4.2(storybook@8.4.2(prettier@3.3.3))(vite@5.4.10(@types/node@22.8.6)) + "@storybook/react": 8.4.2(@storybook/test@8.4.2(storybook@8.4.2(prettier@3.3.3)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.2(prettier@3.3.3))(typescript@5.6.3) + find-up: 5.0.0 + magic-string: 0.30.12 + react: 18.3.1 + react-docgen: 7.1.0 + react-dom: 18.3.1(react@18.3.1) + resolve: 1.22.8 + storybook: 8.4.2(prettier@3.3.3) + tsconfig-paths: 4.2.0 + vite: 5.4.10(@types/node@22.8.6) + transitivePeerDependencies: + - "@storybook/test" + - rollup + - supports-color + - typescript + - webpack-sources + + "@storybook/react@8.4.2(@storybook/test@8.4.2(storybook@8.4.2(prettier@3.3.3)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.2(prettier@3.3.3))(typescript@5.6.3)": + dependencies: + "@storybook/components": 8.4.2(storybook@8.4.2(prettier@3.3.3)) + "@storybook/global": 5.0.0 + "@storybook/manager-api": 8.4.2(storybook@8.4.2(prettier@3.3.3)) + "@storybook/preview-api": 8.4.2(storybook@8.4.2(prettier@3.3.3)) + "@storybook/react-dom-shim": 8.4.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.2(prettier@3.3.3)) + "@storybook/theming": 8.4.2(storybook@8.4.2(prettier@3.3.3)) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + storybook: 8.4.2(prettier@3.3.3) + optionalDependencies: + "@storybook/test": 8.4.2(storybook@8.4.2(prettier@3.3.3)) + typescript: 5.6.3 + + "@storybook/test@8.4.2(storybook@8.4.2(prettier@3.3.3))": + dependencies: + "@storybook/csf": 0.1.11 + "@storybook/global": 5.0.0 + "@storybook/instrumenter": 8.4.2(storybook@8.4.2(prettier@3.3.3)) + "@testing-library/dom": 10.4.0 + "@testing-library/jest-dom": 6.5.0 + "@testing-library/user-event": 14.5.2(@testing-library/dom@10.4.0) + "@vitest/expect": 2.0.5 + "@vitest/spy": 2.0.5 + storybook: 8.4.2(prettier@3.3.3) + + "@storybook/theming@8.4.2(storybook@8.4.2(prettier@3.3.3))": + dependencies: + storybook: 8.4.2(prettier@3.3.3) + "@swc/core-darwin-arm64@1.3.36": optional: true @@ -5560,6 +6754,31 @@ snapshots: "@swc/core-win32-x64-msvc": 1.3.36 optional: true + "@testing-library/dom@10.4.0": + dependencies: + "@babel/code-frame": 7.26.2 + "@babel/runtime": 7.26.0 + "@types/aria-query": 5.0.4 + aria-query: 5.3.0 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 + + "@testing-library/jest-dom@6.5.0": + dependencies: + "@adobe/css-tools": 4.4.0 + aria-query: 5.3.2 + 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/user-event@14.5.2(@testing-library/dom@10.4.0)": + dependencies: + "@testing-library/dom": 10.4.0 + "@tsconfig/node10@1.0.11": {} "@tsconfig/node12@1.0.11": {} @@ -5568,6 +6787,8 @@ snapshots: "@tsconfig/node16@1.0.4": {} + "@types/aria-query@5.0.4": {} + "@types/babel__core@7.20.5": dependencies: "@babel/parser": 7.26.2 @@ -5602,6 +6823,8 @@ snapshots: dependencies: "@types/node": 22.8.6 + "@types/doctrine@0.0.9": {} + "@types/estree@1.0.6": {} "@types/express-serve-static-core@5.0.1": @@ -5618,12 +6841,21 @@ snapshots: "@types/qs": 6.9.16 "@types/serve-static": 1.15.7 + "@types/glob@7.2.0": + dependencies: + "@types/minimatch": 5.1.2 + "@types/node": 22.8.6 + "@types/http-errors@2.0.4": {} "@types/json-schema@7.0.15": {} + "@types/mdx@2.0.13": {} + "@types/mime@1.3.5": {} + "@types/minimatch@5.1.2": {} + "@types/node@22.8.6": dependencies: undici-types: 6.19.8 @@ -5643,6 +6875,8 @@ snapshots: "@types/prop-types": 15.7.13 csstype: 3.1.3 + "@types/resolve@1.20.6": {} + "@types/send@0.17.4": dependencies: "@types/mime": 1.3.5 @@ -5658,6 +6892,8 @@ snapshots: "@types/strip-json-comments@0.0.30": {} + "@types/uuid@9.0.8": {} + "@typescript-eslint/eslint-plugin@8.12.2(@typescript-eslint/parser@8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3)": dependencies: "@eslint-community/regexpp": 4.12.1 @@ -5750,6 +6986,38 @@ snapshots: transitivePeerDependencies: - supports-color + "@vitest/expect@2.0.5": + dependencies: + "@vitest/spy": 2.0.5 + "@vitest/utils": 2.0.5 + chai: 5.1.2 + tinyrainbow: 1.2.0 + + "@vitest/pretty-format@2.0.5": + dependencies: + tinyrainbow: 1.2.0 + + "@vitest/pretty-format@2.1.4": + dependencies: + tinyrainbow: 1.2.0 + + "@vitest/spy@2.0.5": + dependencies: + tinyspy: 3.0.2 + + "@vitest/utils@2.0.5": + dependencies: + "@vitest/pretty-format": 2.0.5 + estree-walker: 3.0.3 + loupe: 3.1.2 + tinyrainbow: 1.2.0 + + "@vitest/utils@2.1.4": + dependencies: + "@vitest/pretty-format": 2.1.4 + loupe: 3.1.2 + tinyrainbow: 1.2.0 + JSONStream@1.3.5: dependencies: jsonparse: 1.3.1 @@ -5800,6 +7068,8 @@ snapshots: dependencies: color-convert: 2.0.1 + ansi-styles@5.2.0: {} + ansi-styles@6.2.1: {} any-promise@1.3.0: {} @@ -5813,6 +7083,12 @@ snapshots: argparse@2.0.1: {} + aria-query@5.3.0: + dependencies: + dequal: 2.0.3 + + aria-query@5.3.2: {} + array-buffer-byte-length@1.0.1: dependencies: call-bind: 1.0.7 @@ -5873,6 +7149,12 @@ snapshots: is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.3 + assertion-error@2.0.1: {} + + ast-types@0.16.1: + dependencies: + tslib: 2.8.1 + atomic-sleep@1.0.0: {} available-typed-arrays@1.0.7: @@ -5883,6 +7165,10 @@ snapshots: base64-js@1.5.1: {} + better-opn@3.0.2: + dependencies: + open: 8.4.2 + binary-extensions@2.3.0: {} body-parser@1.20.3: @@ -5915,6 +7201,8 @@ snapshots: dependencies: fill-range: 7.1.1 + browser-assert@1.2.1: {} + browserslist@4.24.2: dependencies: caniuse-lite: 1.0.30001677 @@ -5950,6 +7238,19 @@ snapshots: caniuse-lite@1.0.30001677: {} + chai@5.1.2: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.2 + pathval: 2.0.0 + + chalk@3.0.0: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 @@ -5957,6 +7258,8 @@ snapshots: chalk@5.3.0: {} + check-error@2.1.1: {} + chokidar@3.6.0: dependencies: anymatch: 3.1.3 @@ -5973,6 +7276,8 @@ snapshots: dependencies: readdirp: 4.0.2 + chromatic@11.18.0: {} + cli-cursor@5.0.0: dependencies: restore-cursor: 5.1.0 @@ -6064,6 +7369,8 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 + css.escape@1.5.1: {} + csstype@3.1.3: {} dargs@8.1.0: {} @@ -6096,6 +7403,8 @@ snapshots: dependencies: ms: 2.1.3 + deep-eql@5.0.2: {} + deep-is@0.1.4: {} define-data-property@1.1.4: @@ -6104,6 +7413,8 @@ snapshots: es-errors: 1.3.0 gopd: 1.0.1 + define-lazy-prop@2.0.0: {} + define-properties@1.2.1: dependencies: define-data-property: 1.1.4 @@ -6112,6 +7423,8 @@ snapshots: depd@2.0.0: {} + dequal@2.0.3: {} + destroy@1.2.0: {} diff@4.0.2: {} @@ -6120,6 +7433,14 @@ snapshots: dependencies: esutils: 2.0.3 + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + + dom-accessibility-api@0.5.16: {} + + dom-accessibility-api@0.6.3: {} + dot-prop@5.3.0: dependencies: is-obj: 2.0.0 @@ -6253,6 +7574,13 @@ snapshots: is-date-object: 1.0.5 is-symbol: 1.0.4 + esbuild-register@3.6.0(esbuild@0.24.0): + dependencies: + debug: 4.3.7 + esbuild: 0.24.0 + transitivePeerDependencies: + - supports-color + esbuild@0.21.5: optionalDependencies: "@esbuild/aix-ppc64": 0.21.5 @@ -6358,6 +7686,16 @@ snapshots: string.prototype.matchall: 4.0.11 string.prototype.repeat: 1.0.0 + eslint-plugin-storybook@0.11.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3): + dependencies: + "@storybook/csf": 0.1.11 + "@typescript-eslint/utils": 8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + eslint: 9.13.0(jiti@1.21.6) + ts-dedent: 2.2.0 + transitivePeerDependencies: + - supports-color + - typescript + eslint-plugin-turbo@2.2.3(eslint@9.13.0(jiti@1.21.6)): dependencies: dotenv: 16.0.3 @@ -6420,6 +7758,8 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.14.0) eslint-visitor-keys: 4.2.0 + esprima@4.0.1: {} + esquery@1.6.0: dependencies: estraverse: 5.3.0 @@ -6430,6 +7770,12 @@ snapshots: estraverse@5.3.0: {} + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + "@types/estree": 1.0.6 + esutils@2.0.3: {} etag@1.8.1: {} @@ -6524,6 +7870,8 @@ snapshots: dependencies: flat-cache: 4.0.1 + filesize@10.1.6: {} + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -6623,6 +7971,11 @@ snapshots: dependencies: is-glob: 4.0.3 + glob-promise@4.2.2(glob@7.2.3): + dependencies: + "@types/glob": 7.2.0 + glob: 7.2.3 + glob@10.4.5: dependencies: foreground-child: 3.3.0 @@ -6660,6 +8013,9 @@ snapshots: dependencies: get-intrinsic: 1.2.4 + graceful-fs@4.2.11: + optional: true + graphemer@1.4.0: {} has-bigints@1.0.2: {} @@ -6713,6 +8069,8 @@ snapshots: imurmurhash@0.1.4: {} + indent-string@4.0.0: {} + inflight@1.0.6: dependencies: once: 1.4.0 @@ -6730,6 +8088,11 @@ snapshots: ipaddr.js@1.9.1: {} + is-arguments@1.1.1: + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + is-array-buffer@3.0.4: dependencies: call-bind: 1.0.7 @@ -6768,6 +8131,8 @@ snapshots: dependencies: has-tostringtag: 1.0.2 + is-docker@2.2.1: {} + is-extglob@2.1.1: {} is-finalizationregistry@1.0.2: @@ -6842,6 +8207,10 @@ snapshots: call-bind: 1.0.7 get-intrinsic: 1.2.4 + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + isarray@2.0.5: {} isexe@2.0.0: {} @@ -6870,6 +8239,8 @@ snapshots: dependencies: argparse: 2.0.1 + jsdoc-type-pratt-parser@4.1.0: {} + jsesc@3.0.2: {} json-buffer@3.0.1: {} @@ -6884,6 +8255,12 @@ snapshots: json5@2.2.3: {} + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + jsonparse@1.3.1: {} jsx-ast-utils@3.3.5: @@ -6960,6 +8337,8 @@ snapshots: lodash.upperfirst@4.3.1: {} + lodash@4.17.21: {} + log-update@6.1.0: dependencies: ansi-escapes: 7.0.0 @@ -6972,16 +8351,34 @@ snapshots: dependencies: js-tokens: 4.0.0 + loupe@3.1.2: {} + lru-cache@10.4.3: {} lru-cache@5.1.1: dependencies: yallist: 3.1.1 + lz-string@1.5.0: {} + + magic-string@0.27.0: + dependencies: + "@jridgewell/sourcemap-codec": 1.5.0 + + magic-string@0.30.12: + dependencies: + "@jridgewell/sourcemap-codec": 1.5.0 + make-error@1.3.6: {} + map-or-similar@1.5.0: {} + media-typer@0.3.0: {} + memoizerific@1.11.3: + dependencies: + map-or-similar: 1.5.0 + meow@12.1.1: {} merge-descriptors@1.0.3: {} @@ -7009,6 +8406,8 @@ snapshots: mimic-function@5.0.1: {} + min-indent@1.0.1: {} + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 @@ -7097,6 +8496,12 @@ snapshots: dependencies: mimic-function: 5.0.1 + open@8.4.2: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -7156,6 +8561,8 @@ snapshots: path-to-regexp@0.1.10: {} + pathval@2.0.0: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -7203,6 +8610,10 @@ snapshots: pirates@4.0.6: {} + polished@4.3.1: + dependencies: + "@babel/runtime": 7.26.0 + possible-typed-array-names@1.0.0: {} postcss-load-config@6.0.1(jiti@1.21.6)(postcss@8.4.47)(yaml@2.5.1): @@ -7227,6 +8638,12 @@ snapshots: prettier@3.3.3: {} + pretty-format@27.5.1: + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + process-warning@4.0.0: {} process@0.11.10: {} @@ -7266,6 +8683,30 @@ snapshots: iconv-lite: 0.4.24 unpipe: 1.0.0 + react-confetti@6.1.0(react@18.3.1): + dependencies: + react: 18.3.1 + tween-functions: 1.2.0 + + react-docgen-typescript@2.2.2(typescript@5.6.3): + dependencies: + typescript: 5.6.3 + + react-docgen@7.1.0: + dependencies: + "@babel/core": 7.26.0 + "@babel/traverse": 7.25.9 + "@babel/types": 7.26.0 + "@types/babel__core": 7.20.5 + "@types/babel__traverse": 7.20.6 + "@types/doctrine": 0.0.9 + "@types/resolve": 1.20.6 + doctrine: 3.0.0 + resolve: 1.22.8 + strip-indent: 4.0.0 + transitivePeerDependencies: + - supports-color + react-dom@18.3.1(react@18.3.1): dependencies: loose-envify: 1.4.0 @@ -7278,6 +8719,8 @@ snapshots: react-is@16.13.1: {} + react-is@17.0.2: {} + react-refresh@0.14.2: {} react@18.3.1: @@ -7300,6 +8743,19 @@ snapshots: real-require@0.2.0: {} + recast@0.23.9: + dependencies: + ast-types: 0.16.1 + esprima: 4.0.1 + source-map: 0.6.1 + tiny-invariant: 1.3.3 + tslib: 2.8.1 + + redent@3.0.0: + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + reflect.getprototypeof@1.0.6: dependencies: call-bind: 1.0.7 @@ -7310,6 +8766,8 @@ snapshots: globalthis: 1.0.4 which-builtin-type: 1.1.4 + regenerator-runtime@0.14.1: {} + regexp.prototype.flags@1.5.3: dependencies: call-bind: 1.0.7 @@ -7498,6 +8956,16 @@ snapshots: statuses@2.0.1: {} + storybook@8.4.2(prettier@3.3.3): + dependencies: + "@storybook/core": 8.4.2(prettier@3.3.3) + optionalDependencies: + prettier: 3.3.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + string-argv@0.3.2: {} string-width@4.2.3: @@ -7573,6 +9041,14 @@ snapshots: strip-final-newline@3.0.0: {} + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 + + strip-indent@4.0.0: + dependencies: + min-indent: 1.0.1 + strip-json-comments@2.0.1: {} strip-json-comments@3.1.1: {} @@ -7616,6 +9092,8 @@ snapshots: through@2.3.8: {} + tiny-invariant@1.3.3: {} + tinyexec@0.3.1: {} tinyglobby@0.2.10: @@ -7623,6 +9101,10 @@ snapshots: fdir: 6.4.2(picomatch@4.0.2) picomatch: 4.0.2 + tinyrainbow@1.2.0: {} + + tinyspy@3.0.2: {} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -7639,6 +9121,8 @@ snapshots: dependencies: typescript: 5.6.3 + ts-dedent@2.2.0: {} + ts-interface-checker@0.1.13: {} ts-node-dev@2.0.0(@swc/core@1.3.36)(@types/node@22.8.6)(typescript@5.6.3): @@ -7679,6 +9163,12 @@ snapshots: optionalDependencies: "@swc/core": 1.3.36 + tsconfig-paths@4.2.0: + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + tsconfig@7.0.0: dependencies: "@types/strip-bom": 3.0.0 @@ -7743,10 +9233,14 @@ snapshots: turbo-windows-64: 2.2.3 turbo-windows-arm64: 2.2.3 + tween-functions@1.2.0: {} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 + type-fest@2.19.0: {} + type-is@1.6.18: dependencies: media-typer: 0.3.0 @@ -7797,8 +9291,15 @@ snapshots: unicorn-magic@0.1.0: {} + universalify@2.0.1: {} + unpipe@1.0.0: {} + unplugin@1.15.0: + dependencies: + acorn: 8.14.0 + webpack-virtual-modules: 0.6.2 + update-browserslist-db@1.1.1(browserslist@4.24.2): dependencies: browserslist: 4.24.2 @@ -7809,8 +9310,18 @@ snapshots: dependencies: punycode: 2.3.1 + util@0.12.5: + dependencies: + inherits: 2.0.4 + is-arguments: 1.1.1 + is-generator-function: 1.0.10 + is-typed-array: 1.1.13 + which-typed-array: 1.1.15 + utils-merge@1.0.1: {} + uuid@9.0.1: {} + v8-compile-cache-lib@3.0.1: {} vary@1.1.2: {} @@ -7826,6 +9337,8 @@ snapshots: webidl-conversions@4.0.2: {} + webpack-virtual-modules@0.6.2: {} + whatwg-url@7.1.0: dependencies: lodash.sortby: 4.7.0 @@ -7896,6 +9409,8 @@ snapshots: wrappy@1.0.2: {} + ws@8.18.0: {} + xtend@4.0.2: {} y18n@5.0.8: {} diff --git a/turbo.json b/turbo.json index bf71daa..51532f9 100644 --- a/turbo.json +++ b/turbo.json @@ -10,6 +10,14 @@ "dev": { "cache": false, "persistent": true + }, + "storybook": { + "dependsOn": ["^build"], + "outputs": ["dist/storybook"] + }, + "build-storybook": { + "dependsOn": ["^build"], + "outputs": ["dist/storybook"] } } }