diff --git a/.github/workflows/deploy-docsite.yml b/.github/workflows/deploy-docsite.yml index b4539f32f8..68857f62f1 100644 --- a/.github/workflows/deploy-docsite.yml +++ b/.github/workflows/deploy-docsite.yml @@ -1,6 +1,6 @@ -name: Docsite and Storybook CI/CD +name: Docsite CI/CD -run-name: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' && 'Build and Deploy' || 'Test Build' }} Docsite and Storybook +run-name: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' && 'Build and Deploy' || 'Test Build' }} Docsite env: NODE_VERSION: 22 @@ -10,7 +10,7 @@ on: branches: - main workflow_dispatch: - # Also run any time a PR is opened targeting the docs or storybook resources + # Also run any time a PR is opened targeting the docs pull_request: branches: - main @@ -21,9 +21,6 @@ on: - ready_for_review paths: - "docs/**" - - "storybook/**" - - "**/*.story.*" - - "**/*.stories.*" - ".github/workflows/deploy-docsite.yml" - "Taskfile.yml" diff --git a/.storybook/custom-addons/theme/register.ts b/.storybook/custom-addons/theme/register.ts deleted file mode 100644 index c13a69b655..0000000000 --- a/.storybook/custom-addons/theme/register.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { FORCE_RE_RENDER } from "@storybook/core-events"; -import { addons } from "@storybook/manager-api"; -import { UPDATE_DARK_MODE_EVENT_NAME } from "storybook-dark-mode"; -import { dark, light } from "../../theme"; - -addons.register("theme-switcher", (api) => { - const query = window.matchMedia("(prefers-color-scheme: dark)"); - const channel = addons.getChannel(); - const update = () => { - const theme = query.matches ? dark : light; - api.setOptions({ theme }); - channel.emit(FORCE_RE_RENDER); - channel.emit(UPDATE_DARK_MODE_EVENT_NAME); - }; - - channel.on("storiesConfigured", update); - query.addEventListener("change", update); -}); diff --git a/.storybook/global.css b/.storybook/global.css deleted file mode 100644 index 73464846c8..0000000000 --- a/.storybook/global.css +++ /dev/null @@ -1,20 +0,0 @@ -body { - height: 100vh; - padding: 0; - overflow: auto; -} - -#storybook-root { - height: 100%; -} - -.grid-item { - background-color: aquamarine; - border: 1px black solid; - - &.react-grid-placeholder { - background-color: orange; - } -} - -@import "../frontend/tailwindsetup.css"; diff --git a/.storybook/main.ts b/.storybook/main.ts deleted file mode 100644 index 75d3220ede..0000000000 --- a/.storybook/main.ts +++ /dev/null @@ -1,83 +0,0 @@ -import type { StorybookConfig } from "@storybook/react-vite"; -import type { ElectronViteConfig } from "electron-vite"; -import type { UserConfig } from "vite"; - -const config: StorybookConfig = { - stories: ["../frontend/**/*.mdx", "../frontend/**/*.stories.@(js|jsx|mjs|ts|tsx)"], - - addons: [ - "@storybook/addon-links", - "@storybook/addon-essentials", - "@chromatic-com/storybook", - "@storybook/addon-interactions", - "storybook-dark-mode", - "./custom-addons/theme/register", - ], - - core: { builder: "@storybook/builder-vite" }, - - framework: { - name: "@storybook/react-vite", - options: {}, - }, - - docs: {}, - - typescript: { - reactDocgen: "react-docgen-typescript", - }, - - async viteFinal(config) { - const { mergeConfig } = await import("vite"); - const { tsImport } = await import("tsx/esm/api"); - const electronViteConfig = (await tsImport("../electron.vite.config.ts", import.meta.url)) - .default as ElectronViteConfig; - const mergedConfig = mergeConfig(config, electronViteConfig.renderer as UserConfig); - mergedConfig.build.outDir = "storybook-static"; - return mergedConfig; - }, - - staticDirs: [ - { from: "../assets", to: "/assets" }, - { from: "../public/fontawesome", to: "/fontawesome" }, - ], - managerHead: (head) => ` - ${head} - - - `, - previewHead: (head) => ` - ${head} - - - - - - - `, -}; -export default config; diff --git a/.storybook/preview.tsx b/.storybook/preview.tsx deleted file mode 100644 index ba86add9f5..0000000000 --- a/.storybook/preview.tsx +++ /dev/null @@ -1,60 +0,0 @@ -// organize-imports-ignore -import type { Preview } from "@storybook/react"; -import React from "react"; -import { DndProvider } from "react-dnd"; -import { HTML5Backend } from "react-dnd-html5-backend"; -import "../frontend/app/theme.scss"; -import "../frontend/app/app.scss"; -import "../frontend/app/reset.scss"; -import "./global.css"; -import { light, dark } from "./theme"; -import { DocsContainer } from "@storybook/addon-docs"; -import { addons } from "@storybook/preview-api"; -import { DARK_MODE_EVENT_NAME } from "storybook-dark-mode"; - -const channel = addons.getChannel(); - -const preview: Preview = { - parameters: { - controls: { - matchers: { - color: /(background|color)$/i, - date: /Date$/i, - }, - }, - darkMode: { - dark, - light, - stylePreview: true, - classTarget: "html", - }, - docs: { - container: (props) => { - const [isDark, setDark] = React.useState(); - - React.useEffect(() => { - channel.on(DARK_MODE_EVENT_NAME, setDark); - return () => channel.removeListener(DARK_MODE_EVENT_NAME, setDark); - }, [channel, setDark]); - - return ( -
- -
- ); - }, - }, - }, - - decorators: [ - (Story) => ( - - - - ), - ], - - tags: ["autodocs"], -}; - -export default preview; diff --git a/.storybook/theme.ts b/.storybook/theme.ts deleted file mode 100644 index aa4f4b4cab..0000000000 --- a/.storybook/theme.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { create } from "@storybook/theming"; - -export const light = create({ - base: "light", - brandTitle: "Wave Terminal Storybook", - brandUrl: "https://docs.waveterm.dev/storybook/", - brandImage: "./assets/wave-light.png", - brandTarget: "_self", -}); - -export const dark = create({ - base: "dark", - brandTitle: "Wave Terminal Storybook", - brandUrl: "https://docs.waveterm.dev/storybook/", - brandImage: "./assets/wave-dark.png", - brandTarget: "_self", -}); diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a5cf38e726..346c778302 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -39,12 +39,6 @@ We have a set of recommended Visual Studio Code extensions to enforce our style To build and run Wave locally, see instructions at [Building Wave Terminal](./BUILD.md). -### UI Component Library - -We are working to document all our UI components in [Storybook](https://storybook.js.org/docs) for easy reference and testing. If you would like to help us with this, we would be very grateful! - -Our Storybook site is hosted [docs.waveterm.dev/storybook](https://docs.waveterm.dev/storybook). - ### Create a Pull Request Guidelines: @@ -62,8 +56,6 @@ The project is broken into four main components: frontend, emain, wavesrv, and w Our frontend can be found in the [`/frontend`](./frontend/) directory. It is written in React Typescript. The main entrypoint is [`wave.ts`](./frontend/wave.ts) and the root for the React VDOM is [`app.tsx`](./frontend/app/app.tsx). If you are using `task dev` to run your dev instance of the app, the frontend will be loaded using Vite, which allows for Hot Module Reloading. This should work for most styling and simple component changes, but anything that affects the state of the app (the Jotai or layout code, for instance) may put the frontend into a bad state. If this happens, you can force reload the frontend using `Cmd:Shift:R` or `Ctrl:Shift:R`. -We also have a Storybook project configured for testing our component library. We're still working to fill out the test cases for this, but it is useful for testing components in isolation. You can run this using `task storybook`. - ### emain emain can be found at [`/emain`](./emain/). It is the main NodeJS process and is first thing that is run when you start up the app and it forks off the process for the wavesrv backend and manages all the Electron interfaces, such as window and view management, context menus, and native UI calls. Its main entrypoint is [`emain.ts`](./emain/emain.ts). This process does not hot-reload, you will need to manually kill the dev instance and rerun it to apply changes. diff --git a/README.md b/README.md index 8d3c8f09c1..ad49c7c2b2 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,6 @@ Find more information in our [Contributions Guide](CONTRIBUTING.md), which inclu - [Ways to contribute](CONTRIBUTING.md#contributing-to-wave-terminal) - [Contribution guidelines](CONTRIBUTING.md#before-you-start) -- [Storybook](https://docs.waveterm.dev/storybook) ## License diff --git a/Taskfile.yml b/Taskfile.yml index 1874a2cbc2..a5f73417d7 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -54,20 +54,6 @@ tasks: WCLOUD_ENDPOINT: "https://api-dev.waveterm.dev/central" WCLOUD_WS_ENDPOINT: "wss://wsapi-dev.waveterm.dev/" - storybook: - desc: Start the Storybook server. - cmd: npm run storybook - deps: - - npm:install - - storybook:build: - desc: Build the Storybook static site. - cmd: npm run build-storybook - generates: - - storybook-static/**/* - deps: - - npm:install - docs:npm:install: desc: Runs `npm install` in docs directory internal: true @@ -93,7 +79,6 @@ tasks: desc: Build the full docsite. cmds: - cd docs && npm run build - - task: copyfiles:'storybook-static':'docs/build/storybook' env: USE_SIMPLE_CSS_MINIFIER: "true" sources: @@ -101,12 +86,10 @@ tasks: - "docs/src/**/*" - "docs/docs/**/*" - "docs/static/**/*" - - storybook-static/**/* generates: - "docs/build/**/*" deps: - docs:npm:install - - storybook:build package: desc: Package the application for the current platform. diff --git a/docs/README.md b/docs/README.md index 6aebc0e886..f118e41d1f 100644 --- a/docs/README.md +++ b/docs/README.md @@ -17,11 +17,11 @@ This command starts a local development server and opens up a browser window. Mo ### Build ```sh -task docsite:build: +task docsite:build:public ``` This command generates static content into the `build` directory and can be served using any static contents hosting service. ### Deployment -Deployments are handled automatically by the [Docsite and Storybook CI/CD workflow](../.github/workflows/deploy-docsite.yml) +Deployments are handled automatically by the [Docsite CI/CD workflow](../.github/workflows/deploy-docsite.yml) diff --git a/frontend/app/element/button.stories.tsx b/frontend/app/element/button.stories.tsx deleted file mode 100644 index 9dcce99663..0000000000 --- a/frontend/app/element/button.stories.tsx +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright 2025, Command Line Inc. -// SPDX-License-Identifier: Apache-2.0 - -import type { Meta, StoryObj } from "@storybook/react"; -import { fn } from "@storybook/test"; -import { Button } from "./button"; - -const meta = { - title: "Elements/Button", - component: Button, - args: { - children: "Click Me", - disabled: false, - className: "", - onClick: fn(), - }, - argTypes: { - onClick: { - action: "clicked", - description: "Click event handler", - }, - children: { - description: "Content inside the button", - }, - disabled: { - description: "Disables the button if true", - }, - className: { - description: "Additional class names to style the button", - }, - }, -} satisfies Meta; - -export default meta; -type Story = StoryObj; - -export const Default: Story = {}; - -export const Disabled: Story = { - args: { - disabled: true, - children: "Disabled Button", - }, -}; - -export const GreySolid: Story = { - args: { - className: "solid grey", - children: "Grey Solid Button", - }, -}; - -export const RedSolid: Story = { - args: { - className: "solid red", - children: "Red Solid Button", - }, -}; - -export const YellowSolid: Story = { - args: { - className: "solid yellow", - children: "Yellow Solid Button", - }, -}; - -export const GreenOutlined: Story = { - args: { - className: "outlined green", - children: "Green Outline Button", - }, -}; - -export const GreyOutlined: Story = { - args: { - className: "outlined grey", - children: "Grey Outline Button", - }, -}; - -export const RedOutlined: Story = { - args: { - className: "outlined red", - children: "Red Outline Button", - }, -}; - -export const YellowOutlined: Story = { - args: { - className: "outlined yellow", - children: "Yellow Outline Button", - }, -}; - -export const GreenGhostText: Story = { - args: { - className: "ghost green", - children: "Yellow Ghost Text Button", - }, -}; - -export const GreyGhostText: Story = { - args: { - className: "ghost grey", - children: "Grey Ghost Text Button", - }, -}; - -export const RedGhost: Story = { - args: { - className: "ghost red", - children: "Red Ghost Text Button", - }, -}; - -export const YellowGhostText: Story = { - args: { - className: "ghost yellow", - children: "Yellow Ghost Text Button", - }, -}; diff --git a/frontend/app/element/emojipalette.stories.tsx b/frontend/app/element/emojipalette.stories.tsx deleted file mode 100644 index 3d5fe5c928..0000000000 --- a/frontend/app/element/emojipalette.stories.tsx +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2025, Command Line Inc. -// SPDX-License-Identifier: Apache-2.0 - -import type { Meta, StoryObj } from "@storybook/react"; -import { EmojiPalette } from "./emojipalette"; - -const meta: Meta = { - title: "Elements/EmojiPalette", - component: EmojiPalette, - args: { - className: "custom-emoji-palette-class", - }, - argTypes: { - className: { - description: "Custom class for emoji palette styling", - }, - }, -}; - -export default meta; -type Story = StoryObj; - -export const DefaultEmojiPalette: Story = { - render: (args) => { - return ( -
- -
- ); - }, - args: { - className: "custom-emoji-palette-class", - }, -}; diff --git a/frontend/app/element/expandablemenu.stories.tsx b/frontend/app/element/expandablemenu.stories.tsx deleted file mode 100644 index 2647067387..0000000000 --- a/frontend/app/element/expandablemenu.stories.tsx +++ /dev/null @@ -1,391 +0,0 @@ -// Copyright 2025, Command Line Inc. -// SPDX-License-Identifier: Apache-2.0 - -import { Meta, StoryObj } from "@storybook/react"; -import { - ExpandableMenu, - ExpandableMenuItem, - ExpandableMenuItemGroup, - ExpandableMenuItemGroupTitle, - ExpandableMenuItemLeftElement, - ExpandableMenuItemRightElement, - type ExpandableMenuItemData, -} from "./expandablemenu"; - -const meta: Meta = { - title: "Elements/ExpandableMenu", - component: ExpandableMenu, - tags: ["autodocs"], -}; - -export default meta; - -type Story = StoryObj; - -export const Default: Story = { - render: () => ( - - - 🏠 -
Dashboard
- Ctrl + D -
- - Settings - - 👤 -
Profile
-
- - 🔒 -
Account
-
-
- - More - - Submenu - - 📄 -
Item 1
-
- - 📄 -
Item 2
-
-
-
-
- ), -}; - -export const NestedExpandableMenu: Story = { - render: () => ( - - - 🏠 -
Home
-
- - - 📁 -
Categories
- {">"} -
- - - 📱 -
Electronics
-
- - - 📱 -
Mobile Phones
-
- - - 🤖 -
Android Phones
-
- - - 🔝 -
High-End
-
- - 📱 -
Samsung Galaxy S Series
- Ctrl + 1 -
- - 📱 -
Google Pixel
- Ctrl + 2 -
-
- - Budget - Redmi Note Series - Realme - -
- - iPhones - iPhone 14 - iPhone SE - -
- - Laptops - Gaming Laptops - Ultrabooks - -
- - Appliances - - Kitchen Appliances - Microwaves - Ovens - - - Large Appliances - Refrigerators - Washing Machines - - - Palette - -
test
-
-
-
-
-
- ), -}; - -const menuData: ExpandableMenuItemData[] = [ - { - type: "item", - leftElement: "🏠", - content: "Home", - id: "16830f20-b3b9-42bb-8cc9-db6f409651d8", - }, - { - type: "group", - title: { - leftElement: "📁", - label: "Categories", - rightElement: , - }, - isOpen: true, - id: "4564f119-645e-448c-80b7-2f40f887e670", - children: [ - { - type: "group", - title: { - leftElement: "📱", - label: "Electronics", - rightElement: , - }, - id: "596e76eb-d87d-425e-9f6e-1519069ee447", - children: [ - { - type: "group", - title: { - leftElement: "📱", - label: "Mobile Phones", - rightElement: , - }, - id: "0dbb9dff-dad3-4a5a-a6b1-53fea2d811c6", - children: [ - { - type: "group", - title: { - leftElement: "🤖", - label: "Android Phones", - rightElement: , - }, - id: "7cc2a2df-37d8-426e-9235-c1a0902d5843", - children: [ - { - type: "group", - title: { - leftElement: "🔝", - label: "High-End", - rightElement: , - }, - id: "75e709b9-d51b-4054-97e7-6fab33c2f88d", - children: [ - { - type: "item", - leftElement: "📱", - content: "Samsung Galaxy S Series", - rightElement: "Ctrl + 1", - id: "5aaa9050-3e58-4fe5-9ff5-638bded6a6e2", - }, - { - type: "item", - leftElement: "📱", - content: "Google Pixel", - rightElement: "Ctrl + 2", - id: "56e7f50f-78fc-4145-8294-e78b39de7501", - }, - ], - }, - { - type: "group", - title: { - label: "Budget", - rightElement: , - }, - id: "194d25a1-8cdd-41fa-a3a9-6f03d8a6ab37", - children: [ - { - type: "item", - content: "Redmi Note Series", - id: "c8b8248a-9c43-4eea-8725-33ae0c783858", - }, - { - type: "item", - content: "Realme", - id: "d61c762f-7d75-4f69-828c-24b41d2e0d9b", - }, - ], - }, - ], - }, - { - type: "group", - title: { - label: "iPhones", - rightElement: , - }, - id: "51b05462-1677-4258-87ac-eb18edc0a76c", - children: [ - { - type: "item", - content: "iPhone 14", - id: "0f468f54-0118-4e04-a885-ed3f650fc290", - }, - { - type: "item", - content: "iPhone SE", - id: "96289d85-c2c5-424b-8157-6d39969ba118", - }, - ], - }, - ], - }, - { - type: "group", - title: { - label: "Laptops", - rightElement: , - }, - id: "881e7d15-e8a0-4286-9004-ecde9a1a89f4", - children: [ - { - type: "item", - content: "Gaming Laptops", - id: "797859e1-50a2-4dca-93c9-1a630ef16498", - }, - { - type: "item", - content: "Ultrabooks", - id: "b90933d3-aaf1-4aa7-968c-fa3d25201585", - }, - ], - }, - ], - }, - { - type: "group", - title: { - label: "Appliances", - rightElement: , - }, - id: "3c9d098e-a4c7-4dae-a350-557672041ebb", - children: [ - { - type: "group", - title: { - label: "Kitchen Appliances", - rightElement: , - }, - id: "541c57e5-6247-4c97-a988-10af0f21c21d", - children: [ - { - type: "item", - content: "Microwaves", - id: "f785da1b-6f60-4411-8444-f928e7ed7e77", - }, - { - type: "item", - content: "Ovens", - id: "a4d3d2a7-bafa-4b4e-b7bd-88177f6515c3", - }, - ], - }, - { - type: "group", - title: { - label: "Large Appliances", - rightElement: , - }, - id: "c5a94ccc-1d42-45c4-aa22-db65816256a9", - children: [ - { - type: "item", - content: "Refrigerators", - id: "21b78bc0-5012-4f80-b552-00787654581e", - }, - { - type: "item", - content: "Washing Machines", - id: "2eb6eb7d-e624-4eba-88e2-521da1dc8a20", - }, - ], - }, - { - type: "group", - title: { - label: "Palette", - rightElement: , - }, - id: "34c52670-9267-47b6-a702-957c6f23a00b", - children: [ - { - type: "item", - content:
test
, - id: "965c81bb-e08d-4b90-954b-ea69ce33cdce", - }, - ], - }, - ], - }, - ], - }, -]; - -const renderExpandableMenu = (menuItems: ExpandableMenuItemData[]) => { - return menuItems.map((item) => { - if (item.type === "item") { - return ( - - {item.leftElement && ( - {item.leftElement} - )} -
{item.content as any}
- {item.rightElement && ( - {item.rightElement} - )} -
- ); - } else if (item.type === "group") { - return ( - - - {item.title.leftElement && ( - {item.title.leftElement} - )} -
{item.title.label}
- {item.title.rightElement && ( - {item.title.rightElement} - )} -
- {item.children && renderExpandableMenu(item.children)} -
- ); - } - }); -}; - -export const DynamicNestedExpandableMenu: Story = { - render: () => {renderExpandableMenu(menuData)}, -}; - -export const NoIndentExpandableMenu: Story = { - render: () => {renderExpandableMenu(menuData)}, -}; diff --git a/frontend/app/element/flyoutmenu.stories.tsx b/frontend/app/element/flyoutmenu.stories.tsx deleted file mode 100644 index 0e3a3c9dfa..0000000000 --- a/frontend/app/element/flyoutmenu.stories.tsx +++ /dev/null @@ -1,289 +0,0 @@ -import type { Meta, StoryObj } from "@storybook/react"; -import { useRef } from "react"; -import { Button } from "./button"; -import { FlyoutMenu } from "./flyoutmenu"; - -const items = [ - { label: "Fruit", onClick: (e) => console.log("Clicked Option 1") }, - { - label: "Vegetables", - subItems: [ - { label: "Carrot", onClick: (e) => console.log("Clicked Option 2 -> 1") }, - { label: "Potato", onClick: (e) => console.log("Clicked Option 2 -> 2") }, - ], - }, - { - label: "Beverages", - subItems: [ - { label: "Juice", onClick: (e) => console.log("Clicked Option 3 -> 1") }, - { label: "Tea", onClick: (e) => console.log("Clicked Option 3 -> 2") }, - { - label: "Coffee", - subItems: [ - { label: "Espresso", onClick: (e) => console.log("Clicked Option 3 -> 3 -> 1") }, - { label: "Latte", onClick: (e) => console.log("Clicked Option 3 -> 3 -> 2") }, - { label: "Cappuccino", onClick: (e) => console.log("Clicked Option 3 -> 3 -> 3") }, - { - label: "Mocha", - subItems: [ - { label: "Dark Chocolate", onClick: (e) => console.log("Clicked Option 3 -> 3 -> 4 -> 1") }, - { - label: "White Chocolate", - onClick: (e) => console.log("Clicked Option 3 -> 3 -> 4 -> 2"), - }, - { label: "Milk Chocolate", onClick: (e) => console.log("Clicked Option 3 -> 3 -> 4 -> 3") }, - ], - }, - ], - }, - ], - }, - { - label: "Desserts", - subItems: [ - { label: "Cake", onClick: (e) => console.log("Clicked Option 4 -> 1") }, - { label: "Ice Cream", onClick: (e) => console.log("Clicked Option 4 -> 2") }, - { label: "Cookies", onClick: (e) => console.log("Clicked Option 4 -> 3") }, - { label: "Brownies", onClick: (e) => console.log("Clicked Option 4 -> 4") }, - { label: "Cupcakes", onClick: (e) => console.log("Clicked Option 4 -> 5") }, - { label: "Donuts", onClick: (e) => console.log("Clicked Option 4 -> 6") }, - { label: "Pie", onClick: (e) => console.log("Clicked Option 4 -> 7") }, - ], - }, -]; - -const meta = { - title: "Elements/FlyoutMenu", - component: FlyoutMenu, - args: { - items: [], - children: null, - }, - argTypes: { - items: { - description: "Items of menu", - }, - className: { - description: "Custom className", - }, - children: { - description: "The contents of the menu anchor element", - }, - }, -} satisfies Meta; - -export default meta; -type Story = StoryObj; - -export const DefaultRendererLeftPositioned: Story = { - render: (args) => { - const mapItemsWithClick = (items: any[]) => { - return items.map((item) => ({ - ...item, - onClick: () => { - if (item.onClick) { - item.onClick(); - } - }, - subItems: item.subItems ? mapItemsWithClick(item.subItems) : undefined, - })); - }; - - const modifiedArgs = { - ...args, - items: mapItemsWithClick(args.items), - }; - - return ( -
-
- - - -
-
- ); - }, - args: { - items: items, - }, -}; - -export const DefaultRendererRightPositioned: Story = { - render: (args) => { - const mapItemsWithClick = (items: any[]) => { - return items.map((item) => ({ - ...item, - onClick: () => { - if (item.onClick) { - item.onClick(); - } - }, - subItems: item.subItems ? mapItemsWithClick(item.subItems) : undefined, - })); - }; - - const modifiedArgs = { - ...args, - items: mapItemsWithClick(args.items), - }; - - return ( -
-
- - - -
-
- ); - }, - args: { - items: items, - }, -}; - -export const DefaultRendererBottomRightPositioned: Story = { - render: (args) => { - const mapItemsWithClick = (items: any[]) => { - return items.map((item) => ({ - ...item, - onClick: () => { - if (item.onClick) { - item.onClick(); - } - }, - subItems: item.subItems ? mapItemsWithClick(item.subItems) : undefined, - })); - }; - - const modifiedArgs = { - ...args, - items: mapItemsWithClick(args.items), - }; - - return ( -
-
- - - -
-
- ); - }, - args: { - items: items, - }, -}; - -export const DefaultRendererBottomLeftPositioned: Story = { - render: (args) => { - const anchorRef = useRef(null); - const scopeRef = useRef(null); - - const mapItemsWithClick = (items: any[]) => { - return items.map((item) => ({ - ...item, - onClick: () => { - if (item.onClick) { - item.onClick(); - } - }, - subItems: item.subItems ? mapItemsWithClick(item.subItems) : undefined, - })); - }; - - const modifiedArgs = { - ...args, - items: mapItemsWithClick(args.items), - }; - - return ( -
-
- - - -
-
- ); - }, - args: { - items: items, - }, -}; - -export const CustomRenderer: Story = { - render: (args) => { - const mapItemsWithClick = (items: any[]) => { - return items.map((item) => ({ - ...item, - onClick: () => { - if (item.onClick) { - item.onClick(); - } - }, - subItems: item.subItems ? mapItemsWithClick(item.subItems) : undefined, - })); - }; - - const renderMenuItem = (item: any, props: any) => ( -
- {item.label} - {item.subItems && } -
- ); - - const renderMenu = (subMenu: React.ReactElement) =>
{subMenu}
; - - const modifiedArgs = { - ...args, - items: mapItemsWithClick(args.items), - }; - - return ( -
-
- - - -
-
- ); - }, - args: { - items: items, - }, -}; diff --git a/frontend/app/element/input.stories.tsx b/frontend/app/element/input.stories.tsx deleted file mode 100644 index ced811aab4..0000000000 --- a/frontend/app/element/input.stories.tsx +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright 2025, Command Line Inc. -// SPDX-License-Identifier: Apache-2.0 - -import type { Meta, StoryObj } from "@storybook/react"; -import { Input, InputGroup, InputLeftElement, InputRightElement } from "./input"; - -const meta: Meta = { - title: "Elements/Input", - component: InputGroup, - args: { - className: "custom-input-group-class", - }, - argTypes: { - className: { - description: "Custom class for input group styling", - }, - }, -}; - -export default meta; - -type Story = StoryObj; - -export const DefaultInput: Story = { - render: (args) => { - return ( -
- -
- ); - }, - args: { - className: "custom-input-group-class", - }, -}; - -export const InputWithLeftElement: Story = { - render: (args) => { - return ( -
- - - - - - -
- ); - }, - args: { - className: "custom-input-group-class", - }, -}; - -export const InputWithLeftAndRightElement: Story = { - render: (args) => { - return ( -
- - $ - - - - - -
- ); - }, - args: { - className: "custom-input-group-class", - }, -}; diff --git a/frontend/app/element/magnify.stories.tsx b/frontend/app/element/magnify.stories.tsx deleted file mode 100644 index 5e7e1c8b78..0000000000 --- a/frontend/app/element/magnify.stories.tsx +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2025, Command Line Inc. -// SPDX-License-Identifier: Apache-2.0 - -import type { Meta, StoryObj } from "@storybook/react"; -import { MagnifyIcon } from "./magnify"; - -const meta = { - title: "Icons/Magnify", - component: MagnifyIcon, - args: { - enabled: true, - }, -} satisfies Meta; - -export default meta; -type Story = StoryObj; - -export const Enabled: Story = { - args: { - enabled: true, - }, -}; - -export const Disabled: Story = { - args: { - enabled: false, - }, -}; diff --git a/frontend/app/element/menubutton.stories.tsx b/frontend/app/element/menubutton.stories.tsx deleted file mode 100644 index 70ea4c50fd..0000000000 --- a/frontend/app/element/menubutton.stories.tsx +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright 2025, Command Line Inc. -// SPDX-License-Identifier: Apache-2.0 - -import { Meta, StoryObj } from "@storybook/react"; -import { MenuButton } from "./menubutton"; - -const items: MenuItem[] = [ - { label: "Fruit", onClick: (e) => console.log("Clicked Option 1") }, - { - label: "Vegetables", - subItems: [ - { label: "Carrot", onClick: (e) => console.log("Clicked Option 2 -> 1") }, - { label: "Potato", onClick: (e) => console.log("Clicked Option 2 -> 2") }, - ], - }, - { - label: "Beverages", - subItems: [ - { label: "Juice", onClick: (e) => console.log("Clicked Option 3 -> 1") }, - { label: "Tea", onClick: (e) => console.log("Clicked Option 3 -> 2") }, - { - label: "Coffee", - subItems: [ - { label: "Espresso", onClick: (e) => console.log("Clicked Option 3 -> 3 -> 1") }, - { label: "Latte", onClick: (e) => console.log("Clicked Option 3 -> 3 -> 2") }, - { label: "Cappuccino", onClick: (e) => console.log("Clicked Option 3 -> 3 -> 3") }, - { - label: "Mocha", - subItems: [ - { label: "Dark Chocolate", onClick: (e) => console.log("Clicked Option 3 -> 3 -> 4 -> 1") }, - { - label: "White Chocolate", - onClick: (e) => console.log("Clicked Option 3 -> 3 -> 4 -> 2"), - }, - { label: "Milk Chocolate", onClick: (e) => console.log("Clicked Option 3 -> 3 -> 4 -> 3") }, - ], - }, - ], - }, - ], - }, - { - label: "Desserts", - subItems: [ - { label: "Cake", onClick: (e) => console.log("Clicked Option 4 -> 1") }, - { label: "Ice Cream", onClick: (e) => console.log("Clicked Option 4 -> 2") }, - { label: "Cookies", onClick: (e) => console.log("Clicked Option 4 -> 3") }, - { label: "Brownies", onClick: (e) => console.log("Clicked Option 4 -> 4") }, - { label: "Cupcakes", onClick: (e) => console.log("Clicked Option 4 -> 5") }, - { label: "Donuts", onClick: (e) => console.log("Clicked Option 4 -> 6") }, - { label: "Pie", onClick: (e) => console.log("Clicked Option 4 -> 7") }, - ], - }, -]; - -const meta: Meta = { - title: "Elements/MenuButton", // Updated title to reflect the component name - component: MenuButton, - argTypes: { - items: { control: "object" }, - text: { control: "text" }, - title: { control: "text" }, - className: { control: "text" }, - }, -}; - -export default meta; -type Story = StoryObj; - -const basicItems: MenuItem[] = [ - { - label: "Profile", - onClick: () => console.log("Profile clicked"), - }, - { - label: "Settings", - onClick: () => console.log("Settings clicked"), - }, - { - label: "Logout", - onClick: () => console.log("Logout clicked"), - }, -]; - -export const Default: Story = { - args: { - items: basicItems, - text: "Menu", - title: "Menu Button", - className: "", - }, - render: (args) => , -}; - -export const WithMoreItems: Story = { - args: { - items: items, - text: "Extended Menu", - title: "Extended Menu Button", - className: "", - }, - render: (args) => , -}; diff --git a/frontend/app/element/multilineinput.stories.tsx b/frontend/app/element/multilineinput.stories.tsx deleted file mode 100644 index 45b3f5e518..0000000000 --- a/frontend/app/element/multilineinput.stories.tsx +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright 2025, Command Line Inc. -// SPDX-License-Identifier: Apache-2.0 - -import type { Meta, StoryObj } from "@storybook/react"; -import { useState } from "react"; -import { MultiLineInput } from "./multilineinput"; - -const meta: Meta = { - title: "Elements/MultiLineInput", - component: MultiLineInput, - argTypes: { - value: { - description: "The value of the textarea.", - control: "text", - }, - placeholder: { - description: "The placeholder text for the textarea.", - control: "text", - defaultValue: "Type a message...", - }, - maxRows: { - description: "Maximum number of rows the textarea can expand to.", - control: "number", - defaultValue: 5, - }, - rows: { - description: "Initial number of rows for the textarea.", - control: "number", - defaultValue: 1, - }, - maxLength: { - description: "The maximum number of characters allowed.", - control: "number", - defaultValue: 200, - }, - autoFocus: { - description: "Autofocus the input when the component mounts.", - control: "boolean", - defaultValue: false, - }, - disabled: { - description: "Disables the textarea if set to true.", - control: "boolean", - defaultValue: false, - }, - }, -}; - -export default meta; -type Story = StoryObj; - -// Default MultiLineInput Story -export const DefaultMultiLineInput: Story = { - render: (args) => { - const [message, setMessage] = useState(""); - - const handleChange = (e: React.ChangeEvent) => { - setMessage(e.target.value); - }; - - return ( -
- -
- ); - }, - args: { - placeholder: "Type your message...", - rows: 1, - maxRows: 5, - }, -}; - -// MultiLineInput with long text -export const MultiLineInputWithLongText: Story = { - render: (args) => { - const [message, setMessage] = useState("This is a long message that will expand the textarea."); - - const handleChange = (e: React.ChangeEvent) => { - setMessage(e.target.value); - }; - - return ( -
- -
- ); - }, - args: { - placeholder: "Type a long message...", - rows: 1, - maxRows: 10, - }, -}; diff --git a/frontend/app/element/popover.stories.tsx b/frontend/app/element/popover.stories.tsx deleted file mode 100644 index e60b5b1cce..0000000000 --- a/frontend/app/element/popover.stories.tsx +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2025, Command Line Inc. -// SPDX-License-Identifier: Apache-2.0 - -import type { Meta, StoryObj } from "@storybook/react"; -import { Popover, PopoverButton, PopoverContent } from "./popover"; - -const meta: Meta = { - title: "Elements/Popover", - component: Popover, - args: { - className: "custom-popover-class", - }, - argTypes: { - className: { - description: "Custom class for popover styling", - }, - }, -}; - -export default meta; -type Story = StoryObj; - -export const DefaultPopover: Story = { - render: (args) => { - return ( -
- - - - - -
- - Empty -
-
-
-
- ); - }, - args: { - className: "custom-popover-class", - }, -}; diff --git a/frontend/app/element/progressbar.stories.tsx b/frontend/app/element/progressbar.stories.tsx deleted file mode 100644 index abdebc6912..0000000000 --- a/frontend/app/element/progressbar.stories.tsx +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2025, Command Line Inc. -// SPDX-License-Identifier: Apache-2.0 - -import type { Meta, StoryObj } from "@storybook/react"; -import { ProgressBar } from "./progressbar"; - -const meta: Meta = { - title: "Elements/ProgressBar", - component: ProgressBar, - args: { - progress: 0, // Default value - label: "Progress", - }, - argTypes: { - progress: { - description: "Percentage of progress (0-100)", - control: { type: "range", min: 0, max: 100 }, - }, - label: { - description: "Accessible label for the progress bar", - control: "text", - }, - }, -}; - -export default meta; - -type Story = StoryObj; - -export const EmptyProgress: Story = { - render: (args) => ( -
- -
- ), - args: { - progress: 0, // No progress - label: "Empty progress bar", - }, -}; - -export const FilledProgress: Story = { - render: (args) => ( -
- -
- ), - args: { - progress: 90, // Filled to 90% - label: "Filled progress bar", - }, -}; diff --git a/frontend/app/element/search.stories.tsx b/frontend/app/element/search.stories.tsx deleted file mode 100644 index 89f0f90a1b..0000000000 --- a/frontend/app/element/search.stories.tsx +++ /dev/null @@ -1,152 +0,0 @@ -// Copyright 2025, Command Line Inc. -// SPDX-License-Identifier: Apache-2.0 - -import type { Meta, StoryObj } from "@storybook/react"; -import { useSetAtom } from "jotai"; -import { useEffect } from "react"; -import { Popover } from "./popover"; -import { Search, useSearch } from "./search"; - -const meta: Meta = { - title: "Elements/Search", - component: Search, - args: {}, -}; - -export default meta; -type Story = StoryObj; - -export const Default: Story = { - render: (args) => { - const props = useSearch(); - const setIsOpen = useSetAtom(props.isOpen); - useEffect(() => { - setIsOpen(true); - }, []); - return ( -
} - style={{ - border: "2px solid black", - width: "100%", - height: "200px", - background: "var(--main-bg-color)", - }} - > - -
- ); - }, - args: {}, -}; - -export const AdditionalButtons: Story = { - render: (args) => { - const props = useSearch({ regex: true, caseSensitive: true, wholeWord: true }); - const setIsOpen = useSetAtom(props.isOpen); - useEffect(() => { - setIsOpen(true); - }, []); - return ( -
} - style={{ - border: "2px solid black", - width: "100%", - height: "200px", - background: "var(--main-bg-color)", - }} - > - -
- ); - }, - args: {}, -}; - -export const Results10: Story = { - render: (args) => { - const props = useSearch(); - const setIsOpen = useSetAtom(props.isOpen); - const setNumResults = useSetAtom(props.resultsCount); - useEffect(() => { - setIsOpen(true); - setNumResults(10); - }, []); - return ( -
} - style={{ - border: "2px solid black", - width: "100%", - height: "200px", - background: "var(--main-bg-color)", - }} - > - -
- ); - }, - args: {}, -}; - -export const InputAndResults10: Story = { - render: (args) => { - const props = useSearch(); - const setIsOpen = useSetAtom(props.isOpen); - const setNumResults = useSetAtom(props.resultsCount); - const setSearch = useSetAtom(props.searchValue); - useEffect(() => { - setIsOpen(true); - setSearch("search term"); - setTimeout(() => setNumResults(10), 10); - }, []); - return ( -
} - style={{ - border: "2px solid black", - width: "100%", - height: "200px", - background: "var(--main-bg-color)", - }} - > - -
- ); - }, - args: {}, -}; - -export const LongInputAndResults10: Story = { - render: (args) => { - const props = useSearch(); - const setIsOpen = useSetAtom(props.isOpen); - const setNumResults = useSetAtom(props.resultsCount); - const setSearch = useSetAtom(props.searchValue); - useEffect(() => { - setIsOpen(true); - setSearch("search term ".repeat(10).trimEnd()); - setTimeout(() => setNumResults(10), 10); - }, []); - return ( -
} - style={{ - border: "2px solid black", - width: "100%", - height: "200px", - background: "var(--main-bg-color)", - }} - > - -
- ); - }, - args: {}, -}; diff --git a/frontend/layout/lib/tilelayout.stories.scss b/frontend/layout/lib/tilelayout.stories.scss deleted file mode 100644 index b179ffc8f5..0000000000 --- a/frontend/layout/lib/tilelayout.stories.scss +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2024, Command Line Inc. -// SPDX-License-Identifier: Apache-2.0 - -.placeholder-visible { - .overlay-container, - .placeholder-container { - transform: unset !important; - } -} diff --git a/frontend/types/gotypes.d.ts b/frontend/types/gotypes.d.ts index 71cb982254..8b80fe62af 100644 --- a/frontend/types/gotypes.d.ts +++ b/frontend/types/gotypes.d.ts @@ -1220,6 +1220,8 @@ declare global { "count:views"?: {[key: string]: number}; "waveai:apitype"?: string; "waveai:model"?: string; + "waveai:chatid"?: string; + "waveai:stepnum"?: number; "waveai:inputtokens"?: number; "waveai:outputtokens"?: number; "waveai:nativewebsearchcount"?: number; diff --git a/package-lock.json b/package-lock.json index ef9616f849..b770d276d0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "waveterm", - "version": "0.12.4-beta.2", + "version": "0.12.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "waveterm", - "version": "0.12.4-beta.2", + "version": "0.12.4", "hasInstallScript": true, "license": "Apache-2.0", "workspaces": [ @@ -87,18 +87,8 @@ "yaml": "^2.7.1" }, "devDependencies": { - "@chromatic-com/storybook": "^3.2.7", "@eslint/js": "^8.57.0", "@rollup/plugin-node-resolve": "^16.0.3", - "@storybook/addon-essentials": "^8.6.14", - "@storybook/addon-interactions": "^8.6.14", - "@storybook/addon-links": "^8.6.14", - "@storybook/blocks": "^8.6.14", - "@storybook/builder-vite": "^8.6.14", - "@storybook/react": "^8.6.14", - "@storybook/react-vite": "^8.6.14", - "@storybook/test": "^8.6.14", - "@storybook/theming": "^8.6.14", "@tailwindcss/vite": "^4.1.17", "@types/color": "^4.2.0", "@types/css-tree": "^2", @@ -129,8 +119,6 @@ "prettier-plugin-jsdoc": "^1.5.0", "prettier-plugin-organize-imports": "^4.3.0", "sass": "1.91.0", - "storybook": "^8.6.14", - "storybook-dark-mode": "^4.0.2", "tailwindcss": "^4.1.17", "tailwindcss-animate": "^1.0.7", "ts-node": "^10.9.2", @@ -264,13 +252,6 @@ "@parcel/watcher": "^2.4.1" } }, - "node_modules/@adobe/css-tools": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.4.tgz", - "integrity": "sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==", - "dev": true, - "license": "MIT" - }, "node_modules/@ai-sdk/gateway": { "version": "2.0.11", "resolved": "https://registry.npmjs.org/@ai-sdk/gateway/-/gateway-2.0.11.tgz", @@ -2360,27 +2341,6 @@ "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==", "license": "Apache-2.0" }, - "node_modules/@chromatic-com/storybook": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/@chromatic-com/storybook/-/storybook-3.2.7.tgz", - "integrity": "sha512-fCGhk4cd3VA8RNg55MZL5CScdHqljsQcL9g6Ss7YuobHpSo9yytEWNdgMd5QxAHSPBlLGFHjnSmliM3G/BeBqw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chromatic": "^11.15.0", - "filesize": "^10.0.12", - "jsonfile": "^6.1.0", - "react-confetti": "^6.1.0", - "strip-ansi": "^7.1.0" - }, - "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" - } - }, "node_modules/@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", @@ -6712,40 +6672,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@joshwooding/vite-plugin-react-docgen-typescript": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@joshwooding/vite-plugin-react-docgen-typescript/-/vite-plugin-react-docgen-typescript-0.5.0.tgz", - "integrity": "sha512-qYDdL7fPwLRI+bJNurVcis+tNgJmvWjH4YTBGXTA8xMuxFrnAz6E5o35iyzyKbq5J5Lr8mJGfrR5GXl+WGwhgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "glob": "^10.0.0", - "magic-string": "^0.27.0", - "react-docgen-typescript": "^2.2.2" - }, - "peerDependencies": { - "typescript": ">= 4.3.x", - "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@joshwooding/vite-plugin-react-docgen-typescript/node_modules/magic-string": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", - "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.13" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", @@ -8572,569 +8498,6 @@ "integrity": "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==", "license": "MIT" }, - "node_modules/@storybook/addon-actions": { - "version": "8.6.14", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.6.14.tgz", - "integrity": "sha512-mDQxylxGGCQSK7tJPkD144J8jWh9IU9ziJMHfB84PKpI/V5ZgqMDnpr2bssTrUaGDqU5e1/z8KcRF+Melhs9pQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/global": "^5.0.0", - "@types/uuid": "^9.0.1", - "dequal": "^2.0.2", - "polished": "^4.2.2", - "uuid": "^9.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.14" - } - }, - "node_modules/@storybook/addon-actions/node_modules/@types/uuid": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", - "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@storybook/addon-backgrounds": { - "version": "8.6.14", - "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.6.14.tgz", - "integrity": "sha512-l9xS8qWe5n4tvMwth09QxH2PmJbCctEvBAc1tjjRasAfrd69f7/uFK4WhwJAstzBTNgTc8VXI4w8ZR97i1sFbg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/global": "^5.0.0", - "memoizerific": "^1.11.3", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.14" - } - }, - "node_modules/@storybook/addon-controls": { - "version": "8.6.14", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.6.14.tgz", - "integrity": "sha512-IiQpkNJdiRyA4Mq9mzjZlvQugL/aE7hNgVxBBGPiIZG6wb6Ht9hNnBYpap5ZXXFKV9p2qVI0FZK445ONmAa+Cw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/global": "^5.0.0", - "dequal": "^2.0.2", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.14" - } - }, - "node_modules/@storybook/addon-docs": { - "version": "8.6.14", - "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.6.14.tgz", - "integrity": "sha512-Obpd0OhAF99JyU5pp5ci17YmpcQtMNgqW2pTXV8jAiiipWpwO++hNDeQmLmlSXB399XjtRDOcDVkoc7rc6JzdQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@mdx-js/react": "^3.0.0", - "@storybook/blocks": "8.6.14", - "@storybook/csf-plugin": "8.6.14", - "@storybook/react-dom-shim": "8.6.14", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.14" - } - }, - "node_modules/@storybook/addon-essentials": { - "version": "8.6.14", - "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.6.14.tgz", - "integrity": "sha512-5ZZSHNaW9mXMOFkoPyc3QkoNGdJHETZydI62/OASR0lmPlJ1065TNigEo5dJddmZNn0/3bkE8eKMAzLnO5eIdA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/addon-actions": "8.6.14", - "@storybook/addon-backgrounds": "8.6.14", - "@storybook/addon-controls": "8.6.14", - "@storybook/addon-docs": "8.6.14", - "@storybook/addon-highlight": "8.6.14", - "@storybook/addon-measure": "8.6.14", - "@storybook/addon-outline": "8.6.14", - "@storybook/addon-toolbars": "8.6.14", - "@storybook/addon-viewport": "8.6.14", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.14" - } - }, - "node_modules/@storybook/addon-highlight": { - "version": "8.6.14", - "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.6.14.tgz", - "integrity": "sha512-4H19OJlapkofiE9tM6K/vsepf4ir9jMm9T+zw5L85blJZxhKZIbJ6FO0TCG9PDc4iPt3L6+aq5B0X29s9zicNQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/global": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.14" - } - }, - "node_modules/@storybook/addon-interactions": { - "version": "8.6.14", - "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.6.14.tgz", - "integrity": "sha512-8VmElhm2XOjh22l/dO4UmXxNOolGhNiSpBcls2pqWSraVh4a670EyYBZsHpkXqfNHo2YgKyZN3C91+9zfH79qQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.6.14", - "@storybook/test": "8.6.14", - "polished": "^4.2.2", - "ts-dedent": "^2.2.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.14" - } - }, - "node_modules/@storybook/addon-links": { - "version": "8.6.14", - "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-8.6.14.tgz", - "integrity": "sha512-DRlXHIyZzOruAZkxmXfVgTF+4d6K27pFcH4cUsm3KT1AXuZbr23lb5iZHpUZoG6lmU85Sru4xCEgewSTXBIe1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/global": "^5.0.0", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^8.6.14" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - } - } - }, - "node_modules/@storybook/addon-measure": { - "version": "8.6.14", - "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.6.14.tgz", - "integrity": "sha512-1Tlyb72NX8aAqm6I6OICsUuGOP6hgnXcuFlXucyhKomPa6j3Eu2vKu561t/f0oGtAK2nO93Z70kVaEh5X+vaGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/global": "^5.0.0", - "tiny-invariant": "^1.3.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.14" - } - }, - "node_modules/@storybook/addon-outline": { - "version": "8.6.14", - "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.6.14.tgz", - "integrity": "sha512-CW857JvN6OxGWElqjlzJO2S69DHf+xO3WsEfT5mT3ZtIjmsvRDukdWfDU9bIYUFyA2lFvYjncBGjbK+I91XR7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/global": "^5.0.0", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.14" - } - }, - "node_modules/@storybook/addon-toolbars": { - "version": "8.6.14", - "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.6.14.tgz", - "integrity": "sha512-W/wEXT8h3VyZTVfWK/84BAcjAxTdtRiAkT2KAN0nbSHxxB5KEM1MjKpKu2upyzzMa3EywITqbfy4dP6lpkVTwQ==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.14" - } - }, - "node_modules/@storybook/addon-viewport": { - "version": "8.6.14", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.6.14.tgz", - "integrity": "sha512-gNzVQbMqRC+/4uQTPI2ZrWuRHGquTMZpdgB9DrD88VTEjNudP+J6r8myLfr2VvGksBbUMHkGHMXHuIhrBEnXYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "memoizerific": "^1.11.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.14" - } - }, - "node_modules/@storybook/blocks": { - "version": "8.6.14", - "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.6.14.tgz", - "integrity": "sha512-rBMHAfA39AGHgkrDze4RmsnQTMw1ND5fGWobr9pDcJdnDKWQWNRD7Nrlxj0gFlN3n4D9lEZhWGdFrCbku7FVAQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/icons": "^1.2.12", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "storybook": "^8.6.14" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } - } - }, - "node_modules/@storybook/builder-vite": { - "version": "8.6.14", - "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-8.6.14.tgz", - "integrity": "sha512-ajWYhy32ksBWxwWHrjwZzyC0Ii5ZTeu5lsqA95Q/EQBB0P5qWlHWGM3AVyv82Mz/ND03ebGy123uVwgf6olnYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/csf-plugin": "8.6.14", - "browser-assert": "^1.2.1", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.14", - "vite": "^4.0.0 || ^5.0.0 || ^6.0.0" - } - }, - "node_modules/@storybook/components": { - "version": "8.6.14", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.6.14.tgz", - "integrity": "sha512-HNR2mC5I4Z5ek8kTrVZlIY/B8gJGs5b3XdZPBPBopTIN6U/YHXiDyOjY3JlaS4fSG1fVhp/Qp1TpMn1w/9m1pw==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" - } - }, - "node_modules/@storybook/core": { - "version": "8.6.14", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.6.14.tgz", - "integrity": "sha512-1P/w4FSNRqP8j3JQBOi3yGt8PVOgSRbP66Ok520T78eJBeqx9ukCfl912PQZ7SPbW3TIunBwLXMZOjZwBB/JmA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/theming": "8.6.14", - "better-opn": "^3.0.2", - "browser-assert": "^1.2.1", - "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0", - "esbuild-register": "^3.5.0", - "jsdoc-type-pratt-parser": "^4.0.0", - "process": "^0.11.10", - "recast": "^0.23.5", - "semver": "^7.6.2", - "util": "^0.12.5", - "ws": "^8.2.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "prettier": "^2 || ^3" - }, - "peerDependenciesMeta": { - "prettier": { - "optional": true - } - } - }, - "node_modules/@storybook/core-events": { - "version": "8.6.14", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.6.14.tgz", - "integrity": "sha512-RrJ95u3HuIE4Nk8VmZP0tc/u0vYoE2v9fYlMw6K2GUSExzKDITs3voy6WMIY7Q3qbQun8XUXVlmqkuFzTEy/pA==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" - } - }, - "node_modules/@storybook/csf-plugin": { - "version": "8.6.14", - "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.6.14.tgz", - "integrity": "sha512-dErtc9teAuN+eelN8FojzFE635xlq9cNGGGEu0WEmMUQ4iJ8pingvBO1N8X3scz4Ry7KnxX++NNf3J3gpxS8qQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "unplugin": "^1.3.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.14" - } - }, - "node_modules/@storybook/global": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@storybook/global/-/global-5.0.0.tgz", - "integrity": "sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@storybook/icons": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@storybook/icons/-/icons-1.4.0.tgz", - "integrity": "sha512-Td73IeJxOyalzvjQL+JXx72jlIYHgs+REaHiREOqfpo3A2AYYG71AUbcv+lg7mEDIweKVCxsMQ0UKo634c8XeA==", - "dev": true, - "license": "MIT", - "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" - } - }, - "node_modules/@storybook/instrumenter": { - "version": "8.6.14", - "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.6.14.tgz", - "integrity": "sha512-iG4MlWCcz1L7Yu8AwgsnfVAmMbvyRSk700Mfy2g4c8y5O+Cv1ejshE1LBBsCwHgkuqU0H4R0qu4g23+6UnUemQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/global": "^5.0.0", - "@vitest/utils": "^2.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.14" - } - }, - "node_modules/@storybook/manager-api": { - "version": "8.6.14", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.6.14.tgz", - "integrity": "sha512-ez0Zihuy17udLbfHZQXkGqwtep0mSGgHcNzGN7iZrMP1m+VmNo+7aGCJJdvXi7+iU3yq8weXSQFWg5DqWgLS7g==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" - } - }, - "node_modules/@storybook/preview-api": { - "version": "8.6.14", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.6.14.tgz", - "integrity": "sha512-2GhcCd4dNMrnD7eooEfvbfL4I83qAqEyO0CO7JQAmIO6Rxb9BsOLLI/GD5HkvQB73ArTJ+PT50rfaO820IExOQ==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" - } - }, - "node_modules/@storybook/react": { - "version": "8.6.14", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.6.14.tgz", - "integrity": "sha512-BOepx5bBFwl/CPI+F+LnmMmsG1wQYmrX/UQXgUbHQUU9Tj7E2ndTnNbpIuSLc8IrM03ru+DfwSg1Co3cxWtT+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/components": "8.6.14", - "@storybook/global": "^5.0.0", - "@storybook/manager-api": "8.6.14", - "@storybook/preview-api": "8.6.14", - "@storybook/react-dom-shim": "8.6.14", - "@storybook/theming": "8.6.14" - }, - "engines": { - "node": ">=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "@storybook/test": "8.6.14", - "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.6.14", - "typescript": ">= 4.2.x" - }, - "peerDependenciesMeta": { - "@storybook/test": { - "optional": true - }, - "typescript": { - "optional": true - } - } - }, - "node_modules/@storybook/react-dom-shim": { - "version": "8.6.14", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.6.14.tgz", - "integrity": "sha512-0hixr3dOy3f3M+HBofp3jtMQMS+sqzjKNgl7Arfuj3fvjmyXOks/yGjDImySR4imPtEllvPZfhiQNlejheaInw==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "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.6.14" - } - }, - "node_modules/@storybook/react-vite": { - "version": "8.6.14", - "resolved": "https://registry.npmjs.org/@storybook/react-vite/-/react-vite-8.6.14.tgz", - "integrity": "sha512-FZU0xMPxa4/TO87FgcWwappOxLBHZV5HSRK5K+2bJD7rFJAoNorbHvB4Q1zvIAk7eCMjkr2GPCPHx9PRB9vJFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@joshwooding/vite-plugin-react-docgen-typescript": "0.5.0", - "@rollup/pluginutils": "^5.0.2", - "@storybook/builder-vite": "8.6.14", - "@storybook/react": "8.6.14", - "find-up": "^5.0.0", - "magic-string": "^0.30.0", - "react-docgen": "^7.0.0", - "resolve": "^1.22.8", - "tsconfig-paths": "^4.2.0" - }, - "engines": { - "node": ">=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "@storybook/test": "8.6.14", - "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.6.14", - "vite": "^4.0.0 || ^5.0.0 || ^6.0.0" - }, - "peerDependenciesMeta": { - "@storybook/test": { - "optional": true - } - } - }, - "node_modules/@storybook/test": { - "version": "8.6.14", - "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.6.14.tgz", - "integrity": "sha512-GkPNBbbZmz+XRdrhMtkxPotCLOQ1BaGNp/gFZYdGDk2KmUWBKmvc5JxxOhtoXM2703IzNFlQHSSNnhrDZYuLlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.6.14", - "@testing-library/dom": "10.4.0", - "@testing-library/jest-dom": "6.5.0", - "@testing-library/user-event": "14.5.2", - "@vitest/expect": "2.0.5", - "@vitest/spy": "2.0.5" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.14" - } - }, - "node_modules/@storybook/theming": { - "version": "8.6.14", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.6.14.tgz", - "integrity": "sha512-r4y+LsiB37V5hzpQo+BM10PaCsp7YlZ0YcZzQP1OCkPlYXmUAFy2VvDKaFRpD8IeNPKug2u4iFm/laDEbs03dg==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" - } - }, "node_modules/@svgr/babel-plugin-add-jsx-attribute": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", @@ -10093,82 +9456,6 @@ "url": "https://github.com/sponsors/tannerlinsley" } }, - "node_modules/@testing-library/dom": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz", - "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/runtime": "^7.12.5", - "@types/aria-query": "^5.0.1", - "aria-query": "5.3.0", - "chalk": "^4.1.0", - "dom-accessibility-api": "^0.5.9", - "lz-string": "^1.5.0", - "pretty-format": "^27.0.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@testing-library/jest-dom": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.5.0.tgz", - "integrity": "sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@adobe/css-tools": "^4.4.0", - "aria-query": "^5.0.0", - "chalk": "^3.0.0", - "css.escape": "^1.5.1", - "dom-accessibility-api": "^0.6.3", - "lodash": "^4.17.21", - "redent": "^3.0.0" - }, - "engines": { - "node": ">=14", - "npm": ">=6", - "yarn": ">=1" - } - }, - "node_modules/@testing-library/jest-dom/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", - "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@testing-library/user-event": { - "version": "14.5.2", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz", - "integrity": "sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12", - "npm": ">=6" - }, - "peerDependencies": { - "@testing-library/dom": ">=7.21.4" - } - }, "node_modules/@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", @@ -10216,58 +9503,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/aria-query": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", - "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", - "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", - "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.2" - } - }, "node_modules/@types/body-parser": { "version": "1.19.6", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", @@ -10642,13 +9877,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/doctrine": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.9.tgz", - "integrity": "sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/eslint": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", @@ -11514,61 +10742,6 @@ "vitest": "3.2.4" } }, - "node_modules/@vitest/expect": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.5.tgz", - "integrity": "sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/spy": "2.0.5", - "@vitest/utils": "2.0.5", - "chai": "^5.1.1", - "tinyrainbow": "^1.2.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/expect/node_modules/@vitest/pretty-format": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.5.tgz", - "integrity": "sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyrainbow": "^1.2.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/expect/node_modules/@vitest/utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.5.tgz", - "integrity": "sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "2.0.5", - "estree-walker": "^3.0.3", - "loupe": "^3.1.1", - "tinyrainbow": "^1.2.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/expect/node_modules/tinyrainbow": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", - "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@vitest/mocker": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz", @@ -11619,29 +10792,6 @@ "node": ">=14.0.0" } }, - "node_modules/@vitest/pretty-format": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.9.tgz", - "integrity": "sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyrainbow": "^1.2.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/pretty-format/node_modules/tinyrainbow": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", - "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@vitest/runner": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz", @@ -11713,44 +10863,6 @@ "url": "https://opencollective.com/vitest" } }, - "node_modules/@vitest/spy": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.5.tgz", - "integrity": "sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyspy": "^3.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/utils": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.9.tgz", - "integrity": "sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "2.1.9", - "loupe": "^3.1.2", - "tinyrainbow": "^1.2.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/utils/node_modules/tinyrainbow": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", - "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@volar/language-core": { "version": "2.4.23", "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.23.tgz", @@ -12539,16 +11651,6 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "license": "Python-2.0" }, - "node_modules/aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "dequal": "^2.0.3" - } - }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -12585,19 +11687,6 @@ "node": ">=12" } }, - "node_modules/ast-types": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", - "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -12688,22 +11777,6 @@ "postcss": "^8.1.0" } }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/b4a": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.1.tgz", @@ -12927,19 +12000,6 @@ "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", "license": "MIT" }, - "node_modules/better-opn": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", - "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "open": "^8.0.4" - }, - "engines": { - "node": ">=12.0.0" - } - }, "node_modules/big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -13114,12 +12174,6 @@ "node": ">=8" } }, - "node_modules/browser-assert": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/browser-assert/-/browser-assert-1.2.1.tgz", - "integrity": "sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==", - "dev": true - }, "node_modules/browserslist": { "version": "4.26.0", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.26.0.tgz", @@ -13753,30 +12807,6 @@ "node": ">=10" } }, - "node_modules/chromatic": { - "version": "11.29.0", - "resolved": "https://registry.npmjs.org/chromatic/-/chromatic-11.29.0.tgz", - "integrity": "sha512-yisBlntp9hHVj19lIQdpTlcYIXuU9H/DbFuu6tyWHmj6hWT2EtukCCcxYXL78XdQt1vm2GfIrtgtKpj/Rzmo4A==", - "dev": true, - "license": "MIT", - "bin": { - "chroma": "dist/bin.js", - "chromatic": "dist/bin.js", - "chromatic-cli": "dist/bin.js" - }, - "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 - } - } - }, "node_modules/chrome-trace-event": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", @@ -14955,13 +13985,6 @@ "url": "https://github.com/sponsors/fb55" } }, - "node_modules/css.escape": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", - "dev": true, - "license": "MIT" - }, "node_modules/cssdb": { "version": "8.4.0", "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.4.0.tgz", @@ -16072,13 +15095,6 @@ "sass": "^1.30.0" } }, - "node_modules/dom-accessibility-api": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", - "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", - "dev": true, - "license": "MIT" - }, "node_modules/dom-converter": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", @@ -16767,19 +15783,6 @@ "@esbuild/win32-x64": "0.25.9" } }, - "node_modules/esbuild-register": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz", - "integrity": "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, - "peerDependencies": { - "esbuild": ">=0.12 <1" - } - }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -17739,16 +16742,6 @@ "node": ">=10" } }, - "node_modules/filesize": { - "version": "10.1.6", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-10.1.6.tgz", - "integrity": "sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 10.4.0" - } - }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -17884,22 +16877,6 @@ } } }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/foreground-child": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", @@ -19611,23 +18588,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/is-arguments": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", - "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -19646,19 +18606,6 @@ "node": ">=8" } }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-ci": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", @@ -19745,25 +18692,6 @@ "node": ">=8" } }, - "node_modules/is-generator-function": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", - "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-proto": "^1.0.0", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -19889,25 +18817,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-regexp": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", @@ -19929,22 +18838,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -20250,16 +19143,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsdoc-type-pratt-parser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.8.0.tgz", - "integrity": "sha512-iZ8Bdb84lWRuGHamRXFyML07r21pcwBrLkHEuHgEY5UbCouBwv7ECknDRKzsQIXMiqpPymqtIf8TC/shYKB5rw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - } - }, "node_modules/jsesc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", @@ -21026,16 +19909,6 @@ "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, - "node_modules/lz-string": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", - "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", - "dev": true, - "license": "MIT", - "bin": { - "lz-string": "bin/bin.js" - } - }, "node_modules/magic-string": { "version": "0.30.21", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", @@ -21181,13 +20054,6 @@ "dev": true, "license": "ISC" }, - "node_modules/map-or-similar": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz", - "integrity": "sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==", - "dev": true, - "license": "MIT" - }, "node_modules/markdown-extensions": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", @@ -21729,16 +20595,6 @@ "node": ">= 4.0.0" } }, - "node_modules/memoizerific": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz", - "integrity": "sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==", - "dev": true, - "license": "MIT", - "dependencies": { - "map-or-similar": "^1.5.0" - } - }, "node_modules/merge-descriptors": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", @@ -23750,16 +22606,6 @@ "node": ">=4" } }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/mini-css-extract-plugin": { "version": "2.9.4", "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.4.tgz", @@ -25527,29 +24373,6 @@ "points-on-curve": "0.2.0" } }, - "node_modules/polished": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/polished/-/polished-4.3.1.tgz", - "integrity": "sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.17.8" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/postcss": { "version": "8.5.6", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", @@ -27242,41 +26065,6 @@ "renderkid": "^3.0.0" } }, - "node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/pretty-format/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true, - "license": "MIT" - }, "node_modules/pretty-time": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", @@ -27318,16 +26106,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -27617,22 +26395,6 @@ "node": ">=0.10.0" } }, - "node_modules/react-confetti": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/react-confetti/-/react-confetti-6.4.0.tgz", - "integrity": "sha512-5MdGUcqxrTU26I2EU7ltkWPwxvucQTuqMm8dUz72z2YMqTD6s9vMcDUysk7n9jnC+lXuCPeJJ7Knf98VEYE9Rg==", - "dev": true, - "license": "MIT", - "dependencies": { - "tween-functions": "^1.2.0" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "react": "^16.3.0 || ^17.0.1 || ^18.0.0 || ^19.0.0" - } - }, "node_modules/react-dnd": { "version": "16.0.1", "resolved": "https://registry.npmjs.org/react-dnd/-/react-dnd-16.0.1.tgz", @@ -27672,38 +26434,6 @@ "dnd-core": "^16.0.1" } }, - "node_modules/react-docgen": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-7.1.1.tgz", - "integrity": "sha512-hlSJDQ2synMPKFZOsKo9Hi8WWZTC7POR8EmWvTSjow+VDgKzkmjQvFm2fk0tmRw+f0vTOIYKlarR0iL4996pdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.18.9", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9", - "@types/babel__core": "^7.18.0", - "@types/babel__traverse": "^7.18.0", - "@types/doctrine": "^0.0.9", - "@types/resolve": "^1.20.2", - "doctrine": "^3.0.0", - "resolve": "^1.22.1", - "strip-indent": "^4.0.0" - }, - "engines": { - "node": ">=16.14.0" - } - }, - "node_modules/react-docgen-typescript": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-2.4.0.tgz", - "integrity": "sha512-ZtAp5XTO5HRzQctjPU0ybY0RRCQO19X/8fxn3w7y2VVTUbGHDKULPTL4ky3vB05euSgG5NpALhEhDPvQ56wvXg==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "typescript": ">= 4.3.x" - } - }, "node_modules/react-dom": { "version": "19.2.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz", @@ -28024,33 +26754,6 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/recast": { - "version": "0.23.11", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.11.tgz", - "integrity": "sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ast-types": "^0.16.1", - "esprima": "~4.0.0", - "source-map": "~0.6.1", - "tiny-invariant": "^1.3.3", - "tslib": "^2.0.1" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/recast/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/recharts": { "version": "2.15.4", "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.15.4.tgz", @@ -28156,33 +26859,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/redent/node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/redux": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", @@ -29817,24 +28493,6 @@ ], "license": "MIT" }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/safe-stable-stringify": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", @@ -31031,50 +29689,6 @@ "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==", "license": "MIT" }, - "node_modules/storybook": { - "version": "8.6.14", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.6.14.tgz", - "integrity": "sha512-sVKbCj/OTx67jhmauhxc2dcr1P+yOgz/x3h0krwjyMgdc5Oubvxyg4NYDZmzAw+ym36g/lzH8N0Ccp4dwtdfxw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/core": "8.6.14" - }, - "bin": { - "getstorybook": "bin/index.cjs", - "sb": "bin/index.cjs", - "storybook": "bin/index.cjs" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "prettier": "^2 || ^3" - }, - "peerDependenciesMeta": { - "prettier": { - "optional": true - } - } - }, - "node_modules/storybook-dark-mode": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/storybook-dark-mode/-/storybook-dark-mode-4.0.2.tgz", - "integrity": "sha512-zjcwwQ01R5t1VsakA6alc2JDIRVtavryW8J3E3eKLDIlAMcvsgtpxlelWkZs2cuNspk6Z10XzhQVrUWtYc3F0w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/components": "^8.0.0", - "@storybook/core-events": "^8.0.0", - "@storybook/global": "^5.0.0", - "@storybook/icons": "^1.2.5", - "@storybook/manager-api": "^8.0.0", - "@storybook/theming": "^8.0.0", - "fast-deep-equal": "^3.1.3", - "memoizerific": "^1.11.3" - } - }, "node_modules/streamdown": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/streamdown/-/streamdown-1.3.0.tgz", @@ -31282,16 +29896,6 @@ "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/strip-bom-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", @@ -31310,19 +29914,6 @@ "node": ">=6" } }, - "node_modules/strip-indent": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.1.0.tgz", - "integrity": "sha512-OA95x+JPmL7kc7zCu+e+TeYxEiaIyndRx0OrBcK2QPPH09oAndr2ALvymxWA+Lx1PYYvFUm4O63pRkdJAaW96w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -31956,16 +30547,6 @@ "node": ">=14.0.0" } }, - "node_modules/tinyspy": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", - "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/tmp": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", @@ -32149,21 +30730,6 @@ } } }, - "node_modules/tsconfig-paths": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", - "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "json5": "^2.2.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", @@ -32206,13 +30772,6 @@ "node": "*" } }, - "node_modules/tween-functions": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/tween-functions/-/tween-functions-1.2.0.tgz", - "integrity": "sha512-PZBtLYcCLtEcjL14Fzb1gSxPBeL7nWvGhO5ZFPGqziCcr8uvHp0NDmdjBchp6KHL+tExcg0m3NISmKxhU394dA==", - "dev": true, - "license": "BSD" - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -32815,20 +31374,6 @@ "node": ">= 0.8" } }, - "node_modules/unplugin": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.16.1.tgz", - "integrity": "sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.14.0", - "webpack-virtual-modules": "^0.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/update-browserslist-db": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", @@ -33012,20 +31557,6 @@ "dev": true, "license": "(WTFPL OR MIT)" }, - "node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -33056,20 +31587,6 @@ "node": ">= 0.4.0" } }, - "node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "dev": true, - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/uvu": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", @@ -34091,13 +32608,6 @@ "node": ">=10.13.0" } }, - "node_modules/webpack-virtual-modules": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", - "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", - "dev": true, - "license": "MIT" - }, "node_modules/webpack/node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -34242,28 +32752,6 @@ "node": ">= 8" } }, - "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/why-is-node-running": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", diff --git a/package.json b/package.json index 373a614b5b..5011858648 100644 --- a/package.json +++ b/package.json @@ -23,25 +23,13 @@ "start": "electron-vite preview", "build:dev": "electron-vite build --mode development", "build:prod": "electron-vite build --mode production", - "storybook": "storybook dev -p 6006 --no-open", - "build-storybook": "storybook build", "coverage": "vitest run --coverage", "test": "vitest", "postinstall": "electron-builder install-app-deps" }, "devDependencies": { - "@chromatic-com/storybook": "^3.2.7", "@eslint/js": "^8.57.0", "@rollup/plugin-node-resolve": "^16.0.3", - "@storybook/addon-essentials": "^8.6.14", - "@storybook/addon-interactions": "^8.6.14", - "@storybook/addon-links": "^8.6.14", - "@storybook/blocks": "^8.6.14", - "@storybook/builder-vite": "^8.6.14", - "@storybook/react": "^8.6.14", - "@storybook/react-vite": "^8.6.14", - "@storybook/test": "^8.6.14", - "@storybook/theming": "^8.6.14", "@tailwindcss/vite": "^4.1.17", "@types/color": "^4.2.0", "@types/css-tree": "^2", @@ -72,8 +60,6 @@ "prettier-plugin-jsdoc": "^1.5.0", "prettier-plugin-organize-imports": "^4.3.0", "sass": "1.91.0", - "storybook": "^8.6.14", - "storybook-dark-mode": "^4.0.2", "tailwindcss": "^4.1.17", "tailwindcss-animate": "^1.0.7", "ts-node": "^10.9.2",