From b384860eec0c5dbd102a3a87fe62c29cde7bb7ab Mon Sep 17 00:00:00 2001 From: tdgao Date: Fri, 26 Dec 2025 18:11:04 -0800 Subject: [PATCH 01/21] add storybook --- .gitignore | 3 + packages/ui/.storybook/main.ts | 17 + packages/ui/.storybook/preview.ts | 16 + packages/ui/eslint.config.mjs | 17 +- packages/ui/package.json | 25 +- packages/ui/postcss.config.js | 6 + .../base/stories/ButtonStyled.stories.ts | 120 + .../components/base/stories/Chips.stories.ts | 58 + .../base/stories/DropzoneFileInput.stories.ts | 125 + packages/ui/src/styles/tailwind.css | 3 + packages/ui/tailwind.config.ts | 7 +- packages/ui/vite.config.ts | 28 + pnpm-lock.yaml | 2400 ++++++++++++++--- 13 files changed, 2401 insertions(+), 424 deletions(-) create mode 100644 packages/ui/.storybook/main.ts create mode 100644 packages/ui/.storybook/preview.ts create mode 100644 packages/ui/postcss.config.js create mode 100644 packages/ui/src/components/base/stories/ButtonStyled.stories.ts create mode 100644 packages/ui/src/components/base/stories/Chips.stories.ts create mode 100644 packages/ui/src/components/base/stories/DropzoneFileInput.stories.ts create mode 100644 packages/ui/src/styles/tailwind.css create mode 100644 packages/ui/vite.config.ts diff --git a/.gitignore b/.gitignore index b6d7c5d172..33d2b2733e 100644 --- a/.gitignore +++ b/.gitignore @@ -68,3 +68,6 @@ app-playground-data/* # labrinth demo fixtures apps/labrinth/fixtures/demo + +*storybook.log +storybook-static diff --git a/packages/ui/.storybook/main.ts b/packages/ui/.storybook/main.ts new file mode 100644 index 0000000000..c56e2b6535 --- /dev/null +++ b/packages/ui/.storybook/main.ts @@ -0,0 +1,17 @@ +import type { StorybookConfig } from '@storybook/vue3-vite' + +const config: StorybookConfig = { + framework: '@storybook/vue3-vite', + core: { + builder: '@storybook/builder-vite', + }, + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + addons: [ + '@chromatic-com/storybook', + '@storybook/addon-vitest', + '@storybook/addon-a11y', + '@storybook/addon-docs', + '@storybook/addon-onboarding', + ], +} +export default config diff --git a/packages/ui/.storybook/preview.ts b/packages/ui/.storybook/preview.ts new file mode 100644 index 0000000000..f893952ffc --- /dev/null +++ b/packages/ui/.storybook/preview.ts @@ -0,0 +1,16 @@ +import '../src/styles/tailwind.css' + +import type { Preview } from '@storybook/vue3-vite' + +const preview: Preview = { + parameters: { + controls: { + matchers: { + color: /(background|color)$/i, + date: /Date$/i, + }, + }, + }, +} + +export default preview diff --git a/packages/ui/eslint.config.mjs b/packages/ui/eslint.config.mjs index 3d6da7fb54..65d9c9f44e 100644 --- a/packages/ui/eslint.config.mjs +++ b/packages/ui/eslint.config.mjs @@ -1,2 +1,15 @@ -import config from '@modrinth/tooling-config/eslint/nuxt.mjs' -export default config +import baseConfig from '@modrinth/tooling-config/eslint/nuxt.mjs' +import storybook from 'eslint-plugin-storybook' + +export default [ + ...baseConfig, + { + files: ['**/*.stories.@(js|jsx|ts|tsx)', '**/.storybook/**/*.@(js|ts)'], + plugins: { + storybook, + }, + rules: { + ...storybook.configs.recommended.rules, + }, + }, +] diff --git a/packages/ui/package.json b/packages/ui/package.json index 43040e4343..4efba0cf37 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -1,6 +1,7 @@ { "name": "@modrinth/ui", "version": "0.0.0", + "type": "module", "private": true, "main": "./index.ts", "types": "./index.ts", @@ -18,19 +19,39 @@ "scripts": { "lint": "eslint . && prettier --check .", "fix": "eslint . --fix && prettier --write .", - "intl:extract": "formatjs extract \"src/**/*.{vue,ts,tsx,js,jsx,mts,cts,mjs,cjs}\" --ignore \"src/**/*.d.ts\" --out-file src/locales/en-US/index.json --preserve-whitespace" + "intl:extract": "formatjs extract \"src/**/*.{vue,ts,tsx,js,jsx,mts,cts,mjs,cjs}\" --ignore \"src/**/*.d.ts\" --out-file src/locales/en-US/index.json --preserve-whitespace", + "storybook": "storybook dev -p 6006", + "build-storybook": "storybook build" }, "devDependencies": { + "@chromatic-com/storybook": "^4.1.3", "@formatjs/cli": "^6.2.12", "@modrinth/tooling-config": "workspace:*", + "@storybook/addon-a11y": "^10.1.10", + "@storybook/addon-docs": "^10.1.10", + "@storybook/addon-onboarding": "^10.1.10", + "@storybook/addon-vitest": "^10.1.10", + "@storybook/builder-vite": "^10.1.10", + "@storybook/vue3-vite": "^10.1.10", "@stripe/stripe-js": "^7.3.1", + "@tailwindcss/vite": "^4.1.18", "@vintl/unplugin": "^1.5.1", "@vintl/vintl": "^4.4.1", + "@vitejs/plugin-vue": "^5.2.1", + "@vitest/browser-playwright": "^4.0.16", + "@vitest/coverage-v8": "^4.0.16", + "eslint-plugin-storybook": "^10.1.10", + "playwright": "^1.57.0", + "storybook": "^10.1.10", "stripe": "^18.1.1", "typescript": "^5.4.5", + "vite": "^5.4.6", + "vite-svg-loader": "^5.1.0", + "vitest": "^4.0.16", "vue": "^3.5.13", "vue-component-type-helpers": "^3.1.8", - "vue-router": "4.3.0" + "vue-router": "4.3.0", + "tailwindcss": "^3.4.4" }, "dependencies": { "@codemirror/commands": "^6.3.2", diff --git a/packages/ui/postcss.config.js b/packages/ui/postcss.config.js new file mode 100644 index 0000000000..1a5262473e --- /dev/null +++ b/packages/ui/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/packages/ui/src/components/base/stories/ButtonStyled.stories.ts b/packages/ui/src/components/base/stories/ButtonStyled.stories.ts new file mode 100644 index 0000000000..8ce7b66b80 --- /dev/null +++ b/packages/ui/src/components/base/stories/ButtonStyled.stories.ts @@ -0,0 +1,120 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import ButtonStyled from '../ButtonStyled.vue' + +const meta = { + title: 'Base/ButtonStyled', + component: ButtonStyled, + tags: ['autodocs'], + argTypes: { + color: { + control: 'select', + options: ['standard', 'brand', 'red', 'orange', 'green', 'blue', 'purple', 'medal-promo'], + }, + size: { + control: 'select', + options: ['standard', 'large', 'small'], + }, + type: { + control: 'select', + options: [ + 'standard', + 'outlined', + 'transparent', + 'highlight', + 'highlight-colored-text', + 'chip', + ], + }, + colorFill: { + control: 'select', + options: ['auto', 'background', 'text', 'none'], + }, + hoverColorFill: { + control: 'select', + options: ['auto', 'background', 'text', 'none'], + }, + highlightedStyle: { + control: 'select', + options: ['main-nav-primary', 'main-nav-secondary'], + }, + circular: { control: 'boolean' }, + highlighted: { control: 'boolean' }, + }, + args: { + color: 'standard', + size: 'standard', + type: 'standard', + colorFill: 'auto', + hoverColorFill: 'auto', + circular: false, + highlighted: false, + highlightedStyle: 'main-nav-primary', + }, + render: (args) => ({ + components: { ButtonStyled }, + setup() { + return { args } + }, + template: /*html*/ ` + + + + `, + }), +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = {} + +// All colors showcase +export const AllColors: Story = { + render: () => ({ + components: { ButtonStyled }, + template: /*html*/ ` +
+ + + + + + + +
+ `, + }), +} + +// All sizes showcase +export const AllSizes: Story = { + render: () => ({ + components: { ButtonStyled }, + template: /*html*/ ` +
+ + + +
+ `, + }), +} + +// All types showcase +export const AllTypes: Story = { + render: () => ({ + components: { ButtonStyled }, + template: /*html*/ ` +
+ + + + + + + +
+ `, + }), +} diff --git a/packages/ui/src/components/base/stories/Chips.stories.ts b/packages/ui/src/components/base/stories/Chips.stories.ts new file mode 100644 index 0000000000..b36fe50dc7 --- /dev/null +++ b/packages/ui/src/components/base/stories/Chips.stories.ts @@ -0,0 +1,58 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import Chips from '../Chips.vue' + +const meta = { + title: 'Base/Chips', + // for vue generic typed component + // https://stackoverflow.com/questions/78037116/how-can-i-create-stories-for-generically-typed-vue-components + component: Chips as Record, + tags: ['autodocs'], + argTypes: { + size: { control: 'select', options: ['standard', 'small'] }, + neverEmpty: { control: 'boolean' }, + capitalize: { control: 'boolean' }, + }, + args: { + items: ['Option 1', 'Option 2', 'Option 3'], + neverEmpty: true, + capitalize: true, + size: 'standard', + }, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: { + items: ['Option 1', 'Option 2', 'Option 3'], + }, +} + +export const Small: Story = { + args: { + items: ['Option 1', 'Option 2', 'Option 3'], + size: 'small', + }, +} + +export const AllowEmpty: Story = { + args: { + items: ['Option 1', 'Option 2', 'Option 3'], + neverEmpty: false, + }, +} + +export const NoCapitalize: Story = { + args: { + items: ['Option 1', 'Option 2', 'Option 3'], + capitalize: false, + }, +} + +export const ManyItems: Story = { + args: { + items: ['Alpha', 'Beta', 'Gamma', 'Delta', 'Epsilon', 'Zeta'], + }, +} diff --git a/packages/ui/src/components/base/stories/DropzoneFileInput.stories.ts b/packages/ui/src/components/base/stories/DropzoneFileInput.stories.ts new file mode 100644 index 0000000000..43bed4b8f3 --- /dev/null +++ b/packages/ui/src/components/base/stories/DropzoneFileInput.stories.ts @@ -0,0 +1,125 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' +import { fn } from 'storybook/test' + +import DropzoneFileInput from '../DropzoneFileInput.vue' + +const meta = { + title: 'Base/DropzoneFileInput', + component: DropzoneFileInput, + tags: ['autodocs'], + argTypes: { + size: { + control: 'select', + options: ['standard', 'small'], + }, + multiple: { control: 'boolean' }, + disabled: { control: 'boolean' }, + shouldAlwaysReset: { control: 'boolean' }, + accept: { control: 'text' }, + maxSize: { control: 'number' }, + primaryPrompt: { control: 'text' }, + secondaryPrompt: { control: 'text' }, + }, + args: { + size: 'standard', + multiple: false, + disabled: false, + shouldAlwaysReset: false, + primaryPrompt: 'Drag and drop files or click to browse', + secondaryPrompt: 'You can try to drag files or folder or click this area to select it', + onChange: fn(), + }, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = {} + +export const Small: Story = { + args: { + size: 'small', + }, +} + +export const MultipleFiles: Story = { + args: { + multiple: true, + primaryPrompt: 'Drag and drop multiple files', + secondaryPrompt: 'Select multiple files at once', + }, +} + +export const ImagesOnly: Story = { + args: { + accept: 'image/*', + primaryPrompt: 'Upload an image', + secondaryPrompt: 'Accepts PNG, JPG, GIF, WebP, and other image formats', + }, +} + +export const PDFOnly: Story = { + args: { + accept: '.pdf', + primaryPrompt: 'Upload a PDF document', + secondaryPrompt: 'Only PDF files are accepted', + }, +} + +export const WithMaxSize: Story = { + args: { + maxSize: 5 * 1024 * 1024, // 5MB + primaryPrompt: 'Upload a file (max 5MB)', + secondaryPrompt: 'Files larger than 5MB will be rejected', + }, +} + +export const Disabled: Story = { + args: { + disabled: true, + }, +} + +export const CustomPrompts: Story = { + args: { + primaryPrompt: 'Drop your mod files here', + secondaryPrompt: 'Supports .jar and .zip files up to 25MB', + accept: '.jar,.zip', + }, +} + +export const SmallImageUploader: Story = { + args: { + size: 'small', + accept: 'image/*', + primaryPrompt: 'Upload icon', + secondaryPrompt: 'PNG or JPG, max 256x256', + }, +} + +// Showcase both sizes +export const SizeComparison: Story = { + render: () => ({ + components: { DropzoneFileInput }, + template: ` +
+
+

Standard Size

+ +
+
+

Small Size

+ +
+
+ `, + }), +} diff --git a/packages/ui/src/styles/tailwind.css b/packages/ui/src/styles/tailwind.css new file mode 100644 index 0000000000..b5c61c9567 --- /dev/null +++ b/packages/ui/src/styles/tailwind.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; diff --git a/packages/ui/tailwind.config.ts b/packages/ui/tailwind.config.ts index 5ee87de44d..9c65061546 100644 --- a/packages/ui/tailwind.config.ts +++ b/packages/ui/tailwind.config.ts @@ -2,7 +2,12 @@ import preset from '@modrinth/tooling-config/tailwind/tailwind-preset.ts' import type { Config } from 'tailwindcss' const config: Config = { - content: ['./src/components/**/*.{js,vue,ts}', './src/pages/**/*.{js,vue,ts}'], + content: [ + './src/components/**/*.{js,vue,ts}', + './src/pages/**/*.{js,vue,ts}', + './src/stories/**/*.{js,vue,ts,mdx}', + './.storybook/**/*.{ts,js}', + ], presets: [preset], } diff --git a/packages/ui/vite.config.ts b/packages/ui/vite.config.ts new file mode 100644 index 0000000000..f335e0e61c --- /dev/null +++ b/packages/ui/vite.config.ts @@ -0,0 +1,28 @@ +import path from 'node:path' + +import vue from '@vitejs/plugin-vue' +import { defineConfig } from 'vite' +import svgLoader from 'vite-svg-loader' + +export default defineConfig({ + plugins: [vue(), svgLoader()], + cacheDir: '.vite', + + resolve: { + alias: { + '@': path.resolve(__dirname, 'src'), + }, + }, + + build: { + lib: { + entry: path.resolve(__dirname, 'index.ts'), + name: 'ModrinthUI', + formats: ['es'], + fileName: 'index', + }, + rollupOptions: { + external: ['vue'], + }, + }, +}) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0a197629fc..62abdcecf1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -103,7 +103,7 @@ importers: version: 1.11.11 floating-vue: specifier: ^5.2.2 - version: 5.2.2(@nuxt/kit@3.17.5(magicast@0.3.5))(vue@3.5.13(typescript@5.5.4)) + version: 5.2.2(@nuxt/kit@3.17.5(magicast@0.5.1))(vue@3.5.13(typescript@5.5.4)) ofetch: specifier: ^1.3.4 version: 1.4.1 @@ -149,7 +149,7 @@ importers: version: 1.0.7(vue@3.5.13(typescript@5.5.4)) '@vitejs/plugin-vue': specifier: ^5.0.4 - version: 5.2.1(vite@5.4.11(@types/node@22.4.1)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4)) + version: 5.2.1(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4)) autoprefixer: specifier: ^10.4.19 version: 10.4.20(postcss@8.4.49) @@ -176,7 +176,7 @@ importers: version: 5.5.4 vite: specifier: ^5.4.6 - version: 5.4.11(@types/node@22.4.1)(sass@1.77.6)(terser@5.44.1) + version: 5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1) vue-component-type-helpers: specifier: ^3.1.8 version: 3.1.8 @@ -199,19 +199,19 @@ importers: version: 0.9.4(prettier@3.6.2)(typescript@5.8.2) '@astrojs/starlight': specifier: ^0.32.2 - version: 0.32.2(astro@5.4.1(@types/node@22.4.1)(db0@0.3.2)(jiti@2.6.1)(rollup@4.34.9)(sass@1.77.6)(terser@5.44.1)(typescript@5.8.2)(yaml@2.8.0)) + version: 0.32.2(astro@5.4.1(@types/node@22.4.1)(db0@0.3.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.34.9)(sass@1.77.6)(terser@5.44.1)(typescript@5.8.2)(yaml@2.8.0)) '@modrinth/assets': specifier: workspace:* version: link:../../packages/assets astro: specifier: ^5.4.1 - version: 5.4.1(@types/node@22.4.1)(db0@0.3.2)(jiti@2.6.1)(rollup@4.34.9)(sass@1.77.6)(terser@5.44.1)(typescript@5.8.2)(yaml@2.8.0) + version: 5.4.1(@types/node@22.4.1)(db0@0.3.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.34.9)(sass@1.77.6)(terser@5.44.1)(typescript@5.8.2)(yaml@2.8.0) sharp: specifier: ^0.33.5 version: 0.33.5 starlight-openapi: specifier: ^0.14.0 - version: 0.14.0(@astrojs/markdown-remark@6.2.0)(@astrojs/starlight@0.32.2(astro@5.4.1(@types/node@22.4.1)(db0@0.3.2)(jiti@2.6.1)(rollup@4.34.9)(sass@1.77.6)(terser@5.44.1)(typescript@5.8.2)(yaml@2.8.0)))(astro@5.4.1(@types/node@22.4.1)(db0@0.3.2)(jiti@2.6.1)(rollup@4.34.9)(sass@1.77.6)(terser@5.44.1)(typescript@5.8.2)(yaml@2.8.0))(openapi-types@12.1.3) + version: 0.14.0(@astrojs/markdown-remark@6.2.0)(@astrojs/starlight@0.32.2(astro@5.4.1(@types/node@22.4.1)(db0@0.3.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.34.9)(sass@1.77.6)(terser@5.44.1)(typescript@5.8.2)(yaml@2.8.0)))(astro@5.4.1(@types/node@22.4.1)(db0@0.3.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.34.9)(sass@1.77.6)(terser@5.44.1)(typescript@5.8.2)(yaml@2.8.0))(openapi-types@12.1.3) typescript: specifier: ^5.8.2 version: 5.8.2 @@ -259,7 +259,7 @@ importers: version: 4.4.1(typescript@5.5.4)(vue@3.5.13(typescript@5.5.4)) '@vitejs/plugin-vue': specifier: ^5.0.4 - version: 5.2.1(vite@5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4)) + version: 5.2.1(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4)) '@vue-email/components': specifier: ^0.0.21 version: 0.0.21(typescript@5.5.4)(vue@3.5.13(typescript@5.5.4)) @@ -347,7 +347,7 @@ importers: version: 6.2.12(@vue/compiler-core@3.5.13)(vue@3.5.13(typescript@5.5.4)) '@nuxt/devtools': specifier: ^1.3.3 - version: 1.6.3(rollup@4.28.1)(vite@5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4)) + version: 1.6.3(rollup@4.28.1)(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4)) '@types/dompurify': specifier: ^3.0.5 version: 3.0.5 @@ -365,7 +365,7 @@ importers: version: 3.0.1(@formatjs/intl@2.10.4(typescript@5.5.4)) '@vintl/nuxt': specifier: ^1.9.2 - version: 1.9.2(@vue/compiler-core@3.5.13)(magicast@0.3.5)(rollup@4.28.1)(typescript@5.5.4)(vite@5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))(webpack@5.92.1) + version: 1.9.2(@vue/compiler-core@3.5.13)(magicast@0.3.5)(rollup@4.28.1)(typescript@5.5.4)(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))(webpack@5.92.1) autoprefixer: specifier: ^10.4.19 version: 10.4.20(postcss@8.4.49) @@ -377,7 +377,7 @@ importers: version: 10.4.2 nuxt: specifier: ^3.14.1592 - version: 3.14.1592(@parcel/watcher@2.4.1)(@types/node@20.14.11)(eslint@8.57.1)(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.28.1)(sass@1.77.6)(terser@5.44.1)(typescript@5.5.4)(vite@5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1))(vue-tsc@2.1.6(typescript@5.5.4))(xml2js@0.6.2) + version: 3.14.1592(@parcel/watcher@2.4.1)(@types/node@20.14.11)(eslint@8.57.1)(ioredis@5.4.1)(lightningcss@1.30.2)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.28.1)(sass@1.77.6)(terser@5.44.1)(typescript@5.5.4)(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue-tsc@2.1.6(typescript@5.5.4))(xml2js@0.6.2) postcss: specifier: ^8.4.39 version: 8.4.49 @@ -612,7 +612,7 @@ importers: version: 1.11.11 floating-vue: specifier: ^5.2.2 - version: 5.2.2(@nuxt/kit@3.17.5(magicast@0.3.5))(vue@3.5.13(typescript@5.5.4)) + version: 5.2.2(@nuxt/kit@3.17.5(magicast@0.5.1))(vue@3.5.13(typescript@5.5.4)) fuse.js: specifier: ^6.6.2 version: 6.6.2 @@ -647,27 +647,81 @@ importers: specifier: ^1.0.14 version: 1.0.15 devDependencies: + '@chromatic-com/storybook': + specifier: ^4.1.3 + version: 4.1.3(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1)) '@formatjs/cli': specifier: ^6.2.12 version: 6.2.12(@vue/compiler-core@3.5.13)(vue@3.5.13(typescript@5.5.4)) '@modrinth/tooling-config': specifier: workspace:* version: link:../tooling-config + '@storybook/addon-a11y': + specifier: ^10.1.10 + version: 10.1.10(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1)) + '@storybook/addon-docs': + specifier: ^10.1.10 + version: 10.1.10(@types/react@19.2.7)(esbuild@0.25.0)(rollup@3.29.4)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(webpack@5.92.1(esbuild@0.25.0)) + '@storybook/addon-onboarding': + specifier: ^10.1.10 + version: 10.1.10(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1)) + '@storybook/addon-vitest': + specifier: ^10.1.10 + version: 10.1.10(@vitest/browser-playwright@4.0.16)(@vitest/browser@4.0.16(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vitest@4.0.16))(@vitest/runner@4.0.16)(react-dom@19.2.3(react@19.1.1))(react@19.1.1)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vitest@4.0.16) + '@storybook/builder-vite': + specifier: ^10.1.10 + version: 10.1.10(esbuild@0.25.0)(rollup@3.29.4)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(webpack@5.92.1(esbuild@0.25.0)) + '@storybook/vue3-vite': + specifier: ^10.1.10 + version: 10.1.10(esbuild@0.25.0)(rollup@3.29.4)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))(webpack@5.92.1(esbuild@0.25.0)) '@stripe/stripe-js': specifier: ^7.3.1 version: 7.3.1 + '@tailwindcss/vite': + specifier: ^4.1.18 + version: 4.1.18(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1)) '@vintl/unplugin': specifier: ^1.5.1 - version: 1.5.2(@vue/compiler-core@3.5.13)(rollup@3.29.4)(vite@4.5.3(@types/node@22.4.1)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))(webpack@5.92.1) + version: 1.5.2(@vue/compiler-core@3.5.13)(rollup@3.29.4)(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))(webpack@5.92.1(esbuild@0.25.0)) '@vintl/vintl': specifier: ^4.4.1 version: 4.4.1(typescript@5.5.4)(vue@3.5.13(typescript@5.5.4)) + '@vitejs/plugin-vue': + specifier: ^5.2.1 + version: 5.2.1(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4)) + '@vitest/browser-playwright': + specifier: ^4.0.16 + version: 4.0.16(playwright@1.57.0)(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vitest@4.0.16) + '@vitest/coverage-v8': + specifier: ^4.0.16 + version: 4.0.16(@vitest/browser@4.0.16(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vitest@4.0.16))(vitest@4.0.16) + eslint-plugin-storybook: + specifier: ^10.1.10 + version: 10.1.10(eslint@9.32.0(jiti@2.6.1))(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(typescript@5.5.4) + playwright: + specifier: ^1.57.0 + version: 1.57.0 + storybook: + specifier: ^10.1.10 + version: 10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1) stripe: specifier: ^18.1.1 version: 18.1.1(@types/node@22.4.1) + tailwindcss: + specifier: ^3.4.4 + version: 3.4.4 typescript: specifier: ^5.4.5 version: 5.5.4 + vite: + specifier: ^5.4.6 + version: 5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1) + vite-svg-loader: + specifier: ^5.1.0 + version: 5.1.0(vue@3.5.13(typescript@5.5.4)) + vitest: + specifier: ^4.0.16 + version: 4.0.16(@types/node@22.4.1)(@vitest/browser-playwright@4.0.16)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1)(yaml@2.8.0) vue: specifier: ^3.5.13 version: 3.5.13(typescript@5.5.4) @@ -729,6 +783,9 @@ importers: packages: + '@adobe/css-tools@4.4.4': + resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==} + '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} @@ -871,10 +928,18 @@ packages: resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.25.9': resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.25.9': resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} engines: {node: '>=6.9.0'} @@ -888,6 +953,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.28.5': + resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/plugin-proposal-decorators@7.24.7': resolution: {integrity: sha512-RL9GR0pUG5Kc8BUWLNDm2T5OpYwSX15r98I0IkgmRQTXuELq/OynH8xtMTMvTJFjXbMWFVTKtYkTaYQsuAwQlQ==} engines: {node: '>=6.9.0'} @@ -949,11 +1019,25 @@ packages: resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==} engines: {node: '>=6.9.0'} + '@babel/types@7.28.5': + resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} + engines: {node: '>=6.9.0'} + + '@bcoe/v8-coverage@1.0.2': + resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} + engines: {node: '>=18'} + '@braw/async-computed@5.0.2': resolution: {integrity: sha512-fThqjZBTPvWtbD90Nkd4IldN7dpCkxfvthuk12ZBjkPPjh+wuRGi3HYiUqUSAOOVS0NHSxpsQFfg+qO275FtYA==} peerDependencies: vue: ^2.7 || ^3.2.45 + '@chromatic-com/storybook@4.1.3': + resolution: {integrity: sha512-hc0HO9GAV9pxqDE6fTVOV5KeLpTiCfV8Jrpk5ogKLiIgeq2C+NPjpt74YnrZTjiK8E19fYcMP+2WY9ZtX7zHmw==} + engines: {node: '>=20.0.0', yarn: '>=1.22.18'} + peerDependencies: + storybook: ^0.0.0-0 || ^9.0.0 || ^9.1.0-0 || ^9.2.0-0 || ^10.0.0-0 || ^10.1.0-0 || ^10.2.0-0 || ^10.3.0-0 + '@cloudflare/kv-asset-handler@0.3.4': resolution: {integrity: sha512-YLPHc8yASwjNkmcDMQMY35yiWjoKAKnhUbPRszBRS0YgH+IXtsMp61j+yTcnCE3oO2DgP0U3iejLC8FTtKDC8Q==} engines: {node: '>=16.13'} @@ -1043,12 +1127,6 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.18.20': - resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm64@0.21.5': resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} engines: {node: '>=12'} @@ -1067,12 +1145,6 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm@0.18.20': - resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - '@esbuild/android-arm@0.21.5': resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} @@ -1091,12 +1163,6 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-x64@0.18.20': - resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - '@esbuild/android-x64@0.21.5': resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} engines: {node: '>=12'} @@ -1115,12 +1181,6 @@ packages: cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.18.20': - resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-arm64@0.21.5': resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} engines: {node: '>=12'} @@ -1139,12 +1199,6 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.18.20': - resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - '@esbuild/darwin-x64@0.21.5': resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} engines: {node: '>=12'} @@ -1163,12 +1217,6 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.18.20': - resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-arm64@0.21.5': resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} engines: {node: '>=12'} @@ -1187,12 +1235,6 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.18.20': - resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - '@esbuild/freebsd-x64@0.21.5': resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} engines: {node: '>=12'} @@ -1211,12 +1253,6 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.18.20': - resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm64@0.21.5': resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} engines: {node: '>=12'} @@ -1235,12 +1271,6 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.18.20': - resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - '@esbuild/linux-arm@0.21.5': resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} engines: {node: '>=12'} @@ -1259,12 +1289,6 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.18.20': - resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-ia32@0.21.5': resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} engines: {node: '>=12'} @@ -1283,12 +1307,6 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.18.20': - resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-loong64@0.21.5': resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} @@ -1307,12 +1325,6 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.18.20': - resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-mips64el@0.21.5': resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} engines: {node: '>=12'} @@ -1331,12 +1343,6 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.18.20': - resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-ppc64@0.21.5': resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} engines: {node: '>=12'} @@ -1355,12 +1361,6 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.18.20': - resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-riscv64@0.21.5': resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} engines: {node: '>=12'} @@ -1379,12 +1379,6 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.18.20': - resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-s390x@0.21.5': resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} engines: {node: '>=12'} @@ -1403,12 +1397,6 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.18.20': - resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - '@esbuild/linux-x64@0.21.5': resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} engines: {node: '>=12'} @@ -1433,12 +1421,6 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.18.20': - resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - '@esbuild/netbsd-x64@0.21.5': resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} engines: {node: '>=12'} @@ -1469,12 +1451,6 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.18.20': - resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - '@esbuild/openbsd-x64@0.21.5': resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} engines: {node: '>=12'} @@ -1493,12 +1469,6 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.18.20': - resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - '@esbuild/sunos-x64@0.21.5': resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} engines: {node: '>=12'} @@ -1517,12 +1487,6 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.18.20': - resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-arm64@0.21.5': resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} engines: {node: '>=12'} @@ -1541,12 +1505,6 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.18.20': - resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-ia32@0.21.5': resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} engines: {node: '>=12'} @@ -1565,12 +1523,6 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.18.20': - resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - '@esbuild/win32-x64@0.21.5': resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} engines: {node: '>=12'} @@ -2035,6 +1987,15 @@ packages: '@mdx-js/mdx@3.1.0': resolution: {integrity: sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==} + '@mdx-js/react@3.1.1': + resolution: {integrity: sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==} + peerDependencies: + '@types/react': '>=16' + react: '>=16' + + '@neoconfetti/react@1.0.0': + resolution: {integrity: sha512-klcSooChXXOzIm+SE5IISIAn3bYzYfPjbX7D7HoqZL84oAfgREeSg5vSIaSFH+DaGzzvImTyWe1OyrJ67vik4A==} + '@netlify/functions@2.8.2': resolution: {integrity: sha512-DeoAQh8LuNPvBE4qsKlezjKj0PyXDryOFJfJKo3Z1qZLKzQ21sT314KQKPVjfvw6knqijj+IO+0kHXy/TJiqNA==} engines: {node: '>=14.0.0'} @@ -2614,6 +2575,94 @@ packages: resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} engines: {node: '>=18'} + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + + '@storybook/addon-a11y@10.1.10': + resolution: {integrity: sha512-lXVFywCSdA39uCR0KEFz3F6WTjzoqSi5gQYtWrFelzaUiMH46uBLHPYaKlpUuNbTL/o9ctrhX1YNzegujrXSoQ==} + peerDependencies: + storybook: ^10.1.10 + + '@storybook/addon-docs@10.1.10': + resolution: {integrity: sha512-PSJVtawnGNrEkeLJQn9TTdeqrtDij8onvmnFtfkDaFG5IaUdQaLX9ibJ4gfxYakq+BEtlCcYiWErNJcqDrDluQ==} + peerDependencies: + storybook: ^10.1.10 + + '@storybook/addon-onboarding@10.1.10': + resolution: {integrity: sha512-CtfoHqgdm63NsGyYBcr1UhJV6m213ckU3aKTYJRS+3NLkx18BIME9biJwiTiRK4Pm4jbc69V21JzLumFcaiJbw==} + peerDependencies: + storybook: ^10.1.10 + + '@storybook/addon-vitest@10.1.10': + resolution: {integrity: sha512-dh5ZesgvZY619nkweo9fbORQQSU0hIFQnqlcnU1DrGXumt9SzVHF3/2Lxe+HGHLHK6Sk8jZp/16BjZ/zxSG61Q==} + peerDependencies: + '@vitest/browser': ^3.0.0 || ^4.0.0 + '@vitest/browser-playwright': ^4.0.0 + '@vitest/runner': ^3.0.0 || ^4.0.0 + storybook: ^10.1.10 + vitest: ^3.0.0 || ^4.0.0 + peerDependenciesMeta: + '@vitest/browser': + optional: true + '@vitest/browser-playwright': + optional: true + '@vitest/runner': + optional: true + vitest: + optional: true + + '@storybook/builder-vite@10.1.10': + resolution: {integrity: sha512-6m6zOyDhHLynv3lvkH70s1YoIkIFPhbpGsBKvHchRLrZLe8hCPeafIFLfZRPoD4yIPwBS6rWbjMsSvBMFlR+ag==} + peerDependencies: + storybook: ^10.1.10 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 + + '@storybook/csf-plugin@10.1.10': + resolution: {integrity: sha512-2dri4TRU8uuj/skmx/ZBw+GnnXf8EZHiMDMeijVRdBQtYFWPeoYzNIrGRpNfbuGpnDP0dcxrqti/TsedoxwFkA==} + peerDependencies: + esbuild: '*' + rollup: '*' + storybook: ^10.1.10 + vite: '*' + webpack: '*' + peerDependenciesMeta: + esbuild: + optional: true + rollup: + optional: true + vite: + optional: true + webpack: + optional: true + + '@storybook/global@5.0.0': + resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} + + '@storybook/icons@2.0.1': + resolution: {integrity: sha512-/smVjw88yK3CKsiuR71vNgWQ9+NuY2L+e8X7IMrFjexjm6ZR8ULrV2DRkTA61aV6ryefslzHEGDInGpnNeIocg==} + 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/react-dom-shim@10.1.10': + resolution: {integrity: sha512-9pmUbEr1MeMHg9TG0c2jVUfHWr2AA86vqZGphY/nT6mbe/rGyWtBl5EnFLrz6WpI8mo3h+Kxs6p2oiuIYieRtw==} + 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: ^10.1.10 + + '@storybook/vue3-vite@10.1.10': + resolution: {integrity: sha512-lH6Ae2BI++0QUASco6BXsECnf3V+5ZNtY2ij1/gY3RQFM9kGhHF0k9VWulK+1KmwnjRDWzh1PTZ6B4FC9DDq2Q==} + peerDependencies: + storybook: ^10.1.10 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 + + '@storybook/vue3@10.1.10': + resolution: {integrity: sha512-NqMxLzW9VbuQOGbWIuwzi5yHcjP/iAUnmFtQ+Qm1vYGkxCdSmZAPiTo/nW3nK8KgPkSbSLumUbeCE7YyGBLiBA==} + peerDependencies: + storybook: ^10.1.10 + vue: ^3.0.0 + '@stripe/stripe-js@7.3.1': resolution: {integrity: sha512-pTzb864TQWDRQBPLgSPFRoyjSDUqpCkbEgTzpsjiTjGz1Z5SxZNXJek28w1s6Dyry4CyW4/Izj5jHE/J9hCJYQ==} engines: {node: '>=12.16'} @@ -2629,6 +2678,96 @@ packages: peerDependencies: vue: ^3.0.0 + '@tailwindcss/node@4.1.18': + resolution: {integrity: sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==} + + '@tailwindcss/oxide-android-arm64@4.1.18': + resolution: {integrity: sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.1.18': + resolution: {integrity: sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.1.18': + resolution: {integrity: sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.1.18': + resolution: {integrity: sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18': + resolution: {integrity: sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.18': + resolution: {integrity: sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-musl@4.1.18': + resolution: {integrity: sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-gnu@4.1.18': + resolution: {integrity: sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-musl@4.1.18': + resolution: {integrity: sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-wasm32-wasi@4.1.18': + resolution: {integrity: sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.18': + resolution: {integrity: sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.1.18': + resolution: {integrity: sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.1.18': + resolution: {integrity: sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==} + engines: {node: '>= 10'} + + '@tailwindcss/vite@4.1.18': + resolution: {integrity: sha512-jVA+/UpKL1vRLg6Hkao5jldawNmRo7mQYrZtNHMIVpLfLhDml5nMRUo/8MwoX2vNXvnaXNNMedrMfMugAVX1nA==} + peerDependencies: + vite: ^5.2.0 || ^6 || ^7 + '@tanstack/match-sorter-utils@8.19.4': resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==} engines: {node: '>=12'} @@ -2746,6 +2885,20 @@ packages: '@tauri-apps/plugin-window-state@2.2.2': resolution: {integrity: sha512-7pFwmMtGhhhE/WgmM7PUrj0BSSWVAQMfDdYbRalphIqqF1tWBvxtlxclx8bTutpXHLJTQoCpIeWtBEIXsoAlGw==} + '@testing-library/dom@10.4.1': + resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==} + engines: {node: '>=18'} + + '@testing-library/jest-dom@6.9.1': + resolution: {integrity: sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + + '@testing-library/user-event@14.6.1': + resolution: {integrity: sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==} + engines: {node: '>=12', npm: '>=6'} + peerDependencies: + '@testing-library/dom': '>=7.21.4' + '@tresjs/cientos@4.3.1': resolution: {integrity: sha512-3qp6lEtMrFdhxDuASP1Sz/hEi8+xcEpM6Vd6uDJysCh4uRAzyJLlBSbPoR7gVjN12wrhwJIF1AfYEFz/Vhz5ZQ==} peerDependencies: @@ -2776,12 +2929,21 @@ packages: '@types/acorn@4.0.6': resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} + '@types/aria-query@5.0.4': + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} + + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + '@types/cookie@0.6.0': resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + '@types/dompurify@3.0.5': resolution: {integrity: sha512-1Wg0g3BtQF7sSb27fJQAKck1HECM6zV1EB66j8JH9i3LCjYabJa0FSdiSgsD5K/RbrsR0SiraKacLB+T8ZVYAg==} @@ -2867,6 +3029,9 @@ packages: '@types/offscreencanvas@2019.7.3': resolution: {integrity: sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A==} + '@types/react@19.2.7': + resolution: {integrity: sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==} + '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} @@ -3109,6 +3274,78 @@ packages: vite: ^5.0.0 || ^6.0.0 vue: ^3.2.25 + '@vitest/browser-playwright@4.0.16': + resolution: {integrity: sha512-I2Fy/ANdphi1yI46d15o0M1M4M0UJrUiVKkH5oKeRZZCdPg0fw/cfTKZzv9Ge9eobtJYp4BGblMzXdXH0vcl5g==} + peerDependencies: + playwright: '*' + vitest: 4.0.16 + + '@vitest/browser@4.0.16': + resolution: {integrity: sha512-t4toy8X/YTnjYEPoY0pbDBg3EvDPg1elCDrfc+VupPHwoN/5/FNQ8Z+xBYIaEnOE2vVEyKwqYBzZ9h9rJtZVcg==} + peerDependencies: + vitest: 4.0.16 + + '@vitest/coverage-v8@4.0.16': + resolution: {integrity: sha512-2rNdjEIsPRzsdu6/9Eq0AYAzYdpP6Bx9cje9tL3FE5XzXRQF1fNU9pe/1yE8fCrS0HD+fBtt6gLPh6LI57tX7A==} + peerDependencies: + '@vitest/browser': 4.0.16 + vitest: 4.0.16 + peerDependenciesMeta: + '@vitest/browser': + optional: true + + '@vitest/expect@3.2.4': + resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} + + '@vitest/expect@4.0.16': + resolution: {integrity: sha512-eshqULT2It7McaJkQGLkPjPjNph+uevROGuIMJdG3V+0BSR2w9u6J9Lwu+E8cK5TETlfou8GRijhafIMhXsimA==} + + '@vitest/mocker@3.2.4': + resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/mocker@4.0.16': + resolution: {integrity: sha512-yb6k4AZxJTB+q9ycAvsoxGn+j/po0UaPgajllBgt1PzoMAAmJGYFdDk0uCcRcxb3BrME34I6u8gHZTQlkqSZpg==} + peerDependencies: + msw: ^2.4.9 + vite: ^6.0.0 || ^7.0.0-0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@3.2.4': + resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} + + '@vitest/pretty-format@4.0.16': + resolution: {integrity: sha512-eNCYNsSty9xJKi/UdVD8Ou16alu7AYiS2fCPRs0b1OdhJiV89buAXQLpTbe+X8V9L6qrs9CqyvU7OaAopJYPsA==} + + '@vitest/runner@4.0.16': + resolution: {integrity: sha512-VWEDm5Wv9xEo80ctjORcTQRJ539EGPB3Pb9ApvVRAY1U/WkHXmmYISqU5E79uCwcW7xYUV38gwZD+RV755fu3Q==} + + '@vitest/snapshot@4.0.16': + resolution: {integrity: sha512-sf6NcrYhYBsSYefxnry+DR8n3UV4xWZwWxYbCJUt2YdvtqzSPR7VfGrY0zsv090DAbjFZsi7ZaMi1KnSRyK1XA==} + + '@vitest/spy@3.2.4': + resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} + + '@vitest/spy@4.0.16': + resolution: {integrity: sha512-4jIOWjKP0ZUaEmJm00E0cOBLU+5WE0BpeNr3XN6TEF05ltro6NJqHWxXD0kA8/Zc8Nh23AT8WQxwNG+WeROupw==} + + '@vitest/utils@3.2.4': + resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} + + '@vitest/utils@4.0.16': + resolution: {integrity: sha512-h8z9yYhV3e1LEfaQ3zdypIrnAg/9hguReGZoS7Gl0aBG5xgA410zBqECqmaF/+RkTggRsfnzc1XaAHA6bmUufA==} + '@volar/kit@2.4.11': resolution: {integrity: sha512-ups5RKbMzMCr6RKafcCqDRnJhJDNWqo2vfekwOAj6psZ15v5TlcQFQAyokQJ3wZxVkzxrQM+TqTRDENfQEXpmA==} peerDependencies: @@ -3117,6 +3354,9 @@ packages: '@volar/language-core@2.4.11': resolution: {integrity: sha512-lN2C1+ByfW9/JRPpqScuZt/4OrUUse57GLI6TbLgTIqBVemdl1wNcZ1qYGEo2+Gw8coYLgCy7SuKqn6IrQcQgg==} + '@volar/language-core@2.4.15': + resolution: {integrity: sha512-3VHw+QZU0ZG9IuQmzT68IyN4hZNd9GchGPhbD9+pa8CVv7rnoOZwo7T8weIbrRmihqy3ATpdfXFnqRrfPVK6CA==} + '@volar/language-core@2.4.4': resolution: {integrity: sha512-kO9k4kTLfxpg+6lq7/KAIv3m2d62IHuCL6GbVgYZTpfKvIGoAIlDxK7pFcB/eczN2+ydg/vnyaeZ6SGyZrJw2w==} @@ -3129,12 +3369,18 @@ packages: '@volar/source-map@2.4.11': resolution: {integrity: sha512-ZQpmafIGvaZMn/8iuvCFGrW3smeqkq/IIh9F1SdSx9aUl0J4Iurzd6/FhmjNO5g2ejF3rT45dKskgXWiofqlZQ==} + '@volar/source-map@2.4.15': + resolution: {integrity: sha512-CPbMWlUN6hVZJYGcU/GSoHu4EnCHiLaXI9n8c9la6RaI9W5JHX+NqG+GSQcB0JdC2FIBLdZJwGsfKyBB71VlTg==} + '@volar/source-map@2.4.4': resolution: {integrity: sha512-xG3PZqOP2haG8XG4Pg3PD1UGDAdqZg24Ru8c/qYjYAnmcj6GBR64mstx+bZux5QOyRaJK+/lNM/RnpvBD3489g==} '@volar/typescript@2.4.11': resolution: {integrity: sha512-2DT+Tdh88Spp5PyPbqhyoYavYCPDsqbHLFwcUI9K1NlY1YgUJvujGdrqUp0zWxnW7KWNTr3xSpMuv2WnaTKDAw==} + '@volar/typescript@2.4.15': + resolution: {integrity: sha512-2aZ8i0cqPGjXb4BhkMsPYDkkuc2ZQ6yOpqwAuNwUoncELqoy5fRgOQtLR9gB0g902iS0NAkvpIzs27geVyVdPg==} + '@volar/typescript@2.4.4': resolution: {integrity: sha512-QQMQRVj0fVHJ3XdRKiS1LclhG0VBXdFYlyuHRQF/xLk2PuJuHNWP26MDZNvEVCvnyUQuUQhIAfylwY5TGPgc6w==} @@ -3316,6 +3562,14 @@ packages: typescript: optional: true + '@vue/language-core@2.2.12': + resolution: {integrity: sha512-IsGljWbKGU1MZpBPN+BvPAdr55YPkj2nB/TBNGNC32Vy2qLG25DYu/NBN2vNtZqdRbTRjaoYrahLrToim2NanA==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@vue/reactivity@3.5.13': resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==} @@ -3455,7 +3709,12 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.14.0: + acorn@7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + + acorn@8.14.0: resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} engines: {node: '>=0.4.0'} hasBin: true @@ -3505,6 +3764,9 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + alien-signals@1.0.13: + resolution: {integrity: sha512-OGj9yyTnJEttvzhTUWuscOvtqxq5vrhF7vL9oS0xJ2mK0ItPYP1/y+vCFebfxoEyAz0++1AIwJ5CMr+Fk3nDmg==} + ansi-align@3.0.1: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} @@ -3528,6 +3790,10 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} @@ -3576,6 +3842,9 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + aria-query@5.3.2: resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} engines: {node: '>= 0.4'} @@ -3587,10 +3856,27 @@ packages: array-iterate@2.0.1: resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} + asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + + assert-never@1.4.0: + resolution: {integrity: sha512-5oJg84os6NMQNl27T9LnZkvvqzvAnHu03ShCnoj6bsJwS7L8AO4lf+C/XjK/nvzEqQB744moC6V128RucQd1jA==} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + ast-kit@1.3.2: resolution: {integrity: sha512-gdvX700WVC6sHCJQ7bJGfDvtuKAh6Sa6weIZROxfzUZKP7BjvB8y0SMlM/o4omSQ3L60PQSJROBJsb0vEViVnA==} engines: {node: '>=16.14.0'} + ast-types@0.16.1: + resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} + engines: {node: '>=4'} + + ast-v8-to-istanbul@0.3.10: + resolution: {integrity: sha512-p4K7vMz2ZSk3wN8l5o3y2bJAoZXT3VuJI5OLTATY/01CYWumWvwkUw0SqDBnNq6IiTO3qDa1eSQDibAV8g7XOQ==} + ast-walker-scope@0.6.2: resolution: {integrity: sha512-1UWOyC50xI3QZkRuDj6PqDtpm1oHWtYs+NQGwqL/2R11eN3Q81PHAHPM0SWW3BNQm53UDwS//Jv8L4CCVLM1bQ==} engines: {node: '>=16.14.0'} @@ -3622,6 +3908,10 @@ packages: peerDependencies: postcss: ^8.1.0 + axe-core@4.11.0: + resolution: {integrity: sha512-ilYanEU8vxxBexpJd8cWM4ElSQq4QctCLKih0TSfjIfCQTeyH/6zVrmIJfLPrKTKJRbiG+cfnZbQIjAlJmF1jQ==} + engines: {node: '>=4'} + axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} @@ -3629,6 +3919,10 @@ packages: b4a@1.6.6: resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} + babel-walk@3.0.0-canary-5: + resolution: {integrity: sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==} + engines: {node: '>= 10.0.0'} + bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} @@ -3776,6 +4070,14 @@ packages: ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + chai@5.3.3: + resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} + engines: {node: '>=18'} + + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + engines: {node: '>=18'} + chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -3796,9 +4098,16 @@ packages: character-entities@2.0.2: resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + character-parser@2.2.0: + resolution: {integrity: sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==} + character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} + chevrotain@7.1.1: resolution: {integrity: sha512-wy3mC1x4ye+O+QkEinVJkPf5u2vsrDIYW9G7ZuwFl6v/Yu0LwUuT2POsb+NUWApebyxfkQq6+yDfRExbnI5rcw==} @@ -3818,6 +4127,18 @@ packages: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} + chromatic@13.3.4: + resolution: {integrity: sha512-TR5rvyH0ESXobBB3bV8jc87AEAFQC7/n+Eb4XWhJz6hW3YNxIQPVjcbgLv+a4oKHEl1dUBueWSoIQsOVGTd+RQ==} + hasBin: true + peerDependencies: + '@chromatic-com/cypress': ^0.*.* || ^1.0.0 + '@chromatic-com/playwright': ^0.*.* || ^1.0.0 + peerDependenciesMeta: + '@chromatic-com/cypress': + optional: true + '@chromatic-com/playwright': + optional: true + chrome-trace-event@1.0.4: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} @@ -3963,6 +4284,9 @@ packages: console-control-strings@1.1.0: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + constantinople@4.0.1: + resolution: {integrity: sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==} + convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} @@ -4048,6 +4372,9 @@ packages: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} + css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} @@ -4081,6 +4408,9 @@ packages: csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + currently-unhandled@0.4.1: resolution: {integrity: sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==} engines: {node: '>=0.10.0'} @@ -4165,6 +4495,10 @@ packages: decode-named-character-reference@1.0.2: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} + deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -4264,6 +4598,15 @@ packages: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} + doctypes@1.1.0: + resolution: {integrity: sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==} + + dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + + dom-accessibility-api@0.6.3: + resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + dom-serializer@2.0.0: resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} @@ -4415,11 +4758,6 @@ packages: esast-util-from-js@2.0.1: resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} - esbuild@0.18.20: - resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} - engines: {node: '>=12'} - hasBin: true - esbuild@0.21.5: resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} engines: {node: '>=12'} @@ -4508,6 +4846,12 @@ packages: peerDependencies: eslint: '>=5.0.0' + eslint-plugin-storybook@10.1.10: + resolution: {integrity: sha512-ITr6Aq3buR/DuDATkq1BafUVJLybyo676fY+tj9Zjd1Ak+UXBAMQcQ++tiBVVHm1RqADwM3b1o6bnWHK2fPPKw==} + peerDependencies: + eslint: '>=8' + storybook: ^10.1.10 + eslint-plugin-turbo@2.5.4: resolution: {integrity: sha512-IZsW61DFj5mLMMaCJxhh1VE4HvNhfdnHnAaXajgne+LUzdyHk2NvYT0ECSa/1SssArcqgTvV74MrLL68hWLLFw==} peerDependencies: @@ -4591,6 +4935,9 @@ packages: jiti: optional: true + esm-resolve@1.0.11: + resolution: {integrity: sha512-LxF0wfUQm3ldUDHkkV2MIbvvY0TgzIpJ420jHSV1Dm+IlplBEWiJTKWM61GtxUfvjV6iD4OtTYFGAGM2uuIUWg==} + espree@10.2.0: resolution: {integrity: sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4679,6 +5026,10 @@ packages: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} + expect-type@1.3.0: + resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} + engines: {node: '>=12.0.0'} + expressive-code@0.40.2: resolution: {integrity: sha512-1zIda2rB0qiDZACawzw2rbdBQiWHBT56uBctS+ezFe5XMAaFaHLnnSYND/Kd+dVzO9HfCXRDpzH3d+3fvOWRcw==} @@ -4768,6 +5119,10 @@ packages: file-uri-to-path@1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + filesize@10.1.6: + resolution: {integrity: sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==} + engines: {node: '>= 10.4.0'} + fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -4837,6 +5192,11 @@ packages: fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -5023,6 +5383,10 @@ packages: resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + has-unicode@2.0.1: resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} @@ -5114,6 +5478,9 @@ packages: hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + html-escaper@3.0.3: resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} @@ -5294,6 +5661,9 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true + is-expression@4.0.0: + resolution: {integrity: sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==} + is-extendable@0.1.1: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} engines: {node: '>=0.10.0'} @@ -5341,9 +5711,16 @@ packages: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} + is-promise@2.2.2: + resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} + is-reference@1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + is-ssh@1.4.0: resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==} @@ -5390,6 +5767,22 @@ packages: iso-3166-2@1.0.0: resolution: {integrity: sha512-xLAazfKZzwlsg/Zz/GQGQk3jJez5/2ORrjD3TjSuqz/arMht/xTK49c0GOE3afO/gEd9tHtBVVlfBla01unUng==} + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@5.0.6: + resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} + engines: {node: '>=10'} + + istanbul-reports@3.2.0: + resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} + engines: {node: '>=8'} + jackspeak@3.4.0: resolution: {integrity: sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==} engines: {node: '>=14'} @@ -5423,6 +5816,9 @@ packages: resolution: {integrity: sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==} engines: {node: '>=0.10.0'} + js-stringify@1.0.2: + resolution: {integrity: sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==} + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -5494,6 +5890,9 @@ packages: resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} engines: {node: '>=0.10.0'} + jstransformer@1.0.0: + resolution: {integrity: sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==} + jszip@3.10.1: resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} @@ -5546,6 +5945,76 @@ packages: lie@3.3.0: resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} + lightningcss-android-arm64@1.30.2: + resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.30.2: + resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.30.2: + resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.30.2: + resolution: {integrity: sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.30.2: + resolution: {integrity: sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.30.2: + resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.30.2: + resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.30.2: + resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.30.2: + resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.30.2: + resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.30.2: + resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.30.2: + resolution: {integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==} + engines: {node: '>= 12.0.0'} + lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} @@ -5620,6 +6089,9 @@ packages: resolution: {integrity: sha512-S0FayMXku80toa5sZ6Ro4C+s+EtFDCsyJNG/AzFMfX3AxD5Si4dZsgzm/kKnbOxHl5Cv8jBlno8+3XYIh2pNjQ==} engines: {node: '>=8'} + loupe@3.2.1: + resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} + lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} @@ -5629,9 +6101,17 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + lru-cache@8.0.5: + resolution: {integrity: sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==} + engines: {node: '>=16.14'} + lucide-static@0.562.0: resolution: {integrity: sha512-TM2vNVOEsO3+ijmno7n/VmxUo0Shr9OXC/UqZc5n4xEVyXX4E4NVvXoRPAZiSsIsdvlQ7alGOcIC/QGtR+OgUQ==} + lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + magic-string-ast@0.6.2: resolution: {integrity: sha512-oN3Bcd7ZVt+0VGEs7402qR/tjgjbM7kPlH/z7ufJnzTLVBzXJITRHOJiwMmmYMgZfdoWQsfQcY+iKlxiBppnMA==} engines: {node: '>=16.14.0'} @@ -5648,10 +6128,17 @@ packages: magicast@0.3.5: resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} + magicast@0.5.1: + resolution: {integrity: sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw==} + make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + markdown-extensions@2.0.0: resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} engines: {node: '>=16'} @@ -5983,11 +6470,6 @@ packages: mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - nanoid@3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -6166,6 +6648,9 @@ packages: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + ofetch@1.4.1: resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} @@ -6193,6 +6678,10 @@ packages: resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==} engines: {node: '>=18'} + open@10.2.0: + resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} + engines: {node: '>=18'} + open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} @@ -6347,6 +6836,10 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + pathval@2.0.1: + resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} + engines: {node: '>= 14.16'} + peberminta@0.9.0: resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==} @@ -6409,6 +6902,10 @@ packages: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} + pixelmatch@7.1.0: + resolution: {integrity: sha512-1wrVzJ2STrpmONHKBy228LM1b84msXDUoAzVEl0R8Mz4Ce6EPr+IVtxm8+yvrqLYMHswREkjYFaMxnyGnaY3Ng==} + hasBin: true + pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} @@ -6422,10 +6919,24 @@ packages: pkg-types@2.3.0: resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} + playwright-core@1.57.0: + resolution: {integrity: sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.57.0: + resolution: {integrity: sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==} + engines: {node: '>=18'} + hasBin: true + pluralize@8.0.0: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} + pngjs@7.0.0: + resolution: {integrity: sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==} + engines: {node: '>=14.19.0'} + postcss-calc@10.0.2: resolution: {integrity: sha512-DT/Wwm6fCKgpYVI7ZEWuPJ4az8hiEHtCUeYjZXqU7Ou4QqYh1Df2yCQ7Ca6N7xqKPFkxN3fhf+u9KSoOCJNAjg==} engines: {node: ^18.12 || ^20.9 || >=22.0} @@ -6633,10 +7144,6 @@ packages: resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} engines: {node: ^10 || ^12 || >=14} - postcss@8.5.6: - resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} - engines: {node: ^10 || ^12 || >=14} - posthog-js@1.158.2: resolution: {integrity: sha512-ovb7GHHRNDf6vmuL+8lbDukewzDzQlLZXg3d475hrfHSBgidYeTxtLGtoBcUz4x6558BLDFjnSip+f3m4rV9LA==} @@ -6743,6 +7250,10 @@ packages: resolution: {integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==} engines: {node: ^14.13.1 || >=16.0.0} + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + prismjs@1.29.0: resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} engines: {node: '>=6'} @@ -6754,6 +7265,9 @@ packages: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} + promise@7.3.1: + resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} + prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} @@ -6770,6 +7284,42 @@ packages: protocols@2.0.1: resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==} + pug-attrs@3.0.0: + resolution: {integrity: sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==} + + pug-code-gen@3.0.3: + resolution: {integrity: sha512-cYQg0JW0w32Ux+XTeZnBEeuWrAY7/HNE6TWnhiHGnnRYlCgyAUPoyh9KzCMa9WhcJlJ1AtQqpEYHc+vbCzA+Aw==} + + pug-error@2.1.0: + resolution: {integrity: sha512-lv7sU9e5Jk8IeUheHata6/UThZ7RK2jnaaNztxfPYUY+VxZyk/ePVaNZ/vwmH8WqGvDz3LrNYt/+gA55NDg6Pg==} + + pug-filters@4.0.0: + resolution: {integrity: sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==} + + pug-lexer@5.0.1: + resolution: {integrity: sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==} + + pug-linker@4.0.0: + resolution: {integrity: sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==} + + pug-load@3.0.0: + resolution: {integrity: sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==} + + pug-parser@6.0.0: + resolution: {integrity: sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==} + + pug-runtime@3.0.1: + resolution: {integrity: sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==} + + pug-strip-comments@2.0.0: + resolution: {integrity: sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==} + + pug-walk@2.0.0: + resolution: {integrity: sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==} + + pug@3.0.3: + resolution: {integrity: sha512-uBi6kmc9f3SZ3PXxqcHiUZLmIXgfgWooKWXcwSGwQd2Zi5Rb0bT14+8CJjJgI8AB+nndLaNgHGrcc6bPIB665g==} + pump@3.0.2: resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} @@ -6812,6 +7362,14 @@ packages: rc9@2.1.2: resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} + react-dom@19.2.3: + resolution: {integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==} + peerDependencies: + react: ^19.2.3 + + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + react@19.1.1: resolution: {integrity: sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==} engines: {node: '>=0.10.0'} @@ -6852,6 +7410,10 @@ packages: resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} engines: {node: '>= 14.16.0'} + recast@0.23.11: + resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==} + engines: {node: '>= 4'} + recma-build-jsx@1.0.0: resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} @@ -6864,6 +7426,10 @@ packages: recma-stringify@1.0.0: resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==} + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + redis-errors@1.2.0: resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} engines: {node: '>=4'} @@ -7070,6 +7636,9 @@ packages: sax@1.4.1: resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + schema-utils@3.3.0: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} @@ -7189,6 +7758,9 @@ packages: resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} engines: {node: '>= 0.4'} + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -7206,6 +7778,10 @@ packages: resolution: {integrity: sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==} engines: {node: '>=18'} + sirv@3.0.2: + resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} + engines: {node: '>=18'} + sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} @@ -7275,6 +7851,9 @@ packages: stable-hash@0.0.4: resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==} + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + standard-as-callback@2.1.0: resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} @@ -7305,6 +7884,15 @@ packages: std-env@3.8.0: resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} + storybook@10.1.10: + resolution: {integrity: sha512-oK0t0jEogiKKfv5Z1ao4Of99+xWw1TMUGuGRYDQS4kp2yyBsJQEgu7NI7OLYsCDI6gzt5p3RPtl1lqdeVLUi8A==} + hasBin: true + peerDependencies: + prettier: ^2 || ^3 + peerDependenciesMeta: + prettier: + optional: true + stream-replace-string@2.0.0: resolution: {integrity: sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==} @@ -7478,6 +8066,9 @@ packages: engines: {node: '>=14.0.0'} hasBin: true + tailwindcss@4.1.18: + resolution: {integrity: sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==} + tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} @@ -7558,6 +8149,9 @@ packages: tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + tinyexec@0.3.1: resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} @@ -7580,6 +8174,18 @@ packages: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} + tinyrainbow@2.0.0: + resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} + engines: {node: '>=14.0.0'} + + tinyrainbow@3.0.3: + resolution: {integrity: sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==} + engines: {node: '>=14.0.0'} + + tinyspy@4.0.4: + resolution: {integrity: sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==} + engines: {node: '>=14.0.0'} + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -7588,6 +8194,9 @@ packages: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} + token-stream@1.0.0: + resolution: {integrity: sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==} + totalist@3.0.1: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} @@ -7613,9 +8222,16 @@ packages: peerDependencies: typescript: '>=4.8.4' + ts-dedent@2.2.0: + resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} + engines: {node: '>=6.10'} + ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + ts-map@1.0.3: + resolution: {integrity: sha512-vDWbsl26LIcPGmDpoVzjEP6+hvHZkBkLW7JpvwbCv/5IYPJlsbzCVXY3wsCeAxAUeTclNOUZxnLdGh3VBD/J6w==} + tsconfck@3.1.5: resolution: {integrity: sha512-CLDfGgUp7XPswWnezWwsCRxNmgQjhYq3VXHM0/XIRxhVrKw0M1if9agzryh1QS3nxjCROvV+xWxoJO1YctzzWg==} engines: {node: ^18 || >=20} @@ -7683,6 +8299,10 @@ packages: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} + type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + type-fest@4.30.0: resolution: {integrity: sha512-G6zXWS1dLj6eagy6sVhOMQiLtJdxQBHIA9Z6HFUNLOlr6MFOgzV8wvmidtPONfPtEUv0uZsy77XJNzTAfwPDaA==} engines: {node: '>=16'} @@ -7969,6 +8589,11 @@ packages: urlpattern-polyfill@8.0.2: resolution: {integrity: sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==} + use-sync-external-store@1.6.0: + resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -8048,34 +8673,6 @@ packages: peerDependencies: vue: '>=3.2.13' - vite@4.5.3: - resolution: {integrity: sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - vite@5.4.11: resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==} engines: {node: ^18.0.0 || >=20.0.0} @@ -8155,6 +8752,44 @@ packages: vite: optional: true + vitest@4.0.16: + resolution: {integrity: sha512-E4t7DJ9pESL6E3I8nFjPa4xGUd3PmiWDLsDztS2qXSJWfHtbQnwAWylaBvSNY48I3vr8PTqIZlyK8TE3V3CA4Q==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.0.16 + '@vitest/browser-preview': 4.0.16 + '@vitest/browser-webdriverio': 4.0.16 + '@vitest/ui': 4.0.16 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@opentelemetry/api': + optional: true + '@types/node': + optional: true + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + void-elements@3.1.0: + resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} + engines: {node: '>=0.10.0'} + volar-service-css@0.0.62: resolution: {integrity: sha512-JwNyKsH3F8PuzZYuqPf+2e+4CTU8YoyUHEHVnoXNlrLe7wy9U3biomZ56llN69Ris7TTy/+DEX41yVxQpM4qvg==} peerDependencies: @@ -8271,9 +8906,23 @@ packages: vue-bundle-renderer@2.1.1: resolution: {integrity: sha512-+qALLI5cQncuetYOXp4yScwYvqh8c6SMXee3B+M7oTZxOgtESP0l4j/fXdEJoZ+EdMxkGWIj+aSEyjXkOdmd7g==} + vue-component-meta@2.2.12: + resolution: {integrity: sha512-dQU6/obNSNbennJ1xd+rhDid4g3vQro+9qUBBIg8HMZH2Zs1jTpkFNxuQ3z77bOlU+ew08Qck9sbYkdSePr0Pw==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + vue-component-type-helpers@2.2.12: + resolution: {integrity: sha512-YbGqHZ5/eW4SnkPNR44mKVc6ZKQoRs/Rux1sxC6rdwXb4qpbOSYfDr9DsTHolOTGmIKgM9j141mZbBeg05R1pw==} + vue-component-type-helpers@3.1.8: resolution: {integrity: sha512-oaowlmEM6BaYY+8o+9D9cuzxpWQWHqHTMKakMxXu0E+UCIOMTljyIPO15jcnaCwJtZu/zWDotK7mOIHvWD9mcw==} + vue-component-type-helpers@3.2.1: + resolution: {integrity: sha512-gKV7XOkQl4urSuLHNY1tnVQf7wVgtb/mKbRyxSLWGZUY9RK7aDPhBenTjm+i8ZFe0zC2PZeHMPtOZXZfyaFOzQ==} + vue-confetti-explosion@1.0.2: resolution: {integrity: sha512-80OboM3/6BItIoZ6DpNcZFqGpF607kjIVc5af56oKgtFmt5yWehvJeoYhkzYlqxrqdBe0Ko4Ie3bWrmLau+dJw==} engines: {node: '>=12'} @@ -8294,12 +8943,22 @@ packages: vue-devtools-stub@0.1.0: resolution: {integrity: sha512-RutnB7X8c5hjq39NceArgXg28WZtZpGc3+J16ljMiYnFhKvd8hITxSWQSQ5bvldxMDU6gG5mkxl1MTQLXckVSQ==} + vue-docgen-api@4.79.2: + resolution: {integrity: sha512-n9ENAcs+40awPZMsas7STqjkZiVlIjxIKgiJr5rSohDP0/JCrD9VtlzNojafsA1MChm/hz2h3PDtUedx3lbgfA==} + peerDependencies: + vue: '>=2' + vue-eslint-parser@9.4.3: resolution: {integrity: sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' + vue-inbrowser-compiler-independent-utils@4.71.1: + resolution: {integrity: sha512-K3wt3iVmNGaFEOUR4JIThQRWfqokxLfnPslD41FDZB2ajXp789+wCqJyGYlIFsvEQ2P61PInw6/ph5iiqg51gg==} + peerDependencies: + vue: '>=2' + vue-multiselect@3.0.0: resolution: {integrity: sha512-uupKdINgz7j83lQToCL7KkgQQxvG43el++hsR39YT9pCe1DwzUGmKzPxjVP6rqskXed5P6DtUASYAlCliW740Q==} engines: {node: '>= 14.18.1', npm: '>= 6.14.15'} @@ -8427,6 +9086,11 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} hasBin: true + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + wide-align@1.1.5: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} @@ -8434,6 +9098,10 @@ packages: resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==} engines: {node: '>=18'} + with@7.0.2: + resolution: {integrity: sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==} + engines: {node: '>= 10.0.0'} + word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} @@ -8465,6 +9133,22 @@ packages: utf-8-validate: optional: true + ws@8.18.3: + resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + wsl-utils@0.1.0: + resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==} + engines: {node: '>=18'} + xml-name-validator@4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} @@ -8576,6 +9260,8 @@ packages: snapshots: + '@adobe/css-tools@4.4.4': {} + '@alloc/quick-lru@5.2.0': {} '@alvarosabu/utils@3.2.0': {} @@ -8583,7 +9269,7 @@ snapshots: '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/trace-mapping': 0.3.31 '@antfu/utils@0.7.10': {} @@ -8659,12 +9345,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/mdx@4.1.0(astro@5.4.1(@types/node@22.4.1)(db0@0.3.2)(jiti@2.6.1)(rollup@4.34.9)(sass@1.77.6)(terser@5.44.1)(typescript@5.8.2)(yaml@2.8.0))': + '@astrojs/mdx@4.1.0(astro@5.4.1(@types/node@22.4.1)(db0@0.3.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.34.9)(sass@1.77.6)(terser@5.44.1)(typescript@5.8.2)(yaml@2.8.0))': dependencies: '@astrojs/markdown-remark': 6.2.0 '@mdx-js/mdx': 3.1.0(acorn@8.14.0) acorn: 8.14.0 - astro: 5.4.1(@types/node@22.4.1)(db0@0.3.2)(jiti@2.6.1)(rollup@4.34.9)(sass@1.77.6)(terser@5.44.1)(typescript@5.8.2)(yaml@2.8.0) + astro: 5.4.1(@types/node@22.4.1)(db0@0.3.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.34.9)(sass@1.77.6)(terser@5.44.1)(typescript@5.8.2)(yaml@2.8.0) es-module-lexer: 1.6.0 estree-util-visit: 2.0.0 hast-util-to-html: 9.0.5 @@ -8688,16 +9374,16 @@ snapshots: stream-replace-string: 2.0.0 zod: 3.23.8 - '@astrojs/starlight@0.32.2(astro@5.4.1(@types/node@22.4.1)(db0@0.3.2)(jiti@2.6.1)(rollup@4.34.9)(sass@1.77.6)(terser@5.44.1)(typescript@5.8.2)(yaml@2.8.0))': + '@astrojs/starlight@0.32.2(astro@5.4.1(@types/node@22.4.1)(db0@0.3.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.34.9)(sass@1.77.6)(terser@5.44.1)(typescript@5.8.2)(yaml@2.8.0))': dependencies: - '@astrojs/mdx': 4.1.0(astro@5.4.1(@types/node@22.4.1)(db0@0.3.2)(jiti@2.6.1)(rollup@4.34.9)(sass@1.77.6)(terser@5.44.1)(typescript@5.8.2)(yaml@2.8.0)) + '@astrojs/mdx': 4.1.0(astro@5.4.1(@types/node@22.4.1)(db0@0.3.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.34.9)(sass@1.77.6)(terser@5.44.1)(typescript@5.8.2)(yaml@2.8.0)) '@astrojs/sitemap': 3.2.1 '@pagefind/default-ui': 1.3.0 '@types/hast': 3.0.4 '@types/js-yaml': 4.0.9 '@types/mdast': 4.0.4 - astro: 5.4.1(@types/node@22.4.1)(db0@0.3.2)(jiti@2.6.1)(rollup@4.34.9)(sass@1.77.6)(terser@5.44.1)(typescript@5.8.2)(yaml@2.8.0) - astro-expressive-code: 0.40.2(astro@5.4.1(@types/node@22.4.1)(db0@0.3.2)(jiti@2.6.1)(rollup@4.34.9)(sass@1.77.6)(terser@5.44.1)(typescript@5.8.2)(yaml@2.8.0)) + astro: 5.4.1(@types/node@22.4.1)(db0@0.3.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.34.9)(sass@1.77.6)(terser@5.44.1)(typescript@5.8.2)(yaml@2.8.0) + astro-expressive-code: 0.40.2(astro@5.4.1(@types/node@22.4.1)(db0@0.3.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.34.9)(sass@1.77.6)(terser@5.44.1)(typescript@5.8.2)(yaml@2.8.0)) bcp-47: 2.1.0 hast-util-from-html: 2.0.2 hast-util-select: 6.0.2 @@ -8768,7 +9454,7 @@ snapshots: '@babel/parser': 7.26.3 '@babel/types': 7.26.3 '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.0.2 '@babel/helper-annotate-as-pure@7.25.9': @@ -8843,8 +9529,12 @@ snapshots: '@babel/helper-string-parser@7.25.9': {} + '@babel/helper-string-parser@7.27.1': {} + '@babel/helper-validator-identifier@7.25.9': {} + '@babel/helper-validator-identifier@7.28.5': {} + '@babel/helper-validator-option@7.25.9': {} '@babel/helpers@7.26.0': @@ -8856,6 +9546,10 @@ snapshots: dependencies: '@babel/types': 7.26.3 + '@babel/parser@7.28.5': + dependencies: + '@babel/types': 7.28.5 + '@babel/plugin-proposal-decorators@7.24.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -8930,6 +9624,13 @@ snapshots: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 + '@babel/types@7.28.5': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + + '@bcoe/v8-coverage@1.0.2': {} + '@braw/async-computed@5.0.2(vue@3.5.13(typescript@5.5.4))': dependencies: vue: 3.5.13(typescript@5.5.4) @@ -8938,6 +9639,18 @@ snapshots: dependencies: vue: 3.5.13(typescript@5.8.3) + '@chromatic-com/storybook@4.1.3(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))': + dependencies: + '@neoconfetti/react': 1.0.0 + chromatic: 13.3.4 + filesize: 10.1.6 + jsonfile: 6.1.0 + storybook: 10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1) + strip-ansi: 7.1.0 + transitivePeerDependencies: + - '@chromatic-com/cypress' + - '@chromatic-com/playwright' + '@cloudflare/kv-asset-handler@0.3.4': dependencies: mime: 3.0.0 @@ -9066,9 +9779,6 @@ snapshots: '@esbuild/aix-ppc64@0.25.0': optional: true - '@esbuild/android-arm64@0.18.20': - optional: true - '@esbuild/android-arm64@0.21.5': optional: true @@ -9078,9 +9788,6 @@ snapshots: '@esbuild/android-arm64@0.25.0': optional: true - '@esbuild/android-arm@0.18.20': - optional: true - '@esbuild/android-arm@0.21.5': optional: true @@ -9090,9 +9797,6 @@ snapshots: '@esbuild/android-arm@0.25.0': optional: true - '@esbuild/android-x64@0.18.20': - optional: true - '@esbuild/android-x64@0.21.5': optional: true @@ -9102,9 +9806,6 @@ snapshots: '@esbuild/android-x64@0.25.0': optional: true - '@esbuild/darwin-arm64@0.18.20': - optional: true - '@esbuild/darwin-arm64@0.21.5': optional: true @@ -9114,9 +9815,6 @@ snapshots: '@esbuild/darwin-arm64@0.25.0': optional: true - '@esbuild/darwin-x64@0.18.20': - optional: true - '@esbuild/darwin-x64@0.21.5': optional: true @@ -9126,9 +9824,6 @@ snapshots: '@esbuild/darwin-x64@0.25.0': optional: true - '@esbuild/freebsd-arm64@0.18.20': - optional: true - '@esbuild/freebsd-arm64@0.21.5': optional: true @@ -9138,9 +9833,6 @@ snapshots: '@esbuild/freebsd-arm64@0.25.0': optional: true - '@esbuild/freebsd-x64@0.18.20': - optional: true - '@esbuild/freebsd-x64@0.21.5': optional: true @@ -9150,9 +9842,6 @@ snapshots: '@esbuild/freebsd-x64@0.25.0': optional: true - '@esbuild/linux-arm64@0.18.20': - optional: true - '@esbuild/linux-arm64@0.21.5': optional: true @@ -9162,9 +9851,6 @@ snapshots: '@esbuild/linux-arm64@0.25.0': optional: true - '@esbuild/linux-arm@0.18.20': - optional: true - '@esbuild/linux-arm@0.21.5': optional: true @@ -9174,9 +9860,6 @@ snapshots: '@esbuild/linux-arm@0.25.0': optional: true - '@esbuild/linux-ia32@0.18.20': - optional: true - '@esbuild/linux-ia32@0.21.5': optional: true @@ -9186,9 +9869,6 @@ snapshots: '@esbuild/linux-ia32@0.25.0': optional: true - '@esbuild/linux-loong64@0.18.20': - optional: true - '@esbuild/linux-loong64@0.21.5': optional: true @@ -9198,9 +9878,6 @@ snapshots: '@esbuild/linux-loong64@0.25.0': optional: true - '@esbuild/linux-mips64el@0.18.20': - optional: true - '@esbuild/linux-mips64el@0.21.5': optional: true @@ -9210,9 +9887,6 @@ snapshots: '@esbuild/linux-mips64el@0.25.0': optional: true - '@esbuild/linux-ppc64@0.18.20': - optional: true - '@esbuild/linux-ppc64@0.21.5': optional: true @@ -9222,9 +9896,6 @@ snapshots: '@esbuild/linux-ppc64@0.25.0': optional: true - '@esbuild/linux-riscv64@0.18.20': - optional: true - '@esbuild/linux-riscv64@0.21.5': optional: true @@ -9234,9 +9905,6 @@ snapshots: '@esbuild/linux-riscv64@0.25.0': optional: true - '@esbuild/linux-s390x@0.18.20': - optional: true - '@esbuild/linux-s390x@0.21.5': optional: true @@ -9246,9 +9914,6 @@ snapshots: '@esbuild/linux-s390x@0.25.0': optional: true - '@esbuild/linux-x64@0.18.20': - optional: true - '@esbuild/linux-x64@0.21.5': optional: true @@ -9261,9 +9926,6 @@ snapshots: '@esbuild/netbsd-arm64@0.25.0': optional: true - '@esbuild/netbsd-x64@0.18.20': - optional: true - '@esbuild/netbsd-x64@0.21.5': optional: true @@ -9279,9 +9941,6 @@ snapshots: '@esbuild/openbsd-arm64@0.25.0': optional: true - '@esbuild/openbsd-x64@0.18.20': - optional: true - '@esbuild/openbsd-x64@0.21.5': optional: true @@ -9291,9 +9950,6 @@ snapshots: '@esbuild/openbsd-x64@0.25.0': optional: true - '@esbuild/sunos-x64@0.18.20': - optional: true - '@esbuild/sunos-x64@0.21.5': optional: true @@ -9303,9 +9959,6 @@ snapshots: '@esbuild/sunos-x64@0.25.0': optional: true - '@esbuild/win32-arm64@0.18.20': - optional: true - '@esbuild/win32-arm64@0.21.5': optional: true @@ -9315,9 +9968,6 @@ snapshots: '@esbuild/win32-arm64@0.25.0': optional: true - '@esbuild/win32-ia32@0.18.20': - optional: true - '@esbuild/win32-ia32@0.21.5': optional: true @@ -9327,9 +9977,6 @@ snapshots: '@esbuild/win32-ia32@0.25.0': optional: true - '@esbuild/win32-x64@0.18.20': - optional: true - '@esbuild/win32-x64@0.21.5': optional: true @@ -9722,7 +10369,6 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping': 0.3.31 - optional: true '@jridgewell/gen-mapping@0.3.5': dependencies: @@ -9734,7 +10380,6 @@ snapshots: dependencies: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - optional: true '@jridgewell/resolve-uri@3.1.2': {} @@ -9753,8 +10398,7 @@ snapshots: '@jridgewell/sourcemap-codec@1.5.0': {} - '@jridgewell/sourcemap-codec@1.5.5': - optional: true + '@jridgewell/sourcemap-codec@1.5.5': {} '@jridgewell/trace-mapping@0.3.25': dependencies: @@ -9765,7 +10409,6 @@ snapshots: dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - optional: true '@jsdevtools/ono@7.1.3': {} @@ -9821,7 +10464,7 @@ snapshots: nopt: 5.0.0 npmlog: 5.0.1 rimraf: 3.0.2 - semver: 7.7.2 + semver: 7.7.3 tar: 6.2.1 transitivePeerDependencies: - encoding @@ -9857,6 +10500,14 @@ snapshots: - acorn - supports-color + '@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.1.1)': + dependencies: + '@types/mdx': 2.0.13 + '@types/react': 19.2.7 + react: 19.1.1 + + '@neoconfetti/react@1.0.0': {} + '@netlify/functions@2.8.2': dependencies: '@netlify/serverless-functions-api': 1.26.1 @@ -9882,12 +10533,12 @@ snapshots: '@nuxt/devalue@2.0.2': {} - '@nuxt/devtools-kit@1.6.3(magicast@0.3.5)(rollup@4.28.1)(vite@5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1))': + '@nuxt/devtools-kit@1.6.3(magicast@0.3.5)(rollup@4.28.1)(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))': dependencies: '@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@4.28.1) '@nuxt/schema': 3.14.1592(magicast@0.3.5)(rollup@4.28.1) execa: 7.2.0 - vite: 5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1) + vite: 5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1) transitivePeerDependencies: - magicast - rollup @@ -9906,13 +10557,13 @@ snapshots: rc9: 2.1.2 semver: 7.7.1 - '@nuxt/devtools@1.6.3(rollup@4.28.1)(vite@5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))': + '@nuxt/devtools@1.6.3(rollup@4.28.1)(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))': dependencies: '@antfu/utils': 0.7.10 - '@nuxt/devtools-kit': 1.6.3(magicast@0.3.5)(rollup@4.28.1)(vite@5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1)) + '@nuxt/devtools-kit': 1.6.3(magicast@0.3.5)(rollup@4.28.1)(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1)) '@nuxt/devtools-wizard': 1.6.3 '@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@4.28.1) - '@vue/devtools-core': 7.6.4(vite@5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4)) + '@vue/devtools-core': 7.6.4(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4)) '@vue/devtools-kit': 7.6.4 birpc: 0.2.19 consola: 3.2.3 @@ -9941,9 +10592,9 @@ snapshots: sirv: 3.0.0 tinyglobby: 0.2.10 unimport: 3.14.4(rollup@4.28.1) - vite: 5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1) - vite-plugin-inspect: 0.8.9(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@4.28.1))(rollup@4.28.1)(vite@5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1)) - vite-plugin-vue-inspector: 5.1.3(vite@5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1)) + vite: 5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1) + vite-plugin-inspect: 0.8.9(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@4.28.1))(rollup@4.28.1)(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1)) + vite-plugin-vue-inspector: 5.1.3(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1)) which: 3.0.1 ws: 8.18.0 transitivePeerDependencies: @@ -10040,6 +10691,34 @@ snapshots: - magicast optional: true + '@nuxt/kit@3.17.5(magicast@0.5.1)': + dependencies: + c12: 3.3.2(magicast@0.5.1) + consola: 3.4.2 + defu: 6.1.4 + destr: 2.0.5 + errx: 0.1.0 + exsolve: 1.0.8 + ignore: 7.0.5 + jiti: 2.6.1 + klona: 2.0.6 + knitwork: 1.3.0 + mlly: 1.8.0 + ohash: 2.0.11 + pathe: 2.0.3 + pkg-types: 2.3.0 + scule: 1.3.0 + semver: 7.7.3 + std-env: 3.10.0 + tinyglobby: 0.2.15 + ufo: 1.6.1 + unctx: 2.4.1 + unimport: 5.5.0 + untyped: 2.0.0 + transitivePeerDependencies: + - magicast + optional: true + '@nuxt/schema@3.14.1592(magicast@0.3.5)(rollup@4.28.1)': dependencies: c12: 2.0.1(magicast@0.3.5) @@ -10085,12 +10764,12 @@ snapshots: - rollup - supports-color - '@nuxt/vite-builder@3.14.1592(@types/node@20.14.11)(eslint@8.57.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.28.1)(sass@1.77.6)(terser@5.44.1)(typescript@5.5.4)(vue-tsc@2.1.6(typescript@5.5.4))(vue@3.5.13(typescript@5.5.4))': + '@nuxt/vite-builder@3.14.1592(@types/node@20.14.11)(eslint@8.57.1)(lightningcss@1.30.2)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.28.1)(sass@1.77.6)(terser@5.44.1)(typescript@5.5.4)(vue-tsc@2.1.6(typescript@5.5.4))(vue@3.5.13(typescript@5.5.4))': dependencies: '@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@4.28.1) '@rollup/plugin-replace': 6.0.1(rollup@4.28.1) - '@vitejs/plugin-vue': 5.2.1(vite@5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4)) - '@vitejs/plugin-vue-jsx': 4.1.1(vite@5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4)) + '@vitejs/plugin-vue': 5.2.1(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4)) + '@vitejs/plugin-vue-jsx': 4.1.1(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4)) autoprefixer: 10.4.20(postcss@8.4.49) clear: 0.1.0 consola: 3.2.3 @@ -10117,9 +10796,9 @@ snapshots: ufo: 1.5.4 unenv: 1.10.0 unplugin: 1.16.0 - vite: 5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1) - vite-node: 2.1.8(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1) - vite-plugin-checker: 0.8.0(eslint@8.57.1)(optionator@0.9.4)(typescript@5.5.4)(vite@5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1))(vue-tsc@2.1.6(typescript@5.5.4)) + vite: 5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1) + vite-node: 2.1.8(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1) + vite-plugin-checker: 0.8.0(eslint@8.57.1)(optionator@0.9.4)(typescript@5.5.4)(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue-tsc@2.1.6(typescript@5.5.4)) vue: 3.5.13(typescript@5.5.4) vue-bundle-renderer: 2.1.1 transitivePeerDependencies: @@ -10319,7 +10998,7 @@ snapshots: estree-walker: 2.0.2 fdir: 6.4.2(picomatch@4.0.2) is-reference: 1.2.1 - magic-string: 0.30.14 + magic-string: 0.30.21 picomatch: 4.0.2 optionalDependencies: rollup: 4.28.1 @@ -10328,7 +11007,7 @@ snapshots: dependencies: '@rollup/pluginutils': 5.1.3(rollup@4.28.1) estree-walker: 2.0.2 - magic-string: 0.30.14 + magic-string: 0.30.21 optionalDependencies: rollup: 4.28.1 @@ -10351,7 +11030,7 @@ snapshots: '@rollup/plugin-replace@6.0.1(rollup@4.28.1)': dependencies: '@rollup/pluginutils': 5.1.3(rollup@4.28.1) - magic-string: 0.30.14 + magic-string: 0.30.21 optionalDependencies: rollup: 4.28.1 @@ -10600,6 +11279,110 @@ snapshots: '@sindresorhus/merge-streams@2.3.0': {} + '@standard-schema/spec@1.1.0': {} + + '@storybook/addon-a11y@10.1.10(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))': + dependencies: + '@storybook/global': 5.0.0 + axe-core: 4.11.0 + storybook: 10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1) + + '@storybook/addon-docs@10.1.10(@types/react@19.2.7)(esbuild@0.25.0)(rollup@3.29.4)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(webpack@5.92.1(esbuild@0.25.0))': + dependencies: + '@mdx-js/react': 3.1.1(@types/react@19.2.7)(react@19.1.1) + '@storybook/csf-plugin': 10.1.10(esbuild@0.25.0)(rollup@3.29.4)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(webpack@5.92.1(esbuild@0.25.0)) + '@storybook/icons': 2.0.1(react-dom@19.2.3(react@19.1.1))(react@19.1.1) + '@storybook/react-dom-shim': 10.1.10(react-dom@19.2.3(react@19.1.1))(react@19.1.1)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1)) + react: 19.1.1 + react-dom: 19.2.3(react@19.1.1) + storybook: 10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1) + ts-dedent: 2.2.0 + transitivePeerDependencies: + - '@types/react' + - esbuild + - rollup + - vite + - webpack + + '@storybook/addon-onboarding@10.1.10(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))': + dependencies: + storybook: 10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1) + + '@storybook/addon-vitest@10.1.10(@vitest/browser-playwright@4.0.16)(@vitest/browser@4.0.16(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vitest@4.0.16))(@vitest/runner@4.0.16)(react-dom@19.2.3(react@19.1.1))(react@19.1.1)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vitest@4.0.16)': + dependencies: + '@storybook/global': 5.0.0 + '@storybook/icons': 2.0.1(react-dom@19.2.3(react@19.1.1))(react@19.1.1) + storybook: 10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1) + optionalDependencies: + '@vitest/browser': 4.0.16(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vitest@4.0.16) + '@vitest/browser-playwright': 4.0.16(playwright@1.57.0)(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vitest@4.0.16) + '@vitest/runner': 4.0.16 + vitest: 4.0.16(@types/node@22.4.1)(@vitest/browser-playwright@4.0.16)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1)(yaml@2.8.0) + transitivePeerDependencies: + - react + - react-dom + + '@storybook/builder-vite@10.1.10(esbuild@0.25.0)(rollup@3.29.4)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(webpack@5.92.1(esbuild@0.25.0))': + dependencies: + '@storybook/csf-plugin': 10.1.10(esbuild@0.25.0)(rollup@3.29.4)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(webpack@5.92.1(esbuild@0.25.0)) + '@vitest/mocker': 3.2.4(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1)) + storybook: 10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1) + ts-dedent: 2.2.0 + vite: 5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1) + transitivePeerDependencies: + - esbuild + - msw + - rollup + - webpack + + '@storybook/csf-plugin@10.1.10(esbuild@0.25.0)(rollup@3.29.4)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(webpack@5.92.1(esbuild@0.25.0))': + dependencies: + storybook: 10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1) + unplugin: 2.3.11 + optionalDependencies: + esbuild: 0.25.0 + rollup: 3.29.4 + vite: 5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1) + webpack: 5.92.1(esbuild@0.25.0) + + '@storybook/global@5.0.0': {} + + '@storybook/icons@2.0.1(react-dom@19.2.3(react@19.1.1))(react@19.1.1)': + dependencies: + react: 19.1.1 + react-dom: 19.2.3(react@19.1.1) + + '@storybook/react-dom-shim@10.1.10(react-dom@19.2.3(react@19.1.1))(react@19.1.1)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))': + dependencies: + react: 19.1.1 + react-dom: 19.2.3(react@19.1.1) + storybook: 10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1) + + '@storybook/vue3-vite@10.1.10(esbuild@0.25.0)(rollup@3.29.4)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))(webpack@5.92.1(esbuild@0.25.0))': + dependencies: + '@storybook/builder-vite': 10.1.10(esbuild@0.25.0)(rollup@3.29.4)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(webpack@5.92.1(esbuild@0.25.0)) + '@storybook/vue3': 10.1.10(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vue@3.5.13(typescript@5.5.4)) + magic-string: 0.30.21 + storybook: 10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1) + typescript: 5.8.3 + vite: 5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1) + vue-component-meta: 2.2.12(typescript@5.8.3) + vue-docgen-api: 4.79.2(vue@3.5.13(typescript@5.5.4)) + transitivePeerDependencies: + - esbuild + - msw + - rollup + - vue + - webpack + + '@storybook/vue3@10.1.10(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vue@3.5.13(typescript@5.5.4))': + dependencies: + '@storybook/global': 5.0.0 + storybook: 10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1) + type-fest: 2.19.0 + vue: 3.5.13(typescript@5.5.4) + vue-component-type-helpers: 3.2.1 + '@stripe/stripe-js@7.3.1': {} '@stylistic/eslint-plugin@2.9.0(eslint@9.13.0(jiti@2.6.1))(typescript@5.5.4)': @@ -10618,6 +11401,74 @@ snapshots: dependencies: vue: 3.5.13(typescript@5.5.4) + '@tailwindcss/node@4.1.18': + dependencies: + '@jridgewell/remapping': 2.3.5 + enhanced-resolve: 5.18.3 + jiti: 2.6.1 + lightningcss: 1.30.2 + magic-string: 0.30.21 + source-map-js: 1.2.1 + tailwindcss: 4.1.18 + + '@tailwindcss/oxide-android-arm64@4.1.18': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.1.18': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.1.18': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.1.18': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.18': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.1.18': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.1.18': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.1.18': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.1.18': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.18': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.1.18': + optional: true + + '@tailwindcss/oxide@4.1.18': + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.1.18 + '@tailwindcss/oxide-darwin-arm64': 4.1.18 + '@tailwindcss/oxide-darwin-x64': 4.1.18 + '@tailwindcss/oxide-freebsd-x64': 4.1.18 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.18 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.18 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.18 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.18 + '@tailwindcss/oxide-linux-x64-musl': 4.1.18 + '@tailwindcss/oxide-wasm32-wasi': 4.1.18 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.18 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.18 + + '@tailwindcss/vite@4.1.18(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))': + dependencies: + '@tailwindcss/node': 4.1.18 + '@tailwindcss/oxide': 4.1.18 + tailwindcss: 4.1.18 + vite: 5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1) + '@tanstack/match-sorter-utils@8.19.4': dependencies: remove-accents: 0.5.0 @@ -10709,9 +11560,33 @@ snapshots: dependencies: '@tauri-apps/api': 2.5.0 - '@tauri-apps/plugin-window-state@2.2.2': + '@tauri-apps/plugin-window-state@2.2.2': + dependencies: + '@tauri-apps/api': 2.5.0 + + '@testing-library/dom@10.4.1': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/runtime': 7.25.6 + '@types/aria-query': 5.0.4 + aria-query: 5.3.0 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + picocolors: 1.1.1 + pretty-format: 27.5.1 + + '@testing-library/jest-dom@6.9.1': + dependencies: + '@adobe/css-tools': 4.4.4 + aria-query: 5.3.2 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + picocolors: 1.1.1 + redent: 3.0.0 + + '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.1)': dependencies: - '@tauri-apps/api': 2.5.0 + '@testing-library/dom': 10.4.1 '@tresjs/cientos@4.3.1(@tresjs/core@4.3.6(three@0.172.0)(typescript@5.5.4)(vue@3.5.13(typescript@5.5.4)))(@types/three@0.172.0)(react@19.1.1)(three@0.172.0)(typescript@5.5.4)(vue@3.5.13(typescript@5.5.4))': dependencies: @@ -10758,12 +11633,21 @@ snapshots: dependencies: '@types/estree': 1.0.8 + '@types/aria-query@5.0.4': {} + + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + '@types/cookie@0.6.0': {} '@types/debug@4.1.12': dependencies: '@types/ms': 0.7.34 + '@types/deep-eql@4.0.2': {} + '@types/dompurify@3.0.5': dependencies: '@types/trusted-types': 2.0.7 @@ -10852,6 +11736,10 @@ snapshots: '@types/offscreencanvas@2019.7.3': {} + '@types/react@19.2.7': + dependencies: + csstype: 3.2.3 + '@types/resolve@1.20.2': {} '@types/rss@0.0.32': {} @@ -10949,6 +11837,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/project-service@8.38.0(typescript@5.5.4)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.38.0(typescript@5.5.4) + '@typescript-eslint/types': 8.38.0 + debug: 4.4.0(supports-color@9.4.0) + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/project-service@8.38.0(typescript@5.8.3)': dependencies: '@typescript-eslint/tsconfig-utils': 8.38.0(typescript@5.8.3) @@ -10968,6 +11865,10 @@ snapshots: '@typescript-eslint/types': 8.38.0 '@typescript-eslint/visitor-keys': 8.38.0 + '@typescript-eslint/tsconfig-utils@8.38.0(typescript@5.5.4)': + dependencies: + typescript: 5.5.4 + '@typescript-eslint/tsconfig-utils@8.38.0(typescript@5.8.3)': dependencies: typescript: 5.8.3 @@ -11015,6 +11916,22 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/typescript-estree@8.38.0(typescript@5.5.4)': + dependencies: + '@typescript-eslint/project-service': 8.38.0(typescript@5.5.4) + '@typescript-eslint/tsconfig-utils': 8.38.0(typescript@5.5.4) + '@typescript-eslint/types': 8.38.0 + '@typescript-eslint/visitor-keys': 8.38.0 + debug: 4.4.0(supports-color@9.4.0) + fast-glob: 3.3.2 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.2 + ts-api-utils: 2.1.0(typescript@5.5.4) + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/typescript-estree@8.38.0(typescript@5.8.3)': dependencies: '@typescript-eslint/project-service': 8.38.0(typescript@5.8.3) @@ -11042,6 +11959,17 @@ snapshots: - supports-color - typescript + '@typescript-eslint/utils@8.38.0(eslint@9.32.0(jiti@2.6.1))(typescript@5.5.4)': + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.6.1)) + '@typescript-eslint/scope-manager': 8.38.0 + '@typescript-eslint/types': 8.38.0 + '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.5.4) + eslint: 9.32.0(jiti@2.6.1) + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/utils@8.38.0(eslint@9.32.0(jiti@2.6.1))(typescript@5.8.3)': dependencies: '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.6.1)) @@ -11124,12 +12052,12 @@ snapshots: '@formatjs/intl': 2.10.4(typescript@5.5.4) intl-messageformat: 10.5.14 - '@vintl/nuxt@1.9.2(@vue/compiler-core@3.5.13)(magicast@0.3.5)(rollup@4.28.1)(typescript@5.5.4)(vite@5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))(webpack@5.92.1)': + '@vintl/nuxt@1.9.2(@vue/compiler-core@3.5.13)(magicast@0.3.5)(rollup@4.28.1)(typescript@5.5.4)(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))(webpack@5.92.1)': dependencies: '@formatjs/intl': 2.10.4(typescript@5.5.4) '@formatjs/intl-localematcher': 0.5.4 '@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@4.28.1) - '@vintl/unplugin': 2.0.0(@vue/compiler-core@3.5.13)(rollup@4.28.1)(vite@5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))(webpack@5.92.1) + '@vintl/unplugin': 2.0.0(@vue/compiler-core@3.5.13)(rollup@4.28.1)(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))(webpack@5.92.1) '@vintl/vintl': 4.4.1(typescript@5.5.4)(vue@3.5.13(typescript@5.5.4)) astring: 1.8.6 consola: 3.2.3 @@ -11156,7 +12084,7 @@ snapshots: - vue - webpack - '@vintl/unplugin@1.5.2(@vue/compiler-core@3.5.13)(rollup@3.29.4)(vite@4.5.3(@types/node@22.4.1)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))(webpack@5.92.1)': + '@vintl/unplugin@1.5.2(@vue/compiler-core@3.5.13)(rollup@3.29.4)(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))(webpack@5.92.1(esbuild@0.25.0))': dependencies: '@formatjs/cli-lib': 6.4.2(@vue/compiler-core@3.5.13)(vue@3.5.13(typescript@5.5.4)) '@formatjs/icu-messageformat-parser': 2.7.8 @@ -11167,8 +12095,8 @@ snapshots: unplugin: 1.16.0 optionalDependencies: rollup: 3.29.4 - vite: 4.5.3(@types/node@22.4.1)(sass@1.77.6)(terser@5.44.1) - webpack: 5.92.1 + vite: 5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1) + webpack: 5.92.1(esbuild@0.25.0) transitivePeerDependencies: - '@glimmer/env' - '@glimmer/reference' @@ -11180,7 +12108,7 @@ snapshots: - ts-jest - vue - '@vintl/unplugin@2.0.0(@vue/compiler-core@3.5.13)(rollup@4.28.1)(vite@5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))(webpack@5.92.1)': + '@vintl/unplugin@2.0.0(@vue/compiler-core@3.5.13)(rollup@4.28.1)(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))(webpack@5.92.1)': dependencies: '@formatjs/cli-lib': 6.4.2(@vue/compiler-core@3.5.13)(vue@3.5.13(typescript@5.5.4)) '@formatjs/icu-messageformat-parser': 2.7.8 @@ -11191,7 +12119,7 @@ snapshots: unplugin: 1.16.0 optionalDependencies: rollup: 4.28.1 - vite: 5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1) + vite: 5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1) webpack: 5.92.1 transitivePeerDependencies: - '@glimmer/env' @@ -11226,26 +12154,152 @@ snapshots: transitivePeerDependencies: - typescript - '@vitejs/plugin-vue-jsx@4.1.1(vite@5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))': + '@vitejs/plugin-vue-jsx@4.1.1(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))': dependencies: '@babel/core': 7.26.0 '@babel/plugin-transform-typescript': 7.26.3(@babel/core@7.26.0) '@vue/babel-plugin-jsx': 1.2.5(@babel/core@7.26.0) - vite: 5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1) + vite: 5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1) vue: 3.5.13(typescript@5.5.4) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.2.1(vite@5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))': + '@vitejs/plugin-vue@5.2.1(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))': dependencies: - vite: 5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1) + vite: 5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1) vue: 3.5.13(typescript@5.5.4) - '@vitejs/plugin-vue@5.2.1(vite@5.4.11(@types/node@22.4.1)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))': + '@vitejs/plugin-vue@5.2.1(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))': dependencies: - vite: 5.4.11(@types/node@22.4.1)(sass@1.77.6)(terser@5.44.1) + vite: 5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1) vue: 3.5.13(typescript@5.5.4) + '@vitest/browser-playwright@4.0.16(playwright@1.57.0)(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vitest@4.0.16)': + dependencies: + '@vitest/browser': 4.0.16(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vitest@4.0.16) + '@vitest/mocker': 4.0.16(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1)) + playwright: 1.57.0 + tinyrainbow: 3.0.3 + vitest: 4.0.16(@types/node@22.4.1)(@vitest/browser-playwright@4.0.16)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1)(yaml@2.8.0) + transitivePeerDependencies: + - bufferutil + - msw + - utf-8-validate + - vite + + '@vitest/browser@4.0.16(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vitest@4.0.16)': + dependencies: + '@vitest/mocker': 4.0.16(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1)) + '@vitest/utils': 4.0.16 + magic-string: 0.30.21 + pixelmatch: 7.1.0 + pngjs: 7.0.0 + sirv: 3.0.2 + tinyrainbow: 3.0.3 + vitest: 4.0.16(@types/node@22.4.1)(@vitest/browser-playwright@4.0.16)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1)(yaml@2.8.0) + ws: 8.18.3 + transitivePeerDependencies: + - bufferutil + - msw + - utf-8-validate + - vite + + '@vitest/coverage-v8@4.0.16(@vitest/browser@4.0.16(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vitest@4.0.16))(vitest@4.0.16)': + dependencies: + '@bcoe/v8-coverage': 1.0.2 + '@vitest/utils': 4.0.16 + ast-v8-to-istanbul: 0.3.10 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 5.0.6 + istanbul-reports: 3.2.0 + magicast: 0.5.1 + obug: 2.1.1 + std-env: 3.10.0 + tinyrainbow: 3.0.3 + vitest: 4.0.16(@types/node@22.4.1)(@vitest/browser-playwright@4.0.16)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1)(yaml@2.8.0) + optionalDependencies: + '@vitest/browser': 4.0.16(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vitest@4.0.16) + transitivePeerDependencies: + - supports-color + + '@vitest/expect@3.2.4': + dependencies: + '@types/chai': 5.2.3 + '@vitest/spy': 3.2.4 + '@vitest/utils': 3.2.4 + chai: 5.3.3 + tinyrainbow: 2.0.0 + + '@vitest/expect@4.0.16': + dependencies: + '@standard-schema/spec': 1.1.0 + '@types/chai': 5.2.3 + '@vitest/spy': 4.0.16 + '@vitest/utils': 4.0.16 + chai: 6.2.2 + tinyrainbow: 3.0.3 + + '@vitest/mocker@3.2.4(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))': + dependencies: + '@vitest/spy': 3.2.4 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1) + + '@vitest/mocker@4.0.16(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))': + dependencies: + '@vitest/spy': 4.0.16 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1) + + '@vitest/mocker@4.0.16(vite@6.2.0(@types/node@22.4.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1)(yaml@2.8.0))': + dependencies: + '@vitest/spy': 4.0.16 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 6.2.0(@types/node@22.4.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1)(yaml@2.8.0) + + '@vitest/pretty-format@3.2.4': + dependencies: + tinyrainbow: 2.0.0 + + '@vitest/pretty-format@4.0.16': + dependencies: + tinyrainbow: 3.0.3 + + '@vitest/runner@4.0.16': + dependencies: + '@vitest/utils': 4.0.16 + pathe: 2.0.3 + + '@vitest/snapshot@4.0.16': + dependencies: + '@vitest/pretty-format': 4.0.16 + magic-string: 0.30.21 + pathe: 2.0.3 + + '@vitest/spy@3.2.4': + dependencies: + tinyspy: 4.0.4 + + '@vitest/spy@4.0.16': {} + + '@vitest/utils@3.2.4': + dependencies: + '@vitest/pretty-format': 3.2.4 + loupe: 3.2.1 + tinyrainbow: 2.0.0 + + '@vitest/utils@4.0.16': + dependencies: + '@vitest/pretty-format': 4.0.16 + tinyrainbow: 3.0.3 + '@volar/kit@2.4.11(typescript@5.8.2)': dependencies: '@volar/language-service': 2.4.11 @@ -11259,6 +12313,10 @@ snapshots: dependencies: '@volar/source-map': 2.4.11 + '@volar/language-core@2.4.15': + dependencies: + '@volar/source-map': 2.4.15 + '@volar/language-core@2.4.4': dependencies: '@volar/source-map': 2.4.4 @@ -11284,6 +12342,8 @@ snapshots: '@volar/source-map@2.4.11': {} + '@volar/source-map@2.4.15': {} + '@volar/source-map@2.4.4': {} '@volar/typescript@2.4.11': @@ -11292,6 +12352,12 @@ snapshots: path-browserify: 1.0.1 vscode-uri: 3.0.8 + '@volar/typescript@2.4.15': + dependencies: + '@volar/language-core': 2.4.15 + path-browserify: 1.0.1 + vscode-uri: 3.0.8 + '@volar/typescript@2.4.4': dependencies: '@volar/language-core': 2.4.4 @@ -11505,14 +12571,14 @@ snapshots: '@vue/devtools-api@6.6.4': {} - '@vue/devtools-core@7.6.4(vite@5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))': + '@vue/devtools-core@7.6.4(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))': dependencies: '@vue/devtools-kit': 7.6.4 '@vue/devtools-shared': 7.6.7 mitt: 3.0.1 nanoid: 3.3.7 pathe: 1.1.2 - vite-hot-client: 0.2.3(vite@5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1)) + vite-hot-client: 0.2.3(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1)) vue: 3.5.13(typescript@5.5.4) transitivePeerDependencies: - vite @@ -11544,6 +12610,19 @@ snapshots: optionalDependencies: typescript: 5.5.4 + '@vue/language-core@2.2.12(typescript@5.8.3)': + dependencies: + '@volar/language-core': 2.4.15 + '@vue/compiler-dom': 3.5.13 + '@vue/compiler-vue2': 2.7.16 + '@vue/shared': 3.5.13 + alien-signals: 1.0.13 + minimatch: 9.0.5 + muggle-string: 0.4.1 + path-browserify: 1.0.1 + optionalDependencies: + typescript: 5.8.3 + '@vue/reactivity@3.5.13': dependencies: '@vue/shared': 3.5.13 @@ -11766,6 +12845,8 @@ snapshots: dependencies: acorn: 8.15.0 + acorn@7.4.1: {} + acorn@8.14.0: {} acorn@8.15.0: {} @@ -11812,6 +12893,8 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 + alien-signals@1.0.13: {} + ansi-align@3.0.1: dependencies: string-width: 4.2.3 @@ -11830,6 +12913,8 @@ snapshots: dependencies: color-convert: 2.0.1 + ansi-styles@5.2.0: {} + ansi-styles@6.2.1: {} ansi-to-html@0.7.2: @@ -11890,17 +12975,37 @@ snapshots: argparse@2.0.1: {} + aria-query@5.3.0: + dependencies: + dequal: 2.0.3 + aria-query@5.3.2: {} array-find-index@1.0.2: {} array-iterate@2.0.1: {} + asap@2.0.6: {} + + assert-never@1.4.0: {} + + assertion-error@2.0.1: {} + ast-kit@1.3.2: dependencies: '@babel/parser': 7.26.3 pathe: 1.1.2 + ast-types@0.16.1: + dependencies: + tslib: 2.6.3 + + ast-v8-to-istanbul@0.3.10: + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + estree-walker: 3.0.3 + js-tokens: 9.0.1 + ast-walker-scope@0.6.2: dependencies: '@babel/parser': 7.26.3 @@ -11908,12 +13013,12 @@ snapshots: astring@1.8.6: {} - astro-expressive-code@0.40.2(astro@5.4.1(@types/node@22.4.1)(db0@0.3.2)(jiti@2.6.1)(rollup@4.34.9)(sass@1.77.6)(terser@5.44.1)(typescript@5.8.2)(yaml@2.8.0)): + astro-expressive-code@0.40.2(astro@5.4.1(@types/node@22.4.1)(db0@0.3.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.34.9)(sass@1.77.6)(terser@5.44.1)(typescript@5.8.2)(yaml@2.8.0)): dependencies: - astro: 5.4.1(@types/node@22.4.1)(db0@0.3.2)(jiti@2.6.1)(rollup@4.34.9)(sass@1.77.6)(terser@5.44.1)(typescript@5.8.2)(yaml@2.8.0) + astro: 5.4.1(@types/node@22.4.1)(db0@0.3.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.34.9)(sass@1.77.6)(terser@5.44.1)(typescript@5.8.2)(yaml@2.8.0) rehype-expressive-code: 0.40.2 - astro@5.4.1(@types/node@22.4.1)(db0@0.3.2)(jiti@2.6.1)(rollup@4.34.9)(sass@1.77.6)(terser@5.44.1)(typescript@5.8.2)(yaml@2.8.0): + astro@5.4.1(@types/node@22.4.1)(db0@0.3.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.34.9)(sass@1.77.6)(terser@5.44.1)(typescript@5.8.2)(yaml@2.8.0): dependencies: '@astrojs/compiler': 2.10.4 '@astrojs/internal-helpers': 0.6.0 @@ -11965,8 +13070,8 @@ snapshots: unist-util-visit: 5.0.0 unstorage: 1.15.0(db0@0.3.2) vfile: 6.0.3 - vite: 6.2.0(@types/node@22.4.1)(jiti@2.6.1)(sass@1.77.6)(terser@5.44.1)(yaml@2.8.0) - vitefu: 1.0.6(vite@6.2.0(@types/node@22.4.1)(jiti@2.6.1)(sass@1.77.6)(terser@5.44.1)(yaml@2.8.0)) + vite: 6.2.0(@types/node@22.4.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1)(yaml@2.8.0) + vitefu: 1.0.6(vite@6.2.0(@types/node@22.4.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1)(yaml@2.8.0)) which-pm: 3.0.1 xxhash-wasm: 1.1.0 yargs-parser: 21.1.1 @@ -12024,10 +13129,16 @@ snapshots: postcss: 8.4.49 postcss-value-parser: 4.2.0 + axe-core@4.11.0: {} + axobject-query@4.1.0: {} b4a@1.6.6: {} + babel-walk@3.0.0-canary-5: + dependencies: + '@babel/types': 7.26.3 + bail@2.0.2: {} balanced-match@1.0.2: {} @@ -12150,6 +13261,24 @@ snapshots: magicast: 0.3.5 optional: true + c12@3.3.2(magicast@0.5.1): + dependencies: + chokidar: 4.0.3 + confbox: 0.2.2 + defu: 6.1.4 + dotenv: 17.2.3 + exsolve: 1.0.8 + giget: 2.0.0 + jiti: 2.6.1 + ohash: 2.0.11 + pathe: 2.0.3 + perfect-debounce: 2.0.0 + pkg-types: 2.3.0 + rc9: 2.1.2 + optionalDependencies: + magicast: 0.5.1 + optional: true + cac@6.7.14: {} call-bind-apply-helpers@1.0.2: @@ -12201,6 +13330,16 @@ snapshots: ccount@2.0.1: {} + chai@5.3.3: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.2.1 + pathval: 2.0.1 + + chai@6.2.2: {} + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 @@ -12216,8 +13355,14 @@ snapshots: character-entities@2.0.2: {} + character-parser@2.2.0: + dependencies: + is-regex: 1.2.1 + character-reference-invalid@2.0.1: {} + check-error@2.1.1: {} + chevrotain@7.1.1: dependencies: regexp-to-ast: 0.5.0 @@ -12244,6 +13389,8 @@ snapshots: chownr@2.0.0: {} + chromatic@13.3.4: {} + chrome-trace-event@1.0.4: optional: true @@ -12359,6 +13506,11 @@ snapshots: console-control-strings@1.1.0: {} + constantinople@4.0.1: + dependencies: + '@babel/parser': 7.26.3 + '@babel/types': 7.26.3 + convert-source-map@2.0.0: {} cookie-es@1.2.2: {} @@ -12444,6 +13596,8 @@ snapshots: css-what@6.1.0: {} + css.escape@1.5.1: {} + cssesc@3.0.0: {} cssfilter@0.0.10: {} @@ -12498,6 +13652,8 @@ snapshots: csstype@3.1.3: {} + csstype@3.2.3: {} + currently-unhandled@0.4.1: dependencies: array-find-index: 1.0.2 @@ -12531,6 +13687,8 @@ snapshots: dependencies: character-entities: 2.0.2 + deep-eql@5.0.2: {} + deep-is@0.1.4: {} deep-pick-omit@1.2.1: {} @@ -12598,6 +13756,12 @@ snapshots: dependencies: esutils: 2.0.3 + doctypes@1.1.0: {} + + dom-accessibility-api@0.5.16: {} + + dom-accessibility-api@0.6.3: {} + dom-serializer@2.0.0: dependencies: domelementtype: 2.3.0 @@ -12692,7 +13856,6 @@ snapshots: dependencies: graceful-fs: 4.2.11 tapable: 2.3.0 - optional: true entities@2.2.0: {} @@ -12720,8 +13883,7 @@ snapshots: es-module-lexer@1.6.0: {} - es-module-lexer@1.7.0: - optional: true + es-module-lexer@1.7.0: {} es-object-atoms@1.1.1: dependencies: @@ -12741,32 +13903,6 @@ snapshots: esast-util-from-estree: 2.0.0 vfile-message: 4.0.2 - esbuild@0.18.20: - optionalDependencies: - '@esbuild/android-arm': 0.18.20 - '@esbuild/android-arm64': 0.18.20 - '@esbuild/android-x64': 0.18.20 - '@esbuild/darwin-arm64': 0.18.20 - '@esbuild/darwin-x64': 0.18.20 - '@esbuild/freebsd-arm64': 0.18.20 - '@esbuild/freebsd-x64': 0.18.20 - '@esbuild/linux-arm': 0.18.20 - '@esbuild/linux-arm64': 0.18.20 - '@esbuild/linux-ia32': 0.18.20 - '@esbuild/linux-loong64': 0.18.20 - '@esbuild/linux-mips64el': 0.18.20 - '@esbuild/linux-ppc64': 0.18.20 - '@esbuild/linux-riscv64': 0.18.20 - '@esbuild/linux-s390x': 0.18.20 - '@esbuild/linux-x64': 0.18.20 - '@esbuild/netbsd-x64': 0.18.20 - '@esbuild/openbsd-x64': 0.18.20 - '@esbuild/sunos-x64': 0.18.20 - '@esbuild/win32-arm64': 0.18.20 - '@esbuild/win32-ia32': 0.18.20 - '@esbuild/win32-x64': 0.18.20 - optional: true - esbuild@0.21.5: optionalDependencies: '@esbuild/aix-ppc64': 0.21.5 @@ -12939,6 +14075,15 @@ snapshots: dependencies: eslint: 9.32.0(jiti@2.6.1) + eslint-plugin-storybook@10.1.10(eslint@9.32.0(jiti@2.6.1))(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(typescript@5.5.4): + dependencies: + '@typescript-eslint/utils': 8.38.0(eslint@9.32.0(jiti@2.6.1))(typescript@5.5.4) + eslint: 9.32.0(jiti@2.6.1) + storybook: 10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1) + transitivePeerDependencies: + - supports-color + - typescript + eslint-plugin-turbo@2.5.4(eslint@9.13.0(jiti@2.6.1))(turbo@2.5.4): dependencies: dotenv: 16.0.3 @@ -13146,6 +14291,8 @@ snapshots: transitivePeerDependencies: - supports-color + esm-resolve@1.0.11: {} + espree@10.2.0: dependencies: acorn: 8.14.0 @@ -13258,6 +14405,8 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 + expect-type@1.3.0: {} + expressive-code@0.40.2: dependencies: '@expressive-code/core': 0.40.2 @@ -13318,7 +14467,6 @@ snapshots: fdir@6.5.0(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 - optional: true fflate@0.4.8: {} @@ -13336,6 +14484,8 @@ snapshots: file-uri-to-path@1.0.0: {} + filesize@10.1.6: {} + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -13380,6 +14530,14 @@ snapshots: optionalDependencies: '@nuxt/kit': 3.17.5(magicast@0.3.5) + floating-vue@5.2.2(@nuxt/kit@3.17.5(magicast@0.5.1))(vue@3.5.13(typescript@5.5.4)): + dependencies: + '@floating-ui/dom': 1.1.1 + vue: 3.5.13(typescript@5.5.4) + vue-resize: 2.0.0-alpha.1(vue@3.5.13(typescript@5.5.4)) + optionalDependencies: + '@nuxt/kit': 3.17.5(magicast@0.5.1) + foreground-child@3.2.1: dependencies: cross-spawn: 7.0.3 @@ -13407,6 +14565,9 @@ snapshots: fs.realpath@1.0.0: {} + fsevents@2.3.2: + optional: true + fsevents@2.3.3: optional: true @@ -13628,6 +14789,10 @@ snapshots: has-symbols@1.1.0: {} + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + has-unicode@2.0.1: {} hash-sum@2.0.0: {} @@ -13849,6 +15014,8 @@ snapshots: hosted-git-info@2.8.9: {} + html-escaper@2.0.2: {} + html-escaper@3.0.3: {} html-minifier-terser@7.2.0: @@ -14031,6 +15198,11 @@ snapshots: is-docker@3.0.0: {} + is-expression@4.0.0: + dependencies: + acorn: 7.4.1 + object-assign: 4.1.1 + is-extendable@0.1.1: {} is-extglob@2.1.1: {} @@ -14062,10 +15234,19 @@ snapshots: is-plain-obj@4.1.0: {} + is-promise@2.2.2: {} + is-reference@1.2.1: dependencies: '@types/estree': 1.0.6 + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + is-ssh@1.4.0: dependencies: protocols: 2.0.1 @@ -14100,6 +15281,27 @@ snapshots: iso-3166-2@1.0.0: {} + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-lib-source-maps@5.0.6: + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + debug: 4.4.0(supports-color@9.4.0) + istanbul-lib-coverage: 3.2.2 + transitivePeerDependencies: + - supports-color + + istanbul-reports@3.2.0: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + jackspeak@3.4.0: dependencies: '@isaacs/cliui': 8.0.2 @@ -14117,8 +15319,7 @@ snapshots: jiti@2.4.2: {} - jiti@2.6.1: - optional: true + jiti@2.6.1: {} js-beautify@1.15.4: dependencies: @@ -14132,6 +15333,8 @@ snapshots: js-levenshtein@1.1.6: {} + js-stringify@1.0.2: {} + js-tokens@4.0.0: {} js-tokens@9.0.1: {} @@ -14189,6 +15392,11 @@ snapshots: jsonpointer@5.0.1: {} + jstransformer@1.0.0: + dependencies: + is-promise: 2.2.2 + promise: 7.3.1 + jszip@3.10.1: dependencies: lie: 3.3.0 @@ -14210,32 +15418,81 @@ snapshots: knitwork@1.1.0: {} - knitwork@1.3.0: + knitwork@1.3.0: + optional: true + + kolorist@1.8.0: {} + + launch-editor@2.9.1: + dependencies: + picocolors: 1.1.1 + shell-quote: 1.8.1 + + lazystream@1.0.1: + dependencies: + readable-stream: 2.3.8(patch_hash=h52dazg37p4h3yox67pw36akse) + + leac@0.6.0: {} + + leven@3.1.0: {} + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lie@3.3.0: + dependencies: + immediate: 3.0.6 + + lightningcss-android-arm64@1.30.2: + optional: true + + lightningcss-darwin-arm64@1.30.2: + optional: true + + lightningcss-darwin-x64@1.30.2: + optional: true + + lightningcss-freebsd-x64@1.30.2: + optional: true + + lightningcss-linux-arm-gnueabihf@1.30.2: optional: true - kolorist@1.8.0: {} + lightningcss-linux-arm64-gnu@1.30.2: + optional: true - launch-editor@2.9.1: - dependencies: - picocolors: 1.1.1 - shell-quote: 1.8.1 + lightningcss-linux-arm64-musl@1.30.2: + optional: true - lazystream@1.0.1: - dependencies: - readable-stream: 2.3.8(patch_hash=h52dazg37p4h3yox67pw36akse) + lightningcss-linux-x64-gnu@1.30.2: + optional: true - leac@0.6.0: {} + lightningcss-linux-x64-musl@1.30.2: + optional: true - leven@3.1.0: {} + lightningcss-win32-arm64-msvc@1.30.2: + optional: true - levn@0.4.1: - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 + lightningcss-win32-x64-msvc@1.30.2: + optional: true - lie@3.3.0: + lightningcss@1.30.2: dependencies: - immediate: 3.0.6 + detect-libc: 2.0.3 + optionalDependencies: + lightningcss-android-arm64: 1.30.2 + lightningcss-darwin-arm64: 1.30.2 + lightningcss-darwin-x64: 1.30.2 + lightningcss-freebsd-x64: 1.30.2 + lightningcss-linux-arm-gnueabihf: 1.30.2 + lightningcss-linux-arm64-gnu: 1.30.2 + lightningcss-linux-arm64-musl: 1.30.2 + lightningcss-linux-x64-gnu: 1.30.2 + lightningcss-linux-x64-musl: 1.30.2 + lightningcss-win32-arm64-msvc: 1.30.2 + lightningcss-win32-x64-msvc: 1.30.2 lilconfig@2.1.0: {} @@ -14267,7 +15524,7 @@ snapshots: mlly: 1.7.3 node-forge: 1.3.1 pathe: 1.1.2 - std-env: 3.8.0 + std-env: 3.10.0 ufo: 1.6.1 untun: 0.1.3 uqr: 0.1.2 @@ -14323,6 +15580,8 @@ snapshots: currently-unhandled: 0.4.1 signal-exit: 3.0.7 + loupe@3.2.1: {} + lower-case@2.0.2: dependencies: tslib: 2.6.3 @@ -14333,11 +15592,15 @@ snapshots: dependencies: yallist: 3.1.1 + lru-cache@8.0.5: {} + lucide-static@0.562.0: {} + lz-string@1.5.0: {} + magic-string-ast@0.6.2: dependencies: - magic-string: 0.30.14 + magic-string: 0.30.21 magic-string@0.30.14: dependencies: @@ -14350,7 +15613,6 @@ snapshots: magic-string@0.30.21: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - optional: true magicast@0.3.5: dependencies: @@ -14358,10 +15620,20 @@ snapshots: '@babel/types': 7.26.3 source-map-js: 1.2.1 + magicast@0.5.1: + dependencies: + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 + source-map-js: 1.2.1 + make-dir@3.1.0: dependencies: semver: 6.3.1 + make-dir@4.0.0: + dependencies: + semver: 7.7.3 + markdown-extensions@2.0.0: {} markdown-it@13.0.2: @@ -14972,9 +16244,6 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 - nanoid@3.3.11: - optional: true - nanoid@3.3.7: {} nanoid@3.3.8: {} @@ -15165,14 +16434,14 @@ snapshots: nuxi@3.16.0: {} - nuxt@3.14.1592(@parcel/watcher@2.4.1)(@types/node@20.14.11)(eslint@8.57.1)(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.28.1)(sass@1.77.6)(terser@5.44.1)(typescript@5.5.4)(vite@5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1))(vue-tsc@2.1.6(typescript@5.5.4))(xml2js@0.6.2): + nuxt@3.14.1592(@parcel/watcher@2.4.1)(@types/node@20.14.11)(eslint@8.57.1)(ioredis@5.4.1)(lightningcss@1.30.2)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.28.1)(sass@1.77.6)(terser@5.44.1)(typescript@5.5.4)(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue-tsc@2.1.6(typescript@5.5.4))(xml2js@0.6.2): dependencies: '@nuxt/devalue': 2.0.2 - '@nuxt/devtools': 1.6.3(rollup@4.28.1)(vite@5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4)) + '@nuxt/devtools': 1.6.3(rollup@4.28.1)(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4)) '@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@4.28.1) '@nuxt/schema': 3.14.1592(magicast@0.3.5)(rollup@4.28.1) '@nuxt/telemetry': 2.6.0(magicast@0.3.5)(rollup@4.28.1) - '@nuxt/vite-builder': 3.14.1592(@types/node@20.14.11)(eslint@8.57.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.28.1)(sass@1.77.6)(terser@5.44.1)(typescript@5.5.4)(vue-tsc@2.1.6(typescript@5.5.4))(vue@3.5.13(typescript@5.5.4)) + '@nuxt/vite-builder': 3.14.1592(@types/node@20.14.11)(eslint@8.57.1)(lightningcss@1.30.2)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.28.1)(sass@1.77.6)(terser@5.44.1)(typescript@5.5.4)(vue-tsc@2.1.6(typescript@5.5.4))(vue@3.5.13(typescript@5.5.4)) '@unhead/dom': 1.11.13 '@unhead/shared': 1.11.13 '@unhead/ssr': 1.11.13 @@ -15313,6 +16582,8 @@ snapshots: object-keys@1.1.1: {} + obug@2.1.1: {} + ofetch@1.4.1: dependencies: destr: 2.0.3 @@ -15349,6 +16620,13 @@ snapshots: is-inside-container: 1.0.0 is-wsl: 3.1.0 + open@10.2.0: + dependencies: + default-browser: 5.2.1 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + wsl-utils: 0.1.0 + open@8.4.2: dependencies: define-lazy-prop: 2.0.0 @@ -15522,8 +16800,9 @@ snapshots: pathe@1.1.2: {} - pathe@2.0.3: - optional: true + pathe@2.0.3: {} + + pathval@2.0.1: {} peberminta@0.9.0: {} @@ -15538,8 +16817,7 @@ snapshots: picomatch@4.0.2: {} - picomatch@4.0.3: - optional: true + picomatch@4.0.3: {} pify@2.3.0: {} @@ -15565,6 +16843,10 @@ snapshots: pirates@4.0.6: {} + pixelmatch@7.1.0: + dependencies: + pngjs: 7.0.0 + pkg-dir@4.2.0: dependencies: find-up: 4.1.0 @@ -15589,8 +16871,18 @@ snapshots: pathe: 2.0.3 optional: true + playwright-core@1.57.0: {} + + playwright@1.57.0: + dependencies: + playwright-core: 1.57.0 + optionalDependencies: + fsevents: 2.3.2 + pluralize@8.0.0: {} + pngjs@7.0.0: {} + postcss-calc@10.0.2(postcss@8.4.49): dependencies: postcss: 8.4.49 @@ -15783,13 +17075,6 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - postcss@8.5.6: - dependencies: - nanoid: 3.3.11 - picocolors: 1.1.1 - source-map-js: 1.2.1 - optional: true - posthog-js@1.158.2: dependencies: fflate: 0.4.8 @@ -15839,12 +17124,22 @@ snapshots: pretty-bytes@6.1.1: {} + pretty-format@27.5.1: + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + prismjs@1.29.0: {} process-nextick-args@2.0.1: {} process@0.11.10: {} + promise@7.3.1: + dependencies: + asap: 2.0.6 + prompts@2.4.2: dependencies: kleur: 3.0.3 @@ -15858,6 +17153,73 @@ snapshots: protocols@2.0.1: {} + pug-attrs@3.0.0: + dependencies: + constantinople: 4.0.1 + js-stringify: 1.0.2 + pug-runtime: 3.0.1 + + pug-code-gen@3.0.3: + dependencies: + constantinople: 4.0.1 + doctypes: 1.1.0 + js-stringify: 1.0.2 + pug-attrs: 3.0.0 + pug-error: 2.1.0 + pug-runtime: 3.0.1 + void-elements: 3.1.0 + with: 7.0.2 + + pug-error@2.1.0: {} + + pug-filters@4.0.0: + dependencies: + constantinople: 4.0.1 + jstransformer: 1.0.0 + pug-error: 2.1.0 + pug-walk: 2.0.0 + resolve: 1.22.8 + + pug-lexer@5.0.1: + dependencies: + character-parser: 2.2.0 + is-expression: 4.0.0 + pug-error: 2.1.0 + + pug-linker@4.0.0: + dependencies: + pug-error: 2.1.0 + pug-walk: 2.0.0 + + pug-load@3.0.0: + dependencies: + object-assign: 4.1.1 + pug-walk: 2.0.0 + + pug-parser@6.0.0: + dependencies: + pug-error: 2.1.0 + token-stream: 1.0.0 + + pug-runtime@3.0.1: {} + + pug-strip-comments@2.0.0: + dependencies: + pug-error: 2.1.0 + + pug-walk@2.0.0: {} + + pug@3.0.3: + dependencies: + pug-code-gen: 3.0.3 + pug-filters: 4.0.0 + pug-lexer: 5.0.1 + pug-linker: 4.0.0 + pug-load: 3.0.0 + pug-parser: 6.0.0 + pug-runtime: 3.0.1 + pug-strip-comments: 2.0.0 + pump@3.0.2: dependencies: end-of-stream: 1.4.4 @@ -15895,8 +17257,14 @@ snapshots: defu: 6.1.4 destr: 2.0.3 - react@19.1.1: - optional: true + react-dom@19.2.3(react@19.1.1): + dependencies: + react: 19.1.1 + scheduler: 0.27.0 + + react-is@17.0.2: {} + + react@19.1.1: {} read-cache@1.0.0: dependencies: @@ -15956,6 +17324,14 @@ snapshots: readdirp@4.0.2: {} + recast@0.23.11: + dependencies: + ast-types: 0.16.1 + esprima: 4.0.1 + source-map: 0.6.1 + tiny-invariant: 1.3.3 + tslib: 2.6.3 + recma-build-jsx@1.0.0: dependencies: '@types/estree': 1.0.6 @@ -15986,6 +17362,11 @@ snapshots: unified: 11.0.5 vfile: 6.0.3 + redent@3.0.0: + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + redis-errors@1.2.0: {} redis-parser@3.0.0: @@ -16302,6 +17683,8 @@ snapshots: sax@1.4.1: {} + scheduler@0.27.0: {} + schema-utils@3.3.0: dependencies: '@types/json-schema': 7.0.15 @@ -16344,8 +17727,7 @@ snapshots: semver@7.7.2: {} - semver@7.7.3: - optional: true + semver@7.7.3: {} send@0.19.0: dependencies: @@ -16476,6 +17858,8 @@ snapshots: side-channel-map: 1.0.1 side-channel-weakmap: 1.0.2 + siginfo@2.0.0: {} + signal-exit@3.0.7: {} signal-exit@4.1.0: {} @@ -16498,6 +17882,12 @@ snapshots: mrmime: 2.0.0 totalist: 3.0.1 + sirv@3.0.2: + dependencies: + '@polka/url': 1.0.0-next.25 + mrmime: 2.0.0 + totalist: 3.0.1 + sisteransi@1.0.5: {} sitemap@8.0.0: @@ -16555,14 +17945,16 @@ snapshots: stable-hash@0.0.4: {} + stackback@0.0.2: {} + standard-as-callback@2.1.0: {} - starlight-openapi@0.14.0(@astrojs/markdown-remark@6.2.0)(@astrojs/starlight@0.32.2(astro@5.4.1(@types/node@22.4.1)(db0@0.3.2)(jiti@2.6.1)(rollup@4.34.9)(sass@1.77.6)(terser@5.44.1)(typescript@5.8.2)(yaml@2.8.0)))(astro@5.4.1(@types/node@22.4.1)(db0@0.3.2)(jiti@2.6.1)(rollup@4.34.9)(sass@1.77.6)(terser@5.44.1)(typescript@5.8.2)(yaml@2.8.0))(openapi-types@12.1.3): + starlight-openapi@0.14.0(@astrojs/markdown-remark@6.2.0)(@astrojs/starlight@0.32.2(astro@5.4.1(@types/node@22.4.1)(db0@0.3.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.34.9)(sass@1.77.6)(terser@5.44.1)(typescript@5.8.2)(yaml@2.8.0)))(astro@5.4.1(@types/node@22.4.1)(db0@0.3.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.34.9)(sass@1.77.6)(terser@5.44.1)(typescript@5.8.2)(yaml@2.8.0))(openapi-types@12.1.3): dependencies: '@astrojs/markdown-remark': 6.2.0 - '@astrojs/starlight': 0.32.2(astro@5.4.1(@types/node@22.4.1)(db0@0.3.2)(jiti@2.6.1)(rollup@4.34.9)(sass@1.77.6)(terser@5.44.1)(typescript@5.8.2)(yaml@2.8.0)) + '@astrojs/starlight': 0.32.2(astro@5.4.1(@types/node@22.4.1)(db0@0.3.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.34.9)(sass@1.77.6)(terser@5.44.1)(typescript@5.8.2)(yaml@2.8.0)) '@readme/openapi-parser': 2.5.0(openapi-types@12.1.3) - astro: 5.4.1(@types/node@22.4.1)(db0@0.3.2)(jiti@2.6.1)(rollup@4.34.9)(sass@1.77.6)(terser@5.44.1)(typescript@5.8.2)(yaml@2.8.0) + astro: 5.4.1(@types/node@22.4.1)(db0@0.3.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.34.9)(sass@1.77.6)(terser@5.44.1)(typescript@5.8.2)(yaml@2.8.0) github-slugger: 2.0.0 url-template: 3.1.1 transitivePeerDependencies: @@ -16577,11 +17969,33 @@ snapshots: statuses@2.0.1: {} - std-env@3.10.0: - optional: true + std-env@3.10.0: {} std-env@3.8.0: {} + storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1): + dependencies: + '@storybook/global': 5.0.0 + '@storybook/icons': 2.0.1(react-dom@19.2.3(react@19.1.1))(react@19.1.1) + '@testing-library/jest-dom': 6.9.1 + '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1) + '@vitest/expect': 3.2.4 + '@vitest/spy': 3.2.4 + esbuild: 0.25.0 + open: 10.2.0 + recast: 0.23.11 + semver: 7.7.3 + use-sync-external-store: 1.6.0(react@19.1.1) + ws: 8.18.0 + optionalDependencies: + prettier: 3.6.2 + transitivePeerDependencies: + - '@testing-library/dom' + - bufferutil + - react + - react-dom + - utf-8-validate + stream-replace-string@2.0.0: {} streamx@2.18.0: @@ -16786,10 +18200,11 @@ snapshots: transitivePeerDependencies: - ts-node + tailwindcss@4.1.18: {} + tapable@2.2.1: {} - tapable@2.3.0: - optional: true + tapable@2.3.0: {} tar-stream@3.1.7: dependencies: @@ -16806,6 +18221,18 @@ snapshots: mkdirp: 1.0.4 yallist: 4.0.0 + terser-webpack-plugin@5.3.15(esbuild@0.25.0)(webpack@5.92.1(esbuild@0.25.0)): + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + jest-worker: 27.5.1 + schema-utils: 4.3.3 + serialize-javascript: 6.0.2 + terser: 5.44.1 + webpack: 5.92.1(esbuild@0.25.0) + optionalDependencies: + esbuild: 0.25.0 + optional: true + terser-webpack-plugin@5.3.15(webpack@5.92.1): dependencies: '@jridgewell/trace-mapping': 0.3.31 @@ -16874,12 +18301,13 @@ snapshots: tiny-invariant@1.3.3: {} + tinybench@2.9.0: {} + tinyexec@0.3.1: {} tinyexec@0.3.2: {} - tinyexec@1.0.2: - optional: true + tinyexec@1.0.2: {} tinyglobby@0.2.10: dependencies: @@ -16895,7 +18323,12 @@ snapshots: dependencies: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 - optional: true + + tinyrainbow@2.0.0: {} + + tinyrainbow@3.0.3: {} + + tinyspy@4.0.4: {} to-regex-range@5.0.1: dependencies: @@ -16903,6 +18336,8 @@ snapshots: toidentifier@1.0.1: {} + token-stream@1.0.0: {} + totalist@3.0.1: {} tr46@0.0.3: {} @@ -16915,12 +18350,20 @@ snapshots: dependencies: typescript: 5.5.4 + ts-api-utils@2.1.0(typescript@5.5.4): + dependencies: + typescript: 5.5.4 + ts-api-utils@2.1.0(typescript@5.8.3): dependencies: typescript: 5.8.3 + ts-dedent@2.2.0: {} + ts-interface-checker@0.1.13: {} + ts-map@1.0.3: {} + tsconfck@3.1.5(typescript@5.8.2): optionalDependencies: typescript: 5.8.2 @@ -16966,6 +18409,8 @@ snapshots: type-fest@0.8.1: {} + type-fest@2.19.0: {} + type-fest@4.30.0: {} typesafe-path@0.2.2: {} @@ -17179,7 +18624,6 @@ snapshots: acorn: 8.15.0 picomatch: 4.0.3 webpack-virtual-modules: 0.6.2 - optional: true unstorage@1.13.1(ioredis@5.4.1): dependencies: @@ -17239,7 +18683,7 @@ snapshots: unwasm@0.3.9: dependencies: knitwork: 1.1.0 - magic-string: 0.30.14 + magic-string: 0.30.21 mlly: 1.7.3 pathe: 1.1.2 pkg-types: 1.2.1 @@ -17270,6 +18714,10 @@ snapshots: urlpattern-polyfill@8.0.2: {} + use-sync-external-store@1.6.0(react@19.1.1): + dependencies: + react: 19.1.1 + util-deprecate@1.0.2: {} validate-npm-package-license@3.0.4: @@ -17292,17 +18740,17 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-hot-client@0.2.3(vite@5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1)): + vite-hot-client@0.2.3(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1)): dependencies: - vite: 5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1) + vite: 5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1) - vite-node@2.1.8(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1): + vite-node@2.1.8(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1): dependencies: cac: 6.7.14 debug: 4.4.0(supports-color@9.4.0) es-module-lexer: 1.5.4 pathe: 1.1.2 - vite: 5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1) + vite: 5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1) transitivePeerDependencies: - '@types/node' - less @@ -17314,7 +18762,7 @@ snapshots: - supports-color - terser - vite-plugin-checker@0.8.0(eslint@8.57.1)(optionator@0.9.4)(typescript@5.5.4)(vite@5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1))(vue-tsc@2.1.6(typescript@5.5.4)): + vite-plugin-checker@0.8.0(eslint@8.57.1)(optionator@0.9.4)(typescript@5.5.4)(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue-tsc@2.1.6(typescript@5.5.4)): dependencies: '@babel/code-frame': 7.26.2 ansi-escapes: 4.3.2 @@ -17326,7 +18774,7 @@ snapshots: npm-run-path: 4.0.1 strip-ansi: 6.0.1 tiny-invariant: 1.3.3 - vite: 5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1) + vite: 5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1) vscode-languageclient: 7.0.0 vscode-languageserver: 7.0.0 vscode-languageserver-textdocument: 1.0.12 @@ -17337,7 +18785,7 @@ snapshots: typescript: 5.5.4 vue-tsc: 2.1.6(typescript@5.5.4) - vite-plugin-inspect@0.8.9(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@4.28.1))(rollup@4.28.1)(vite@5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1)): + vite-plugin-inspect@0.8.9(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@4.28.1))(rollup@4.28.1)(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1)): dependencies: '@antfu/utils': 0.7.10 '@rollup/pluginutils': 5.1.3(rollup@4.28.1) @@ -17348,14 +18796,14 @@ snapshots: perfect-debounce: 1.0.0 picocolors: 1.1.1 sirv: 3.0.0 - vite: 5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1) + vite: 5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1) optionalDependencies: '@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@4.28.1) transitivePeerDependencies: - rollup - supports-color - vite-plugin-vue-inspector@5.1.3(vite@5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1)): + vite-plugin-vue-inspector@5.1.3(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1)): dependencies: '@babel/core': 7.26.0 '@babel/plugin-proposal-decorators': 7.24.7(@babel/core@7.26.0) @@ -17366,7 +18814,7 @@ snapshots: '@vue/compiler-dom': 3.5.13 kolorist: 1.8.0 magic-string: 0.30.14 - vite: 5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1) + vite: 5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1) transitivePeerDependencies: - supports-color @@ -17375,19 +18823,7 @@ snapshots: svgo: 3.3.2 vue: 3.5.13(typescript@5.5.4) - vite@4.5.3(@types/node@22.4.1)(sass@1.77.6)(terser@5.44.1): - dependencies: - esbuild: 0.18.20 - postcss: 8.5.6 - rollup: 3.29.4 - optionalDependencies: - '@types/node': 22.4.1 - fsevents: 2.3.3 - sass: 1.77.6 - terser: 5.44.1 - optional: true - - vite@5.4.11(@types/node@20.14.11)(sass@1.77.6)(terser@5.44.1): + vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1): dependencies: esbuild: 0.21.5 postcss: 8.4.49 @@ -17395,10 +18831,11 @@ snapshots: optionalDependencies: '@types/node': 20.14.11 fsevents: 2.3.3 + lightningcss: 1.30.2 sass: 1.77.6 terser: 5.44.1 - vite@5.4.11(@types/node@22.4.1)(sass@1.77.6)(terser@5.44.1): + vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1): dependencies: esbuild: 0.21.5 postcss: 8.4.49 @@ -17406,10 +18843,11 @@ snapshots: optionalDependencies: '@types/node': 22.4.1 fsevents: 2.3.3 + lightningcss: 1.30.2 sass: 1.77.6 terser: 5.44.1 - vite@6.2.0(@types/node@22.4.1)(jiti@2.6.1)(sass@1.77.6)(terser@5.44.1)(yaml@2.8.0): + vite@6.2.0(@types/node@22.4.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1)(yaml@2.8.0): dependencies: esbuild: 0.25.0 postcss: 8.5.3 @@ -17418,13 +18856,54 @@ snapshots: '@types/node': 22.4.1 fsevents: 2.3.3 jiti: 2.6.1 + lightningcss: 1.30.2 sass: 1.77.6 terser: 5.44.1 yaml: 2.8.0 - vitefu@1.0.6(vite@6.2.0(@types/node@22.4.1)(jiti@2.6.1)(sass@1.77.6)(terser@5.44.1)(yaml@2.8.0)): + vitefu@1.0.6(vite@6.2.0(@types/node@22.4.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1)(yaml@2.8.0)): + optionalDependencies: + vite: 6.2.0(@types/node@22.4.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1)(yaml@2.8.0) + + vitest@4.0.16(@types/node@22.4.1)(@vitest/browser-playwright@4.0.16)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1)(yaml@2.8.0): + dependencies: + '@vitest/expect': 4.0.16 + '@vitest/mocker': 4.0.16(vite@6.2.0(@types/node@22.4.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1)(yaml@2.8.0)) + '@vitest/pretty-format': 4.0.16 + '@vitest/runner': 4.0.16 + '@vitest/snapshot': 4.0.16 + '@vitest/spy': 4.0.16 + '@vitest/utils': 4.0.16 + es-module-lexer: 1.7.0 + expect-type: 1.3.0 + magic-string: 0.30.21 + obug: 2.1.1 + pathe: 2.0.3 + picomatch: 4.0.3 + std-env: 3.10.0 + tinybench: 2.9.0 + tinyexec: 1.0.2 + tinyglobby: 0.2.15 + tinyrainbow: 3.0.3 + vite: 6.2.0(@types/node@22.4.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1)(yaml@2.8.0) + why-is-node-running: 2.3.0 optionalDependencies: - vite: 6.2.0(@types/node@22.4.1)(jiti@2.6.1)(sass@1.77.6)(terser@5.44.1)(yaml@2.8.0) + '@types/node': 22.4.1 + '@vitest/browser-playwright': 4.0.16(playwright@1.57.0)(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vitest@4.0.16) + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - terser + - tsx + - yaml + + void-elements@3.1.0: {} volar-service-css@0.0.62(@volar/language-service@2.4.11): dependencies: @@ -17511,7 +18990,7 @@ snapshots: vscode-languageclient@7.0.0: dependencies: minimatch: 3.1.2 - semver: 7.7.2 + semver: 7.7.3 vscode-languageserver-protocol: 3.16.0 vscode-languageserver-protocol@3.16.0: @@ -17548,8 +19027,21 @@ snapshots: dependencies: ufo: 1.5.4 + vue-component-meta@2.2.12(typescript@5.8.3): + dependencies: + '@volar/typescript': 2.4.15 + '@vue/language-core': 2.2.12(typescript@5.8.3) + path-browserify: 1.0.1 + vue-component-type-helpers: 2.2.12 + optionalDependencies: + typescript: 5.8.3 + + vue-component-type-helpers@2.2.12: {} + vue-component-type-helpers@3.1.8: {} + vue-component-type-helpers@3.2.1: {} + vue-confetti-explosion@1.0.2(vue@3.5.13(typescript@5.5.4)): dependencies: vue: 3.5.13(typescript@5.5.4) @@ -17560,6 +19052,22 @@ snapshots: vue-devtools-stub@0.1.0: {} + vue-docgen-api@4.79.2(vue@3.5.13(typescript@5.5.4)): + dependencies: + '@babel/parser': 7.26.3 + '@babel/types': 7.26.3 + '@vue/compiler-dom': 3.5.13 + '@vue/compiler-sfc': 3.5.13 + ast-types: 0.16.1 + esm-resolve: 1.0.11 + hash-sum: 2.0.0 + lru-cache: 8.0.5 + pug: 3.0.3 + recast: 0.23.11 + ts-map: 1.0.3 + vue: 3.5.13(typescript@5.5.4) + vue-inbrowser-compiler-independent-utils: 4.71.1(vue@3.5.13(typescript@5.5.4)) + vue-eslint-parser@9.4.3(eslint@9.13.0(jiti@2.6.1)): dependencies: debug: 4.4.0(supports-color@9.4.0) @@ -17586,6 +19094,10 @@ snapshots: transitivePeerDependencies: - supports-color + vue-inbrowser-compiler-independent-utils@4.71.1(vue@3.5.13(typescript@5.5.4)): + dependencies: + vue: 3.5.13(typescript@5.5.4) + vue-multiselect@3.0.0: {} vue-multiselect@3.0.0-alpha.2: {} @@ -17716,6 +19228,38 @@ snapshots: - uglify-js optional: true + webpack@5.92.1(esbuild@0.25.0): + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.8 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/wasm-edit': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + acorn: 8.15.0 + acorn-import-attributes: 1.9.5(acorn@8.15.0) + browserslist: 4.28.1 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.18.3 + es-module-lexer: 1.7.0 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.1 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.3.0 + terser-webpack-plugin: 5.3.15(esbuild@0.25.0)(webpack@5.92.1(esbuild@0.25.0)) + watchpack: 2.4.4 + webpack-sources: 3.3.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + optional: true + whatwg-url@5.0.0: dependencies: tr46: 0.0.3 @@ -17739,6 +19283,11 @@ snapshots: dependencies: isexe: 2.0.0 + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + wide-align@1.1.5: dependencies: string-width: 4.2.3 @@ -17747,6 +19296,13 @@ snapshots: dependencies: string-width: 7.2.0 + with@7.0.2: + dependencies: + '@babel/parser': 7.26.3 + '@babel/types': 7.26.3 + assert-never: 1.4.0 + babel-walk: 3.0.0-canary-5 + word-wrap@1.2.5: {} wrap-ansi@7.0.0: @@ -17771,6 +19327,12 @@ snapshots: ws@8.18.0: {} + ws@8.18.3: {} + + wsl-utils@0.1.0: + dependencies: + is-wsl: 3.1.0 + xml-name-validator@4.0.0: {} xml2js@0.6.2: From 0c084d49a495380ca659b84edf2e3489953d1d72 Mon Sep 17 00:00:00 2001 From: tdgao Date: Fri, 26 Dec 2025 18:19:41 -0800 Subject: [PATCH 02/21] clean up stories --- .../base/stories/ButtonStyled.stories.ts | 45 ---------- .../components/base/stories/Chips.stories.ts | 18 +--- .../base/stories/DropzoneFileInput.stories.ts | 83 ------------------- 3 files changed, 3 insertions(+), 143 deletions(-) diff --git a/packages/ui/src/components/base/stories/ButtonStyled.stories.ts b/packages/ui/src/components/base/stories/ButtonStyled.stories.ts index 8ce7b66b80..d2ae66a3c9 100644 --- a/packages/ui/src/components/base/stories/ButtonStyled.stories.ts +++ b/packages/ui/src/components/base/stories/ButtonStyled.stories.ts @@ -6,51 +6,6 @@ const meta = { title: 'Base/ButtonStyled', component: ButtonStyled, tags: ['autodocs'], - argTypes: { - color: { - control: 'select', - options: ['standard', 'brand', 'red', 'orange', 'green', 'blue', 'purple', 'medal-promo'], - }, - size: { - control: 'select', - options: ['standard', 'large', 'small'], - }, - type: { - control: 'select', - options: [ - 'standard', - 'outlined', - 'transparent', - 'highlight', - 'highlight-colored-text', - 'chip', - ], - }, - colorFill: { - control: 'select', - options: ['auto', 'background', 'text', 'none'], - }, - hoverColorFill: { - control: 'select', - options: ['auto', 'background', 'text', 'none'], - }, - highlightedStyle: { - control: 'select', - options: ['main-nav-primary', 'main-nav-secondary'], - }, - circular: { control: 'boolean' }, - highlighted: { control: 'boolean' }, - }, - args: { - color: 'standard', - size: 'standard', - type: 'standard', - colorFill: 'auto', - hoverColorFill: 'auto', - circular: false, - highlighted: false, - highlightedStyle: 'main-nav-primary', - }, render: (args) => ({ components: { ButtonStyled }, setup() { diff --git a/packages/ui/src/components/base/stories/Chips.stories.ts b/packages/ui/src/components/base/stories/Chips.stories.ts index b36fe50dc7..7fbc167190 100644 --- a/packages/ui/src/components/base/stories/Chips.stories.ts +++ b/packages/ui/src/components/base/stories/Chips.stories.ts @@ -4,21 +4,9 @@ import Chips from '../Chips.vue' const meta = { title: 'Base/Chips', - // for vue generic typed component - // https://stackoverflow.com/questions/78037116/how-can-i-create-stories-for-generically-typed-vue-components - component: Chips as Record, + // @ts-ignore - error comes from generically typed component + component: Chips, tags: ['autodocs'], - argTypes: { - size: { control: 'select', options: ['standard', 'small'] }, - neverEmpty: { control: 'boolean' }, - capitalize: { control: 'boolean' }, - }, - args: { - items: ['Option 1', 'Option 2', 'Option 3'], - neverEmpty: true, - capitalize: true, - size: 'standard', - }, } satisfies Meta export default meta @@ -37,7 +25,7 @@ export const Small: Story = { }, } -export const AllowEmpty: Story = { +export const NeverEmpty: Story = { args: { items: ['Option 1', 'Option 2', 'Option 3'], neverEmpty: false, diff --git a/packages/ui/src/components/base/stories/DropzoneFileInput.stories.ts b/packages/ui/src/components/base/stories/DropzoneFileInput.stories.ts index 43bed4b8f3..e053d15a92 100644 --- a/packages/ui/src/components/base/stories/DropzoneFileInput.stories.ts +++ b/packages/ui/src/components/base/stories/DropzoneFileInput.stories.ts @@ -1,5 +1,4 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import { fn } from 'storybook/test' import DropzoneFileInput from '../DropzoneFileInput.vue' @@ -7,28 +6,6 @@ const meta = { title: 'Base/DropzoneFileInput', component: DropzoneFileInput, tags: ['autodocs'], - argTypes: { - size: { - control: 'select', - options: ['standard', 'small'], - }, - multiple: { control: 'boolean' }, - disabled: { control: 'boolean' }, - shouldAlwaysReset: { control: 'boolean' }, - accept: { control: 'text' }, - maxSize: { control: 'number' }, - primaryPrompt: { control: 'text' }, - secondaryPrompt: { control: 'text' }, - }, - args: { - size: 'standard', - multiple: false, - disabled: false, - shouldAlwaysReset: false, - primaryPrompt: 'Drag and drop files or click to browse', - secondaryPrompt: 'You can try to drag files or folder or click this area to select it', - onChange: fn(), - }, } satisfies Meta export default meta @@ -50,30 +27,6 @@ export const MultipleFiles: Story = { }, } -export const ImagesOnly: Story = { - args: { - accept: 'image/*', - primaryPrompt: 'Upload an image', - secondaryPrompt: 'Accepts PNG, JPG, GIF, WebP, and other image formats', - }, -} - -export const PDFOnly: Story = { - args: { - accept: '.pdf', - primaryPrompt: 'Upload a PDF document', - secondaryPrompt: 'Only PDF files are accepted', - }, -} - -export const WithMaxSize: Story = { - args: { - maxSize: 5 * 1024 * 1024, // 5MB - primaryPrompt: 'Upload a file (max 5MB)', - secondaryPrompt: 'Files larger than 5MB will be rejected', - }, -} - export const Disabled: Story = { args: { disabled: true, @@ -87,39 +40,3 @@ export const CustomPrompts: Story = { accept: '.jar,.zip', }, } - -export const SmallImageUploader: Story = { - args: { - size: 'small', - accept: 'image/*', - primaryPrompt: 'Upload icon', - secondaryPrompt: 'PNG or JPG, max 256x256', - }, -} - -// Showcase both sizes -export const SizeComparison: Story = { - render: () => ({ - components: { DropzoneFileInput }, - template: ` -
-
-

Standard Size

- -
-
-

Small Size

- -
-
- `, - }), -} From cd47b0b02509c75b61961aede77c51716f852c42 Mon Sep 17 00:00:00 2001 From: tdgao Date: Fri, 26 Dec 2025 18:22:56 -0800 Subject: [PATCH 03/21] small fix --- packages/ui/src/components/base/stories/Chips.stories.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ui/src/components/base/stories/Chips.stories.ts b/packages/ui/src/components/base/stories/Chips.stories.ts index 7fbc167190..e5beaa5704 100644 --- a/packages/ui/src/components/base/stories/Chips.stories.ts +++ b/packages/ui/src/components/base/stories/Chips.stories.ts @@ -25,7 +25,7 @@ export const Small: Story = { }, } -export const NeverEmpty: Story = { +export const AllowEmpty: Story = { args: { items: ['Option 1', 'Option 2', 'Option 3'], neverEmpty: false, From 813b234ac5357d844baaa37e8f8a43db787bb22c Mon Sep 17 00:00:00 2001 From: tdgao Date: Fri, 26 Dec 2025 19:28:22 -0800 Subject: [PATCH 04/21] add stories for all components --- packages/ui/eslint.config.mjs | 6 +- .../base/stories/Accordion.stories.ts | 37 +++++ .../base/stories/Admonition.stories.ts | 38 +++++ .../stories/AppearingProgressBar.stories.ts | 57 ++++++++ .../base/stories/AutoBrandIcon.stories.ts | 53 +++++++ .../base/stories/AutoLink.stories.ts | 32 +++++ .../components/base/stories/Avatar.stories.ts | 47 ++++++ .../components/base/stories/Badge.stories.ts | 55 +++++++ .../base/stories/BulletDivider.stories.ts | 28 ++++ .../components/base/stories/Button.stories.ts | 83 +++++++++++ .../base/stories/ButtonStyled.stories.ts | 1 - .../components/base/stories/Card.stories.ts | 38 +++++ .../base/stories/Checkbox.stories.ts | 57 ++++++++ .../components/base/stories/Chips.stories.ts | 1 - .../base/stories/Collapsible.stories.ts | 34 +++++ .../base/stories/CollapsibleRegion.stories.ts | 46 ++++++ .../base/stories/Combobox.stories.ts | 45 ++++++ .../base/stories/ContentPageHeader.stories.ts | 63 ++++++++ .../base/stories/CopyCode.stories.ts | 23 +++ .../base/stories/DoubleIcon.stories.ts | 26 ++++ .../base/stories/DropArea.stories.ts | 41 ++++++ .../base/stories/DropdownSelect.stories.ts | 36 +++++ .../base/stories/DropzoneFileInput.stories.ts | 1 - .../stories/EnvironmentIndicator.stories.ts | 54 +++++++ .../stories/ErrorInformationCard.stories.ts | 50 +++++++ .../base/stories/FileInput.stories.ts | 38 +++++ .../base/stories/FilterBar.stories.ts | 54 +++++++ .../base/stories/HeadingLink.stories.ts | 26 ++++ .../base/stories/HorizontalRule.stories.ts | 13 ++ .../base/stories/IconSelect.stories.ts | 47 ++++++ .../base/stories/JoinedButtons.stories.ts | 48 +++++++ .../base/stories/LargeRadioButton.stories.ts | 46 ++++++ .../base/stories/LoadingIndicator.stories.ts | 13 ++ .../base/stories/ManySelect.stories.ts | 78 ++++++++++ .../base/stories/MarkdownEditor.stories.ts | 44 ++++++ .../base/stories/MultiStageModal.stories.ts | 112 +++++++++++++++ .../base/stories/OptionGroup.stories.ts | 37 +++++ .../base/stories/OverflowMenu.stories.ts | 37 +++++ .../components/base/stories/Page.stories.ts | 78 ++++++++++ .../base/stories/Pagination.stories.ts | 46 ++++++ .../base/stories/PopoutMenu.stories.ts | 37 +++++ .../stories/PreviewSelectButton.stories.ts | 53 +++++++ .../base/stories/ProgressBar.stories.ts | 57 ++++++++ .../base/stories/ProgressSpinner.stories.ts | 33 +++++ .../base/stories/ProjectCard.stories.ts | 135 ++++++++++++++++++ .../base/stories/RadialHeader.stories.ts | 53 +++++++ .../base/stories/RadioButtons.stories.ts | 37 +++++ .../base/stories/ScrollablePanel.stories.ts | 32 +++++ .../base/stories/ServerNotice.stories.ts | 65 +++++++++ .../base/stories/SettingsLabel.stories.ts | 32 +++++ .../base/stories/SimpleBadge.stories.ts | 17 +++ .../components/base/stories/Slider.stories.ts | 47 ++++++ .../base/stories/SmartClickable.stories.ts | 30 ++++ .../base/stories/TagItem.stories.ts | 42 ++++++ .../base/stories/Timeline.stories.ts | 47 ++++++ .../components/base/stories/Toggle.stories.ts | 49 +++++++ .../stories/UnsavedChangesPopup.stories.ts | 81 +++++++++++ packages/ui/vite.config.ts | 18 ++- 58 files changed, 2527 insertions(+), 7 deletions(-) create mode 100644 packages/ui/src/components/base/stories/Accordion.stories.ts create mode 100644 packages/ui/src/components/base/stories/Admonition.stories.ts create mode 100644 packages/ui/src/components/base/stories/AppearingProgressBar.stories.ts create mode 100644 packages/ui/src/components/base/stories/AutoBrandIcon.stories.ts create mode 100644 packages/ui/src/components/base/stories/AutoLink.stories.ts create mode 100644 packages/ui/src/components/base/stories/Avatar.stories.ts create mode 100644 packages/ui/src/components/base/stories/Badge.stories.ts create mode 100644 packages/ui/src/components/base/stories/BulletDivider.stories.ts create mode 100644 packages/ui/src/components/base/stories/Button.stories.ts create mode 100644 packages/ui/src/components/base/stories/Card.stories.ts create mode 100644 packages/ui/src/components/base/stories/Checkbox.stories.ts create mode 100644 packages/ui/src/components/base/stories/Collapsible.stories.ts create mode 100644 packages/ui/src/components/base/stories/CollapsibleRegion.stories.ts create mode 100644 packages/ui/src/components/base/stories/Combobox.stories.ts create mode 100644 packages/ui/src/components/base/stories/ContentPageHeader.stories.ts create mode 100644 packages/ui/src/components/base/stories/CopyCode.stories.ts create mode 100644 packages/ui/src/components/base/stories/DoubleIcon.stories.ts create mode 100644 packages/ui/src/components/base/stories/DropArea.stories.ts create mode 100644 packages/ui/src/components/base/stories/DropdownSelect.stories.ts create mode 100644 packages/ui/src/components/base/stories/EnvironmentIndicator.stories.ts create mode 100644 packages/ui/src/components/base/stories/ErrorInformationCard.stories.ts create mode 100644 packages/ui/src/components/base/stories/FileInput.stories.ts create mode 100644 packages/ui/src/components/base/stories/FilterBar.stories.ts create mode 100644 packages/ui/src/components/base/stories/HeadingLink.stories.ts create mode 100644 packages/ui/src/components/base/stories/HorizontalRule.stories.ts create mode 100644 packages/ui/src/components/base/stories/IconSelect.stories.ts create mode 100644 packages/ui/src/components/base/stories/JoinedButtons.stories.ts create mode 100644 packages/ui/src/components/base/stories/LargeRadioButton.stories.ts create mode 100644 packages/ui/src/components/base/stories/LoadingIndicator.stories.ts create mode 100644 packages/ui/src/components/base/stories/ManySelect.stories.ts create mode 100644 packages/ui/src/components/base/stories/MarkdownEditor.stories.ts create mode 100644 packages/ui/src/components/base/stories/MultiStageModal.stories.ts create mode 100644 packages/ui/src/components/base/stories/OptionGroup.stories.ts create mode 100644 packages/ui/src/components/base/stories/OverflowMenu.stories.ts create mode 100644 packages/ui/src/components/base/stories/Page.stories.ts create mode 100644 packages/ui/src/components/base/stories/Pagination.stories.ts create mode 100644 packages/ui/src/components/base/stories/PopoutMenu.stories.ts create mode 100644 packages/ui/src/components/base/stories/PreviewSelectButton.stories.ts create mode 100644 packages/ui/src/components/base/stories/ProgressBar.stories.ts create mode 100644 packages/ui/src/components/base/stories/ProgressSpinner.stories.ts create mode 100644 packages/ui/src/components/base/stories/ProjectCard.stories.ts create mode 100644 packages/ui/src/components/base/stories/RadialHeader.stories.ts create mode 100644 packages/ui/src/components/base/stories/RadioButtons.stories.ts create mode 100644 packages/ui/src/components/base/stories/ScrollablePanel.stories.ts create mode 100644 packages/ui/src/components/base/stories/ServerNotice.stories.ts create mode 100644 packages/ui/src/components/base/stories/SettingsLabel.stories.ts create mode 100644 packages/ui/src/components/base/stories/SimpleBadge.stories.ts create mode 100644 packages/ui/src/components/base/stories/Slider.stories.ts create mode 100644 packages/ui/src/components/base/stories/SmartClickable.stories.ts create mode 100644 packages/ui/src/components/base/stories/TagItem.stories.ts create mode 100644 packages/ui/src/components/base/stories/Timeline.stories.ts create mode 100644 packages/ui/src/components/base/stories/Toggle.stories.ts create mode 100644 packages/ui/src/components/base/stories/UnsavedChangesPopup.stories.ts diff --git a/packages/ui/eslint.config.mjs b/packages/ui/eslint.config.mjs index 65d9c9f44e..d73fb190f4 100644 --- a/packages/ui/eslint.config.mjs +++ b/packages/ui/eslint.config.mjs @@ -1,9 +1,9 @@ import baseConfig from '@modrinth/tooling-config/eslint/nuxt.mjs' import storybook from 'eslint-plugin-storybook' -export default [ - ...baseConfig, +export default baseConfig.append([ { + name: 'storybook', files: ['**/*.stories.@(js|jsx|ts|tsx)', '**/.storybook/**/*.@(js|ts)'], plugins: { storybook, @@ -12,4 +12,4 @@ export default [ ...storybook.configs.recommended.rules, }, }, -] +]) diff --git a/packages/ui/src/components/base/stories/Accordion.stories.ts b/packages/ui/src/components/base/stories/Accordion.stories.ts new file mode 100644 index 0000000000..a7a7f1f393 --- /dev/null +++ b/packages/ui/src/components/base/stories/Accordion.stories.ts @@ -0,0 +1,37 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import Accordion from '../Accordion.vue' + +const meta = { + title: 'Base/Accordion', + component: Accordion, + render: (args) => ({ + components: { Accordion }, + setup() { + return { args } + }, + template: /*html*/ ` + + +

This is the accordion content that shows when expanded.

+
+ `, + }), +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = {} + +export const OpenByDefault: Story = { + args: { + openByDefault: true, + }, +} + +export const ForceOpen: Story = { + args: { + forceOpen: true, + }, +} diff --git a/packages/ui/src/components/base/stories/Admonition.stories.ts b/packages/ui/src/components/base/stories/Admonition.stories.ts new file mode 100644 index 0000000000..b86cc583a1 --- /dev/null +++ b/packages/ui/src/components/base/stories/Admonition.stories.ts @@ -0,0 +1,38 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import Admonition from '../Admonition.vue' + +const meta = { + title: 'Base/Admonition', + component: Admonition, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: { + body: 'This is an informational message.', + }, +} + +export const AllTypes: Story = { + render: () => ({ + components: { Admonition }, + template: /*html*/ ` +
+ + + +
+ `, + }), +} + +export const WithHeader: Story = { + args: { + type: 'warning', + header: 'Important Notice', + body: 'Please read this carefully before proceeding.', + }, +} diff --git a/packages/ui/src/components/base/stories/AppearingProgressBar.stories.ts b/packages/ui/src/components/base/stories/AppearingProgressBar.stories.ts new file mode 100644 index 0000000000..e6577712b7 --- /dev/null +++ b/packages/ui/src/components/base/stories/AppearingProgressBar.stories.ts @@ -0,0 +1,57 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import AppearingProgressBar from '../AppearingProgressBar.vue' + +const meta = { + title: 'Base/AppearingProgressBar', + component: AppearingProgressBar, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: { + maxValue: 100, + currentValue: 45, + }, +} + +export const AllProgress: Story = { + ...Default, + render: () => ({ + components: { AppearingProgressBar }, + template: ` +
+
+

0%

+ +
+
+

25%

+ +
+
+

50%

+ +
+
+

75%

+ +
+
+

100%

+ +
+
+ `, + }), +} + +export const CustomTips: Story = { + args: { + maxValue: 1000000, + currentValue: 450000, + tips: ['Loading assets...', 'Processing data...', 'Almost there...'], + }, +} diff --git a/packages/ui/src/components/base/stories/AutoBrandIcon.stories.ts b/packages/ui/src/components/base/stories/AutoBrandIcon.stories.ts new file mode 100644 index 0000000000..0da7271e25 --- /dev/null +++ b/packages/ui/src/components/base/stories/AutoBrandIcon.stories.ts @@ -0,0 +1,53 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import AutoBrandIcon from '../AutoBrandIcon.vue' + +const meta = { + title: 'Base/AutoBrandIcon', + component: AutoBrandIcon, +} satisfies Meta + +export default meta +type Story = StoryObj & { args?: Record } + +export const Default: Story = { + args: { + keyword: 'discord', + }, +} + +export const AllBrands: Story = { + args: { keyword: 'discord' }, + render: () => ({ + components: { AutoBrandIcon }, + template: ` +
+
+ + {{ brand }} +
+
+ `, + setup() { + const brands = [ + 'discord', + 'github', + 'twitter', + 'youtube', + 'twitch', + 'reddit', + 'mastodon', + 'bluesky', + 'patreon', + 'kofi', + 'paypal', + 'curseforge', + 'modrinth', + 'instagram', + 'facebook', + 'tiktok', + ] + return { brands } + }, + }), +} diff --git a/packages/ui/src/components/base/stories/AutoLink.stories.ts b/packages/ui/src/components/base/stories/AutoLink.stories.ts new file mode 100644 index 0000000000..320f4d6e3c --- /dev/null +++ b/packages/ui/src/components/base/stories/AutoLink.stories.ts @@ -0,0 +1,32 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import AutoLink from '../AutoLink.vue' + +const meta = { + title: 'Base/AutoLink', + component: AutoLink, + render: (args) => ({ + components: { AutoLink }, + setup() { + return { args } + }, + template: /*html*/ ` + Link Text + `, + }), +} satisfies Meta + +export default meta +type Story = StoryObj + +export const ExternalLink: Story = { + args: { + to: 'https://modrinth.com', + }, +} + +export const InternalPath: Story = { + args: { + to: '/projects', + }, +} diff --git a/packages/ui/src/components/base/stories/Avatar.stories.ts b/packages/ui/src/components/base/stories/Avatar.stories.ts new file mode 100644 index 0000000000..e33de2f9ab --- /dev/null +++ b/packages/ui/src/components/base/stories/Avatar.stories.ts @@ -0,0 +1,47 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import Avatar from '../Avatar.vue' + +const meta = { + title: 'Base/Avatar', + component: Avatar, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = {} + +export const WithImage: Story = { + args: { + src: 'https://cdn.modrinth.com/data/AANobbMI/icon.png', + alt: 'Project icon', + }, +} + +export const Circle: Story = { + args: { + src: 'https://cdn.modrinth.com/data/AANobbMI/icon.png', + circle: true, + }, +} + +export const AllSizes: Story = { + render: () => ({ + components: { Avatar }, + template: /*html*/ ` +
+ + + + +
+ `, + }), +} + +export const Placeholder: Story = { + args: { + size: '3rem', + }, +} diff --git a/packages/ui/src/components/base/stories/Badge.stories.ts b/packages/ui/src/components/base/stories/Badge.stories.ts new file mode 100644 index 0000000000..95ad323544 --- /dev/null +++ b/packages/ui/src/components/base/stories/Badge.stories.ts @@ -0,0 +1,55 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import Badge from '../Badge.vue' + +const meta = { + title: 'Base/Badge', + component: Badge, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: { + type: 'approved', + }, +} + +export const ProjectStatuses = { + render: () => ({ + components: { Badge }, + template: /*html*/ ` +
+ + + + + + + +
+ `, + }), +} + +export const UserRoles: Story = { + ...Default, + render: () => ({ + components: { Badge }, + template: /*html*/ ` +
+ + + +
+ `, + }), +} + +export const WithColor: Story = { + args: { + type: 'release', + color: 'green', + }, +} diff --git a/packages/ui/src/components/base/stories/BulletDivider.stories.ts b/packages/ui/src/components/base/stories/BulletDivider.stories.ts new file mode 100644 index 0000000000..4c5ed66774 --- /dev/null +++ b/packages/ui/src/components/base/stories/BulletDivider.stories.ts @@ -0,0 +1,28 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import BulletDivider from '../BulletDivider.vue' + +const meta = { + title: 'Base/BulletDivider', + component: BulletDivider, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = {} + +export const InContext: Story = { + render: () => ({ + components: { BulletDivider }, + template: /*html*/ ` +
+ Item 1 + + Item 2 + + Item 3 +
+ `, + }), +} diff --git a/packages/ui/src/components/base/stories/Button.stories.ts b/packages/ui/src/components/base/stories/Button.stories.ts new file mode 100644 index 0000000000..8bea2dd51c --- /dev/null +++ b/packages/ui/src/components/base/stories/Button.stories.ts @@ -0,0 +1,83 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import Button from '../Button.vue' + +const meta = { + title: 'Base/Button', + component: Button, + render: (args) => ({ + components: { Button }, + setup() { + return { args } + }, + template: /*html*/ ` + + `, + }), +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = {} + +export const Primary: Story = { + args: { + color: 'primary', + }, +} + +export const Danger: Story = { + args: { + color: 'danger', + }, +} + +export const AllColors: Story = { + render: () => ({ + components: { Button }, + template: /*html*/ ` +
+ + + + + + + + +
+ `, + }), +} + +export const Large: Story = { + args: { + large: true, + }, +} + +export const Outline: Story = { + args: { + outline: true, + }, +} + +export const Transparent: Story = { + args: { + transparent: true, + }, +} + +export const Disabled: Story = { + args: { + disabled: true, + }, +} + +export const AsLink: Story = { + args: { + link: 'https://modrinth.com', + external: true, + }, +} diff --git a/packages/ui/src/components/base/stories/ButtonStyled.stories.ts b/packages/ui/src/components/base/stories/ButtonStyled.stories.ts index d2ae66a3c9..7c41fd426e 100644 --- a/packages/ui/src/components/base/stories/ButtonStyled.stories.ts +++ b/packages/ui/src/components/base/stories/ButtonStyled.stories.ts @@ -5,7 +5,6 @@ import ButtonStyled from '../ButtonStyled.vue' const meta = { title: 'Base/ButtonStyled', component: ButtonStyled, - tags: ['autodocs'], render: (args) => ({ components: { ButtonStyled }, setup() { diff --git a/packages/ui/src/components/base/stories/Card.stories.ts b/packages/ui/src/components/base/stories/Card.stories.ts new file mode 100644 index 0000000000..9eaffab328 --- /dev/null +++ b/packages/ui/src/components/base/stories/Card.stories.ts @@ -0,0 +1,38 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import Card from '../Card.vue' + +const meta = { + title: 'Base/Card', + component: Card, + render: (args) => ({ + components: { Card }, + setup() { + return { args } + }, + template: /*html*/ ` + + +

This is the card content.

+
+ `, + }), +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = {} + +export const Collapsible: Story = { + args: { + collapsible: true, + }, +} + +export const CollapsedByDefault: Story = { + args: { + collapsible: true, + defaultCollapsed: true, + }, +} diff --git a/packages/ui/src/components/base/stories/Checkbox.stories.ts b/packages/ui/src/components/base/stories/Checkbox.stories.ts new file mode 100644 index 0000000000..2f65cc399f --- /dev/null +++ b/packages/ui/src/components/base/stories/Checkbox.stories.ts @@ -0,0 +1,57 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import Checkbox from '../Checkbox.vue' + +const meta = { + title: 'Base/Checkbox', + component: Checkbox, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: { + label: 'Accept terms and conditions', + modelValue: false, + }, +} + +export const Checked: Story = { + args: { + label: 'Accept terms and conditions', + modelValue: true, + }, +} + +export const Disabled: Story = { + args: { + label: 'Disabled checkbox', + modelValue: false, + disabled: true, + }, +} + +export const Indeterminate: Story = { + args: { + label: 'Indeterminate state', + modelValue: false, + indeterminate: true, + }, +} + +export const AllStates: Story = { + args: { modelValue: false }, + render: () => ({ + components: { Checkbox }, + template: /*html*/ ` +
+ + + + + +
+ `, + }), +} diff --git a/packages/ui/src/components/base/stories/Chips.stories.ts b/packages/ui/src/components/base/stories/Chips.stories.ts index e5beaa5704..e793067fc8 100644 --- a/packages/ui/src/components/base/stories/Chips.stories.ts +++ b/packages/ui/src/components/base/stories/Chips.stories.ts @@ -6,7 +6,6 @@ const meta = { title: 'Base/Chips', // @ts-ignore - error comes from generically typed component component: Chips, - tags: ['autodocs'], } satisfies Meta export default meta diff --git a/packages/ui/src/components/base/stories/Collapsible.stories.ts b/packages/ui/src/components/base/stories/Collapsible.stories.ts new file mode 100644 index 0000000000..112fb247f7 --- /dev/null +++ b/packages/ui/src/components/base/stories/Collapsible.stories.ts @@ -0,0 +1,34 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import Collapsible from '../Collapsible.vue' + +const meta = { + title: 'Base/Collapsible', + component: Collapsible, + render: (args) => ({ + components: { Collapsible }, + setup() { + return { args } + }, + template: /*html*/ ` + +

This content can be collapsed or expanded.

+
+ `, + }), +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: { + collapsed: false, + }, +} + +export const Collapsed: Story = { + args: { + collapsed: true, + }, +} diff --git a/packages/ui/src/components/base/stories/CollapsibleRegion.stories.ts b/packages/ui/src/components/base/stories/CollapsibleRegion.stories.ts new file mode 100644 index 0000000000..b3203ec9d1 --- /dev/null +++ b/packages/ui/src/components/base/stories/CollapsibleRegion.stories.ts @@ -0,0 +1,46 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import CollapsibleRegion from '../CollapsibleRegion.vue' + +const meta = { + title: 'Base/CollapsibleRegion', + component: CollapsibleRegion, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + render: () => ({ + components: { CollapsibleRegion }, + template: ` + +
+

This is some content that can be collapsed or expanded.

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

+

Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

+

Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris.

+

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum.

+

Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia.

+
+
+ `, + }), +} + +export const CustomLabels: Story = { + render: () => ({ + components: { CollapsibleRegion }, + template: ` + +
+

Custom expand and collapse labels.

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

+

Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

+

Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris.

+

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum.

+
+
+ `, + }), +} diff --git a/packages/ui/src/components/base/stories/Combobox.stories.ts b/packages/ui/src/components/base/stories/Combobox.stories.ts new file mode 100644 index 0000000000..8bd5821576 --- /dev/null +++ b/packages/ui/src/components/base/stories/Combobox.stories.ts @@ -0,0 +1,45 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import Combobox from '../Combobox.vue' + +const meta = { + title: 'Base/Combobox', + component: Combobox as any, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: { + options: [ + { value: '1', label: 'Option 1' }, + { value: '2', label: 'Option 2' }, + { value: '3', label: 'Option 3' }, + ], + triggerText: 'Select an option', + }, +} + +export const Searchable: Story = { + args: { + options: [ + { value: '1', label: 'Minecraft' }, + { value: '2', label: 'Fabric' }, + { value: '3', label: 'Forge' }, + { value: '4', label: 'NeoForge' }, + { value: '5', label: 'Quilt' }, + ], + triggerText: 'Select a loader', + searchable: true, + searchPlaceholder: 'Search loaders...', + }, +} + +export const Disabled: Story = { + args: { + options: [{ value: '1', label: 'Option 1' }], + triggerText: 'Disabled', + disabled: true, + }, +} diff --git a/packages/ui/src/components/base/stories/ContentPageHeader.stories.ts b/packages/ui/src/components/base/stories/ContentPageHeader.stories.ts new file mode 100644 index 0000000000..77ec002124 --- /dev/null +++ b/packages/ui/src/components/base/stories/ContentPageHeader.stories.ts @@ -0,0 +1,63 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import Avatar from '../Avatar.vue' +import ButtonStyled from '../ButtonStyled.vue' +import ContentPageHeader from '../ContentPageHeader.vue' + +const meta = { + title: 'Base/ContentPageHeader', + component: ContentPageHeader, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + render: () => ({ + components: { ContentPageHeader, Avatar, ButtonStyled }, + template: ` + + + + + + + + `, + }), +} + +export const WithTitleSuffix: Story = { + render: () => ({ + components: { ContentPageHeader, Avatar, ButtonStyled }, + template: ` + + + + + + + + `, + }), +} diff --git a/packages/ui/src/components/base/stories/CopyCode.stories.ts b/packages/ui/src/components/base/stories/CopyCode.stories.ts new file mode 100644 index 0000000000..05f3196722 --- /dev/null +++ b/packages/ui/src/components/base/stories/CopyCode.stories.ts @@ -0,0 +1,23 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import CopyCode from '../CopyCode.vue' + +const meta = { + title: 'Base/CopyCode', + component: CopyCode, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: { + text: 'npm install @modrinth/ui', + }, +} + +export const LongText: Story = { + args: { + text: 'curl -X GET "https://api.modrinth.com/v2/project/sodium" -H "Accept: application/json"', + }, +} diff --git a/packages/ui/src/components/base/stories/DoubleIcon.stories.ts b/packages/ui/src/components/base/stories/DoubleIcon.stories.ts new file mode 100644 index 0000000000..74b91ac1de --- /dev/null +++ b/packages/ui/src/components/base/stories/DoubleIcon.stories.ts @@ -0,0 +1,26 @@ +import { DownloadIcon, HeartIcon } from '@modrinth/assets' +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import DoubleIcon from '../DoubleIcon.vue' + +const meta = { + title: 'Base/DoubleIcon', + component: DoubleIcon, + render: (args) => ({ + components: { DoubleIcon, DownloadIcon, HeartIcon }, + setup() { + return { args } + }, + template: /*html*/ ` + + + + + `, + }), +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = {} diff --git a/packages/ui/src/components/base/stories/DropArea.stories.ts b/packages/ui/src/components/base/stories/DropArea.stories.ts new file mode 100644 index 0000000000..d2a4224704 --- /dev/null +++ b/packages/ui/src/components/base/stories/DropArea.stories.ts @@ -0,0 +1,41 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import DropArea from '../DropArea.vue' + +const meta = { + title: 'Base/DropArea', + component: DropArea, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: { accept: '*' }, + render: () => ({ + components: { DropArea }, + template: ` + +
+

Drag and drop files anywhere on the page

+

The drop overlay will appear when you drag files over

+
+
+ `, + }), +} + +export const ImagesOnly: Story = { + args: { accept: 'image/*' }, + render: () => ({ + components: { DropArea }, + template: ` + +
+

Drop images here

+

Only accepts image files

+
+
+ `, + }), +} diff --git a/packages/ui/src/components/base/stories/DropdownSelect.stories.ts b/packages/ui/src/components/base/stories/DropdownSelect.stories.ts new file mode 100644 index 0000000000..53e40defa7 --- /dev/null +++ b/packages/ui/src/components/base/stories/DropdownSelect.stories.ts @@ -0,0 +1,36 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import DropdownSelect from '../DropdownSelect.vue' + +const meta = { + title: 'Base/DropdownSelect', + component: DropdownSelect, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: { + name: 'dropdown', + options: ['Option 1', 'Option 2', 'Option 3'], + modelValue: 'Option 1', + }, +} + +export const ManyOptions: Story = { + args: { + name: 'sort', + options: ['Relevance', 'Downloads', 'Follows', 'Newest', 'Updated'], + modelValue: 'Relevance', + }, +} + +export const Disabled: Story = { + args: { + name: 'disabled', + options: ['Option 1', 'Option 2', 'Option 3'], + modelValue: 'Option 1', + disabled: true, + }, +} diff --git a/packages/ui/src/components/base/stories/DropzoneFileInput.stories.ts b/packages/ui/src/components/base/stories/DropzoneFileInput.stories.ts index e053d15a92..f40a96340a 100644 --- a/packages/ui/src/components/base/stories/DropzoneFileInput.stories.ts +++ b/packages/ui/src/components/base/stories/DropzoneFileInput.stories.ts @@ -5,7 +5,6 @@ import DropzoneFileInput from '../DropzoneFileInput.vue' const meta = { title: 'Base/DropzoneFileInput', component: DropzoneFileInput, - tags: ['autodocs'], } satisfies Meta export default meta diff --git a/packages/ui/src/components/base/stories/EnvironmentIndicator.stories.ts b/packages/ui/src/components/base/stories/EnvironmentIndicator.stories.ts new file mode 100644 index 0000000000..2f9bb73325 --- /dev/null +++ b/packages/ui/src/components/base/stories/EnvironmentIndicator.stories.ts @@ -0,0 +1,54 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import EnvironmentIndicator from '../EnvironmentIndicator.vue' + +const meta = { + title: 'Base/EnvironmentIndicator', + component: EnvironmentIndicator, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: { + type: 'mod', + clientSide: 'required', + serverSide: 'optional', + }, +} + +export const AllEnvironments: Story = { + args: { type: 'mod' }, + render: () => ({ + components: { EnvironmentIndicator }, + template: ` +
+
+ + Client (required client, optional server) +
+
+ + Server (optional client, required server) +
+
+ + Client and server (both required) +
+
+ + Client or server (both optional) +
+
+ + Unsupported +
+
+ + Type only +
+
+ `, + }), +} diff --git a/packages/ui/src/components/base/stories/ErrorInformationCard.stories.ts b/packages/ui/src/components/base/stories/ErrorInformationCard.stories.ts new file mode 100644 index 0000000000..769b64a06a --- /dev/null +++ b/packages/ui/src/components/base/stories/ErrorInformationCard.stories.ts @@ -0,0 +1,50 @@ +import { IssuesIcon } from '@modrinth/assets' +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import ErrorInformationCard from '../ErrorInformationCard.vue' + +const meta = { + title: 'Base/ErrorInformationCard', + component: ErrorInformationCard, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: { + title: 'Something went wrong', + description: 'An unexpected error occurred while processing your request.', + icon: IssuesIcon, + }, +} + +export const WithErrorDetails: Story = { + args: { + title: 'Connection Failed', + description: 'Unable to connect to the server.', + icon: IssuesIcon, + errorDetails: [ + { label: 'Error Code', value: 'ERR_CONNECTION_REFUSED', type: 'inline' }, + { label: 'Timestamp', value: '2024-01-15T10:30:00Z', type: 'inline' }, + { + label: 'Stack Trace', + value: 'Error: Connection refused\n at Socket.connect\n at Client.connect', + type: 'block', + }, + ], + }, +} + +export const WithAction: Story = { + args: { + title: 'Download Failed', + description: 'The file could not be downloaded. Please try again.', + icon: IssuesIcon, + action: { + label: 'Retry Download', + onClick: () => console.log('Retry clicked'), + color: 'brand', + }, + }, +} diff --git a/packages/ui/src/components/base/stories/FileInput.stories.ts b/packages/ui/src/components/base/stories/FileInput.stories.ts new file mode 100644 index 0000000000..db20e1622a --- /dev/null +++ b/packages/ui/src/components/base/stories/FileInput.stories.ts @@ -0,0 +1,38 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import FileInput from '../FileInput.vue' + +const meta = { + title: 'Base/FileInput', + component: FileInput, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: { + prompt: 'Select file', + }, +} + +export const Multiple: Story = { + args: { + prompt: 'Select files', + multiple: true, + }, +} + +export const ImagesOnly: Story = { + args: { + prompt: 'Select image', + accept: 'image/*', + }, +} + +export const Disabled: Story = { + args: { + prompt: 'Select file', + disabled: true, + }, +} diff --git a/packages/ui/src/components/base/stories/FilterBar.stories.ts b/packages/ui/src/components/base/stories/FilterBar.stories.ts new file mode 100644 index 0000000000..379f3f3573 --- /dev/null +++ b/packages/ui/src/components/base/stories/FilterBar.stories.ts @@ -0,0 +1,54 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' +import { ref } from 'vue' + +import FilterBar from '../FilterBar.vue' + +const meta = { + title: 'Base/FilterBar', + component: FilterBar, +} satisfies Meta + +export default meta +type Story = StoryObj & { args?: Record } + +export const Default: Story = { + args: { modelValue: [], options: [] }, + render: () => ({ + components: { FilterBar }, + setup() { + const selected = ref([]) + const options = [ + { id: 'active', message: { id: 'filter.active', defaultMessage: 'Active' } }, + { id: 'archived', message: { id: 'filter.archived', defaultMessage: 'Archived' } }, + { id: 'draft', message: { id: 'filter.draft', defaultMessage: 'Draft' } }, + ] + return { selected, options } + }, + template: ` + + `, + }), +} + +export const WithSelection: Story = { + args: { modelValue: [], options: [] }, + render: () => ({ + components: { FilterBar }, + setup() { + const selected = ref(['mods', 'plugins']) + const options = [ + { id: 'mods', message: { id: 'filter.mods', defaultMessage: 'Mods' } }, + { id: 'plugins', message: { id: 'filter.plugins', defaultMessage: 'Plugins' } }, + { + id: 'resourcepacks', + message: { id: 'filter.resourcepacks', defaultMessage: 'Resource Packs' }, + }, + { id: 'modpacks', message: { id: 'filter.modpacks', defaultMessage: 'Modpacks' } }, + ] + return { selected, options } + }, + template: ` + + `, + }), +} diff --git a/packages/ui/src/components/base/stories/HeadingLink.stories.ts b/packages/ui/src/components/base/stories/HeadingLink.stories.ts new file mode 100644 index 0000000000..22a1856e6a --- /dev/null +++ b/packages/ui/src/components/base/stories/HeadingLink.stories.ts @@ -0,0 +1,26 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import HeadingLink from '../HeadingLink.vue' + +const meta = { + title: 'Base/HeadingLink', + component: HeadingLink, + render: (args) => ({ + components: { HeadingLink }, + setup() { + return { args } + }, + template: /*html*/ ` + View All Projects + `, + }), +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: { + to: '/projects', + }, +} diff --git a/packages/ui/src/components/base/stories/HorizontalRule.stories.ts b/packages/ui/src/components/base/stories/HorizontalRule.stories.ts new file mode 100644 index 0000000000..0d841072bb --- /dev/null +++ b/packages/ui/src/components/base/stories/HorizontalRule.stories.ts @@ -0,0 +1,13 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import HorizontalRule from '../HorizontalRule.vue' + +const meta = { + title: 'Base/HorizontalRule', + component: HorizontalRule, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = {} diff --git a/packages/ui/src/components/base/stories/IconSelect.stories.ts b/packages/ui/src/components/base/stories/IconSelect.stories.ts new file mode 100644 index 0000000000..adeb9ea9f0 --- /dev/null +++ b/packages/ui/src/components/base/stories/IconSelect.stories.ts @@ -0,0 +1,47 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import IconSelect from '../IconSelect.vue' + +const meta = { + title: 'Base/IconSelect', + component: IconSelect, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: {}, + render: () => ({ + components: { IconSelect }, + setup() { + const icon = undefined + return { icon } + }, + template: ` + + `, + }), +} + +export const WithIcon: Story = { + args: {}, + render: () => ({ + components: { IconSelect }, + setup() { + const icon = 'https://cdn.modrinth.com/data/AANobbMI/icon.png' + return { icon } + }, + template: ` + + `, + }), +} diff --git a/packages/ui/src/components/base/stories/JoinedButtons.stories.ts b/packages/ui/src/components/base/stories/JoinedButtons.stories.ts new file mode 100644 index 0000000000..b5e27a7e78 --- /dev/null +++ b/packages/ui/src/components/base/stories/JoinedButtons.stories.ts @@ -0,0 +1,48 @@ +import { DownloadIcon, HeartIcon, ShareIcon } from '@modrinth/assets' +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import JoinedButtons from '../JoinedButtons.vue' + +const meta = { + title: 'Base/JoinedButtons', + component: JoinedButtons, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: { + actions: [ + { id: 'download', label: 'Download', icon: DownloadIcon, action: () => {} }, + { id: 'follow', label: 'Follow', icon: HeartIcon, action: () => {} }, + { id: 'share', label: 'Share', icon: ShareIcon, action: () => {} }, + ], + }, +} + +export const Brand: Story = { + args: { + color: 'brand', + actions: [ + { id: 'download', label: 'Download', icon: DownloadIcon, action: () => {} }, + { id: 'follow', label: 'Follow', icon: HeartIcon, action: () => {} }, + ], + }, +} + +export const SingleAction: Story = { + args: { + actions: [{ id: 'download', label: 'Download', icon: DownloadIcon, action: () => {} }], + }, +} + +export const Disabled: Story = { + args: { + disabled: true, + actions: [ + { id: 'download', label: 'Download', icon: DownloadIcon, action: () => {} }, + { id: 'follow', label: 'Follow', icon: HeartIcon, action: () => {} }, + ], + }, +} diff --git a/packages/ui/src/components/base/stories/LargeRadioButton.stories.ts b/packages/ui/src/components/base/stories/LargeRadioButton.stories.ts new file mode 100644 index 0000000000..15119434af --- /dev/null +++ b/packages/ui/src/components/base/stories/LargeRadioButton.stories.ts @@ -0,0 +1,46 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import LargeRadioButton from '../LargeRadioButton.vue' + +const meta = { + title: 'Base/LargeRadioButton', + component: LargeRadioButton as any, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: {}, + render: () => ({ + components: { LargeRadioButton }, + template: ` + + Unselected option + + `, + }), +} + +export const AllStates: Story = { + args: {}, + render: () => ({ + components: { LargeRadioButton }, + template: ` +
+ + Unselected option + + + Selected option + + + Disabled unselected + + + Disabled selected + +
+ `, + }), +} diff --git a/packages/ui/src/components/base/stories/LoadingIndicator.stories.ts b/packages/ui/src/components/base/stories/LoadingIndicator.stories.ts new file mode 100644 index 0000000000..23044996c7 --- /dev/null +++ b/packages/ui/src/components/base/stories/LoadingIndicator.stories.ts @@ -0,0 +1,13 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import LoadingIndicator from '../LoadingIndicator.vue' + +const meta = { + title: 'Base/LoadingIndicator', + component: LoadingIndicator, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = {} diff --git a/packages/ui/src/components/base/stories/ManySelect.stories.ts b/packages/ui/src/components/base/stories/ManySelect.stories.ts new file mode 100644 index 0000000000..41ce922dfe --- /dev/null +++ b/packages/ui/src/components/base/stories/ManySelect.stories.ts @@ -0,0 +1,78 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' +import { ref } from 'vue' + +import ManySelect from '../ManySelect.vue' + +const meta = { + title: 'Base/ManySelect', + component: ManySelect, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: { modelValue: [], options: [] }, + render: () => ({ + components: { ManySelect }, + setup() { + const selected = ref([]) + const options = ['Option 1', 'Option 2', 'Option 3', 'Option 4', 'Option 5'] + return { selected, options } + }, + template: ` + + Select options ({{ selected.length }} selected) + + `, + }), +} + +export const WithSearch: Story = { + args: { modelValue: [], options: [] }, + render: () => ({ + components: { ManySelect }, + setup() { + const selected = ref(['Fabric', 'Forge']) + const options = [ + 'Fabric', + 'Forge', + 'Quilt', + 'NeoForge', + 'Paper', + 'Spigot', + 'Bukkit', + 'Sponge', + ] + return { selected, options } + }, + template: ` + + Loaders ({{ selected.length }} selected) + + `, + }), +} + +export const WithCustomDisplay: Story = { + args: { modelValue: [], options: [] }, + render: () => ({ + components: { ManySelect }, + setup() { + const selected = ref<{ id: string; name: string }[]>([]) + const options = [ + { id: '1', name: 'Adventure' }, + { id: '2', name: 'Decoration' }, + { id: '3', name: 'Technology' }, + { id: '4', name: 'Magic' }, + ] + const displayName = (opt: { id: string; name: string }) => opt.name + return { selected, options, displayName } + }, + template: ` + + Categories + + `, + }), +} diff --git a/packages/ui/src/components/base/stories/MarkdownEditor.stories.ts b/packages/ui/src/components/base/stories/MarkdownEditor.stories.ts new file mode 100644 index 0000000000..87e41d9a9a --- /dev/null +++ b/packages/ui/src/components/base/stories/MarkdownEditor.stories.ts @@ -0,0 +1,44 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' +import { ref } from 'vue' + +import MarkdownEditor from '../MarkdownEditor.vue' + +const meta = { + title: 'Base/MarkdownEditor', + component: MarkdownEditor, +} satisfies Meta + +export default meta +type Story = StoryObj & { args?: Record } + +export const Default: Story = { + args: { modelValue: '' }, + render: () => ({ + components: { MarkdownEditor }, + setup() { + const content = ref('# Hello World\n\nThis is some **markdown** content.') + return { content } + }, + template: ` +
+ +
+ `, + }), +} + +export const WithPlaceholder: Story = { + args: { modelValue: '' }, + render: () => ({ + components: { MarkdownEditor }, + setup() { + const content = ref('') + return { content } + }, + template: ` +
+ +
+ `, + }), +} diff --git a/packages/ui/src/components/base/stories/MultiStageModal.stories.ts b/packages/ui/src/components/base/stories/MultiStageModal.stories.ts new file mode 100644 index 0000000000..25a2a3775d --- /dev/null +++ b/packages/ui/src/components/base/stories/MultiStageModal.stories.ts @@ -0,0 +1,112 @@ +import type { StoryObj } from '@storybook/vue3-vite' +import { defineComponent, h, ref } from 'vue' + +import ButtonStyled from '../ButtonStyled.vue' +import type { StageConfigInput } from '../MultiStageModal.vue' +import MultiStageModal from '../MultiStageModal.vue' + +const meta = { + title: 'Base/MultiStageModal', + component: MultiStageModal as any, +} + +export default meta +type Story = StoryObj & { args?: Record } + +// Create simple stage content components +const Stage1Content = defineComponent({ + name: 'Stage1Content', + render() { + return h('div', { class: 'p-4' }, [ + h('p', 'This is the first stage of the multi-stage modal.'), + h('p', { class: 'text-secondary mt-2' }, 'Fill out the required information to proceed.'), + ]) + }, +}) + +const Stage2Content = defineComponent({ + name: 'Stage2Content', + render() { + return h('div', { class: 'p-4' }, [ + h('p', 'This is the second stage.'), + h('p', { class: 'text-secondary mt-2' }, 'Review your selections before continuing.'), + ]) + }, +}) + +const Stage3Content = defineComponent({ + name: 'Stage3Content', + render() { + return h('div', { class: 'p-4' }, [ + h('p', 'This is the final stage.'), + h('p', { class: 'text-secondary mt-2' }, 'Confirm to complete the process.'), + ]) + }, +}) + +export const Default: Story = { + args: {}, + render: () => ({ + components: { MultiStageModal, ButtonStyled }, + setup() { + const modalRef = ref(null) + const context = {} + + const stages: StageConfigInput[] = [ + { + id: 'step1', + stageContent: Stage1Content, + title: 'Step 1: Getting Started', + leftButtonConfig: null, + rightButtonConfig: { + label: 'Next', + color: 'brand', + onClick: () => modalRef.value?.nextStage(), + }, + }, + { + id: 'step2', + stageContent: Stage2Content, + title: 'Step 2: Configuration', + leftButtonConfig: { + label: 'Back', + onClick: () => modalRef.value?.prevStage(), + }, + rightButtonConfig: { + label: 'Next', + color: 'brand', + onClick: () => modalRef.value?.nextStage(), + }, + }, + { + id: 'step3', + stageContent: Stage3Content, + title: 'Step 3: Confirmation', + leftButtonConfig: { + label: 'Back', + onClick: () => modalRef.value?.prevStage(), + }, + rightButtonConfig: { + label: 'Complete', + color: 'brand', + onClick: () => modalRef.value?.hide(), + }, + }, + ] + + const openModal = () => { + modalRef.value?.show() + } + + return { modalRef, stages, context, openModal } + }, + template: ` +
+ + + + +
+ `, + }), +} diff --git a/packages/ui/src/components/base/stories/OptionGroup.stories.ts b/packages/ui/src/components/base/stories/OptionGroup.stories.ts new file mode 100644 index 0000000000..537238a013 --- /dev/null +++ b/packages/ui/src/components/base/stories/OptionGroup.stories.ts @@ -0,0 +1,37 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import OptionGroup from '../OptionGroup.vue' + +const meta = { + title: 'Base/OptionGroup', + // @ts-ignore - error comes from generically typed component + component: OptionGroup, + render: (args) => ({ + components: { OptionGroup }, + setup() { + return { args } + }, + template: /*html*/ ` + + + + `, + }), +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: { + options: ['Option 1', 'Option 2', 'Option 3'], + modelValue: 'Option 1', + }, +} + +export const ManyOptions: Story = { + args: { + options: ['All', 'Mods', 'Plugins', 'Resource Packs', 'Modpacks', 'Shaders'], + modelValue: 'All', + }, +} diff --git a/packages/ui/src/components/base/stories/OverflowMenu.stories.ts b/packages/ui/src/components/base/stories/OverflowMenu.stories.ts new file mode 100644 index 0000000000..387573c3cc --- /dev/null +++ b/packages/ui/src/components/base/stories/OverflowMenu.stories.ts @@ -0,0 +1,37 @@ +import { SettingsIcon } from '@modrinth/assets' +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import OverflowMenu from '../OverflowMenu.vue' + +const meta = { + title: 'Base/OverflowMenu', + component: OverflowMenu, + render: (args) => ({ + components: { OverflowMenu, SettingsIcon }, + setup() { + return { args } + }, + template: /*html*/ ` + + + + + + + `, + }), +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: { + options: [ + { id: 'edit', action: () => console.log('Edit clicked') }, + { id: 'share', action: () => console.log('Share clicked') }, + { divider: true }, + { id: 'delete', action: () => console.log('Delete clicked'), color: 'danger' }, + ], + }, +} diff --git a/packages/ui/src/components/base/stories/Page.stories.ts b/packages/ui/src/components/base/stories/Page.stories.ts new file mode 100644 index 0000000000..5fc6e45f0d --- /dev/null +++ b/packages/ui/src/components/base/stories/Page.stories.ts @@ -0,0 +1,78 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import Page from '../Page.vue' + +const meta = { + title: 'Base/Page', + component: Page, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + render: () => ({ + components: { Page }, + template: ` + +
+

Page Content

+

This is the main content area of the page.

+
+
+ `, + }), +} + +export const WithSidebar: Story = { + render: () => ({ + components: { Page }, + template: ` + + +
+

Page Content

+

This is the main content area with a sidebar.

+
+
+ `, + }), +} + +export const WithHeaderAndFooter: Story = { + render: () => ({ + components: { Page }, + template: ` + + + +
+

Main Content

+

Content with header, sidebar, and footer.

+
+ +
+ `, + }), +} diff --git a/packages/ui/src/components/base/stories/Pagination.stories.ts b/packages/ui/src/components/base/stories/Pagination.stories.ts new file mode 100644 index 0000000000..b8d6554238 --- /dev/null +++ b/packages/ui/src/components/base/stories/Pagination.stories.ts @@ -0,0 +1,46 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import Pagination from '../Pagination.vue' + +const meta = { + title: 'Base/Pagination', + component: Pagination, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: { + page: 1, + count: 10, + }, +} + +export const MiddlePage: Story = { + args: { + page: 5, + count: 10, + }, +} + +export const LastPage: Story = { + args: { + page: 10, + count: 10, + }, +} + +export const FewPages: Story = { + args: { + page: 1, + count: 3, + }, +} + +export const ManyPages: Story = { + args: { + page: 50, + count: 100, + }, +} diff --git a/packages/ui/src/components/base/stories/PopoutMenu.stories.ts b/packages/ui/src/components/base/stories/PopoutMenu.stories.ts new file mode 100644 index 0000000000..ee0e5c509f --- /dev/null +++ b/packages/ui/src/components/base/stories/PopoutMenu.stories.ts @@ -0,0 +1,37 @@ +import { SettingsIcon } from '@modrinth/assets' +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import Button from '../Button.vue' +import PopoutMenu from '../PopoutMenu.vue' + +const meta = { + title: 'Base/PopoutMenu', + component: PopoutMenu, + render: (args) => ({ + components: { PopoutMenu, Button, SettingsIcon }, + setup() { + return { args } + }, + template: /*html*/ ` + + + + + `, + }), +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = {} + +export const WithTooltip: Story = { + args: { + tooltip: 'Click for more options', + }, +} diff --git a/packages/ui/src/components/base/stories/PreviewSelectButton.stories.ts b/packages/ui/src/components/base/stories/PreviewSelectButton.stories.ts new file mode 100644 index 0000000000..57cd2bdefc --- /dev/null +++ b/packages/ui/src/components/base/stories/PreviewSelectButton.stories.ts @@ -0,0 +1,53 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import PreviewSelectButton from '../PreviewSelectButton.vue' + +const meta = { + title: 'Base/PreviewSelectButton', + component: PreviewSelectButton, +} satisfies Meta + +export default meta +type Story = StoryObj & { args?: Record } + +export const Default: Story = { + args: { checked: false }, + render: () => ({ + components: { PreviewSelectButton }, + template: ` + + + Option Label + + `, + }), +} + +export const AllStates: Story = { + args: { checked: false }, + render: () => ({ + components: { PreviewSelectButton }, + template: ` +
+ + + Unchecked + + + + Checked + +
+ `, + }), +} diff --git a/packages/ui/src/components/base/stories/ProgressBar.stories.ts b/packages/ui/src/components/base/stories/ProgressBar.stories.ts new file mode 100644 index 0000000000..6f38f9a1e4 --- /dev/null +++ b/packages/ui/src/components/base/stories/ProgressBar.stories.ts @@ -0,0 +1,57 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import ProgressBar from '../ProgressBar.vue' + +const meta = { + title: 'Base/ProgressBar', + component: ProgressBar, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: { + progress: 0.5, + }, +} + +export const WithLabel: Story = { + args: { + progress: 0.75, + label: 'Uploading...', + showProgress: true, + }, +} + +export const AllColors: Story = { + args: { progress: 50 }, + render: () => ({ + components: { ProgressBar }, + template: /*html*/ ` +
+ + + + + + + +
+ `, + }), +} + +export const Striped: Story = { + args: { + progress: 0.5, + striped: true, + }, +} + +export const FullWidth: Story = { + args: { + progress: 0.5, + fullWidth: true, + }, +} diff --git a/packages/ui/src/components/base/stories/ProgressSpinner.stories.ts b/packages/ui/src/components/base/stories/ProgressSpinner.stories.ts new file mode 100644 index 0000000000..67b84e7149 --- /dev/null +++ b/packages/ui/src/components/base/stories/ProgressSpinner.stories.ts @@ -0,0 +1,33 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import ProgressSpinner from '../ProgressSpinner.vue' + +const meta = { + title: 'Base/ProgressSpinner', + component: ProgressSpinner, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: { + progress: 0.5, + }, +} + +export const AllProgress: Story = { + args: { progress: 50 }, + render: () => ({ + components: { ProgressSpinner }, + template: /*html*/ ` +
+ + + + + +
+ `, + }), +} diff --git a/packages/ui/src/components/base/stories/ProjectCard.stories.ts b/packages/ui/src/components/base/stories/ProjectCard.stories.ts new file mode 100644 index 0000000000..6d82dd7676 --- /dev/null +++ b/packages/ui/src/components/base/stories/ProjectCard.stories.ts @@ -0,0 +1,135 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import ProjectCard from '../ProjectCard.vue' + +const meta = { + title: 'Base/ProjectCard', + component: ProjectCard, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: { + id: 'example-mod', + type: 'mod', + name: 'Example Mod', + author: 'ModAuthor', + description: + 'An example mod that demonstrates the ProjectCard component with a detailed description.', + iconUrl: 'https://cdn.modrinth.com/data/AANobbMI/icon.png', + downloads: '1234567', + follows: '12345', + createdAt: '2023-01-15T00:00:00Z', + updatedAt: '2024-01-15T00:00:00Z', + categories: ['adventure', 'decoration'], + projectTypeDisplay: 'Mod', + projectTypeUrl: 'mod', + clientSide: 'required', + serverSide: 'optional', + }, +} + +export const AllTypes: Story = { + render: () => ({ + components: { ProjectCard }, + template: ` +
+ + + + +
+ `, + }), +} + +export const WithStatus: Story = { + render: () => ({ + components: { ProjectCard }, + template: ` +
+ + +
+ `, + }), +} diff --git a/packages/ui/src/components/base/stories/RadialHeader.stories.ts b/packages/ui/src/components/base/stories/RadialHeader.stories.ts new file mode 100644 index 0000000000..485c5ca24c --- /dev/null +++ b/packages/ui/src/components/base/stories/RadialHeader.stories.ts @@ -0,0 +1,53 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import RadialHeader from '../RadialHeader.vue' + +const meta = { + title: 'Base/RadialHeader', + component: RadialHeader, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + render: () => ({ + components: { RadialHeader }, + template: ` + +

Radial Header Content

+
+ `, + }), +} + +export const AllColors: Story = { + render: () => ({ + components: { RadialHeader }, + template: ` +
+ +

Brand

+
+ +

Red

+
+ +

Orange

+
+ +

Green

+
+ +

Blue

+
+ +

Purple

+
+ +

Gray

+
+
+ `, + }), +} diff --git a/packages/ui/src/components/base/stories/RadioButtons.stories.ts b/packages/ui/src/components/base/stories/RadioButtons.stories.ts new file mode 100644 index 0000000000..8489aba8e0 --- /dev/null +++ b/packages/ui/src/components/base/stories/RadioButtons.stories.ts @@ -0,0 +1,37 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import RadioButtons from '../RadioButtons.vue' + +const meta = { + title: 'Base/RadioButtons', + // @ts-ignore - error comes from generically typed component + component: RadioButtons, + render: (args) => ({ + components: { RadioButtons }, + setup() { + return { args } + }, + template: /*html*/ ` + + + + `, + }), +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: { + items: ['Option 1', 'Option 2', 'Option 3'], + modelValue: 'Option 1', + }, +} + +export const ManyOptions: Story = { + args: { + items: ['Daily', 'Weekly', 'Monthly', 'Yearly'], + modelValue: 'Weekly', + }, +} diff --git a/packages/ui/src/components/base/stories/ScrollablePanel.stories.ts b/packages/ui/src/components/base/stories/ScrollablePanel.stories.ts new file mode 100644 index 0000000000..d3bd4b6a5e --- /dev/null +++ b/packages/ui/src/components/base/stories/ScrollablePanel.stories.ts @@ -0,0 +1,32 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import ScrollablePanel from '../ScrollablePanel.vue' + +const meta = { + title: 'Base/ScrollablePanel', + component: ScrollablePanel, + render: (args) => ({ + components: { ScrollablePanel }, + setup() { + return { args } + }, + template: /*html*/ ` + +
+

Item {{ i }}

+
+
+ `, + }), +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = {} + +export const DisabledScrolling: Story = { + args: { + disableScrolling: true, + }, +} diff --git a/packages/ui/src/components/base/stories/ServerNotice.stories.ts b/packages/ui/src/components/base/stories/ServerNotice.stories.ts new file mode 100644 index 0000000000..d12e613c40 --- /dev/null +++ b/packages/ui/src/components/base/stories/ServerNotice.stories.ts @@ -0,0 +1,65 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import ServerNotice from '../ServerNotice.vue' + +const meta = { + title: 'Base/ServerNotice', + component: ServerNotice, +} satisfies Meta + +export default meta +type Story = StoryObj & { args?: Record } + +export const Default: Story = { + args: { + level: 'info', + message: 'This is an informational server notice.', + dismissable: true, + }, +} + +export const AllLevels: Story = { + args: { level: 'info', message: '', dismissable: false }, + render: () => ({ + components: { ServerNotice }, + template: ` +
+ + + +
+ `, + }), +} + +export const WithTitle: Story = { + args: { + level: 'warn', + message: 'Server maintenance is scheduled for tonight at midnight.', + dismissable: true, + title: 'Scheduled Maintenance', + }, +} + +export const NonDismissable: Story = { + args: { + level: 'critical', + message: 'Your account requires verification before you can upload projects.', + dismissable: false, + }, +} diff --git a/packages/ui/src/components/base/stories/SettingsLabel.stories.ts b/packages/ui/src/components/base/stories/SettingsLabel.stories.ts new file mode 100644 index 0000000000..40425ea67d --- /dev/null +++ b/packages/ui/src/components/base/stories/SettingsLabel.stories.ts @@ -0,0 +1,32 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import SettingsLabel from '../SettingsLabel.vue' + +const meta = { + title: 'Base/SettingsLabel', + component: SettingsLabel, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: { + title: 'Setting Name', + }, +} + +export const WithDescription: Story = { + args: { + title: 'Enable Notifications', + description: 'Receive email notifications when someone follows your project.', + }, +} + +export const WithId: Story = { + args: { + id: 'setting-input', + title: 'Username', + description: 'Your unique username on the platform.', + }, +} diff --git a/packages/ui/src/components/base/stories/SimpleBadge.stories.ts b/packages/ui/src/components/base/stories/SimpleBadge.stories.ts new file mode 100644 index 0000000000..de296b5141 --- /dev/null +++ b/packages/ui/src/components/base/stories/SimpleBadge.stories.ts @@ -0,0 +1,17 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import SimpleBadge from '../SimpleBadge.vue' + +const meta = { + title: 'Base/SimpleBadge', + component: SimpleBadge, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: { + formattedName: 'Badge Text', + }, +} diff --git a/packages/ui/src/components/base/stories/Slider.stories.ts b/packages/ui/src/components/base/stories/Slider.stories.ts new file mode 100644 index 0000000000..eb09cfb568 --- /dev/null +++ b/packages/ui/src/components/base/stories/Slider.stories.ts @@ -0,0 +1,47 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import Slider from '../Slider.vue' + +const meta = { + title: 'Base/Slider', + component: Slider, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: { + modelValue: 50, + min: 0, + max: 100, + }, +} + +export const WithUnit: Story = { + args: { + modelValue: 50, + min: 0, + max: 100, + unit: '%', + }, +} + +export const WithSnapPoints: Story = { + args: { + modelValue: 25, + min: 0, + max: 100, + step: 25, + snapPoints: [0, 25, 50, 75, 100], + }, +} + +export const Disabled: Story = { + args: { + modelValue: 50, + min: 0, + max: 100, + disabled: true, + }, +} diff --git a/packages/ui/src/components/base/stories/SmartClickable.stories.ts b/packages/ui/src/components/base/stories/SmartClickable.stories.ts new file mode 100644 index 0000000000..49d14ce631 --- /dev/null +++ b/packages/ui/src/components/base/stories/SmartClickable.stories.ts @@ -0,0 +1,30 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import SmartClickable from '../SmartClickable.vue' + +const meta = { + title: 'Base/SmartClickable', + component: SmartClickable, + render: (args) => ({ + components: { SmartClickable }, + setup() { + return { args } + }, + template: /*html*/ ` + + +
+

Clickable Card

+

The entire card is clickable

+
+
+ `, + }), +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = {} diff --git a/packages/ui/src/components/base/stories/TagItem.stories.ts b/packages/ui/src/components/base/stories/TagItem.stories.ts new file mode 100644 index 0000000000..0ee30a541a --- /dev/null +++ b/packages/ui/src/components/base/stories/TagItem.stories.ts @@ -0,0 +1,42 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import TagItem from '../TagItem.vue' + +const meta = { + title: 'Base/TagItem', + component: TagItem, + render: (args) => ({ + components: { TagItem }, + setup() { + return { args } + }, + template: /*html*/ ` + Tag Name + `, + }), +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = {} + +export const WithAction: Story = { + args: { + action: () => alert('Tag clicked!'), + }, +} + +export const MultipleTags: Story = { + render: () => ({ + components: { TagItem }, + template: /*html*/ ` +
+ Minecraft + Fabric + Adventure + Technology +
+ `, + }), +} diff --git a/packages/ui/src/components/base/stories/Timeline.stories.ts b/packages/ui/src/components/base/stories/Timeline.stories.ts new file mode 100644 index 0000000000..b0d6868ed0 --- /dev/null +++ b/packages/ui/src/components/base/stories/Timeline.stories.ts @@ -0,0 +1,47 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import Timeline from '../Timeline.vue' + +const meta = { + title: 'Base/Timeline', + component: Timeline, + render: (args) => ({ + components: { Timeline }, + setup() { + return { args } + }, + template: /*html*/ ` + +
+
+ Event 1 +
+
+
+ Event 2 +
+
+
+ Event 3 +
+
+ `, + }), +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = {} + +export const FadeOutStart: Story = { + args: { + fadeOutStart: true, + }, +} + +export const FadeOutEnd: Story = { + args: { + fadeOutEnd: true, + }, +} diff --git a/packages/ui/src/components/base/stories/Toggle.stories.ts b/packages/ui/src/components/base/stories/Toggle.stories.ts new file mode 100644 index 0000000000..f60a9d0373 --- /dev/null +++ b/packages/ui/src/components/base/stories/Toggle.stories.ts @@ -0,0 +1,49 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import Toggle from '../Toggle.vue' + +const meta = { + title: 'Base/Toggle', + component: Toggle, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: { + modelValue: false, + }, +} + +export const Checked: Story = { + args: { + modelValue: true, + }, +} + +export const Disabled: Story = { + args: { + modelValue: false, + disabled: true, + }, +} + +export const AllStates: Story = { + render: () => ({ + components: { Toggle }, + template: /*html*/ ` +
+
+ Off +
+
+ On +
+
+ Disabled +
+
+ `, + }), +} diff --git a/packages/ui/src/components/base/stories/UnsavedChangesPopup.stories.ts b/packages/ui/src/components/base/stories/UnsavedChangesPopup.stories.ts new file mode 100644 index 0000000000..0f403efc0a --- /dev/null +++ b/packages/ui/src/components/base/stories/UnsavedChangesPopup.stories.ts @@ -0,0 +1,81 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import UnsavedChangesPopup from '../UnsavedChangesPopup.vue' + +const meta = { + title: 'Base/UnsavedChangesPopup', + component: UnsavedChangesPopup as any, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: {}, + render: () => ({ + components: { UnsavedChangesPopup }, + template: ` +
+ +
+ `, + }), +} + +export const Saving: Story = { + args: {}, + render: () => ({ + components: { UnsavedChangesPopup }, + template: ` +
+ +
+ `, + }), +} + +export const NoResetButton: Story = { + args: {}, + render: () => ({ + components: { UnsavedChangesPopup }, + template: ` +
+ +
+ `, + }), +} + +export const Hidden: Story = { + args: {}, + render: () => ({ + components: { UnsavedChangesPopup }, + template: ` +
+

No changes detected - popup is hidden

+ +
+ `, + }), +} diff --git a/packages/ui/vite.config.ts b/packages/ui/vite.config.ts index f335e0e61c..f2e7932c4d 100644 --- a/packages/ui/vite.config.ts +++ b/packages/ui/vite.config.ts @@ -5,7 +5,23 @@ import { defineConfig } from 'vite' import svgLoader from 'vite-svg-loader' export default defineConfig({ - plugins: [vue(), svgLoader()], + plugins: [ + vue(), + svgLoader({ + svgoConfig: { + plugins: [ + { + name: 'preset-default', + params: { + overrides: { + removeViewBox: false, + }, + }, + }, + ], + }, + }), + ], cacheDir: '.vite', resolve: { From 02e949c11abee8c5689a722150115a8d391b4930 Mon Sep 17 00:00:00 2001 From: tdgao Date: Fri, 26 Dec 2025 19:31:56 -0800 Subject: [PATCH 05/21] add vintl --- packages/ui/.storybook/preview.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/packages/ui/.storybook/preview.ts b/packages/ui/.storybook/preview.ts index f893952ffc..7aad8aea06 100644 --- a/packages/ui/.storybook/preview.ts +++ b/packages/ui/.storybook/preview.ts @@ -1,6 +1,21 @@ import '../src/styles/tailwind.css' import type { Preview } from '@storybook/vue3-vite' +import { setup } from '@storybook/vue3-vite' +import { createPlugin } from '@vintl/vintl/plugin' + +// Set up VIntl for Storybook - provides useVIntl() context for components +const vintlPlugin = createPlugin({ + controllerOpts: { + defaultLocale: 'en-US', + locale: 'en-US', + }, + globalMixin: false, +}) + +setup((app) => { + app.use(vintlPlugin) +}) const preview: Preview = { parameters: { From 0e8ffd6ab213fba6f7fb4001fd8dad463691d580 Mon Sep 17 00:00:00 2001 From: tdgao Date: Fri, 26 Dec 2025 19:45:39 -0800 Subject: [PATCH 06/21] default to dark mode --- packages/ui/.storybook/preview.ts | 11 +++++++++++ packages/ui/package.json | 5 +++-- pnpm-lock.yaml | 13 +++++++++++++ 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/packages/ui/.storybook/preview.ts b/packages/ui/.storybook/preview.ts index 7aad8aea06..ea186c6249 100644 --- a/packages/ui/.storybook/preview.ts +++ b/packages/ui/.storybook/preview.ts @@ -1,5 +1,6 @@ import '../src/styles/tailwind.css' +import { withThemeByClassName } from '@storybook/addon-themes' import type { Preview } from '@storybook/vue3-vite' import { setup } from '@storybook/vue3-vite' import { createPlugin } from '@vintl/vintl/plugin' @@ -26,6 +27,16 @@ const preview: Preview = { }, }, }, + decorators: [ + withThemeByClassName({ + themes: { + light: 'light-mode', + dark: 'dark-mode', + oled: 'oled-mode', + }, + defaultTheme: 'dark', + }), + ], } export default preview diff --git a/packages/ui/package.json b/packages/ui/package.json index 4efba0cf37..0fb367e275 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -30,6 +30,7 @@ "@storybook/addon-a11y": "^10.1.10", "@storybook/addon-docs": "^10.1.10", "@storybook/addon-onboarding": "^10.1.10", + "@storybook/addon-themes": "^10.1.10", "@storybook/addon-vitest": "^10.1.10", "@storybook/builder-vite": "^10.1.10", "@storybook/vue3-vite": "^10.1.10", @@ -44,14 +45,14 @@ "playwright": "^1.57.0", "storybook": "^10.1.10", "stripe": "^18.1.1", + "tailwindcss": "^3.4.4", "typescript": "^5.4.5", "vite": "^5.4.6", "vite-svg-loader": "^5.1.0", "vitest": "^4.0.16", "vue": "^3.5.13", "vue-component-type-helpers": "^3.1.8", - "vue-router": "4.3.0", - "tailwindcss": "^3.4.4" + "vue-router": "4.3.0" }, "dependencies": { "@codemirror/commands": "^6.3.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 62abdcecf1..33c80d6437 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -665,6 +665,9 @@ importers: '@storybook/addon-onboarding': specifier: ^10.1.10 version: 10.1.10(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1)) + '@storybook/addon-themes': + specifier: ^10.1.10 + version: 10.1.10(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1)) '@storybook/addon-vitest': specifier: ^10.1.10 version: 10.1.10(@vitest/browser-playwright@4.0.16)(@vitest/browser@4.0.16(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vitest@4.0.16))(@vitest/runner@4.0.16)(react-dom@19.2.3(react@19.1.1))(react@19.1.1)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vitest@4.0.16) @@ -2593,6 +2596,11 @@ packages: peerDependencies: storybook: ^10.1.10 + '@storybook/addon-themes@10.1.10': + resolution: {integrity: sha512-YlTzREQnUFZ6wepo4MppiobkFrsF1EuObh+vaEhjEj5Cs1oH+kqP5Db+rXi8rbrxnVXaWKmDgqZMtB7kVN4Dnw==} + peerDependencies: + storybook: ^10.1.10 + '@storybook/addon-vitest@10.1.10': resolution: {integrity: sha512-dh5ZesgvZY619nkweo9fbORQQSU0hIFQnqlcnU1DrGXumt9SzVHF3/2Lxe+HGHLHK6Sk8jZp/16BjZ/zxSG61Q==} peerDependencies: @@ -11308,6 +11316,11 @@ snapshots: dependencies: storybook: 10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1) + '@storybook/addon-themes@10.1.10(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))': + dependencies: + storybook: 10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1) + ts-dedent: 2.2.0 + '@storybook/addon-vitest@10.1.10(@vitest/browser-playwright@4.0.16)(@vitest/browser@4.0.16(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vitest@4.0.16))(@vitest/runner@4.0.16)(react-dom@19.2.3(react@19.1.1))(react@19.1.1)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vitest@4.0.16)': dependencies: '@storybook/global': 5.0.0 From 23021d6e3c65db2beef75dd22ceeea587248be2c Mon Sep 17 00:00:00 2001 From: tdgao Date: Fri, 26 Dec 2025 19:50:48 -0800 Subject: [PATCH 07/21] fix teleport --- packages/ui/.storybook/preview.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/ui/.storybook/preview.ts b/packages/ui/.storybook/preview.ts index ea186c6249..f3867b12b5 100644 --- a/packages/ui/.storybook/preview.ts +++ b/packages/ui/.storybook/preview.ts @@ -16,6 +16,13 @@ const vintlPlugin = createPlugin({ setup((app) => { app.use(vintlPlugin) + + // Create teleport target for components that use + if (typeof document !== 'undefined' && !document.getElementById('teleports')) { + const teleportTarget = document.createElement('div') + teleportTarget.id = 'teleports' + document.body.appendChild(teleportTarget) + } }) const preview: Preview = { From 3cf9dcd291b032fa173ff6a68723e8f45a5fd9f7 Mon Sep 17 00:00:00 2001 From: tdgao Date: Fri, 26 Dec 2025 20:16:17 -0800 Subject: [PATCH 08/21] add theme addon --- packages/ui/.storybook/main.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/ui/.storybook/main.ts b/packages/ui/.storybook/main.ts index c56e2b6535..97cb2d5f75 100644 --- a/packages/ui/.storybook/main.ts +++ b/packages/ui/.storybook/main.ts @@ -7,6 +7,7 @@ const config: StorybookConfig = { }, stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], addons: [ + '@storybook/addon-themes', '@chromatic-com/storybook', '@storybook/addon-vitest', '@storybook/addon-a11y', From d7542efa4614f859cf8853184197f342c769b2c9 Mon Sep 17 00:00:00 2001 From: tdgao Date: Fri, 26 Dec 2025 20:16:38 -0800 Subject: [PATCH 09/21] add new modal story --- .../modal/stories/NewModal.stories.ts | 220 ++++++++++++++++++ 1 file changed, 220 insertions(+) create mode 100644 packages/ui/src/components/modal/stories/NewModal.stories.ts diff --git a/packages/ui/src/components/modal/stories/NewModal.stories.ts b/packages/ui/src/components/modal/stories/NewModal.stories.ts new file mode 100644 index 0000000000..7cfff1db33 --- /dev/null +++ b/packages/ui/src/components/modal/stories/NewModal.stories.ts @@ -0,0 +1,220 @@ +import type { StoryObj } from '@storybook/vue3-vite' +import { ref } from 'vue' + +import ButtonStyled from '../../base/ButtonStyled.vue' +import NewModal from '../NewModal.vue' + +const meta = { + title: 'Modal/NewModal', + component: NewModal, +} + +export default meta +type Story = StoryObj & { args?: Record } + +export const Default: Story = { + args: {}, + render: () => ({ + components: { NewModal, ButtonStyled }, + setup() { + const modalRef = ref | null>(null) + const openModal = () => modalRef.value?.show() + return { modalRef, openModal } + }, + template: ` +
+ + + + +

This is the modal content.

+

You can put any content here.

+
+
+ `, + }), +} + +export const WithActions: Story = { + args: {}, + render: () => ({ + components: { NewModal, ButtonStyled }, + setup() { + const modalRef = ref | null>(null) + const openModal = () => modalRef.value?.show() + return { modalRef, openModal } + }, + template: ` +
+ + + + +

Are you sure you want to proceed with this action?

+ +
+
+ `, + }), +} + +export const DangerFade: Story = { + args: {}, + render: () => ({ + components: { NewModal, ButtonStyled }, + setup() { + const modalRef = ref | null>(null) + const openModal = () => modalRef.value?.show() + return { modalRef, openModal } + }, + template: ` +
+ + + + +

Are you sure you want to delete this item? This action cannot be undone.

+ +
+
+ `, + }), +} + +export const WarningFade: Story = { + args: {}, + render: () => ({ + components: { NewModal, ButtonStyled }, + setup() { + const modalRef = ref | null>(null) + const openModal = () => modalRef.value?.show() + return { modalRef, openModal } + }, + template: ` +
+ + + + +

This action may have unintended consequences. Please review before proceeding.

+ +
+
+ `, + }), +} + +export const Scrollable: Story = { + args: {}, + render: () => ({ + components: { NewModal, ButtonStyled }, + setup() { + const modalRef = ref | null>(null) + const openModal = () => modalRef.value?.show() + return { modalRef, openModal } + }, + template: ` +
+ + + + +
+

+ This is paragraph {{ i }} of scrollable content. The modal will show fade indicators when scrolled. +

+
+ +
+
+ `, + }), +} + +export const MergedHeader: Story = { + args: {}, + render: () => ({ + components: { NewModal, ButtonStyled }, + setup() { + const modalRef = ref | null>(null) + const openModal = () => modalRef.value?.show() + return { modalRef, openModal } + }, + template: ` +
+ + + + +
+

Custom Header Area

+

This modal has the header merged with content and only shows a close button.

+
+
+
+ `, + }), +} + +export const NotClosable: Story = { + args: {}, + render: () => ({ + components: { NewModal, ButtonStyled }, + setup() { + const modalRef = ref | null>(null) + const openModal = () => modalRef.value?.show() + return { modalRef, openModal } + }, + template: ` +
+ + + + +

This modal cannot be closed by clicking outside or pressing escape.

+

Only the action button can close it.

+ +
+
+ `, + }), +} From c9893e3c0ce4d05dae20c5d9008508427b465ce0 Mon Sep 17 00:00:00 2001 From: tdgao Date: Fri, 26 Dec 2025 20:51:28 -0800 Subject: [PATCH 10/21] delete broken stories --- .../base/stories/IconSelect.stories.ts | 47 -------- .../base/stories/JoinedButtons.stories.ts | 48 -------- .../base/stories/ManySelect.stories.ts | 78 ------------ .../base/stories/MultiStageModal.stories.ts | 112 ------------------ 4 files changed, 285 deletions(-) delete mode 100644 packages/ui/src/components/base/stories/IconSelect.stories.ts delete mode 100644 packages/ui/src/components/base/stories/JoinedButtons.stories.ts delete mode 100644 packages/ui/src/components/base/stories/ManySelect.stories.ts delete mode 100644 packages/ui/src/components/base/stories/MultiStageModal.stories.ts diff --git a/packages/ui/src/components/base/stories/IconSelect.stories.ts b/packages/ui/src/components/base/stories/IconSelect.stories.ts deleted file mode 100644 index adeb9ea9f0..0000000000 --- a/packages/ui/src/components/base/stories/IconSelect.stories.ts +++ /dev/null @@ -1,47 +0,0 @@ -import type { Meta, StoryObj } from '@storybook/vue3-vite' - -import IconSelect from '../IconSelect.vue' - -const meta = { - title: 'Base/IconSelect', - component: IconSelect, -} satisfies Meta - -export default meta -type Story = StoryObj - -export const Default: Story = { - args: {}, - render: () => ({ - components: { IconSelect }, - setup() { - const icon = undefined - return { icon } - }, - template: ` - - `, - }), -} - -export const WithIcon: Story = { - args: {}, - render: () => ({ - components: { IconSelect }, - setup() { - const icon = 'https://cdn.modrinth.com/data/AANobbMI/icon.png' - return { icon } - }, - template: ` - - `, - }), -} diff --git a/packages/ui/src/components/base/stories/JoinedButtons.stories.ts b/packages/ui/src/components/base/stories/JoinedButtons.stories.ts deleted file mode 100644 index b5e27a7e78..0000000000 --- a/packages/ui/src/components/base/stories/JoinedButtons.stories.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { DownloadIcon, HeartIcon, ShareIcon } from '@modrinth/assets' -import type { Meta, StoryObj } from '@storybook/vue3-vite' - -import JoinedButtons from '../JoinedButtons.vue' - -const meta = { - title: 'Base/JoinedButtons', - component: JoinedButtons, -} satisfies Meta - -export default meta -type Story = StoryObj - -export const Default: Story = { - args: { - actions: [ - { id: 'download', label: 'Download', icon: DownloadIcon, action: () => {} }, - { id: 'follow', label: 'Follow', icon: HeartIcon, action: () => {} }, - { id: 'share', label: 'Share', icon: ShareIcon, action: () => {} }, - ], - }, -} - -export const Brand: Story = { - args: { - color: 'brand', - actions: [ - { id: 'download', label: 'Download', icon: DownloadIcon, action: () => {} }, - { id: 'follow', label: 'Follow', icon: HeartIcon, action: () => {} }, - ], - }, -} - -export const SingleAction: Story = { - args: { - actions: [{ id: 'download', label: 'Download', icon: DownloadIcon, action: () => {} }], - }, -} - -export const Disabled: Story = { - args: { - disabled: true, - actions: [ - { id: 'download', label: 'Download', icon: DownloadIcon, action: () => {} }, - { id: 'follow', label: 'Follow', icon: HeartIcon, action: () => {} }, - ], - }, -} diff --git a/packages/ui/src/components/base/stories/ManySelect.stories.ts b/packages/ui/src/components/base/stories/ManySelect.stories.ts deleted file mode 100644 index 41ce922dfe..0000000000 --- a/packages/ui/src/components/base/stories/ManySelect.stories.ts +++ /dev/null @@ -1,78 +0,0 @@ -import type { Meta, StoryObj } from '@storybook/vue3-vite' -import { ref } from 'vue' - -import ManySelect from '../ManySelect.vue' - -const meta = { - title: 'Base/ManySelect', - component: ManySelect, -} satisfies Meta - -export default meta -type Story = StoryObj - -export const Default: Story = { - args: { modelValue: [], options: [] }, - render: () => ({ - components: { ManySelect }, - setup() { - const selected = ref([]) - const options = ['Option 1', 'Option 2', 'Option 3', 'Option 4', 'Option 5'] - return { selected, options } - }, - template: ` - - Select options ({{ selected.length }} selected) - - `, - }), -} - -export const WithSearch: Story = { - args: { modelValue: [], options: [] }, - render: () => ({ - components: { ManySelect }, - setup() { - const selected = ref(['Fabric', 'Forge']) - const options = [ - 'Fabric', - 'Forge', - 'Quilt', - 'NeoForge', - 'Paper', - 'Spigot', - 'Bukkit', - 'Sponge', - ] - return { selected, options } - }, - template: ` - - Loaders ({{ selected.length }} selected) - - `, - }), -} - -export const WithCustomDisplay: Story = { - args: { modelValue: [], options: [] }, - render: () => ({ - components: { ManySelect }, - setup() { - const selected = ref<{ id: string; name: string }[]>([]) - const options = [ - { id: '1', name: 'Adventure' }, - { id: '2', name: 'Decoration' }, - { id: '3', name: 'Technology' }, - { id: '4', name: 'Magic' }, - ] - const displayName = (opt: { id: string; name: string }) => opt.name - return { selected, options, displayName } - }, - template: ` - - Categories - - `, - }), -} diff --git a/packages/ui/src/components/base/stories/MultiStageModal.stories.ts b/packages/ui/src/components/base/stories/MultiStageModal.stories.ts deleted file mode 100644 index 25a2a3775d..0000000000 --- a/packages/ui/src/components/base/stories/MultiStageModal.stories.ts +++ /dev/null @@ -1,112 +0,0 @@ -import type { StoryObj } from '@storybook/vue3-vite' -import { defineComponent, h, ref } from 'vue' - -import ButtonStyled from '../ButtonStyled.vue' -import type { StageConfigInput } from '../MultiStageModal.vue' -import MultiStageModal from '../MultiStageModal.vue' - -const meta = { - title: 'Base/MultiStageModal', - component: MultiStageModal as any, -} - -export default meta -type Story = StoryObj & { args?: Record } - -// Create simple stage content components -const Stage1Content = defineComponent({ - name: 'Stage1Content', - render() { - return h('div', { class: 'p-4' }, [ - h('p', 'This is the first stage of the multi-stage modal.'), - h('p', { class: 'text-secondary mt-2' }, 'Fill out the required information to proceed.'), - ]) - }, -}) - -const Stage2Content = defineComponent({ - name: 'Stage2Content', - render() { - return h('div', { class: 'p-4' }, [ - h('p', 'This is the second stage.'), - h('p', { class: 'text-secondary mt-2' }, 'Review your selections before continuing.'), - ]) - }, -}) - -const Stage3Content = defineComponent({ - name: 'Stage3Content', - render() { - return h('div', { class: 'p-4' }, [ - h('p', 'This is the final stage.'), - h('p', { class: 'text-secondary mt-2' }, 'Confirm to complete the process.'), - ]) - }, -}) - -export const Default: Story = { - args: {}, - render: () => ({ - components: { MultiStageModal, ButtonStyled }, - setup() { - const modalRef = ref(null) - const context = {} - - const stages: StageConfigInput[] = [ - { - id: 'step1', - stageContent: Stage1Content, - title: 'Step 1: Getting Started', - leftButtonConfig: null, - rightButtonConfig: { - label: 'Next', - color: 'brand', - onClick: () => modalRef.value?.nextStage(), - }, - }, - { - id: 'step2', - stageContent: Stage2Content, - title: 'Step 2: Configuration', - leftButtonConfig: { - label: 'Back', - onClick: () => modalRef.value?.prevStage(), - }, - rightButtonConfig: { - label: 'Next', - color: 'brand', - onClick: () => modalRef.value?.nextStage(), - }, - }, - { - id: 'step3', - stageContent: Stage3Content, - title: 'Step 3: Confirmation', - leftButtonConfig: { - label: 'Back', - onClick: () => modalRef.value?.prevStage(), - }, - rightButtonConfig: { - label: 'Complete', - color: 'brand', - onClick: () => modalRef.value?.hide(), - }, - }, - ] - - const openModal = () => { - modalRef.value?.show() - } - - return { modalRef, stages, context, openModal } - }, - template: ` -
- - - - -
- `, - }), -} From b7cc70fd7558d1263110cc5dc4fc85e538f257b8 Mon Sep 17 00:00:00 2001 From: tdgao Date: Fri, 26 Dec 2025 21:51:30 -0800 Subject: [PATCH 11/21] move all stories to central stories folder --- .../base/stories => stories/base}/Accordion.stories.ts | 0 .../base/stories => stories/base}/Admonition.stories.ts | 0 .../base/stories => stories/base}/AppearingProgressBar.stories.ts | 0 .../base/stories => stories/base}/AutoBrandIcon.stories.ts | 0 .../{components/base/stories => stories/base}/AutoLink.stories.ts | 0 .../{components/base/stories => stories/base}/Avatar.stories.ts | 0 .../{components/base/stories => stories/base}/Badge.stories.ts | 0 .../base/stories => stories/base}/BulletDivider.stories.ts | 0 .../{components/base/stories => stories/base}/Button.stories.ts | 0 .../base/stories => stories/base}/ButtonStyled.stories.ts | 0 .../src/{components/base/stories => stories/base}/Card.stories.ts | 0 .../{components/base/stories => stories/base}/Checkbox.stories.ts | 0 .../{components/base/stories => stories/base}/Chips.stories.ts | 0 .../base/stories => stories/base}/Collapsible.stories.ts | 0 .../base/stories => stories/base}/CollapsibleRegion.stories.ts | 0 .../{components/base/stories => stories/base}/Combobox.stories.ts | 0 .../base/stories => stories/base}/ContentPageHeader.stories.ts | 0 .../{components/base/stories => stories/base}/CopyCode.stories.ts | 0 .../base/stories => stories/base}/DoubleIcon.stories.ts | 0 .../{components/base/stories => stories/base}/DropArea.stories.ts | 0 .../base/stories => stories/base}/DropdownSelect.stories.ts | 0 .../base/stories => stories/base}/DropzoneFileInput.stories.ts | 0 .../base/stories => stories/base}/EnvironmentIndicator.stories.ts | 0 .../base/stories => stories/base}/ErrorInformationCard.stories.ts | 0 .../base/stories => stories/base}/FileInput.stories.ts | 0 .../base/stories => stories/base}/FilterBar.stories.ts | 0 .../base/stories => stories/base}/HeadingLink.stories.ts | 0 .../base/stories => stories/base}/HorizontalRule.stories.ts | 0 .../base/stories => stories/base}/LargeRadioButton.stories.ts | 0 .../base/stories => stories/base}/LoadingIndicator.stories.ts | 0 .../base/stories => stories/base}/MarkdownEditor.stories.ts | 0 .../base/stories => stories/base}/OptionGroup.stories.ts | 0 .../base/stories => stories/base}/OverflowMenu.stories.ts | 0 .../src/{components/base/stories => stories/base}/Page.stories.ts | 0 .../base/stories => stories/base}/Pagination.stories.ts | 0 .../base/stories => stories/base}/PopoutMenu.stories.ts | 0 .../base/stories => stories/base}/PreviewSelectButton.stories.ts | 0 .../base/stories => stories/base}/ProgressBar.stories.ts | 0 .../base/stories => stories/base}/ProgressSpinner.stories.ts | 0 .../base/stories => stories/base}/ProjectCard.stories.ts | 0 .../base/stories => stories/base}/RadialHeader.stories.ts | 0 .../base/stories => stories/base}/RadioButtons.stories.ts | 0 .../base/stories => stories/base}/ScrollablePanel.stories.ts | 0 .../base/stories => stories/base}/ServerNotice.stories.ts | 0 .../base/stories => stories/base}/SettingsLabel.stories.ts | 0 .../base/stories => stories/base}/SimpleBadge.stories.ts | 0 .../{components/base/stories => stories/base}/Slider.stories.ts | 0 .../base/stories => stories/base}/SmartClickable.stories.ts | 0 .../{components/base/stories => stories/base}/TagItem.stories.ts | 0 .../{components/base/stories => stories/base}/Timeline.stories.ts | 0 .../{components/base/stories => stories/base}/Toggle.stories.ts | 0 .../base/stories => stories/base}/UnsavedChangesPopup.stories.ts | 0 .../modal/stories => stories/modal}/NewModal.stories.ts | 0 53 files changed, 0 insertions(+), 0 deletions(-) rename packages/ui/src/{components/base/stories => stories/base}/Accordion.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/Admonition.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/AppearingProgressBar.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/AutoBrandIcon.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/AutoLink.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/Avatar.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/Badge.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/BulletDivider.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/Button.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/ButtonStyled.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/Card.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/Checkbox.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/Chips.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/Collapsible.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/CollapsibleRegion.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/Combobox.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/ContentPageHeader.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/CopyCode.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/DoubleIcon.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/DropArea.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/DropdownSelect.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/DropzoneFileInput.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/EnvironmentIndicator.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/ErrorInformationCard.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/FileInput.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/FilterBar.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/HeadingLink.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/HorizontalRule.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/LargeRadioButton.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/LoadingIndicator.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/MarkdownEditor.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/OptionGroup.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/OverflowMenu.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/Page.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/Pagination.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/PopoutMenu.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/PreviewSelectButton.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/ProgressBar.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/ProgressSpinner.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/ProjectCard.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/RadialHeader.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/RadioButtons.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/ScrollablePanel.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/ServerNotice.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/SettingsLabel.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/SimpleBadge.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/Slider.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/SmartClickable.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/TagItem.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/Timeline.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/Toggle.stories.ts (100%) rename packages/ui/src/{components/base/stories => stories/base}/UnsavedChangesPopup.stories.ts (100%) rename packages/ui/src/{components/modal/stories => stories/modal}/NewModal.stories.ts (100%) diff --git a/packages/ui/src/components/base/stories/Accordion.stories.ts b/packages/ui/src/stories/base/Accordion.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/Accordion.stories.ts rename to packages/ui/src/stories/base/Accordion.stories.ts diff --git a/packages/ui/src/components/base/stories/Admonition.stories.ts b/packages/ui/src/stories/base/Admonition.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/Admonition.stories.ts rename to packages/ui/src/stories/base/Admonition.stories.ts diff --git a/packages/ui/src/components/base/stories/AppearingProgressBar.stories.ts b/packages/ui/src/stories/base/AppearingProgressBar.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/AppearingProgressBar.stories.ts rename to packages/ui/src/stories/base/AppearingProgressBar.stories.ts diff --git a/packages/ui/src/components/base/stories/AutoBrandIcon.stories.ts b/packages/ui/src/stories/base/AutoBrandIcon.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/AutoBrandIcon.stories.ts rename to packages/ui/src/stories/base/AutoBrandIcon.stories.ts diff --git a/packages/ui/src/components/base/stories/AutoLink.stories.ts b/packages/ui/src/stories/base/AutoLink.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/AutoLink.stories.ts rename to packages/ui/src/stories/base/AutoLink.stories.ts diff --git a/packages/ui/src/components/base/stories/Avatar.stories.ts b/packages/ui/src/stories/base/Avatar.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/Avatar.stories.ts rename to packages/ui/src/stories/base/Avatar.stories.ts diff --git a/packages/ui/src/components/base/stories/Badge.stories.ts b/packages/ui/src/stories/base/Badge.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/Badge.stories.ts rename to packages/ui/src/stories/base/Badge.stories.ts diff --git a/packages/ui/src/components/base/stories/BulletDivider.stories.ts b/packages/ui/src/stories/base/BulletDivider.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/BulletDivider.stories.ts rename to packages/ui/src/stories/base/BulletDivider.stories.ts diff --git a/packages/ui/src/components/base/stories/Button.stories.ts b/packages/ui/src/stories/base/Button.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/Button.stories.ts rename to packages/ui/src/stories/base/Button.stories.ts diff --git a/packages/ui/src/components/base/stories/ButtonStyled.stories.ts b/packages/ui/src/stories/base/ButtonStyled.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/ButtonStyled.stories.ts rename to packages/ui/src/stories/base/ButtonStyled.stories.ts diff --git a/packages/ui/src/components/base/stories/Card.stories.ts b/packages/ui/src/stories/base/Card.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/Card.stories.ts rename to packages/ui/src/stories/base/Card.stories.ts diff --git a/packages/ui/src/components/base/stories/Checkbox.stories.ts b/packages/ui/src/stories/base/Checkbox.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/Checkbox.stories.ts rename to packages/ui/src/stories/base/Checkbox.stories.ts diff --git a/packages/ui/src/components/base/stories/Chips.stories.ts b/packages/ui/src/stories/base/Chips.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/Chips.stories.ts rename to packages/ui/src/stories/base/Chips.stories.ts diff --git a/packages/ui/src/components/base/stories/Collapsible.stories.ts b/packages/ui/src/stories/base/Collapsible.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/Collapsible.stories.ts rename to packages/ui/src/stories/base/Collapsible.stories.ts diff --git a/packages/ui/src/components/base/stories/CollapsibleRegion.stories.ts b/packages/ui/src/stories/base/CollapsibleRegion.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/CollapsibleRegion.stories.ts rename to packages/ui/src/stories/base/CollapsibleRegion.stories.ts diff --git a/packages/ui/src/components/base/stories/Combobox.stories.ts b/packages/ui/src/stories/base/Combobox.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/Combobox.stories.ts rename to packages/ui/src/stories/base/Combobox.stories.ts diff --git a/packages/ui/src/components/base/stories/ContentPageHeader.stories.ts b/packages/ui/src/stories/base/ContentPageHeader.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/ContentPageHeader.stories.ts rename to packages/ui/src/stories/base/ContentPageHeader.stories.ts diff --git a/packages/ui/src/components/base/stories/CopyCode.stories.ts b/packages/ui/src/stories/base/CopyCode.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/CopyCode.stories.ts rename to packages/ui/src/stories/base/CopyCode.stories.ts diff --git a/packages/ui/src/components/base/stories/DoubleIcon.stories.ts b/packages/ui/src/stories/base/DoubleIcon.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/DoubleIcon.stories.ts rename to packages/ui/src/stories/base/DoubleIcon.stories.ts diff --git a/packages/ui/src/components/base/stories/DropArea.stories.ts b/packages/ui/src/stories/base/DropArea.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/DropArea.stories.ts rename to packages/ui/src/stories/base/DropArea.stories.ts diff --git a/packages/ui/src/components/base/stories/DropdownSelect.stories.ts b/packages/ui/src/stories/base/DropdownSelect.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/DropdownSelect.stories.ts rename to packages/ui/src/stories/base/DropdownSelect.stories.ts diff --git a/packages/ui/src/components/base/stories/DropzoneFileInput.stories.ts b/packages/ui/src/stories/base/DropzoneFileInput.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/DropzoneFileInput.stories.ts rename to packages/ui/src/stories/base/DropzoneFileInput.stories.ts diff --git a/packages/ui/src/components/base/stories/EnvironmentIndicator.stories.ts b/packages/ui/src/stories/base/EnvironmentIndicator.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/EnvironmentIndicator.stories.ts rename to packages/ui/src/stories/base/EnvironmentIndicator.stories.ts diff --git a/packages/ui/src/components/base/stories/ErrorInformationCard.stories.ts b/packages/ui/src/stories/base/ErrorInformationCard.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/ErrorInformationCard.stories.ts rename to packages/ui/src/stories/base/ErrorInformationCard.stories.ts diff --git a/packages/ui/src/components/base/stories/FileInput.stories.ts b/packages/ui/src/stories/base/FileInput.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/FileInput.stories.ts rename to packages/ui/src/stories/base/FileInput.stories.ts diff --git a/packages/ui/src/components/base/stories/FilterBar.stories.ts b/packages/ui/src/stories/base/FilterBar.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/FilterBar.stories.ts rename to packages/ui/src/stories/base/FilterBar.stories.ts diff --git a/packages/ui/src/components/base/stories/HeadingLink.stories.ts b/packages/ui/src/stories/base/HeadingLink.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/HeadingLink.stories.ts rename to packages/ui/src/stories/base/HeadingLink.stories.ts diff --git a/packages/ui/src/components/base/stories/HorizontalRule.stories.ts b/packages/ui/src/stories/base/HorizontalRule.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/HorizontalRule.stories.ts rename to packages/ui/src/stories/base/HorizontalRule.stories.ts diff --git a/packages/ui/src/components/base/stories/LargeRadioButton.stories.ts b/packages/ui/src/stories/base/LargeRadioButton.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/LargeRadioButton.stories.ts rename to packages/ui/src/stories/base/LargeRadioButton.stories.ts diff --git a/packages/ui/src/components/base/stories/LoadingIndicator.stories.ts b/packages/ui/src/stories/base/LoadingIndicator.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/LoadingIndicator.stories.ts rename to packages/ui/src/stories/base/LoadingIndicator.stories.ts diff --git a/packages/ui/src/components/base/stories/MarkdownEditor.stories.ts b/packages/ui/src/stories/base/MarkdownEditor.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/MarkdownEditor.stories.ts rename to packages/ui/src/stories/base/MarkdownEditor.stories.ts diff --git a/packages/ui/src/components/base/stories/OptionGroup.stories.ts b/packages/ui/src/stories/base/OptionGroup.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/OptionGroup.stories.ts rename to packages/ui/src/stories/base/OptionGroup.stories.ts diff --git a/packages/ui/src/components/base/stories/OverflowMenu.stories.ts b/packages/ui/src/stories/base/OverflowMenu.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/OverflowMenu.stories.ts rename to packages/ui/src/stories/base/OverflowMenu.stories.ts diff --git a/packages/ui/src/components/base/stories/Page.stories.ts b/packages/ui/src/stories/base/Page.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/Page.stories.ts rename to packages/ui/src/stories/base/Page.stories.ts diff --git a/packages/ui/src/components/base/stories/Pagination.stories.ts b/packages/ui/src/stories/base/Pagination.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/Pagination.stories.ts rename to packages/ui/src/stories/base/Pagination.stories.ts diff --git a/packages/ui/src/components/base/stories/PopoutMenu.stories.ts b/packages/ui/src/stories/base/PopoutMenu.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/PopoutMenu.stories.ts rename to packages/ui/src/stories/base/PopoutMenu.stories.ts diff --git a/packages/ui/src/components/base/stories/PreviewSelectButton.stories.ts b/packages/ui/src/stories/base/PreviewSelectButton.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/PreviewSelectButton.stories.ts rename to packages/ui/src/stories/base/PreviewSelectButton.stories.ts diff --git a/packages/ui/src/components/base/stories/ProgressBar.stories.ts b/packages/ui/src/stories/base/ProgressBar.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/ProgressBar.stories.ts rename to packages/ui/src/stories/base/ProgressBar.stories.ts diff --git a/packages/ui/src/components/base/stories/ProgressSpinner.stories.ts b/packages/ui/src/stories/base/ProgressSpinner.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/ProgressSpinner.stories.ts rename to packages/ui/src/stories/base/ProgressSpinner.stories.ts diff --git a/packages/ui/src/components/base/stories/ProjectCard.stories.ts b/packages/ui/src/stories/base/ProjectCard.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/ProjectCard.stories.ts rename to packages/ui/src/stories/base/ProjectCard.stories.ts diff --git a/packages/ui/src/components/base/stories/RadialHeader.stories.ts b/packages/ui/src/stories/base/RadialHeader.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/RadialHeader.stories.ts rename to packages/ui/src/stories/base/RadialHeader.stories.ts diff --git a/packages/ui/src/components/base/stories/RadioButtons.stories.ts b/packages/ui/src/stories/base/RadioButtons.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/RadioButtons.stories.ts rename to packages/ui/src/stories/base/RadioButtons.stories.ts diff --git a/packages/ui/src/components/base/stories/ScrollablePanel.stories.ts b/packages/ui/src/stories/base/ScrollablePanel.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/ScrollablePanel.stories.ts rename to packages/ui/src/stories/base/ScrollablePanel.stories.ts diff --git a/packages/ui/src/components/base/stories/ServerNotice.stories.ts b/packages/ui/src/stories/base/ServerNotice.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/ServerNotice.stories.ts rename to packages/ui/src/stories/base/ServerNotice.stories.ts diff --git a/packages/ui/src/components/base/stories/SettingsLabel.stories.ts b/packages/ui/src/stories/base/SettingsLabel.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/SettingsLabel.stories.ts rename to packages/ui/src/stories/base/SettingsLabel.stories.ts diff --git a/packages/ui/src/components/base/stories/SimpleBadge.stories.ts b/packages/ui/src/stories/base/SimpleBadge.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/SimpleBadge.stories.ts rename to packages/ui/src/stories/base/SimpleBadge.stories.ts diff --git a/packages/ui/src/components/base/stories/Slider.stories.ts b/packages/ui/src/stories/base/Slider.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/Slider.stories.ts rename to packages/ui/src/stories/base/Slider.stories.ts diff --git a/packages/ui/src/components/base/stories/SmartClickable.stories.ts b/packages/ui/src/stories/base/SmartClickable.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/SmartClickable.stories.ts rename to packages/ui/src/stories/base/SmartClickable.stories.ts diff --git a/packages/ui/src/components/base/stories/TagItem.stories.ts b/packages/ui/src/stories/base/TagItem.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/TagItem.stories.ts rename to packages/ui/src/stories/base/TagItem.stories.ts diff --git a/packages/ui/src/components/base/stories/Timeline.stories.ts b/packages/ui/src/stories/base/Timeline.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/Timeline.stories.ts rename to packages/ui/src/stories/base/Timeline.stories.ts diff --git a/packages/ui/src/components/base/stories/Toggle.stories.ts b/packages/ui/src/stories/base/Toggle.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/Toggle.stories.ts rename to packages/ui/src/stories/base/Toggle.stories.ts diff --git a/packages/ui/src/components/base/stories/UnsavedChangesPopup.stories.ts b/packages/ui/src/stories/base/UnsavedChangesPopup.stories.ts similarity index 100% rename from packages/ui/src/components/base/stories/UnsavedChangesPopup.stories.ts rename to packages/ui/src/stories/base/UnsavedChangesPopup.stories.ts diff --git a/packages/ui/src/components/modal/stories/NewModal.stories.ts b/packages/ui/src/stories/modal/NewModal.stories.ts similarity index 100% rename from packages/ui/src/components/modal/stories/NewModal.stories.ts rename to packages/ui/src/stories/modal/NewModal.stories.ts From cfb2c334439897d877bf915e7008c9e8dfbde04f Mon Sep 17 00:00:00 2001 From: tdgao Date: Sat, 27 Dec 2025 21:03:26 -0800 Subject: [PATCH 12/21] fix paths --- packages/ui/src/stories/base/Accordion.stories.ts | 2 +- packages/ui/src/stories/base/Admonition.stories.ts | 2 +- .../ui/src/stories/base/AppearingProgressBar.stories.ts | 2 +- packages/ui/src/stories/base/AutoBrandIcon.stories.ts | 2 +- packages/ui/src/stories/base/AutoLink.stories.ts | 2 +- packages/ui/src/stories/base/Avatar.stories.ts | 2 +- packages/ui/src/stories/base/Badge.stories.ts | 2 +- packages/ui/src/stories/base/BulletDivider.stories.ts | 2 +- packages/ui/src/stories/base/Button.stories.ts | 2 +- packages/ui/src/stories/base/ButtonStyled.stories.ts | 2 +- packages/ui/src/stories/base/Card.stories.ts | 2 +- packages/ui/src/stories/base/Checkbox.stories.ts | 2 +- packages/ui/src/stories/base/Chips.stories.ts | 2 +- packages/ui/src/stories/base/Collapsible.stories.ts | 2 +- packages/ui/src/stories/base/CollapsibleRegion.stories.ts | 2 +- packages/ui/src/stories/base/Combobox.stories.ts | 2 +- packages/ui/src/stories/base/ContentPageHeader.stories.ts | 6 +++--- packages/ui/src/stories/base/CopyCode.stories.ts | 2 +- packages/ui/src/stories/base/DoubleIcon.stories.ts | 2 +- packages/ui/src/stories/base/DropArea.stories.ts | 2 +- packages/ui/src/stories/base/DropdownSelect.stories.ts | 2 +- packages/ui/src/stories/base/DropzoneFileInput.stories.ts | 2 +- .../ui/src/stories/base/EnvironmentIndicator.stories.ts | 2 +- .../ui/src/stories/base/ErrorInformationCard.stories.ts | 2 +- packages/ui/src/stories/base/FileInput.stories.ts | 2 +- packages/ui/src/stories/base/FilterBar.stories.ts | 2 +- packages/ui/src/stories/base/HeadingLink.stories.ts | 2 +- packages/ui/src/stories/base/HorizontalRule.stories.ts | 2 +- packages/ui/src/stories/base/LargeRadioButton.stories.ts | 2 +- packages/ui/src/stories/base/LoadingIndicator.stories.ts | 2 +- packages/ui/src/stories/base/MarkdownEditor.stories.ts | 2 +- packages/ui/src/stories/base/OptionGroup.stories.ts | 2 +- packages/ui/src/stories/base/OverflowMenu.stories.ts | 2 +- packages/ui/src/stories/base/Page.stories.ts | 2 +- packages/ui/src/stories/base/Pagination.stories.ts | 2 +- packages/ui/src/stories/base/PopoutMenu.stories.ts | 4 ++-- packages/ui/src/stories/base/PreviewSelectButton.stories.ts | 2 +- packages/ui/src/stories/base/ProgressBar.stories.ts | 2 +- packages/ui/src/stories/base/ProgressSpinner.stories.ts | 2 +- packages/ui/src/stories/base/ProjectCard.stories.ts | 2 +- packages/ui/src/stories/base/RadialHeader.stories.ts | 2 +- packages/ui/src/stories/base/RadioButtons.stories.ts | 2 +- packages/ui/src/stories/base/ScrollablePanel.stories.ts | 2 +- packages/ui/src/stories/base/ServerNotice.stories.ts | 2 +- packages/ui/src/stories/base/SettingsLabel.stories.ts | 2 +- packages/ui/src/stories/base/SimpleBadge.stories.ts | 2 +- packages/ui/src/stories/base/Slider.stories.ts | 2 +- packages/ui/src/stories/base/SmartClickable.stories.ts | 2 +- packages/ui/src/stories/base/TagItem.stories.ts | 2 +- packages/ui/src/stories/base/Timeline.stories.ts | 2 +- packages/ui/src/stories/base/Toggle.stories.ts | 2 +- packages/ui/src/stories/base/UnsavedChangesPopup.stories.ts | 2 +- packages/ui/src/stories/modal/NewModal.stories.ts | 4 ++-- 53 files changed, 57 insertions(+), 57 deletions(-) diff --git a/packages/ui/src/stories/base/Accordion.stories.ts b/packages/ui/src/stories/base/Accordion.stories.ts index a7a7f1f393..4e5bc80920 100644 --- a/packages/ui/src/stories/base/Accordion.stories.ts +++ b/packages/ui/src/stories/base/Accordion.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import Accordion from '../Accordion.vue' +import Accordion from '../../components/base/Accordion.vue' const meta = { title: 'Base/Accordion', diff --git a/packages/ui/src/stories/base/Admonition.stories.ts b/packages/ui/src/stories/base/Admonition.stories.ts index b86cc583a1..c3d5f73113 100644 --- a/packages/ui/src/stories/base/Admonition.stories.ts +++ b/packages/ui/src/stories/base/Admonition.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import Admonition from '../Admonition.vue' +import Admonition from '../../components/base/Admonition.vue' const meta = { title: 'Base/Admonition', diff --git a/packages/ui/src/stories/base/AppearingProgressBar.stories.ts b/packages/ui/src/stories/base/AppearingProgressBar.stories.ts index e6577712b7..fefc34b584 100644 --- a/packages/ui/src/stories/base/AppearingProgressBar.stories.ts +++ b/packages/ui/src/stories/base/AppearingProgressBar.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import AppearingProgressBar from '../AppearingProgressBar.vue' +import AppearingProgressBar from '../../components/base/AppearingProgressBar.vue' const meta = { title: 'Base/AppearingProgressBar', diff --git a/packages/ui/src/stories/base/AutoBrandIcon.stories.ts b/packages/ui/src/stories/base/AutoBrandIcon.stories.ts index 0da7271e25..541454f880 100644 --- a/packages/ui/src/stories/base/AutoBrandIcon.stories.ts +++ b/packages/ui/src/stories/base/AutoBrandIcon.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import AutoBrandIcon from '../AutoBrandIcon.vue' +import AutoBrandIcon from '../../components/base/AutoBrandIcon.vue' const meta = { title: 'Base/AutoBrandIcon', diff --git a/packages/ui/src/stories/base/AutoLink.stories.ts b/packages/ui/src/stories/base/AutoLink.stories.ts index 320f4d6e3c..1bb1fd26c8 100644 --- a/packages/ui/src/stories/base/AutoLink.stories.ts +++ b/packages/ui/src/stories/base/AutoLink.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import AutoLink from '../AutoLink.vue' +import AutoLink from '../../components/base/AutoLink.vue' const meta = { title: 'Base/AutoLink', diff --git a/packages/ui/src/stories/base/Avatar.stories.ts b/packages/ui/src/stories/base/Avatar.stories.ts index e33de2f9ab..451ad737af 100644 --- a/packages/ui/src/stories/base/Avatar.stories.ts +++ b/packages/ui/src/stories/base/Avatar.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import Avatar from '../Avatar.vue' +import Avatar from '../../components/base/Avatar.vue' const meta = { title: 'Base/Avatar', diff --git a/packages/ui/src/stories/base/Badge.stories.ts b/packages/ui/src/stories/base/Badge.stories.ts index 95ad323544..4fce248961 100644 --- a/packages/ui/src/stories/base/Badge.stories.ts +++ b/packages/ui/src/stories/base/Badge.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import Badge from '../Badge.vue' +import Badge from '../../components/base/Badge.vue' const meta = { title: 'Base/Badge', diff --git a/packages/ui/src/stories/base/BulletDivider.stories.ts b/packages/ui/src/stories/base/BulletDivider.stories.ts index 4c5ed66774..0dd69a9426 100644 --- a/packages/ui/src/stories/base/BulletDivider.stories.ts +++ b/packages/ui/src/stories/base/BulletDivider.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import BulletDivider from '../BulletDivider.vue' +import BulletDivider from '../../components/base/BulletDivider.vue' const meta = { title: 'Base/BulletDivider', diff --git a/packages/ui/src/stories/base/Button.stories.ts b/packages/ui/src/stories/base/Button.stories.ts index 8bea2dd51c..8c58271e03 100644 --- a/packages/ui/src/stories/base/Button.stories.ts +++ b/packages/ui/src/stories/base/Button.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import Button from '../Button.vue' +import Button from '../../components/base/Button.vue' const meta = { title: 'Base/Button', diff --git a/packages/ui/src/stories/base/ButtonStyled.stories.ts b/packages/ui/src/stories/base/ButtonStyled.stories.ts index 7c41fd426e..52a83c170d 100644 --- a/packages/ui/src/stories/base/ButtonStyled.stories.ts +++ b/packages/ui/src/stories/base/ButtonStyled.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import ButtonStyled from '../ButtonStyled.vue' +import ButtonStyled from '../../components/base/ButtonStyled.vue' const meta = { title: 'Base/ButtonStyled', diff --git a/packages/ui/src/stories/base/Card.stories.ts b/packages/ui/src/stories/base/Card.stories.ts index 9eaffab328..2d3e119aa9 100644 --- a/packages/ui/src/stories/base/Card.stories.ts +++ b/packages/ui/src/stories/base/Card.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import Card from '../Card.vue' +import Card from '../../components/base/Card.vue' const meta = { title: 'Base/Card', diff --git a/packages/ui/src/stories/base/Checkbox.stories.ts b/packages/ui/src/stories/base/Checkbox.stories.ts index 2f65cc399f..8473550ba9 100644 --- a/packages/ui/src/stories/base/Checkbox.stories.ts +++ b/packages/ui/src/stories/base/Checkbox.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import Checkbox from '../Checkbox.vue' +import Checkbox from '../../components/base/Checkbox.vue' const meta = { title: 'Base/Checkbox', diff --git a/packages/ui/src/stories/base/Chips.stories.ts b/packages/ui/src/stories/base/Chips.stories.ts index e793067fc8..0aea5a53ea 100644 --- a/packages/ui/src/stories/base/Chips.stories.ts +++ b/packages/ui/src/stories/base/Chips.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import Chips from '../Chips.vue' +import Chips from '../../components/base/Chips.vue' const meta = { title: 'Base/Chips', diff --git a/packages/ui/src/stories/base/Collapsible.stories.ts b/packages/ui/src/stories/base/Collapsible.stories.ts index 112fb247f7..b26fcaeca0 100644 --- a/packages/ui/src/stories/base/Collapsible.stories.ts +++ b/packages/ui/src/stories/base/Collapsible.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import Collapsible from '../Collapsible.vue' +import Collapsible from '../../components/base/Collapsible.vue' const meta = { title: 'Base/Collapsible', diff --git a/packages/ui/src/stories/base/CollapsibleRegion.stories.ts b/packages/ui/src/stories/base/CollapsibleRegion.stories.ts index b3203ec9d1..cfec08f2d9 100644 --- a/packages/ui/src/stories/base/CollapsibleRegion.stories.ts +++ b/packages/ui/src/stories/base/CollapsibleRegion.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import CollapsibleRegion from '../CollapsibleRegion.vue' +import CollapsibleRegion from '../../components/base/CollapsibleRegion.vue' const meta = { title: 'Base/CollapsibleRegion', diff --git a/packages/ui/src/stories/base/Combobox.stories.ts b/packages/ui/src/stories/base/Combobox.stories.ts index 8bd5821576..360652b9dd 100644 --- a/packages/ui/src/stories/base/Combobox.stories.ts +++ b/packages/ui/src/stories/base/Combobox.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import Combobox from '../Combobox.vue' +import Combobox from '../../components/base/Combobox.vue' const meta = { title: 'Base/Combobox', diff --git a/packages/ui/src/stories/base/ContentPageHeader.stories.ts b/packages/ui/src/stories/base/ContentPageHeader.stories.ts index 77ec002124..0eb2f5c523 100644 --- a/packages/ui/src/stories/base/ContentPageHeader.stories.ts +++ b/packages/ui/src/stories/base/ContentPageHeader.stories.ts @@ -1,8 +1,8 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import Avatar from '../Avatar.vue' -import ButtonStyled from '../ButtonStyled.vue' -import ContentPageHeader from '../ContentPageHeader.vue' +import Avatar from '../../components/base/Avatar.vue' +import ButtonStyled from '../../components/base/ButtonStyled.vue' +import ContentPageHeader from '../../components/base/ContentPageHeader.vue' const meta = { title: 'Base/ContentPageHeader', diff --git a/packages/ui/src/stories/base/CopyCode.stories.ts b/packages/ui/src/stories/base/CopyCode.stories.ts index 05f3196722..25b13d3964 100644 --- a/packages/ui/src/stories/base/CopyCode.stories.ts +++ b/packages/ui/src/stories/base/CopyCode.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import CopyCode from '../CopyCode.vue' +import CopyCode from '../../components/base/CopyCode.vue' const meta = { title: 'Base/CopyCode', diff --git a/packages/ui/src/stories/base/DoubleIcon.stories.ts b/packages/ui/src/stories/base/DoubleIcon.stories.ts index 74b91ac1de..752b655359 100644 --- a/packages/ui/src/stories/base/DoubleIcon.stories.ts +++ b/packages/ui/src/stories/base/DoubleIcon.stories.ts @@ -1,7 +1,7 @@ import { DownloadIcon, HeartIcon } from '@modrinth/assets' import type { Meta, StoryObj } from '@storybook/vue3-vite' -import DoubleIcon from '../DoubleIcon.vue' +import DoubleIcon from '../../components/base/DoubleIcon.vue' const meta = { title: 'Base/DoubleIcon', diff --git a/packages/ui/src/stories/base/DropArea.stories.ts b/packages/ui/src/stories/base/DropArea.stories.ts index d2a4224704..d378266a0e 100644 --- a/packages/ui/src/stories/base/DropArea.stories.ts +++ b/packages/ui/src/stories/base/DropArea.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import DropArea from '../DropArea.vue' +import DropArea from '../../components/base/DropArea.vue' const meta = { title: 'Base/DropArea', diff --git a/packages/ui/src/stories/base/DropdownSelect.stories.ts b/packages/ui/src/stories/base/DropdownSelect.stories.ts index 53e40defa7..b4361839e7 100644 --- a/packages/ui/src/stories/base/DropdownSelect.stories.ts +++ b/packages/ui/src/stories/base/DropdownSelect.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import DropdownSelect from '../DropdownSelect.vue' +import DropdownSelect from '../../components/base/DropdownSelect.vue' const meta = { title: 'Base/DropdownSelect', diff --git a/packages/ui/src/stories/base/DropzoneFileInput.stories.ts b/packages/ui/src/stories/base/DropzoneFileInput.stories.ts index f40a96340a..2c3e123dcb 100644 --- a/packages/ui/src/stories/base/DropzoneFileInput.stories.ts +++ b/packages/ui/src/stories/base/DropzoneFileInput.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import DropzoneFileInput from '../DropzoneFileInput.vue' +import DropzoneFileInput from '../../components/base/DropzoneFileInput.vue' const meta = { title: 'Base/DropzoneFileInput', diff --git a/packages/ui/src/stories/base/EnvironmentIndicator.stories.ts b/packages/ui/src/stories/base/EnvironmentIndicator.stories.ts index 2f9bb73325..75965e9d8d 100644 --- a/packages/ui/src/stories/base/EnvironmentIndicator.stories.ts +++ b/packages/ui/src/stories/base/EnvironmentIndicator.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import EnvironmentIndicator from '../EnvironmentIndicator.vue' +import EnvironmentIndicator from '../../components/base/EnvironmentIndicator.vue' const meta = { title: 'Base/EnvironmentIndicator', diff --git a/packages/ui/src/stories/base/ErrorInformationCard.stories.ts b/packages/ui/src/stories/base/ErrorInformationCard.stories.ts index 769b64a06a..262386217e 100644 --- a/packages/ui/src/stories/base/ErrorInformationCard.stories.ts +++ b/packages/ui/src/stories/base/ErrorInformationCard.stories.ts @@ -1,7 +1,7 @@ import { IssuesIcon } from '@modrinth/assets' import type { Meta, StoryObj } from '@storybook/vue3-vite' -import ErrorInformationCard from '../ErrorInformationCard.vue' +import ErrorInformationCard from '../../components/base/ErrorInformationCard.vue' const meta = { title: 'Base/ErrorInformationCard', diff --git a/packages/ui/src/stories/base/FileInput.stories.ts b/packages/ui/src/stories/base/FileInput.stories.ts index db20e1622a..57896a93b0 100644 --- a/packages/ui/src/stories/base/FileInput.stories.ts +++ b/packages/ui/src/stories/base/FileInput.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import FileInput from '../FileInput.vue' +import FileInput from '../../components/base/FileInput.vue' const meta = { title: 'Base/FileInput', diff --git a/packages/ui/src/stories/base/FilterBar.stories.ts b/packages/ui/src/stories/base/FilterBar.stories.ts index 379f3f3573..1be232dd46 100644 --- a/packages/ui/src/stories/base/FilterBar.stories.ts +++ b/packages/ui/src/stories/base/FilterBar.stories.ts @@ -1,7 +1,7 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' import { ref } from 'vue' -import FilterBar from '../FilterBar.vue' +import FilterBar from '../../components/base/FilterBar.vue' const meta = { title: 'Base/FilterBar', diff --git a/packages/ui/src/stories/base/HeadingLink.stories.ts b/packages/ui/src/stories/base/HeadingLink.stories.ts index 22a1856e6a..fc1567a9d5 100644 --- a/packages/ui/src/stories/base/HeadingLink.stories.ts +++ b/packages/ui/src/stories/base/HeadingLink.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import HeadingLink from '../HeadingLink.vue' +import HeadingLink from '../../components/base/HeadingLink.vue' const meta = { title: 'Base/HeadingLink', diff --git a/packages/ui/src/stories/base/HorizontalRule.stories.ts b/packages/ui/src/stories/base/HorizontalRule.stories.ts index 0d841072bb..42220a0d71 100644 --- a/packages/ui/src/stories/base/HorizontalRule.stories.ts +++ b/packages/ui/src/stories/base/HorizontalRule.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import HorizontalRule from '../HorizontalRule.vue' +import HorizontalRule from '../../components/base/HorizontalRule.vue' const meta = { title: 'Base/HorizontalRule', diff --git a/packages/ui/src/stories/base/LargeRadioButton.stories.ts b/packages/ui/src/stories/base/LargeRadioButton.stories.ts index 15119434af..71ba66d85c 100644 --- a/packages/ui/src/stories/base/LargeRadioButton.stories.ts +++ b/packages/ui/src/stories/base/LargeRadioButton.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import LargeRadioButton from '../LargeRadioButton.vue' +import LargeRadioButton from '../../components/base/LargeRadioButton.vue' const meta = { title: 'Base/LargeRadioButton', diff --git a/packages/ui/src/stories/base/LoadingIndicator.stories.ts b/packages/ui/src/stories/base/LoadingIndicator.stories.ts index 23044996c7..15ee2b4bd4 100644 --- a/packages/ui/src/stories/base/LoadingIndicator.stories.ts +++ b/packages/ui/src/stories/base/LoadingIndicator.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import LoadingIndicator from '../LoadingIndicator.vue' +import LoadingIndicator from '../../components/base/LoadingIndicator.vue' const meta = { title: 'Base/LoadingIndicator', diff --git a/packages/ui/src/stories/base/MarkdownEditor.stories.ts b/packages/ui/src/stories/base/MarkdownEditor.stories.ts index 87e41d9a9a..dada3ded4f 100644 --- a/packages/ui/src/stories/base/MarkdownEditor.stories.ts +++ b/packages/ui/src/stories/base/MarkdownEditor.stories.ts @@ -1,7 +1,7 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' import { ref } from 'vue' -import MarkdownEditor from '../MarkdownEditor.vue' +import MarkdownEditor from '../../components/base/MarkdownEditor.vue' const meta = { title: 'Base/MarkdownEditor', diff --git a/packages/ui/src/stories/base/OptionGroup.stories.ts b/packages/ui/src/stories/base/OptionGroup.stories.ts index 537238a013..b2633193c4 100644 --- a/packages/ui/src/stories/base/OptionGroup.stories.ts +++ b/packages/ui/src/stories/base/OptionGroup.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import OptionGroup from '../OptionGroup.vue' +import OptionGroup from '../../components/base/OptionGroup.vue' const meta = { title: 'Base/OptionGroup', diff --git a/packages/ui/src/stories/base/OverflowMenu.stories.ts b/packages/ui/src/stories/base/OverflowMenu.stories.ts index 387573c3cc..46e111d16e 100644 --- a/packages/ui/src/stories/base/OverflowMenu.stories.ts +++ b/packages/ui/src/stories/base/OverflowMenu.stories.ts @@ -1,7 +1,7 @@ import { SettingsIcon } from '@modrinth/assets' import type { Meta, StoryObj } from '@storybook/vue3-vite' -import OverflowMenu from '../OverflowMenu.vue' +import OverflowMenu from '../../components/base/OverflowMenu.vue' const meta = { title: 'Base/OverflowMenu', diff --git a/packages/ui/src/stories/base/Page.stories.ts b/packages/ui/src/stories/base/Page.stories.ts index 5fc6e45f0d..83b87651b5 100644 --- a/packages/ui/src/stories/base/Page.stories.ts +++ b/packages/ui/src/stories/base/Page.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import Page from '../Page.vue' +import Page from '../../components/base/Page.vue' const meta = { title: 'Base/Page', diff --git a/packages/ui/src/stories/base/Pagination.stories.ts b/packages/ui/src/stories/base/Pagination.stories.ts index b8d6554238..2920c848ad 100644 --- a/packages/ui/src/stories/base/Pagination.stories.ts +++ b/packages/ui/src/stories/base/Pagination.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import Pagination from '../Pagination.vue' +import Pagination from '../../components/base/Pagination.vue' const meta = { title: 'Base/Pagination', diff --git a/packages/ui/src/stories/base/PopoutMenu.stories.ts b/packages/ui/src/stories/base/PopoutMenu.stories.ts index ee0e5c509f..7116f633fe 100644 --- a/packages/ui/src/stories/base/PopoutMenu.stories.ts +++ b/packages/ui/src/stories/base/PopoutMenu.stories.ts @@ -1,8 +1,8 @@ import { SettingsIcon } from '@modrinth/assets' import type { Meta, StoryObj } from '@storybook/vue3-vite' -import Button from '../Button.vue' -import PopoutMenu from '../PopoutMenu.vue' +import Button from '../../components/base/Button.vue' +import PopoutMenu from '../../components/base/PopoutMenu.vue' const meta = { title: 'Base/PopoutMenu', diff --git a/packages/ui/src/stories/base/PreviewSelectButton.stories.ts b/packages/ui/src/stories/base/PreviewSelectButton.stories.ts index 57cd2bdefc..3ba0f9f5f9 100644 --- a/packages/ui/src/stories/base/PreviewSelectButton.stories.ts +++ b/packages/ui/src/stories/base/PreviewSelectButton.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import PreviewSelectButton from '../PreviewSelectButton.vue' +import PreviewSelectButton from '../../components/base/PreviewSelectButton.vue' const meta = { title: 'Base/PreviewSelectButton', diff --git a/packages/ui/src/stories/base/ProgressBar.stories.ts b/packages/ui/src/stories/base/ProgressBar.stories.ts index 6f38f9a1e4..567ae1a94b 100644 --- a/packages/ui/src/stories/base/ProgressBar.stories.ts +++ b/packages/ui/src/stories/base/ProgressBar.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import ProgressBar from '../ProgressBar.vue' +import ProgressBar from '../../components/base/ProgressBar.vue' const meta = { title: 'Base/ProgressBar', diff --git a/packages/ui/src/stories/base/ProgressSpinner.stories.ts b/packages/ui/src/stories/base/ProgressSpinner.stories.ts index 67b84e7149..f387bdfb6a 100644 --- a/packages/ui/src/stories/base/ProgressSpinner.stories.ts +++ b/packages/ui/src/stories/base/ProgressSpinner.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import ProgressSpinner from '../ProgressSpinner.vue' +import ProgressSpinner from '../../components/base/ProgressSpinner.vue' const meta = { title: 'Base/ProgressSpinner', diff --git a/packages/ui/src/stories/base/ProjectCard.stories.ts b/packages/ui/src/stories/base/ProjectCard.stories.ts index 6d82dd7676..521ccab55e 100644 --- a/packages/ui/src/stories/base/ProjectCard.stories.ts +++ b/packages/ui/src/stories/base/ProjectCard.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import ProjectCard from '../ProjectCard.vue' +import ProjectCard from '../../components/base/ProjectCard.vue' const meta = { title: 'Base/ProjectCard', diff --git a/packages/ui/src/stories/base/RadialHeader.stories.ts b/packages/ui/src/stories/base/RadialHeader.stories.ts index 485c5ca24c..7e174c13d9 100644 --- a/packages/ui/src/stories/base/RadialHeader.stories.ts +++ b/packages/ui/src/stories/base/RadialHeader.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import RadialHeader from '../RadialHeader.vue' +import RadialHeader from '../../components/base/RadialHeader.vue' const meta = { title: 'Base/RadialHeader', diff --git a/packages/ui/src/stories/base/RadioButtons.stories.ts b/packages/ui/src/stories/base/RadioButtons.stories.ts index 8489aba8e0..32b85ea86e 100644 --- a/packages/ui/src/stories/base/RadioButtons.stories.ts +++ b/packages/ui/src/stories/base/RadioButtons.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import RadioButtons from '../RadioButtons.vue' +import RadioButtons from '../../components/base/RadioButtons.vue' const meta = { title: 'Base/RadioButtons', diff --git a/packages/ui/src/stories/base/ScrollablePanel.stories.ts b/packages/ui/src/stories/base/ScrollablePanel.stories.ts index d3bd4b6a5e..70ee3fc36d 100644 --- a/packages/ui/src/stories/base/ScrollablePanel.stories.ts +++ b/packages/ui/src/stories/base/ScrollablePanel.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import ScrollablePanel from '../ScrollablePanel.vue' +import ScrollablePanel from '../../components/base/ScrollablePanel.vue' const meta = { title: 'Base/ScrollablePanel', diff --git a/packages/ui/src/stories/base/ServerNotice.stories.ts b/packages/ui/src/stories/base/ServerNotice.stories.ts index d12e613c40..0c8e75bad0 100644 --- a/packages/ui/src/stories/base/ServerNotice.stories.ts +++ b/packages/ui/src/stories/base/ServerNotice.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import ServerNotice from '../ServerNotice.vue' +import ServerNotice from '../../components/base/ServerNotice.vue' const meta = { title: 'Base/ServerNotice', diff --git a/packages/ui/src/stories/base/SettingsLabel.stories.ts b/packages/ui/src/stories/base/SettingsLabel.stories.ts index 40425ea67d..3a5b105dcc 100644 --- a/packages/ui/src/stories/base/SettingsLabel.stories.ts +++ b/packages/ui/src/stories/base/SettingsLabel.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import SettingsLabel from '../SettingsLabel.vue' +import SettingsLabel from '../../components/base/SettingsLabel.vue' const meta = { title: 'Base/SettingsLabel', diff --git a/packages/ui/src/stories/base/SimpleBadge.stories.ts b/packages/ui/src/stories/base/SimpleBadge.stories.ts index de296b5141..ecb68d613e 100644 --- a/packages/ui/src/stories/base/SimpleBadge.stories.ts +++ b/packages/ui/src/stories/base/SimpleBadge.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import SimpleBadge from '../SimpleBadge.vue' +import SimpleBadge from '../../components/base/SimpleBadge.vue' const meta = { title: 'Base/SimpleBadge', diff --git a/packages/ui/src/stories/base/Slider.stories.ts b/packages/ui/src/stories/base/Slider.stories.ts index eb09cfb568..4be91681ce 100644 --- a/packages/ui/src/stories/base/Slider.stories.ts +++ b/packages/ui/src/stories/base/Slider.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import Slider from '../Slider.vue' +import Slider from '../../components/base/Slider.vue' const meta = { title: 'Base/Slider', diff --git a/packages/ui/src/stories/base/SmartClickable.stories.ts b/packages/ui/src/stories/base/SmartClickable.stories.ts index 49d14ce631..b497ce9253 100644 --- a/packages/ui/src/stories/base/SmartClickable.stories.ts +++ b/packages/ui/src/stories/base/SmartClickable.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import SmartClickable from '../SmartClickable.vue' +import SmartClickable from '../../components/base/SmartClickable.vue' const meta = { title: 'Base/SmartClickable', diff --git a/packages/ui/src/stories/base/TagItem.stories.ts b/packages/ui/src/stories/base/TagItem.stories.ts index 0ee30a541a..d3c8b6bb39 100644 --- a/packages/ui/src/stories/base/TagItem.stories.ts +++ b/packages/ui/src/stories/base/TagItem.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import TagItem from '../TagItem.vue' +import TagItem from '../../components/base/TagItem.vue' const meta = { title: 'Base/TagItem', diff --git a/packages/ui/src/stories/base/Timeline.stories.ts b/packages/ui/src/stories/base/Timeline.stories.ts index b0d6868ed0..8a20767dde 100644 --- a/packages/ui/src/stories/base/Timeline.stories.ts +++ b/packages/ui/src/stories/base/Timeline.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import Timeline from '../Timeline.vue' +import Timeline from '../../components/base/Timeline.vue' const meta = { title: 'Base/Timeline', diff --git a/packages/ui/src/stories/base/Toggle.stories.ts b/packages/ui/src/stories/base/Toggle.stories.ts index f60a9d0373..8ed45b3695 100644 --- a/packages/ui/src/stories/base/Toggle.stories.ts +++ b/packages/ui/src/stories/base/Toggle.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import Toggle from '../Toggle.vue' +import Toggle from '../../components/base/Toggle.vue' const meta = { title: 'Base/Toggle', diff --git a/packages/ui/src/stories/base/UnsavedChangesPopup.stories.ts b/packages/ui/src/stories/base/UnsavedChangesPopup.stories.ts index 0f403efc0a..cb5bcc37a0 100644 --- a/packages/ui/src/stories/base/UnsavedChangesPopup.stories.ts +++ b/packages/ui/src/stories/base/UnsavedChangesPopup.stories.ts @@ -1,6 +1,6 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' -import UnsavedChangesPopup from '../UnsavedChangesPopup.vue' +import UnsavedChangesPopup from '../../components/base/UnsavedChangesPopup.vue' const meta = { title: 'Base/UnsavedChangesPopup', diff --git a/packages/ui/src/stories/modal/NewModal.stories.ts b/packages/ui/src/stories/modal/NewModal.stories.ts index 7cfff1db33..d9b92f04f5 100644 --- a/packages/ui/src/stories/modal/NewModal.stories.ts +++ b/packages/ui/src/stories/modal/NewModal.stories.ts @@ -1,8 +1,8 @@ import type { StoryObj } from '@storybook/vue3-vite' import { ref } from 'vue' -import ButtonStyled from '../../base/ButtonStyled.vue' -import NewModal from '../NewModal.vue' +import ButtonStyled from '../../components/base/ButtonStyled.vue' +import NewModal from '../../components/modal/NewModal.vue' const meta = { title: 'Modal/NewModal', From fa49aae9f0204d5c7e0b4089cbcd75d030d5d88b Mon Sep 17 00:00:00 2001 From: tdgao Date: Sun, 28 Dec 2025 11:29:39 -0800 Subject: [PATCH 13/21] add pnpm run storybook --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 94b2206a69..38a6344b8f 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,8 @@ "prepr:frontend:lib": "turbo run prepr --filter=@modrinth/ui --filter=@modrinth/moderation --filter=@modrinth/assets --filter=@modrinth/blog --filter=@modrinth/api-client --filter=@modrinth/utils --filter=@modrinth/tooling-config", "prepr:frontend:web": "turbo run prepr --filter=@modrinth/frontend", "prepr:frontend:app": "turbo run prepr --filter=@modrinth/app-frontend", - "icons:add": "pnpm --filter @modrinth/assets icons:add" + "storybook": "pnpm --filter @modrinth/ui storybook", + "icons:add": "pnpm --filter @modrinth/assets icons:add" }, "devDependencies": { "@modrinth/tooling-config": "workspace:*", From 28657b24b0003e62d12234003caa7d1d8dd79f1b Mon Sep 17 00:00:00 2001 From: tdgao Date: Sun, 28 Dec 2025 23:54:28 -0800 Subject: [PATCH 14/21] remove chromatic --- packages/ui/package.json | 175 +++++++++++++++++++-------------------- pnpm-lock.yaml | 46 ---------- 2 files changed, 87 insertions(+), 134 deletions(-) diff --git a/packages/ui/package.json b/packages/ui/package.json index 0fb367e275..1b3b369cf3 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -1,90 +1,89 @@ { - "name": "@modrinth/ui", - "version": "0.0.0", - "type": "module", - "private": true, - "main": "./index.ts", - "types": "./index.ts", - "exports": { - ".": { - "types": "./index.ts", - "default": "./index.ts" - }, - "./pages": { - "types": "./src/pages/index.ts", - "default": "./src/pages/index.ts" - }, - "./src/*": "./src/*" - }, - "scripts": { - "lint": "eslint . && prettier --check .", - "fix": "eslint . --fix && prettier --write .", - "intl:extract": "formatjs extract \"src/**/*.{vue,ts,tsx,js,jsx,mts,cts,mjs,cjs}\" --ignore \"src/**/*.d.ts\" --out-file src/locales/en-US/index.json --preserve-whitespace", - "storybook": "storybook dev -p 6006", - "build-storybook": "storybook build" - }, - "devDependencies": { - "@chromatic-com/storybook": "^4.1.3", - "@formatjs/cli": "^6.2.12", - "@modrinth/tooling-config": "workspace:*", - "@storybook/addon-a11y": "^10.1.10", - "@storybook/addon-docs": "^10.1.10", - "@storybook/addon-onboarding": "^10.1.10", - "@storybook/addon-themes": "^10.1.10", - "@storybook/addon-vitest": "^10.1.10", - "@storybook/builder-vite": "^10.1.10", - "@storybook/vue3-vite": "^10.1.10", - "@stripe/stripe-js": "^7.3.1", - "@tailwindcss/vite": "^4.1.18", - "@vintl/unplugin": "^1.5.1", - "@vintl/vintl": "^4.4.1", - "@vitejs/plugin-vue": "^5.2.1", - "@vitest/browser-playwright": "^4.0.16", - "@vitest/coverage-v8": "^4.0.16", - "eslint-plugin-storybook": "^10.1.10", - "playwright": "^1.57.0", - "storybook": "^10.1.10", - "stripe": "^18.1.1", - "tailwindcss": "^3.4.4", - "typescript": "^5.4.5", - "vite": "^5.4.6", - "vite-svg-loader": "^5.1.0", - "vitest": "^4.0.16", - "vue": "^3.5.13", - "vue-component-type-helpers": "^3.1.8", - "vue-router": "4.3.0" - }, - "dependencies": { - "@codemirror/commands": "^6.3.2", - "@codemirror/lang-markdown": "^6.2.3", - "@codemirror/language": "^6.9.3", - "@codemirror/state": "^6.3.2", - "@codemirror/view": "^6.22.1", - "@modrinth/api-client": "workspace:*", - "@modrinth/assets": "workspace:*", - "@modrinth/utils": "workspace:*", - "@tanstack/vue-query": "^5.90.7", - "@tresjs/cientos": "^4.3.0", - "@tresjs/core": "^4.3.4", - "@tresjs/post-processing": "^2.4.0", - "@types/markdown-it": "^14.1.1", - "@types/three": "^0.172.0", - "@vintl/how-ago": "^3.0.1", - "@vueuse/core": "^11.1.0", - "apexcharts": "^3.44.0", - "dayjs": "^1.11.10", - "floating-vue": "^5.2.2", - "fuse.js": "^6.6.2", - "highlight.js": "^11.9.0", - "markdown-it": "^13.0.2", - "postprocessing": "^6.37.6", - "qrcode.vue": "^3.4.1", - "three": "^0.172.0", - "vue-multiselect": "3.0.0", - "vue-select": "4.0.0-beta.6", - "vue-typed-virtual-list": "^1.0.10", - "vue3-apexcharts": "^1.4.4", - "xss": "^1.0.14" - }, - "web-types": "../../web-types.json" + "name": "@modrinth/ui", + "version": "0.0.0", + "type": "module", + "private": true, + "main": "./index.ts", + "types": "./index.ts", + "exports": { + ".": { + "types": "./index.ts", + "default": "./index.ts" + }, + "./pages": { + "types": "./src/pages/index.ts", + "default": "./src/pages/index.ts" + }, + "./src/*": "./src/*" + }, + "scripts": { + "lint": "eslint . && prettier --check .", + "fix": "eslint . --fix && prettier --write .", + "intl:extract": "formatjs extract \"src/**/*.{vue,ts,tsx,js,jsx,mts,cts,mjs,cjs}\" --ignore \"src/**/*.d.ts\" --out-file src/locales/en-US/index.json --preserve-whitespace", + "storybook": "storybook dev -p 6006", + "build-storybook": "storybook build" + }, + "devDependencies": { + "@formatjs/cli": "^6.2.12", + "@modrinth/tooling-config": "workspace:*", + "@storybook/addon-a11y": "^10.1.10", + "@storybook/addon-docs": "^10.1.10", + "@storybook/addon-onboarding": "^10.1.10", + "@storybook/addon-themes": "^10.1.10", + "@storybook/addon-vitest": "^10.1.10", + "@storybook/builder-vite": "^10.1.10", + "@storybook/vue3-vite": "^10.1.10", + "@stripe/stripe-js": "^7.3.1", + "@tailwindcss/vite": "^4.1.18", + "@vintl/unplugin": "^1.5.1", + "@vintl/vintl": "^4.4.1", + "@vitejs/plugin-vue": "^5.2.1", + "@vitest/browser-playwright": "^4.0.16", + "@vitest/coverage-v8": "^4.0.16", + "eslint-plugin-storybook": "^10.1.10", + "playwright": "^1.57.0", + "storybook": "^10.1.10", + "stripe": "^18.1.1", + "tailwindcss": "^3.4.4", + "typescript": "^5.4.5", + "vite": "^5.4.6", + "vite-svg-loader": "^5.1.0", + "vitest": "^4.0.16", + "vue": "^3.5.13", + "vue-component-type-helpers": "^3.1.8", + "vue-router": "4.3.0" + }, + "dependencies": { + "@codemirror/commands": "^6.3.2", + "@codemirror/lang-markdown": "^6.2.3", + "@codemirror/language": "^6.9.3", + "@codemirror/state": "^6.3.2", + "@codemirror/view": "^6.22.1", + "@modrinth/api-client": "workspace:*", + "@modrinth/assets": "workspace:*", + "@modrinth/utils": "workspace:*", + "@tanstack/vue-query": "^5.90.7", + "@tresjs/cientos": "^4.3.0", + "@tresjs/core": "^4.3.4", + "@tresjs/post-processing": "^2.4.0", + "@types/markdown-it": "^14.1.1", + "@types/three": "^0.172.0", + "@vintl/how-ago": "^3.0.1", + "@vueuse/core": "^11.1.0", + "apexcharts": "^3.44.0", + "dayjs": "^1.11.10", + "floating-vue": "^5.2.2", + "fuse.js": "^6.6.2", + "highlight.js": "^11.9.0", + "markdown-it": "^13.0.2", + "postprocessing": "^6.37.6", + "qrcode.vue": "^3.4.1", + "three": "^0.172.0", + "vue-multiselect": "3.0.0", + "vue-select": "4.0.0-beta.6", + "vue-typed-virtual-list": "^1.0.10", + "vue3-apexcharts": "^1.4.4", + "xss": "^1.0.14" + }, + "web-types": "../../web-types.json" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 33c80d6437..1cfe792a81 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -647,9 +647,6 @@ importers: specifier: ^1.0.14 version: 1.0.15 devDependencies: - '@chromatic-com/storybook': - specifier: ^4.1.3 - version: 4.1.3(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1)) '@formatjs/cli': specifier: ^6.2.12 version: 6.2.12(@vue/compiler-core@3.5.13)(vue@3.5.13(typescript@5.5.4)) @@ -1035,12 +1032,6 @@ packages: peerDependencies: vue: ^2.7 || ^3.2.45 - '@chromatic-com/storybook@4.1.3': - resolution: {integrity: sha512-hc0HO9GAV9pxqDE6fTVOV5KeLpTiCfV8Jrpk5ogKLiIgeq2C+NPjpt74YnrZTjiK8E19fYcMP+2WY9ZtX7zHmw==} - engines: {node: '>=20.0.0', yarn: '>=1.22.18'} - peerDependencies: - storybook: ^0.0.0-0 || ^9.0.0 || ^9.1.0-0 || ^9.2.0-0 || ^10.0.0-0 || ^10.1.0-0 || ^10.2.0-0 || ^10.3.0-0 - '@cloudflare/kv-asset-handler@0.3.4': resolution: {integrity: sha512-YLPHc8yASwjNkmcDMQMY35yiWjoKAKnhUbPRszBRS0YgH+IXtsMp61j+yTcnCE3oO2DgP0U3iejLC8FTtKDC8Q==} engines: {node: '>=16.13'} @@ -1996,9 +1987,6 @@ packages: '@types/react': '>=16' react: '>=16' - '@neoconfetti/react@1.0.0': - resolution: {integrity: sha512-klcSooChXXOzIm+SE5IISIAn3bYzYfPjbX7D7HoqZL84oAfgREeSg5vSIaSFH+DaGzzvImTyWe1OyrJ67vik4A==} - '@netlify/functions@2.8.2': resolution: {integrity: sha512-DeoAQh8LuNPvBE4qsKlezjKj0PyXDryOFJfJKo3Z1qZLKzQ21sT314KQKPVjfvw6knqijj+IO+0kHXy/TJiqNA==} engines: {node: '>=14.0.0'} @@ -4135,18 +4123,6 @@ packages: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} - chromatic@13.3.4: - resolution: {integrity: sha512-TR5rvyH0ESXobBB3bV8jc87AEAFQC7/n+Eb4XWhJz6hW3YNxIQPVjcbgLv+a4oKHEl1dUBueWSoIQsOVGTd+RQ==} - hasBin: true - peerDependencies: - '@chromatic-com/cypress': ^0.*.* || ^1.0.0 - '@chromatic-com/playwright': ^0.*.* || ^1.0.0 - peerDependenciesMeta: - '@chromatic-com/cypress': - optional: true - '@chromatic-com/playwright': - optional: true - chrome-trace-event@1.0.4: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} @@ -5127,10 +5103,6 @@ packages: file-uri-to-path@1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - filesize@10.1.6: - resolution: {integrity: sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==} - engines: {node: '>= 10.4.0'} - fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -9647,18 +9619,6 @@ snapshots: dependencies: vue: 3.5.13(typescript@5.8.3) - '@chromatic-com/storybook@4.1.3(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))': - dependencies: - '@neoconfetti/react': 1.0.0 - chromatic: 13.3.4 - filesize: 10.1.6 - jsonfile: 6.1.0 - storybook: 10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1) - strip-ansi: 7.1.0 - transitivePeerDependencies: - - '@chromatic-com/cypress' - - '@chromatic-com/playwright' - '@cloudflare/kv-asset-handler@0.3.4': dependencies: mime: 3.0.0 @@ -10514,8 +10474,6 @@ snapshots: '@types/react': 19.2.7 react: 19.1.1 - '@neoconfetti/react@1.0.0': {} - '@netlify/functions@2.8.2': dependencies: '@netlify/serverless-functions-api': 1.26.1 @@ -13402,8 +13360,6 @@ snapshots: chownr@2.0.0: {} - chromatic@13.3.4: {} - chrome-trace-event@1.0.4: optional: true @@ -14497,8 +14453,6 @@ snapshots: file-uri-to-path@1.0.0: {} - filesize@10.1.6: {} - fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 From 6e76b088637e14b17a5c893c00bc09035928e16f Mon Sep 17 00:00:00 2001 From: tdgao Date: Mon, 29 Dec 2025 00:11:46 -0800 Subject: [PATCH 15/21] add add-stories.md --- packages/ui/src/stories/add-stories.md | 292 +++++++++++++++++++++++++ 1 file changed, 292 insertions(+) create mode 100644 packages/ui/src/stories/add-stories.md diff --git a/packages/ui/src/stories/add-stories.md b/packages/ui/src/stories/add-stories.md new file mode 100644 index 0000000000..04b775ea5a --- /dev/null +++ b/packages/ui/src/stories/add-stories.md @@ -0,0 +1,292 @@ +# Storybook Story Creation Guide + +This document provides instructions for AI assistants when creating Storybook stories for Vue components in the `@modrinth/ui` package. + +## File Location + +Stories should be placed in a `stories` subdirectory next to the component's directory: + +- Component: `src/components/base/MyComponent.vue` +- Story: `src/stories/base/MyComponent.stories.ts` + +Example with modal components: + +- Component: `src/components/modal/MyModal.vue` +- Story: `src/stories/modal/MyModal.stories.ts` + +## Basic Story Structure + +```typescript +import type { Meta, StoryObj } from '@storybook/vue3-vite' +import MyComponent from '../../components/base/MyComponent.vue' + +const meta = { + title: 'Base/MyComponent', // Category/ComponentName + component: MyComponent, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: { + // Default prop values + }, +} +``` + +## Key Principles + +### 1. Let Storybook Auto-Infer Props + +**DO NOT** manually define `argTypes`. + +```typescript +// ❌ BAD - Don't include prop types +const meta = { + argTypes: { + size: { control: 'select', options: ['small', 'medium', 'large'] }, + }, +} + +// ✅ GOOD - Let Storybook infer from component +const meta = { + component: MyComponent, +} +``` + +### 2. Use Render Functions for Slot Content + +When a component uses slots, provide a render function: + +```typescript +const meta = { + component: Accordion, + render: (args) => ({ + components: { Accordion }, + setup() { + return { args } + }, + template: /* html */ ` + + +

Accordion content here.

+
+ `, + }), +} satisfies Meta +``` + +### 3. Keep Stories Concise + +Instead of creating individual stories for every prop variant, use showcase stories: + +Make sure to type it as `StoryObj` when using render functions. + +```typescript +// ❌ BAD - Too many individual stories +export const Small: Story = { args: { size: 'small' } } +export const Medium: Story = { args: { size: 'medium' } } +export const Large: Story = { args: { size: 'large' } } + +// ✅ GOOD - One showcase story +export const AllSizes: StoryObj = { + render: () => ({ + components: { MyComponent }, + template: /* html */ ` +
+ Small + Medium + Large +
+ `, + }), +} +``` + +### 4. Required Stories + +Each component should have: + +- `Default` - Basic usage with controls +- `All[Variants]` - Showcase stories for major prop variations (e.g., `AllColors`, `AllSizes`, `AllTypes`) + +### 5. Handling Generic Vue Components + +For components with generics like `MyComponent`, add // @ts-ignore + +```typescript +const meta = { + title: 'Base/Combobox', + // @ts-ignore + component: Combobox, +} satisfies Meta +``` + +## Common Patterns + +### Components with Icons + +Import icons from `@modrinth/assets`: + +```typescript +import { SearchIcon, ChevronDownIcon } from '@modrinth/assets' + +export const WithIcon: Story = { + render: () => ({ + components: { MyComponent, SearchIcon }, + template: /* html */ ` + + + Search + + `, + }), + args: {}, +} +``` + +### Interactive Components (Modals, Dropdowns) + +For components that need user interaction to show: + +```typescript +export const Default: Story = { + render: () => ({ + components: { Modal, ButtonStyled }, + setup() { + const modalRef = ref | null>(null) + return { modalRef } + }, + template: /* html */ ` +
+ + + + +

Modal content

+
+
+ `, + }), + args: {}, +} +``` + +### Components with v-model + +```typescript +export const Default: Story = { + render: () => ({ + components: { Toggle }, + setup() { + const value = ref(false) + return { value } + }, + template: /* html */ ` + + `, + }), + args: {}, +} +``` + +## Things to Avoid + +### 1. Don't Import from `@modrinth/ui` in Components + +Components should use relative imports, not the package alias: + +```typescript +// ❌ BAD - Causes circular dependency in Storybook +import { ButtonStyled } from '@modrinth/ui' + +// ✅ GOOD - Use relative imports +import ButtonStyled from '../base/ButtonStyled.vue' +``` + +### 2. Object/Array Prop Defaults Must Be Factory Functions + +This is a Vue requirement that `vue-docgen-plugin` enforces: + +```typescript +// ❌ BAD - Will cause Storybook build error +defineProps<{ icon: Component }>() +withDefaults(defineProps<{ icon: Component }>(), { + icon: TrashIcon, +}) + +// ✅ GOOD - Use factory function +withDefaults(defineProps<{ icon: Component }>(), { + icon: () => TrashIcon, +}) +``` + +## Dependencies Available in Storybook + +The following are configured in `.storybook/preview.ts`: + +- **VIntl**: `useVIntl()` and `formatMessage()` work automatically +- **Teleports**: `` has a target element +- **Tailwind CSS**: All Tailwind classes are available +- **Dark Mode**: Use `@storybook/addon-themes` for theme switching + +## Example: Complete Story File + +```typescript +import type { Meta, StoryObj } from '@storybook/vue3-vite' +import { ref } from 'vue' +import Badge from '../../components/base/Badge.vue' + +const meta = { + title: 'Base/Badge', + component: Badge, + render: (args) => ({ + components: { Badge }, + setup() { + return { args } + }, + template: /* html */ ` + Badge Text + `, + }), +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: { + color: 'green', + }, +} + +export const AllColors: StoryObj = { + render: () => ({ + components: { Badge }, + template: /* html */ ` +
+ Green + Red + Orange + Blue + Purple + Gray +
+ `, + }), +} + +export const AllTypes: StoryObj = { + render: () => ({ + components: { Badge }, + template: /* html */ ` +
+ Default + Outlined + Highlight +
+ `, + }), +} +``` From 78fb98e78de0b40e9e8787cfba79bb9ca93752a3 Mon Sep 17 00:00:00 2001 From: tdgao Date: Mon, 29 Dec 2025 00:17:29 -0800 Subject: [PATCH 16/21] fix types --- packages/ui/src/stories/base/Badge.stories.ts | 5 ++--- .../stories/base/LargeRadioButton.stories.ts | 12 +++++------- .../base/UnsavedChangesPopup.stories.ts | 18 +++++++----------- .../ui/src/stories/modal/NewModal.stories.ts | 9 +-------- 4 files changed, 15 insertions(+), 29 deletions(-) diff --git a/packages/ui/src/stories/base/Badge.stories.ts b/packages/ui/src/stories/base/Badge.stories.ts index 4fce248961..41138aa07c 100644 --- a/packages/ui/src/stories/base/Badge.stories.ts +++ b/packages/ui/src/stories/base/Badge.stories.ts @@ -16,7 +16,7 @@ export const Default: Story = { }, } -export const ProjectStatuses = { +export const ProjectStatuses: StoryObj = { render: () => ({ components: { Badge }, template: /*html*/ ` @@ -33,8 +33,7 @@ export const ProjectStatuses = { }), } -export const UserRoles: Story = { - ...Default, +export const UserRoles: StoryObj = { render: () => ({ components: { Badge }, template: /*html*/ ` diff --git a/packages/ui/src/stories/base/LargeRadioButton.stories.ts b/packages/ui/src/stories/base/LargeRadioButton.stories.ts index 71ba66d85c..60d15cf42a 100644 --- a/packages/ui/src/stories/base/LargeRadioButton.stories.ts +++ b/packages/ui/src/stories/base/LargeRadioButton.stories.ts @@ -4,14 +4,13 @@ import LargeRadioButton from '../../components/base/LargeRadioButton.vue' const meta = { title: 'Base/LargeRadioButton', - component: LargeRadioButton as any, -} satisfies Meta + // @ts-ignore + component: LargeRadioButton, +} satisfies Meta export default meta -type Story = StoryObj -export const Default: Story = { - args: {}, +export const Default: StoryObj = { render: () => ({ components: { LargeRadioButton }, template: ` @@ -22,8 +21,7 @@ export const Default: Story = { }), } -export const AllStates: Story = { - args: {}, +export const AllStates: StoryObj = { render: () => ({ components: { LargeRadioButton }, template: ` diff --git a/packages/ui/src/stories/base/UnsavedChangesPopup.stories.ts b/packages/ui/src/stories/base/UnsavedChangesPopup.stories.ts index cb5bcc37a0..5025671cd3 100644 --- a/packages/ui/src/stories/base/UnsavedChangesPopup.stories.ts +++ b/packages/ui/src/stories/base/UnsavedChangesPopup.stories.ts @@ -4,14 +4,13 @@ import UnsavedChangesPopup from '../../components/base/UnsavedChangesPopup.vue' const meta = { title: 'Base/UnsavedChangesPopup', - component: UnsavedChangesPopup as any, -} satisfies Meta + // @ts-ignore + component: UnsavedChangesPopup, +} satisfies Meta export default meta -type Story = StoryObj -export const Default: Story = { - args: {}, +export const Default: StoryObj = { render: () => ({ components: { UnsavedChangesPopup }, template: ` @@ -27,8 +26,7 @@ export const Default: Story = { }), } -export const Saving: Story = { - args: {}, +export const Saving: StoryObj = { render: () => ({ components: { UnsavedChangesPopup }, template: ` @@ -45,8 +43,7 @@ export const Saving: Story = { }), } -export const NoResetButton: Story = { - args: {}, +export const NoResetButton: StoryObj = { render: () => ({ components: { UnsavedChangesPopup }, template: ` @@ -62,8 +59,7 @@ export const NoResetButton: Story = { }), } -export const Hidden: Story = { - args: {}, +export const Hidden: StoryObj = { render: () => ({ components: { UnsavedChangesPopup }, template: ` diff --git a/packages/ui/src/stories/modal/NewModal.stories.ts b/packages/ui/src/stories/modal/NewModal.stories.ts index d9b92f04f5..00691d122c 100644 --- a/packages/ui/src/stories/modal/NewModal.stories.ts +++ b/packages/ui/src/stories/modal/NewModal.stories.ts @@ -10,10 +10,9 @@ const meta = { } export default meta -type Story = StoryObj & { args?: Record } +type Story = StoryObj export const Default: Story = { - args: {}, render: () => ({ components: { NewModal, ButtonStyled }, setup() { @@ -36,7 +35,6 @@ export const Default: Story = { } export const WithActions: Story = { - args: {}, render: () => ({ components: { NewModal, ButtonStyled }, setup() { @@ -68,7 +66,6 @@ export const WithActions: Story = { } export const DangerFade: Story = { - args: {}, render: () => ({ components: { NewModal, ButtonStyled }, setup() { @@ -100,7 +97,6 @@ export const DangerFade: Story = { } export const WarningFade: Story = { - args: {}, render: () => ({ components: { NewModal, ButtonStyled }, setup() { @@ -132,7 +128,6 @@ export const WarningFade: Story = { } export const Scrollable: Story = { - args: {}, render: () => ({ components: { NewModal, ButtonStyled }, setup() { @@ -165,7 +160,6 @@ export const Scrollable: Story = { } export const MergedHeader: Story = { - args: {}, render: () => ({ components: { NewModal, ButtonStyled }, setup() { @@ -190,7 +184,6 @@ export const MergedHeader: Story = { } export const NotClosable: Story = { - args: {}, render: () => ({ components: { NewModal, ButtonStyled }, setup() { From ebc2b09f8f38ccd9f2f8d877ffd8f4250779ab38 Mon Sep 17 00:00:00 2001 From: tdgao Date: Mon, 29 Dec 2025 00:22:54 -0800 Subject: [PATCH 17/21] fix unncessary args field --- packages/ui/src/stories/base/AutoBrandIcon.stories.ts | 5 ++--- packages/ui/src/stories/base/Checkbox.stories.ts | 3 +-- packages/ui/src/stories/base/Combobox.stories.ts | 5 +++-- packages/ui/src/stories/base/DropArea.stories.ts | 7 ++----- .../ui/src/stories/base/EnvironmentIndicator.stories.ts | 3 +-- packages/ui/src/stories/base/FilterBar.stories.ts | 7 ++----- packages/ui/src/stories/base/MarkdownEditor.stories.ts | 7 ++----- .../ui/src/stories/base/PreviewSelectButton.stories.ts | 7 ++----- packages/ui/src/stories/base/ProgressBar.stories.ts | 3 +-- packages/ui/src/stories/base/ProgressSpinner.stories.ts | 3 +-- packages/ui/src/stories/base/ServerNotice.stories.ts | 5 ++--- 11 files changed, 19 insertions(+), 36 deletions(-) diff --git a/packages/ui/src/stories/base/AutoBrandIcon.stories.ts b/packages/ui/src/stories/base/AutoBrandIcon.stories.ts index 541454f880..d2990e8d1b 100644 --- a/packages/ui/src/stories/base/AutoBrandIcon.stories.ts +++ b/packages/ui/src/stories/base/AutoBrandIcon.stories.ts @@ -8,7 +8,7 @@ const meta = { } satisfies Meta export default meta -type Story = StoryObj & { args?: Record } +type Story = StoryObj export const Default: Story = { args: { @@ -16,8 +16,7 @@ export const Default: Story = { }, } -export const AllBrands: Story = { - args: { keyword: 'discord' }, +export const AllBrands: StoryObj = { render: () => ({ components: { AutoBrandIcon }, template: ` diff --git a/packages/ui/src/stories/base/Checkbox.stories.ts b/packages/ui/src/stories/base/Checkbox.stories.ts index 8473550ba9..a8e7f8b187 100644 --- a/packages/ui/src/stories/base/Checkbox.stories.ts +++ b/packages/ui/src/stories/base/Checkbox.stories.ts @@ -40,8 +40,7 @@ export const Indeterminate: Story = { }, } -export const AllStates: Story = { - args: { modelValue: false }, +export const AllStates: StoryObj = { render: () => ({ components: { Checkbox }, template: /*html*/ ` diff --git a/packages/ui/src/stories/base/Combobox.stories.ts b/packages/ui/src/stories/base/Combobox.stories.ts index 360652b9dd..14d072b4d0 100644 --- a/packages/ui/src/stories/base/Combobox.stories.ts +++ b/packages/ui/src/stories/base/Combobox.stories.ts @@ -4,8 +4,9 @@ import Combobox from '../../components/base/Combobox.vue' const meta = { title: 'Base/Combobox', - component: Combobox as any, -} satisfies Meta + // @ts-ignore - generic component + component: Combobox, +} satisfies Meta export default meta type Story = StoryObj diff --git a/packages/ui/src/stories/base/DropArea.stories.ts b/packages/ui/src/stories/base/DropArea.stories.ts index d378266a0e..863852ac72 100644 --- a/packages/ui/src/stories/base/DropArea.stories.ts +++ b/packages/ui/src/stories/base/DropArea.stories.ts @@ -8,10 +8,8 @@ const meta = { } satisfies Meta export default meta -type Story = StoryObj -export const Default: Story = { - args: { accept: '*' }, +export const Default: StoryObj = { render: () => ({ components: { DropArea }, template: ` @@ -25,8 +23,7 @@ export const Default: Story = { }), } -export const ImagesOnly: Story = { - args: { accept: 'image/*' }, +export const ImagesOnly: StoryObj = { render: () => ({ components: { DropArea }, template: ` diff --git a/packages/ui/src/stories/base/EnvironmentIndicator.stories.ts b/packages/ui/src/stories/base/EnvironmentIndicator.stories.ts index 75965e9d8d..6253a4a502 100644 --- a/packages/ui/src/stories/base/EnvironmentIndicator.stories.ts +++ b/packages/ui/src/stories/base/EnvironmentIndicator.stories.ts @@ -18,8 +18,7 @@ export const Default: Story = { }, } -export const AllEnvironments: Story = { - args: { type: 'mod' }, +export const AllEnvironments: StoryObj = { render: () => ({ components: { EnvironmentIndicator }, template: ` diff --git a/packages/ui/src/stories/base/FilterBar.stories.ts b/packages/ui/src/stories/base/FilterBar.stories.ts index 1be232dd46..0afc9a5797 100644 --- a/packages/ui/src/stories/base/FilterBar.stories.ts +++ b/packages/ui/src/stories/base/FilterBar.stories.ts @@ -9,10 +9,8 @@ const meta = { } satisfies Meta export default meta -type Story = StoryObj & { args?: Record } -export const Default: Story = { - args: { modelValue: [], options: [] }, +export const Default: StoryObj = { render: () => ({ components: { FilterBar }, setup() { @@ -30,8 +28,7 @@ export const Default: Story = { }), } -export const WithSelection: Story = { - args: { modelValue: [], options: [] }, +export const WithSelection: StoryObj = { render: () => ({ components: { FilterBar }, setup() { diff --git a/packages/ui/src/stories/base/MarkdownEditor.stories.ts b/packages/ui/src/stories/base/MarkdownEditor.stories.ts index dada3ded4f..0f8f07ebf4 100644 --- a/packages/ui/src/stories/base/MarkdownEditor.stories.ts +++ b/packages/ui/src/stories/base/MarkdownEditor.stories.ts @@ -9,10 +9,8 @@ const meta = { } satisfies Meta export default meta -type Story = StoryObj & { args?: Record } -export const Default: Story = { - args: { modelValue: '' }, +export const Default: StoryObj = { render: () => ({ components: { MarkdownEditor }, setup() { @@ -27,8 +25,7 @@ export const Default: Story = { }), } -export const WithPlaceholder: Story = { - args: { modelValue: '' }, +export const WithPlaceholder: StoryObj = { render: () => ({ components: { MarkdownEditor }, setup() { diff --git a/packages/ui/src/stories/base/PreviewSelectButton.stories.ts b/packages/ui/src/stories/base/PreviewSelectButton.stories.ts index 3ba0f9f5f9..0f3d91ea33 100644 --- a/packages/ui/src/stories/base/PreviewSelectButton.stories.ts +++ b/packages/ui/src/stories/base/PreviewSelectButton.stories.ts @@ -8,10 +8,8 @@ const meta = { } satisfies Meta export default meta -type Story = StoryObj & { args?: Record } -export const Default: Story = { - args: { checked: false }, +export const Default: StoryObj = { render: () => ({ components: { PreviewSelectButton }, template: ` @@ -25,8 +23,7 @@ export const Default: Story = { }), } -export const AllStates: Story = { - args: { checked: false }, +export const AllStates: StoryObj = { render: () => ({ components: { PreviewSelectButton }, template: ` diff --git a/packages/ui/src/stories/base/ProgressBar.stories.ts b/packages/ui/src/stories/base/ProgressBar.stories.ts index 567ae1a94b..84da3c4580 100644 --- a/packages/ui/src/stories/base/ProgressBar.stories.ts +++ b/packages/ui/src/stories/base/ProgressBar.stories.ts @@ -24,8 +24,7 @@ export const WithLabel: Story = { }, } -export const AllColors: Story = { - args: { progress: 50 }, +export const AllColors: StoryObj = { render: () => ({ components: { ProgressBar }, template: /*html*/ ` diff --git a/packages/ui/src/stories/base/ProgressSpinner.stories.ts b/packages/ui/src/stories/base/ProgressSpinner.stories.ts index f387bdfb6a..178ad6069a 100644 --- a/packages/ui/src/stories/base/ProgressSpinner.stories.ts +++ b/packages/ui/src/stories/base/ProgressSpinner.stories.ts @@ -16,8 +16,7 @@ export const Default: Story = { }, } -export const AllProgress: Story = { - args: { progress: 50 }, +export const AllProgress: StoryObj = { render: () => ({ components: { ProgressSpinner }, template: /*html*/ ` diff --git a/packages/ui/src/stories/base/ServerNotice.stories.ts b/packages/ui/src/stories/base/ServerNotice.stories.ts index 0c8e75bad0..92a92fed0e 100644 --- a/packages/ui/src/stories/base/ServerNotice.stories.ts +++ b/packages/ui/src/stories/base/ServerNotice.stories.ts @@ -8,7 +8,7 @@ const meta = { } satisfies Meta export default meta -type Story = StoryObj & { args?: Record } +type Story = StoryObj export const Default: Story = { args: { @@ -18,8 +18,7 @@ export const Default: Story = { }, } -export const AllLevels: Story = { - args: { level: 'info', message: '', dismissable: false }, +export const AllLevels: StoryObj = { render: () => ({ components: { ServerNotice }, template: ` From 41badf0e45dd1f38168d554eb84c3cedacf3a226 Mon Sep 17 00:00:00 2001 From: tdgao Date: Mon, 29 Dec 2025 00:30:36 -0800 Subject: [PATCH 18/21] cover more addordion states --- .../ui/src/stories/base/Accordion.stories.ts | 151 ++++++++++++++++++ 1 file changed, 151 insertions(+) diff --git a/packages/ui/src/stories/base/Accordion.stories.ts b/packages/ui/src/stories/base/Accordion.stories.ts index 4e5bc80920..3e14a1ba84 100644 --- a/packages/ui/src/stories/base/Accordion.stories.ts +++ b/packages/ui/src/stories/base/Accordion.stories.ts @@ -35,3 +35,154 @@ export const ForceOpen: Story = { forceOpen: true, }, } + +export const WithCustomButtonClass: StoryObj = { + render: () => ({ + components: { Accordion }, + template: /*html*/ ` + + +
+ server-001 + server-002 + server-003 +
+
+ `, + }), +} + +export const WithSummarySlot: StoryObj = { + render: () => ({ + components: { Accordion }, + template: /*html*/ ` + + + +
+ + +
+
+ `, + }), +} + +export const WithContentClass: StoryObj = { + render: () => ({ + components: { Accordion }, + template: /*html*/ ` + + +

This content has custom padding and background styling applied via contentClass.

+
+ `, + }), +} + +export const MultipleAccordions: StoryObj = { + render: () => ({ + components: { Accordion }, + template: /*html*/ ` +
+ + +
+

Welcome! This section covers the basics of getting started with the application.

+
+
+ + +
+

Learn how to configure your settings and customize the experience.

+
+
+ + +
+

Frequently asked questions and their answers.

+
+
+
+ `, + }), +} + +export const NestedContent: StoryObj = { + render: () => ({ + components: { Accordion }, + template: /*html*/ ` + + +
+
+ vue + ^3.5.0 +
+
+ typescript + ^5.0.0 +
+
+ vite + ^6.0.0 +
+
+
+ `, + }), +} + +export const AllStates: StoryObj = { + render: () => ({ + components: { Accordion }, + template: /*html*/ ` +
+
+

Default (collapsed)

+ + +

Hidden content revealed on click.

+
+
+
+

Open by default

+ + +

This content is visible by default.

+
+
+
+

Force open (no toggle)

+ + +

This accordion is always open and cannot be toggled.

+
+
+
+ `, + }), +} From 3887474edd16b82956cbafc74f4443a4be0bf790 Mon Sep 17 00:00:00 2001 From: tdgao Date: Mon, 29 Dec 2025 10:35:03 -0800 Subject: [PATCH 19/21] pt2 --- pnpm-lock.yaml | 1080 ++++++++++++++++++++++++++++++++++++------------ 1 file changed, 812 insertions(+), 268 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 518cd8183a..22db0b40ab 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -101,6 +101,9 @@ importers: floating-vue: specifier: ^5.2.2 version: 5.2.2(@nuxt/kit@3.17.5(magicast@0.5.1))(vue@3.5.13(typescript@5.5.4)) + intl-messageformat: + specifier: ^10.7.7 + version: 10.7.18 ofetch: specifier: ^1.3.4 version: 1.4.1 @@ -348,6 +351,9 @@ importers: '@nuxt/devtools': specifier: ^1.3.3 version: 1.6.3(rollup@4.28.1)(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4)) + '@nuxtjs/i18n': + specifier: ^8.5.5 + version: 8.5.6(magicast@0.3.5)(rollup@4.28.1)(vue@3.5.13(typescript@5.5.4)) '@types/dompurify': specifier: ^3.0.5 version: 3.0.5 @@ -357,15 +363,6 @@ importers: '@types/node': specifier: ^20.1.0 version: 20.14.11 - '@vintl/compact-number': - specifier: ^2.0.5 - version: 2.0.7(@formatjs/intl@2.10.4(typescript@5.5.4)) - '@vintl/how-ago': - specifier: ^3.0.1 - version: 3.0.1(@formatjs/intl@2.10.4(typescript@5.5.4)) - '@vintl/nuxt': - specifier: ^1.9.2 - version: 1.9.2(@vue/compiler-core@3.5.13)(magicast@0.3.5)(rollup@4.28.1)(typescript@5.5.4)(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))(webpack@5.92.1) autoprefixer: specifier: ^10.4.19 version: 10.4.20(postcss@8.4.49) @@ -598,6 +595,9 @@ importers: '@types/three': specifier: ^0.172.0 version: 0.172.0 + '@vintl/how-ago': + specifier: ^3.0.1 + version: 3.0.1(@formatjs/intl@2.10.4(typescript@5.5.4)) '@vueuse/core': specifier: ^11.1.0 version: 11.1.0(vue@3.5.13(typescript@5.5.4)) @@ -1648,6 +1648,36 @@ packages: '@floating-ui/utils@0.2.4': resolution: {integrity: sha512-dWO2pw8hhi+WrXq1YJy2yCuWoL20PddgGaqTgVe4cOS9Q6qklXCiA1tJEqX6BEwRNSCP84/afac9hd4MS+zEUA==} + '@formatjs/cli-lib@6.4.2': + resolution: {integrity: sha512-Khj1fVZgubtI6FNGmmQGiEg6Kfc2zBZhsJjkCmoofubbDq2IV4yV89uVpdNyroG8mzHUkXlM8yUh0cWzR4Z/Bg==} + engines: {node: '>= 16'} + peerDependencies: + '@glimmer/env': ^0.1.7 + '@glimmer/reference': ^0.91.1 || ^0.92.0 + '@glimmer/syntax': ^0.92.0 + '@glimmer/validator': ^0.92.0 + '@vue/compiler-core': ^3.4.0 + content-tag: ^2.0.1 + ember-template-recast: ^6.1.4 + vue: ^3.4.0 + peerDependenciesMeta: + '@glimmer/env': + optional: true + '@glimmer/reference': + optional: true + '@glimmer/syntax': + optional: true + '@glimmer/validator': + optional: true + '@vue/compiler-core': + optional: true + content-tag: + optional: true + ember-template-recast: + optional: true + vue: + optional: true + '@formatjs/cli@6.2.12': resolution: {integrity: sha512-bt1NEgkeYN8N9zWcpsPu3fZ57vv+biA+NtIQBlyOZnCp1bcvh+vNTXvmwF4C5qxqDtCylpOIb3yi3Ktgp4v0JQ==} engines: {node: '>= 16'} @@ -1679,24 +1709,61 @@ packages: vue: optional: true + '@formatjs/ecma402-abstract@2.0.0': + resolution: {integrity: sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==} + '@formatjs/ecma402-abstract@2.3.6': resolution: {integrity: sha512-HJnTFeRM2kVFVr5gr5kH1XP6K0JcJtE7Lzvtr3FS/so5f1kpsqqqxy5JF+FRaO6H2qmcMfAUIox7AJteieRtVw==} + '@formatjs/fast-memoize@2.2.0': + resolution: {integrity: sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==} + '@formatjs/fast-memoize@2.2.7': resolution: {integrity: sha512-Yabmi9nSvyOMrlSeGGWDiH7rf3a7sIwplbvo/dlz9WCIjzIQAfy1RMf4S0X3yG724n5Ghu2GmEl5NJIV6O9sZQ==} '@formatjs/icu-messageformat-parser@2.11.4': resolution: {integrity: sha512-7kR78cRrPNB4fjGFZg3Rmj5aah8rQj9KPzuLsmcSn4ipLXQvC04keycTI1F7kJYDwIXtT2+7IDEto842CfZBtw==} + '@formatjs/icu-messageformat-parser@2.7.8': + resolution: {integrity: sha512-nBZJYmhpcSX0WeJ5SDYUkZ42AgR3xiyhNCsQweFx3cz/ULJjym8bHAzWKvG5e2+1XO98dBYC0fWeeAECAVSwLA==} + '@formatjs/icu-skeleton-parser@1.8.16': resolution: {integrity: sha512-H13E9Xl+PxBd8D5/6TVUluSpxGNvFSlN/b3coUp0e0JpuWXXnQDiavIpY3NnvSp4xhEMoXyyBvVfdFX8jglOHQ==} + '@formatjs/icu-skeleton-parser@1.8.2': + resolution: {integrity: sha512-k4ERKgw7aKGWJZgTarIcNEmvyTVD9FYh0mTrrBMHZ1b8hUu6iOJ4SzsZlo3UNAvHYa+PnvntIwRPt1/vy4nA9Q==} + + '@formatjs/intl-displaynames@6.6.8': + resolution: {integrity: sha512-Lgx6n5KxN16B3Pb05z3NLEBQkGoXnGjkTBNCZI+Cn17YjHJ3fhCeEJJUqRlIZmJdmaXQhjcQVDp6WIiNeRYT5g==} + + '@formatjs/intl-listformat@7.5.7': + resolution: {integrity: sha512-MG2TSChQJQT9f7Rlv+eXwUFiG24mKSzmF144PLb8m8OixyXqn4+YWU+5wZracZGCgVTVmx8viCf7IH3QXoiB2g==} + + '@formatjs/intl-localematcher@0.4.2': + resolution: {integrity: sha512-BGdtJFmaNJy5An/Zan4OId/yR9Ih1OojFjcduX/xOvq798OgWSyDtd6Qd5jqJXwJs1ipe4Fxu9+cshic5Ox2tA==} + '@formatjs/intl-localematcher@0.5.4': resolution: {integrity: sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==} '@formatjs/intl-localematcher@0.6.2': resolution: {integrity: sha512-XOMO2Hupl0wdd172Y06h6kLpBz6Dv+J4okPLl4LPtzbr8f66WbIoy4ev98EBuZ6ZK4h5ydTN6XneT4QVpD7cdA==} + '@formatjs/intl@2.10.4': + resolution: {integrity: sha512-56483O+HVcL0c7VucAS2tyH020mt9XTozZO67cwtGg0a7KWDukS/FzW3OnvaHmTHDuYsoPIzO+ZHVfU6fT/bJw==} + peerDependencies: + typescript: ^4.7 || 5 + peerDependenciesMeta: + typescript: + optional: true + + '@formatjs/ts-transformer@3.13.14': + resolution: {integrity: sha512-TP/R54lxQ9Drzzimxrrt6yBT/xBofTgYl5wSTpyKe3Aq9vIBVcFmS6EOqycj0X34KGu3EpDPGO0ng8ZQZGLIFg==} + peerDependencies: + ts-jest: '>=27' + peerDependenciesMeta: + ts-jest: + optional: true + '@humanfs/core@0.19.0': resolution: {integrity: sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==} engines: {node: '>=18.18.0'} @@ -1934,9 +2001,6 @@ packages: '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} @@ -1986,6 +2050,11 @@ packages: '@types/react': '>=16' react: '>=16' + '@miyaneee/rollup-plugin-json5@1.2.0': + resolution: {integrity: sha512-JjTIaXZp9WzhUHpElrqPnl1AzBi/rvRs065F71+aTmlqvTMVkdbjZ8vfFl4nRlgJy+TPBw69ZK4pwFdmOAt4aA==} + peerDependencies: + rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 + '@netlify/functions@2.8.2': resolution: {integrity: sha512-DeoAQh8LuNPvBE4qsKlezjKj0PyXDryOFJfJKo3Z1qZLKzQ21sT314KQKPVjfvw6knqijj+IO+0kHXy/TJiqNA==} engines: {node: '>=14.0.0'} @@ -2958,6 +3027,9 @@ packages: '@types/draco3d@1.4.10': resolution: {integrity: sha512-AX22jp8Y7wwaBgAixaSvkoG4M/+PlAcm3Qs4OW8yT9DM4xUpWKeFhLueTAyZF39pviAdcDdeJoACapiAceqNcw==} + '@types/eslint-scope@3.7.7': + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + '@types/eslint@9.6.1': resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} @@ -2970,6 +3042,9 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/fs-extra@9.0.13': + resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} + '@types/glob@9.0.0': resolution: {integrity: sha512-00UxlRaIUvYm4R4W9WYkN8/J+kV8fmOQ7okeH6YFtGWFMt3odD45tpG5yA5wnL7HE6lLgjaTW5n14ju2hl2NNA==} deprecated: This is a stub types definition. glob provides its own type definitions, so you do not need this installed. @@ -2992,6 +3067,9 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/json-stable-stringify@1.0.36': + resolution: {integrity: sha512-b7bq23s4fgBB76n34m2b3RBf6M369B0Z9uRR8aHTMd8kZISRkmDEpPD8hhpYvDFzr3bJCPES96cm3Q6qRNDbQw==} + '@types/linkify-it@5.0.0': resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} @@ -3211,19 +3289,11 @@ packages: engines: {node: '>=16'} hasBin: true - '@vintl/compact-number@2.0.7': - resolution: {integrity: sha512-7+tPqhgAdE5aZl9YMyS2BbFU8LwDq4V0eE5CQ2m1L8kyiIpZHitNOT1gWdcAbgO8W9kHsmW6YUZhCvkU7zagjg==} - peerDependencies: - '@formatjs/intl': ^2.7.1 - '@vintl/how-ago@3.0.1': resolution: {integrity: sha512-np9L5xGtlV2Qtop15IRTeD8yFLCwHZ2tJx9iJnZSWCs8IlWnV7QjXZji0f7IKsK7a+M2LvmXRVIoYUOIhgh23w==} peerDependencies: '@formatjs/intl': ^2.7.1 - '@vintl/nuxt@1.9.2': - resolution: {integrity: sha512-+2MRe1ikAVMAoCsvkwmm1Z4Ap2GG0+OhVHEJEp324CIGwS98VLM4j8Y4sTItwKBzQAsa3t63AZpbBIp2SsuC3w==} - '@vintl/unplugin@1.5.2': resolution: {integrity: sha512-mNOu/Y0elbATzD852ZhzI0Yw12VFuMnE/P1EbX/N+qLj7F2OWOefCtc88fi9NnaL13wsDSaH9PCuA7VJ/KA5iQ==} engines: {node: '>=16'} @@ -3239,21 +3309,6 @@ packages: webpack: optional: true - '@vintl/unplugin@2.0.0': - resolution: {integrity: sha512-IEaSg0hzQoUBDjNSl9qTBwgC3YmGLAI0AMTYRlqc3u/09mleq3Ls8SZChlGtHl3FSU51uahtNpJ4mUkHhtTOhg==} - engines: {node: '>=16'} - peerDependencies: - rollup: ^4.0.0 - vite: ^5.0.0 - webpack: ^5 - peerDependenciesMeta: - rollup: - optional: true - vite: - optional: true - webpack: - optional: true - '@vintl/vintl@4.4.1': resolution: {integrity: sha512-1fAnK1Ru4GlUH6v2UPqPMFXvatiZuDlgF3GBrUYDBvs4mzg+j3cmH9GgX7DqBtpRLI1iqcoQF10cnJs/e/0Dvw==} peerDependencies: @@ -3624,12 +3679,63 @@ packages: '@vueuse/shared@9.13.0': resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==} + '@webassemblyjs/ast@1.14.1': + resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} + + '@webassemblyjs/floating-point-hex-parser@1.13.2': + resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} + + '@webassemblyjs/helper-api-error@1.13.2': + resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} + + '@webassemblyjs/helper-buffer@1.14.1': + resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} + + '@webassemblyjs/helper-numbers@1.13.2': + resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} + + '@webassemblyjs/helper-wasm-bytecode@1.13.2': + resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} + + '@webassemblyjs/helper-wasm-section@1.14.1': + resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} + + '@webassemblyjs/ieee754@1.13.2': + resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} + + '@webassemblyjs/leb128@1.13.2': + resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} + + '@webassemblyjs/utf8@1.13.2': + resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} + + '@webassemblyjs/wasm-edit@1.14.1': + resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} + + '@webassemblyjs/wasm-gen@1.14.1': + resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} + + '@webassemblyjs/wasm-opt@1.14.1': + resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} + + '@webassemblyjs/wasm-parser@1.14.1': + resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} + + '@webassemblyjs/wast-printer@1.14.1': + resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} + '@webgpu/types@0.1.54': resolution: {integrity: sha512-81oaalC8LFrXjhsczomEQ0u3jG+TqE6V9QHLA8GNZq/Rnot0KDugu3LhSYSlie8tSdooAN1Hov05asrUUp9qgg==} '@xml-tools/parser@1.0.11': resolution: {integrity: sha512-aKqQ077XnR+oQtHJlrAflaZaL7qZsulWc/i/ZEooar5JiWj1eLt0+Wg28cpa+XLney107wXqneC+oG1IZvxkTA==} + '@xtuc/ieee754@1.2.0': + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + '@xtuc/long@4.2.2': + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + '@yr/monotone-cubic-spline@1.0.3': resolution: {integrity: sha512-FQXkOta0XBSUPHndIKON2Y9JeQz5ZeMqLYZVVK93FliNBFm7LNMIZmY6FrMEB9XPcDbE2bekMbZD6kzDkxwYjA==} @@ -3688,6 +3794,24 @@ packages: ajv: optional: true + ajv-formats@2.1.1: + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-keywords@3.5.2: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + + ajv-keywords@5.1.0: + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} @@ -3779,6 +3903,10 @@ packages: resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} engines: {node: '>= 0.4'} + array-find-index@1.0.2: + resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==} + engines: {node: '>=0.10.0'} + array-iterate@2.0.1: resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} @@ -3864,6 +3992,10 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + baseline-browser-mapping@2.9.6: + resolution: {integrity: sha512-v9BVVpOTLB59C9E7aSnmIF8h7qRsFpx+A2nugVMTszEOMcfjlZMsXRm4LF23I3Z9AJxc8ANpIvzbzONoX9VJlg==} + hasBin: true + bcp-47-match@2.0.3: resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==} @@ -3902,6 +4034,11 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + browserslist@4.28.1: + resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + buffer-crc32@1.0.0: resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} engines: {node: '>=8.0.0'} @@ -3944,6 +4081,10 @@ packages: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + call-bound@1.0.4: resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} @@ -3977,6 +4118,9 @@ packages: caniuse-lite@1.0.30001687: resolution: {integrity: sha512-0S/FDhf4ZiqrTUiQ39dKeUjYRjkv7lOZU1Dgif2rIqrTzX/1wV2hfKu9TOm1IHkdSijfLswxTFzl/cvir+SLSQ==} + caniuse-lite@1.0.30001760: + resolution: {integrity: sha512-7AAMPcueWELt1p3mi13HR/LHH0TJLT11cnwDJEs3xA4+CK/PLKeO9Kl1oru24htkyUKtkGCvAx4ohB0Ttry8Dw==} + ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -4037,6 +4181,10 @@ packages: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} + chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} + engines: {node: '>=6.0'} + ci-info@2.0.0: resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} @@ -4414,6 +4562,10 @@ packages: resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} engines: {node: '>=18'} + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} @@ -4560,6 +4712,9 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + electron-to-chromium@1.5.267: + resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==} + electron-to-chromium@1.5.71: resolution: {integrity: sha512-dB68l59BI75W1BUGVTAEJy45CEVuEGy9qPVVQ8pnHyHMn36PLPPoE1mjLH+lo9rKulO3HC2OhbACI/8tCqJBcA==} @@ -4593,6 +4748,10 @@ packages: resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} engines: {node: '>=10.13.0'} + enhanced-resolve@5.18.3: + resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} + engines: {node: '>=10.13.0'} + entities@2.2.0: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} @@ -4613,6 +4772,10 @@ packages: errx@0.1.0: resolution: {integrity: sha512-fZmsRiDNv07K6s2KkKFTiD2aIvECa7++PKyD5NC32tpRw46qZA3sOz+aM+/V9V0GDHxVTKLziveV4JhzBHDp9Q==} + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} @@ -4627,6 +4790,9 @@ packages: es-module-lexer@1.6.0: resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + es-object-atoms@1.1.1: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} @@ -4765,6 +4931,10 @@ packages: peerDependencies: eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + eslint-scope@7.2.2: resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4843,6 +5013,10 @@ packages: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} @@ -5049,6 +5223,10 @@ packages: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + fs-extra@11.2.0: resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} engines: {node: '>=14.14'} @@ -5094,6 +5272,10 @@ packages: resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} engines: {node: '>=18'} + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + get-intrinsic@1.3.0: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} @@ -5149,6 +5331,9 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + glob@10.4.2: resolution: {integrity: sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==} engines: {node: '>=16 || 14 >=14.18'} @@ -5195,6 +5380,9 @@ packages: glsl-tokenizer@2.1.5: resolution: {integrity: sha512-XSZEJ/i4dmz3Pmbnpsy3cKh7cotvFlBiZnDOwnj/05EwNp2XrhQ4XKJxT7/pDt4kp4YcpRSKz8eTV7S+mwV6MA==} + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -5226,6 +5414,17 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + has-symbols@1.1.0: resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} @@ -5457,6 +5656,9 @@ packages: inline-style-parser@0.2.3: resolution: {integrity: sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==} + intl-messageformat@10.5.14: + resolution: {integrity: sha512-IjC6sI0X7YRjjyVH9aUgdftcmZK7WXdHeil4KwbjDnRWjnVitKpAx3rr6t6di1joFp5188VqKcobOPA6mCLG/w==} + intl-messageformat@10.7.18: resolution: {integrity: sha512-m3Ofv/X/tV8Y3tHXLohcuVuhWKo7BBq62cqY15etqmLxg2DZ34AGGgQDeR+SCta2+zICb1NX83af0GJmbQ1++g==} @@ -5608,6 +5810,9 @@ packages: isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -5634,6 +5839,10 @@ packages: resolution: {integrity: sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==} engines: {node: '>=14'} + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + jiti@1.21.6: resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} hasBin: true @@ -5704,6 +5913,10 @@ packages: json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + json-stable-stringify@1.1.1: + resolution: {integrity: sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg==} + engines: {node: '>= 0.4'} + json-to-ast@2.1.0: resolution: {integrity: sha512-W9Lq347r8tA1DfMvAGn9QNcgYm4Wm7Yc+k8e6vezpMnRT+NHbtlxgNBXRVjXe9YM6eTn6+p/MKOlV/aABJcSnQ==} engines: {node: '>= 4'} @@ -5726,6 +5939,9 @@ packages: jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + jsonify@0.0.1: + resolution: {integrity: sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==} + jsonpointer@5.0.1: resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} engines: {node: '>=0.10.0'} @@ -5880,6 +6096,10 @@ packages: resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} engines: {node: '>=6'} + loader-runner@4.3.1: + resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} + engines: {node: '>=6.11.5'} + local-pkg@0.5.1: resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==} engines: {node: '>=14'} @@ -6203,10 +6423,18 @@ packages: resolution: {integrity: sha512-5k547tI4Cy+Lddr/hdjNbBEWBwSl8EBc5aSdKvedav8DReADgWJzcYiktaRIw3GtGC1jjwldXtTzvqJZmtvC7w==} engines: {node: '>= 0.6'} + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + mime-types@2.1.13: resolution: {integrity: sha512-ryBDp1Z/6X90UvjUK3RksH0IBPM137T7cmg4OgD5wQBojlAiUwuok0QeELkim/72EtcYuNlmbkrcGuxj3Kl0YQ==} engines: {node: '>= 0.6'} + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + mime@1.6.0: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} @@ -6319,6 +6547,9 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + neotraverse@0.6.18: resolution: {integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==} engines: {node: '>= 10'} @@ -6378,6 +6609,9 @@ packages: node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + node-releases@2.0.27: + resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} + nopt@5.0.0: resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} engines: {node: '>=6'} @@ -7419,6 +7653,11 @@ packages: rollup: optional: true + rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + rollup@4.28.1: resolution: {integrity: sha512-61fXYl/qNVinKmGSTHAZ6Yy8I3YIJC/r2m9feHo6SwVAVcLT5MPwOUFe7EuURA/4m0NR8lXG4BBXuo/IZEsjMg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -7523,6 +7762,10 @@ packages: set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} @@ -7811,6 +8054,10 @@ packages: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + supports-color@9.4.0: resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} engines: {node: '>=12'} @@ -7882,6 +8129,10 @@ packages: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} + tapable@2.3.0: + resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} + engines: {node: '>=6'} + tar-stream@3.1.7: resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} @@ -7889,6 +8140,22 @@ packages: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} + terser-webpack-plugin@5.3.15: + resolution: {integrity: sha512-PGkOdpRFK+rb1TzVz+msVhw4YMRT9txLF4kRqvJhGhCM324xuR3REBSHALN+l+sAhKUmz0aotnjp5D+P83mLhQ==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + terser@5.42.0: resolution: {integrity: sha512-UYCvU9YQW2f/Vwl+P0GfhxJxbUGLwd+5QrrGgLajzWAtC/23AX0vcise32kkP7Eu0Wu9VlzzHAXkLObgjQfFlQ==} engines: {node: '>=10'} @@ -7986,6 +8253,10 @@ packages: token-stream@1.0.0: resolution: {integrity: sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==} + tosource@2.0.0-alpha.3: + resolution: {integrity: sha512-KAB2lrSS48y91MzFPFuDg4hLbvDiyTjOVgaK7Erw+5AmZXNq4sFRVn8r6yxSLuNs15PaokrDRpS61ERY9uZOug==} + engines: {node: '>=10'} + totalist@3.0.1: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} @@ -8359,6 +8630,12 @@ packages: peerDependencies: browserslist: '>= 4.21.0' + update-browserslist-db@1.2.2: + resolution: {integrity: sha512-E85pfNzMQ9jpKkA7+TJAi4TJN+tBCuWh5rUcS/sv6cFi+1q9LYDwDI5dpUL0u/73EElyQ8d3TEaeW4sPedBqYA==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + uqr@0.1.2: resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==} @@ -8740,6 +9017,12 @@ packages: peerDependencies: eslint: '>=6.0.0' + vue-i18n@9.14.5: + resolution: {integrity: sha512-0jQ9Em3ymWngyiIkj0+c/k7WgaPO+TNzjKSNq9BvBQaKJECqn9cd9fL4tkDhB5G1QBskGl9YxxbDAhgbFtpe2g==} + engines: {node: '>= 16'} + peerDependencies: + vue: ^3.0.0 + vue-inbrowser-compiler-independent-utils@4.71.1: resolution: {integrity: sha512-K3wt3iVmNGaFEOUR4JIThQRWfqokxLfnPslD41FDZB2ajXp789+wCqJyGYlIFsvEQ2P61PInw6/ph5iiqg51gg==} peerDependencies: @@ -8817,6 +9100,10 @@ packages: w3c-keyname@2.2.8: resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} + watchpack@2.4.4: + resolution: {integrity: sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==} + engines: {node: '>=10.13.0'} + web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} @@ -8826,9 +9113,23 @@ packages: webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + webpack-sources@3.3.3: + resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==} + engines: {node: '>=10.13.0'} + webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + webpack@5.92.1: + resolution: {integrity: sha512-JECQ7IwJb+7fgUFBlrJzbyu3GEuNBcdqr1LD7IbSzwkSmIevTm8PF+wej3Oxuz/JFBUZ6O1o43zsPkwm1C4TmA==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -9040,7 +9341,7 @@ snapshots: '@ampproject/remapping@2.3.0': dependencies: - '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 '@antfu/utils@0.7.10': {} @@ -9191,7 +9492,7 @@ snapshots: '@astrojs/yaml2ts@0.2.2': dependencies: - yaml: 2.6.1 + yaml: 2.8.0 '@babel/code-frame@7.26.2': dependencies: @@ -9225,7 +9526,7 @@ snapshots: dependencies: '@babel/parser': 7.26.3 '@babel/types': 7.26.3 - '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.0.2 @@ -9407,10 +9708,6 @@ snapshots: dependencies: vue: 3.5.13(typescript@5.5.4) - '@braw/async-computed@5.0.2(vue@3.5.13(typescript@5.8.3))': - dependencies: - vue: 3.5.13(typescript@5.8.3) - '@cloudflare/kv-asset-handler@0.3.4': dependencies: mime: 3.0.0 @@ -9894,6 +10191,28 @@ snapshots: '@floating-ui/utils@0.2.4': {} + '@formatjs/cli-lib@6.4.2(@vue/compiler-core@3.5.13)(vue@3.5.13(typescript@5.5.4))': + dependencies: + '@formatjs/icu-messageformat-parser': 2.7.8 + '@formatjs/ts-transformer': 3.13.14 + '@types/estree': 1.0.6 + '@types/fs-extra': 9.0.13 + '@types/json-stable-stringify': 1.0.36 + '@types/node': 17.0.45 + chalk: 4.1.2 + commander: 8.3.0 + fast-glob: 3.3.2 + fs-extra: 10.1.0 + json-stable-stringify: 1.1.1 + loud-rejection: 2.2.0 + tslib: 2.6.3 + typescript: 5.8.3 + optionalDependencies: + '@vue/compiler-core': 3.5.13 + vue: 3.5.13(typescript@5.5.4) + transitivePeerDependencies: + - ts-jest + '@formatjs/cli@6.2.12(@vue/compiler-core@3.5.13)(vue@3.5.13(typescript@5.5.4))': optionalDependencies: '@vue/compiler-core': 3.5.13 @@ -9904,6 +10223,11 @@ snapshots: '@vue/compiler-core': 3.5.13 vue: 3.5.13(typescript@5.8.3) + '@formatjs/ecma402-abstract@2.0.0': + dependencies: + '@formatjs/intl-localematcher': 0.5.4 + tslib: 2.6.3 + '@formatjs/ecma402-abstract@2.3.6': dependencies: '@formatjs/fast-memoize': 2.2.7 @@ -9911,6 +10235,10 @@ snapshots: decimal.js: 10.6.0 tslib: 2.8.1 + '@formatjs/fast-memoize@2.2.0': + dependencies: + tslib: 2.6.3 + '@formatjs/fast-memoize@2.2.7': dependencies: tslib: 2.8.1 @@ -9921,11 +10249,38 @@ snapshots: '@formatjs/icu-skeleton-parser': 1.8.16 tslib: 2.8.1 + '@formatjs/icu-messageformat-parser@2.7.8': + dependencies: + '@formatjs/ecma402-abstract': 2.0.0 + '@formatjs/icu-skeleton-parser': 1.8.2 + tslib: 2.6.3 + '@formatjs/icu-skeleton-parser@1.8.16': dependencies: '@formatjs/ecma402-abstract': 2.3.6 tslib: 2.8.1 + '@formatjs/icu-skeleton-parser@1.8.2': + dependencies: + '@formatjs/ecma402-abstract': 2.0.0 + tslib: 2.6.3 + + '@formatjs/intl-displaynames@6.6.8': + dependencies: + '@formatjs/ecma402-abstract': 2.0.0 + '@formatjs/intl-localematcher': 0.5.4 + tslib: 2.6.3 + + '@formatjs/intl-listformat@7.5.7': + dependencies: + '@formatjs/ecma402-abstract': 2.0.0 + '@formatjs/intl-localematcher': 0.5.4 + tslib: 2.6.3 + + '@formatjs/intl-localematcher@0.4.2': + dependencies: + tslib: 2.6.3 + '@formatjs/intl-localematcher@0.5.4': dependencies: tslib: 2.6.3 @@ -9934,6 +10289,28 @@ snapshots: dependencies: tslib: 2.8.1 + '@formatjs/intl@2.10.4(typescript@5.5.4)': + dependencies: + '@formatjs/ecma402-abstract': 2.0.0 + '@formatjs/fast-memoize': 2.2.0 + '@formatjs/icu-messageformat-parser': 2.7.8 + '@formatjs/intl-displaynames': 6.6.8 + '@formatjs/intl-listformat': 7.5.7 + intl-messageformat: 10.5.14 + tslib: 2.6.3 + optionalDependencies: + typescript: 5.5.4 + + '@formatjs/ts-transformer@3.13.14': + dependencies: + '@formatjs/icu-messageformat-parser': 2.7.8 + '@types/json-stable-stringify': 1.0.36 + '@types/node': 17.0.45 + chalk: 4.1.2 + json-stable-stringify: 1.1.1 + tslib: 2.6.3 + typescript: 5.8.3 + '@humanfs/core@0.19.0': {} '@humanfs/core@0.19.1': {} @@ -10121,8 +10498,8 @@ snapshots: '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/remapping@2.3.5': dependencies: @@ -10141,18 +10518,12 @@ snapshots: '@jridgewell/source-map@0.3.6': dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/sourcemap-codec@1.5.0': {} '@jridgewell/sourcemap-codec@1.5.5': {} - '@jridgewell/sourcemap-codec@1.5.5': {} - - '@jridgewell/trace-mapping@0.3.25': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping@0.3.31': dependencies: @@ -10221,7 +10592,7 @@ snapshots: '@mdx-js/mdx@3.1.0(acorn@8.14.0)': dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.8 '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 '@types/mdx': 2.0.13 @@ -10255,6 +10626,12 @@ snapshots: '@types/react': 19.2.7 react: 19.1.1 + '@miyaneee/rollup-plugin-json5@1.2.0(rollup@4.28.1)': + dependencies: + '@rollup/pluginutils': 5.1.4(rollup@4.28.1) + json5: 2.2.3 + rollup: 4.28.1 + '@netlify/functions@2.8.2': dependencies: '@netlify/serverless-functions-api': 1.26.1 @@ -10282,7 +10659,7 @@ snapshots: '@nuxt/devtools-kit@1.6.3(magicast@0.3.5)(rollup@4.28.1)(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))': dependencies: - '@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@4.28.1) + '@nuxt/kit': 3.17.5(magicast@0.3.5) '@nuxt/schema': 3.14.1592(magicast@0.3.5)(rollup@4.28.1) execa: 7.2.0 vite: 5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1) @@ -10395,13 +10772,13 @@ snapshots: ignore: 6.0.2 jiti: 2.4.2 klona: 2.0.6 - knitwork: 1.1.0 - mlly: 1.7.3 + knitwork: 1.3.0 + mlly: 1.8.0 pathe: 1.1.2 pkg-types: 1.2.1 scule: 1.3.0 semver: 7.7.1 - ufo: 1.5.4 + ufo: 1.6.1 unctx: 2.3.1 unimport: 3.14.4(rollup@4.28.1) untyped: 1.5.1 @@ -10436,7 +10813,6 @@ snapshots: untyped: 2.0.0 transitivePeerDependencies: - magicast - optional: true '@nuxt/kit@3.17.5(magicast@0.5.1)': dependencies: @@ -10474,10 +10850,10 @@ snapshots: defu: 6.1.4 hookable: 5.5.3 pathe: 1.1.2 - pkg-types: 1.2.1 + pkg-types: 1.3.1 scule: 1.3.0 std-env: 3.8.0 - ufo: 1.5.4 + ufo: 1.6.1 uncrypto: 0.1.3 unimport: 3.14.4(rollup@4.28.1) untyped: 1.5.1 @@ -10486,9 +10862,9 @@ snapshots: - rollup - supports-color - '@nuxt/telemetry@2.6.0(magicast@0.3.5)(rollup@4.28.1)': + '@nuxt/telemetry@2.6.0(magicast@0.3.5)': dependencies: - '@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@4.28.1) + '@nuxt/kit': 3.17.5(magicast@0.3.5) ci-info: 4.0.0 consola: 3.2.3 create-require: 1.1.1 @@ -10508,8 +10884,6 @@ snapshots: std-env: 3.8.0 transitivePeerDependencies: - magicast - - rollup - - supports-color '@nuxt/vite-builder@3.14.1592(@types/node@20.14.11)(eslint@8.57.1)(lightningcss@1.30.2)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.28.1)(sass@1.77.6)(terser@5.44.1)(typescript@5.5.4)(vue-tsc@2.1.6(typescript@5.5.4))(vue@3.5.13(typescript@5.5.4))': dependencies: @@ -10529,18 +10903,18 @@ snapshots: get-port-please: 3.1.2 h3: 1.13.0 jiti: 2.4.2 - knitwork: 1.1.0 - magic-string: 0.30.14 - mlly: 1.7.3 + knitwork: 1.3.0 + magic-string: 0.30.21 + mlly: 1.8.0 ohash: 1.1.4 pathe: 1.1.2 perfect-debounce: 1.0.0 - pkg-types: 1.2.1 + pkg-types: 1.3.1 postcss: 8.4.49 rollup-plugin-visualizer: 5.12.0(rollup@4.28.1) std-env: 3.8.0 strip-literal: 2.1.1 - ufo: 1.5.4 + ufo: 1.6.1 unenv: 1.10.0 unplugin: 1.16.0 vite: 5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1) @@ -10772,19 +11146,19 @@ snapshots: '@rollup/plugin-commonjs@28.0.1(rollup@4.28.1)': dependencies: - '@rollup/pluginutils': 5.1.3(rollup@4.28.1) + '@rollup/pluginutils': 5.1.4(rollup@4.28.1) commondir: 1.0.1 estree-walker: 2.0.2 - fdir: 6.4.2(picomatch@4.0.2) + fdir: 6.4.2(picomatch@4.0.3) is-reference: 1.2.1 magic-string: 0.30.21 - picomatch: 4.0.2 + picomatch: 4.0.3 optionalDependencies: rollup: 4.28.1 '@rollup/plugin-inject@5.0.5(rollup@4.28.1)': dependencies: - '@rollup/pluginutils': 5.1.3(rollup@4.28.1) + '@rollup/pluginutils': 5.1.4(rollup@4.28.1) estree-walker: 2.0.2 magic-string: 0.30.21 optionalDependencies: @@ -10792,13 +11166,13 @@ snapshots: '@rollup/plugin-json@6.1.0(rollup@4.28.1)': dependencies: - '@rollup/pluginutils': 5.1.3(rollup@4.28.1) + '@rollup/pluginutils': 5.1.4(rollup@4.28.1) optionalDependencies: rollup: 4.28.1 '@rollup/plugin-node-resolve@15.3.0(rollup@4.28.1)': dependencies: - '@rollup/pluginutils': 5.1.3(rollup@4.28.1) + '@rollup/pluginutils': 5.1.4(rollup@4.28.1) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 @@ -10808,7 +11182,7 @@ snapshots: '@rollup/plugin-replace@6.0.1(rollup@4.28.1)': dependencies: - '@rollup/pluginutils': 5.1.3(rollup@4.28.1) + '@rollup/pluginutils': 5.1.4(rollup@4.28.1) magic-string: 0.30.21 optionalDependencies: rollup: 4.28.1 @@ -10829,13 +11203,13 @@ snapshots: optionalDependencies: rollup: 4.28.1 - '@rollup/pluginutils@5.1.3(rollup@4.28.1)': + '@rollup/pluginutils@5.1.3(rollup@3.29.4)': dependencies: '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: - rollup: 4.28.1 + rollup: 3.29.4 '@rollup/pluginutils@5.1.4(rollup@4.28.1)': dependencies: @@ -11446,6 +11820,12 @@ snapshots: '@types/draco3d@1.4.10': {} + '@types/eslint-scope@3.7.7': + dependencies: + '@types/eslint': 9.6.1 + '@types/estree': 1.0.8 + optional: true + '@types/eslint@9.6.1': dependencies: '@types/estree': 1.0.8 @@ -11454,12 +11834,16 @@ snapshots: '@types/estree-jsx@1.0.5': dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.8 '@types/estree@1.0.6': {} '@types/estree@1.0.8': {} + '@types/fs-extra@9.0.13': + dependencies: + '@types/node': 20.14.11 + '@types/glob@9.0.0': dependencies: glob: 10.4.2 @@ -11480,6 +11864,8 @@ snapshots: '@types/json-schema@7.0.15': {} + '@types/json-stable-stringify@1.0.36': {} + '@types/linkify-it@5.0.0': {} '@types/markdown-it@14.1.1': @@ -11689,7 +12075,7 @@ snapshots: fast-glob: 3.3.2 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.7.1 + semver: 7.7.3 ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: typescript: 5.5.4 @@ -11804,9 +12190,9 @@ snapshots: '@vercel/nft@0.27.7(rollup@4.28.1)': dependencies: '@mapbox/node-pre-gyp': 1.0.11 - '@rollup/pluginutils': 5.1.3(rollup@4.28.1) - acorn: 8.14.0 - acorn-import-attributes: 1.9.5(acorn@8.14.0) + '@rollup/pluginutils': 5.1.4(rollup@4.28.1) + acorn: 8.15.0 + acorn-import-attributes: 1.9.5(acorn@8.15.0) async-sema: 3.1.1 bindings: 1.5.0 estree-walker: 2.0.2 @@ -11820,49 +12206,10 @@ snapshots: - rollup - supports-color - '@vintl/compact-number@2.0.7(@formatjs/intl@2.10.4(typescript@5.5.4))': - dependencies: - '@formatjs/ecma402-abstract': 1.18.3 - '@formatjs/intl': 2.10.4(typescript@5.5.4) - '@formatjs/intl-localematcher': 0.5.4 - intl-messageformat: 10.5.14 - '@vintl/how-ago@3.0.1(@formatjs/intl@2.10.4(typescript@5.5.4))': dependencies: '@formatjs/intl': 2.10.4(typescript@5.5.4) - intl-messageformat: 10.5.14 - - '@vintl/nuxt@1.9.2(@vue/compiler-core@3.5.13)(magicast@0.3.5)(rollup@4.28.1)(typescript@5.5.4)(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))(webpack@5.92.1)': - dependencies: - '@formatjs/intl': 2.10.4(typescript@5.5.4) - '@formatjs/intl-localematcher': 0.5.4 - '@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@4.28.1) - '@vintl/unplugin': 2.0.0(@vue/compiler-core@3.5.13)(rollup@4.28.1)(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))(webpack@5.92.1) - '@vintl/vintl': 4.4.1(typescript@5.5.4)(vue@3.5.13(typescript@5.5.4)) - astring: 1.8.6 - consola: 3.2.3 - hash-sum: 2.0.0 - import-meta-resolve: 4.1.0 - pathe: 1.1.2 - picocolors: 1.1.1 - slash: 5.1.0 - ufo: 1.5.4 - transitivePeerDependencies: - - '@glimmer/env' - - '@glimmer/reference' - - '@glimmer/syntax' - - '@glimmer/validator' - - '@vue/compiler-core' - - content-tag - - ember-template-recast - - magicast - - rollup - - supports-color - - ts-jest - - typescript - - vite - - vue - - webpack + intl-messageformat: 10.7.18 '@vintl/unplugin@1.5.2(@vue/compiler-core@3.5.13)(rollup@3.29.4)(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))(webpack@5.92.1(esbuild@0.25.0))': dependencies: @@ -11888,52 +12235,17 @@ snapshots: - ts-jest - vue - '@vintl/unplugin@2.0.0(@vue/compiler-core@3.5.13)(rollup@4.28.1)(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))(webpack@5.92.1)': - dependencies: - '@formatjs/cli-lib': 6.4.2(@vue/compiler-core@3.5.13)(vue@3.5.13(typescript@5.5.4)) - '@formatjs/icu-messageformat-parser': 2.7.8 - '@rollup/pluginutils': 5.1.3(rollup@4.28.1) - glob: 10.4.2 - import-meta-resolve: 4.1.0 - pathe: 1.1.2 - unplugin: 1.16.0 - optionalDependencies: - rollup: 4.28.1 - vite: 5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1) - webpack: 5.92.1 - transitivePeerDependencies: - - '@glimmer/env' - - '@glimmer/reference' - - '@glimmer/syntax' - - '@glimmer/validator' - - '@vue/compiler-core' - - content-tag - - ember-template-recast - - ts-jest - - vue - '@vintl/vintl@4.4.1(typescript@5.5.4)(vue@3.5.13(typescript@5.5.4))': dependencies: '@braw/async-computed': 5.0.2(vue@3.5.13(typescript@5.5.4)) '@formatjs/icu-messageformat-parser': 2.7.8 '@formatjs/intl': 2.10.4(typescript@5.5.4) '@formatjs/intl-localematcher': 0.4.2 - intl-messageformat: 10.5.14 + intl-messageformat: 10.7.18 vue: 3.5.13(typescript@5.5.4) transitivePeerDependencies: - typescript - '@vintl/vintl@4.4.1(typescript@5.8.3)(vue@3.5.13(typescript@5.8.3))': - dependencies: - '@braw/async-computed': 5.0.2(vue@3.5.13(typescript@5.8.3)) - '@formatjs/icu-messageformat-parser': 2.7.8 - '@formatjs/intl': 2.10.4(typescript@5.8.3) - '@formatjs/intl-localematcher': 0.4.2 - intl-messageformat: 10.5.14 - vue: 3.5.13(typescript@5.8.3) - transitivePeerDependencies: - - typescript - '@vitejs/plugin-vue-jsx@4.1.1(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))': dependencies: '@babel/core': 7.26.0 @@ -12274,7 +12586,7 @@ snapshots: '@vue-macros/common@1.15.0(rollup@4.28.1)(vue@3.5.13(typescript@5.5.4))': dependencies: '@babel/types': 7.26.3 - '@rollup/pluginutils': 5.1.3(rollup@4.28.1) + '@rollup/pluginutils': 5.1.4(rollup@4.28.1) '@vue/compiler-sfc': 3.5.13 ast-kit: 1.3.2 local-pkg: 0.5.1 @@ -12493,12 +12805,109 @@ snapshots: - '@vue/composition-api' - vue + '@webassemblyjs/ast@1.14.1': + dependencies: + '@webassemblyjs/helper-numbers': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + optional: true + + '@webassemblyjs/floating-point-hex-parser@1.13.2': + optional: true + + '@webassemblyjs/helper-api-error@1.13.2': + optional: true + + '@webassemblyjs/helper-buffer@1.14.1': + optional: true + + '@webassemblyjs/helper-numbers@1.13.2': + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.13.2 + '@webassemblyjs/helper-api-error': 1.13.2 + '@xtuc/long': 4.2.2 + optional: true + + '@webassemblyjs/helper-wasm-bytecode@1.13.2': + optional: true + + '@webassemblyjs/helper-wasm-section@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/wasm-gen': 1.14.1 + optional: true + + '@webassemblyjs/ieee754@1.13.2': + dependencies: + '@xtuc/ieee754': 1.2.0 + optional: true + + '@webassemblyjs/leb128@1.13.2': + dependencies: + '@xtuc/long': 4.2.2 + optional: true + + '@webassemblyjs/utf8@1.13.2': + optional: true + + '@webassemblyjs/wasm-edit@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/helper-wasm-section': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-opt': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + '@webassemblyjs/wast-printer': 1.14.1 + optional: true + + '@webassemblyjs/wasm-gen@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + optional: true + + '@webassemblyjs/wasm-opt@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + optional: true + + '@webassemblyjs/wasm-parser@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-api-error': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + optional: true + + '@webassemblyjs/wast-printer@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@xtuc/long': 4.2.2 + optional: true + '@webgpu/types@0.1.54': {} '@xml-tools/parser@1.0.11': dependencies: chevrotain: 7.1.1 + '@xtuc/ieee754@1.2.0': + optional: true + + '@xtuc/long@4.2.2': + optional: true + '@yr/monotone-cubic-spline@1.0.3': {} abbrev@1.1.1: {} @@ -12511,9 +12920,9 @@ snapshots: ace-builds@1.36.2: {} - acorn-import-attributes@1.9.5(acorn@8.14.0): + acorn-import-attributes@1.9.5(acorn@8.15.0): dependencies: - acorn: 8.14.0 + acorn: 8.15.0 acorn-jsx@5.3.2(acorn@8.14.0): dependencies: @@ -12541,6 +12950,22 @@ snapshots: optionalDependencies: ajv: 8.17.1 + ajv-formats@2.1.1(ajv@8.17.1): + optionalDependencies: + ajv: 8.17.1 + optional: true + + ajv-keywords@3.5.2(ajv@6.12.6): + dependencies: + ajv: 6.12.6 + optional: true + + ajv-keywords@5.1.0(ajv@8.17.1): + dependencies: + ajv: 8.17.1 + fast-deep-equal: 3.1.3 + optional: true + ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 @@ -12643,6 +13068,8 @@ snapshots: aria-query@5.3.2: {} + array-find-index@1.0.2: {} + array-iterate@2.0.1: {} asap@2.0.6: {} @@ -12810,6 +13237,9 @@ snapshots: base64-js@1.5.1: {} + baseline-browser-mapping@2.9.6: + optional: true + bcp-47-match@2.0.3: {} bcp-47@2.1.0: @@ -12859,6 +13289,15 @@ snapshots: node-releases: 2.0.18 update-browserslist-db: 1.1.1(browserslist@4.24.2) + browserslist@4.28.1: + dependencies: + baseline-browser-mapping: 2.9.6 + caniuse-lite: 1.0.30001760 + electron-to-chromium: 1.5.267 + node-releases: 2.0.27 + update-browserslist-db: 1.2.2(browserslist@4.28.1) + optional: true + buffer-crc32@1.0.0: {} buffer-from@1.1.2: {} @@ -12882,11 +13321,11 @@ snapshots: dotenv: 16.4.5 giget: 1.2.3 jiti: 2.4.2 - mlly: 1.7.3 + mlly: 1.8.0 ohash: 1.1.4 pathe: 1.1.2 perfect-debounce: 1.0.0 - pkg-types: 1.2.1 + pkg-types: 1.3.1 rc9: 2.1.2 optionalDependencies: magicast: 0.3.5 @@ -12907,7 +13346,6 @@ snapshots: rc9: 2.1.2 optionalDependencies: magicast: 0.3.5 - optional: true c12@3.3.2(magicast@0.5.1): dependencies: @@ -12934,6 +13372,14 @@ snapshots: es-errors: 1.3.0 function-bind: 1.1.2 + call-bind@1.0.7: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + call-bound@1.0.4: dependencies: call-bind-apply-helpers: 1.0.2 @@ -12965,6 +13411,9 @@ snapshots: caniuse-lite@1.0.30001687: {} + caniuse-lite@1.0.30001760: + optional: true + ccount@2.0.1: {} chai@5.3.3: @@ -13026,6 +13475,9 @@ snapshots: chownr@2.0.0: {} + chrome-trace-event@1.0.4: + optional: true + ci-info@2.0.0: {} ci-info@4.0.0: {} @@ -13034,7 +13486,7 @@ snapshots: citty@0.1.6: dependencies: - consola: 3.2.3 + consola: 3.4.2 clean-css@5.3.3: dependencies: @@ -13335,6 +13787,12 @@ snapshots: bundle-name: 4.1.0 default-browser-id: 5.0.0 + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.2.0 + define-lazy-prop@2.0.0: {} define-lazy-prop@3.0.0: {} @@ -13443,10 +13901,13 @@ snapshots: '@one-ini/wasm': 0.1.1 commander: 10.0.1 minimatch: 9.0.1 - semver: 7.7.2 + semver: 7.7.3 ee-first@1.1.1: {} + electron-to-chromium@1.5.267: + optional: true + electron-to-chromium@1.5.71: {} emmet@2.4.7: @@ -13494,6 +13955,10 @@ snapshots: errx@0.1.0: {} + es-define-property@1.0.0: + dependencies: + get-intrinsic: 1.2.4 + es-define-property@1.0.1: {} es-errors@1.3.0: {} @@ -13764,6 +14229,12 @@ snapshots: transitivePeerDependencies: - supports-color + eslint-scope@5.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + optional: true + eslint-scope@7.2.2: dependencies: esrecurse: 4.3.0 @@ -13942,6 +14413,9 @@ snapshots: dependencies: estraverse: 5.3.0 + estraverse@4.3.0: + optional: true + estraverse@5.3.0: {} estree-util-attach-comments@3.0.0: @@ -13959,7 +14433,7 @@ snapshots: estree-util-scope@1.0.0: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.8 devlop: 1.1.0 estree-util-to-js@2.0.0: @@ -13977,7 +14451,7 @@ snapshots: estree-walker@3.0.3: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.8 esutils@2.0.3: {} @@ -14043,9 +14517,9 @@ snapshots: externality@1.0.2: dependencies: enhanced-resolve: 5.17.1 - mlly: 1.7.3 + mlly: 1.8.0 pathe: 1.1.2 - ufo: 1.5.4 + ufo: 1.6.1 fast-deep-equal@3.1.3: {} @@ -14077,6 +14551,10 @@ snapshots: optionalDependencies: picomatch: 4.0.2 + fdir@6.4.2(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 + fdir@6.4.3(picomatch@4.0.2): optionalDependencies: picomatch: 4.0.2 @@ -14162,6 +14640,12 @@ snapshots: fresh@0.5.2: {} + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + fs-extra@11.2.0: dependencies: graceful-fs: 4.2.11 @@ -14202,6 +14686,14 @@ snapshots: get-east-asian-width@1.2.0: {} + get-intrinsic@1.2.4: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + get-intrinsic@1.3.0: dependencies: call-bind-apply-helpers: 1.0.2 @@ -14237,9 +14729,9 @@ snapshots: giget@1.2.3: dependencies: citty: 0.1.6 - consola: 3.2.3 + consola: 3.4.2 defu: 6.1.4 - node-fetch-native: 1.6.6 + node-fetch-native: 1.6.7 nypm: 0.3.12 ohash: 1.1.4 pathe: 1.1.2 @@ -14275,6 +14767,9 @@ snapshots: dependencies: is-glob: 4.0.3 + glob-to-regexp@0.4.1: + optional: true + glob@10.4.2: dependencies: foreground-child: 3.2.1 @@ -14326,6 +14821,10 @@ snapshots: dependencies: through2: 0.6.5 + gopd@1.0.1: + dependencies: + get-intrinsic: 1.3.0 + gopd@1.2.0: {} graceful-fs@4.2.11: {} @@ -14354,7 +14853,7 @@ snapshots: iron-webcrypto: 1.2.1 ohash: 1.1.4 radix3: 1.1.2 - ufo: 1.5.4 + ufo: 1.6.1 uncrypto: 0.1.3 unenv: 1.10.0 @@ -14367,11 +14866,19 @@ snapshots: iron-webcrypto: 1.2.1 node-mock-http: 1.0.0 radix3: 1.1.2 - ufo: 1.5.4 + ufo: 1.6.1 uncrypto: 0.1.3 has-flag@4.0.0: {} + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.0 + + has-proto@1.0.3: {} + + has-symbols@1.0.3: {} + has-symbols@1.1.0: {} has-tostringtag@1.0.2: @@ -14481,7 +14988,7 @@ snapshots: hast-util-to-estree@3.1.0: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.8 '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 @@ -14530,7 +15037,7 @@ snapshots: hast-util-to-jsx-runtime@2.3.0: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.8 '@types/hast': 3.0.4 '@types/unist': 3.0.3 comma-separated-tokens: 2.0.3 @@ -14698,8 +15205,8 @@ snapshots: impound@0.2.0(rollup@4.28.1): dependencies: - '@rollup/pluginutils': 5.1.3(rollup@4.28.1) - mlly: 1.7.3 + '@rollup/pluginutils': 5.1.4(rollup@4.28.1) + mlly: 1.8.0 pathe: 1.1.2 unenv: 1.10.0 unplugin: 1.16.0 @@ -14727,6 +15234,13 @@ snapshots: inline-style-parser@0.2.3: {} + intl-messageformat@10.5.14: + dependencies: + '@formatjs/ecma402-abstract': 2.0.0 + '@formatjs/fast-memoize': 2.2.0 + '@formatjs/icu-messageformat-parser': 2.7.8 + tslib: 2.6.3 + intl-messageformat@10.7.18: dependencies: '@formatjs/ecma402-abstract': 2.3.6 @@ -14825,7 +15339,7 @@ snapshots: is-reference@1.2.1: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.8 is-regex@1.2.1: dependencies: @@ -14862,6 +15376,8 @@ snapshots: isarray@1.0.0: {} + isarray@2.0.5: {} + isexe@2.0.0: {} iso-3166-2@1.0.0: {} @@ -14893,11 +15409,17 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 + jest-worker@27.5.1: + dependencies: + '@types/node': 20.14.11 + merge-stream: 2.0.0 + supports-color: 8.1.1 + optional: true + jiti@1.21.6: {} jiti@2.4.2: {} - jiti@2.6.1: {} jiti@2.6.1: {} js-beautify@1.15.4: @@ -14943,6 +15465,13 @@ snapshots: json-stable-stringify-without-jsonify@1.0.1: {} + json-stable-stringify@1.1.1: + dependencies: + call-bind: 1.0.7 + isarray: 2.0.5 + jsonify: 0.0.1 + object-keys: 1.1.1 + json-to-ast@2.1.0: dependencies: code-error-fragment: 0.0.230 @@ -14967,6 +15496,8 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 + jsonify@0.0.1: {} + jsonpointer@5.0.1: {} jstransformer@1.0.0: @@ -15096,8 +15627,8 @@ snapshots: get-port-please: 3.1.2 h3: 1.15.1 http-shutdown: 1.2.2 - jiti: 2.4.2 - mlly: 1.7.3 + jiti: 2.6.1 + mlly: 1.8.0 node-forge: 1.3.1 pathe: 1.1.2 std-env: 3.10.0 @@ -15112,6 +15643,9 @@ snapshots: pify: 4.0.1 strip-bom: 3.0.0 + loader-runner@4.3.1: + optional: true + local-pkg@0.5.1: dependencies: mlly: 1.7.3 @@ -15173,11 +15707,10 @@ snapshots: magic-string-ast@0.6.2: dependencies: magic-string: 0.30.21 - magic-string: 0.30.21 magic-string@0.30.14: dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 magic-string@0.30.17: dependencies: @@ -15729,10 +16262,18 @@ snapshots: mime-db@1.25.0: {} + mime-db@1.52.0: + optional: true + mime-types@2.1.13: dependencies: mime-db: 1.25.0 + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + optional: true + mime@1.6.0: {} mime@3.0.0: {} @@ -15780,10 +16321,10 @@ snapshots: mlly@1.7.3: dependencies: - acorn: 8.14.0 + acorn: 8.15.0 pathe: 1.1.2 - pkg-types: 1.2.1 - ufo: 1.5.4 + pkg-types: 1.3.1 + ufo: 1.6.1 mlly@1.8.0: dependencies: @@ -15818,6 +16359,9 @@ snapshots: natural-compare@1.4.0: {} + neo-async@2.6.2: + optional: true + neotraverse@0.6.18: {} nice-try@1.0.5: {} @@ -15833,7 +16377,7 @@ snapshots: '@rollup/plugin-node-resolve': 15.3.0(rollup@4.28.1) '@rollup/plugin-replace': 6.0.1(rollup@4.28.1) '@rollup/plugin-terser': 0.4.4(rollup@4.28.1) - '@rollup/pluginutils': 5.1.3(rollup@4.28.1) + '@rollup/pluginutils': 5.1.4(rollup@4.28.1) '@types/http-proxy': 1.17.15 '@vercel/nft': 0.27.7(rollup@4.28.1) archiver: 7.0.1 @@ -15862,19 +16406,19 @@ snapshots: ioredis: 5.4.1 jiti: 2.4.2 klona: 2.0.6 - knitwork: 1.1.0 + knitwork: 1.3.0 listhen: 1.9.0 - magic-string: 0.30.14 + magic-string: 0.30.21 magicast: 0.3.5 mime: 4.0.4 - mlly: 1.7.3 + mlly: 1.8.0 node-fetch-native: 1.6.4 ofetch: 1.4.1 ohash: 1.1.4 openapi-typescript: 7.4.4(typescript@5.5.4) pathe: 1.1.2 perfect-debounce: 1.0.0 - pkg-types: 1.2.1 + pkg-types: 1.3.1 pretty-bytes: 6.1.1 radix3: 1.1.2 rollup: 4.28.1 @@ -15884,7 +16428,7 @@ snapshots: serve-placeholder: 2.0.2 serve-static: 1.16.2 std-env: 3.8.0 - ufo: 1.5.4 + ufo: 1.6.1 uncrypto: 0.1.3 unctx: 2.3.1 unenv: 1.10.0 @@ -15945,6 +16489,9 @@ snapshots: node-releases@2.0.18: {} + node-releases@2.0.27: + optional: true + nopt@5.0.0: dependencies: abbrev: 1.1.1 @@ -15997,7 +16544,7 @@ snapshots: '@nuxt/devtools': 1.6.3(rollup@4.28.1)(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4)) '@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@4.28.1) '@nuxt/schema': 3.14.1592(magicast@0.3.5)(rollup@4.28.1) - '@nuxt/telemetry': 2.6.0(magicast@0.3.5)(rollup@4.28.1) + '@nuxt/telemetry': 2.6.0(magicast@0.3.5) '@nuxt/vite-builder': 3.14.1592(@types/node@20.14.11)(eslint@8.57.1)(lightningcss@1.30.2)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.28.1)(sass@1.77.6)(terser@5.44.1)(typescript@5.5.4)(vue-tsc@2.1.6(typescript@5.5.4))(vue@3.5.13(typescript@5.5.4)) '@unhead/dom': 1.11.13 '@unhead/shared': 1.11.13 @@ -16110,8 +16657,8 @@ snapshots: consola: 3.2.3 execa: 8.0.1 pathe: 1.1.2 - pkg-types: 1.2.1 - ufo: 1.5.4 + pkg-types: 1.3.1 + ufo: 1.6.1 nypm@0.4.1: dependencies: @@ -16120,7 +16667,7 @@ snapshots: pathe: 1.1.2 pkg-types: 1.2.1 tinyexec: 0.3.1 - ufo: 1.5.4 + ufo: 1.6.1 nypm@0.6.2: dependencies: @@ -16371,7 +16918,6 @@ snapshots: picomatch@4.0.2: {} - picomatch@4.0.3: {} picomatch@4.0.3: {} pify@2.3.0: {} @@ -16409,7 +16955,7 @@ snapshots: pkg-types@1.2.1: dependencies: confbox: 0.1.8 - mlly: 1.7.3 + mlly: 1.8.0 pathe: 1.1.2 pkg-types@1.3.1: @@ -16423,7 +16969,6 @@ snapshots: confbox: 0.2.2 exsolve: 1.0.8 pathe: 2.0.3 - optional: true playwright-core@1.57.0: {} @@ -16887,7 +17432,7 @@ snapshots: recma-build-jsx@1.0.0: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.8 estree-util-build-jsx: 3.0.1 vfile: 6.0.3 @@ -16903,14 +17448,14 @@ snapshots: recma-parse@1.0.0: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.8 esast-util-from-js: 2.0.1 unified: 11.0.5 vfile: 6.0.3 recma-stringify@1.0.0: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.8 estree-util-to-js: 2.0.0 unified: 11.0.5 vfile: 6.0.3 @@ -16993,7 +17538,7 @@ snapshots: rehype-recma@1.0.0: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.8 '@types/hast': 3.0.4 hast-util-to-estree: 3.1.0 transitivePeerDependencies: @@ -17158,6 +17703,11 @@ snapshots: optionalDependencies: rollup: 4.28.1 + rollup@3.29.4: + optionalDependencies: + fsevents: 2.3.3 + optional: true + rollup@4.28.1: dependencies: '@types/estree': 1.0.6 @@ -17275,7 +17825,6 @@ snapshots: semver@7.7.2: {} - semver@7.7.3: {} semver@7.7.3: {} send@0.19.0: @@ -17315,6 +17864,15 @@ snapshots: set-blocking@2.0.0: {} + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + setimmediate@1.0.5: {} setprototypeof@1.2.0: {} @@ -17509,7 +18067,6 @@ snapshots: statuses@2.0.1: {} - std-env@3.10.0: {} std-env@3.10.0: {} std-env@3.8.0: {} @@ -17650,6 +18207,11 @@ snapshots: dependencies: has-flag: 4.0.0 + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + optional: true + supports-color@9.4.0: {} supports-preserve-symlinks-flag@1.0.0: {} @@ -17768,16 +18330,6 @@ snapshots: esbuild: 0.25.0 optional: true - terser-webpack-plugin@5.3.15(webpack@5.92.1): - dependencies: - '@jridgewell/trace-mapping': 0.3.31 - jest-worker: 27.5.1 - schema-utils: 4.3.3 - serialize-javascript: 6.0.2 - terser: 5.44.1 - webpack: 5.92.1 - optional: true - terser@5.42.0: dependencies: '@jridgewell/source-map': 0.3.6 @@ -17842,7 +18394,6 @@ snapshots: tinyexec@0.3.2: {} - tinyexec@1.0.2: {} tinyexec@1.0.2: {} tinyglobby@0.2.10: @@ -17874,6 +18425,8 @@ snapshots: token-stream@1.0.0: {} + tosource@2.0.0-alpha.3: {} + totalist@3.0.1: {} tr46@0.0.3: {} @@ -17955,7 +18508,7 @@ snapshots: typescript-auto-import-cache@0.3.3: dependencies: - semver: 7.7.2 + semver: 7.7.3 typescript-eslint@8.38.0(eslint@9.32.0(jiti@2.6.1))(typescript@5.8.3): dependencies: @@ -17988,9 +18541,9 @@ snapshots: unctx@2.3.1: dependencies: - acorn: 8.14.0 + acorn: 8.15.0 estree-walker: 3.0.3 - magic-string: 0.30.17 + magic-string: 0.30.21 unplugin: 1.16.0 unctx@2.4.1: @@ -18034,13 +18587,13 @@ snapshots: unimport@3.14.4(rollup@4.28.1): dependencies: - '@rollup/pluginutils': 5.1.3(rollup@4.28.1) + '@rollup/pluginutils': 5.1.4(rollup@4.28.1) acorn: 8.14.0 escape-string-regexp: 5.0.0 estree-walker: 3.0.3 local-pkg: 0.5.1 - magic-string: 0.30.14 - mlly: 1.7.3 + magic-string: 0.30.21 + mlly: 1.8.0 pathe: 1.1.2 picomatch: 4.0.2 pkg-types: 1.2.1 @@ -18124,15 +18677,15 @@ snapshots: unplugin-vue-router@0.10.9(rollup@4.28.1)(vue-router@4.5.0(vue@3.5.13(typescript@5.5.4)))(vue@3.5.13(typescript@5.5.4)): dependencies: '@babel/types': 7.26.3 - '@rollup/pluginutils': 5.1.3(rollup@4.28.1) + '@rollup/pluginutils': 5.1.4(rollup@4.28.1) '@vue-macros/common': 1.15.0(rollup@4.28.1)(vue@3.5.13(typescript@5.5.4)) ast-walker-scope: 0.6.2 chokidar: 3.6.0 fast-glob: 3.3.2 json5: 2.2.3 local-pkg: 0.5.1 - magic-string: 0.30.14 - mlly: 1.7.3 + magic-string: 0.30.21 + mlly: 1.8.0 pathe: 1.1.2 scule: 1.3.0 unplugin: 2.0.0-beta.1 @@ -18150,7 +18703,7 @@ snapshots: unplugin@2.0.0-beta.1: dependencies: - acorn: 8.14.0 + acorn: 8.15.0 webpack-virtual-modules: 0.6.2 unplugin@2.3.11: @@ -18171,7 +18724,7 @@ snapshots: lru-cache: 10.4.3 node-fetch-native: 1.6.4 ofetch: 1.4.1 - ufo: 1.5.4 + ufo: 1.6.1 optionalDependencies: ioredis: 5.4.1 @@ -18216,11 +18769,11 @@ snapshots: unwasm@0.3.9: dependencies: - knitwork: 1.1.0 + knitwork: 1.3.0 magic-string: 0.30.21 - mlly: 1.7.3 + mlly: 1.8.0 pathe: 1.1.2 - pkg-types: 1.2.1 + pkg-types: 1.3.1 unplugin: 1.16.0 update-browserslist-db@1.1.1(browserslist@4.24.2): @@ -18229,6 +18782,13 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 + update-browserslist-db@1.2.2(browserslist@4.28.1): + dependencies: + browserslist: 4.28.1 + escalade: 3.2.0 + picocolors: 1.1.1 + optional: true + uqr@0.1.2: {} uri-js-replace@1.0.1: {} @@ -18315,7 +18875,7 @@ snapshots: vite-plugin-inspect@0.8.9(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@4.28.1))(rollup@4.28.1)(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1)): dependencies: '@antfu/utils': 0.7.10 - '@rollup/pluginutils': 5.1.3(rollup@4.28.1) + '@rollup/pluginutils': 5.1.4(rollup@4.28.1) debug: 4.4.0(supports-color@9.4.0) error-stack-parser-es: 0.1.5 fs-extra: 11.2.0 @@ -18340,7 +18900,7 @@ snapshots: '@vue/babel-plugin-jsx': 1.2.5(@babel/core@7.26.0) '@vue/compiler-dom': 3.5.13 kolorist: 1.8.0 - magic-string: 0.30.14 + magic-string: 0.30.21 vite: 5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1) transitivePeerDependencies: - supports-color @@ -18473,7 +19033,7 @@ snapshots: volar-service-typescript@0.0.62(@volar/language-service@2.4.11): dependencies: path-browserify: 1.0.1 - semver: 7.7.1 + semver: 7.7.3 typescript-auto-import-cache: 0.3.3 vscode-languageserver-textdocument: 1.0.12 vscode-nls: 5.2.0 @@ -18552,7 +19112,7 @@ snapshots: vue-bundle-renderer@2.1.1: dependencies: - ufo: 1.5.4 + ufo: 1.6.1 vue-component-meta@2.2.12(typescript@5.8.3): dependencies: @@ -18621,6 +19181,13 @@ snapshots: transitivePeerDependencies: - supports-color + vue-i18n@9.14.5(vue@3.5.13(typescript@5.5.4)): + dependencies: + '@intlify/core-base': 9.14.5 + '@intlify/shared': 9.14.5 + '@vue/devtools-api': 6.6.4 + vue: 3.5.13(typescript@5.5.4) + vue-inbrowser-compiler-independent-utils@4.71.1(vue@3.5.13(typescript@5.5.4)): dependencies: vue: 3.5.13(typescript@5.5.4) @@ -18706,46 +19273,23 @@ snapshots: w3c-keyname@2.2.8: {} + watchpack@2.4.4: + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + optional: true + web-namespaces@2.0.1: {} web-vitals@4.2.3: {} webidl-conversions@3.0.1: {} - webpack-virtual-modules@0.6.2: {} - - webpack@5.92.1: - dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.8 - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/wasm-edit': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.15.0 - acorn-import-attributes: 1.9.5(acorn@8.15.0) - browserslist: 4.28.1 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.3 - es-module-lexer: 1.7.0 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.1 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.3.0 - terser-webpack-plugin: 5.3.15(webpack@5.92.1) - watchpack: 2.4.4 - webpack-sources: 3.3.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js + webpack-sources@3.3.3: optional: true + webpack-virtual-modules@0.6.2: {} + webpack@5.92.1(esbuild@0.25.0): dependencies: '@types/eslint-scope': 3.7.7 From 6840f1c1d7901076f2c6b2f67f02c6ab27f4abda Mon Sep 17 00:00:00 2001 From: tdgao Date: Mon, 29 Dec 2025 11:31:37 -0800 Subject: [PATCH 20/21] remove old vintl --- packages/ui/.storybook/main.ts | 1 - packages/ui/.storybook/preview.ts | 34 ++- packages/ui/package.json | 2 - pnpm-lock.yaml | 365 ++---------------------------- 4 files changed, 43 insertions(+), 359 deletions(-) diff --git a/packages/ui/.storybook/main.ts b/packages/ui/.storybook/main.ts index 97cb2d5f75..e8785224b6 100644 --- a/packages/ui/.storybook/main.ts +++ b/packages/ui/.storybook/main.ts @@ -8,7 +8,6 @@ const config: StorybookConfig = { stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], addons: [ '@storybook/addon-themes', - '@chromatic-com/storybook', '@storybook/addon-vitest', '@storybook/addon-a11y', '@storybook/addon-docs', diff --git a/packages/ui/.storybook/preview.ts b/packages/ui/.storybook/preview.ts index f3867b12b5..dd5ac0a7e2 100644 --- a/packages/ui/.storybook/preview.ts +++ b/packages/ui/.storybook/preview.ts @@ -3,19 +3,33 @@ import '../src/styles/tailwind.css' import { withThemeByClassName } from '@storybook/addon-themes' import type { Preview } from '@storybook/vue3-vite' import { setup } from '@storybook/vue3-vite' -import { createPlugin } from '@vintl/vintl/plugin' +import { createI18n } from 'vue-i18n' -// Set up VIntl for Storybook - provides useVIntl() context for components -const vintlPlugin = createPlugin({ - controllerOpts: { - defaultLocale: 'en-US', - locale: 'en-US', - }, - globalMixin: false, +import { + buildLocaleMessages, + createMessageCompiler, + type CrowdinMessages, +} from '../src/composables/i18n' + +// Load locale messages from the UI package's locales +// @ts-ignore +const localeModules = import.meta.glob('../src/locales/*/index.json', { + eager: true, +}) as Record + +// Set up vue-i18n for Storybook - provides useVIntl() context for components +const i18n = createI18n({ + legacy: false, + locale: 'en-US', + fallbackLocale: 'en-US', + messageCompiler: createMessageCompiler(), + missingWarn: false, + fallbackWarn: false, + messages: buildLocaleMessages(localeModules), }) setup((app) => { - app.use(vintlPlugin) + app.use(i18n) // Create teleport target for components that use if (typeof document !== 'undefined' && !document.getElementById('teleports')) { @@ -35,7 +49,7 @@ const preview: Preview = { }, }, decorators: [ - withThemeByClassName({ + withThemeByClassName({ themes: { light: 'light-mode', dark: 'dark-mode', diff --git a/packages/ui/package.json b/packages/ui/package.json index 25feada97e..3a6477c2c2 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -35,8 +35,6 @@ "@storybook/vue3-vite": "^10.1.10", "@stripe/stripe-js": "^7.3.1", "@tailwindcss/vite": "^4.1.18", - "@vintl/unplugin": "^1.5.1", - "@vintl/vintl": "^4.4.1", "@vitejs/plugin-vue": "^5.2.1", "@vitest/browser-playwright": "^4.0.16", "@vitest/coverage-v8": "^4.0.16", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 22db0b40ab..a630240fc5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -661,7 +661,7 @@ importers: version: 10.1.10(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1)) '@storybook/addon-docs': specifier: ^10.1.10 - version: 10.1.10(@types/react@19.2.7)(esbuild@0.25.0)(rollup@3.29.4)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(webpack@5.92.1(esbuild@0.25.0)) + version: 10.1.10(@types/react@19.2.7)(esbuild@0.25.0)(rollup@4.34.9)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(webpack@5.92.1(esbuild@0.25.0)) '@storybook/addon-onboarding': specifier: ^10.1.10 version: 10.1.10(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1)) @@ -673,22 +673,16 @@ importers: version: 10.1.10(@vitest/browser-playwright@4.0.16)(@vitest/browser@4.0.16(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vitest@4.0.16))(@vitest/runner@4.0.16)(react-dom@19.2.3(react@19.1.1))(react@19.1.1)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vitest@4.0.16) '@storybook/builder-vite': specifier: ^10.1.10 - version: 10.1.10(esbuild@0.25.0)(rollup@3.29.4)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(webpack@5.92.1(esbuild@0.25.0)) + version: 10.1.10(esbuild@0.25.0)(rollup@4.34.9)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(webpack@5.92.1(esbuild@0.25.0)) '@storybook/vue3-vite': specifier: ^10.1.10 - version: 10.1.10(esbuild@0.25.0)(rollup@3.29.4)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))(webpack@5.92.1(esbuild@0.25.0)) + version: 10.1.10(esbuild@0.25.0)(rollup@4.34.9)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))(webpack@5.92.1(esbuild@0.25.0)) '@stripe/stripe-js': specifier: ^7.3.1 version: 7.3.1 '@tailwindcss/vite': specifier: ^4.1.18 version: 4.1.18(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1)) - '@vintl/unplugin': - specifier: ^1.5.1 - version: 1.5.2(@vue/compiler-core@3.5.13)(rollup@3.29.4)(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))(webpack@5.92.1(esbuild@0.25.0)) - '@vintl/vintl': - specifier: ^4.4.1 - version: 4.4.1(typescript@5.5.4)(vue@3.5.13(typescript@5.5.4)) '@vitejs/plugin-vue': specifier: ^5.2.1 version: 5.2.1(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4)) @@ -1030,11 +1024,6 @@ packages: resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} engines: {node: '>=18'} - '@braw/async-computed@5.0.2': - resolution: {integrity: sha512-fThqjZBTPvWtbD90Nkd4IldN7dpCkxfvthuk12ZBjkPPjh+wuRGi3HYiUqUSAOOVS0NHSxpsQFfg+qO275FtYA==} - peerDependencies: - vue: ^2.7 || ^3.2.45 - '@cloudflare/kv-asset-handler@0.3.4': resolution: {integrity: sha512-YLPHc8yASwjNkmcDMQMY35yiWjoKAKnhUbPRszBRS0YgH+IXtsMp61j+yTcnCE3oO2DgP0U3iejLC8FTtKDC8Q==} engines: {node: '>=16.13'} @@ -1648,36 +1637,6 @@ packages: '@floating-ui/utils@0.2.4': resolution: {integrity: sha512-dWO2pw8hhi+WrXq1YJy2yCuWoL20PddgGaqTgVe4cOS9Q6qklXCiA1tJEqX6BEwRNSCP84/afac9hd4MS+zEUA==} - '@formatjs/cli-lib@6.4.2': - resolution: {integrity: sha512-Khj1fVZgubtI6FNGmmQGiEg6Kfc2zBZhsJjkCmoofubbDq2IV4yV89uVpdNyroG8mzHUkXlM8yUh0cWzR4Z/Bg==} - engines: {node: '>= 16'} - peerDependencies: - '@glimmer/env': ^0.1.7 - '@glimmer/reference': ^0.91.1 || ^0.92.0 - '@glimmer/syntax': ^0.92.0 - '@glimmer/validator': ^0.92.0 - '@vue/compiler-core': ^3.4.0 - content-tag: ^2.0.1 - ember-template-recast: ^6.1.4 - vue: ^3.4.0 - peerDependenciesMeta: - '@glimmer/env': - optional: true - '@glimmer/reference': - optional: true - '@glimmer/syntax': - optional: true - '@glimmer/validator': - optional: true - '@vue/compiler-core': - optional: true - content-tag: - optional: true - ember-template-recast: - optional: true - vue: - optional: true - '@formatjs/cli@6.2.12': resolution: {integrity: sha512-bt1NEgkeYN8N9zWcpsPu3fZ57vv+biA+NtIQBlyOZnCp1bcvh+vNTXvmwF4C5qxqDtCylpOIb3yi3Ktgp4v0JQ==} engines: {node: '>= 16'} @@ -1739,9 +1698,6 @@ packages: '@formatjs/intl-listformat@7.5.7': resolution: {integrity: sha512-MG2TSChQJQT9f7Rlv+eXwUFiG24mKSzmF144PLb8m8OixyXqn4+YWU+5wZracZGCgVTVmx8viCf7IH3QXoiB2g==} - '@formatjs/intl-localematcher@0.4.2': - resolution: {integrity: sha512-BGdtJFmaNJy5An/Zan4OId/yR9Ih1OojFjcduX/xOvq798OgWSyDtd6Qd5jqJXwJs1ipe4Fxu9+cshic5Ox2tA==} - '@formatjs/intl-localematcher@0.5.4': resolution: {integrity: sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==} @@ -1756,14 +1712,6 @@ packages: typescript: optional: true - '@formatjs/ts-transformer@3.13.14': - resolution: {integrity: sha512-TP/R54lxQ9Drzzimxrrt6yBT/xBofTgYl5wSTpyKe3Aq9vIBVcFmS6EOqycj0X34KGu3EpDPGO0ng8ZQZGLIFg==} - peerDependencies: - ts-jest: '>=27' - peerDependenciesMeta: - ts-jest: - optional: true - '@humanfs/core@0.19.0': resolution: {integrity: sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==} engines: {node: '>=18.18.0'} @@ -2370,15 +2318,6 @@ packages: rollup: optional: true - '@rollup/pluginutils@5.1.3': - resolution: {integrity: sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - '@rollup/pluginutils@5.1.4': resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} engines: {node: '>=14.0.0'} @@ -3042,9 +2981,6 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - '@types/fs-extra@9.0.13': - resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} - '@types/glob@9.0.0': resolution: {integrity: sha512-00UxlRaIUvYm4R4W9WYkN8/J+kV8fmOQ7okeH6YFtGWFMt3odD45tpG5yA5wnL7HE6lLgjaTW5n14ju2hl2NNA==} deprecated: This is a stub types definition. glob provides its own type definitions, so you do not need this installed. @@ -3067,9 +3003,6 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/json-stable-stringify@1.0.36': - resolution: {integrity: sha512-b7bq23s4fgBB76n34m2b3RBf6M369B0Z9uRR8aHTMd8kZISRkmDEpPD8hhpYvDFzr3bJCPES96cm3Q6qRNDbQw==} - '@types/linkify-it@5.0.0': resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} @@ -3294,26 +3227,6 @@ packages: peerDependencies: '@formatjs/intl': ^2.7.1 - '@vintl/unplugin@1.5.2': - resolution: {integrity: sha512-mNOu/Y0elbATzD852ZhzI0Yw12VFuMnE/P1EbX/N+qLj7F2OWOefCtc88fi9NnaL13wsDSaH9PCuA7VJ/KA5iQ==} - engines: {node: '>=16'} - peerDependencies: - rollup: ^3 - vite: ^4 - webpack: ^5 - peerDependenciesMeta: - rollup: - optional: true - vite: - optional: true - webpack: - optional: true - - '@vintl/vintl@4.4.1': - resolution: {integrity: sha512-1fAnK1Ru4GlUH6v2UPqPMFXvatiZuDlgF3GBrUYDBvs4mzg+j3cmH9GgX7DqBtpRLI1iqcoQF10cnJs/e/0Dvw==} - peerDependencies: - vue: ^3.2.47 - '@vitejs/plugin-vue-jsx@4.1.1': resolution: {integrity: sha512-uMJqv/7u1zz/9NbWAD3XdjaY20tKTf17XVfQ9zq4wY1BjsB/PjpJPMe2xiG39QpP4ZdhYNhm4Hvo66uJrykNLA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -3903,10 +3816,6 @@ packages: resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} engines: {node: '>= 0.4'} - array-find-index@1.0.2: - resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==} - engines: {node: '>=0.10.0'} - array-iterate@2.0.1: resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} @@ -4081,10 +3990,6 @@ packages: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} - call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} - call-bound@1.0.4: resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} @@ -4453,10 +4358,6 @@ packages: csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} - currently-unhandled@0.4.1: - resolution: {integrity: sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==} - engines: {node: '>=0.10.0'} - dayjs@1.11.11: resolution: {integrity: sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==} @@ -4562,10 +4463,6 @@ packages: resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} engines: {node: '>=18'} - define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} @@ -4772,10 +4669,6 @@ packages: errx@0.1.0: resolution: {integrity: sha512-fZmsRiDNv07K6s2KkKFTiD2aIvECa7++PKyD5NC32tpRw46qZA3sOz+aM+/V9V0GDHxVTKLziveV4JhzBHDp9Q==} - es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} - es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} @@ -5223,10 +5116,6 @@ packages: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} - fs-extra@10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} - engines: {node: '>=12'} - fs-extra@11.2.0: resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} engines: {node: '>=14.14'} @@ -5272,10 +5161,6 @@ packages: resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} engines: {node: '>=18'} - get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} - get-intrinsic@1.3.0: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} @@ -5380,9 +5265,6 @@ packages: glsl-tokenizer@2.1.5: resolution: {integrity: sha512-XSZEJ/i4dmz3Pmbnpsy3cKh7cotvFlBiZnDOwnj/05EwNp2XrhQ4XKJxT7/pDt4kp4YcpRSKz8eTV7S+mwV6MA==} - gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -5414,17 +5296,6 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - - has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} - engines: {node: '>= 0.4'} - - has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - has-symbols@1.1.0: resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} @@ -5810,9 +5681,6 @@ packages: isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -5913,10 +5781,6 @@ packages: json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - json-stable-stringify@1.1.1: - resolution: {integrity: sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg==} - engines: {node: '>= 0.4'} - json-to-ast@2.1.0: resolution: {integrity: sha512-W9Lq347r8tA1DfMvAGn9QNcgYm4Wm7Yc+k8e6vezpMnRT+NHbtlxgNBXRVjXe9YM6eTn6+p/MKOlV/aABJcSnQ==} engines: {node: '>= 4'} @@ -5939,9 +5803,6 @@ packages: jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - jsonify@0.0.1: - resolution: {integrity: sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==} - jsonpointer@5.0.1: resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} engines: {node: '>=0.10.0'} @@ -6141,10 +6002,6 @@ packages: longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - loud-rejection@2.2.0: - resolution: {integrity: sha512-S0FayMXku80toa5sZ6Ro4C+s+EtFDCsyJNG/AzFMfX3AxD5Si4dZsgzm/kKnbOxHl5Cv8jBlno8+3XYIh2pNjQ==} - engines: {node: '>=8'} - loupe@3.2.1: resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} @@ -6700,10 +6557,6 @@ packages: resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} engines: {node: '>= 0.4'} - object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - obug@2.1.1: resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} @@ -7653,11 +7506,6 @@ packages: rollup: optional: true - rollup@3.29.4: - resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - rollup@4.28.1: resolution: {integrity: sha512-61fXYl/qNVinKmGSTHAZ6Yy8I3YIJC/r2m9feHo6SwVAVcLT5MPwOUFe7EuURA/4m0NR8lXG4BBXuo/IZEsjMg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -7762,10 +7610,6 @@ packages: set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} - setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} @@ -9704,10 +9548,6 @@ snapshots: '@bcoe/v8-coverage@1.0.2': {} - '@braw/async-computed@5.0.2(vue@3.5.13(typescript@5.5.4))': - dependencies: - vue: 3.5.13(typescript@5.5.4) - '@cloudflare/kv-asset-handler@0.3.4': dependencies: mime: 3.0.0 @@ -10191,28 +10031,6 @@ snapshots: '@floating-ui/utils@0.2.4': {} - '@formatjs/cli-lib@6.4.2(@vue/compiler-core@3.5.13)(vue@3.5.13(typescript@5.5.4))': - dependencies: - '@formatjs/icu-messageformat-parser': 2.7.8 - '@formatjs/ts-transformer': 3.13.14 - '@types/estree': 1.0.6 - '@types/fs-extra': 9.0.13 - '@types/json-stable-stringify': 1.0.36 - '@types/node': 17.0.45 - chalk: 4.1.2 - commander: 8.3.0 - fast-glob: 3.3.2 - fs-extra: 10.1.0 - json-stable-stringify: 1.1.1 - loud-rejection: 2.2.0 - tslib: 2.6.3 - typescript: 5.8.3 - optionalDependencies: - '@vue/compiler-core': 3.5.13 - vue: 3.5.13(typescript@5.5.4) - transitivePeerDependencies: - - ts-jest - '@formatjs/cli@6.2.12(@vue/compiler-core@3.5.13)(vue@3.5.13(typescript@5.5.4))': optionalDependencies: '@vue/compiler-core': 3.5.13 @@ -10226,7 +10044,7 @@ snapshots: '@formatjs/ecma402-abstract@2.0.0': dependencies: '@formatjs/intl-localematcher': 0.5.4 - tslib: 2.6.3 + tslib: 2.8.1 '@formatjs/ecma402-abstract@2.3.6': dependencies: @@ -10237,7 +10055,7 @@ snapshots: '@formatjs/fast-memoize@2.2.0': dependencies: - tslib: 2.6.3 + tslib: 2.8.1 '@formatjs/fast-memoize@2.2.7': dependencies: @@ -10253,7 +10071,7 @@ snapshots: dependencies: '@formatjs/ecma402-abstract': 2.0.0 '@formatjs/icu-skeleton-parser': 1.8.2 - tslib: 2.6.3 + tslib: 2.8.1 '@formatjs/icu-skeleton-parser@1.8.16': dependencies: @@ -10263,23 +10081,19 @@ snapshots: '@formatjs/icu-skeleton-parser@1.8.2': dependencies: '@formatjs/ecma402-abstract': 2.0.0 - tslib: 2.6.3 + tslib: 2.8.1 '@formatjs/intl-displaynames@6.6.8': dependencies: '@formatjs/ecma402-abstract': 2.0.0 '@formatjs/intl-localematcher': 0.5.4 - tslib: 2.6.3 + tslib: 2.8.1 '@formatjs/intl-listformat@7.5.7': dependencies: '@formatjs/ecma402-abstract': 2.0.0 '@formatjs/intl-localematcher': 0.5.4 - tslib: 2.6.3 - - '@formatjs/intl-localematcher@0.4.2': - dependencies: - tslib: 2.6.3 + tslib: 2.8.1 '@formatjs/intl-localematcher@0.5.4': dependencies: @@ -10297,20 +10111,10 @@ snapshots: '@formatjs/intl-displaynames': 6.6.8 '@formatjs/intl-listformat': 7.5.7 intl-messageformat: 10.5.14 - tslib: 2.6.3 + tslib: 2.8.1 optionalDependencies: typescript: 5.5.4 - '@formatjs/ts-transformer@3.13.14': - dependencies: - '@formatjs/icu-messageformat-parser': 2.7.8 - '@types/json-stable-stringify': 1.0.36 - '@types/node': 17.0.45 - chalk: 4.1.2 - json-stable-stringify: 1.1.1 - tslib: 2.6.3 - typescript: 5.8.3 - '@humanfs/core@0.19.0': {} '@humanfs/core@0.19.1': {} @@ -11203,14 +11007,6 @@ snapshots: optionalDependencies: rollup: 4.28.1 - '@rollup/pluginutils@5.1.3(rollup@3.29.4)': - dependencies: - '@types/estree': 1.0.6 - estree-walker: 2.0.2 - picomatch: 4.0.2 - optionalDependencies: - rollup: 3.29.4 - '@rollup/pluginutils@5.1.4(rollup@4.28.1)': dependencies: '@types/estree': 1.0.6 @@ -11448,10 +11244,10 @@ snapshots: axe-core: 4.11.0 storybook: 10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1) - '@storybook/addon-docs@10.1.10(@types/react@19.2.7)(esbuild@0.25.0)(rollup@3.29.4)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(webpack@5.92.1(esbuild@0.25.0))': + '@storybook/addon-docs@10.1.10(@types/react@19.2.7)(esbuild@0.25.0)(rollup@4.34.9)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(webpack@5.92.1(esbuild@0.25.0))': dependencies: '@mdx-js/react': 3.1.1(@types/react@19.2.7)(react@19.1.1) - '@storybook/csf-plugin': 10.1.10(esbuild@0.25.0)(rollup@3.29.4)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(webpack@5.92.1(esbuild@0.25.0)) + '@storybook/csf-plugin': 10.1.10(esbuild@0.25.0)(rollup@4.34.9)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(webpack@5.92.1(esbuild@0.25.0)) '@storybook/icons': 2.0.1(react-dom@19.2.3(react@19.1.1))(react@19.1.1) '@storybook/react-dom-shim': 10.1.10(react-dom@19.2.3(react@19.1.1))(react@19.1.1)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1)) react: 19.1.1 @@ -11488,9 +11284,9 @@ snapshots: - react - react-dom - '@storybook/builder-vite@10.1.10(esbuild@0.25.0)(rollup@3.29.4)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(webpack@5.92.1(esbuild@0.25.0))': + '@storybook/builder-vite@10.1.10(esbuild@0.25.0)(rollup@4.34.9)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(webpack@5.92.1(esbuild@0.25.0))': dependencies: - '@storybook/csf-plugin': 10.1.10(esbuild@0.25.0)(rollup@3.29.4)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(webpack@5.92.1(esbuild@0.25.0)) + '@storybook/csf-plugin': 10.1.10(esbuild@0.25.0)(rollup@4.34.9)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(webpack@5.92.1(esbuild@0.25.0)) '@vitest/mocker': 3.2.4(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1)) storybook: 10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1) ts-dedent: 2.2.0 @@ -11501,13 +11297,13 @@ snapshots: - rollup - webpack - '@storybook/csf-plugin@10.1.10(esbuild@0.25.0)(rollup@3.29.4)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(webpack@5.92.1(esbuild@0.25.0))': + '@storybook/csf-plugin@10.1.10(esbuild@0.25.0)(rollup@4.34.9)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(webpack@5.92.1(esbuild@0.25.0))': dependencies: storybook: 10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1) unplugin: 2.3.11 optionalDependencies: esbuild: 0.25.0 - rollup: 3.29.4 + rollup: 4.34.9 vite: 5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1) webpack: 5.92.1(esbuild@0.25.0) @@ -11524,9 +11320,9 @@ snapshots: react-dom: 19.2.3(react@19.1.1) storybook: 10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1) - '@storybook/vue3-vite@10.1.10(esbuild@0.25.0)(rollup@3.29.4)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))(webpack@5.92.1(esbuild@0.25.0))': + '@storybook/vue3-vite@10.1.10(esbuild@0.25.0)(rollup@4.34.9)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))(webpack@5.92.1(esbuild@0.25.0))': dependencies: - '@storybook/builder-vite': 10.1.10(esbuild@0.25.0)(rollup@3.29.4)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(webpack@5.92.1(esbuild@0.25.0)) + '@storybook/builder-vite': 10.1.10(esbuild@0.25.0)(rollup@4.34.9)(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(webpack@5.92.1(esbuild@0.25.0)) '@storybook/vue3': 10.1.10(storybook@10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1))(vue@3.5.13(typescript@5.5.4)) magic-string: 0.30.21 storybook: 10.1.10(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.1.1))(react@19.1.1) @@ -11840,10 +11636,6 @@ snapshots: '@types/estree@1.0.8': {} - '@types/fs-extra@9.0.13': - dependencies: - '@types/node': 20.14.11 - '@types/glob@9.0.0': dependencies: glob: 10.4.2 @@ -11864,8 +11656,6 @@ snapshots: '@types/json-schema@7.0.15': {} - '@types/json-stable-stringify@1.0.36': {} - '@types/linkify-it@5.0.0': {} '@types/markdown-it@14.1.1': @@ -12211,41 +12001,6 @@ snapshots: '@formatjs/intl': 2.10.4(typescript@5.5.4) intl-messageformat: 10.7.18 - '@vintl/unplugin@1.5.2(@vue/compiler-core@3.5.13)(rollup@3.29.4)(vite@5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))(webpack@5.92.1(esbuild@0.25.0))': - dependencies: - '@formatjs/cli-lib': 6.4.2(@vue/compiler-core@3.5.13)(vue@3.5.13(typescript@5.5.4)) - '@formatjs/icu-messageformat-parser': 2.7.8 - '@rollup/pluginutils': 5.1.3(rollup@3.29.4) - glob: 10.4.2 - import-meta-resolve: 4.1.0 - pathe: 1.1.2 - unplugin: 1.16.0 - optionalDependencies: - rollup: 3.29.4 - vite: 5.4.11(@types/node@22.4.1)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1) - webpack: 5.92.1(esbuild@0.25.0) - transitivePeerDependencies: - - '@glimmer/env' - - '@glimmer/reference' - - '@glimmer/syntax' - - '@glimmer/validator' - - '@vue/compiler-core' - - content-tag - - ember-template-recast - - ts-jest - - vue - - '@vintl/vintl@4.4.1(typescript@5.5.4)(vue@3.5.13(typescript@5.5.4))': - dependencies: - '@braw/async-computed': 5.0.2(vue@3.5.13(typescript@5.5.4)) - '@formatjs/icu-messageformat-parser': 2.7.8 - '@formatjs/intl': 2.10.4(typescript@5.5.4) - '@formatjs/intl-localematcher': 0.4.2 - intl-messageformat: 10.7.18 - vue: 3.5.13(typescript@5.5.4) - transitivePeerDependencies: - - typescript - '@vitejs/plugin-vue-jsx@4.1.1(vite@5.4.11(@types/node@20.14.11)(lightningcss@1.30.2)(sass@1.77.6)(terser@5.44.1))(vue@3.5.13(typescript@5.5.4))': dependencies: '@babel/core': 7.26.0 @@ -13068,8 +12823,6 @@ snapshots: aria-query@5.3.2: {} - array-find-index@1.0.2: {} - array-iterate@2.0.1: {} asap@2.0.6: {} @@ -13372,14 +13125,6 @@ snapshots: es-errors: 1.3.0 function-bind: 1.1.2 - call-bind@1.0.7: - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - set-function-length: 1.2.2 - call-bound@1.0.4: dependencies: call-bind-apply-helpers: 1.0.2 @@ -13737,10 +13482,6 @@ snapshots: csstype@3.2.3: {} - currently-unhandled@0.4.1: - dependencies: - array-find-index: 1.0.2 - dayjs@1.11.11: {} db0@0.2.1: {} @@ -13787,12 +13528,6 @@ snapshots: bundle-name: 4.1.0 default-browser-id: 5.0.0 - define-data-property@1.1.4: - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - gopd: 1.2.0 - define-lazy-prop@2.0.0: {} define-lazy-prop@3.0.0: {} @@ -13955,10 +13690,6 @@ snapshots: errx@0.1.0: {} - es-define-property@1.0.0: - dependencies: - get-intrinsic: 1.2.4 - es-define-property@1.0.1: {} es-errors@1.3.0: {} @@ -14640,12 +14371,6 @@ snapshots: fresh@0.5.2: {} - fs-extra@10.1.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - fs-extra@11.2.0: dependencies: graceful-fs: 4.2.11 @@ -14686,14 +14411,6 @@ snapshots: get-east-asian-width@1.2.0: {} - get-intrinsic@1.2.4: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.2 - get-intrinsic@1.3.0: dependencies: call-bind-apply-helpers: 1.0.2 @@ -14821,10 +14538,6 @@ snapshots: dependencies: through2: 0.6.5 - gopd@1.0.1: - dependencies: - get-intrinsic: 1.3.0 - gopd@1.2.0: {} graceful-fs@4.2.11: {} @@ -14871,14 +14584,6 @@ snapshots: has-flag@4.0.0: {} - has-property-descriptors@1.0.2: - dependencies: - es-define-property: 1.0.0 - - has-proto@1.0.3: {} - - has-symbols@1.0.3: {} - has-symbols@1.1.0: {} has-tostringtag@1.0.2: @@ -15239,7 +14944,7 @@ snapshots: '@formatjs/ecma402-abstract': 2.0.0 '@formatjs/fast-memoize': 2.2.0 '@formatjs/icu-messageformat-parser': 2.7.8 - tslib: 2.6.3 + tslib: 2.8.1 intl-messageformat@10.7.18: dependencies: @@ -15376,8 +15081,6 @@ snapshots: isarray@1.0.0: {} - isarray@2.0.5: {} - isexe@2.0.0: {} iso-3166-2@1.0.0: {} @@ -15465,13 +15168,6 @@ snapshots: json-stable-stringify-without-jsonify@1.0.1: {} - json-stable-stringify@1.1.1: - dependencies: - call-bind: 1.0.7 - isarray: 2.0.5 - jsonify: 0.0.1 - object-keys: 1.1.1 - json-to-ast@2.1.0: dependencies: code-error-fragment: 0.0.230 @@ -15496,8 +15192,6 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 - jsonify@0.0.1: {} - jsonpointer@5.0.1: {} jstransformer@1.0.0: @@ -15681,11 +15375,6 @@ snapshots: longest-streak@3.1.0: {} - loud-rejection@2.2.0: - dependencies: - currently-unhandled: 0.4.1 - signal-exit: 3.0.7 - loupe@3.2.1: {} lower-case@2.0.2: @@ -16683,8 +16372,6 @@ snapshots: object-inspect@1.13.4: {} - object-keys@1.1.1: {} - obug@2.1.1: {} ofetch@1.4.1: @@ -17703,11 +17390,6 @@ snapshots: optionalDependencies: rollup: 4.28.1 - rollup@3.29.4: - optionalDependencies: - fsevents: 2.3.3 - optional: true - rollup@4.28.1: dependencies: '@types/estree': 1.0.6 @@ -17864,15 +17546,6 @@ snapshots: set-blocking@2.0.0: {} - set-function-length@1.2.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - setimmediate@1.0.5: {} setprototypeof@1.2.0: {} From 6dc8acf203162a24f27706ffc8038cb0507a711d Mon Sep 17 00:00:00 2001 From: "Calum H. (IMB11)" Date: Thu, 1 Jan 2026 15:29:56 +0000 Subject: [PATCH 21/21] fix: missing style + ctx --- packages/ui/.storybook/preview.ts | 17 ++++ .../base/ErrorInformationCard.stories.ts | 6 ++ .../src/stories/base/OverflowMenu.stories.ts | 60 +++++++++++-- .../ui/src/stories/base/PopoutMenu.stories.ts | 75 ++++++++++++++-- .../base/PreviewSelectButton.stories.ts | 87 ++++++++++++++++++- .../src/stories/base/ProgressBar.stories.ts | 17 ++++ .../src/stories/base/ProjectCard.stories.ts | 78 +++++++++++++++++ 7 files changed, 321 insertions(+), 19 deletions(-) diff --git a/packages/ui/.storybook/preview.ts b/packages/ui/.storybook/preview.ts index dd5ac0a7e2..40323653fa 100644 --- a/packages/ui/.storybook/preview.ts +++ b/packages/ui/.storybook/preview.ts @@ -1,8 +1,11 @@ +import '@modrinth/assets/omorphia.scss' +import 'floating-vue/dist/style.css' import '../src/styles/tailwind.css' import { withThemeByClassName } from '@storybook/addon-themes' import type { Preview } from '@storybook/vue3-vite' import { setup } from '@storybook/vue3-vite' +import FloatingVue from 'floating-vue' import { createI18n } from 'vue-i18n' import { @@ -30,6 +33,20 @@ const i18n = createI18n({ setup((app) => { app.use(i18n) + app.use(FloatingVue, { + themes: { + 'ribbit-popout': { + $extend: 'dropdown', + placement: 'bottom-end', + instantMove: true, + distance: 8, + }, + 'dismissable-prompt': { + $extend: 'dropdown', + placement: 'bottom-start', + }, + }, + }) // Create teleport target for components that use if (typeof document !== 'undefined' && !document.getElementById('teleports')) { diff --git a/packages/ui/src/stories/base/ErrorInformationCard.stories.ts b/packages/ui/src/stories/base/ErrorInformationCard.stories.ts index 262386217e..05e813e272 100644 --- a/packages/ui/src/stories/base/ErrorInformationCard.stories.ts +++ b/packages/ui/src/stories/base/ErrorInformationCard.stories.ts @@ -6,6 +6,12 @@ import ErrorInformationCard from '../../components/base/ErrorInformationCard.vue const meta = { title: 'Base/ErrorInformationCard', component: ErrorInformationCard, + decorators: [ + (story) => ({ + components: { story }, + template: '
', + }), + ], } satisfies Meta export default meta diff --git a/packages/ui/src/stories/base/OverflowMenu.stories.ts b/packages/ui/src/stories/base/OverflowMenu.stories.ts index 46e111d16e..0adec75cf2 100644 --- a/packages/ui/src/stories/base/OverflowMenu.stories.ts +++ b/packages/ui/src/stories/base/OverflowMenu.stories.ts @@ -1,23 +1,26 @@ -import { SettingsIcon } from '@modrinth/assets' +import { MoreHorizontalIcon } from '@modrinth/assets' import type { Meta, StoryObj } from '@storybook/vue3-vite' +import ButtonStyled from '../../components/base/ButtonStyled.vue' import OverflowMenu from '../../components/base/OverflowMenu.vue' const meta = { title: 'Base/OverflowMenu', component: OverflowMenu, render: (args) => ({ - components: { OverflowMenu, SettingsIcon }, + components: { OverflowMenu, MoreHorizontalIcon, ButtonStyled }, setup() { return { args } }, template: /*html*/ ` - - - - - - + + + + + + + + `, }), } satisfies Meta @@ -35,3 +38,44 @@ export const Default: Story = { ], }, } + +export const WithDifferentPlacements: StoryObj = { + render: () => ({ + components: { OverflowMenu, MoreHorizontalIcon, ButtonStyled }, + template: /*html*/ ` +
+
+ bottom-end (default) + + + + + + + +
+
+ bottom-start + + + + + + + +
+
+ `, + }), +} diff --git a/packages/ui/src/stories/base/PopoutMenu.stories.ts b/packages/ui/src/stories/base/PopoutMenu.stories.ts index 7116f633fe..7e3d02a512 100644 --- a/packages/ui/src/stories/base/PopoutMenu.stories.ts +++ b/packages/ui/src/stories/base/PopoutMenu.stories.ts @@ -2,25 +2,30 @@ import { SettingsIcon } from '@modrinth/assets' import type { Meta, StoryObj } from '@storybook/vue3-vite' import Button from '../../components/base/Button.vue' +import ButtonStyled from '../../components/base/ButtonStyled.vue' import PopoutMenu from '../../components/base/PopoutMenu.vue' const meta = { title: 'Base/PopoutMenu', component: PopoutMenu, render: (args) => ({ - components: { PopoutMenu, Button, SettingsIcon }, + components: { PopoutMenu, Button, ButtonStyled, SettingsIcon }, setup() { return { args } }, template: /*html*/ ` - - - - + + + + + + `, }), } satisfies Meta @@ -35,3 +40,55 @@ export const WithTooltip: Story = { tooltip: 'Click for more options', }, } + +export const DifferentPlacements: StoryObj = { + render: () => ({ + components: { PopoutMenu, Button, ButtonStyled, SettingsIcon }, + template: /*html*/ ` +
+
+ bottom-end (default) + + + + + + +
+
+ bottom-start + + + + + + +
+
+ top-end + + + + + + +
+
+ `, + }), +} diff --git a/packages/ui/src/stories/base/PreviewSelectButton.stories.ts b/packages/ui/src/stories/base/PreviewSelectButton.stories.ts index 0f3d91ea33..170ff1b104 100644 --- a/packages/ui/src/stories/base/PreviewSelectButton.stories.ts +++ b/packages/ui/src/stories/base/PreviewSelectButton.stories.ts @@ -1,4 +1,5 @@ import type { Meta, StoryObj } from '@storybook/vue3-vite' +import { ref } from 'vue' import PreviewSelectButton from '../../components/base/PreviewSelectButton.vue' @@ -30,7 +31,7 @@ export const AllStates: StoryObj = {
@@ -38,7 +39,7 @@ export const AllStates: StoryObj = { @@ -48,3 +49,85 @@ export const AllStates: StoryObj = { `, }), } + +export const InteractiveSelection: StoryObj = { + render: () => ({ + components: { PreviewSelectButton }, + setup() { + const selected = ref('dark') + return { selected } + }, + template: ` +
+

Selected: {{ selected }}

+
+ + + Light + + + + Dark + + + + OLED + +
+
+ `, + }), +} + +export const ColorSelection: StoryObj = { + render: () => ({ + components: { PreviewSelectButton }, + setup() { + const selected = ref('brand') + return { selected } + }, + template: ` +
+

Accent color: {{ selected }}

+
+ + + {{ color.charAt(0).toUpperCase() + color.slice(1) }} + +
+
+ `, + }), +} diff --git a/packages/ui/src/stories/base/ProgressBar.stories.ts b/packages/ui/src/stories/base/ProgressBar.stories.ts index 84da3c4580..56a1a75122 100644 --- a/packages/ui/src/stories/base/ProgressBar.stories.ts +++ b/packages/ui/src/stories/base/ProgressBar.stories.ts @@ -48,6 +48,23 @@ export const Striped: Story = { }, } +export const AllStripedColors: StoryObj = { + render: () => ({ + components: { ProgressBar }, + template: /*html*/ ` +
+ + + + + + + +
+ `, + }), +} + export const FullWidth: Story = { args: { progress: 0.5, diff --git a/packages/ui/src/stories/base/ProjectCard.stories.ts b/packages/ui/src/stories/base/ProjectCard.stories.ts index 521ccab55e..46cfafc2fd 100644 --- a/packages/ui/src/stories/base/ProjectCard.stories.ts +++ b/packages/ui/src/stories/base/ProjectCard.stories.ts @@ -5,6 +5,12 @@ import ProjectCard from '../../components/base/ProjectCard.vue' const meta = { title: 'Base/ProjectCard', component: ProjectCard, + decorators: [ + (story) => ({ + components: { story }, + template: '
', + }), + ], } satisfies Meta export default meta @@ -133,3 +139,75 @@ export const WithStatus: Story = { `, }), } + +export const DisplayModes: StoryObj = { + decorators: [], // Remove default decorator for this story + render: () => ({ + components: { ProjectCard }, + template: ` +
+
+

Grid Mode

+
+ +
+
+
+

List Mode

+
+ +
+
+
+

Gallery Mode

+ +
+
+ `, + }), +}