From c9f9d581808d812ae87429b5ca539d4f218ab8df Mon Sep 17 00:00:00 2001 From: Arno V Date: Tue, 17 Dec 2024 09:42:02 -0500 Subject: [PATCH] docs: migrating from Ladle to StoryBook for API documentation (#748) ## Summary by CodeRabbit ## Release Notes - **New Features** - Introduced new documentation pages for "Installation", "Configuration", "Overview", "Release Tags", "Usage", and "Changelogs" to enhance user guidance. - Added new components for navigation and code highlighting to improve the usability of documentation. - Integrated Tailwind CSS into the Storybook setup for better styling options. - New Storybook configurations for `Button` and `ButtonIcon` components to facilitate visual testing. - **Bug Fixes** - Adjusted build processes to exclude the `@versini/api` package from various workflows, streamlining operations. - **Chores** - Updated configuration files for TypeScript, Vite, PostCSS, and Tailwind CSS to enhance development experience and integration. - Added `.gitignore` entry for log files generated by Storybook. --- .github/workflows/deploy-pages.yml | 6 +- .github/workflows/pull-requests.yml | 10 +- .github/workflows/release-please.yml | 2 +- .gitignore | 2 + examples/with-vite/package.json | 2 +- packages/api/.storybook/main.js | 34 + packages/api/.storybook/preview.js | 31 + packages/api/.storybook/styles.css | 3 + packages/api/nodemon.json | 33 + packages/api/package.json | 43 + packages/api/postcss.config.js | 6 + .../api/src/getting-started/Changelogs.mdx | 59 ++ .../api/src/getting-started/Configuration.mdx | 40 + .../api/src/getting-started/Installation.mdx | 65 ++ packages/api/src/getting-started/Overview.mdx | 78 ++ .../api/src/getting-started/ReleaseTags.mdx | 101 ++ packages/api/src/getting-started/Usage.mdx | 35 + .../src/getting-started/helpers/Highlight.tsx | 26 + .../getting-started/helpers/Navigators.tsx | 65 ++ .../api/src/getting-started/helpers/Table.tsx | 37 + .../src/getting-started/helpers/codeBlocks.ts | 55 ++ .../src/getting-started/helpers/tableData.ts | 23 + packages/api/src/stories/Button.stories.tsx | 39 + .../api/src/stories/ButtonIcon.stories.tsx | 21 + packages/api/src/stories/assets/hero-14.jpg | Bin 0 -> 132749 bytes packages/api/src/vite-env.d.ts | 1 + packages/api/tailwind.config.js | 7 + packages/api/tsconfig.json | 25 + packages/api/tsconfig.node.json | 11 + packages/api/vite.config.ts | 7 + .../with-vite/src/stories/Button.stories.tsx | 39 + .../src/stories/ButtonIcon.stories.tsx | 21 + pnpm-lock.yaml | 867 +++++++++++++++++- 33 files changed, 1779 insertions(+), 15 deletions(-) create mode 100644 packages/api/.storybook/main.js create mode 100644 packages/api/.storybook/preview.js create mode 100644 packages/api/.storybook/styles.css create mode 100644 packages/api/nodemon.json create mode 100644 packages/api/package.json create mode 100644 packages/api/postcss.config.js create mode 100644 packages/api/src/getting-started/Changelogs.mdx create mode 100644 packages/api/src/getting-started/Configuration.mdx create mode 100644 packages/api/src/getting-started/Installation.mdx create mode 100644 packages/api/src/getting-started/Overview.mdx create mode 100644 packages/api/src/getting-started/ReleaseTags.mdx create mode 100644 packages/api/src/getting-started/Usage.mdx create mode 100644 packages/api/src/getting-started/helpers/Highlight.tsx create mode 100644 packages/api/src/getting-started/helpers/Navigators.tsx create mode 100644 packages/api/src/getting-started/helpers/Table.tsx create mode 100644 packages/api/src/getting-started/helpers/codeBlocks.ts create mode 100644 packages/api/src/getting-started/helpers/tableData.ts create mode 100644 packages/api/src/stories/Button.stories.tsx create mode 100644 packages/api/src/stories/ButtonIcon.stories.tsx create mode 100644 packages/api/src/stories/assets/hero-14.jpg create mode 100644 packages/api/src/vite-env.d.ts create mode 100644 packages/api/tailwind.config.js create mode 100644 packages/api/tsconfig.json create mode 100644 packages/api/tsconfig.node.json create mode 100644 packages/api/vite.config.ts create mode 100644 packages/with-vite/src/stories/Button.stories.tsx create mode 100644 packages/with-vite/src/stories/ButtonIcon.stories.tsx diff --git a/.github/workflows/deploy-pages.yml b/.github/workflows/deploy-pages.yml index f1564090..dd4eba7c 100644 --- a/.github/workflows/deploy-pages.yml +++ b/.github/workflows/deploy-pages.yml @@ -45,8 +45,8 @@ jobs: - name: Build packages and documentation run: | npx lerna run build --scope="@versini/ui-styles" - npx lerna run build --ignore="@versini/example-*" --ignore="@versini/documentation" --ignore="@versini/bundlesize" --ignore="@versini/ui-styles" - npx lerna run build:ci --scope="@versini/documentation" + npx lerna run build --ignore="@versini/example-*" --ignore="@versini/documentation" --ignore="@versini/api" --ignore="@versini/bundlesize" --ignore="@versini/ui-styles" + npx lerna run build --scope="@versini/api" - name: Setup Pages if: ${{ always() }} @@ -56,7 +56,7 @@ jobs: if: ${{ always() }} uses: actions/upload-pages-artifact@v3 with: - path: "./packages/documentation/dist" + path: "./packages/api/dist" - name: Deploy to GitHub Pages if: ${{ always() }} diff --git a/.github/workflows/pull-requests.yml b/.github/workflows/pull-requests.yml index e55a2c31..d10f5225 100644 --- a/.github/workflows/pull-requests.yml +++ b/.github/workflows/pull-requests.yml @@ -35,7 +35,7 @@ jobs: - name: Build packages run: | npx lerna run build --scope="@versini/ui-styles" - npx lerna run build --ignore="@versini/example-*" --ignore="@versini/documentation" --ignore="@versini/ui-styles" + npx lerna run build --ignore="@versini/example-*" --ignore="@versini/documentation" --ignore="@versini/api" --ignore="@versini/ui-styles" - name: Run Bundle Size run: | @@ -79,10 +79,10 @@ jobs: - name: Run Lint and Coverage run: | - npx lerna run lint --ignore="@versini/documentation" + npx lerna run lint --ignore="@versini/documentation" --ignore="@versini/api" npx lerna run build --scope="@versini/ui-styles" - npx lerna run build --ignore="@versini/documentation" --ignore="@versini/ui-styles" - npx lerna run test:coverage --ignore="@versini/documentation" + npx lerna run build --ignore="@versini/documentation" --ignore="@versini/api" --ignore="@versini/ui-styles" + npx lerna run test:coverage --ignore="@versini/documentation" --ignore="@versini/api" release-bundlesize: if: github.head_ref == 'release-please--branches--main' @@ -126,7 +126,7 @@ jobs: - name: Run Bundle Size For Release PR run: | npx lerna run build --scope="@versini/ui-styles" - npx lerna run build --ignore="@versini/example-*" --ignore="@versini/documentation" --ignore="@versini/ui-styles" + npx lerna run build --ignore="@versini/example-*" --ignore="@versini/documentation" --ignore="@versini/api" --ignore="@versini/ui-styles" npx lerna run stats:release - name: Commit Release Stats to Release PR diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index b6ea21a8..7be1ece0 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -41,7 +41,7 @@ jobs: if: ${{ steps.release.outputs.releases_created }} run: | npx lerna run build --scope="@versini/ui-styles" - npx lerna run build --ignore="@versini/example-*" --ignore="@versini/documentation" --ignore="@versini/bundlesize" --ignore="@versini/ui-styles" + npx lerna run build --ignore="@versini/example-*" --ignore="@versini/documentation" --ignore="@versini/api" --ignore="@versini/bundlesize" --ignore="@versini/ui-styles" # Release Please has already incremented versions # and published tags, so we just need to publish diff --git a/.gitignore b/.gitignore index c325efab..4d2fc0c7 100644 --- a/.gitignore +++ b/.gitignore @@ -75,3 +75,5 @@ types !.yarn/releases !.yarn/sdks !.yarn/versions + +*storybook.log diff --git a/examples/with-vite/package.json b/examples/with-vite/package.json index 08984e7e..71c3fe1f 100644 --- a/examples/with-vite/package.json +++ b/examples/with-vite/package.json @@ -21,10 +21,10 @@ "@versini/ui-main": "workspace:../../packages/ui-main", "@versini/ui-menu": "workspace:../../packages/ui-menu", "@versini/ui-panel": "workspace:../../packages/ui-panel", - "@versini/ui-textinput": "workspace:../../packages/ui-textinput", "@versini/ui-styles": "workspace:../../packages/ui-styles", "@versini/ui-system": "workspace:../../packages/ui-system", "@versini/ui-table": "workspace:../../packages/ui-table", + "@versini/ui-textinput": "workspace:../../packages/ui-textinput", "react": "18.3.1", "react-dom": "18.3.1" } diff --git a/packages/api/.storybook/main.js b/packages/api/.storybook/main.js new file mode 100644 index 00000000..d901734e --- /dev/null +++ b/packages/api/.storybook/main.js @@ -0,0 +1,34 @@ +/** @type { import('@storybook/react-vite').StorybookConfig } */ + +const config = { + stories: ["../src/**/*.mdx", "../src/**/*.stories.@(js|jsx|mjs|ts|tsx)"], + addons: [ + { + name: "@storybook/addon-essentials", + }, + "@storybook/addon-links", + ], + framework: { + name: "@storybook/react-vite", + options: {}, + }, + docs: { + // autodocs: true, + }, + typescript: { + reactDocgen: "react-docgen-typescript", + reactDocgenTypescriptOptions: { + tsconfigPath: "./tsconfig.json", + propFilter: (prop) => { + const res = + /@versini/.test(prop.parent?.fileName) || + !/node_modules/.test(prop.parent?.fileName); + return prop.parent ? res : true; + }, + shouldExtractLiteralValuesFromEnum: true, + savePropValueAsString: true, + shouldRemoveUndefinedFromOptional: true, + }, + }, +}; +export default config; diff --git a/packages/api/.storybook/preview.js b/packages/api/.storybook/preview.js new file mode 100644 index 00000000..0f079e7a --- /dev/null +++ b/packages/api/.storybook/preview.js @@ -0,0 +1,31 @@ +/** @type { import('@storybook/react').Preview } */ +import "./styles.css"; +import "@versini/ui-button/dist/style.css"; +import "@versini/ui-pill/dist/style.css"; + +const preview = { + parameters: { + options: { + storySort: { + order: [ + "Overview", + "Installation", + "Configuration", + "Usage", + "Release Tags", + "Components", + ], + }, + }, + controls: { + // show description and default values in the individual stories (basic, etc.) + expanded: true, + matchers: { + color: /(background|color)$/i, + date: /Date$/i, + }, + }, + }, +}; + +export default preview; diff --git a/packages/api/.storybook/styles.css b/packages/api/.storybook/styles.css new file mode 100644 index 00000000..b5c61c95 --- /dev/null +++ b/packages/api/.storybook/styles.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; diff --git a/packages/api/nodemon.json b/packages/api/nodemon.json new file mode 100644 index 00000000..51bc4dca --- /dev/null +++ b/packages/api/nodemon.json @@ -0,0 +1,33 @@ +{ + "watch": [ + "tailwind.config.js", + ".storybook/*.*", + + "../ui-styles/src/**/*.*", + "../ui-fingerprint/src/**/*.*", + "../ui-icons/src/**/*.*", + "../ui-system/src/**/*.*", + + "../ui-anchor/src/**/*.*", + "../ui-bubble/src/**/*.*", + "../ui-button/src/**/*.*", + "../ui-card/src/**/*.*", + "../ui-footer/src/**/*.*", + "../ui-header/src/**/*.*", + "../ui-hooks/src/**/*.*", + "../ui-icons/src/**/*.*", + "../ui-main/src/**/*.*", + "../ui-menu/src/**/*.*", + "../ui-panel/src/**/*.*", + "../ui-pill/src/**/*.*", + "../ui-private/src/**/*.*", + "../ui-spinner/src/**/*.*", + "../ui-system/src/**/*.*", + "../ui-table/src/**/*.*", + "../ui-textarea/src/**/*.*", + "../ui-textinput/src/**/*.*", + "../ui-toggle/src/**/*.*", + "../ui-togglegroup/src/**/*.*", + "../ui-truncate/src/**/*.*" + ] +} diff --git a/packages/api/package.json b/packages/api/package.json new file mode 100644 index 00000000..7139bc3d --- /dev/null +++ b/packages/api/package.json @@ -0,0 +1,43 @@ +{ + "name": "@versini/api", + "version": "0.0.0", + "license": "MIT", + "author": "Arno Versini", + "private": true, + "scripts": { + "clean": "rimraf dist", + "dev": "nodemon", + "build": "tsc && storybook build --disable-telemetry --output-dir dist", + "lint": "biome lint src", + "start": "storybook dev -p 6006 --no-open --disable-telemetry" + }, + "dependencies": { + "@versini/ui-anchor": "workspace:../../packages/ui-anchor", + "@versini/ui-button": "workspace:../../packages/ui-button", + "@versini/ui-card": "workspace:../../packages/ui-card", + "@versini/ui-footer": "workspace:../../packages/ui-footer", + "@versini/ui-form": "workspace:../../packages/ui-form", + "@versini/ui-header": "workspace:../../packages/ui-header", + "@versini/ui-icons": "workspace:../../packages/ui-icons", + "@versini/ui-main": "workspace:../../packages/ui-main", + "@versini/ui-menu": "workspace:../../packages/ui-menu", + "@versini/ui-pill": "workspace:../../packages/ui-pill", + "@versini/ui-panel": "workspace:../../packages/ui-panel", + "@versini/ui-styles": "workspace:../../packages/ui-styles", + "@versini/ui-system": "workspace:../../packages/ui-system", + "@versini/ui-table": "workspace:../../packages/ui-table", + "@versini/ui-textinput": "workspace:../../packages/ui-textinput", + "react": "18.3.1", + "react-dom": "18.3.1" + }, + "devDependencies": { + "@storybook/addon-essentials": "8.4.7", + "@storybook/blocks": "8.4.7", + "@storybook/addon-links": "8.4.7", + "@storybook/react": "8.4.7", + "@storybook/react-vite": "8.4.7", + "@storybook/test": "8.4.7", + "prop-types": "15.8.1", + "storybook": "8.4.7" + } +} diff --git a/packages/api/postcss.config.js b/packages/api/postcss.config.js new file mode 100644 index 00000000..7b75c83a --- /dev/null +++ b/packages/api/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; diff --git a/packages/api/src/getting-started/Changelogs.mdx b/packages/api/src/getting-started/Changelogs.mdx new file mode 100644 index 00000000..7a8de1f9 --- /dev/null +++ b/packages/api/src/getting-started/Changelogs.mdx @@ -0,0 +1,59 @@ +import { Meta, Markdown, Unstyled } from "@storybook/blocks"; +import { Card } from "@versini/ui-card"; + +import Navigators from "./helpers/Navigators"; +import ComponentsChangelog from "../../../ui-components/CHANGELOG.md?raw"; +import StylesChangelog from "../../../ui-styles/CHANGELOG.md?raw"; +import FormComponentsChangelog from "../../../ui-form/CHANGELOG.md?raw"; +import IconsChangelog from "../../../ui-icons/CHANGELOG.md?raw"; +import SystemChangelog from "../../../ui-system/CHANGELOG.md?raw"; + + + +
+

Changelogs

+ + +
+ + +
+ Components + + {ComponentsChangelog} + +
+ +
+ Styles + + {StylesChangelog} + +
+ +
+ Form Components + + {FormComponentsChangelog} + +
+ +
+ Icons + + {IconsChangelog} + +
+ +
+ System + + {SystemChangelog} + +
+ + +
+ + +
diff --git a/packages/api/src/getting-started/Configuration.mdx b/packages/api/src/getting-started/Configuration.mdx new file mode 100644 index 00000000..8caf7198 --- /dev/null +++ b/packages/api/src/getting-started/Configuration.mdx @@ -0,0 +1,40 @@ +import { Meta } from "@storybook/blocks"; + +import Navigators from "./helpers/Navigators"; +import Highlight from "./helpers/Highlight"; +import codeBlocks from "./helpers/codeBlocks"; + + + +
+

Configuration

+

JavaScript

+
    +
  • +

    UI Components come un-bundled, which means you need to use a bundler + such as Webpack, Vite or Rollup to bundle components into your + application.

    +
  • +
  • +

    UI Components are tree-shakeable, side-effect free and each component style is self-contained.

    +
  • +
  • +

    Please refer to each component API documentation (under the Components or Form components menu) to see how they should be imported, what their individual props are as well as many different examples.

    +
  • +
+ +

CSS

+ +

TailwindCSS is required to style the components within the{" "} + UI-Components library. Thanks to our TailwindCSS plugin, + you can take advantage of tree-shaking unused styles:

+
+ +
+ + + +
diff --git a/packages/api/src/getting-started/Installation.mdx b/packages/api/src/getting-started/Installation.mdx new file mode 100644 index 00000000..6bb970d3 --- /dev/null +++ b/packages/api/src/getting-started/Installation.mdx @@ -0,0 +1,65 @@ +import { Meta } from "@storybook/blocks"; +import { linkTo } from "@storybook/addon-links"; +import { ButtonIcon } from "@versini/ui-button"; +import { IconNext, IconPrevious } from "@versini/ui-icons"; +import { Flexgrid, FlexgridItem } from "@versini/ui-system"; + +import Highlight from "./helpers/Highlight"; +import Navigators from "./helpers/Navigators"; +import Table from "./helpers/Table"; +import codeBlocks from "./helpers/codeBlocks"; +import tableData from "./helpers/tableData"; + + + +
+ +

Installation

+

+ The UI-Components library is available as multiple npm + packages. The library has been split into multiple packages to make it + easier to manage and to reduce the size of the final bundle. Most are + individual components such as Button, Card, and Spinner. Other "specialty" + packages have been created to handle styles, system and icons: +

+
+ + +

+ NOTE: each package content is detailed in this + documentation. You can find them in the navigation bar. +

+

Example

+

+ If you only need some core components such as Button and Card, and of + course the CSS styles associated1, use the following command: +

+ + +

+ You also need to install React and React-DOM (at least 18.0.0 or above). +

+ + + +

+ + 1 + For more information about how CSS styles are handled, please check the + Styles section in the navigation bar. + +

+ + + + diff --git a/packages/api/src/getting-started/Overview.mdx b/packages/api/src/getting-started/Overview.mdx new file mode 100644 index 00000000..a4ecd1d8 --- /dev/null +++ b/packages/api/src/getting-started/Overview.mdx @@ -0,0 +1,78 @@ +import { Meta, Unstyled } from "@storybook/blocks"; +import { ButtonIcon } from "@versini/ui-button"; +import { IconNext } from "@versini/ui-icons"; +import { Flexgrid, FlexgridItem } from "@versini/ui-system"; +import { linkTo } from "@storybook/addon-links"; + +import Hero from "../stories/assets/Hero-14.jpg"; +import Navigators from "./helpers/Navigators"; + + + +
+

UI Components

+ +
+
+
+ An illustration of web page rendered on both desktop and mobile devices +
+
+
The UI Components Library provides a strong, responsive, and accessible set of foundational React components.
+ +
+ +
+
+ + +
+ + + + +

Features

+ +
    +
  • + Strong: built-in components typing via TypeScript. +
  • +
  • + Responsive: built-in responsive components. +
  • +
  • + Accessible: built with accessibility in mind from + the start. +
  • +
+
+ +

Extra

+ +
    +
  • + TailwindCSS: built with TailwindCSS, enabling + styles tree-shaking. +
  • +
  • + Hooks: provides a set of hooks to use in your + application. +
  • +
  • + Icons: provides a set of icons to use in your + application. +
  • +
  • + Theming: provides a theming system to customize the + look of the components. +
  • +
+
+ +
+ +
diff --git a/packages/api/src/getting-started/ReleaseTags.mdx b/packages/api/src/getting-started/ReleaseTags.mdx new file mode 100644 index 00000000..3faaf59b --- /dev/null +++ b/packages/api/src/getting-started/ReleaseTags.mdx @@ -0,0 +1,101 @@ +import { Meta } from "@storybook/blocks"; +import { Pill } from "@versini/ui-pill"; +import { Flexgrid, FlexgridItem } from "@versini/ui-system"; + +import Navigators from "./helpers/Navigators"; +import Highlight from "./helpers/Highlight"; +import codeBlocks from "./helpers/codeBlocks"; + + + +
+

Release Tags

+

+ UI components are being made available for consumption as soon as they + meet our minimum viable requirements. However, during that phase, we + reserve the right to modify their API or to change their look and feel. To + help consuming partners, we are applying tags per components: alpha, then + beta and finally stable. +

+ +

+ NOTE: component stage is indicated by a little "pill" + located to the right of the component title. +

+ + + +

Alpha

+
+ + + +
+
    +
  • + Alpha components are in the early stages of + development. +
  • +
  • + Alpha components cannot be deployed to + production. +
  • +
  • + Alpha components API is subject to change. +
  • +
+ + + +

Beta

+
+ + + +
+
    +
  • + Beta components can be deployed to production. +
  • +
  • + Beta components API is locked and will not change. +
  • +
  • + Beta components have no known functionality issues. +
  • +
  • + Beta components are not 100% covered by unit tests and + may have minor visual or accessibility related issues. +
  • +
+ + + +

Stable

+
+ + + +
+
    +
  • + Stable components can be deployed to + production. +
  • +
  • + Stable components API is locked and will not change. +
  • +
  • + Stable components are fully tested. +
  • +
  • + Stable components have no known visual, functional or + accessibility related issues. +
  • +
+ +
+ +
+ +
diff --git a/packages/api/src/getting-started/Usage.mdx b/packages/api/src/getting-started/Usage.mdx new file mode 100644 index 00000000..bf5a4490 --- /dev/null +++ b/packages/api/src/getting-started/Usage.mdx @@ -0,0 +1,35 @@ +import { Meta } from "@storybook/blocks"; +import { Button, ButtonIcon } from "@versini/ui-button"; +import { Card } from "@versini/ui-card"; + +import Navigators from "./helpers/Navigators"; +import Highlight from "./helpers/Highlight"; +import codeBlocks from "./helpers/codeBlocks"; + + + +
+

Usage

+

Example

+ +

+ {"If everything works well, this is what you should see in your page:"} +

+ + Hooray + + } + > +

Hello World

+
+ + + +
diff --git a/packages/api/src/getting-started/helpers/Highlight.tsx b/packages/api/src/getting-started/helpers/Highlight.tsx new file mode 100644 index 00000000..0ea6f7bd --- /dev/null +++ b/packages/api/src/getting-started/helpers/Highlight.tsx @@ -0,0 +1,26 @@ +import { Unstyled } from "@storybook/blocks"; +import { Highlight, Prism, themes } from "prism-react-renderer"; + +(typeof global !== "undefined" ? global : window).Prism = Prism; +await import("prismjs/components/prism-bash" as string); + +export default ({ + codeBlock, + language = "jsx", +}: { codeBlock: string; language: string }) => ( + + + {({ style, tokens, getLineProps, getTokenProps }) => ( +
+					{tokens.map((line, i) => (
+						
+ {line.map((token, key) => ( + + ))} +
+ ))} +
+ )} +
+
+); diff --git a/packages/api/src/getting-started/helpers/Navigators.tsx b/packages/api/src/getting-started/helpers/Navigators.tsx new file mode 100644 index 00000000..9c68c6b1 --- /dev/null +++ b/packages/api/src/getting-started/helpers/Navigators.tsx @@ -0,0 +1,65 @@ +import { linkTo } from "@storybook/addon-links"; +import { ButtonIcon } from "@versini/ui-button"; +import { IconNext, IconPrevious } from "@versini/ui-icons"; +import { Flexgrid, FlexgridItem } from "@versini/ui-system"; + +interface NavigatorsProps { + leftLink?: string; + leftLabel?: string; + rightLink?: string; + rightLabel?: string; + paddingTop?: boolean; +} + +export default ({ + leftLink, + leftLabel, + rightLink, + rightLabel, + paddingTop = false, +}: NavigatorsProps) => { + let mainAlign: + | "flex-end" + | "space-between" + | "flex-start" + | "normal" + | "center" + | "space-around" + | "space-evenly" + | undefined = "flex-end"; + + if (leftLink && rightLink) { + mainAlign = "space-between"; + } else if (leftLink) { + mainAlign = "flex-start"; + } + + return ( + <> + {paddingTop &&
} + + {leftLink && ( + + + + + + )} + + {rightLink && ( + + + + + + )} + + + ); +}; diff --git a/packages/api/src/getting-started/helpers/Table.tsx b/packages/api/src/getting-started/helpers/Table.tsx new file mode 100644 index 00000000..58df9f3c --- /dev/null +++ b/packages/api/src/getting-started/helpers/Table.tsx @@ -0,0 +1,37 @@ +import { + Table, + TableBody, + TableCell, + TableHead, + TableRow, +} from "@versini/ui-table"; + +interface TableProps { + column1: string; + column2: string; + data: { id: string; name: string; description: string }[]; +} + +export default ({ column1, column2, data }: TableProps) => ( +
+ + + {column1} + {column2} + + + + + {data.map((row, idx) => { + return ( + + + {row.name} + + {row.description} + + ); + })} + +
+); diff --git a/packages/api/src/getting-started/helpers/codeBlocks.ts b/packages/api/src/getting-started/helpers/codeBlocks.ts new file mode 100644 index 00000000..a2ccdf33 --- /dev/null +++ b/packages/api/src/getting-started/helpers/codeBlocks.ts @@ -0,0 +1,55 @@ +export default { + install: { + language: "bash", + code: `$ npm install --save @versini/ui-button +$ npm install --save @versini/ui-card + +$ npm install --save-dev @versini/ui-styles`, + }, + + installReact: { + language: "bash", + code: `$ npm install --save react react-dom`, + }, + + config: { + language: "jsx", + code: `// tailwind.config.js + +import { twPlugin } from "@versini/ui-styles"; + +export default twPlugin.merge({ + // this is an example, you can change the path to your files + content: ["./src/**/*.{js,ts,jsx,tsx}"], +});`, + }, + + usage: { + language: "jsx", + code: `// App.tsx + +import { Button } from "@versini/ui-button"; +import { Card } from "@versini/ui-card"; + +/** + * Now that the required components are + * available in the scope, you can use them + * in your return method in JSX: + */ +function App() { + return ( + + Hooray + + } + > +

Hello World

+
+ ); +}`, + }, +}; diff --git a/packages/api/src/getting-started/helpers/tableData.ts b/packages/api/src/getting-started/helpers/tableData.ts new file mode 100644 index 00000000..d0ac77d7 --- /dev/null +++ b/packages/api/src/getting-started/helpers/tableData.ts @@ -0,0 +1,23 @@ +export default { + installation: { + data: [ + { + id: 1, + name: "@versini/ui-styles", + description: + "Required package to handle styles via TailwindCSS, including Typography.", + }, + { + id: 2, + name: "@versini/ui-icons", + description: "All the icons used in the UI-Components library.", + }, + { + id: 3, + name: "@versini/ui-system", + description: + "System level components such as Flexgrid and ThemeProvider.", + }, + ], + }, +}; diff --git a/packages/api/src/stories/Button.stories.tsx b/packages/api/src/stories/Button.stories.tsx new file mode 100644 index 00000000..647d8464 --- /dev/null +++ b/packages/api/src/stories/Button.stories.tsx @@ -0,0 +1,39 @@ +import type { Meta } from "@storybook/react"; +import { fn } from "@storybook/test"; + +import { Button } from "@versini/ui-button/src/components"; + +const meta: Meta = { + parameters: { + layout: "centered", + }, + title: "Components/Button", + component: Button, + args: { children: "Button", onClick: fn() }, +}; + +export default meta; +export const Basic = (args: React.ComponentProps) => ( +
+ + + +
+); + +export const Truncate = (args: React.ComponentProps) => { + args.className = "w-44 sm:w-52"; + return ( + <> +

For text to truncate, you need to limit the width of the buttons.

+

This can be done by using Tailwind width classes, for example

+ className={args.className} + +
+ + + +
+ + ); +}; diff --git a/packages/api/src/stories/ButtonIcon.stories.tsx b/packages/api/src/stories/ButtonIcon.stories.tsx new file mode 100644 index 00000000..262af01d --- /dev/null +++ b/packages/api/src/stories/ButtonIcon.stories.tsx @@ -0,0 +1,21 @@ +import type { Meta } from "@storybook/react"; +import { fn } from "@storybook/test"; + +import { ButtonIcon } from "@versini/ui-button/src/components"; +import { IconSettings } from "@versini/ui-icons"; + +const meta: Meta = { + parameters: { + layout: "centered", + }, + title: "Components/ButtonIcon", + component: ButtonIcon, + args: { onClick: fn() }, +}; + +export default meta; +export const Basic = (args: React.ComponentProps) => ( + + + +); diff --git a/packages/api/src/stories/assets/hero-14.jpg b/packages/api/src/stories/assets/hero-14.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d45c764a7d44c805d6cc9fc90d06e9236456e74d GIT binary patch literal 132749 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 M@!x%H@P2*!AD7_L0ssI2 literal 0 HcmV?d00001 diff --git a/packages/api/src/vite-env.d.ts b/packages/api/src/vite-env.d.ts new file mode 100644 index 00000000..11f02fe2 --- /dev/null +++ b/packages/api/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/packages/api/tailwind.config.js b/packages/api/tailwind.config.js new file mode 100644 index 00000000..eee1f014 --- /dev/null +++ b/packages/api/tailwind.config.js @@ -0,0 +1,7 @@ +/** @type {import('tailwindcss').Config} */ + +import { twPlugin } from "@versini/ui-styles"; + +export default twPlugin.merge({ + content: ["./src/**/*.{js,ts,jsx,tsx,mdx}"], +}); diff --git a/packages/api/tsconfig.json b/packages/api/tsconfig.json new file mode 100644 index 00000000..aca48955 --- /dev/null +++ b/packages/api/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/packages/api/tsconfig.node.json b/packages/api/tsconfig.node.json new file mode 100644 index 00000000..1caabefc --- /dev/null +++ b/packages/api/tsconfig.node.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true, + "strict": true + }, + "include": ["vite.config.ts"] +} diff --git a/packages/api/vite.config.ts b/packages/api/vite.config.ts new file mode 100644 index 00000000..e29a791f --- /dev/null +++ b/packages/api/vite.config.ts @@ -0,0 +1,7 @@ +import react from "@vitejs/plugin-react"; +import { defineConfig } from "vite"; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], +}); diff --git a/packages/with-vite/src/stories/Button.stories.tsx b/packages/with-vite/src/stories/Button.stories.tsx new file mode 100644 index 00000000..a9792fc5 --- /dev/null +++ b/packages/with-vite/src/stories/Button.stories.tsx @@ -0,0 +1,39 @@ +import type { Meta } from "@storybook/react"; +import { fn } from "@storybook/test"; + +import { Button } from "../../../ui-button/src/components"; + +const meta: Meta = { + parameters: { + layout: "centered", + }, + title: "Components/Button", + component: Button, + args: { children: "Button", onClick: fn() }, +}; + +export default meta; +export const Basic = (args: any) => ( +
+ + + +
+); + +export const Truncate = (args: any) => { + args.className = "w-44 sm:w-52"; + return ( + <> +

For text to truncate, you need to limit the width of the buttons.

+

This can be done by using Tailwind width classes, for example

+ className={args.className} + +
+ + + +
+ + ); +}; diff --git a/packages/with-vite/src/stories/ButtonIcon.stories.tsx b/packages/with-vite/src/stories/ButtonIcon.stories.tsx new file mode 100644 index 00000000..c9ef1451 --- /dev/null +++ b/packages/with-vite/src/stories/ButtonIcon.stories.tsx @@ -0,0 +1,21 @@ +import type { Meta } from "@storybook/react"; +import { fn } from "@storybook/test"; + +import { IconSettings } from "@versini/ui-icons"; +import { ButtonIcon } from "../../../ui-button/src/components"; + +const meta: Meta = { + parameters: { + layout: "centered", + }, + title: "Components/ButtonIcon", + component: ButtonIcon, + args: { onClick: fn() }, +}; + +export default meta; +export const Basic = (args: any) => ( + + + +); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 70235816..b0f9a1fb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -160,6 +160,85 @@ importers: specifier: 5.1.0 version: 5.1.0(webpack-cli@5.1.4)(webpack@5.97.0) + packages/api: + dependencies: + '@versini/ui-anchor': + specifier: workspace:../../packages/ui-anchor + version: link:../ui-anchor + '@versini/ui-button': + specifier: workspace:../../packages/ui-button + version: link:../ui-button + '@versini/ui-card': + specifier: workspace:../../packages/ui-card + version: link:../ui-card + '@versini/ui-footer': + specifier: workspace:../../packages/ui-footer + version: link:../ui-footer + '@versini/ui-form': + specifier: workspace:../../packages/ui-form + version: link:../ui-form + '@versini/ui-header': + specifier: workspace:../../packages/ui-header + version: link:../ui-header + '@versini/ui-icons': + specifier: workspace:../../packages/ui-icons + version: link:../ui-icons + '@versini/ui-main': + specifier: workspace:../../packages/ui-main + version: link:../ui-main + '@versini/ui-menu': + specifier: workspace:../../packages/ui-menu + version: link:../ui-menu + '@versini/ui-panel': + specifier: workspace:../../packages/ui-panel + version: link:../ui-panel + '@versini/ui-pill': + specifier: workspace:../../packages/ui-pill + version: link:../ui-pill + '@versini/ui-styles': + specifier: workspace:../../packages/ui-styles + version: link:../ui-styles + '@versini/ui-system': + specifier: workspace:../../packages/ui-system + version: link:../ui-system + '@versini/ui-table': + specifier: workspace:../../packages/ui-table + version: link:../ui-table + '@versini/ui-textinput': + specifier: workspace:../../packages/ui-textinput + version: link:../ui-textinput + react: + specifier: 18.3.1 + version: 18.3.1 + react-dom: + specifier: 18.3.1 + version: 18.3.1(react@18.3.1) + devDependencies: + '@storybook/addon-essentials': + specifier: 8.4.7 + version: 8.4.7(@types/react@18.3.12)(storybook@8.4.7(prettier@3.4.1)) + '@storybook/addon-links': + specifier: 8.4.7 + version: 8.4.7(react@18.3.1)(storybook@8.4.7(prettier@3.4.1)) + '@storybook/blocks': + specifier: 8.4.7 + version: 8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.1)) + '@storybook/react': + specifier: 8.4.7 + version: 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.1))(typescript@5.7.2) + '@storybook/react-vite': + specifier: 8.4.7 + version: 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.28.0)(storybook@8.4.7(prettier@3.4.1))(typescript@5.7.2)(vite@6.0.2(@types/node@22.10.1)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1)) + '@storybook/test': + specifier: 8.4.7 + version: 8.4.7(storybook@8.4.7(prettier@3.4.1)) + prop-types: + specifier: 15.8.1 + version: 15.8.1 + storybook: + specifier: 8.4.7 + version: 8.4.7(prettier@3.4.1) + packages/bundlesize: dependencies: '@versini/ui-components': @@ -1397,6 +1476,15 @@ packages: resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@joshwooding/vite-plugin-react-docgen-typescript@0.4.2': + resolution: {integrity: sha512-feQ+ntr+8hbVudnsTUapiMN9q8T90XA1d5jn9QzY09sNoj4iD9wi0PY1vsBFTda4ZjEaxRK9S81oarR2nj7TFQ==} + peerDependencies: + typescript: '>= 4.3.x' + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + typescript: + optional: true + '@jridgewell/gen-mapping@0.3.5': resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} @@ -2191,6 +2279,170 @@ packages: resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} engines: {node: '>=18'} + '@storybook/addon-actions@8.4.7': + resolution: {integrity: sha512-mjtD5JxcPuW74T6h7nqMxWTvDneFtokg88p6kQ5OnC1M259iAXb//yiSZgu/quunMHPCXSiqn4FNOSgASTSbsA==} + peerDependencies: + storybook: ^8.4.7 + + '@storybook/addon-backgrounds@8.4.7': + resolution: {integrity: sha512-I4/aErqtFiazcoWyKafOAm3bLpxTj6eQuH/woSbk1Yx+EzN+Dbrgx1Updy8//bsNtKkcrXETITreqHC+a57DHQ==} + peerDependencies: + storybook: ^8.4.7 + + '@storybook/addon-controls@8.4.7': + resolution: {integrity: sha512-377uo5IsJgXLnQLJixa47+11V+7Wn9KcDEw+96aGCBCfLbWNH8S08tJHHnSu+jXg9zoqCAC23MetntVp6LetHA==} + peerDependencies: + storybook: ^8.4.7 + + '@storybook/addon-docs@8.4.7': + resolution: {integrity: sha512-NwWaiTDT5puCBSUOVuf6ME7Zsbwz7Y79WF5tMZBx/sLQ60vpmJVQsap6NSjvK1Ravhc21EsIXqemAcBjAWu80w==} + peerDependencies: + storybook: ^8.4.7 + + '@storybook/addon-essentials@8.4.7': + resolution: {integrity: sha512-+BtZHCBrYtQKILtejKxh0CDRGIgTl9PumfBOKRaihYb4FX1IjSAxoV/oo/IfEjlkF5f87vouShWsRa8EUauFDw==} + peerDependencies: + storybook: ^8.4.7 + + '@storybook/addon-highlight@8.4.7': + resolution: {integrity: sha512-whQIDBd3PfVwcUCrRXvCUHWClXe9mQ7XkTPCdPo4B/tZ6Z9c6zD8JUHT76ddyHivixFLowMnA8PxMU6kCMAiNw==} + peerDependencies: + storybook: ^8.4.7 + + '@storybook/addon-links@8.4.7': + resolution: {integrity: sha512-L/1h4dMeMKF+MM0DanN24v5p3faNYbbtOApMgg7SlcBT/tgo3+cAjkgmNpYA8XtKnDezm+T2mTDhB8mmIRZpIQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.4.7 + peerDependenciesMeta: + react: + optional: true + + '@storybook/addon-measure@8.4.7': + resolution: {integrity: sha512-QfvqYWDSI5F68mKvafEmZic3SMiK7zZM8VA0kTXx55hF/+vx61Mm0HccApUT96xCXIgmwQwDvn9gS4TkX81Dmw==} + peerDependencies: + storybook: ^8.4.7 + + '@storybook/addon-outline@8.4.7': + resolution: {integrity: sha512-6LYRqUZxSodmAIl8icr585Oi8pmzbZ90aloZJIpve+dBAzo7ydYrSQxxoQEVltXbKf3VeVcrs64ouAYqjisMYA==} + peerDependencies: + storybook: ^8.4.7 + + '@storybook/addon-toolbars@8.4.7': + resolution: {integrity: sha512-OSfdv5UZs+NdGB+nZmbafGUWimiweJ/56gShlw8Neo/4jOJl1R3rnRqqY7MYx8E4GwoX+i3GF5C3iWFNQqlDcw==} + peerDependencies: + storybook: ^8.4.7 + + '@storybook/addon-viewport@8.4.7': + resolution: {integrity: sha512-hvczh/jjuXXcOogih09a663sRDDSATXwbE866al1DXgbDFraYD/LxX/QDb38W9hdjU9+Qhx8VFIcNWoMQns5HQ==} + peerDependencies: + storybook: ^8.4.7 + + '@storybook/blocks@8.4.7': + resolution: {integrity: sha512-+QH7+JwXXXIyP3fRCxz/7E2VZepAanXJM7G8nbR3wWsqWgrRp4Wra6MvybxAYCxU7aNfJX5c+RW84SNikFpcIA==} + 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.7 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + + '@storybook/builder-vite@8.4.7': + resolution: {integrity: sha512-LovyXG5VM0w7CovI/k56ZZyWCveQFVDl0m7WwetpmMh2mmFJ+uPQ35BBsgTvTfc8RHi+9Q3F58qP1MQSByXi9g==} + peerDependencies: + storybook: ^8.4.7 + vite: ^4.0.0 || ^5.0.0 || ^6.0.0 + + '@storybook/components@8.4.7': + resolution: {integrity: sha512-uyJIcoyeMWKAvjrG9tJBUCKxr2WZk+PomgrgrUwejkIfXMO76i6jw9BwLa0NZjYdlthDv30r9FfbYZyeNPmF0g==} + 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.7': + resolution: {integrity: sha512-7Z8Z0A+1YnhrrSXoKKwFFI4gnsLbWzr8fnDCU6+6HlDukFYh8GHRcZ9zKfqmy6U3hw2h8H5DrHsxWfyaYUUOoA==} + peerDependencies: + prettier: ^2 || ^3 + peerDependenciesMeta: + prettier: + optional: true + + '@storybook/csf-plugin@8.4.7': + resolution: {integrity: sha512-Fgogplu4HImgC+AYDcdGm1rmL6OR1rVdNX1Be9C/NEXwOCpbbBwi0BxTf/2ZxHRk9fCeaPEcOdP5S8QHfltc1g==} + peerDependencies: + storybook: ^8.4.7 + + '@storybook/csf@0.1.12': + resolution: {integrity: sha512-9/exVhabisyIVL0VxTCxo01Tdm8wefIXKXfltAPTSr8cbLn5JAxGQ6QV3mjdecLGEOucfoVhAKtJfVHxEK1iqw==} + + '@storybook/global@5.0.0': + resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} + + '@storybook/icons@1.3.0': + resolution: {integrity: sha512-Nz/UzeYQdUZUhacrPyfkiiysSjydyjgg/p0P9HxB4p/WaJUUjMAcaoaLgy3EXx61zZJ3iD36WPuDkZs5QYrA0A==} + engines: {node: '>=14.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/instrumenter@8.4.7': + resolution: {integrity: sha512-k6NSD3jaRCCHAFtqXZ7tw8jAzD/yTEWXGya+REgZqq5RCkmJ+9S4Ytp/6OhQMPtPFX23gAuJJzTQVLcCr+gjRg==} + peerDependencies: + storybook: ^8.4.7 + + '@storybook/manager-api@8.4.7': + resolution: {integrity: sha512-ELqemTviCxAsZ5tqUz39sDmQkvhVAvAgiplYy9Uf15kO0SP2+HKsCMzlrm2ue2FfkUNyqbDayCPPCB0Cdn/mpQ==} + 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.7': + resolution: {integrity: sha512-0QVQwHw+OyZGHAJEXo6Knx+6/4er7n2rTDE5RYJ9F2E2Lg42E19pfdLlq2Jhoods2Xrclo3wj6GWR//Ahi39Eg==} + 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.7': + resolution: {integrity: sha512-6bkG2jvKTmWrmVzCgwpTxwIugd7Lu+2btsLAqhQSzDyIj2/uhMNp8xIMr/NBDtLgq3nomt9gefNa9xxLwk/OMg==} + 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.7 + + '@storybook/react-vite@8.4.7': + resolution: {integrity: sha512-iiY9iLdMXhDnilCEVxU6vQsN72pW3miaf0WSenOZRyZv3HdbpgOxI0qapOS0KCyRUnX9vTlmrSPTMchY4cAeOg==} + 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.7 + vite: ^4.0.0 || ^5.0.0 || ^6.0.0 + + '@storybook/react@8.4.7': + resolution: {integrity: sha512-nQ0/7i2DkaCb7dy0NaT95llRVNYWQiPIVuhNfjr1mVhEP7XD090p0g7eqUmsx8vfdHh2BzWEo6CoBFRd3+EXxw==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@storybook/test': 8.4.7 + 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.7 + typescript: '>= 4.2.x' + peerDependenciesMeta: + '@storybook/test': + optional: true + typescript: + optional: true + + '@storybook/test@8.4.7': + resolution: {integrity: sha512-AhvJsu5zl3uG40itSQVuSy5WByp3UVhS6xAnme4FWRwgSxhvZjATJ3AZkkHWOYjnnk+P2/sbz/XuPli1FVCWoQ==} + peerDependencies: + storybook: ^8.4.7 + + '@storybook/theming@8.4.7': + resolution: {integrity: sha512-99rgLEjf7iwfSEmdqlHkSG3AyLcK0sfExcr0jnc6rLiAkBhzuIsvcHjjUwkR210SOCgXqBPW0ZA6uhnuyppHLw==} + 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.7.26': resolution: {integrity: sha512-FF3CRYTg6a7ZVW4yT9mesxoVVZTrcSWtmZhxKCYJX9brH4CS/7PRPjAKNk6kzWgWuRoglP7hkjQcd6EpMcZEAw==} engines: {node: '>=10'} @@ -2278,6 +2530,10 @@ packages: 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/jest-dom@6.6.3': resolution: {integrity: sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} @@ -2359,6 +2615,9 @@ packages: '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + '@types/doctrine@0.0.9': + resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} + '@types/eslint-scope@3.7.7': resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} @@ -2479,6 +2738,9 @@ packages: '@types/react@18.3.12': resolution: {integrity: sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==} + '@types/resolve@1.20.6': + resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==} + '@types/retry@0.12.2': resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==} @@ -2512,6 +2774,9 @@ packages: '@types/uuid@10.0.0': resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} + '@types/uuid@9.0.8': + resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} + '@types/wrap-ansi@3.0.0': resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==} @@ -2561,6 +2826,9 @@ packages: '@vitest/browser': optional: true + '@vitest/expect@2.0.5': + resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} + '@vitest/expect@2.1.8': resolution: {integrity: sha512-8ytZ/fFHq2g4PJVAtDX57mayemKgDR6X3Oa2Foro+EygiOJHUXhCqBAAKQYYajZpFoIfvBCF1j6R6IYRSIUFuw==} @@ -2575,6 +2843,9 @@ packages: vite: optional: true + '@vitest/pretty-format@2.0.5': + resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==} + '@vitest/pretty-format@2.1.8': resolution: {integrity: sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ==} @@ -2584,6 +2855,9 @@ packages: '@vitest/snapshot@2.1.8': resolution: {integrity: sha512-20T7xRFbmnkfcmgVEz+z3AU/3b0cEzZOt/zmnvZEctg64/QZbSDJEVm9fLnnlSi74KibmRsO9/Qabi+t0vCRPg==} + '@vitest/spy@2.0.5': + resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} + '@vitest/spy@2.1.8': resolution: {integrity: sha512-5swjf2q95gXeYPevtW0BLk6H8+bPlMb4Vw/9Em4hFxDcaOxS+e0LOX4yqNxoHzMR2akEB2xfpnWUzkZokmgWDg==} @@ -2592,6 +2866,9 @@ packages: peerDependencies: vitest: 2.1.8 + '@vitest/utils@2.0.5': + resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} + '@vitest/utils@2.1.8': resolution: {integrity: sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==} @@ -2894,6 +3171,10 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} + ast-types@0.16.1: + resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} + engines: {node: '>=4'} + astring@1.9.0: resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} hasBin: true @@ -2945,6 +3226,10 @@ packages: before-after-hook@2.2.3: resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} + better-opn@3.0.2: + resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} + engines: {node: '>=12.0.0'} + bin-links@4.0.4: resolution: {integrity: sha512-cMtq4W5ZsEwcutJrVId+a/tjt8GSbS+h0oNkdl6+6rBuEv8Ot33Bevj5KPm40t309zuhVic8NjpuL42QCiJWWA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -2980,6 +3265,9 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} + browser-assert@1.2.1: + resolution: {integrity: sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==} + browserslist@4.24.0: resolution: {integrity: sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -3025,10 +3313,22 @@ packages: resolution: {integrity: sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==} engines: {node: '>= 6.0.0'} + call-bind-apply-helpers@1.0.1: + resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} + engines: {node: '>= 0.4'} + call-bind@1.0.7: resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} engines: {node: '>= 0.4'} + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + + call-bound@1.0.2: + resolution: {integrity: sha512-0lk0PHFe/uz0vl527fG9CgdE9WdafjDbCXvBbs+LUv000TVt2Jjhqbs4Jwm8gz070w8xXyEAxrPOMullsxXeGg==} + engines: {node: '>= 0.4'} + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -3588,6 +3888,10 @@ packages: resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} engines: {node: '>=6'} + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dom-accessibility-api@0.5.16: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} @@ -3629,6 +3933,10 @@ packages: resolution: {integrity: sha512-JhcR/+KIjkkjiU8yEpaB/USlzVi3i5whwOjpIRNGi9svKEXZSe+Qp6IWAjFjv+2GViAoDRCUv/QLNziQxsLqDg==} engines: {node: '>=12'} + dunder-proto@1.0.0: + resolution: {integrity: sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A==} + engines: {node: '>= 0.4'} + duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} @@ -3719,6 +4027,10 @@ packages: resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} engines: {node: '>= 0.4'} + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + es-errors@1.3.0: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} @@ -3738,6 +4050,11 @@ packages: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} + esbuild-register@3.6.0: + resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} + peerDependencies: + esbuild: '>=0.12 <1' + esbuild@0.21.5: resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} engines: {node: '>=12'} @@ -3809,6 +4126,10 @@ packages: estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + etag@1.8.1: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} @@ -3919,6 +4240,10 @@ packages: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + flat@5.0.2: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true @@ -4016,6 +4341,10 @@ packages: resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} engines: {node: '>= 0.4'} + get-intrinsic@1.2.6: + resolution: {integrity: sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==} + engines: {node: '>= 0.4'} + get-pkg-repo@4.2.1: resolution: {integrity: sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==} engines: {node: '>=6.9.0'} @@ -4114,6 +4443,10 @@ packages: gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -4159,6 +4492,10 @@ packages: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + has-tostringtag@1.0.2: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} @@ -4433,6 +4770,10 @@ packages: is-alphanumerical@2.0.1: resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + is-arguments@1.2.0: + resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} + engines: {node: '>= 0.4'} + is-array-buffer@3.0.4: resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} engines: {node: '>= 0.4'} @@ -4732,6 +5073,10 @@ packages: jsbn@1.1.0: resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + jsdoc-type-pratt-parser@4.1.0: + resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} + engines: {node: '>=12.0.0'} + jsdom@25.0.1: resolution: {integrity: sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw==} engines: {node: '>=18'} @@ -4889,6 +5234,10 @@ packages: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + lodash-es@4.17.21: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} @@ -4956,8 +5305,9 @@ packages: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true - magic-string@0.30.11: - resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} + magic-string@0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + engines: {node: '>=12'} magic-string@0.30.14: resolution: {integrity: sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==} @@ -4985,6 +5335,9 @@ packages: resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} engines: {node: '>=8'} + map-or-similar@1.5.0: + resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==} + markdown-extensions@2.0.0: resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} engines: {node: '>=16'} @@ -4992,6 +5345,10 @@ packages: markdown-table@3.0.3: resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} + math-intrinsics@1.0.0: + resolution: {integrity: sha512-4MqMiKP90ybymYvsut0CH2g4XWbfLtmlCkXmtmdcDCxNB+mQcu1w/1+L/VD7vi/PSv7X2JYV7SCcR+jiPXnQtA==} + engines: {node: '>= 0.4'} + mdast-util-find-and-replace@3.0.1: resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} @@ -5052,6 +5409,9 @@ packages: resolution: {integrity: sha512-Fq5CMEth+2iprLJ5mNizRcWuiwRZYjNkUD0zKk224jZunE9CRacTRDK8QLALbMBlNX2y3nY6lKZbesCwDwacig==} engines: {node: '>= 4.0.0'} + memoizerific@1.11.3: + resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} + memorystream@0.3.1: resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} engines: {node: '>= 0.10.0'} @@ -5579,6 +5939,10 @@ packages: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + p-locate@2.0.0: resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} engines: {node: '>=4'} @@ -5587,6 +5951,10 @@ packages: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + p-map-series@2.1.0: resolution: {integrity: sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q==} engines: {node: '>=8'} @@ -5790,6 +6158,10 @@ packages: pkg-types@1.2.0: resolution: {integrity: sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==} + polished@4.3.1: + resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==} + engines: {node: '>=10'} + possible-typed-array-names@1.0.0: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} @@ -5981,6 +6353,10 @@ packages: process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + proggy@2.0.0: resolution: {integrity: sha512-69agxLtnI8xBs9gUGqEnK26UfiexpHy+KUpBQWabiytQjnn5wFY8rklAi7GRfABIuPNnQ/ik48+LGLkYYJcy4A==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -6062,6 +6438,15 @@ packages: resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} engines: {node: '>= 0.8'} + 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: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} peerDependencies: @@ -6141,6 +6526,10 @@ packages: resolution: {integrity: sha512-GkMg9uOTpIWWKbSsgwb5fA4EavTR+SG/PMPoAY8hkhHfEEY0/vqljY+XHqtDf2cr2IJtoNRDbrrEpZUiZCkYRw==} engines: {node: '>= 14.16.0'} + recast@0.23.9: + resolution: {integrity: sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==} + engines: {node: '>= 4'} + rechoir@0.8.0: resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} engines: {node: '>= 10.13.0'} @@ -6541,6 +6930,15 @@ packages: resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} engines: {node: '>=18'} + storybook@8.4.7: + resolution: {integrity: sha512-RP/nMJxiWyFc8EVMH5gp20ID032Wvk+Yr3lmKidoegto5Iy+2dVQnUoElZb2zpbVXNHWakGuAkfI0dY1Hfp/vw==} + hasBin: true + peerDependencies: + prettier: ^2 || ^3 + peerDependenciesMeta: + prettier: + optional: true + strict-event-emitter@0.5.1: resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==} @@ -6612,6 +7010,10 @@ packages: 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@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -6732,6 +7134,9 @@ packages: thunky@1.1.0: resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} @@ -6838,6 +7243,10 @@ packages: '@rspack/core': ^1.0.0 typescript: '>=3.8.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: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} @@ -7030,6 +7439,10 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} + unplugin@1.16.0: + resolution: {integrity: sha512-5liCNPuJW8dqh3+DM6uNM2EI3MLLpCKp/KY+9pB5M2S2SR2qvvDHhKgBOaTWEbZTAws3CXfB0rKTIolWKL05VQ==} + engines: {node: '>=14.0.0'} + upath@2.0.1: resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} engines: {node: '>=4'} @@ -7049,6 +7462,9 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + utila@0.4.0: resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} @@ -7064,6 +7480,10 @@ packages: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} @@ -7293,6 +7713,9 @@ packages: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + webpack@5.97.0: resolution: {integrity: sha512-CWT8v7ShSfj7tGs4TLRtaOLmOCPWhoKEvp+eA7FVx8Xrjb3XfT0aXdxDItnRZmE8sHcH+a8ayDrJCOjXKxVFfQ==} engines: {node: '>=10.13.0'} @@ -7464,6 +7887,10 @@ packages: resolution: {integrity: sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==} engines: {node: '>= 4.0.0'} + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + yoctocolors-cjs@2.1.2: resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==} engines: {node: '>=18'} @@ -7941,6 +8368,14 @@ snapshots: '@types/yargs': 17.0.33 chalk: 4.1.2 + '@joshwooding/vite-plugin-react-docgen-typescript@0.4.2(typescript@5.7.2)(vite@6.0.2(@types/node@22.10.1)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1))': + dependencies: + magic-string: 0.27.0 + react-docgen-typescript: 2.2.2(typescript@5.7.2) + vite: 6.0.2(@types/node@22.10.1)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1) + optionalDependencies: + typescript: 5.7.2 + '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 @@ -8931,6 +9366,223 @@ snapshots: '@sindresorhus/merge-streams@2.3.0': {} + '@storybook/addon-actions@8.4.7(storybook@8.4.7(prettier@3.4.1))': + dependencies: + '@storybook/global': 5.0.0 + '@types/uuid': 9.0.8 + dequal: 2.0.3 + polished: 4.3.1 + storybook: 8.4.7(prettier@3.4.1) + uuid: 9.0.1 + + '@storybook/addon-backgrounds@8.4.7(storybook@8.4.7(prettier@3.4.1))': + dependencies: + '@storybook/global': 5.0.0 + memoizerific: 1.11.3 + storybook: 8.4.7(prettier@3.4.1) + ts-dedent: 2.2.0 + + '@storybook/addon-controls@8.4.7(storybook@8.4.7(prettier@3.4.1))': + dependencies: + '@storybook/global': 5.0.0 + dequal: 2.0.3 + storybook: 8.4.7(prettier@3.4.1) + ts-dedent: 2.2.0 + + '@storybook/addon-docs@8.4.7(@types/react@18.3.12)(storybook@8.4.7(prettier@3.4.1))': + dependencies: + '@mdx-js/react': 3.0.1(@types/react@18.3.12)(react@18.3.1) + '@storybook/blocks': 8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.1)) + '@storybook/csf-plugin': 8.4.7(storybook@8.4.7(prettier@3.4.1)) + '@storybook/react-dom-shim': 8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.1)) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + storybook: 8.4.7(prettier@3.4.1) + ts-dedent: 2.2.0 + transitivePeerDependencies: + - '@types/react' + + '@storybook/addon-essentials@8.4.7(@types/react@18.3.12)(storybook@8.4.7(prettier@3.4.1))': + dependencies: + '@storybook/addon-actions': 8.4.7(storybook@8.4.7(prettier@3.4.1)) + '@storybook/addon-backgrounds': 8.4.7(storybook@8.4.7(prettier@3.4.1)) + '@storybook/addon-controls': 8.4.7(storybook@8.4.7(prettier@3.4.1)) + '@storybook/addon-docs': 8.4.7(@types/react@18.3.12)(storybook@8.4.7(prettier@3.4.1)) + '@storybook/addon-highlight': 8.4.7(storybook@8.4.7(prettier@3.4.1)) + '@storybook/addon-measure': 8.4.7(storybook@8.4.7(prettier@3.4.1)) + '@storybook/addon-outline': 8.4.7(storybook@8.4.7(prettier@3.4.1)) + '@storybook/addon-toolbars': 8.4.7(storybook@8.4.7(prettier@3.4.1)) + '@storybook/addon-viewport': 8.4.7(storybook@8.4.7(prettier@3.4.1)) + storybook: 8.4.7(prettier@3.4.1) + ts-dedent: 2.2.0 + transitivePeerDependencies: + - '@types/react' + + '@storybook/addon-highlight@8.4.7(storybook@8.4.7(prettier@3.4.1))': + dependencies: + '@storybook/global': 5.0.0 + storybook: 8.4.7(prettier@3.4.1) + + '@storybook/addon-links@8.4.7(react@18.3.1)(storybook@8.4.7(prettier@3.4.1))': + dependencies: + '@storybook/csf': 0.1.12 + '@storybook/global': 5.0.0 + storybook: 8.4.7(prettier@3.4.1) + ts-dedent: 2.2.0 + optionalDependencies: + react: 18.3.1 + + '@storybook/addon-measure@8.4.7(storybook@8.4.7(prettier@3.4.1))': + dependencies: + '@storybook/global': 5.0.0 + storybook: 8.4.7(prettier@3.4.1) + tiny-invariant: 1.3.3 + + '@storybook/addon-outline@8.4.7(storybook@8.4.7(prettier@3.4.1))': + dependencies: + '@storybook/global': 5.0.0 + storybook: 8.4.7(prettier@3.4.1) + ts-dedent: 2.2.0 + + '@storybook/addon-toolbars@8.4.7(storybook@8.4.7(prettier@3.4.1))': + dependencies: + storybook: 8.4.7(prettier@3.4.1) + + '@storybook/addon-viewport@8.4.7(storybook@8.4.7(prettier@3.4.1))': + dependencies: + memoizerific: 1.11.3 + storybook: 8.4.7(prettier@3.4.1) + + '@storybook/blocks@8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.1))': + dependencies: + '@storybook/csf': 0.1.12 + '@storybook/icons': 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + storybook: 8.4.7(prettier@3.4.1) + ts-dedent: 2.2.0 + optionalDependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@storybook/builder-vite@8.4.7(storybook@8.4.7(prettier@3.4.1))(vite@6.0.2(@types/node@22.10.1)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1))': + dependencies: + '@storybook/csf-plugin': 8.4.7(storybook@8.4.7(prettier@3.4.1)) + browser-assert: 1.2.1 + storybook: 8.4.7(prettier@3.4.1) + ts-dedent: 2.2.0 + vite: 6.0.2(@types/node@22.10.1)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1) + + '@storybook/components@8.4.7(storybook@8.4.7(prettier@3.4.1))': + dependencies: + storybook: 8.4.7(prettier@3.4.1) + + '@storybook/core@8.4.7(prettier@3.4.1)': + dependencies: + '@storybook/csf': 0.1.12 + 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.4.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + '@storybook/csf-plugin@8.4.7(storybook@8.4.7(prettier@3.4.1))': + dependencies: + storybook: 8.4.7(prettier@3.4.1) + unplugin: 1.16.0 + + '@storybook/csf@0.1.12': + dependencies: + type-fest: 2.19.0 + + '@storybook/global@5.0.0': {} + + '@storybook/icons@1.3.0(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.7(storybook@8.4.7(prettier@3.4.1))': + dependencies: + '@storybook/global': 5.0.0 + '@vitest/utils': 2.1.8 + storybook: 8.4.7(prettier@3.4.1) + + '@storybook/manager-api@8.4.7(storybook@8.4.7(prettier@3.4.1))': + dependencies: + storybook: 8.4.7(prettier@3.4.1) + + '@storybook/preview-api@8.4.7(storybook@8.4.7(prettier@3.4.1))': + dependencies: + storybook: 8.4.7(prettier@3.4.1) + + '@storybook/react-dom-shim@8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.1))': + dependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + storybook: 8.4.7(prettier@3.4.1) + + '@storybook/react-vite@8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.28.0)(storybook@8.4.7(prettier@3.4.1))(typescript@5.7.2)(vite@6.0.2(@types/node@22.10.1)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1))': + dependencies: + '@joshwooding/vite-plugin-react-docgen-typescript': 0.4.2(typescript@5.7.2)(vite@6.0.2(@types/node@22.10.1)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1)) + '@rollup/pluginutils': 5.1.2(rollup@4.28.0) + '@storybook/builder-vite': 8.4.7(storybook@8.4.7(prettier@3.4.1))(vite@6.0.2(@types/node@22.10.1)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1)) + '@storybook/react': 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.1))(typescript@5.7.2) + find-up: 5.0.0 + magic-string: 0.30.14 + 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.7(prettier@3.4.1) + tsconfig-paths: 4.2.0 + vite: 6.0.2(@types/node@22.10.1)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1) + transitivePeerDependencies: + - '@storybook/test' + - rollup + - supports-color + - typescript + + '@storybook/react@8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.1))(typescript@5.7.2)': + dependencies: + '@storybook/components': 8.4.7(storybook@8.4.7(prettier@3.4.1)) + '@storybook/global': 5.0.0 + '@storybook/manager-api': 8.4.7(storybook@8.4.7(prettier@3.4.1)) + '@storybook/preview-api': 8.4.7(storybook@8.4.7(prettier@3.4.1)) + '@storybook/react-dom-shim': 8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.4.7(prettier@3.4.1)) + '@storybook/theming': 8.4.7(storybook@8.4.7(prettier@3.4.1)) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + storybook: 8.4.7(prettier@3.4.1) + optionalDependencies: + '@storybook/test': 8.4.7(storybook@8.4.7(prettier@3.4.1)) + typescript: 5.7.2 + + '@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.1))': + dependencies: + '@storybook/csf': 0.1.12 + '@storybook/global': 5.0.0 + '@storybook/instrumenter': 8.4.7(storybook@8.4.7(prettier@3.4.1)) + '@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.7(prettier@3.4.1) + + '@storybook/theming@8.4.7(storybook@8.4.7(prettier@3.4.1))': + dependencies: + storybook: 8.4.7(prettier@3.4.1) + '@swc/core-darwin-arm64@1.7.26': optional: true @@ -9007,6 +9659,16 @@ snapshots: 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/jest-dom@6.6.3': dependencies: '@adobe/css-tools': 4.4.0 @@ -9099,6 +9761,8 @@ snapshots: dependencies: '@types/ms': 0.7.34 + '@types/doctrine@0.0.9': {} + '@types/eslint-scope@3.7.7': dependencies: '@types/eslint': 9.6.1 @@ -9244,6 +9908,8 @@ snapshots: '@types/prop-types': 15.7.13 csstype: 3.1.3 + '@types/resolve@1.20.6': {} + '@types/retry@0.12.2': {} '@types/send@0.17.4': @@ -9277,6 +9943,8 @@ snapshots: '@types/uuid@10.0.0': {} + '@types/uuid@9.0.8': {} + '@types/wrap-ansi@3.0.0': {} '@types/ws@8.5.12': @@ -9452,6 +10120,13 @@ 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/expect@2.1.8': dependencies: '@vitest/spy': 2.1.8 @@ -9468,6 +10143,10 @@ snapshots: msw: 2.4.9(typescript@5.6.3) vite: 5.4.8(@types/node@22.10.1)(terser@5.34.1) + '@vitest/pretty-format@2.0.5': + dependencies: + tinyrainbow: 1.2.0 + '@vitest/pretty-format@2.1.8': dependencies: tinyrainbow: 1.2.0 @@ -9483,6 +10162,10 @@ snapshots: magic-string: 0.30.14 pathe: 1.1.2 + '@vitest/spy@2.0.5': + dependencies: + tinyspy: 3.0.2 + '@vitest/spy@2.1.8': dependencies: tinyspy: 3.0.2 @@ -9498,6 +10181,13 @@ snapshots: tinyrainbow: 1.2.0 vitest: 2.1.8(@types/node@22.10.1)(@vitest/ui@2.1.8)(happy-dom@15.11.7)(jsdom@25.0.1)(msw@2.4.9(typescript@5.6.3))(terser@5.34.1) + '@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.8': dependencies: '@vitest/pretty-format': 2.1.8 @@ -9822,6 +10512,10 @@ snapshots: assertion-error@2.0.1: {} + ast-types@0.16.1: + dependencies: + tslib: 2.8.1 + astring@1.9.0: {} async@3.2.6: {} @@ -9870,6 +10564,10 @@ snapshots: before-after-hook@2.2.3: {} + better-opn@3.0.2: + dependencies: + open: 8.4.2 + bin-links@4.0.4: dependencies: cmd-shim: 6.0.3 @@ -9933,6 +10631,8 @@ snapshots: dependencies: fill-range: 7.1.1 + browser-assert@1.2.1: {} + browserslist@4.24.0: dependencies: caniuse-lite: 1.0.30001664 @@ -9984,6 +10684,11 @@ snapshots: mime-types: 2.1.35 ylru: 1.4.0 + call-bind-apply-helpers@1.0.1: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + call-bind@1.0.7: dependencies: es-define-property: 1.0.0 @@ -9992,6 +10697,18 @@ snapshots: get-intrinsic: 1.2.4 set-function-length: 1.2.2 + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.1 + es-define-property: 1.0.1 + get-intrinsic: 1.2.6 + set-function-length: 1.2.2 + + call-bound@1.0.2: + dependencies: + call-bind: 1.0.8 + get-intrinsic: 1.2.6 + callsites@3.1.0: {} camel-case@4.1.2: @@ -10508,6 +11225,10 @@ snapshots: dependencies: '@leichtgewicht/ip-codec': 2.0.5 + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + dom-accessibility-api@0.5.16: {} dom-accessibility-api@0.6.3: {} @@ -10551,6 +11272,12 @@ snapshots: dotenv@16.4.6: {} + dunder-proto@1.0.0: + dependencies: + call-bind-apply-helpers: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + duplexer@0.1.2: {} eastasianwidth@0.2.0: {} @@ -10666,6 +11393,8 @@ snapshots: dependencies: get-intrinsic: 1.2.4 + es-define-property@1.0.1: {} + es-errors@1.3.0: {} es-module-lexer@1.5.4: {} @@ -10686,6 +11415,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(supports-color@5.5.0) + esbuild: 0.24.0 + transitivePeerDependencies: + - supports-color + esbuild@0.21.5: optionalDependencies: '@esbuild/aix-ppc64': 0.21.5 @@ -10794,6 +11530,8 @@ snapshots: dependencies: '@types/estree': 1.0.6 + esutils@2.0.3: {} + etag@1.8.1: {} eventemitter3@4.0.7: {} @@ -10951,6 +11689,11 @@ snapshots: locate-path: 5.0.0 path-exists: 4.0.0 + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + flat@5.0.2: {} flatted@3.3.1: {} @@ -11036,6 +11779,19 @@ snapshots: has-symbols: 1.0.3 hasown: 2.0.2 + get-intrinsic@1.2.6: + dependencies: + call-bind-apply-helpers: 1.0.1 + dunder-proto: 1.0.0 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + function-bind: 1.1.2 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.0.0 + get-pkg-repo@4.2.1: dependencies: '@hutson/parse-repository-url': 3.0.2 @@ -11154,6 +11910,8 @@ snapshots: dependencies: get-intrinsic: 1.2.4 + gopd@1.2.0: {} + graceful-fs@4.2.11: {} graphql@16.9.0: {} @@ -11191,6 +11949,8 @@ snapshots: has-symbols@1.0.3: {} + has-symbols@1.1.0: {} + has-tostringtag@1.0.2: dependencies: has-symbols: 1.0.3 @@ -11575,6 +12335,11 @@ snapshots: is-alphabetical: 2.0.1 is-decimal: 2.0.1 + is-arguments@1.2.0: + dependencies: + call-bound: 1.0.2 + has-tostringtag: 1.0.2 + is-array-buffer@3.0.4: dependencies: call-bind: 1.0.7 @@ -11844,6 +12609,8 @@ snapshots: jsbn@1.1.0: {} + jsdoc-type-pratt-parser@4.1.0: {} + jsdom@25.0.1: dependencies: cssstyle: 4.1.0 @@ -12136,6 +12903,10 @@ snapshots: dependencies: p-locate: 4.1.0 + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + lodash-es@4.17.21: {} lodash.castarray@4.4.0: {} @@ -12198,7 +12969,7 @@ snapshots: lz-string@1.5.0: {} - magic-string@0.30.11: + magic-string@0.27.0: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -12242,10 +13013,14 @@ snapshots: map-obj@4.3.0: {} + map-or-similar@1.5.0: {} + markdown-extensions@2.0.0: {} markdown-table@3.0.3: {} + math-intrinsics@1.0.0: {} + mdast-util-find-and-replace@3.0.1: dependencies: '@types/mdast': 4.0.4 @@ -12424,6 +13199,10 @@ snapshots: tree-dump: 1.0.2(tslib@2.8.1) tslib: 2.8.1 + memoizerific@1.11.3: + dependencies: + map-or-similar: 1.5.0 + memorystream@0.3.1: {} meow@13.2.0: {} @@ -13217,6 +13996,10 @@ snapshots: dependencies: p-try: 2.2.0 + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + p-locate@2.0.0: dependencies: p-limit: 1.3.0 @@ -13225,6 +14008,10 @@ snapshots: dependencies: p-limit: 2.3.0 + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + p-map-series@2.1.0: {} p-map@4.0.0: @@ -13423,6 +14210,10 @@ snapshots: mlly: 1.7.1 pathe: 1.1.2 + polished@4.3.1: + dependencies: + '@babel/runtime': 7.25.6 + possible-typed-array-names@1.0.0: {} postcss-import@15.1.0(postcss@8.4.49): @@ -13543,6 +14334,8 @@ snapshots: process-nextick-args@2.0.1: {} + process@0.11.10: {} + proggy@2.0.0: {} promise-all-reject-late@1.0.1: {} @@ -13612,6 +14405,25 @@ snapshots: iconv-lite: 0.4.24 unpipe: 1.0.0 + react-docgen-typescript@2.2.2(typescript@5.7.2): + dependencies: + typescript: 5.7.2 + + react-docgen@7.1.0: + dependencies: + '@babel/core': 7.25.2 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 + '@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 @@ -13700,6 +14512,14 @@ snapshots: readdirp@4.0.1: {} + 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 + rechoir@0.8.0: dependencies: resolve: 1.22.8 @@ -14203,6 +15023,16 @@ snapshots: stdin-discarder@0.2.2: {} + storybook@8.4.7(prettier@3.4.1): + dependencies: + '@storybook/core': 8.4.7(prettier@3.4.1) + optionalDependencies: + prettier: 3.4.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + strict-event-emitter@0.5.1: {} string-argv@0.3.2: {} @@ -14284,6 +15114,10 @@ snapshots: dependencies: min-indent: 1.0.1 + strip-indent@4.0.0: + dependencies: + min-indent: 1.0.1 + strip-json-comments@3.1.1: {} strong-log-transformer@2.1.0: @@ -14428,6 +15262,8 @@ snapshots: thunky@1.1.0: {} + tiny-invariant@1.3.3: {} + tinybench@2.9.0: {} tinyexec@0.3.1: {} @@ -14513,6 +15349,8 @@ snapshots: picocolors: 1.1.1 typescript: 5.6.3 + ts-dedent@2.2.0: {} + ts-interface-checker@0.1.13: {} ts-loader@9.5.1(typescript@5.7.2)(webpack@5.97.0): @@ -14710,6 +15548,11 @@ snapshots: unpipe@1.0.0: {} + unplugin@1.16.0: + dependencies: + acorn: 8.14.0 + webpack-virtual-modules: 0.6.2 + upath@2.0.1: {} update-browserslist-db@1.1.1(browserslist@4.24.0): @@ -14729,6 +15572,14 @@ snapshots: util-deprecate@1.0.2: {} + util@0.12.5: + dependencies: + inherits: 2.0.4 + is-arguments: 1.2.0 + is-generator-function: 1.0.10 + is-typed-array: 1.1.13 + which-typed-array: 1.1.15 + utila@0.4.0: {} utils-merge@1.0.1: {} @@ -14737,6 +15588,8 @@ snapshots: uuid@8.3.2: {} + uuid@9.0.1: {} + validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 @@ -14789,7 +15642,7 @@ snapshots: debug: 4.3.7(supports-color@5.5.0) kolorist: 1.8.0 local-pkg: 0.5.0 - magic-string: 0.30.11 + magic-string: 0.30.14 typescript: 5.6.3 optionalDependencies: vite: 6.0.2(@types/node@22.10.1)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1) @@ -14801,7 +15654,7 @@ snapshots: vite-plugin-lib-inject-css@2.1.1(vite@6.0.2(@types/node@22.10.1)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1)): dependencies: '@ast-grep/napi': 0.22.6 - magic-string: 0.30.11 + magic-string: 0.30.14 picocolors: 1.1.1 vite: 6.0.2(@types/node@22.10.1)(jiti@1.21.6)(terser@5.34.1)(yaml@2.5.1) @@ -14984,6 +15837,8 @@ snapshots: webpack-sources@3.2.3: {} + webpack-virtual-modules@0.6.2: {} + webpack@5.97.0(@swc/core@1.7.26(@swc/helpers@0.5.15))(esbuild@0.24.0)(webpack-cli@5.1.4): dependencies: '@types/eslint-scope': 3.7.7 @@ -15187,6 +16042,8 @@ snapshots: ylru@1.4.0: {} + yocto-queue@0.1.0: {} + yoctocolors-cjs@2.1.2: {} zwitch@2.0.4: {}