diff --git a/package.json b/package.json index 798bb0f9..371c939c 100644 --- a/package.json +++ b/package.json @@ -32,61 +32,61 @@ "@dnd-kit/sortable": "^10.0.0", "@dnd-kit/utilities": "^3.2.2", "@headlessui/react": "^2.2.0", - "@octokit/rest": "^21.0.2", + "@octokit/rest": "^21.1.1", "@phosphor-icons/react": "^2.1.7", - "@sentry/react": "^8.38.0", + "@sentry/react": "^8.55.0", "@unocss/vite": "^0.63.6", - "@vitejs/plugin-react": "^4.3.3", + "@vitejs/plugin-react": "^4.3.4", "chrome-extension-toolkit": "^0.0.54", "clsx": "^2.1.1", "conventional-changelog": "^6.0.0", "highcharts": "^11.4.8", "highcharts-react-official": "^3.2.1", - "html-to-image": "^1.11.11", - "husky": "^9.1.6", + "html-to-image": "^1.11.13", + "husky": "^9.1.7", "kc-dabr-wasm": "^0.1.2", - "nanoid": "^5.0.8", + "nanoid": "^5.1.2", "react": "^18.3.1", "react-dom": "^18.3.1", "react-loading-skeleton": "^3.5.0", - "react-markdown": "^9.0.1", + "react-markdown": "^9.1.0", "react-syntax-highlighter": "^15.6.1", - "remark-gfm": "^4.0.0", - "sass": "^1.81.0", + "remark-gfm": "^4.0.1", + "sass": "^1.85.1", "simple-git": "^3.27.0", "sql.js": "1.11.0" }, "devDependencies": { "@chromatic-com/storybook": "^2.0.2", - "@commitlint/cli": "^19.5.0", - "@commitlint/config-conventional": "^19.5.0", + "@commitlint/cli": "^19.7.1", + "@commitlint/config-conventional": "^19.7.1", "@commitlint/types": "^19.5.0", "@crxjs/vite-plugin": "2.0.0-beta.21", - "@iconify-json/bi": "^1.2.1", - "@iconify-json/ic": "^1.2.1", - "@iconify-json/iconoir": "^1.2.4", - "@iconify-json/material-symbols": "^1.2.6", - "@iconify-json/ri": "^1.2.3", - "@iconify-json/streamline": "^1.2.1", + "@iconify-json/bi": "^1.2.2", + "@iconify-json/ic": "^1.2.2", + "@iconify-json/iconoir": "^1.2.7", + "@iconify-json/material-symbols": "^1.2.14", + "@iconify-json/ri": "^1.2.5", + "@iconify-json/streamline": "^1.2.2", "@semantic-release/exec": "^6.0.3", - "@sentry/types": "^8.38.0", - "@storybook/addon-designs": "^8.0.4", - "@storybook/addon-essentials": "^8.4.4", - "@storybook/addon-links": "^8.4.4", - "@storybook/blocks": "^8.4.4", - "@storybook/react": "^8.4.4", - "@storybook/react-vite": "^8.4.4", - "@storybook/test": "^8.4.4", + "@sentry/types": "^8.55.0", + "@storybook/addon-designs": "^8.2.0", + "@storybook/addon-essentials": "^8.6.0", + "@storybook/addon-links": "^8.6.0", + "@storybook/blocks": "^8.6.0", + "@storybook/react": "^8.6.0", + "@storybook/react-vite": "^8.6.0", + "@storybook/test": "^8.6.0", "@svgr/core": "^8.1.0", "@svgr/plugin-jsx": "^8.1.0", "@types/chrome": "^0.0.273", "@types/conventional-changelog": "^3.1.5", "@types/gulp": "^4.0.17", "@types/gulp-zip": "^4.0.4", - "@types/node": "^22.9.0", + "@types/node": "^22.13.5", "@types/prompts": "^2.4.9", - "@types/react": "^18.3.12", - "@types/react-dom": "^18.3.1", + "@types/react": "^18.3.18", + "@types/react-dom": "^18.3.5", "@types/react-syntax-highlighter": "^15.5.13", "@types/semantic-release": "^20.0.6", "@types/semver": "^7.5.8", @@ -100,48 +100,48 @@ "@unocss/reset": "^0.63.6", "@unocss/transformer-directives": "^0.63.6", "@unocss/transformer-variant-group": "^0.63.6", - "@vitejs/plugin-react-swc": "^3.7.1", - "@vitest/coverage-v8": "^2.1.5", - "@vitest/ui": "^2.1.5", - "chalk": "^5.3.0", - "chromatic": "^11.18.1", + "@vitejs/plugin-react-swc": "^3.8.0", + "@vitest/coverage-v8": "^2.1.9", + "@vitest/ui": "^2.1.9", + "chalk": "^5.4.1", + "chromatic": "^11.26.0", "cssnano": "^7.0.6", "cssnano-preset-advanced": "^7.0.6", - "dotenv": "^16.4.5", - "es-module-lexer": "^1.5.4", + "dotenv": "^16.4.7", + "es-module-lexer": "^1.6.0", "eslint": "^8.57.1", "eslint-config-airbnb": "^19.0.4", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-typescript": "^18.0.0", "eslint-config-prettier": "^9.1.0", - "eslint-import-resolver-typescript": "^3.6.3", + "eslint-import-resolver-typescript": "^3.8.3", "eslint-plugin-import": "^2.31.0", "eslint-plugin-import-essentials": "^0.2.1", - "eslint-plugin-jsdoc": "^50.5.0", - "eslint-plugin-prettier": "^5.2.1", - "eslint-plugin-react": "^7.37.2", + "eslint-plugin-jsdoc": "^50.6.3", + "eslint-plugin-prettier": "^5.2.3", + "eslint-plugin-react": "^7.37.4", "eslint-plugin-react-hooks": "^4.6.2", - "eslint-plugin-react-prefer-function-component": "^3.3.0", - "eslint-plugin-react-refresh": "^0.4.14", + "eslint-plugin-react-prefer-function-component": "^3.4.0", + "eslint-plugin-react-refresh": "^0.4.19", "eslint-plugin-simple-import-sort": "^12.1.1", "eslint-plugin-storybook": "^0.9.0", "eslint-plugin-tsdoc": "^0.3.0", "gulp": "^5.0.0", "gulp-execa": "^7.0.1", - "gulp-zip": "^6.0.0", + "gulp-zip": "^6.1.0", "path": "^0.12.7", - "postcss": "^8.4.49", - "prettier": "^3.3.3", + "postcss": "^8.5.3", + "prettier": "^3.5.2", "react-dev-utils": "^12.0.1", - "semantic-release": "^24.2.0", - "storybook": "^8.4.4", - "typescript": "^5.6.3", + "semantic-release": "^24.2.3", + "storybook": "^8.6.0", + "typescript": "^5.7.3", "unocss": "^0.63.6", "unocss-preset-primitives": "0.0.2-beta.1", "unplugin-icons": "^0.19.3", - "vite": "^5.4.11", - "vite-plugin-inspect": "^0.8.7", - "vitest": "^2.1.5" + "vite": "^5.4.14", + "vite-plugin-inspect": "^0.8.9", + "vitest": "^2.1.9" }, "pnpm": { "patchedDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7eba0827..1966da25 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -35,20 +35,20 @@ importers: specifier: ^2.2.0 version: 2.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@octokit/rest': - specifier: ^21.0.2 - version: 21.1.0 + specifier: ^21.1.1 + version: 21.1.1 '@phosphor-icons/react': specifier: ^2.1.7 version: 2.1.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@sentry/react': - specifier: ^8.38.0 - version: 8.52.0(react@18.3.1) + specifier: ^8.55.0 + version: 8.55.0(react@18.3.1) '@unocss/vite': specifier: ^0.63.6 - version: 0.63.6(patch_hash=5ptgy7mbavmjf7zwexb7dph4ji)(rollup@4.32.1)(typescript@5.7.3)(vite@5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0)) + version: 0.63.6(patch_hash=5ptgy7mbavmjf7zwexb7dph4ji)(rollup@4.34.8)(typescript@5.7.3)(vite@5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0)) '@vitejs/plugin-react': - specifier: ^4.3.3 - version: 4.3.4(vite@5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0)) + specifier: ^4.3.4 + version: 4.3.4(vite@5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0)) chrome-extension-toolkit: specifier: ^0.0.54 version: 0.0.54 @@ -65,17 +65,17 @@ importers: specifier: ^3.2.1 version: 3.2.1(highcharts@11.4.8)(react@18.3.1) html-to-image: - specifier: ^1.11.11 - version: 1.11.11 + specifier: ^1.11.13 + version: 1.11.13 husky: - specifier: ^9.1.6 + specifier: ^9.1.7 version: 9.1.7 kc-dabr-wasm: specifier: ^0.1.2 version: 0.1.2 nanoid: - specifier: ^5.0.8 - version: 5.0.9 + specifier: ^5.1.2 + version: 5.1.2 react: specifier: ^18.3.1 version: 18.3.1 @@ -86,17 +86,17 @@ importers: specifier: ^3.5.0 version: 3.5.0(react@18.3.1) react-markdown: - specifier: ^9.0.1 - version: 9.0.3(@types/react@18.3.18)(react@18.3.1) + specifier: ^9.1.0 + version: 9.1.0(@types/react@18.3.18)(react@18.3.1) react-syntax-highlighter: specifier: ^15.6.1 version: 15.6.1(react@18.3.1) remark-gfm: - specifier: ^4.0.0 - version: 4.0.0 + specifier: ^4.0.1 + version: 4.0.1 sass: - specifier: ^1.81.0 - version: 1.83.4 + specifier: ^1.85.1 + version: 1.85.1 simple-git: specifier: ^3.27.0 version: 3.27.0 @@ -108,11 +108,11 @@ importers: specifier: ^2.0.2 version: 2.0.2(react@18.3.1) '@commitlint/cli': - specifier: ^19.5.0 - version: 19.6.1(@types/node@22.12.0)(typescript@5.7.3) + specifier: ^19.7.1 + version: 19.7.1(@types/node@22.13.5)(typescript@5.7.3) '@commitlint/config-conventional': - specifier: ^19.5.0 - version: 19.6.0 + specifier: ^19.7.1 + version: 19.7.1 '@commitlint/types': specifier: ^19.5.0 version: 19.5.0 @@ -120,50 +120,50 @@ importers: specifier: 2.0.0-beta.21 version: 2.0.0-beta.21(patch_hash=xq4uab3o3kbvv4gixvawl2aj5q) '@iconify-json/bi': - specifier: ^1.2.1 + specifier: ^1.2.2 version: 1.2.2 '@iconify-json/ic': - specifier: ^1.2.1 + specifier: ^1.2.2 version: 1.2.2 '@iconify-json/iconoir': - specifier: ^1.2.4 + specifier: ^1.2.7 version: 1.2.7 '@iconify-json/material-symbols': - specifier: ^1.2.6 - version: 1.2.13 + specifier: ^1.2.14 + version: 1.2.14 '@iconify-json/ri': - specifier: ^1.2.3 + specifier: ^1.2.5 version: 1.2.5 '@iconify-json/streamline': - specifier: ^1.2.1 + specifier: ^1.2.2 version: 1.2.2 '@semantic-release/exec': specifier: ^6.0.3 - version: 6.0.3(semantic-release@24.2.1(typescript@5.7.3)) + version: 6.0.3(semantic-release@24.2.3(typescript@5.7.3)) '@sentry/types': - specifier: ^8.38.0 - version: 8.52.0 + specifier: ^8.55.0 + version: 8.55.0 '@storybook/addon-designs': - specifier: ^8.0.4 - version: 8.0.4(@storybook/blocks@8.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.5.2(prettier@3.4.2)))(@storybook/components@8.5.2(storybook@8.5.2(prettier@3.4.2)))(@storybook/theming@8.5.2(storybook@8.5.2(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^8.2.0 + version: 8.2.0(@storybook/blocks@8.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.5.2)))(@storybook/components@8.6.0(storybook@8.6.0(prettier@3.5.2)))(@storybook/theming@8.6.0(storybook@8.6.0(prettier@3.5.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/addon-essentials': - specifier: ^8.4.4 - version: 8.5.2(@types/react@18.3.18)(storybook@8.5.2(prettier@3.4.2)) + specifier: ^8.6.0 + version: 8.6.0(@types/react@18.3.18)(storybook@8.6.0(prettier@3.5.2)) '@storybook/addon-links': - specifier: ^8.4.4 - version: 8.5.2(react@18.3.1)(storybook@8.5.2(prettier@3.4.2)) + specifier: ^8.6.0 + version: 8.6.0(react@18.3.1)(storybook@8.6.0(prettier@3.5.2)) '@storybook/blocks': - specifier: ^8.4.4 - version: 8.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.5.2(prettier@3.4.2)) + specifier: ^8.6.0 + version: 8.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.5.2)) '@storybook/react': - specifier: ^8.4.4 - version: 8.5.2(@storybook/test@8.5.2(storybook@8.5.2(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.5.2(prettier@3.4.2))(typescript@5.7.3) + specifier: ^8.6.0 + version: 8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.5.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.5.2))(typescript@5.7.3) '@storybook/react-vite': - specifier: ^8.4.4 - version: 8.5.2(@storybook/test@8.5.2(storybook@8.5.2(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.32.1)(storybook@8.5.2(prettier@3.4.2))(typescript@5.7.3)(vite@5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0)) + specifier: ^8.6.0 + version: 8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.5.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.34.8)(storybook@8.6.0(prettier@3.5.2))(typescript@5.7.3)(vite@5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0)) '@storybook/test': - specifier: ^8.4.4 - version: 8.5.2(storybook@8.5.2(prettier@3.4.2)) + specifier: ^8.6.0 + version: 8.6.0(storybook@8.6.0(prettier@3.5.2)) '@svgr/core': specifier: ^8.1.0 version: 8.1.0(typescript@5.7.3) @@ -183,16 +183,16 @@ importers: specifier: ^4.0.4 version: 4.0.4 '@types/node': - specifier: ^22.9.0 - version: 22.12.0 + specifier: ^22.13.5 + version: 22.13.5 '@types/prompts': specifier: ^2.4.9 version: 2.4.9 '@types/react': - specifier: ^18.3.12 + specifier: ^18.3.18 version: 18.3.18 '@types/react-dom': - specifier: ^18.3.1 + specifier: ^18.3.5 version: 18.3.5(@types/react@18.3.18) '@types/react-syntax-highlighter': specifier: ^15.5.13 @@ -217,7 +217,7 @@ importers: version: 0.63.6(eslint@8.57.1)(typescript@5.7.3) '@unocss/postcss': specifier: ^0.63.6 - version: 0.63.6(postcss@8.5.1) + version: 0.63.6(postcss@8.5.3) '@unocss/preset-uno': specifier: ^0.63.6 version: 0.63.6 @@ -234,28 +234,28 @@ importers: specifier: ^0.63.6 version: 0.63.6 '@vitejs/plugin-react-swc': - specifier: ^3.7.1 - version: 3.7.2(@swc/helpers@0.5.15)(vite@5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0)) + specifier: ^3.8.0 + version: 3.8.0(@swc/helpers@0.5.15)(vite@5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0)) '@vitest/coverage-v8': - specifier: ^2.1.5 - version: 2.1.8(vitest@2.1.8) + specifier: ^2.1.9 + version: 2.1.9(vitest@2.1.9) '@vitest/ui': - specifier: ^2.1.5 - version: 2.1.8(vitest@2.1.8) + specifier: ^2.1.9 + version: 2.1.9(vitest@2.1.9) chalk: - specifier: ^5.3.0 + specifier: ^5.4.1 version: 5.4.1 chromatic: - specifier: ^11.18.1 - version: 11.25.1 + specifier: ^11.26.0 + version: 11.26.0 cssnano: specifier: ^7.0.6 - version: 7.0.6(postcss@8.5.1) + version: 7.0.6(postcss@8.5.3) cssnano-preset-advanced: specifier: ^7.0.6 - version: 7.0.6(postcss@8.5.1) + version: 7.0.6(postcss@8.5.3) dotenv: - specifier: ^16.4.5 + specifier: ^16.4.7 version: 16.4.7 es-module-lexer: specifier: ^1.5.4 @@ -276,32 +276,32 @@ importers: specifier: ^9.1.0 version: 9.1.0(eslint@8.57.1) eslint-import-resolver-typescript: - specifier: ^3.6.3 - version: 3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.1) + specifier: ^3.8.3 + version: 3.8.3(eslint-plugin-import@2.31.0)(eslint@8.57.1) eslint-plugin-import: specifier: ^2.31.0 - version: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1) + version: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.8.3)(eslint@8.57.1) eslint-plugin-import-essentials: specifier: ^0.2.1 version: 0.2.1(eslint@8.57.1) eslint-plugin-jsdoc: - specifier: ^50.5.0 + specifier: ^50.6.3 version: 50.6.3(eslint@8.57.1) eslint-plugin-prettier: - specifier: ^5.2.1 - version: 5.2.3(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.4.2) + specifier: ^5.2.3 + version: 5.2.3(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.5.2) eslint-plugin-react: - specifier: ^7.37.2 + specifier: ^7.37.4 version: 7.37.4(eslint@8.57.1) eslint-plugin-react-hooks: specifier: ^4.6.2 version: 4.6.2(eslint@8.57.1) eslint-plugin-react-prefer-function-component: - specifier: ^3.3.0 + specifier: ^3.4.0 version: 3.4.0 eslint-plugin-react-refresh: - specifier: ^0.4.14 - version: 0.4.18(eslint@8.57.1) + specifier: ^0.4.19 + version: 0.4.19(eslint@8.57.1) eslint-plugin-simple-import-sort: specifier: ^12.1.1 version: 12.1.1(eslint@8.57.1) @@ -318,32 +318,32 @@ importers: specifier: ^7.0.1 version: 7.0.1 gulp-zip: - specifier: ^6.0.0 + specifier: ^6.1.0 version: 6.1.0(gulp@5.0.0) path: specifier: ^0.12.7 version: 0.12.7 postcss: - specifier: ^8.4.49 - version: 8.5.1 + specifier: ^8.5.3 + version: 8.5.3 prettier: - specifier: ^3.3.3 - version: 3.4.2 + specifier: ^3.5.2 + version: 3.5.2 react-dev-utils: specifier: ^12.0.1 - version: 12.0.1(eslint@8.57.1)(typescript@5.7.3)(webpack@5.97.1(esbuild@0.24.2)) + version: 12.0.1(eslint@8.57.1)(typescript@5.7.3)(webpack@5.97.1(esbuild@0.25.0)) semantic-release: - specifier: ^24.2.0 - version: 24.2.1(typescript@5.7.3) + specifier: ^24.2.3 + version: 24.2.3(typescript@5.7.3) storybook: - specifier: ^8.4.4 - version: 8.5.2(prettier@3.4.2) + specifier: ^8.6.0 + version: 8.6.0(prettier@3.5.2) typescript: - specifier: ^5.6.3 + specifier: ^5.7.3 version: 5.7.3 unocss: specifier: ^0.63.6 - version: 0.63.6(postcss@8.5.1)(rollup@4.32.1)(typescript@5.7.3)(vite@5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0)) + version: 0.63.6(postcss@8.5.3)(rollup@4.34.8)(typescript@5.7.3)(vite@5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0)) unocss-preset-primitives: specifier: 0.0.2-beta.1 version: 0.0.2-beta.1 @@ -351,19 +351,19 @@ importers: specifier: ^0.19.3 version: 0.19.3(@svgr/core@8.1.0(typescript@5.7.3))(@vue/compiler-sfc@3.5.13) vite: - specifier: ^5.4.11 - version: 5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0) + specifier: ^5.4.14 + version: 5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0) vite-plugin-inspect: - specifier: ^0.8.7 - version: 0.8.9(rollup@4.32.1)(vite@5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0)) + specifier: ^0.8.9 + version: 0.8.9(rollup@4.34.8)(vite@5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0)) vitest: - specifier: ^2.1.5 - version: 2.1.8(@types/node@22.12.0)(@vitest/ui@2.1.8)(sass@1.83.4)(terser@5.37.0) + specifier: ^2.1.9 + version: 2.1.9(@types/node@22.13.5)(@vitest/ui@2.1.9)(sass@1.85.1)(terser@5.39.0) packages: - '@adobe/css-tools@4.4.1': - resolution: {integrity: sha512-12WGKBQzjUAI4ayyF4IAtfw2QR/IDoqk6jTddXDhtYTJF9ASmoE1zst7cVtP0aL/F1jUJL5r+JxKXKEgHNbEUQ==} + '@adobe/css-tools@4.4.2': + resolution: {integrity: sha512-baYZExFpsdkBNuvGKTKWCwKH57HRZLVtycZS05WTQNVOiXVSeAki3nU35zlRbToeMW8aHlJfyS+1C4BOv27q0A==} '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} @@ -372,23 +372,29 @@ packages: '@antfu/install-pkg@0.4.1': resolution: {integrity: sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==} + '@antfu/install-pkg@1.0.0': + resolution: {integrity: sha512-xvX6P/lo1B3ej0OsaErAjqgFYzYVcJpamjLAFLYh9vRJngBrMoUG7aVnrGTeqM7yxbyTD5p3F2+0/QUEh8Vzhw==} + '@antfu/utils@0.7.10': resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} + '@antfu/utils@8.1.1': + resolution: {integrity: sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==} + '@babel/code-frame@7.26.2': resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.26.5': - resolution: {integrity: sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==} + '@babel/compat-data@7.26.8': + resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} engines: {node: '>=6.9.0'} - '@babel/core@7.26.7': - resolution: {integrity: sha512-SRijHmF0PSPgLIBYlWnG0hyeJLwXE2CgpsXaMOrtt2yp9/86ALw6oUlj9KYuZ0JN07T4eBMVIW4li/9S1j2BGA==} + '@babel/core@7.26.9': + resolution: {integrity: sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==} engines: {node: '>=6.9.0'} - '@babel/generator@7.26.5': - resolution: {integrity: sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==} + '@babel/generator@7.26.9': + resolution: {integrity: sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==} engines: {node: '>=6.9.0'} '@babel/helper-compilation-targets@7.26.5': @@ -421,12 +427,12 @@ packages: resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.26.7': - resolution: {integrity: sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A==} + '@babel/helpers@7.26.9': + resolution: {integrity: sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA==} engines: {node: '>=6.9.0'} - '@babel/parser@7.26.7': - resolution: {integrity: sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w==} + '@babel/parser@7.26.9': + resolution: {integrity: sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==} engines: {node: '>=6.0.0'} hasBin: true @@ -442,20 +448,20 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/runtime@7.26.7': - resolution: {integrity: sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ==} + '@babel/runtime@7.26.9': + resolution: {integrity: sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==} engines: {node: '>=6.9.0'} - '@babel/template@7.25.9': - resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} + '@babel/template@7.26.9': + resolution: {integrity: sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.26.7': - resolution: {integrity: sha512-1x1sgeyRLC3r5fQOM0/xtQKsYjyxmFjaOrLJNtZ81inNjyJHGIolTULPiSc/2qe1/qfpFLisLQYFnnZl7QoedA==} + '@babel/traverse@7.26.9': + resolution: {integrity: sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==} engines: {node: '>=6.9.0'} - '@babel/types@7.26.7': - resolution: {integrity: sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==} + '@babel/types@7.26.9': + resolution: {integrity: sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@0.2.3': @@ -469,13 +475,13 @@ packages: resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} - '@commitlint/cli@19.6.1': - resolution: {integrity: sha512-8hcyA6ZoHwWXC76BoC8qVOSr8xHy00LZhZpauiD0iO0VYbVhMnED0da85lTfIULxl7Lj4c6vZgF0Wu/ed1+jlQ==} + '@commitlint/cli@19.7.1': + resolution: {integrity: sha512-iObGjR1tE/PfDtDTEfd+tnRkB3/HJzpQqRTyofS2MPPkDn1mp3DBC8SoPDayokfAy+xKhF8+bwRCJO25Nea0YQ==} engines: {node: '>=v18'} hasBin: true - '@commitlint/config-conventional@19.6.0': - resolution: {integrity: sha512-DJT40iMnTYtBtUfw9ApbsLZFke1zKh6llITVJ+x9mtpHD08gsNXaIRqHTmwTZL3dNX5+WoyK7pCN/5zswvkBCQ==} + '@commitlint/config-conventional@19.7.1': + resolution: {integrity: sha512-fsEIF8zgiI/FIWSnykdQNj/0JE4av08MudLTyYHm4FlLWemKoQvPNUYU2M/3tktWcCEyq7aOkDDgtjrmgWFbvg==} engines: {node: '>=v18'} '@commitlint/config-validator@19.5.0': @@ -494,12 +500,12 @@ packages: resolution: {integrity: sha512-yNy088miE52stCI3dhG/vvxFo9e4jFkU1Mj3xECfzp/bIS/JUay4491huAlVcffOoMK1cd296q0W92NlER6r3A==} engines: {node: '>=v18'} - '@commitlint/is-ignored@19.6.0': - resolution: {integrity: sha512-Ov6iBgxJQFR9koOupDPHvcHU9keFupDgtB3lObdEZDroiG4jj1rzky60fbQozFKVYRTUdrBGICHG0YVmRuAJmw==} + '@commitlint/is-ignored@19.7.1': + resolution: {integrity: sha512-3IaOc6HVg2hAoGleRK3r9vL9zZ3XY0rf1RsUf6jdQLuaD46ZHnXBiOPTyQ004C4IvYjSWqJwlh0/u2P73aIE3g==} engines: {node: '>=v18'} - '@commitlint/lint@19.6.0': - resolution: {integrity: sha512-LRo7zDkXtcIrpco9RnfhOKeg8PAnE3oDDoalnrVU/EVaKHYBWYL1DlRR7+3AWn0JiBqD8yKOfetVxJGdEtZ0tg==} + '@commitlint/lint@19.7.1': + resolution: {integrity: sha512-LhcPfVjcOcOZA7LEuBBeO00o3MeZa+tWrX9Xyl1r9PMd5FWsEoZI9IgnGqTKZ0lZt5pO3ZlstgnRyY1CJJc9Xg==} engines: {node: '>=v18'} '@commitlint/load@19.6.1': @@ -550,6 +556,18 @@ packages: conventional-commits-parser: optional: true + '@conventional-changelog/git-client@2.0.0': + resolution: {integrity: sha512-6lD/xsDwx5xQ1dLgL1Ud47MHatuJpwVXbyHWZhlIUqRRTWTp1jRpwdk1roEaf752WA6LAbZY7elVkRQPHofUHA==} + engines: {node: '>=18'} + peerDependencies: + conventional-commits-filter: ^5.0.0 + conventional-commits-parser: ^6.1.0 + peerDependenciesMeta: + conventional-commits-filter: + optional: true + conventional-commits-parser: + optional: true + '@crxjs/vite-plugin@2.0.0-beta.21': resolution: {integrity: sha512-kSXgHHqCXASqJ8NmY94+KLGVwdtkJ0E7KsRQ+vbMpRliJ5ze0xnSk0l41p4txlUysmEoqaeo4Xb7rEFdcU2zjQ==} @@ -597,8 +615,8 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.24.2': - resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} + '@esbuild/aix-ppc64@0.25.0': + resolution: {integrity: sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -615,8 +633,8 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.24.2': - resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} + '@esbuild/android-arm64@0.25.0': + resolution: {integrity: sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==} engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -633,8 +651,8 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.24.2': - resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} + '@esbuild/android-arm@0.25.0': + resolution: {integrity: sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==} engines: {node: '>=18'} cpu: [arm] os: [android] @@ -651,8 +669,8 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.24.2': - resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} + '@esbuild/android-x64@0.25.0': + resolution: {integrity: sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -669,8 +687,8 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.24.2': - resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} + '@esbuild/darwin-arm64@0.25.0': + resolution: {integrity: sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -687,8 +705,8 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.24.2': - resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} + '@esbuild/darwin-x64@0.25.0': + resolution: {integrity: sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==} engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -705,8 +723,8 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.24.2': - resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} + '@esbuild/freebsd-arm64@0.25.0': + resolution: {integrity: sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -723,8 +741,8 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.24.2': - resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} + '@esbuild/freebsd-x64@0.25.0': + resolution: {integrity: sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -741,8 +759,8 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.24.2': - resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} + '@esbuild/linux-arm64@0.25.0': + resolution: {integrity: sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -759,8 +777,8 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.24.2': - resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} + '@esbuild/linux-arm@0.25.0': + resolution: {integrity: sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==} engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -777,8 +795,8 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.24.2': - resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} + '@esbuild/linux-ia32@0.25.0': + resolution: {integrity: sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -795,8 +813,8 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.24.2': - resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} + '@esbuild/linux-loong64@0.25.0': + resolution: {integrity: sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -813,8 +831,8 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.24.2': - resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} + '@esbuild/linux-mips64el@0.25.0': + resolution: {integrity: sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -831,8 +849,8 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.24.2': - resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} + '@esbuild/linux-ppc64@0.25.0': + resolution: {integrity: sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -849,8 +867,8 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.24.2': - resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} + '@esbuild/linux-riscv64@0.25.0': + resolution: {integrity: sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -867,8 +885,8 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.24.2': - resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} + '@esbuild/linux-s390x@0.25.0': + resolution: {integrity: sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -885,14 +903,14 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.24.2': - resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} + '@esbuild/linux-x64@0.25.0': + resolution: {integrity: sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.24.2': - resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==} + '@esbuild/netbsd-arm64@0.25.0': + resolution: {integrity: sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] @@ -909,8 +927,8 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.24.2': - resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} + '@esbuild/netbsd-x64@0.25.0': + resolution: {integrity: sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] @@ -921,8 +939,8 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.24.2': - resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} + '@esbuild/openbsd-arm64@0.25.0': + resolution: {integrity: sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -939,8 +957,8 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.24.2': - resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} + '@esbuild/openbsd-x64@0.25.0': + resolution: {integrity: sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] @@ -957,8 +975,8 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.24.2': - resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} + '@esbuild/sunos-x64@0.25.0': + resolution: {integrity: sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==} engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -975,8 +993,8 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.24.2': - resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} + '@esbuild/win32-arm64@0.25.0': + resolution: {integrity: sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==} engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -993,8 +1011,8 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.24.2': - resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} + '@esbuild/win32-ia32@0.25.0': + resolution: {integrity: sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==} engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -1011,8 +1029,8 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.24.2': - resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} + '@esbuild/win32-x64@0.25.0': + resolution: {integrity: sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -1105,8 +1123,8 @@ packages: '@iconify-json/iconoir@1.2.7': resolution: {integrity: sha512-UDlx2WeWHqopfKRsjOta6fn/KkOhF0MmI2AxoYfakqtMLlznkTnrtY9QVuXZzsbvk+Gyavq2L39VjhcxGbt+LA==} - '@iconify-json/material-symbols@1.2.13': - resolution: {integrity: sha512-7sVem5paCT87e1Hvk9tA2CHcmTSCwlJj6UlhouyNfgAqoC0W/Yj2vA9NFOdjviHgvoHT9kDCEfKxT5tpEMH6qA==} + '@iconify-json/material-symbols@1.2.14': + resolution: {integrity: sha512-S0AAFFQPVr8Dkrprspz/otNjxdD3rJRXDGZjbO8a8zn8ZR5mO8jAF81lVoTfUWxPH6SCtH2lK1JQGXHGPxld7g==} '@iconify-json/ri@1.2.5': resolution: {integrity: sha512-kWGimOXMZrlYusjBKKXYOWcKhbOHusFsmrmRGmjS7rH0BpML5A9/fy8KHZqFOwZfC4M6amObQYbh8BqO5cMC3w==} @@ -1117,8 +1135,8 @@ packages: '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} - '@iconify/utils@2.2.1': - resolution: {integrity: sha512-0/7J7hk4PqXmxo5PDBDxmnecw5PxklZJfNjIVG9FM0mEfVrvfudS22rYWsqVk6gR3UJ/mSYS90X4R3znXnqfNA==} + '@iconify/utils@2.3.0': + resolution: {integrity: sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==} '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} @@ -1136,8 +1154,8 @@ packages: resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@joshwooding/vite-plugin-react-docgen-typescript@0.4.2': - resolution: {integrity: sha512-feQ+ntr+8hbVudnsTUapiMN9q8T90XA1d5jn9QzY09sNoj4iD9wi0PY1vsBFTda4ZjEaxRK9S81oarR2nj7TFQ==} + '@joshwooding/vite-plugin-react-docgen-typescript@0.5.0': + resolution: {integrity: sha512-qYDdL7fPwLRI+bJNurVcis+tNgJmvWjH4YTBGXTA8xMuxFrnAz6E5o35iyzyKbq5J5Lr8mJGfrR5GXl+WGwhgQ==} peerDependencies: typescript: '>= 4.3.x' vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 @@ -1213,23 +1231,23 @@ packages: resolution: {integrity: sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw==} engines: {node: '>= 18'} - '@octokit/core@6.1.3': - resolution: {integrity: sha512-z+j7DixNnfpdToYsOutStDgeRzJSMnbj8T1C/oQjB6Aa+kRfNjs/Fn7W6c8bmlt6mfy3FkgeKBRnDjxQow5dow==} + '@octokit/core@6.1.4': + resolution: {integrity: sha512-lAS9k7d6I0MPN+gb9bKDt7X8SdxknYqAMh44S5L+lNqIN2NuV8nvv3g8rPp7MuRxcOpxpUIATWprO0C34a8Qmg==} engines: {node: '>= 18'} - '@octokit/endpoint@10.1.2': - resolution: {integrity: sha512-XybpFv9Ms4hX5OCHMZqyODYqGTZ3H6K6Vva+M9LR7ib/xr1y1ZnlChYv9H680y77Vd/i/k+thXApeRASBQkzhA==} + '@octokit/endpoint@10.1.3': + resolution: {integrity: sha512-nBRBMpKPhQUxCsQQeW+rCJ/OPSMcj3g0nfHn01zGYZXuNDvvXudF/TYY6APj5THlurerpFN4a/dQAIAaM6BYhA==} engines: {node: '>= 18'} - '@octokit/graphql@8.1.2': - resolution: {integrity: sha512-bdlj/CJVjpaz06NBpfHhp4kGJaRZfz7AzC+6EwUImRtrwIw8dIgJ63Xg0OzV9pRn3rIzrt5c2sa++BL0JJ8GLw==} + '@octokit/graphql@8.2.1': + resolution: {integrity: sha512-n57hXtOoHrhwTWdvhVkdJHdhTv0JstjDbDRhJfwIRNfFqmSo1DaK/mD2syoNUoLCyqSjBpGAKOG0BuwF392slw==} engines: {node: '>= 18'} '@octokit/openapi-types@23.0.1': resolution: {integrity: sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g==} - '@octokit/plugin-paginate-rest@11.4.0': - resolution: {integrity: sha512-ttpGck5AYWkwMkMazNCZMqxKqIq1fJBNxBfsFwwfyYKTf914jKkLF0POMS3YkPBwp5g1c2Y4L79gDz01GhSr1g==} + '@octokit/plugin-paginate-rest@11.4.3': + resolution: {integrity: sha512-tBXaAbXkqVJlRoA/zQVe9mUdb8rScmivqtpv3ovsC5xhje/a+NOCivs7eUhWBwCApJVsR4G5HMeaLbq7PxqZGA==} engines: {node: '>= 18'} peerDependencies: '@octokit/core': '>=6' @@ -1240,14 +1258,14 @@ packages: peerDependencies: '@octokit/core': '>=6' - '@octokit/plugin-rest-endpoint-methods@13.3.0': - resolution: {integrity: sha512-LUm44shlmkp/6VC+qQgHl3W5vzUP99ZM54zH6BuqkJK4DqfFLhegANd+fM4YRLapTvPm4049iG7F3haANKMYvQ==} + '@octokit/plugin-rest-endpoint-methods@13.3.1': + resolution: {integrity: sha512-o8uOBdsyR+WR8MK9Cco8dCgvG13H1RlM1nWnK/W7TEACQBFux/vPREgKucxUfuDQ5yi1T3hGf4C5ZmZXAERgwQ==} engines: {node: '>= 18'} peerDependencies: '@octokit/core': '>=6' - '@octokit/plugin-retry@7.1.3': - resolution: {integrity: sha512-8nKOXvYWnzv89gSyIvgFHmCBAxfQAOPRlkacUHL9r5oWtp5Whxl8Skb2n3ACZd+X6cYijD6uvmrQuPH/UCL5zQ==} + '@octokit/plugin-retry@7.1.4': + resolution: {integrity: sha512-7AIP4p9TttKN7ctygG4BtR7rrB0anZqoU9ThXFk8nETqIfvgPUANTSYHqWYknK7W3isw59LpZeLI8pcEwiJdRg==} engines: {node: '>= 18'} peerDependencies: '@octokit/core': '>=6' @@ -1258,20 +1276,20 @@ packages: peerDependencies: '@octokit/core': ^6.1.3 - '@octokit/request-error@6.1.6': - resolution: {integrity: sha512-pqnVKYo/at0NuOjinrgcQYpEbv4snvP3bKMRqHaD9kIsk9u1LCpb2smHZi8/qJfgeNqLo5hNW4Z7FezNdEo0xg==} + '@octokit/request-error@6.1.7': + resolution: {integrity: sha512-69NIppAwaauwZv6aOzb+VVLwt+0havz9GT5YplkeJv7fG7a40qpLt/yZKyiDxAhgz0EtgNdNcb96Z0u+Zyuy2g==} engines: {node: '>= 18'} - '@octokit/request@9.2.0': - resolution: {integrity: sha512-kXLfcxhC4ozCnAXy2ff+cSxpcF0A1UqxjvYMqNuPIeOAzJbVWQ+dy5G2fTylofB/gTbObT8O6JORab+5XtA1Kw==} + '@octokit/request@9.2.2': + resolution: {integrity: sha512-dZl0ZHx6gOQGcffgm1/Sf6JfEpmh34v3Af2Uci02vzUYz6qEN6zepoRtmybWXIGXFIK8K9ylE3b+duCWqhArtg==} engines: {node: '>= 18'} - '@octokit/rest@21.1.0': - resolution: {integrity: sha512-93iLxcKDJboUpmnUyeJ6cRIi7z7cqTZT1K7kRK4LobGxwTwpsa+2tQQbRQNGy7IFDEAmrtkf4F4wBj3D5rVlJQ==} + '@octokit/rest@21.1.1': + resolution: {integrity: sha512-sTQV7va0IUVZcntzy1q3QqPm/r8rWtDCqpRAmb8eXXnKkjoQEtFe3Nt5GTVsHft+R6jJoHeSiVLcgcvhtue/rg==} engines: {node: '>= 18'} - '@octokit/types@13.7.0': - resolution: {integrity: sha512-BXfRP+3P3IN6fd4uF3SniaHKOO4UXWBfkdR3vA8mIvaoO/wLjGN5qivUtW0QRitBHHMcfC41SLhNVYIZZE+wkA==} + '@octokit/types@13.8.0': + resolution: {integrity: sha512-x7DjTIbEpEWXK99DMd01QfWy0hd5h4EN+Q7shkdKds3otGQP+oWE/y0A76i1OvH9fygo4ddvNf7ZvF0t78P98A==} '@parcel/watcher-android-arm64@2.5.1': resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} @@ -1432,98 +1450,98 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.32.1': - resolution: {integrity: sha512-/pqA4DmqyCm8u5YIDzIdlLcEmuvxb0v8fZdFhVMszSpDTgbQKdw3/mB3eMUHIbubtJ6F9j+LtmyCnHTEqIHyzA==} + '@rollup/rollup-android-arm-eabi@4.34.8': + resolution: {integrity: sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.32.1': - resolution: {integrity: sha512-If3PDskT77q7zgqVqYuj7WG3WC08G1kwXGVFi9Jr8nY6eHucREHkfpX79c0ACAjLj3QIWKPJR7w4i+f5EdLH5Q==} + '@rollup/rollup-android-arm64@4.34.8': + resolution: {integrity: sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.32.1': - resolution: {integrity: sha512-zCpKHioQ9KgZToFp5Wvz6zaWbMzYQ2LJHQ+QixDKq52KKrF65ueu6Af4hLlLWHjX1Wf/0G5kSJM9PySW9IrvHA==} + '@rollup/rollup-darwin-arm64@4.34.8': + resolution: {integrity: sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.32.1': - resolution: {integrity: sha512-sFvF+t2+TyUo/ZQqUcifrJIgznx58oFZbdHS9TvHq3xhPVL9nOp+yZ6LKrO9GWTP+6DbFtoyLDbjTpR62Mbr3Q==} + '@rollup/rollup-darwin-x64@4.34.8': + resolution: {integrity: sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.32.1': - resolution: {integrity: sha512-NbOa+7InvMWRcY9RG+B6kKIMD/FsnQPH0MWUvDlQB1iXnF/UcKSudCXZtv4lW+C276g3w5AxPbfry5rSYvyeYA==} + '@rollup/rollup-freebsd-arm64@4.34.8': + resolution: {integrity: sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.32.1': - resolution: {integrity: sha512-JRBRmwvHPXR881j2xjry8HZ86wIPK2CcDw0EXchE1UgU0ubWp9nvlT7cZYKc6bkypBt745b4bglf3+xJ7hXWWw==} + '@rollup/rollup-freebsd-x64@4.34.8': + resolution: {integrity: sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.32.1': - resolution: {integrity: sha512-PKvszb+9o/vVdUzCCjL0sKHukEQV39tD3fepXxYrHE3sTKrRdCydI7uldRLbjLmDA3TFDmh418XH19NOsDRH8g==} + '@rollup/rollup-linux-arm-gnueabihf@4.34.8': + resolution: {integrity: sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.32.1': - resolution: {integrity: sha512-9WHEMV6Y89eL606ReYowXuGF1Yb2vwfKWKdD1A5h+OYnPZSJvxbEjxTRKPgi7tkP2DSnW0YLab1ooy+i/FQp/Q==} + '@rollup/rollup-linux-arm-musleabihf@4.34.8': + resolution: {integrity: sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.32.1': - resolution: {integrity: sha512-tZWc9iEt5fGJ1CL2LRPw8OttkCBDs+D8D3oEM8mH8S1ICZCtFJhD7DZ3XMGM8kpqHvhGUTvNUYVDnmkj4BDXnw==} + '@rollup/rollup-linux-arm64-gnu@4.34.8': + resolution: {integrity: sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.32.1': - resolution: {integrity: sha512-FTYc2YoTWUsBz5GTTgGkRYYJ5NGJIi/rCY4oK/I8aKowx1ToXeoVVbIE4LGAjsauvlhjfl0MYacxClLld1VrOw==} + '@rollup/rollup-linux-arm64-musl@4.34.8': + resolution: {integrity: sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.32.1': - resolution: {integrity: sha512-F51qLdOtpS6P1zJVRzYM0v6MrBNypyPEN1GfMiz0gPu9jN8ScGaEFIZQwteSsGKg799oR5EaP7+B2jHgL+d+Kw==} + '@rollup/rollup-linux-loongarch64-gnu@4.34.8': + resolution: {integrity: sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.32.1': - resolution: {integrity: sha512-wO0WkfSppfX4YFm5KhdCCpnpGbtgQNj/tgvYzrVYFKDpven8w2N6Gg5nB6w+wAMO3AIfSTWeTjfVe+uZ23zAlg==} + '@rollup/rollup-linux-powerpc64le-gnu@4.34.8': + resolution: {integrity: sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.32.1': - resolution: {integrity: sha512-iWswS9cIXfJO1MFYtI/4jjlrGb/V58oMu4dYJIKnR5UIwbkzR0PJ09O0PDZT0oJ3LYWXBSWahNf/Mjo6i1E5/g==} + '@rollup/rollup-linux-riscv64-gnu@4.34.8': + resolution: {integrity: sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.32.1': - resolution: {integrity: sha512-RKt8NI9tebzmEthMnfVgG3i/XeECkMPS+ibVZjZ6mNekpbbUmkNWuIN2yHsb/mBPyZke4nlI4YqIdFPgKuoyQQ==} + '@rollup/rollup-linux-s390x-gnu@4.34.8': + resolution: {integrity: sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.32.1': - resolution: {integrity: sha512-WQFLZ9c42ECqEjwg/GHHsouij3pzLXkFdz0UxHa/0OM12LzvX7DzedlY0SIEly2v18YZLRhCRoHZDxbBSWoGYg==} + '@rollup/rollup-linux-x64-gnu@4.34.8': + resolution: {integrity: sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.32.1': - resolution: {integrity: sha512-BLoiyHDOWoS3uccNSADMza6V6vCNiphi94tQlVIL5de+r6r/CCQuNnerf+1g2mnk2b6edp5dk0nhdZ7aEjOBsA==} + '@rollup/rollup-linux-x64-musl@4.34.8': + resolution: {integrity: sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.32.1': - resolution: {integrity: sha512-w2l3UnlgYTNNU+Z6wOR8YdaioqfEnwPjIsJ66KxKAf0p+AuL2FHeTX6qvM+p/Ue3XPBVNyVSfCrfZiQh7vZHLQ==} + '@rollup/rollup-win32-arm64-msvc@4.34.8': + resolution: {integrity: sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.32.1': - resolution: {integrity: sha512-Am9H+TGLomPGkBnaPWie4F3x+yQ2rr4Bk2jpwy+iV+Gel9jLAu/KqT8k3X4jxFPW6Zf8OMnehyutsd+eHoq1WQ==} + '@rollup/rollup-win32-ia32-msvc@4.34.8': + resolution: {integrity: sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.32.1': - resolution: {integrity: sha512-ar80GhdZb4DgmW3myIS9nRFYcpJRSME8iqWgzH2i44u+IdrzmiXVxeFnExQ5v4JYUSpg94bWjevMG8JHf1Da5Q==} + '@rollup/rollup-win32-x64-msvc@4.34.8': + resolution: {integrity: sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==} cpu: [x64] os: [win32] @@ -1571,38 +1589,38 @@ packages: peerDependencies: semantic-release: '>=20.1.0' - '@sentry-internal/browser-utils@8.52.0': - resolution: {integrity: sha512-ojFldpRpGrgacIQMbbMZeqLYetNJJ61n+Pz29FpggaIRrbkq84ocoy4FCy+9BuLo6ywgxtUFrjOXD9pPRcZtUA==} + '@sentry-internal/browser-utils@8.55.0': + resolution: {integrity: sha512-ROgqtQfpH/82AQIpESPqPQe0UyWywKJsmVIqi3c5Fh+zkds5LUxnssTj3yNd1x+kxaPDVB023jAP+3ibNgeNDw==} engines: {node: '>=14.18'} - '@sentry-internal/feedback@8.52.0': - resolution: {integrity: sha512-r62Ufg4uGlvQsQ+nRSiq9y0ieVFRlZvUaoT/zMjmPuMg29O9rRAMdPJuiCpBH4++x8KJoJ9c2HBRizn6/3uc5Q==} + '@sentry-internal/feedback@8.55.0': + resolution: {integrity: sha512-cP3BD/Q6pquVQ+YL+rwCnorKuTXiS9KXW8HNKu4nmmBAyf7urjs+F6Hr1k9MXP5yQ8W3yK7jRWd09Yu6DHWOiw==} engines: {node: '>=14.18'} - '@sentry-internal/replay-canvas@8.52.0': - resolution: {integrity: sha512-4ES2uCUb9yEO1cbg15UBqiYU/syQYj5GviI+TvYvnPX3I8K2mK941ZRqfHh2HpFMhMxLgfX4jDqDGizNhXWdqg==} + '@sentry-internal/replay-canvas@8.55.0': + resolution: {integrity: sha512-nIkfgRWk1091zHdu4NbocQsxZF1rv1f7bbp3tTIlZYbrH62XVZosx5iHAuZG0Zc48AETLE7K4AX9VGjvQj8i9w==} engines: {node: '>=14.18'} - '@sentry-internal/replay@8.52.0': - resolution: {integrity: sha512-b4hQPni1G2tcV5XuAPSV4RTX3vqPXO9RfUXLuTBzOTNzBHDoj8nQv0yVvcysGy5tBAuVRo5ya5A+PG/iC6FA9A==} + '@sentry-internal/replay@8.55.0': + resolution: {integrity: sha512-roCDEGkORwolxBn8xAKedybY+Jlefq3xYmgN2fr3BTnsXjSYOPC7D1/mYqINBat99nDtvgFvNfRcZPiwwZ1hSw==} engines: {node: '>=14.18'} - '@sentry/browser@8.52.0': - resolution: {integrity: sha512-7JpJ9zpInozBzy61eJf/6RPHoKUCFcoFuKd9rttkN1gyY9xkU1cQK+x1f0deiIHnF9ydftmDtXW+kGFI/+xqtw==} + '@sentry/browser@8.55.0': + resolution: {integrity: sha512-1A31mCEWCjaMxJt6qGUK+aDnLDcK6AwLAZnqpSchNysGni1pSn1RWSmk9TBF8qyTds5FH8B31H480uxMPUJ7Cw==} engines: {node: '>=14.18'} - '@sentry/core@8.52.0': - resolution: {integrity: sha512-2j3B7IKmseTKFm6AyheJ+RSgXqIsx+3blFSuxpkdvsEt60Lbzva2uDkCENfBDOclioo1kvHgsyuXLfWW4A+wwA==} + '@sentry/core@8.55.0': + resolution: {integrity: sha512-6g7jpbefjHYs821Z+EBJ8r4Z7LT5h80YSWRJaylGS4nW5W5Z2KXzpdnyFarv37O7QjauzVC2E+PABmpkw5/JGA==} engines: {node: '>=14.18'} - '@sentry/react@8.52.0': - resolution: {integrity: sha512-7tbRuTFOgKLM2fM5/TjrfDWbkqOOsxkb2QldnAUHTAcArIx77DpsurAgEx5L9lqn+UAhuw1X2IGbzk9fVV/ZDQ==} + '@sentry/react@8.55.0': + resolution: {integrity: sha512-/qNBvFLpvSa/Rmia0jpKfJdy16d4YZaAnH/TuKLAtm0BWlsPQzbXCU4h8C5Hsst0Do0zG613MEtEmWpWrVOqWA==} engines: {node: '>=14.18'} peerDependencies: react: ^16.14.0 || 17.x || 18.x || 19.x - '@sentry/types@8.52.0': - resolution: {integrity: sha512-+IfGczPkcyY8Oyxc2yZgcFXWapv8bGoMg/4gmK7NxeFd/XnbBPtE2IxiOfSC7h2vCoxcp0xSxWgGULlgE/8Smg==} + '@sentry/types@8.55.0': + resolution: {integrity: sha512-6LRT0+r6NWQ+RtllrUW2yQfodST0cJnkOmdpHA75vONgBUhpKwiJ4H7AmgfoTET8w29pU6AnntaGOe0LJbOmog==} engines: {node: '>=14.18'} '@sinclair/typebox@0.27.8': @@ -1620,23 +1638,23 @@ packages: resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} engines: {node: '>=18'} - '@storybook/addon-actions@8.5.2': - resolution: {integrity: sha512-g0gLesVSFgstUq5QphsLeC1vEdwNHgqo2TE0m+STM47832xbxBwmK6uvBeqi416xZvnt1TTKaaBr4uCRRQ64Ww==} + '@storybook/addon-actions@8.6.0': + resolution: {integrity: sha512-lI03stcI28wN8trjp7zx0PzN1NRxSpU/551slzEhSM0tghcLxcfLZR/wh4Jp0T68Obj7z//YXPttZ9PBFajs6w==} peerDependencies: - storybook: ^8.5.2 + storybook: ^8.6.0 - '@storybook/addon-backgrounds@8.5.2': - resolution: {integrity: sha512-l9WkI4QHfINeFQkW9K0joaM7WweKktwIIyUPEvyoupHT4n9ccJHAlWjH4SBmzwI1j1Zt0G3t+bq8mVk/YK6Fsg==} + '@storybook/addon-backgrounds@8.6.0': + resolution: {integrity: sha512-MbMPjuC19jJBXqQext8rENBACLKujDn+MuxIbNYMmn2ljzeYFp87tVxzlCB7XY7rV0zvkHxH8N/zDnPl7pBTcQ==} peerDependencies: - storybook: ^8.5.2 + storybook: ^8.6.0 - '@storybook/addon-controls@8.5.2': - resolution: {integrity: sha512-wkzw2vRff4zkzdvC/GOlB2PlV0i973u8igSLeg34TWNEAa4bipwVHnFfIojRuP9eN1bZL/0tjuU5pKnbTqH7aQ==} + '@storybook/addon-controls@8.6.0': + resolution: {integrity: sha512-oc+mssxmNY+D26jyJ+IZ1u8bmzveCO2wqpUl6vtLM5MruchZAHzHqa2ZIn+H9KOEqcKlYVDF5n6oEuprcnrsdg==} peerDependencies: - storybook: ^8.5.2 + storybook: ^8.6.0 - '@storybook/addon-designs@8.0.4': - resolution: {integrity: sha512-BrEWks1BRnZis2e8OoE1LhFS+x2d094Tzpbb3jQBve2IfDv/X006RSuy1WyplNxskdYdBESCH45MlRn4lhP5ew==} + '@storybook/addon-designs@8.2.0': + resolution: {integrity: sha512-QP5fQ5ilNUHkLzrCTM1HH/lLPgQnv3d7Il9VFFiulhXoiY1B7Aq8iO11jKGaQuDEsDLgtw8k0Smi1qFZ+QChkA==} peerDependencies: '@storybook/blocks': ^8.0.0 || ^8.1.0-0 || ^8.2.0-0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 '@storybook/components': ^8.0.0 || ^8.1.0-0 || ^8.2.0-0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 @@ -1655,92 +1673,89 @@ packages: react-dom: optional: true - '@storybook/addon-docs@8.5.2': - resolution: {integrity: sha512-pRLJ/Qb/3XHpjS7ZAMaOZYtqxOuI8wPxVKYQ6n5rfMSj2jFwt5tdDsEJdhj2t5lsY8HrzEZi8ExuW5I5RoUoIQ==} + '@storybook/addon-docs@8.6.0': + resolution: {integrity: sha512-ytYn5ec2Tp62t9emjXgm4Ds+eG7SiSg/vNeOwM6L1lM2UCV2/XdzntbqlUb/FHehSXIv9eRJDSe5BBzPieUUaw==} peerDependencies: - storybook: ^8.5.2 + storybook: ^8.6.0 - '@storybook/addon-essentials@8.5.2': - resolution: {integrity: sha512-MfojJKxDg0bnjOE0MfLSaPweAud1Esjaf1D9M8EYnpeFnKGZApcGJNRpHCDiHrS5BMr8hHa58RDVc7ObFTI4Dw==} + '@storybook/addon-essentials@8.6.0': + resolution: {integrity: sha512-T3R9Q1hq6eJKy758gQgYEuAYxcddGZ8eGBLIyIJEgzpwsUnN5mF+rIqx8LoWxpWu/xiKzg17LqCBnJbLGkRZUA==} peerDependencies: - storybook: ^8.5.2 + storybook: ^8.6.0 - '@storybook/addon-highlight@8.5.2': - resolution: {integrity: sha512-QjJfY+8e1bi6FeGfVlgxzv/I8DUyC83lZq8zfTY7nDUCVdmKi8VzmW0KgDo5PaEOFKs8x6LKJa+s5O0gFQaJMw==} + '@storybook/addon-highlight@8.6.0': + resolution: {integrity: sha512-xgSUzNV8ZpNDJ35bLz7wfg/q7/O/C5845wbZsn+PobUOWpOMOKeZwbGkO3Fh4+CWKeFuMhUpFiZSWkNgT+bV0g==} peerDependencies: - storybook: ^8.5.2 + storybook: ^8.6.0 - '@storybook/addon-links@8.5.2': - resolution: {integrity: sha512-eDKOQoAKKUQo0JqeLNzMLu6fm1s3oxwZ6O+rAWS6n5bsrjZS2Ul8esKkRriFVwHtDtqx99wneqOscS8IzE/ENw==} + '@storybook/addon-links@8.6.0': + resolution: {integrity: sha512-uKMTBSE8OMW7iHntyBlv/jyNHcWCGk2o85z3WBMjRGgPB6KrJorPluM8XVF9oOvpdk+LPqiB370tcP/7wYipYQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.5.2 + storybook: ^8.6.0 peerDependenciesMeta: react: optional: true - '@storybook/addon-measure@8.5.2': - resolution: {integrity: sha512-g7Kvrx8dqzeYWetpWYVVu4HaRzLAZVlOAlZYNfCH/aJHcFKp/p5zhPXnZh8aorxeCLHW1QSKcliaA4BNPEvTeg==} + '@storybook/addon-measure@8.6.0': + resolution: {integrity: sha512-ogc+VNLyXq8hGfI4Fkmh9i3JbxfiIViiINdBoldD6K0gId3yaqqrSwQ2vWhYIbfUuz+PsMxsoNS7MD4EiRXhPg==} peerDependencies: - storybook: ^8.5.2 + storybook: ^8.6.0 - '@storybook/addon-outline@8.5.2': - resolution: {integrity: sha512-laMVLT1xluSqMa2mMzmS1kdKcjX0HI9Fw+7pM3r4drtGWtxpyBT32YFqKfWFIBhcd364ti2tDUz9FlygGQ1rKw==} + '@storybook/addon-outline@8.6.0': + resolution: {integrity: sha512-IWxrNNZOk5rtOdnLNyK7gpqi0g0rMGYl5ju37Glbfa7iG2J1VKofG2CbkUpVyVY0uiTXqkKkhOKlc9zELhLQSg==} peerDependencies: - storybook: ^8.5.2 + storybook: ^8.6.0 - '@storybook/addon-toolbars@8.5.2': - resolution: {integrity: sha512-gHQtVCiq7HRqdYQLOmX8nhtV1Lqz4tOCj4BVodwwf8fUcHyNor+2FvGlQjngV2pIeCtxiM/qmG63UpTBp57ZMA==} + '@storybook/addon-toolbars@8.6.0': + resolution: {integrity: sha512-Mg0V9RrnDt/IQe+zjggGS+4Otkv4YFqyjL/ygwnV6aKGgzL5zFpC+5rf8MeBEvNeol9+THC/XltN/Xf+jbtLEQ==} peerDependencies: - storybook: ^8.5.2 + storybook: ^8.6.0 - '@storybook/addon-viewport@8.5.2': - resolution: {integrity: sha512-W+7nrMQmxHcUNGsXjmb/fak1mD0a5vf4y1hBhSM7/131t8KBsvEu4ral8LTUhc4ZzuU1eIUM0Qth7SjqHqm5bA==} + '@storybook/addon-viewport@8.6.0': + resolution: {integrity: sha512-sVDF3gIjGdvfBdCM/jEBu6Nd5GlqITKBtdySiQdNDl5JI4ak77ZM+T+VQmJxB4sIqvCjWzCbQqUC45nymVObug==} peerDependencies: - storybook: ^8.5.2 + storybook: ^8.6.0 - '@storybook/blocks@8.5.2': - resolution: {integrity: sha512-C6Bz/YTG5ZuyAzglqgqozYUWaS39j1PnkVuMNots6S3Fp8ZJ6iZOlQ+rpumiuvnbfD5rkEZG+614RWNyNlFy7g==} + '@storybook/blocks@8.6.0': + resolution: {integrity: sha512-3PNxlB5Ooj8CIhttbDxeV6kW7ui+2GEdTngtqhnsUHVjzeTKpilsk2lviOeUzqlyq5FDK+rhpZ3L3DJ9pDvioA==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.5.2 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + storybook: ^8.6.0 peerDependenciesMeta: react: optional: true react-dom: optional: true - '@storybook/builder-vite@8.5.2': - resolution: {integrity: sha512-5YWCHmWtZ6oBEqpcGvAmBXVfeX+zssIGWE/UUUnjkmlXO7tHvFccikOLV7/p5VCHH21AbXN8F6mnptEsMPbqqg==} + '@storybook/builder-vite@8.6.0': + resolution: {integrity: sha512-Bdc5fXLJbPdQo2eJ3dDNhfhWuQOME2KWvrixnsfo57IOhDa5B81jVcDBQIIgB9K1NQDRGyaWfYCcKZqy16yPlQ==} peerDependencies: - storybook: ^8.5.2 + storybook: ^8.6.0 vite: ^4.0.0 || ^5.0.0 || ^6.0.0 - '@storybook/components@8.5.2': - resolution: {integrity: sha512-o5vNN30sGLTJBeGk5SKyekR4RfTpBTGs2LDjXGAmpl2MRhzd62ix8g+KIXSR0rQ55TCvKUl5VR2i99ttlRcEKw==} + '@storybook/components@8.6.0': + resolution: {integrity: sha512-k5MQAuLPt5KOaa5J4QvX/WKucaiFTMJiEX5lsSaY6qON6Sx8PtnLQxVwWF7BIMW/jLpd94BUxrVjVrQKlwoLKQ==} peerDependencies: storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - '@storybook/core@8.5.2': - resolution: {integrity: sha512-rCOpXZo2XbdKVnZiv8oC9FId/gLkStpKGGL7hhdg/RyjcyUyTfhsvaf7LXKZH2A0n/UpwFxhF3idRfhgc1XiSg==} + '@storybook/core@8.6.0': + resolution: {integrity: sha512-UzVo2sNz8PZuDp++/R9NBtjupSXhvxS8lptYcwtk51b6MvcM4AL/b4V3PGryOVJDru9sMwz+pzaj7Jg8RVFMJA==} peerDependencies: prettier: ^2 || ^3 peerDependenciesMeta: prettier: optional: true - '@storybook/csf-plugin@8.5.2': - resolution: {integrity: sha512-EEQ3Vc9qIUbLH8tunzN/GSoyP3zPpNPKegZooYQbgVqA582Pel4Jnpn4uxGaOWtFCLhXMETV05X/7chGZtEujA==} + '@storybook/csf-plugin@8.6.0': + resolution: {integrity: sha512-Cd7LL4XQ8ccUDzJGxVyuzgsYuRYS5LVL4/ZNmAxikz9LtVrVFI/4RgFa5MvlQZc0twreoLtztFskziny8OiJUQ==} peerDependencies: - storybook: ^8.5.2 + storybook: ^8.6.0 '@storybook/csf@0.0.1': resolution: {integrity: sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==} - '@storybook/csf@0.1.12': - resolution: {integrity: sha512-9/exVhabisyIVL0VxTCxo01Tdm8wefIXKXfltAPTSr8cbLn5JAxGQ6QV3mjdecLGEOucfoVhAKtJfVHxEK1iqw==} - '@storybook/global@5.0.0': resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} @@ -1751,49 +1766,49 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - '@storybook/instrumenter@8.5.2': - resolution: {integrity: sha512-BbaUw9GXVzRg3Km95t2mRu4W6C1n1erjzll5maBaVe2+lV9MbCvBcdYwGUgjFNlQ/ETgq6vLfLOEtziycq/B6g==} + '@storybook/instrumenter@8.6.0': + resolution: {integrity: sha512-eEY/Hfa3Vj5Nv4vHRHlSqjoyW6oAKNK3rKIXfL/eawQwb7rKhzijDLG5YBH44Hh7dEPIqUp0LEdgpyIY7GXezg==} peerDependencies: - storybook: ^8.5.2 + storybook: ^8.6.0 - '@storybook/manager-api@8.5.2': - resolution: {integrity: sha512-Cn+oINA6BOO2GmGHinGsOWnEpoBnurlZ9ekMq7H/c1SYMvQWNg5RlELyrhsnyhNd83fqFZy9Asb0RXI8oqz7DQ==} + '@storybook/manager-api@8.6.0': + resolution: {integrity: sha512-ddBibYrO3yQCdtZBqQYqfABjR9eS+llvt2NFDajfyQw+zmuNIZfw4BDGKH1WHE4wm/kXmlFFhPHXaHgAPTRPfQ==} peerDependencies: storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - '@storybook/preview-api@8.5.2': - resolution: {integrity: sha512-AOOaBjwnkFU40Fi68fvAnK0gMWPz6o/AmH44yDGsHgbI07UgqxLBKCTpjCGPlyQd5ezEjmGwwFTmcmq5dG8DKA==} + '@storybook/preview-api@8.6.0': + resolution: {integrity: sha512-c/sZj4Tb+DtdCndcjoFUneUwl2XUdQckqN4nf1SuIJ/BXRbAexlD04fvPJ4wzmwUNg8EQF7BhTWVNDa1RvJz2w==} peerDependencies: storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - '@storybook/react-dom-shim@8.5.2': - resolution: {integrity: sha512-lt7XoaeWI8iPlWnWzIm/Wam9TpRFhlqP0KZJoKwDyHiCByqkeMrw5MJREyWq626nf34bOW8D6vkuyTzCHGTxKg==} + '@storybook/react-dom-shim@8.6.0': + resolution: {integrity: sha512-5Y+vMHhcx0xnaNsLQMbkmjc3zkDn/fGBNsiLH2e4POvW3ZQvOxjoyxAsEQaKwLtFgsdCFSd2tR89F6ItYrA2JQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.5.2 + storybook: ^8.6.0 - '@storybook/react-vite@8.5.2': - resolution: {integrity: sha512-MHsBuW23Qx6Kc55vwZ3zg6a5rkzReIcEPm38gm3vuf9vuvUsnXgvYRcu8xg3z8GakpsQNSZZJ/1sH48l0XvsSQ==} + '@storybook/react-vite@8.6.0': + resolution: {integrity: sha512-uDQyf2u0Zki4qIavOu2jyGIlvmUOsgCpHXY+7KHr542ZIkXI3mGOi5/rwUxgNSHGD3JloYGdlt+4Md+9i5xEbA==} engines: {node: '>=18.0.0'} peerDependencies: - '@storybook/test': 8.5.2 + '@storybook/test': 8.6.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.5.2 + storybook: ^8.6.0 vite: ^4.0.0 || ^5.0.0 || ^6.0.0 peerDependenciesMeta: '@storybook/test': optional: true - '@storybook/react@8.5.2': - resolution: {integrity: sha512-hWzw9ZllfzsaBJdAoEqPQ2GdVNV4c7PkvIWM6z67epaOHqsdsKScbTMe+YAvFMPtLtOO8KblIrtU5PeD4KyMgw==} + '@storybook/react@8.6.0': + resolution: {integrity: sha512-go0KhCFcOhxkTdaMCxeuJxmc/5CaiaO76+SBzIoPIMWEh9tZQmKb+vojdKcFZswHjZV3zA1uJFUzyympspRffA==} engines: {node: '>=18.0.0'} peerDependencies: - '@storybook/test': 8.5.2 + '@storybook/test': 8.6.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.5.2 + storybook: ^8.6.0 typescript: '>= 4.2.x' peerDependenciesMeta: '@storybook/test': @@ -1801,13 +1816,13 @@ packages: typescript: optional: true - '@storybook/test@8.5.2': - resolution: {integrity: sha512-F5WfD75m25ZRS19cSxCzHWJ/rH8jWwIjhBlhU+UW+5xjnTS1cJuC1yPT/5Jw0/0Aj9zG1atyfBUYnNHYtsBDYQ==} + '@storybook/test@8.6.0': + resolution: {integrity: sha512-qiiv4wh4FoxTb1PoiA/noo9HcLDqfTwL0svMoNpTy2Bxm6xajgg5zYmmIT4pKyQkMd9pfKKQKILok31VxAj8vw==} peerDependencies: - storybook: ^8.5.2 + storybook: ^8.6.0 - '@storybook/theming@8.5.2': - resolution: {integrity: sha512-vro8vJx16rIE0UehawEZbxFFA4/VGYS20PMKP6Y6Fpsce0t2/cF/U9qg3jOzVb/XDwfx+ne3/V+8rjfWx8wwJw==} + '@storybook/theming@8.6.0': + resolution: {integrity: sha512-te7dl0ZXnEyKS4LW+QHc3MP7nurWhWhmClY7G2WKNW9eHenb9zvXkcAQt6c4OWhrJi01CAYoXmZNJP0jEzxRRQ==} peerDependencies: storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 @@ -1879,68 +1894,68 @@ packages: peerDependencies: '@svgr/core': '*' - '@swc/core-darwin-arm64@1.10.11': - resolution: {integrity: sha512-ZpgEaNcx2e5D+Pd0yZGVbpSrEDOEubn7r2JXoNBf0O85lPjUm3HDzGRfLlV/MwxRPAkwm93eLP4l7gYnc50l3g==} + '@swc/core-darwin-arm64@1.11.1': + resolution: {integrity: sha512-bJbqZ51JghEZ8WaFetofkfkS3MWsS/V3vDvY+0r+SlLeocZwf8q8/GqcafnElHcU+zLV6yTi13fJwUce6ULiUQ==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.10.11': - resolution: {integrity: sha512-szObinnq2o7spXMDU5pdunmUeLrfV67Q77rV+DyojAiGJI1RSbEQotLOk+ONOLpoapwGUxOijFG4IuX1xiwQ2g==} + '@swc/core-darwin-x64@1.11.1': + resolution: {integrity: sha512-9GGEoN0uxkLg3KocOVzMfe9c9/DxESXclsL/U2xVLa3pTFB5YnXhiCP5YBT/3Q7nSGLD+R2ALqkNlDoueUjvPw==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.10.11': - resolution: {integrity: sha512-tVE8aXQwd8JUB9fOGLawFJa76nrpvp3dvErjozMmWSKWqtoeO7HV83aOrVtc8G66cj4Vq7FjTE9pOJeV1FbKRw==} + '@swc/core-linux-arm-gnueabihf@1.11.1': + resolution: {integrity: sha512-Lt7l/l0nfSTUzsWcVY3dtOPl5RtgCJ+Ya8IG4Aa3l6c7kLc6Sx4JpylpEIY9yhGidDy/uQ8KUg5kqUPtUrXrvQ==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.10.11': - resolution: {integrity: sha512-geFkENU5GMEKO7FqHOaw9HVlpQEW10nICoM6ubFc0hXBv8dwRXU4vQbh9s/isLSFRftw1m4jEEWixAnXSw8bxQ==} + '@swc/core-linux-arm64-gnu@1.11.1': + resolution: {integrity: sha512-oe826cfuGukctTSpDjk7RJRDEJihQMAzvO5tdWK0wcy+zvMPFyH5Fg6cW0X4ST3M7fcV91/1T/iuiiD2SVamYw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.10.11': - resolution: {integrity: sha512-2mMscXe/ivq8c4tO3eQSbQDFBvagMJGlalXCspn0DgDImLYTEnt/8KHMUMGVfh0gMJTZ9q4FlGLo7mlnbx99MQ==} + '@swc/core-linux-arm64-musl@1.11.1': + resolution: {integrity: sha512-ABb4pnYeQp/JBJS5Qd2apTwOzpzrTebQFUiFjk0WgTKIr9T6SL3tLXMjgvbSXIath+1HnbCKFUwDXNQhgGFFTg==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.10.11': - resolution: {integrity: sha512-eu2apgDbC4xwsigpl6LS+iyw6a3mL6kB4I+6PZMbFF2nIb1Dh7RGnu70Ai6mMn1o80fTmRSKsCT3CKMfVdeNFg==} + '@swc/core-linux-x64-gnu@1.11.1': + resolution: {integrity: sha512-E09TcHv40bV0mOHTKquZw0IOcQ+lzzpQjyOhCa7+GBpbS3eg5/35Gu7DfToN2bomz74LPKW/l7jZRG+ZNOYNHQ==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.10.11': - resolution: {integrity: sha512-0n+wPWpDigwqRay4IL2JIvAqSKCXv6nKxPig9M7+epAlEQlqX+8Oq/Ap3yHtuhjNPb7HmnqNJLCXT1Wx+BZo0w==} + '@swc/core-linux-x64-musl@1.11.1': + resolution: {integrity: sha512-cuW4r7GbvQt9uv+rGdYLHUjDvGjHmr1nYE7iFVk6r4i+byZuXBK6M7P1p+/dTzacshOc05I9n/eUV+Hfjp9a3A==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.10.11': - resolution: {integrity: sha512-7+bMSIoqcbXKosIVd314YjckDRPneA4OpG1cb3/GrkQTEDXmWT3pFBBlJf82hzJfw7b6lfv6rDVEFBX7/PJoLA==} + '@swc/core-win32-arm64-msvc@1.11.1': + resolution: {integrity: sha512-H8Q78GwaKnCL4isHx8JRTRi6vUU6iMLbpegS2jzWWC1On7EePhkLx2eR8nEsaRIQB6rc3WqdIj74OgOpNoPi7g==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.10.11': - resolution: {integrity: sha512-6hkLl4+3KjP/OFTryWxpW7YFN+w4R689TSPwiII4fFgsFNupyEmLWWakKfkGgV2JVA59L4Oi02elHy/O1sbgtw==} + '@swc/core-win32-ia32-msvc@1.11.1': + resolution: {integrity: sha512-Rx7cZ0OvqMb16fgmUSlPWQbH1+X355IDJhVQpUlpL+ezD/kkWmJix+4u2GVE/LHrfbdyZ4sjjIzSsCQxJV05Mw==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.10.11': - resolution: {integrity: sha512-kKNE2BGu/La2k2WFHovenqZvGQAHRIU+rd2/6a7D6EiQ6EyimtbhUqjCCZ+N1f5fIAnvM+sMdLiQJq4jdd/oOQ==} + '@swc/core-win32-x64-msvc@1.11.1': + resolution: {integrity: sha512-6bEEC/XU1lwYzUXY7BXj3nhe7iBF9+i9dVo+hbiVxXZMrD0LUd+7urOBM3NtVnDsUaR6Ge/g7aR+OfpgYscKOg==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.10.11': - resolution: {integrity: sha512-3zGU5y3S20cAwot9ZcsxVFNsSVaptG+dKdmAxORSE3EX7ixe1Xn5kUwLlgIsM4qrwTUWCJDLNhRS+2HLFivcDg==} + '@swc/core@1.11.1': + resolution: {integrity: sha512-67+lBHZ1lAJQKoOhBHl9DE2iugPYAulRVArZjoF+DnIY3G9wLXCXxw5It0IaCnzvJVvUPxGmr0rHViXKBDP5Vg==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '*' @@ -1954,17 +1969,17 @@ packages: '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} - '@swc/types@0.1.17': - resolution: {integrity: sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==} + '@swc/types@0.1.18': + resolution: {integrity: sha512-NZghLaQvF3eFdj2DUjGkpwaunbZYaRcxciHINnwA4n3FrLAI8hKFOBqs2wkcOiLQfWkIdfuG6gBkNFrkPNji5g==} - '@tanstack/react-virtual@3.11.3': - resolution: {integrity: sha512-vCU+OTylXN3hdC8RKg68tPlBPjjxtzon7Ys46MgrSLE+JhSjSTPvoQifV6DQJeJmA8Q3KT6CphJbejupx85vFw==} + '@tanstack/react-virtual@3.13.2': + resolution: {integrity: sha512-LceSUgABBKF6HSsHK2ZqHzQ37IKV/jlaWbHm+NyTa3/WNb/JZVcThDuTainf+PixltOOcFCYXwxbLpOX9sCx+g==} 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 - '@tanstack/virtual-core@3.11.3': - resolution: {integrity: sha512-v2mrNSnMwnPJtcVqNvV0c5roGCBqeogN8jDtgtuHCphdwBasOZ17x8UV8qpHUh+u0MLfX43c0uUHKje0s+Zb0w==} + '@tanstack/virtual-core@3.13.2': + resolution: {integrity: sha512-Qzz4EgzMbO5gKrmqUondCjiHcuu4B1ftHb0pjCut661lXZdGoHeze9f/M8iwsK1t5LGR6aNuNGU7mxkowaW6RQ==} '@testing-library/dom@10.4.0': resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} @@ -2002,8 +2017,8 @@ packages: '@types/chrome@0.0.273': resolution: {integrity: sha512-6Wp4GO07GLvti13Rf/RpYG+0COSJDOLE4iq3g1+whn1SNGUVnv6vbXqSa/WFbuVpvN1lcBLiZ40+gSeWmKb+eA==} - '@types/conventional-changelog-core@4.2.8': - resolution: {integrity: sha512-1hA2HeaQomDGq9yOkl1EHfCgWJcYphKB3otr398Ta/sjOTQS7a/Saf9RDEnQg4zSBYJfAzMzZlY5lIIh2sAuqA==} + '@types/conventional-changelog-core@8.0.0': + resolution: {integrity: sha512-YlEJa0/3fBRw98Y1IT16pepMdCydQajeIHd8Qlwex50AN+JHNUyqczW+Zox+ch7U8dSOCnAJJt8YpijibvmdGQ==} '@types/conventional-changelog-writer@4.0.10': resolution: {integrity: sha512-EK654IW1SBqTZSzN9+PlB6SKSYlDhsrCv1olfeEXvt/FHcmd7kvFWW0cFvMtnWalR/D7baYzY3FJ2TSt7UUySg==} @@ -2048,8 +2063,8 @@ packages: '@types/filewriter@0.0.33': resolution: {integrity: sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g==} - '@types/git-raw-commits@2.0.4': - resolution: {integrity: sha512-PYmTK156j6TilbwtnO2JErH4TCC1izpgP3kRE3KUX35bjBOD2A+syCGeercqHXBcM6wL+DU0WbJB2Gz8fPR+8A==} + '@types/git-raw-commits@5.0.0': + resolution: {integrity: sha512-MQIzbZxgEnKpN1kCcw9JlQIu3Wdw5c4CCCP2cUli+DYgFjzsjtGLOeUe8oqPjjrKJudOoFnNuIZb/4sYHXEWZg==} '@types/glob-stream@8.0.2': resolution: {integrity: sha512-kyuRfGE+yiSJWzSO3t74rXxdZNdYfLcllO0IUha4eX1fl40pm9L02Q/TEc3mykTLjoWz4STBNwYnUWdFu3I0DA==} @@ -2093,8 +2108,8 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node@22.12.0': - resolution: {integrity: sha512-Fll2FZ1riMjNmlmJOdAyY5pUbkftXslB5DgEzlIuNaiWhXd00FhWxVC/r4yV/4wBb9JfImTu+jiSvXTkJ7F/gA==} + '@types/node@22.13.5': + resolution: {integrity: sha512-+lTU0PxZXn0Dr1NBtC7Y8cR21AJr87dLLU953CWA6pMxxv/UDc7jYAY90upcrie1nRcD6XNG5HOYEDtgW5TxAg==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -2196,8 +2211,8 @@ packages: resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/scope-manager@8.22.0': - resolution: {integrity: sha512-/lwVV0UYgkj7wPSw0o8URy6YI64QmcOdwHuGuxWIYznO6d45ER0wXUbksr9pYdViAofpUCNJx/tAzNukgvaaiQ==} + '@typescript-eslint/scope-manager@8.25.0': + resolution: {integrity: sha512-6PPeiKIGbgStEyt4NNXa2ru5pMzQ8OYKO1hX1z53HMomrmiSB+R5FmChgQAP1ro8jMtNawz+TRQo/cSXrauTpg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/type-utils@7.18.0': @@ -2218,8 +2233,8 @@ packages: resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/types@8.22.0': - resolution: {integrity: sha512-0S4M4baNzp612zwpD4YOieP3VowOARgK2EkN/GBn95hpyF8E2fbMT55sRHWBq+Huaqk3b3XK+rxxlM8sPgGM6A==} + '@typescript-eslint/types@8.25.0': + resolution: {integrity: sha512-+vUe0Zb4tkNgznQwicsvLUJgZIRs6ITeWSCclX1q85pR1iOiaj+4uZJIUp//Z27QWu5Cseiw3O3AR8hVpax7Aw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/typescript-estree@5.62.0': @@ -2240,8 +2255,8 @@ packages: typescript: optional: true - '@typescript-eslint/typescript-estree@8.22.0': - resolution: {integrity: sha512-SJX99NAS2ugGOzpyhMza/tX+zDwjvwAtQFLsBo3GQxiGcvaKlqGBkmZ+Y1IdiSi9h4Q0Lr5ey+Cp9CGWNY/F/w==} + '@typescript-eslint/typescript-estree@8.25.0': + resolution: {integrity: sha512-ZPaiAKEZ6Blt/TPAx5Ot0EIB/yGtLI2EsGoY6F7XKklfMxYQyvtL+gT/UCqkMzO0BVFHLDlzvFqQzurYahxv9Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.8.0' @@ -2258,8 +2273,8 @@ packages: peerDependencies: eslint: ^8.56.0 - '@typescript-eslint/utils@8.22.0': - resolution: {integrity: sha512-T8oc1MbF8L+Bk2msAvCUzjxVB2Z2f+vXYfcucE2wOmYs7ZUwco5Ep0fYZw8quNwOiw9K8GYVL+Kgc2pETNTLOg==} + '@typescript-eslint/utils@8.25.0': + resolution: {integrity: sha512-syqRbrEv0J1wywiLsK60XzHnQe/kRViI3zwFALrNEgnntn1l24Ra2KvOAWwWbWZ1lBZxZljPDGOq967dsl6fkA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2273,8 +2288,8 @@ packages: resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/visitor-keys@8.22.0': - resolution: {integrity: sha512-AWpYAXnUgvLNabGTy3uBylkgZoosva/miNd1I8Bz3SjotmQPbVqhO4Cczo8AsZ44XVErEBPr/CRSgaj8sG7g0w==} + '@typescript-eslint/visitor-keys@8.25.0': + resolution: {integrity: sha512-kCYXKAum9CecGVHGij7muybDfTS2sD3t0L4bJsEZLkyrXUImiCTq1M3LG2SRtOhiHFwMR9wAFplpT6XHYjTkwQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.0': @@ -2371,8 +2386,8 @@ packages: peerDependencies: vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 - '@vitejs/plugin-react-swc@3.7.2': - resolution: {integrity: sha512-y0byko2b2tSVVf5Gpng1eEhX1OvPC7x8yns1Fx8jDzlJp4LS6CMkCPfLw47cjyoMrshQDoQw4qcgjsU9VvlCew==} + '@vitejs/plugin-react-swc@3.8.0': + resolution: {integrity: sha512-T4sHPvS+DIqDP51ifPqa9XIRAz/kIvIi8oXcnOZZgHmMotgmmdxe/DD5tMFlt5nuIRzT0/QuiwmKlH0503Aapw==} peerDependencies: vite: ^4 || ^5 || ^6 @@ -2382,11 +2397,11 @@ packages: peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 - '@vitest/coverage-v8@2.1.8': - resolution: {integrity: sha512-2Y7BPlKH18mAZYAW1tYByudlCYrQyl5RGvnnDYJKW5tCiO5qg3KSAy3XAxcxKz900a0ZXxWtKrMuZLe3lKBpJw==} + '@vitest/coverage-v8@2.1.9': + resolution: {integrity: sha512-Z2cOr0ksM00MpEfyVE8KXIYPEcBFxdbLSs56L8PO0QQMxt/6bDj45uQfxoc96v05KW3clk7vvgP0qfDit9DmfQ==} peerDependencies: - '@vitest/browser': 2.1.8 - vitest: 2.1.8 + '@vitest/browser': 2.1.9 + vitest: 2.1.9 peerDependenciesMeta: '@vitest/browser': optional: true @@ -2394,11 +2409,11 @@ packages: '@vitest/expect@2.0.5': resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} - '@vitest/expect@2.1.8': - resolution: {integrity: sha512-8ytZ/fFHq2g4PJVAtDX57mayemKgDR6X3Oa2Foro+EygiOJHUXhCqBAAKQYYajZpFoIfvBCF1j6R6IYRSIUFuw==} + '@vitest/expect@2.1.9': + resolution: {integrity: sha512-UJCIkTBenHeKT1TTlKMJWy1laZewsRIzYighyYiJKZreqtdxSos/S1t+ktRMQWu2CKqaarrkeszJx1cgC5tGZw==} - '@vitest/mocker@2.1.8': - resolution: {integrity: sha512-7guJ/47I6uqfttp33mgo6ga5Gr1VnL58rcqYKyShoRK9ebu8T5Rs6HN3s1NABiBeVTdWNrwUMcHH54uXZBN4zA==} + '@vitest/mocker@2.1.9': + resolution: {integrity: sha512-tVL6uJgoUdi6icpxmdrn5YNo3g3Dxv+IHJBr0GXHaEdTcw3F+cPKnsXFhli6nO+f/6SDKPHEK1UN+k+TQv0Ehg==} peerDependencies: msw: ^2.4.9 vite: ^5.0.0 @@ -2411,31 +2426,31 @@ packages: '@vitest/pretty-format@2.0.5': resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==} - '@vitest/pretty-format@2.1.8': - resolution: {integrity: sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ==} + '@vitest/pretty-format@2.1.9': + resolution: {integrity: sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==} - '@vitest/runner@2.1.8': - resolution: {integrity: sha512-17ub8vQstRnRlIU5k50bG+QOMLHRhYPAna5tw8tYbj+jzjcspnwnwtPtiOlkuKC4+ixDPTuLZiqiWWQ2PSXHVg==} + '@vitest/runner@2.1.9': + resolution: {integrity: sha512-ZXSSqTFIrzduD63btIfEyOmNcBmQvgOVsPNPe0jYtESiXkhd8u2erDLnMxmGrDCwHCCHE7hxwRDCT3pt0esT4g==} - '@vitest/snapshot@2.1.8': - resolution: {integrity: sha512-20T7xRFbmnkfcmgVEz+z3AU/3b0cEzZOt/zmnvZEctg64/QZbSDJEVm9fLnnlSi74KibmRsO9/Qabi+t0vCRPg==} + '@vitest/snapshot@2.1.9': + resolution: {integrity: sha512-oBO82rEjsxLNJincVhLhaxxZdEtV0EFHMK5Kmx5sJ6H9L183dHECjiefOAdnqpIgT5eZwT04PoggUnW88vOBNQ==} '@vitest/spy@2.0.5': resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} - '@vitest/spy@2.1.8': - resolution: {integrity: sha512-5swjf2q95gXeYPevtW0BLk6H8+bPlMb4Vw/9Em4hFxDcaOxS+e0LOX4yqNxoHzMR2akEB2xfpnWUzkZokmgWDg==} + '@vitest/spy@2.1.9': + resolution: {integrity: sha512-E1B35FwzXXTs9FHNK6bDszs7mtydNi5MIfUWpceJ8Xbfb1gBMscAnwLbEu+B44ed6W3XjL9/ehLPHR1fkf1KLQ==} - '@vitest/ui@2.1.8': - resolution: {integrity: sha512-5zPJ1fs0ixSVSs5+5V2XJjXLmNzjugHRyV11RqxYVR+oMcogZ9qTuSfKW+OcTV0JeFNznI83BNylzH6SSNJ1+w==} + '@vitest/ui@2.1.9': + resolution: {integrity: sha512-izzd2zmnk8Nl5ECYkW27328RbQ1nKvkm6Bb5DAaz1Gk59EbLkiCMa6OLT0NoaAYTjOFS6N+SMYW1nh4/9ljPiw==} peerDependencies: - vitest: 2.1.8 + vitest: 2.1.9 '@vitest/utils@2.0.5': resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} - '@vitest/utils@2.1.8': - resolution: {integrity: sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==} + '@vitest/utils@2.1.9': + resolution: {integrity: sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==} '@vue/compiler-core@3.5.13': resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==} @@ -2822,8 +2837,8 @@ packages: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} - call-bind-apply-helpers@1.0.1: - resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} call-bind@1.0.8: @@ -2845,14 +2860,14 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001695: - resolution: {integrity: sha512-vHyLade6wTgI2u1ec3WQBxv+2BrTERV28UXQu9LO6lZ9pYeMk34vjXFLOxo1A4UBA8XTL4njRQZdno/yYaSmWw==} + caniuse-lite@1.0.30001700: + resolution: {integrity: sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - chai@5.1.2: - resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} + chai@5.2.0: + resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} engines: {node: '>=12'} chalk@2.4.2: @@ -2915,8 +2930,8 @@ packages: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} - chromatic@11.25.1: - resolution: {integrity: sha512-D0NdcGOSy84hqgNnSY7FM4TzB77RymRTowjm4hb1CV4wbk1djKTV4SJbbYVCzHFD+n/NOg/wtZ9Y7sjiRdy8dA==} + chromatic@11.26.0: + resolution: {integrity: sha512-3rRiPmdnt5sbYZTlr6Uqd11S/teafQA1Dr6mCddIz/FFKYPv/Yt26nJllixyFd9VUwrILMPTyuracUIgJ77VZA==} hasBin: true peerDependencies: '@chromatic-com/cypress': ^0.*.* || ^1.0.0 @@ -3088,8 +3103,8 @@ packages: resolution: {integrity: sha512-SetDSntXLk8Jh1NOAl1Gu5uLiCNSYenB5tm0YVeZKePRIgDW9lQImromTwLa3c/Gae298tsgOM+/CYT9XAl0NA==} engines: {node: '>=18'} - conventional-changelog-writer@8.0.0: - resolution: {integrity: sha512-TQcoYGRatlAnT2qEWDON/XSfnVG38JzA7E0wcGScu7RElQBkg9WWgZd1peCWFcWDh1xfb2CfsrcvOn1bbSzztA==} + conventional-changelog-writer@8.0.1: + resolution: {integrity: sha512-hlqcy3xHred2gyYg/zXSMXraY2mjAYYo0msUCpK+BGyaVJMFCKWVXPIHiaacGO2GGp13kvHWXFhYmxT4QQqW3Q==} engines: {node: '>=18'} hasBin: true @@ -3106,13 +3121,13 @@ packages: engines: {node: '>=16'} hasBin: true - conventional-commits-parser@6.0.0: - resolution: {integrity: sha512-TbsINLp48XeMXR8EvGjTnKGsZqBemisPoyWESlpRyR8lif0lcwzqz+NMtYSj1ooF/WYjSuu7wX0CtdeeMEQAmA==} + conventional-commits-parser@6.1.0: + resolution: {integrity: sha512-5nxDo7TwKB5InYBl4ZC//1g9GRwB/F3TXOGR9hgUjMGfvSP4Vu5NkpNro2+1+TIEy1vwxApl5ircECr2ri5JIw==} engines: {node: '>=18'} hasBin: true - conventional-recommended-bump@10.0.0: - resolution: {integrity: sha512-RK/fUnc2btot0oEVtrj3p2doImDSs7iiz/bftFCDzels0Qs1mxLghp+DFHMaOC0qiCI6sWzlTDyBFSYuot6pRA==} + conventional-recommended-bump@11.0.0: + resolution: {integrity: sha512-+4JwCwCkPjQ6ii2rCw5CNPCuPs9hSyhzclSrleBc7NEoALTRs1jQcn1tBpr4n1nRdUecX1z6J2cxb+BnfM2WUQ==} engines: {node: '>=18'} hasBin: true @@ -3411,8 +3426,8 @@ packages: resolution: {integrity: sha512-ktkaa6XR7COAR3oj02CF3IOgz2m1hCaY3SfzvKT4Svt2MhHw9XCt+ncJNWfe2TGz31iqzNGZ8spdKQflj+Rlog==} engines: {node: '>=14.16'} - electron-to-chromium@1.5.88: - resolution: {integrity: sha512-K3C2qf1o+bGzbilTDCTBhTQcMS9KW60yTAaTeeXsfvQuTDDwlokLam/AdqlqcSy9u4UainDgsHV23ksXAOgamw==} + electron-to-chromium@1.5.105: + resolution: {integrity: sha512-ccp7LocdXx3yBhwiG0qTQ7XFrK48Ua2pxIxBdJO8cbddp/MvbBtPFzvnTchtyHQTsgqqczO8cdmAIbpMa0u2+g==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -3429,8 +3444,8 @@ packages: end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - enhanced-resolve@5.18.0: - resolution: {integrity: sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==} + enhanced-resolve@5.18.1: + resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} engines: {node: '>=10.13.0'} entities@4.5.0: @@ -3482,8 +3497,9 @@ packages: resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} engines: {node: '>= 0.4'} - es-shim-unscopables@1.0.2: - resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + es-shim-unscopables@1.1.0: + resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} + engines: {node: '>= 0.4'} es-to-primitive@1.3.0: resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} @@ -3504,8 +3520,8 @@ packages: engines: {node: '>=18'} hasBin: true - esbuild@0.24.2: - resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} + esbuild@0.25.0: + resolution: {integrity: sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==} engines: {node: '>=18'} hasBin: true @@ -3558,8 +3574,8 @@ packages: eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - eslint-import-resolver-typescript@3.7.0: - resolution: {integrity: sha512-Vrwyi8HHxY97K5ebydMtffsWAn1SCR9eol49eCd5fJS4O1WV7PaAjbcjmbfJJSMz/t4Mal212Uz/fQZrOB8mow==} + eslint-import-resolver-typescript@3.8.3: + resolution: {integrity: sha512-A0bu4Ks2QqDWNpeEgTQMPTngaMhuDu4yv6xpftBMAf+1ziXnpx+eSR1WRfoPTe2BAiAjHFZ7kSNx1fvr5g5pmQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -3642,8 +3658,8 @@ packages: eslint-plugin-react-prefer-function-component@3.4.0: resolution: {integrity: sha512-M1Up5EANZWG2wxMs4jObTDaH1Onm9hz49ZaJQbQgT7F1mzIo0pnBreu1HELNdlkKF5bKPzZ/g5DaCUd4lYVAnA==} - eslint-plugin-react-refresh@0.4.18: - resolution: {integrity: sha512-IRGEoFn3OKalm3hjfolEWGqoF/jPqeEYFp+C8B0WMzwGwBMvlRDQd06kghDhF0C61uJ6WfSDhEZE/sAQjduKgw==} + eslint-plugin-react-refresh@0.4.19: + resolution: {integrity: sha512-eyy8pcr/YxSYjBoqIFSrlbn9i/xvxUFa8CjzAYo9cFjgGXqq1hyjihcpZvxRLalpaWmueWR81xn7vuKmAFijDQ==} peerDependencies: eslint: '>=8.40' @@ -3794,8 +3810,8 @@ packages: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} - fastq@1.18.0: - resolution: {integrity: sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==} + fastq@1.19.0: + resolution: {integrity: sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==} fault@1.0.4: resolution: {integrity: sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==} @@ -3879,11 +3895,11 @@ packages: resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} - flatted@3.3.2: - resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} - for-each@0.3.4: - resolution: {integrity: sha512-kKaIINnFpzW6ffJNDjjyjrk21BkDx38c0xa/klsT8VzLCaMEefv4ZTacrcVR4DmgTeBra++jMDAfS/tS799YDw==} + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} for-in@1.0.2: @@ -3894,8 +3910,8 @@ packages: resolution: {integrity: sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==} engines: {node: '>=0.10.0'} - foreground-child@3.3.0: - resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} fork-ts-checker-webpack-plugin@6.5.3: @@ -3971,8 +3987,8 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-intrinsic@1.2.7: - resolution: {integrity: sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==} + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} get-proto@1.0.1: @@ -4075,8 +4091,8 @@ packages: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} - globals@15.14.0: - resolution: {integrity: sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==} + globals@15.15.0: + resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} engines: {node: '>=18'} globalthis@1.0.4: @@ -4087,8 +4103,8 @@ packages: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} - globby@14.0.2: - resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} + globby@14.1.0: + resolution: {integrity: sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==} engines: {node: '>=18'} glogg@2.2.0: @@ -4182,8 +4198,8 @@ packages: hast-util-parse-selector@2.2.5: resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==} - hast-util-to-jsx-runtime@2.3.2: - resolution: {integrity: sha512-1ngXYb+V9UT5h+PxNRa1O1FYguZK/XL+gkeqvp7EdHlB9oHUG0eYRo/vY5inBdcqo3RkPMC58/H94HvkbfGdyg==} + hast-util-to-jsx-runtime@2.3.5: + resolution: {integrity: sha512-gHD+HoFxOMmmXLuq9f2dZDMQHVcplCVpMfBNRpJsF03yyLZvJGzsFORe8orVuYDX9k2w0VH0uF8oryFd1whqKQ==} hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} @@ -4228,8 +4244,8 @@ packages: html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - html-to-image@1.11.11: - resolution: {integrity: sha512-9gux8QhvjRO/erSnDPv28noDZcPZmYE7e1vFsBLKLlRlKDSqNJYebj6Qz1TGd5lsRV+X+xYyjCKjuZdABinWjA==} + html-to-image@1.11.13: + resolution: {integrity: sha512-cuOPoI7WApyhBElTTb9oqsawRvZ0rHhaHwghRLlTuffoD1B2aDemlCruLeZrUIIdvG7gs9xeELEPm6PhuASqrg==} html-url-attributes@3.0.1: resolution: {integrity: sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==} @@ -4273,14 +4289,18 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} + ignore@7.0.3: + resolution: {integrity: sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA==} + engines: {node: '>= 4'} + immer@9.0.21: resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} immutable@5.0.3: resolution: {integrity: sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==} - import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} import-from-esm@2.0.0: @@ -4380,8 +4400,8 @@ packages: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} - is-boolean-object@1.2.1: - resolution: {integrity: sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==} + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} engines: {node: '>= 0.4'} is-bun-module@1.3.0: @@ -4546,8 +4566,8 @@ packages: resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} engines: {node: '>= 0.4'} - is-weakref@1.1.0: - resolution: {integrity: sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==} + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} engines: {node: '>= 0.4'} is-weakset@2.0.4: @@ -4771,6 +4791,10 @@ packages: resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==} engines: {node: '>=14'} + local-pkg@1.0.0: + resolution: {integrity: sha512-bbgPw/wmroJsil/GgL4qjDzs5YLTBMQ99weRsok1XCDccQeehbHA/I1oRvk2NPtr7KGZgT/Y5tPRnAtMqeG2Kg==} + engines: {node: '>=14'} + locate-path@2.0.0: resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} engines: {node: '>=4'} @@ -4913,8 +4937,8 @@ packages: mdast-util-gfm-autolink-literal@2.0.1: resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} - mdast-util-gfm-footnote@2.0.0: - resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} + mdast-util-gfm-footnote@2.1.0: + resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} mdast-util-gfm-strikethrough@2.0.0: resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} @@ -4925,8 +4949,8 @@ packages: mdast-util-gfm-task-list-item@2.0.0: resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} - mdast-util-gfm@3.0.0: - resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} + mdast-util-gfm@3.1.0: + resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} mdast-util-mdx-expression@2.0.1: resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} @@ -5110,8 +5134,8 @@ packages: mlly@1.7.4: resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} - mrmime@2.0.0: - resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + mrmime@2.0.1: + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} engines: {node: '>=10'} ms@2.0.0: @@ -5132,8 +5156,8 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - nanoid@5.0.9: - resolution: {integrity: sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==} + nanoid@5.1.2: + resolution: {integrity: sha512-b+CiXQCNMUGe0Ri64S9SXFcP9hogjAJ2Rd6GdVxhPLRm7mhGaM7VgOvCAJ1ZshfHbqVDI3uqTI5C8/GaKuLI7g==} engines: {node: ^18 || >=20} hasBin: true @@ -5275,8 +5299,8 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - object-inspect@1.13.3: - resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==} + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} engines: {node: '>= 0.4'} object-keys@1.1.1: @@ -5404,8 +5428,8 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - package-manager-detector@0.2.8: - resolution: {integrity: sha512-ts9KSdroZisdvKMWVAVCXiKqnqNfXz4+IbrBG8/BWx/TR5le+jfenvoBuIZ6UWM9nz47W7AbD9qYfAwfWMIwzA==} + package-manager-detector@0.2.9: + resolution: {integrity: sha512-+vYvA/Y31l8Zk8dwxHhL3JfTuHPm6tlxM2A3GeQyl7ovYnSp1+mzAxClxaOr0qO1TtPxbQxetI7v5XqKLJZk7Q==} parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} @@ -5506,9 +5530,9 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - path-type@5.0.0: - resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} - engines: {node: '>=12'} + path-type@6.0.0: + resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==} + engines: {node: '>=18'} path@0.12.7: resolution: {integrity: sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==} @@ -5516,8 +5540,8 @@ packages: pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - pathe@2.0.2: - resolution: {integrity: sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w==} + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} pathval@2.0.0: resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} @@ -5560,12 +5584,12 @@ packages: resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==} engines: {node: '>=10'} - possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} - postcss-calc@10.1.0: - resolution: {integrity: sha512-uQ/LDGsf3mgsSUEXmAt3VsCSHR3aKqtEIkmB+4PhzYwRYOW5MZs/GhCCFpsOtJJkP6EC6uGipbrnaTjqaJZcJw==} + postcss-calc@10.1.1: + resolution: {integrity: sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw==} engines: {node: ^18.12 || ^20.9 || >=22.0} peerDependencies: postcss: ^8.4.38 @@ -5736,8 +5760,8 @@ packages: resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} - postcss-selector-parser@7.0.0: - resolution: {integrity: sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==} + postcss-selector-parser@7.1.0: + resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} engines: {node: '>=4'} postcss-svgo@7.0.1: @@ -5761,8 +5785,8 @@ packages: peerDependencies: postcss: ^8.4.31 - postcss@8.5.1: - resolution: {integrity: sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==} + postcss@8.5.3: + resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: @@ -5773,8 +5797,8 @@ packages: resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} engines: {node: '>=6.0.0'} - prettier@3.4.2: - resolution: {integrity: sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==} + prettier@3.5.2: + resolution: {integrity: sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==} engines: {node: '>=14'} hasBin: true @@ -5815,8 +5839,8 @@ packages: property-information@5.6.0: resolution: {integrity: sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==} - property-information@6.5.0: - resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + property-information@7.0.0: + resolution: {integrity: sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==} proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} @@ -5836,9 +5860,6 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - queue-tick@1.0.1: - resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} - randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} @@ -5846,8 +5867,8 @@ packages: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true - react-confetti@6.2.2: - resolution: {integrity: sha512-K+kTyOPgX+ZujMZ+Rmb7pZdHBvg+DzinG/w4Eh52WOB8/pfO38efnnrtEZNJmjTvLxc16RBYO+tPM68Fg8viBA==} + react-confetti@6.2.3: + resolution: {integrity: sha512-Jt6Fy3jE7FrpKxeDQ3oh36Bz6LoYt4o+vU578ghuF//NxADlcauDYvWr24S8hHKnQ90Uv01XXOngnKVBdZ73zQ==} engines: {node: '>=16'} peerDependencies: react: ^16.3.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 @@ -5876,8 +5897,8 @@ packages: peerDependencies: react: ^18.3.1 - react-error-overlay@6.0.11: - resolution: {integrity: sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==} + react-error-overlay@6.1.0: + resolution: {integrity: sha512-SN/U6Ytxf1QGkw/9ve5Y+NxBbZM6Ht95tuXNMKs8EJyFa/Vy/+Co3stop3KBHARfn/giv+Lj1uUnTfOJ3moFEQ==} react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} @@ -5893,8 +5914,8 @@ packages: peerDependencies: react: '>=16.8.0' - react-markdown@9.0.3: - resolution: {integrity: sha512-Yk7Z94dbgYTOrdk41Z74GoKA7rThnsbbqBTRYuxoe08qvfQ9tJVhmAKw6BJS/ZORG7kTy/s1QvYzSuaoBA1qfw==} + react-markdown@9.1.0: + resolution: {integrity: sha512-xaijuJB0kzGiUdG7nc2MOMDUDBWPyGAjZtUrow9XxUeua8IqeP+VlIfAZ3bphpcLTnSZXz6z9jcVC/TCwbfgdw==} peerDependencies: '@types/react': '>=18' react: '>=18' @@ -5935,8 +5956,8 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} - readdirp@4.1.1: - resolution: {integrity: sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==} + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} recast@0.23.9: @@ -5969,12 +5990,12 @@ packages: resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} - registry-auth-token@5.0.3: - resolution: {integrity: sha512-1bpc9IyC+e+CNFRaWyn77tk4xGG4PPUyfakSmA6F6cvUDjrm58dfyJ3II+9yb10EDkHoy1LaPSmHaWLOH3m6HA==} + registry-auth-token@5.1.0: + resolution: {integrity: sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw==} engines: {node: '>=14'} - remark-gfm@4.0.0: - resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} + remark-gfm@4.0.1: + resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} remark-parse@11.0.0: resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} @@ -6040,8 +6061,8 @@ packages: resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} hasBin: true - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} rimraf@3.0.2: @@ -6054,8 +6075,8 @@ packages: engines: {node: '>=10.0.0'} hasBin: true - rollup@4.32.1: - resolution: {integrity: sha512-z+aeEsOeEa3mEbS1Tjl6sAZ8NE3+AalQz1RJGj81M+fizusbdDMoEJwdJNHfaB40Scr4qNu+welOfes7maKonA==} + rollup@4.34.8: + resolution: {integrity: sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -6090,8 +6111,8 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sass@1.83.4: - resolution: {integrity: sha512-B1bozCeNQiOgDcLd33e2Cs2U60wZwjUUXzh900ZyQF5qUasvMdDZYbQ566LJu7cqR+sAHlAfO6RMkaID5s6qpA==} + sass@1.85.1: + resolution: {integrity: sha512-Uk8WpxM5v+0cMR0XjX9KfRIacmSG86RH4DCCZjLU2rFh5tyutt9siAXJ7G+YfxQ99Q6wrRMbMlVl6KqUms71ag==} engines: {node: '>=14.0.0'} hasBin: true @@ -6110,8 +6131,8 @@ packages: resolution: {integrity: sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==} engines: {node: '>= 10.13.0'} - semantic-release@24.2.1: - resolution: {integrity: sha512-z0/3cutKNkLQ4Oy0HTi3lubnjTsdjjgOqmxdPjeYWe6lhFqUPfwslZxRHv3HDZlN4MhnZitb9SLihDkZNxOXfQ==} + semantic-release@24.2.3: + resolution: {integrity: sha512-KRhQG9cUazPavJiJEFIJ3XAMjgfd0fcK3B+T26qOl8L0UG5aZUjeRfREO0KM5InGtYwxqiiytkJrbcYoLDEv0A==} engines: {node: '>=20.8.1'} hasBin: true @@ -6131,8 +6152,8 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} engines: {node: '>=10'} hasBin: true @@ -6200,8 +6221,8 @@ packages: resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} engines: {node: '>= 10'} - sirv@3.0.0: - resolution: {integrity: sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==} + sirv@3.0.1: + resolution: {integrity: sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==} engines: {node: '>=18'} sisteransi@1.0.5: @@ -6287,8 +6308,8 @@ packages: std-env@3.8.0: resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} - storybook@8.5.2: - resolution: {integrity: sha512-pf84emQ7Pd5jBdT2gzlNs4kRaSI3pq0Lh8lSfV+YqIVXztXIHU+Lqyhek2Lhjb7btzA1tExrhJrgQUsIji7i7A==} + storybook@8.6.0: + resolution: {integrity: sha512-NEHCK2nXogw7WxAkJfMwPnc5Cmh/KqVNrdaFeXBAKhC2Zr1FTZIiCR5nSUT85run44Wkpmo7qvUoKvII9GOWbA==} hasBin: true peerDependencies: prettier: ^2 || ^3 @@ -6309,8 +6330,8 @@ packages: stream-exhaust@1.0.2: resolution: {integrity: sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==} - streamx@2.21.1: - resolution: {integrity: sha512-PhP9wUnFLa+91CPy3N6tiQsK+gnYyUNuk15S3YG/zjYE7RuPeCjJngqnzpC31ow0lzBHQ+QGO4cNJnd0djYUsw==} + streamx@2.22.0: + resolution: {integrity: sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==} string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} @@ -6417,8 +6438,8 @@ packages: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} - supports-hyperlinks@3.1.0: - resolution: {integrity: sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==} + supports-hyperlinks@3.2.0: + resolution: {integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==} engines: {node: '>=14.18'} supports-preserve-symlinks-flag@1.0.0: @@ -6478,8 +6499,8 @@ packages: uglify-js: optional: true - terser@5.37.0: - resolution: {integrity: sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==} + terser@5.39.0: + resolution: {integrity: sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==} engines: {node: '>=10'} hasBin: true @@ -6526,8 +6547,8 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyglobby@0.2.10: - resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} + tinyglobby@0.2.12: + resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} engines: {node: '>=12.0.0'} tinypool@1.0.2: @@ -6570,8 +6591,8 @@ packages: peerDependencies: typescript: '>=4.2.0' - ts-api-utils@2.0.0: - resolution: {integrity: sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==} + ts-api-utils@2.0.1: + resolution: {integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' @@ -6599,8 +6620,8 @@ packages: peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - tsx@4.19.2: - resolution: {integrity: sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==} + tsx@4.19.3: + resolution: {integrity: sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==} engines: {node: '>=18.0.0'} hasBin: true @@ -6623,8 +6644,8 @@ packages: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} - type-fest@4.33.0: - resolution: {integrity: sha512-s6zVrxuyKbbAsSAD5ZPTB77q4YIdRctkTbJ2/Dqlinwz+8ooH2gd+YA7VA6Pa93KML9GockVvoxjZ2vHP+mu8g==} + type-fest@4.35.0: + resolution: {integrity: sha512-2/AwEFQDFEy30iOLjrvHDIH7e4HEWH+f1Yl1bI5XMqzuoCUqwYCdxachgsgv0og/JdVZUhbfjcJAoHj5L1753A==} engines: {node: '>=16'} typed-array-buffer@1.0.3: @@ -6824,8 +6845,8 @@ packages: resolution: {integrity: sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g==} engines: {node: '>=10.13.0'} - vite-node@2.1.8: - resolution: {integrity: sha512-uPAwSr57kYjAUux+8E2j0q0Fxpn8M9VoyfGiRI8Kfktz9NcYMCenwY5RnZxnF1WTu3TGiYipirIzacLL3VVGFg==} + vite-node@2.1.9: + resolution: {integrity: sha512-AM9aQ/IPrW/6ENLQg3AGY4K1N2TGZdR5e4gu/MmmR2xR3Ll1+dib+nook92g4TV3PXVyeyxdWwtaCAiUL0hMxA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -6870,15 +6891,15 @@ packages: terser: optional: true - vitest@2.1.8: - resolution: {integrity: sha512-1vBKTZskHw/aosXqQUlVWWlGUxSJR8YtiyZDJAFeW2kPAeX6S3Sool0mjspO+kXLuxVWlEDDowBAeqeAQefqLQ==} + vitest@2.1.9: + resolution: {integrity: sha512-MSmPM9REYqDGBI8439mA4mWhV5sKmDlBKWIYbA3lRb2PTHACE0mgKwA8yQ2xq9vxDTuk4iPrECBAEW2aoFXY0Q==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 2.1.8 - '@vitest/ui': 2.1.8 + '@vitest/browser': 2.1.9 + '@vitest/ui': 2.1.9 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -6983,8 +7004,8 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + ws@8.18.1: + resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -7046,7 +7067,7 @@ packages: snapshots: - '@adobe/css-tools@4.4.1': {} + '@adobe/css-tools@4.4.2': {} '@ampproject/remapping@2.3.0': dependencies: @@ -7055,31 +7076,38 @@ snapshots: '@antfu/install-pkg@0.4.1': dependencies: - package-manager-detector: 0.2.8 + package-manager-detector: 0.2.9 + tinyexec: 0.3.2 + + '@antfu/install-pkg@1.0.0': + dependencies: + package-manager-detector: 0.2.9 tinyexec: 0.3.2 '@antfu/utils@0.7.10': {} + '@antfu/utils@8.1.1': {} + '@babel/code-frame@7.26.2': dependencies: '@babel/helper-validator-identifier': 7.25.9 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.26.5': {} + '@babel/compat-data@7.26.8': {} - '@babel/core@7.26.7': + '@babel/core@7.26.9': dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.5 + '@babel/generator': 7.26.9 '@babel/helper-compilation-targets': 7.26.5 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.7) - '@babel/helpers': 7.26.7 - '@babel/parser': 7.26.7 - '@babel/template': 7.25.9 - '@babel/traverse': 7.26.7 - '@babel/types': 7.26.7 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.9) + '@babel/helpers': 7.26.9 + '@babel/parser': 7.26.9 + '@babel/template': 7.26.9 + '@babel/traverse': 7.26.9 + '@babel/types': 7.26.9 convert-source-map: 2.0.0 debug: 4.4.0 gensync: 1.0.0-beta.2 @@ -7088,17 +7116,17 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.26.5': + '@babel/generator@7.26.9': dependencies: - '@babel/parser': 7.26.7 - '@babel/types': 7.26.7 + '@babel/parser': 7.26.9 + '@babel/types': 7.26.9 '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.1.0 '@babel/helper-compilation-targets@7.26.5': dependencies: - '@babel/compat-data': 7.26.5 + '@babel/compat-data': 7.26.8 '@babel/helper-validator-option': 7.25.9 browserslist: 4.24.4 lru-cache: 5.1.1 @@ -7106,17 +7134,17 @@ snapshots: '@babel/helper-module-imports@7.25.9': dependencies: - '@babel/traverse': 7.26.7 - '@babel/types': 7.26.7 + '@babel/traverse': 7.26.9 + '@babel/types': 7.26.9 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.7)': + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.9)': dependencies: - '@babel/core': 7.26.7 + '@babel/core': 7.26.9 '@babel/helper-module-imports': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.26.7 + '@babel/traverse': 7.26.9 transitivePeerDependencies: - supports-color @@ -7128,48 +7156,48 @@ snapshots: '@babel/helper-validator-option@7.25.9': {} - '@babel/helpers@7.26.7': + '@babel/helpers@7.26.9': dependencies: - '@babel/template': 7.25.9 - '@babel/types': 7.26.7 + '@babel/template': 7.26.9 + '@babel/types': 7.26.9 - '@babel/parser@7.26.7': + '@babel/parser@7.26.9': dependencies: - '@babel/types': 7.26.7 + '@babel/types': 7.26.9 - '@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.7)': + '@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.9)': dependencies: - '@babel/core': 7.26.7 + '@babel/core': 7.26.9 '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.26.7)': + '@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.26.9)': dependencies: - '@babel/core': 7.26.7 + '@babel/core': 7.26.9 '@babel/helper-plugin-utils': 7.26.5 - '@babel/runtime@7.26.7': + '@babel/runtime@7.26.9': dependencies: regenerator-runtime: 0.14.1 - '@babel/template@7.25.9': + '@babel/template@7.26.9': dependencies: '@babel/code-frame': 7.26.2 - '@babel/parser': 7.26.7 - '@babel/types': 7.26.7 + '@babel/parser': 7.26.9 + '@babel/types': 7.26.9 - '@babel/traverse@7.26.7': + '@babel/traverse@7.26.9': dependencies: '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.5 - '@babel/parser': 7.26.7 - '@babel/template': 7.25.9 - '@babel/types': 7.26.7 + '@babel/generator': 7.26.9 + '@babel/parser': 7.26.9 + '@babel/template': 7.26.9 + '@babel/types': 7.26.9 debug: 4.4.0 globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/types@7.26.7': + '@babel/types@7.26.9': dependencies: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 @@ -7178,10 +7206,10 @@ snapshots: '@chromatic-com/storybook@2.0.2(react@18.3.1)': dependencies: - chromatic: 11.25.1 + chromatic: 11.26.0 filesize: 10.1.6 jsonfile: 6.1.0 - react-confetti: 6.2.2(react@18.3.1) + react-confetti: 6.2.3(react@18.3.1) strip-ansi: 7.1.0 transitivePeerDependencies: - '@chromatic-com/cypress' @@ -7191,11 +7219,11 @@ snapshots: '@colors/colors@1.5.0': optional: true - '@commitlint/cli@19.6.1(@types/node@22.12.0)(typescript@5.7.3)': + '@commitlint/cli@19.7.1(@types/node@22.13.5)(typescript@5.7.3)': dependencies: '@commitlint/format': 19.5.0 - '@commitlint/lint': 19.6.0 - '@commitlint/load': 19.6.1(@types/node@22.12.0)(typescript@5.7.3) + '@commitlint/lint': 19.7.1 + '@commitlint/load': 19.6.1(@types/node@22.13.5)(typescript@5.7.3) '@commitlint/read': 19.5.0 '@commitlint/types': 19.5.0 tinyexec: 0.3.2 @@ -7204,7 +7232,7 @@ snapshots: - '@types/node' - typescript - '@commitlint/config-conventional@19.6.0': + '@commitlint/config-conventional@19.7.1': dependencies: '@commitlint/types': 19.5.0 conventional-changelog-conventionalcommits: 7.0.2 @@ -7230,19 +7258,19 @@ snapshots: '@commitlint/types': 19.5.0 chalk: 5.4.1 - '@commitlint/is-ignored@19.6.0': + '@commitlint/is-ignored@19.7.1': dependencies: '@commitlint/types': 19.5.0 - semver: 7.6.3 + semver: 7.7.1 - '@commitlint/lint@19.6.0': + '@commitlint/lint@19.7.1': dependencies: - '@commitlint/is-ignored': 19.6.0 + '@commitlint/is-ignored': 19.7.1 '@commitlint/parse': 19.5.0 '@commitlint/rules': 19.6.0 '@commitlint/types': 19.5.0 - '@commitlint/load@19.6.1(@types/node@22.12.0)(typescript@5.7.3)': + '@commitlint/load@19.6.1(@types/node@22.13.5)(typescript@5.7.3)': dependencies: '@commitlint/config-validator': 19.5.0 '@commitlint/execute-rule': 19.5.0 @@ -7250,7 +7278,7 @@ snapshots: '@commitlint/types': 19.5.0 chalk: 5.4.1 cosmiconfig: 9.0.0(typescript@5.7.3) - cosmiconfig-typescript-loader: 6.1.0(@types/node@22.12.0)(cosmiconfig@9.0.0(typescript@5.7.3))(typescript@5.7.3) + cosmiconfig-typescript-loader: 6.1.0(@types/node@22.13.5)(cosmiconfig@9.0.0(typescript@5.7.3))(typescript@5.7.3) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -7301,13 +7329,20 @@ snapshots: '@types/conventional-commits-parser': 5.0.1 chalk: 5.4.1 - '@conventional-changelog/git-client@1.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0)': + '@conventional-changelog/git-client@1.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.1.0)': dependencies: '@types/semver': 7.5.8 - semver: 7.6.3 + semver: 7.7.1 optionalDependencies: conventional-commits-filter: 5.0.0 - conventional-commits-parser: 6.0.0 + conventional-commits-parser: 6.1.0 + + '@conventional-changelog/git-client@2.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.1.0)': + dependencies: + semver: 7.7.1 + optionalDependencies: + conventional-commits-filter: 5.0.0 + conventional-commits-parser: 6.1.0 '@crxjs/vite-plugin@2.0.0-beta.21(patch_hash=xq4uab3o3kbvv4gixvawl2aj5q)': dependencies: @@ -7374,7 +7409,7 @@ snapshots: '@esbuild/aix-ppc64@0.23.1': optional: true - '@esbuild/aix-ppc64@0.24.2': + '@esbuild/aix-ppc64@0.25.0': optional: true '@esbuild/android-arm64@0.21.5': @@ -7383,7 +7418,7 @@ snapshots: '@esbuild/android-arm64@0.23.1': optional: true - '@esbuild/android-arm64@0.24.2': + '@esbuild/android-arm64@0.25.0': optional: true '@esbuild/android-arm@0.21.5': @@ -7392,7 +7427,7 @@ snapshots: '@esbuild/android-arm@0.23.1': optional: true - '@esbuild/android-arm@0.24.2': + '@esbuild/android-arm@0.25.0': optional: true '@esbuild/android-x64@0.21.5': @@ -7401,7 +7436,7 @@ snapshots: '@esbuild/android-x64@0.23.1': optional: true - '@esbuild/android-x64@0.24.2': + '@esbuild/android-x64@0.25.0': optional: true '@esbuild/darwin-arm64@0.21.5': @@ -7410,7 +7445,7 @@ snapshots: '@esbuild/darwin-arm64@0.23.1': optional: true - '@esbuild/darwin-arm64@0.24.2': + '@esbuild/darwin-arm64@0.25.0': optional: true '@esbuild/darwin-x64@0.21.5': @@ -7419,7 +7454,7 @@ snapshots: '@esbuild/darwin-x64@0.23.1': optional: true - '@esbuild/darwin-x64@0.24.2': + '@esbuild/darwin-x64@0.25.0': optional: true '@esbuild/freebsd-arm64@0.21.5': @@ -7428,7 +7463,7 @@ snapshots: '@esbuild/freebsd-arm64@0.23.1': optional: true - '@esbuild/freebsd-arm64@0.24.2': + '@esbuild/freebsd-arm64@0.25.0': optional: true '@esbuild/freebsd-x64@0.21.5': @@ -7437,7 +7472,7 @@ snapshots: '@esbuild/freebsd-x64@0.23.1': optional: true - '@esbuild/freebsd-x64@0.24.2': + '@esbuild/freebsd-x64@0.25.0': optional: true '@esbuild/linux-arm64@0.21.5': @@ -7446,7 +7481,7 @@ snapshots: '@esbuild/linux-arm64@0.23.1': optional: true - '@esbuild/linux-arm64@0.24.2': + '@esbuild/linux-arm64@0.25.0': optional: true '@esbuild/linux-arm@0.21.5': @@ -7455,7 +7490,7 @@ snapshots: '@esbuild/linux-arm@0.23.1': optional: true - '@esbuild/linux-arm@0.24.2': + '@esbuild/linux-arm@0.25.0': optional: true '@esbuild/linux-ia32@0.21.5': @@ -7464,7 +7499,7 @@ snapshots: '@esbuild/linux-ia32@0.23.1': optional: true - '@esbuild/linux-ia32@0.24.2': + '@esbuild/linux-ia32@0.25.0': optional: true '@esbuild/linux-loong64@0.21.5': @@ -7473,7 +7508,7 @@ snapshots: '@esbuild/linux-loong64@0.23.1': optional: true - '@esbuild/linux-loong64@0.24.2': + '@esbuild/linux-loong64@0.25.0': optional: true '@esbuild/linux-mips64el@0.21.5': @@ -7482,7 +7517,7 @@ snapshots: '@esbuild/linux-mips64el@0.23.1': optional: true - '@esbuild/linux-mips64el@0.24.2': + '@esbuild/linux-mips64el@0.25.0': optional: true '@esbuild/linux-ppc64@0.21.5': @@ -7491,7 +7526,7 @@ snapshots: '@esbuild/linux-ppc64@0.23.1': optional: true - '@esbuild/linux-ppc64@0.24.2': + '@esbuild/linux-ppc64@0.25.0': optional: true '@esbuild/linux-riscv64@0.21.5': @@ -7500,7 +7535,7 @@ snapshots: '@esbuild/linux-riscv64@0.23.1': optional: true - '@esbuild/linux-riscv64@0.24.2': + '@esbuild/linux-riscv64@0.25.0': optional: true '@esbuild/linux-s390x@0.21.5': @@ -7509,7 +7544,7 @@ snapshots: '@esbuild/linux-s390x@0.23.1': optional: true - '@esbuild/linux-s390x@0.24.2': + '@esbuild/linux-s390x@0.25.0': optional: true '@esbuild/linux-x64@0.21.5': @@ -7518,10 +7553,10 @@ snapshots: '@esbuild/linux-x64@0.23.1': optional: true - '@esbuild/linux-x64@0.24.2': + '@esbuild/linux-x64@0.25.0': optional: true - '@esbuild/netbsd-arm64@0.24.2': + '@esbuild/netbsd-arm64@0.25.0': optional: true '@esbuild/netbsd-x64@0.21.5': @@ -7530,13 +7565,13 @@ snapshots: '@esbuild/netbsd-x64@0.23.1': optional: true - '@esbuild/netbsd-x64@0.24.2': + '@esbuild/netbsd-x64@0.25.0': optional: true '@esbuild/openbsd-arm64@0.23.1': optional: true - '@esbuild/openbsd-arm64@0.24.2': + '@esbuild/openbsd-arm64@0.25.0': optional: true '@esbuild/openbsd-x64@0.21.5': @@ -7545,7 +7580,7 @@ snapshots: '@esbuild/openbsd-x64@0.23.1': optional: true - '@esbuild/openbsd-x64@0.24.2': + '@esbuild/openbsd-x64@0.25.0': optional: true '@esbuild/sunos-x64@0.21.5': @@ -7554,7 +7589,7 @@ snapshots: '@esbuild/sunos-x64@0.23.1': optional: true - '@esbuild/sunos-x64@0.24.2': + '@esbuild/sunos-x64@0.25.0': optional: true '@esbuild/win32-arm64@0.21.5': @@ -7563,7 +7598,7 @@ snapshots: '@esbuild/win32-arm64@0.23.1': optional: true - '@esbuild/win32-arm64@0.24.2': + '@esbuild/win32-arm64@0.25.0': optional: true '@esbuild/win32-ia32@0.21.5': @@ -7572,7 +7607,7 @@ snapshots: '@esbuild/win32-ia32@0.23.1': optional: true - '@esbuild/win32-ia32@0.24.2': + '@esbuild/win32-ia32@0.25.0': optional: true '@esbuild/win32-x64@0.21.5': @@ -7581,7 +7616,7 @@ snapshots: '@esbuild/win32-x64@0.23.1': optional: true - '@esbuild/win32-x64@0.24.2': + '@esbuild/win32-x64@0.25.0': optional: true '@eslint-community/eslint-utils@4.4.1(eslint@8.57.1)': @@ -7598,7 +7633,7 @@ snapshots: espree: 9.6.1 globals: 13.24.0 ignore: 5.3.2 - import-fresh: 3.3.0 + import-fresh: 3.3.1 js-yaml: 4.1.0 minimatch: 3.1.2 strip-json-comments: 3.1.1 @@ -7653,7 +7688,7 @@ snapshots: '@floating-ui/react': 0.26.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-aria/focus': 3.19.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-aria/interactions': 3.23.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@tanstack/react-virtual': 3.11.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tanstack/react-virtual': 3.13.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -7683,7 +7718,7 @@ snapshots: dependencies: '@iconify/types': 2.0.0 - '@iconify-json/material-symbols@1.2.13': + '@iconify-json/material-symbols@1.2.14': dependencies: '@iconify/types': 2.0.0 @@ -7697,15 +7732,15 @@ snapshots: '@iconify/types@2.0.0': {} - '@iconify/utils@2.2.1': + '@iconify/utils@2.3.0': dependencies: - '@antfu/install-pkg': 0.4.1 - '@antfu/utils': 0.7.10 + '@antfu/install-pkg': 1.0.0 + '@antfu/utils': 8.1.1 '@iconify/types': 2.0.0 debug: 4.4.0 - globals: 15.14.0 + globals: 15.15.0 kolorist: 1.8.0 - local-pkg: 0.5.1 + local-pkg: 1.0.0 mlly: 1.7.4 transitivePeerDependencies: - supports-color @@ -7730,15 +7765,16 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.12.0 + '@types/node': 22.13.5 '@types/yargs': 17.0.33 chalk: 4.1.2 - '@joshwooding/vite-plugin-react-docgen-typescript@0.4.2(typescript@5.7.3)(vite@5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.5.0(typescript@5.7.3)(vite@5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0))': dependencies: + glob: 10.4.5 magic-string: 0.27.0 react-docgen-typescript: 2.2.2(typescript@5.7.3) - vite: 5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0) + vite: 5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0) optionalDependencies: typescript: 5.7.3 @@ -7805,82 +7841,82 @@ snapshots: '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.18.0 + fastq: 1.19.0 '@nolyfill/is-core-module@1.0.39': {} '@octokit/auth-token@5.1.2': {} - '@octokit/core@6.1.3': + '@octokit/core@6.1.4': dependencies: '@octokit/auth-token': 5.1.2 - '@octokit/graphql': 8.1.2 - '@octokit/request': 9.2.0 - '@octokit/request-error': 6.1.6 - '@octokit/types': 13.7.0 + '@octokit/graphql': 8.2.1 + '@octokit/request': 9.2.2 + '@octokit/request-error': 6.1.7 + '@octokit/types': 13.8.0 before-after-hook: 3.0.2 universal-user-agent: 7.0.2 - '@octokit/endpoint@10.1.2': + '@octokit/endpoint@10.1.3': dependencies: - '@octokit/types': 13.7.0 + '@octokit/types': 13.8.0 universal-user-agent: 7.0.2 - '@octokit/graphql@8.1.2': + '@octokit/graphql@8.2.1': dependencies: - '@octokit/request': 9.2.0 - '@octokit/types': 13.7.0 + '@octokit/request': 9.2.2 + '@octokit/types': 13.8.0 universal-user-agent: 7.0.2 '@octokit/openapi-types@23.0.1': {} - '@octokit/plugin-paginate-rest@11.4.0(@octokit/core@6.1.3)': + '@octokit/plugin-paginate-rest@11.4.3(@octokit/core@6.1.4)': dependencies: - '@octokit/core': 6.1.3 - '@octokit/types': 13.7.0 + '@octokit/core': 6.1.4 + '@octokit/types': 13.8.0 - '@octokit/plugin-request-log@5.3.1(@octokit/core@6.1.3)': + '@octokit/plugin-request-log@5.3.1(@octokit/core@6.1.4)': dependencies: - '@octokit/core': 6.1.3 + '@octokit/core': 6.1.4 - '@octokit/plugin-rest-endpoint-methods@13.3.0(@octokit/core@6.1.3)': + '@octokit/plugin-rest-endpoint-methods@13.3.1(@octokit/core@6.1.4)': dependencies: - '@octokit/core': 6.1.3 - '@octokit/types': 13.7.0 + '@octokit/core': 6.1.4 + '@octokit/types': 13.8.0 - '@octokit/plugin-retry@7.1.3(@octokit/core@6.1.3)': + '@octokit/plugin-retry@7.1.4(@octokit/core@6.1.4)': dependencies: - '@octokit/core': 6.1.3 - '@octokit/request-error': 6.1.6 - '@octokit/types': 13.7.0 + '@octokit/core': 6.1.4 + '@octokit/request-error': 6.1.7 + '@octokit/types': 13.8.0 bottleneck: 2.19.5 - '@octokit/plugin-throttling@9.4.0(@octokit/core@6.1.3)': + '@octokit/plugin-throttling@9.4.0(@octokit/core@6.1.4)': dependencies: - '@octokit/core': 6.1.3 - '@octokit/types': 13.7.0 + '@octokit/core': 6.1.4 + '@octokit/types': 13.8.0 bottleneck: 2.19.5 - '@octokit/request-error@6.1.6': + '@octokit/request-error@6.1.7': dependencies: - '@octokit/types': 13.7.0 + '@octokit/types': 13.8.0 - '@octokit/request@9.2.0': + '@octokit/request@9.2.2': dependencies: - '@octokit/endpoint': 10.1.2 - '@octokit/request-error': 6.1.6 - '@octokit/types': 13.7.0 + '@octokit/endpoint': 10.1.3 + '@octokit/request-error': 6.1.7 + '@octokit/types': 13.8.0 fast-content-type-parse: 2.0.1 universal-user-agent: 7.0.2 - '@octokit/rest@21.1.0': + '@octokit/rest@21.1.1': dependencies: - '@octokit/core': 6.1.3 - '@octokit/plugin-paginate-rest': 11.4.0(@octokit/core@6.1.3) - '@octokit/plugin-request-log': 5.3.1(@octokit/core@6.1.3) - '@octokit/plugin-rest-endpoint-methods': 13.3.0(@octokit/core@6.1.3) + '@octokit/core': 6.1.4 + '@octokit/plugin-paginate-rest': 11.4.3(@octokit/core@6.1.4) + '@octokit/plugin-request-log': 5.3.1(@octokit/core@6.1.4) + '@octokit/plugin-rest-endpoint-methods': 13.3.1(@octokit/core@6.1.4) - '@octokit/types@13.7.0': + '@octokit/types@13.8.0': dependencies: '@octokit/openapi-types': 23.0.1 @@ -8017,86 +8053,86 @@ snapshots: estree-walker: 2.0.2 picomatch: 2.3.1 - '@rollup/pluginutils@5.1.4(rollup@4.32.1)': + '@rollup/pluginutils@5.1.4(rollup@4.34.8)': dependencies: '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: - rollup: 4.32.1 + rollup: 4.34.8 - '@rollup/rollup-android-arm-eabi@4.32.1': + '@rollup/rollup-android-arm-eabi@4.34.8': optional: true - '@rollup/rollup-android-arm64@4.32.1': + '@rollup/rollup-android-arm64@4.34.8': optional: true - '@rollup/rollup-darwin-arm64@4.32.1': + '@rollup/rollup-darwin-arm64@4.34.8': optional: true - '@rollup/rollup-darwin-x64@4.32.1': + '@rollup/rollup-darwin-x64@4.34.8': optional: true - '@rollup/rollup-freebsd-arm64@4.32.1': + '@rollup/rollup-freebsd-arm64@4.34.8': optional: true - '@rollup/rollup-freebsd-x64@4.32.1': + '@rollup/rollup-freebsd-x64@4.34.8': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.32.1': + '@rollup/rollup-linux-arm-gnueabihf@4.34.8': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.32.1': + '@rollup/rollup-linux-arm-musleabihf@4.34.8': optional: true - '@rollup/rollup-linux-arm64-gnu@4.32.1': + '@rollup/rollup-linux-arm64-gnu@4.34.8': optional: true - '@rollup/rollup-linux-arm64-musl@4.32.1': + '@rollup/rollup-linux-arm64-musl@4.34.8': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.32.1': + '@rollup/rollup-linux-loongarch64-gnu@4.34.8': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.32.1': + '@rollup/rollup-linux-powerpc64le-gnu@4.34.8': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.32.1': + '@rollup/rollup-linux-riscv64-gnu@4.34.8': optional: true - '@rollup/rollup-linux-s390x-gnu@4.32.1': + '@rollup/rollup-linux-s390x-gnu@4.34.8': optional: true - '@rollup/rollup-linux-x64-gnu@4.32.1': + '@rollup/rollup-linux-x64-gnu@4.34.8': optional: true - '@rollup/rollup-linux-x64-musl@4.32.1': + '@rollup/rollup-linux-x64-musl@4.34.8': optional: true - '@rollup/rollup-win32-arm64-msvc@4.32.1': + '@rollup/rollup-win32-arm64-msvc@4.34.8': optional: true - '@rollup/rollup-win32-ia32-msvc@4.32.1': + '@rollup/rollup-win32-ia32-msvc@4.34.8': optional: true - '@rollup/rollup-win32-x64-msvc@4.32.1': + '@rollup/rollup-win32-x64-msvc@4.34.8': optional: true '@rtsao/scc@1.1.0': {} '@sec-ant/readable-stream@0.4.1': {} - '@semantic-release/commit-analyzer@13.0.1(semantic-release@24.2.1(typescript@5.7.3))': + '@semantic-release/commit-analyzer@13.0.1(semantic-release@24.2.3(typescript@5.7.3))': dependencies: conventional-changelog-angular: 8.0.0 - conventional-changelog-writer: 8.0.0 + conventional-changelog-writer: 8.0.1 conventional-commits-filter: 5.0.0 - conventional-commits-parser: 6.0.0 + conventional-commits-parser: 6.1.0 debug: 4.4.0 import-from-esm: 2.0.0 lodash-es: 4.17.21 micromatch: 4.0.8 - semantic-release: 24.2.1(typescript@5.7.3) + semantic-release: 24.2.3(typescript@5.7.3) transitivePeerDependencies: - supports-color @@ -8104,7 +8140,7 @@ snapshots: '@semantic-release/error@4.0.0': {} - '@semantic-release/exec@6.0.3(semantic-release@24.2.1(typescript@5.7.3))': + '@semantic-release/exec@6.0.3(semantic-release@24.2.3(typescript@5.7.3))': dependencies: '@semantic-release/error': 3.0.0 aggregate-error: 3.1.0 @@ -8112,33 +8148,33 @@ snapshots: execa: 5.1.1 lodash: 4.17.21 parse-json: 5.2.0 - semantic-release: 24.2.1(typescript@5.7.3) + semantic-release: 24.2.3(typescript@5.7.3) transitivePeerDependencies: - supports-color - '@semantic-release/github@11.0.1(semantic-release@24.2.1(typescript@5.7.3))': + '@semantic-release/github@11.0.1(semantic-release@24.2.3(typescript@5.7.3))': dependencies: - '@octokit/core': 6.1.3 - '@octokit/plugin-paginate-rest': 11.4.0(@octokit/core@6.1.3) - '@octokit/plugin-retry': 7.1.3(@octokit/core@6.1.3) - '@octokit/plugin-throttling': 9.4.0(@octokit/core@6.1.3) + '@octokit/core': 6.1.4 + '@octokit/plugin-paginate-rest': 11.4.3(@octokit/core@6.1.4) + '@octokit/plugin-retry': 7.1.4(@octokit/core@6.1.4) + '@octokit/plugin-throttling': 9.4.0(@octokit/core@6.1.4) '@semantic-release/error': 4.0.0 aggregate-error: 5.0.0 debug: 4.4.0 dir-glob: 3.0.1 - globby: 14.0.2 + globby: 14.1.0 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 issue-parser: 7.0.1 lodash-es: 4.17.21 mime: 4.0.6 p-filter: 4.1.0 - semantic-release: 24.2.1(typescript@5.7.3) + semantic-release: 24.2.3(typescript@5.7.3) url-join: 5.0.0 transitivePeerDependencies: - supports-color - '@semantic-release/npm@12.0.1(semantic-release@24.2.1(typescript@5.7.3))': + '@semantic-release/npm@12.0.1(semantic-release@24.2.3(typescript@5.7.3))': dependencies: '@semantic-release/error': 4.0.0 aggregate-error: 5.0.0 @@ -8150,65 +8186,65 @@ snapshots: npm: 10.9.2 rc: 1.2.8 read-pkg: 9.0.1 - registry-auth-token: 5.0.3 - semantic-release: 24.2.1(typescript@5.7.3) - semver: 7.6.3 + registry-auth-token: 5.1.0 + semantic-release: 24.2.3(typescript@5.7.3) + semver: 7.7.1 tempy: 3.1.0 - '@semantic-release/release-notes-generator@14.0.3(semantic-release@24.2.1(typescript@5.7.3))': + '@semantic-release/release-notes-generator@14.0.3(semantic-release@24.2.3(typescript@5.7.3))': dependencies: conventional-changelog-angular: 8.0.0 - conventional-changelog-writer: 8.0.0 + conventional-changelog-writer: 8.0.1 conventional-commits-filter: 5.0.0 - conventional-commits-parser: 6.0.0 + conventional-commits-parser: 6.1.0 debug: 4.4.0 get-stream: 7.0.1 import-from-esm: 2.0.0 into-stream: 7.0.0 lodash-es: 4.17.21 read-package-up: 11.0.0 - semantic-release: 24.2.1(typescript@5.7.3) + semantic-release: 24.2.3(typescript@5.7.3) transitivePeerDependencies: - supports-color - '@sentry-internal/browser-utils@8.52.0': + '@sentry-internal/browser-utils@8.55.0': dependencies: - '@sentry/core': 8.52.0 + '@sentry/core': 8.55.0 - '@sentry-internal/feedback@8.52.0': + '@sentry-internal/feedback@8.55.0': dependencies: - '@sentry/core': 8.52.0 + '@sentry/core': 8.55.0 - '@sentry-internal/replay-canvas@8.52.0': + '@sentry-internal/replay-canvas@8.55.0': dependencies: - '@sentry-internal/replay': 8.52.0 - '@sentry/core': 8.52.0 + '@sentry-internal/replay': 8.55.0 + '@sentry/core': 8.55.0 - '@sentry-internal/replay@8.52.0': + '@sentry-internal/replay@8.55.0': dependencies: - '@sentry-internal/browser-utils': 8.52.0 - '@sentry/core': 8.52.0 + '@sentry-internal/browser-utils': 8.55.0 + '@sentry/core': 8.55.0 - '@sentry/browser@8.52.0': + '@sentry/browser@8.55.0': dependencies: - '@sentry-internal/browser-utils': 8.52.0 - '@sentry-internal/feedback': 8.52.0 - '@sentry-internal/replay': 8.52.0 - '@sentry-internal/replay-canvas': 8.52.0 - '@sentry/core': 8.52.0 + '@sentry-internal/browser-utils': 8.55.0 + '@sentry-internal/feedback': 8.55.0 + '@sentry-internal/replay': 8.55.0 + '@sentry-internal/replay-canvas': 8.55.0 + '@sentry/core': 8.55.0 - '@sentry/core@8.52.0': {} + '@sentry/core@8.55.0': {} - '@sentry/react@8.52.0(react@18.3.1)': + '@sentry/react@8.55.0(react@18.3.1)': dependencies: - '@sentry/browser': 8.52.0 - '@sentry/core': 8.52.0 + '@sentry/browser': 8.55.0 + '@sentry/core': 8.55.0 hoist-non-react-statics: 3.3.2 react: 18.3.1 - '@sentry/types@8.52.0': + '@sentry/types@8.55.0': dependencies: - '@sentry/core': 8.52.0 + '@sentry/core': 8.55.0 '@sinclair/typebox@0.27.8': {} @@ -8218,158 +8254,153 @@ snapshots: '@sindresorhus/merge-streams@4.0.0': {} - '@storybook/addon-actions@8.5.2(storybook@8.5.2(prettier@3.4.2))': + '@storybook/addon-actions@8.6.0(storybook@8.6.0(prettier@3.5.2))': dependencies: '@storybook/global': 5.0.0 '@types/uuid': 9.0.8 dequal: 2.0.3 polished: 4.3.1 - storybook: 8.5.2(prettier@3.4.2) + storybook: 8.6.0(prettier@3.5.2) uuid: 9.0.1 - '@storybook/addon-backgrounds@8.5.2(storybook@8.5.2(prettier@3.4.2))': + '@storybook/addon-backgrounds@8.6.0(storybook@8.6.0(prettier@3.5.2))': dependencies: '@storybook/global': 5.0.0 memoizerific: 1.11.3 - storybook: 8.5.2(prettier@3.4.2) + storybook: 8.6.0(prettier@3.5.2) ts-dedent: 2.2.0 - '@storybook/addon-controls@8.5.2(storybook@8.5.2(prettier@3.4.2))': + '@storybook/addon-controls@8.6.0(storybook@8.6.0(prettier@3.5.2))': dependencies: '@storybook/global': 5.0.0 dequal: 2.0.3 - storybook: 8.5.2(prettier@3.4.2) + storybook: 8.6.0(prettier@3.5.2) ts-dedent: 2.2.0 - '@storybook/addon-designs@8.0.4(@storybook/blocks@8.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.5.2(prettier@3.4.2)))(@storybook/components@8.5.2(storybook@8.5.2(prettier@3.4.2)))(@storybook/theming@8.5.2(storybook@8.5.2(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@storybook/addon-designs@8.2.0(@storybook/blocks@8.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.5.2)))(@storybook/components@8.6.0(storybook@8.6.0(prettier@3.5.2)))(@storybook/theming@8.6.0(storybook@8.6.0(prettier@3.5.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@figspec/react': 1.0.3(react@18.3.1) optionalDependencies: - '@storybook/blocks': 8.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.5.2(prettier@3.4.2)) - '@storybook/components': 8.5.2(storybook@8.5.2(prettier@3.4.2)) - '@storybook/theming': 8.5.2(storybook@8.5.2(prettier@3.4.2)) + '@storybook/blocks': 8.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.5.2)) + '@storybook/components': 8.6.0(storybook@8.6.0(prettier@3.5.2)) + '@storybook/theming': 8.6.0(storybook@8.6.0(prettier@3.5.2)) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/addon-docs@8.5.2(@types/react@18.3.18)(storybook@8.5.2(prettier@3.4.2))': + '@storybook/addon-docs@8.6.0(@types/react@18.3.18)(storybook@8.6.0(prettier@3.5.2))': dependencies: '@mdx-js/react': 3.1.0(@types/react@18.3.18)(react@18.3.1) - '@storybook/blocks': 8.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.5.2(prettier@3.4.2)) - '@storybook/csf-plugin': 8.5.2(storybook@8.5.2(prettier@3.4.2)) - '@storybook/react-dom-shim': 8.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.5.2(prettier@3.4.2)) + '@storybook/blocks': 8.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.5.2)) + '@storybook/csf-plugin': 8.6.0(storybook@8.6.0(prettier@3.5.2)) + '@storybook/react-dom-shim': 8.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.5.2)) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - storybook: 8.5.2(prettier@3.4.2) + storybook: 8.6.0(prettier@3.5.2) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' - '@storybook/addon-essentials@8.5.2(@types/react@18.3.18)(storybook@8.5.2(prettier@3.4.2))': + '@storybook/addon-essentials@8.6.0(@types/react@18.3.18)(storybook@8.6.0(prettier@3.5.2))': dependencies: - '@storybook/addon-actions': 8.5.2(storybook@8.5.2(prettier@3.4.2)) - '@storybook/addon-backgrounds': 8.5.2(storybook@8.5.2(prettier@3.4.2)) - '@storybook/addon-controls': 8.5.2(storybook@8.5.2(prettier@3.4.2)) - '@storybook/addon-docs': 8.5.2(@types/react@18.3.18)(storybook@8.5.2(prettier@3.4.2)) - '@storybook/addon-highlight': 8.5.2(storybook@8.5.2(prettier@3.4.2)) - '@storybook/addon-measure': 8.5.2(storybook@8.5.2(prettier@3.4.2)) - '@storybook/addon-outline': 8.5.2(storybook@8.5.2(prettier@3.4.2)) - '@storybook/addon-toolbars': 8.5.2(storybook@8.5.2(prettier@3.4.2)) - '@storybook/addon-viewport': 8.5.2(storybook@8.5.2(prettier@3.4.2)) - storybook: 8.5.2(prettier@3.4.2) + '@storybook/addon-actions': 8.6.0(storybook@8.6.0(prettier@3.5.2)) + '@storybook/addon-backgrounds': 8.6.0(storybook@8.6.0(prettier@3.5.2)) + '@storybook/addon-controls': 8.6.0(storybook@8.6.0(prettier@3.5.2)) + '@storybook/addon-docs': 8.6.0(@types/react@18.3.18)(storybook@8.6.0(prettier@3.5.2)) + '@storybook/addon-highlight': 8.6.0(storybook@8.6.0(prettier@3.5.2)) + '@storybook/addon-measure': 8.6.0(storybook@8.6.0(prettier@3.5.2)) + '@storybook/addon-outline': 8.6.0(storybook@8.6.0(prettier@3.5.2)) + '@storybook/addon-toolbars': 8.6.0(storybook@8.6.0(prettier@3.5.2)) + '@storybook/addon-viewport': 8.6.0(storybook@8.6.0(prettier@3.5.2)) + storybook: 8.6.0(prettier@3.5.2) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' - '@storybook/addon-highlight@8.5.2(storybook@8.5.2(prettier@3.4.2))': + '@storybook/addon-highlight@8.6.0(storybook@8.6.0(prettier@3.5.2))': dependencies: '@storybook/global': 5.0.0 - storybook: 8.5.2(prettier@3.4.2) + storybook: 8.6.0(prettier@3.5.2) - '@storybook/addon-links@8.5.2(react@18.3.1)(storybook@8.5.2(prettier@3.4.2))': + '@storybook/addon-links@8.6.0(react@18.3.1)(storybook@8.6.0(prettier@3.5.2))': dependencies: - '@storybook/csf': 0.1.12 '@storybook/global': 5.0.0 - storybook: 8.5.2(prettier@3.4.2) + storybook: 8.6.0(prettier@3.5.2) ts-dedent: 2.2.0 optionalDependencies: react: 18.3.1 - '@storybook/addon-measure@8.5.2(storybook@8.5.2(prettier@3.4.2))': + '@storybook/addon-measure@8.6.0(storybook@8.6.0(prettier@3.5.2))': dependencies: '@storybook/global': 5.0.0 - storybook: 8.5.2(prettier@3.4.2) + storybook: 8.6.0(prettier@3.5.2) tiny-invariant: 1.3.3 - '@storybook/addon-outline@8.5.2(storybook@8.5.2(prettier@3.4.2))': + '@storybook/addon-outline@8.6.0(storybook@8.6.0(prettier@3.5.2))': dependencies: '@storybook/global': 5.0.0 - storybook: 8.5.2(prettier@3.4.2) + storybook: 8.6.0(prettier@3.5.2) ts-dedent: 2.2.0 - '@storybook/addon-toolbars@8.5.2(storybook@8.5.2(prettier@3.4.2))': + '@storybook/addon-toolbars@8.6.0(storybook@8.6.0(prettier@3.5.2))': dependencies: - storybook: 8.5.2(prettier@3.4.2) + storybook: 8.6.0(prettier@3.5.2) - '@storybook/addon-viewport@8.5.2(storybook@8.5.2(prettier@3.4.2))': + '@storybook/addon-viewport@8.6.0(storybook@8.6.0(prettier@3.5.2))': dependencies: memoizerific: 1.11.3 - storybook: 8.5.2(prettier@3.4.2) + storybook: 8.6.0(prettier@3.5.2) - '@storybook/blocks@8.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.5.2(prettier@3.4.2))': + '@storybook/blocks@8.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.5.2))': dependencies: - '@storybook/csf': 0.1.12 '@storybook/icons': 1.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - storybook: 8.5.2(prettier@3.4.2) + storybook: 8.6.0(prettier@3.5.2) ts-dedent: 2.2.0 optionalDependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/builder-vite@8.5.2(storybook@8.5.2(prettier@3.4.2))(vite@5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0))': + '@storybook/builder-vite@8.6.0(storybook@8.6.0(prettier@3.5.2))(vite@5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0))': dependencies: - '@storybook/csf-plugin': 8.5.2(storybook@8.5.2(prettier@3.4.2)) + '@storybook/csf-plugin': 8.6.0(storybook@8.6.0(prettier@3.5.2)) browser-assert: 1.2.1 - storybook: 8.5.2(prettier@3.4.2) + storybook: 8.6.0(prettier@3.5.2) ts-dedent: 2.2.0 - vite: 5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0) + vite: 5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0) - '@storybook/components@8.5.2(storybook@8.5.2(prettier@3.4.2))': + '@storybook/components@8.6.0(storybook@8.6.0(prettier@3.5.2))': dependencies: - storybook: 8.5.2(prettier@3.4.2) + storybook: 8.6.0(prettier@3.5.2) - '@storybook/core@8.5.2(prettier@3.4.2)': + '@storybook/core@8.6.0(prettier@3.5.2)(storybook@8.6.0(prettier@3.5.2))': dependencies: - '@storybook/csf': 0.1.12 + '@storybook/theming': 8.6.0(storybook@8.6.0(prettier@3.5.2)) better-opn: 3.0.2 browser-assert: 1.2.1 - esbuild: 0.24.2 - esbuild-register: 3.6.0(esbuild@0.24.2) + esbuild: 0.25.0 + esbuild-register: 3.6.0(esbuild@0.25.0) jsdoc-type-pratt-parser: 4.1.0 process: 0.11.10 recast: 0.23.9 - semver: 7.6.3 + semver: 7.7.1 util: 0.12.5 - ws: 8.18.0 + ws: 8.18.1 optionalDependencies: - prettier: 3.4.2 + prettier: 3.5.2 transitivePeerDependencies: - bufferutil + - storybook - supports-color - utf-8-validate - '@storybook/csf-plugin@8.5.2(storybook@8.5.2(prettier@3.4.2))': + '@storybook/csf-plugin@8.6.0(storybook@8.6.0(prettier@3.5.2))': dependencies: - storybook: 8.5.2(prettier@3.4.2) + storybook: 8.6.0(prettier@3.5.2) unplugin: 1.16.1 '@storybook/csf@0.0.1': dependencies: lodash: 4.17.21 - '@storybook/csf@0.1.12': - dependencies: - type-fest: 2.19.0 - '@storybook/global@5.0.0': {} '@storybook/icons@1.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': @@ -8377,127 +8408,126 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/instrumenter@8.5.2(storybook@8.5.2(prettier@3.4.2))': + '@storybook/instrumenter@8.6.0(storybook@8.6.0(prettier@3.5.2))': dependencies: '@storybook/global': 5.0.0 - '@vitest/utils': 2.1.8 - storybook: 8.5.2(prettier@3.4.2) + '@vitest/utils': 2.1.9 + storybook: 8.6.0(prettier@3.5.2) - '@storybook/manager-api@8.5.2(storybook@8.5.2(prettier@3.4.2))': + '@storybook/manager-api@8.6.0(storybook@8.6.0(prettier@3.5.2))': dependencies: - storybook: 8.5.2(prettier@3.4.2) + storybook: 8.6.0(prettier@3.5.2) - '@storybook/preview-api@8.5.2(storybook@8.5.2(prettier@3.4.2))': + '@storybook/preview-api@8.6.0(storybook@8.6.0(prettier@3.5.2))': dependencies: - storybook: 8.5.2(prettier@3.4.2) + storybook: 8.6.0(prettier@3.5.2) - '@storybook/react-dom-shim@8.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.5.2(prettier@3.4.2))': + '@storybook/react-dom-shim@8.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.5.2))': dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - storybook: 8.5.2(prettier@3.4.2) + storybook: 8.6.0(prettier@3.5.2) - '@storybook/react-vite@8.5.2(@storybook/test@8.5.2(storybook@8.5.2(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.32.1)(storybook@8.5.2(prettier@3.4.2))(typescript@5.7.3)(vite@5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0))': + '@storybook/react-vite@8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.5.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.34.8)(storybook@8.6.0(prettier@3.5.2))(typescript@5.7.3)(vite@5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.4.2(typescript@5.7.3)(vite@5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0)) - '@rollup/pluginutils': 5.1.4(rollup@4.32.1) - '@storybook/builder-vite': 8.5.2(storybook@8.5.2(prettier@3.4.2))(vite@5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0)) - '@storybook/react': 8.5.2(@storybook/test@8.5.2(storybook@8.5.2(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.5.2(prettier@3.4.2))(typescript@5.7.3) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.5.0(typescript@5.7.3)(vite@5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0)) + '@rollup/pluginutils': 5.1.4(rollup@4.34.8) + '@storybook/builder-vite': 8.6.0(storybook@8.6.0(prettier@3.5.2))(vite@5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0)) + '@storybook/react': 8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.5.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.5.2))(typescript@5.7.3) find-up: 5.0.0 magic-string: 0.30.17 react: 18.3.1 react-docgen: 7.1.1 react-dom: 18.3.1(react@18.3.1) resolve: 1.22.10 - storybook: 8.5.2(prettier@3.4.2) + storybook: 8.6.0(prettier@3.5.2) tsconfig-paths: 4.2.0 - vite: 5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0) + vite: 5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0) optionalDependencies: - '@storybook/test': 8.5.2(storybook@8.5.2(prettier@3.4.2)) + '@storybook/test': 8.6.0(storybook@8.6.0(prettier@3.5.2)) transitivePeerDependencies: - rollup - supports-color - typescript - '@storybook/react@8.5.2(@storybook/test@8.5.2(storybook@8.5.2(prettier@3.4.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.5.2(prettier@3.4.2))(typescript@5.7.3)': + '@storybook/react@8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.5.2)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.5.2))(typescript@5.7.3)': dependencies: - '@storybook/components': 8.5.2(storybook@8.5.2(prettier@3.4.2)) + '@storybook/components': 8.6.0(storybook@8.6.0(prettier@3.5.2)) '@storybook/global': 5.0.0 - '@storybook/manager-api': 8.5.2(storybook@8.5.2(prettier@3.4.2)) - '@storybook/preview-api': 8.5.2(storybook@8.5.2(prettier@3.4.2)) - '@storybook/react-dom-shim': 8.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.5.2(prettier@3.4.2)) - '@storybook/theming': 8.5.2(storybook@8.5.2(prettier@3.4.2)) + '@storybook/manager-api': 8.6.0(storybook@8.6.0(prettier@3.5.2)) + '@storybook/preview-api': 8.6.0(storybook@8.6.0(prettier@3.5.2)) + '@storybook/react-dom-shim': 8.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.0(prettier@3.5.2)) + '@storybook/theming': 8.6.0(storybook@8.6.0(prettier@3.5.2)) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - storybook: 8.5.2(prettier@3.4.2) + storybook: 8.6.0(prettier@3.5.2) optionalDependencies: - '@storybook/test': 8.5.2(storybook@8.5.2(prettier@3.4.2)) + '@storybook/test': 8.6.0(storybook@8.6.0(prettier@3.5.2)) typescript: 5.7.3 - '@storybook/test@8.5.2(storybook@8.5.2(prettier@3.4.2))': + '@storybook/test@8.6.0(storybook@8.6.0(prettier@3.5.2))': dependencies: - '@storybook/csf': 0.1.12 '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.5.2(storybook@8.5.2(prettier@3.4.2)) + '@storybook/instrumenter': 8.6.0(storybook@8.6.0(prettier@3.5.2)) '@testing-library/dom': 10.4.0 '@testing-library/jest-dom': 6.5.0 '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0) '@vitest/expect': 2.0.5 '@vitest/spy': 2.0.5 - storybook: 8.5.2(prettier@3.4.2) + storybook: 8.6.0(prettier@3.5.2) - '@storybook/theming@8.5.2(storybook@8.5.2(prettier@3.4.2))': + '@storybook/theming@8.6.0(storybook@8.6.0(prettier@3.5.2))': dependencies: - storybook: 8.5.2(prettier@3.4.2) + storybook: 8.6.0(prettier@3.5.2) - '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.26.7)': + '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.26.9)': dependencies: - '@babel/core': 7.26.7 + '@babel/core': 7.26.9 - '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.26.7)': + '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.26.9)': dependencies: - '@babel/core': 7.26.7 + '@babel/core': 7.26.9 - '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.26.7)': + '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.26.9)': dependencies: - '@babel/core': 7.26.7 + '@babel/core': 7.26.9 - '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.26.7)': + '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.26.9)': dependencies: - '@babel/core': 7.26.7 + '@babel/core': 7.26.9 - '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.26.7)': + '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.26.9)': dependencies: - '@babel/core': 7.26.7 + '@babel/core': 7.26.9 - '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.26.7)': + '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.26.9)': dependencies: - '@babel/core': 7.26.7 + '@babel/core': 7.26.9 - '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.26.7)': + '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.26.9)': dependencies: - '@babel/core': 7.26.7 + '@babel/core': 7.26.9 - '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.26.7)': + '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.26.9)': dependencies: - '@babel/core': 7.26.7 + '@babel/core': 7.26.9 - '@svgr/babel-preset@8.1.0(@babel/core@7.26.7)': + '@svgr/babel-preset@8.1.0(@babel/core@7.26.9)': dependencies: - '@babel/core': 7.26.7 - '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.26.7) - '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.26.7) - '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.26.7) - '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.26.7) - '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.26.7) - '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.26.7) - '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.26.7) - '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.26.7) + '@babel/core': 7.26.9 + '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.26.9) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.26.9) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.26.9) + '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.26.9) + '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.26.9) + '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.26.9) + '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.26.9) + '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.26.9) '@svgr/core@8.1.0(typescript@5.7.3)': dependencies: - '@babel/core': 7.26.7 - '@svgr/babel-preset': 8.1.0(@babel/core@7.26.7) + '@babel/core': 7.26.9 + '@svgr/babel-preset': 8.1.0(@babel/core@7.26.9) camelcase: 6.3.0 cosmiconfig: 8.3.6(typescript@5.7.3) snake-case: 3.0.4 @@ -8507,64 +8537,64 @@ snapshots: '@svgr/hast-util-to-babel-ast@8.0.0': dependencies: - '@babel/types': 7.26.7 + '@babel/types': 7.26.9 entities: 4.5.0 '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.7.3))': dependencies: - '@babel/core': 7.26.7 - '@svgr/babel-preset': 8.1.0(@babel/core@7.26.7) + '@babel/core': 7.26.9 + '@svgr/babel-preset': 8.1.0(@babel/core@7.26.9) '@svgr/core': 8.1.0(typescript@5.7.3) '@svgr/hast-util-to-babel-ast': 8.0.0 svg-parser: 2.0.4 transitivePeerDependencies: - supports-color - '@swc/core-darwin-arm64@1.10.11': + '@swc/core-darwin-arm64@1.11.1': optional: true - '@swc/core-darwin-x64@1.10.11': + '@swc/core-darwin-x64@1.11.1': optional: true - '@swc/core-linux-arm-gnueabihf@1.10.11': + '@swc/core-linux-arm-gnueabihf@1.11.1': optional: true - '@swc/core-linux-arm64-gnu@1.10.11': + '@swc/core-linux-arm64-gnu@1.11.1': optional: true - '@swc/core-linux-arm64-musl@1.10.11': + '@swc/core-linux-arm64-musl@1.11.1': optional: true - '@swc/core-linux-x64-gnu@1.10.11': + '@swc/core-linux-x64-gnu@1.11.1': optional: true - '@swc/core-linux-x64-musl@1.10.11': + '@swc/core-linux-x64-musl@1.11.1': optional: true - '@swc/core-win32-arm64-msvc@1.10.11': + '@swc/core-win32-arm64-msvc@1.11.1': optional: true - '@swc/core-win32-ia32-msvc@1.10.11': + '@swc/core-win32-ia32-msvc@1.11.1': optional: true - '@swc/core-win32-x64-msvc@1.10.11': + '@swc/core-win32-x64-msvc@1.11.1': optional: true - '@swc/core@1.10.11(@swc/helpers@0.5.15)': + '@swc/core@1.11.1(@swc/helpers@0.5.15)': dependencies: '@swc/counter': 0.1.3 - '@swc/types': 0.1.17 + '@swc/types': 0.1.18 optionalDependencies: - '@swc/core-darwin-arm64': 1.10.11 - '@swc/core-darwin-x64': 1.10.11 - '@swc/core-linux-arm-gnueabihf': 1.10.11 - '@swc/core-linux-arm64-gnu': 1.10.11 - '@swc/core-linux-arm64-musl': 1.10.11 - '@swc/core-linux-x64-gnu': 1.10.11 - '@swc/core-linux-x64-musl': 1.10.11 - '@swc/core-win32-arm64-msvc': 1.10.11 - '@swc/core-win32-ia32-msvc': 1.10.11 - '@swc/core-win32-x64-msvc': 1.10.11 + '@swc/core-darwin-arm64': 1.11.1 + '@swc/core-darwin-x64': 1.11.1 + '@swc/core-linux-arm-gnueabihf': 1.11.1 + '@swc/core-linux-arm64-gnu': 1.11.1 + '@swc/core-linux-arm64-musl': 1.11.1 + '@swc/core-linux-x64-gnu': 1.11.1 + '@swc/core-linux-x64-musl': 1.11.1 + '@swc/core-win32-arm64-msvc': 1.11.1 + '@swc/core-win32-ia32-msvc': 1.11.1 + '@swc/core-win32-x64-msvc': 1.11.1 '@swc/helpers': 0.5.15 '@swc/counter@0.1.3': {} @@ -8573,22 +8603,22 @@ snapshots: dependencies: tslib: 2.8.1 - '@swc/types@0.1.17': + '@swc/types@0.1.18': dependencies: '@swc/counter': 0.1.3 - '@tanstack/react-virtual@3.11.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@tanstack/react-virtual@3.13.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tanstack/virtual-core': 3.11.3 + '@tanstack/virtual-core': 3.13.2 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@tanstack/virtual-core@3.11.3': {} + '@tanstack/virtual-core@3.13.2': {} '@testing-library/dom@10.4.0': dependencies: '@babel/code-frame': 7.26.2 - '@babel/runtime': 7.26.7 + '@babel/runtime': 7.26.9 '@types/aria-query': 5.0.4 aria-query: 5.3.0 chalk: 4.1.2 @@ -8598,7 +8628,7 @@ snapshots: '@testing-library/jest-dom@6.5.0': dependencies: - '@adobe/css-tools': 4.4.1 + '@adobe/css-tools': 4.4.2 aria-query: 5.3.2 chalk: 3.0.0 css.escape: 1.5.1 @@ -8616,58 +8646,58 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.26.7 - '@babel/types': 7.26.7 + '@babel/parser': 7.26.9 + '@babel/types': 7.26.9 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.6 '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.26.7 + '@babel/types': 7.26.9 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.26.7 - '@babel/types': 7.26.7 + '@babel/parser': 7.26.9 + '@babel/types': 7.26.9 '@types/babel__traverse@7.20.6': dependencies: - '@babel/types': 7.26.7 + '@babel/types': 7.26.9 '@types/chrome@0.0.273': dependencies: '@types/filesystem': 0.0.36 '@types/har-format': 1.2.16 - '@types/conventional-changelog-core@4.2.8': + '@types/conventional-changelog-core@8.0.0': dependencies: '@types/conventional-changelog-writer': 4.0.10 '@types/conventional-commits-parser': 5.0.1 '@types/conventional-recommended-bump': 10.0.3 - '@types/git-raw-commits': 2.0.4 - '@types/node': 22.12.0 + '@types/git-raw-commits': 5.0.0 + '@types/node': 22.13.5 '@types/normalize-package-data': 2.4.4 '@types/conventional-changelog-writer@4.0.10': dependencies: '@types/conventional-commits-parser': 5.0.1 - '@types/node': 22.12.0 + '@types/node': 22.13.5 '@types/conventional-changelog@3.1.5': dependencies: - '@types/conventional-changelog-core': 4.2.8 + '@types/conventional-changelog-core': 8.0.0 '@types/conventional-changelog-writer': 4.0.10 '@types/conventional-commits-parser': 5.0.1 - '@types/node': 22.12.0 + '@types/node': 22.13.5 '@types/conventional-commits-parser@5.0.1': dependencies: - '@types/node': 22.12.0 + '@types/node': 22.13.5 '@types/conventional-recommended-bump@10.0.3': dependencies: - conventional-recommended-bump: 10.0.0 + conventional-recommended-bump: 11.0.0 '@types/debug@4.1.12': dependencies: @@ -8701,23 +8731,23 @@ snapshots: '@types/filewriter@0.0.33': {} - '@types/git-raw-commits@2.0.4': + '@types/git-raw-commits@5.0.0': dependencies: - '@types/node': 22.12.0 + '@types/node': 22.13.5 '@types/glob-stream@8.0.2': dependencies: - '@types/node': 22.12.0 + '@types/node': 22.13.5 '@types/picomatch': 3.0.2 '@types/streamx': 2.9.5 '@types/gulp-zip@4.0.4': dependencies: - '@types/node': 22.12.0 + '@types/node': 22.13.5 '@types/gulp@4.0.17': dependencies: - '@types/node': 22.12.0 + '@types/node': 22.13.5 '@types/undertaker': 1.2.11 '@types/vinyl-fs': 3.0.5 chokidar: 3.6.0 @@ -8754,7 +8784,7 @@ snapshots: '@types/ms@2.1.0': {} - '@types/node@22.12.0': + '@types/node@22.13.5': dependencies: undici-types: 6.20.0 @@ -8766,7 +8796,7 @@ snapshots: '@types/prompts@2.4.9': dependencies: - '@types/node': 22.12.0 + '@types/node': 22.13.5 kleur: 3.0.3 '@types/prop-types@15.7.14': {} @@ -8788,18 +8818,18 @@ snapshots: '@types/semantic-release@20.0.6': dependencies: - '@types/node': 22.12.0 + '@types/node': 22.13.5 '@types/semver@7.5.8': {} '@types/sql.js@1.4.9': dependencies: '@types/emscripten': 1.40.0 - '@types/node': 22.12.0 + '@types/node': 22.13.5 '@types/streamx@2.9.5': dependencies: - '@types/node': 22.12.0 + '@types/node': 22.13.5 '@types/trusted-types@2.0.7': {} @@ -8807,7 +8837,7 @@ snapshots: '@types/undertaker@1.2.11': dependencies: - '@types/node': 22.12.0 + '@types/node': 22.13.5 '@types/undertaker-registry': 1.0.4 async-done: 1.3.2 @@ -8820,13 +8850,13 @@ snapshots: '@types/vinyl-fs@3.0.5': dependencies: '@types/glob-stream': 8.0.2 - '@types/node': 22.12.0 + '@types/node': 22.13.5 '@types/vinyl': 2.0.12 '@types/vinyl@2.0.12': dependencies: '@types/expect': 1.20.4 - '@types/node': 22.12.0 + '@types/node': 22.13.5 '@types/yargs-parser@21.0.3': {} @@ -8875,10 +8905,10 @@ snapshots: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/visitor-keys': 7.18.0 - '@typescript-eslint/scope-manager@8.22.0': + '@typescript-eslint/scope-manager@8.25.0': dependencies: - '@typescript-eslint/types': 8.22.0 - '@typescript-eslint/visitor-keys': 8.22.0 + '@typescript-eslint/types': 8.25.0 + '@typescript-eslint/visitor-keys': 8.25.0 '@typescript-eslint/type-utils@7.18.0(eslint@8.57.1)(typescript@5.7.3)': dependencies: @@ -8896,7 +8926,7 @@ snapshots: '@typescript-eslint/types@7.18.0': {} - '@typescript-eslint/types@8.22.0': {} + '@typescript-eslint/types@8.25.0': {} '@typescript-eslint/typescript-estree@5.62.0(typescript@5.7.3)': dependencies: @@ -8905,7 +8935,7 @@ snapshots: debug: 4.4.0 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.6.3 + semver: 7.7.1 tsutils: 3.21.0(typescript@5.7.3) optionalDependencies: typescript: 5.7.3 @@ -8920,23 +8950,23 @@ snapshots: globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.6.3 + semver: 7.7.1 ts-api-utils: 1.4.3(typescript@5.7.3) optionalDependencies: typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.22.0(typescript@5.7.3)': + '@typescript-eslint/typescript-estree@8.25.0(typescript@5.7.3)': dependencies: - '@typescript-eslint/types': 8.22.0 - '@typescript-eslint/visitor-keys': 8.22.0 + '@typescript-eslint/types': 8.25.0 + '@typescript-eslint/visitor-keys': 8.25.0 debug: 4.4.0 fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.6.3 - ts-api-utils: 2.0.0(typescript@5.7.3) + semver: 7.7.1 + ts-api-utils: 2.0.1(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: - supports-color @@ -8951,7 +8981,7 @@ snapshots: '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.7.3) eslint: 8.57.1 eslint-scope: 5.1.1 - semver: 7.6.3 + semver: 7.7.1 transitivePeerDependencies: - supports-color - typescript @@ -8967,12 +8997,12 @@ snapshots: - supports-color - typescript - '@typescript-eslint/utils@8.22.0(eslint@8.57.1)(typescript@5.7.3)': + '@typescript-eslint/utils@8.25.0(eslint@8.57.1)(typescript@5.7.3)': dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) - '@typescript-eslint/scope-manager': 8.22.0 - '@typescript-eslint/types': 8.22.0 - '@typescript-eslint/typescript-estree': 8.22.0(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.25.0 + '@typescript-eslint/types': 8.25.0 + '@typescript-eslint/typescript-estree': 8.25.0(typescript@5.7.3) eslint: 8.57.1 typescript: 5.7.3 transitivePeerDependencies: @@ -8988,29 +9018,29 @@ snapshots: '@typescript-eslint/types': 7.18.0 eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@8.22.0': + '@typescript-eslint/visitor-keys@8.25.0': dependencies: - '@typescript-eslint/types': 8.22.0 + '@typescript-eslint/types': 8.25.0 eslint-visitor-keys: 4.2.0 '@ungap/structured-clone@1.3.0': {} - '@unocss/astro@0.63.6(rollup@4.32.1)(typescript@5.7.3)(vite@5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0))': + '@unocss/astro@0.63.6(rollup@4.34.8)(typescript@5.7.3)(vite@5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0))': dependencies: '@unocss/core': 0.63.6 '@unocss/reset': 0.63.6 - '@unocss/vite': 0.63.6(patch_hash=5ptgy7mbavmjf7zwexb7dph4ji)(rollup@4.32.1)(typescript@5.7.3)(vite@5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0)) + '@unocss/vite': 0.63.6(patch_hash=5ptgy7mbavmjf7zwexb7dph4ji)(rollup@4.34.8)(typescript@5.7.3)(vite@5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0)) optionalDependencies: - vite: 5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0) + vite: 5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0) transitivePeerDependencies: - rollup - supports-color - typescript - '@unocss/cli@0.63.6(rollup@4.32.1)': + '@unocss/cli@0.63.6(rollup@4.34.8)': dependencies: '@ampproject/remapping': 2.3.0 - '@rollup/pluginutils': 5.1.4(rollup@4.32.1) + '@rollup/pluginutils': 5.1.4(rollup@4.34.8) '@unocss/config': 0.63.6 '@unocss/core': 0.63.6 '@unocss/preset-uno': 0.63.6 @@ -9021,7 +9051,7 @@ snapshots: magic-string: 0.30.17 pathe: 1.1.2 perfect-debounce: 1.0.0 - tinyglobby: 0.2.10 + tinyglobby: 0.2.12 transitivePeerDependencies: - rollup - supports-color @@ -9047,7 +9077,7 @@ snapshots: '@unocss/eslint-plugin@0.63.6(eslint@8.57.1)(typescript@5.7.3)': dependencies: - '@typescript-eslint/utils': 8.22.0(eslint@8.57.1)(typescript@5.7.3) + '@typescript-eslint/utils': 8.25.0(eslint@8.57.1)(typescript@5.7.3) '@unocss/config': 0.63.6 '@unocss/core': 0.63.6 magic-string: 0.30.17 @@ -9071,14 +9101,14 @@ snapshots: transitivePeerDependencies: - typescript - '@unocss/postcss@0.63.6(postcss@8.5.1)': + '@unocss/postcss@0.63.6(postcss@8.5.3)': dependencies: '@unocss/config': 0.63.6 '@unocss/core': 0.63.6 '@unocss/rule-utils': 0.63.6 css-tree: 3.1.0 - postcss: 8.5.1 - tinyglobby: 0.2.10 + postcss: 8.5.3 + tinyglobby: 0.2.12 transitivePeerDependencies: - supports-color @@ -9088,7 +9118,7 @@ snapshots: '@unocss/preset-icons@0.63.6': dependencies: - '@iconify/utils': 2.2.1 + '@iconify/utils': 2.3.0 '@unocss/core': 0.63.6 ofetch: 1.4.1 transitivePeerDependencies: @@ -9152,41 +9182,41 @@ snapshots: dependencies: '@unocss/core': 0.63.6 - '@unocss/vite@0.63.6(patch_hash=5ptgy7mbavmjf7zwexb7dph4ji)(rollup@4.32.1)(typescript@5.7.3)(vite@5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0))': + '@unocss/vite@0.63.6(patch_hash=5ptgy7mbavmjf7zwexb7dph4ji)(rollup@4.34.8)(typescript@5.7.3)(vite@5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0))': dependencies: '@ampproject/remapping': 2.3.0 - '@rollup/pluginutils': 5.1.4(rollup@4.32.1) + '@rollup/pluginutils': 5.1.4(rollup@4.34.8) '@unocss/config': 0.63.6 '@unocss/core': 0.63.6 '@unocss/inspector': 0.63.6(typescript@5.7.3) chokidar: 3.6.0 magic-string: 0.30.17 - tinyglobby: 0.2.10 - vite: 5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0) + tinyglobby: 0.2.12 + vite: 5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0) transitivePeerDependencies: - rollup - supports-color - typescript - '@vitejs/plugin-react-swc@3.7.2(@swc/helpers@0.5.15)(vite@5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0))': + '@vitejs/plugin-react-swc@3.8.0(@swc/helpers@0.5.15)(vite@5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0))': dependencies: - '@swc/core': 1.10.11(@swc/helpers@0.5.15) - vite: 5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0) + '@swc/core': 1.11.1(@swc/helpers@0.5.15) + vite: 5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0) transitivePeerDependencies: - '@swc/helpers' - '@vitejs/plugin-react@4.3.4(vite@5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0))': + '@vitejs/plugin-react@4.3.4(vite@5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0))': dependencies: - '@babel/core': 7.26.7 - '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.7) - '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.7) + '@babel/core': 7.26.9 + '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.9) + '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.9) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0) + vite: 5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0) transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@2.1.8(vitest@2.1.8)': + '@vitest/coverage-v8@2.1.9(vitest@2.1.9)': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -9200,7 +9230,7 @@ snapshots: std-env: 3.8.0 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.1.8(@types/node@22.12.0)(@vitest/ui@2.1.8)(sass@1.83.4)(terser@5.37.0) + vitest: 2.1.9(@types/node@22.13.5)(@vitest/ui@2.1.9)(sass@1.85.1)(terser@5.39.0) transitivePeerDependencies: - supports-color @@ -9208,40 +9238,40 @@ snapshots: dependencies: '@vitest/spy': 2.0.5 '@vitest/utils': 2.0.5 - chai: 5.1.2 + chai: 5.2.0 tinyrainbow: 1.2.0 - '@vitest/expect@2.1.8': + '@vitest/expect@2.1.9': dependencies: - '@vitest/spy': 2.1.8 - '@vitest/utils': 2.1.8 - chai: 5.1.2 + '@vitest/spy': 2.1.9 + '@vitest/utils': 2.1.9 + chai: 5.2.0 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.8(vite@5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0))': + '@vitest/mocker@2.1.9(vite@5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0))': dependencies: - '@vitest/spy': 2.1.8 + '@vitest/spy': 2.1.9 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0) + vite: 5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0) '@vitest/pretty-format@2.0.5': dependencies: tinyrainbow: 1.2.0 - '@vitest/pretty-format@2.1.8': + '@vitest/pretty-format@2.1.9': dependencies: tinyrainbow: 1.2.0 - '@vitest/runner@2.1.8': + '@vitest/runner@2.1.9': dependencies: - '@vitest/utils': 2.1.8 + '@vitest/utils': 2.1.9 pathe: 1.1.2 - '@vitest/snapshot@2.1.8': + '@vitest/snapshot@2.1.9': dependencies: - '@vitest/pretty-format': 2.1.8 + '@vitest/pretty-format': 2.1.9 magic-string: 0.30.17 pathe: 1.1.2 @@ -9249,20 +9279,20 @@ snapshots: dependencies: tinyspy: 3.0.2 - '@vitest/spy@2.1.8': + '@vitest/spy@2.1.9': dependencies: tinyspy: 3.0.2 - '@vitest/ui@2.1.8(vitest@2.1.8)': + '@vitest/ui@2.1.9(vitest@2.1.9)': dependencies: - '@vitest/utils': 2.1.8 + '@vitest/utils': 2.1.9 fflate: 0.8.2 - flatted: 3.3.2 + flatted: 3.3.3 pathe: 1.1.2 - sirv: 3.0.0 - tinyglobby: 0.2.10 + sirv: 3.0.1 + tinyglobby: 0.2.12 tinyrainbow: 1.2.0 - vitest: 2.1.8(@types/node@22.12.0)(@vitest/ui@2.1.8)(sass@1.83.4)(terser@5.37.0) + vitest: 2.1.9(@types/node@22.13.5)(@vitest/ui@2.1.9)(sass@1.85.1)(terser@5.39.0) '@vitest/utils@2.0.5': dependencies: @@ -9271,15 +9301,15 @@ snapshots: loupe: 3.1.3 tinyrainbow: 1.2.0 - '@vitest/utils@2.1.8': + '@vitest/utils@2.1.9': dependencies: - '@vitest/pretty-format': 2.1.8 + '@vitest/pretty-format': 2.1.9 loupe: 3.1.3 tinyrainbow: 1.2.0 '@vue/compiler-core@3.5.13': dependencies: - '@babel/parser': 7.26.7 + '@babel/parser': 7.26.9 '@vue/shared': 3.5.13 entities: 4.5.0 estree-walker: 2.0.2 @@ -9292,14 +9322,14 @@ snapshots: '@vue/compiler-sfc@3.5.13': dependencies: - '@babel/parser': 7.26.7 + '@babel/parser': 7.26.9 '@vue/compiler-core': 3.5.13 '@vue/compiler-dom': 3.5.13 '@vue/compiler-ssr': 3.5.13 '@vue/shared': 3.5.13 estree-walker: 2.0.2 magic-string: 0.30.17 - postcss: 8.5.1 + postcss: 8.5.3 source-map-js: 1.2.1 '@vue/compiler-ssr@3.5.13': @@ -9538,7 +9568,7 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.23.9 es-object-atoms: 1.1.1 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 is-string: 1.1.1 array-slice@1.1.0: {} @@ -9552,7 +9582,7 @@ snapshots: es-abstract: 1.23.9 es-errors: 1.3.0 es-object-atoms: 1.1.1 - es-shim-unscopables: 1.0.2 + es-shim-unscopables: 1.1.0 array.prototype.findlastindex@1.2.5: dependencies: @@ -9561,21 +9591,21 @@ snapshots: es-abstract: 1.23.9 es-errors: 1.3.0 es-object-atoms: 1.1.1 - es-shim-unscopables: 1.0.2 + es-shim-unscopables: 1.1.0 array.prototype.flat@1.3.3: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 es-abstract: 1.23.9 - es-shim-unscopables: 1.0.2 + es-shim-unscopables: 1.1.0 array.prototype.flatmap@1.3.3: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 es-abstract: 1.23.9 - es-shim-unscopables: 1.0.2 + es-shim-unscopables: 1.1.0 array.prototype.tosorted@1.1.4: dependencies: @@ -9583,7 +9613,7 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.23.9 es-errors: 1.3.0 - es-shim-unscopables: 1.0.2 + es-shim-unscopables: 1.1.0 arraybuffer.prototype.slice@1.0.4: dependencies: @@ -9592,7 +9622,7 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.23.9 es-errors: 1.3.0 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 assertion-error@2.0.1: {} @@ -9624,19 +9654,19 @@ snapshots: at-least-node@1.0.0: {} - autoprefixer@10.4.20(postcss@8.5.1): + autoprefixer@10.4.20(postcss@8.5.3): dependencies: browserslist: 4.24.4 - caniuse-lite: 1.0.30001695 + caniuse-lite: 1.0.30001700 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 - postcss: 8.5.1 + postcss: 8.5.3 postcss-value-parser: 4.2.0 available-typed-arrays@1.0.7: dependencies: - possible-typed-array-names: 1.0.0 + possible-typed-array-names: 1.1.0 axe-core@4.10.2: {} @@ -9694,8 +9724,8 @@ snapshots: browserslist@4.24.4: dependencies: - caniuse-lite: 1.0.30001695 - electron-to-chromium: 1.5.88 + caniuse-lite: 1.0.30001700 + electron-to-chromium: 1.5.105 node-releases: 2.0.19 update-browserslist-db: 1.1.2(browserslist@4.24.4) @@ -9719,22 +9749,22 @@ snapshots: cac@6.7.14: {} - call-bind-apply-helpers@1.0.1: + call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 function-bind: 1.1.2 call-bind@1.0.8: dependencies: - call-bind-apply-helpers: 1.0.1 + call-bind-apply-helpers: 1.0.2 es-define-property: 1.0.1 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 set-function-length: 1.2.2 call-bound@1.0.3: dependencies: - call-bind-apply-helpers: 1.0.1 - get-intrinsic: 1.2.7 + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 callsites@3.1.0: {} @@ -9743,15 +9773,15 @@ snapshots: caniuse-api@3.0.0: dependencies: browserslist: 4.24.4 - caniuse-lite: 1.0.30001695 + caniuse-lite: 1.0.30001700 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001695: {} + caniuse-lite@1.0.30001700: {} ccount@2.0.1: {} - chai@5.1.2: + chai@5.2.0: dependencies: assertion-error: 2.0.1 check-error: 2.1.1 @@ -9832,9 +9862,9 @@ snapshots: chokidar@4.0.3: dependencies: - readdirp: 4.1.1 + readdirp: 4.1.2 - chromatic@11.25.1: {} + chromatic@11.26.0: {} chrome-extension-toolkit@0.0.54: dependencies: @@ -9966,10 +9996,10 @@ snapshots: dependencies: '@hutson/parse-repository-url': 5.0.0 add-stream: 1.0.0 - conventional-changelog-writer: 8.0.0 - conventional-commits-parser: 6.0.0 - git-raw-commits: 5.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0) - git-semver-tags: 8.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0) + conventional-changelog-writer: 8.0.1 + conventional-commits-parser: 6.1.0 + git-raw-commits: 5.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.1.0) + git-semver-tags: 8.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.1.0) hosted-git-info: 7.0.2 normalize-package-data: 6.0.2 read-package-up: 11.0.0 @@ -9991,13 +10021,12 @@ snapshots: conventional-changelog-preset-loader@5.0.0: {} - conventional-changelog-writer@8.0.0: + conventional-changelog-writer@8.0.1: dependencies: - '@types/semver': 7.5.8 conventional-commits-filter: 5.0.0 handlebars: 4.7.8 meow: 13.2.0 - semver: 7.6.3 + semver: 7.7.1 conventional-changelog@6.0.0(conventional-commits-filter@5.0.0): dependencies: @@ -10024,16 +10053,16 @@ snapshots: meow: 12.1.1 split2: 4.2.0 - conventional-commits-parser@6.0.0: + conventional-commits-parser@6.1.0: dependencies: meow: 13.2.0 - conventional-recommended-bump@10.0.0: + conventional-recommended-bump@11.0.0: dependencies: - '@conventional-changelog/git-client': 1.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0) + '@conventional-changelog/git-client': 2.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.1.0) conventional-changelog-preset-loader: 5.0.0 conventional-commits-filter: 5.0.0 - conventional-commits-parser: 6.0.0 + conventional-commits-parser: 6.1.0 meow: 13.2.0 convert-hrtime@5.0.0: {} @@ -10049,9 +10078,9 @@ snapshots: core-util-is@1.0.3: {} - cosmiconfig-typescript-loader@6.1.0(@types/node@22.12.0)(cosmiconfig@9.0.0(typescript@5.7.3))(typescript@5.7.3): + cosmiconfig-typescript-loader@6.1.0(@types/node@22.13.5)(cosmiconfig@9.0.0(typescript@5.7.3))(typescript@5.7.3): dependencies: - '@types/node': 22.12.0 + '@types/node': 22.13.5 cosmiconfig: 9.0.0(typescript@5.7.3) jiti: 2.4.2 typescript: 5.7.3 @@ -10059,14 +10088,14 @@ snapshots: cosmiconfig@6.0.0: dependencies: '@types/parse-json': 4.0.2 - import-fresh: 3.3.0 + import-fresh: 3.3.1 parse-json: 5.2.0 path-type: 4.0.0 yaml: 1.10.2 cosmiconfig@8.3.6(typescript@5.7.3): dependencies: - import-fresh: 3.3.0 + import-fresh: 3.3.1 js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 @@ -10076,7 +10105,7 @@ snapshots: cosmiconfig@9.0.0(typescript@5.7.3): dependencies: env-paths: 2.2.1 - import-fresh: 3.3.0 + import-fresh: 3.3.1 js-yaml: 4.1.0 parse-json: 5.2.0 optionalDependencies: @@ -10092,9 +10121,9 @@ snapshots: dependencies: type-fest: 1.4.0 - css-declaration-sorter@7.2.0(postcss@8.5.1): + css-declaration-sorter@7.2.0(postcss@8.5.3): dependencies: - postcss: 8.5.1 + postcss: 8.5.3 css-select@5.1.0: dependencies: @@ -10125,60 +10154,60 @@ snapshots: cssesc@3.0.0: {} - cssnano-preset-advanced@7.0.6(postcss@8.5.1): + cssnano-preset-advanced@7.0.6(postcss@8.5.3): dependencies: - autoprefixer: 10.4.20(postcss@8.5.1) + autoprefixer: 10.4.20(postcss@8.5.3) browserslist: 4.24.4 - cssnano-preset-default: 7.0.6(postcss@8.5.1) - postcss: 8.5.1 - postcss-discard-unused: 7.0.3(postcss@8.5.1) - postcss-merge-idents: 7.0.0(postcss@8.5.1) - postcss-reduce-idents: 7.0.0(postcss@8.5.1) - postcss-zindex: 7.0.0(postcss@8.5.1) + cssnano-preset-default: 7.0.6(postcss@8.5.3) + postcss: 8.5.3 + postcss-discard-unused: 7.0.3(postcss@8.5.3) + postcss-merge-idents: 7.0.0(postcss@8.5.3) + postcss-reduce-idents: 7.0.0(postcss@8.5.3) + postcss-zindex: 7.0.0(postcss@8.5.3) - cssnano-preset-default@7.0.6(postcss@8.5.1): + cssnano-preset-default@7.0.6(postcss@8.5.3): dependencies: browserslist: 4.24.4 - css-declaration-sorter: 7.2.0(postcss@8.5.1) - cssnano-utils: 5.0.0(postcss@8.5.1) - postcss: 8.5.1 - postcss-calc: 10.1.0(postcss@8.5.1) - postcss-colormin: 7.0.2(postcss@8.5.1) - postcss-convert-values: 7.0.4(postcss@8.5.1) - postcss-discard-comments: 7.0.3(postcss@8.5.1) - postcss-discard-duplicates: 7.0.1(postcss@8.5.1) - postcss-discard-empty: 7.0.0(postcss@8.5.1) - postcss-discard-overridden: 7.0.0(postcss@8.5.1) - postcss-merge-longhand: 7.0.4(postcss@8.5.1) - postcss-merge-rules: 7.0.4(postcss@8.5.1) - postcss-minify-font-values: 7.0.0(postcss@8.5.1) - postcss-minify-gradients: 7.0.0(postcss@8.5.1) - postcss-minify-params: 7.0.2(postcss@8.5.1) - postcss-minify-selectors: 7.0.4(postcss@8.5.1) - postcss-normalize-charset: 7.0.0(postcss@8.5.1) - postcss-normalize-display-values: 7.0.0(postcss@8.5.1) - postcss-normalize-positions: 7.0.0(postcss@8.5.1) - postcss-normalize-repeat-style: 7.0.0(postcss@8.5.1) - postcss-normalize-string: 7.0.0(postcss@8.5.1) - postcss-normalize-timing-functions: 7.0.0(postcss@8.5.1) - postcss-normalize-unicode: 7.0.2(postcss@8.5.1) - postcss-normalize-url: 7.0.0(postcss@8.5.1) - postcss-normalize-whitespace: 7.0.0(postcss@8.5.1) - postcss-ordered-values: 7.0.1(postcss@8.5.1) - postcss-reduce-initial: 7.0.2(postcss@8.5.1) - postcss-reduce-transforms: 7.0.0(postcss@8.5.1) - postcss-svgo: 7.0.1(postcss@8.5.1) - postcss-unique-selectors: 7.0.3(postcss@8.5.1) + css-declaration-sorter: 7.2.0(postcss@8.5.3) + cssnano-utils: 5.0.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-calc: 10.1.1(postcss@8.5.3) + postcss-colormin: 7.0.2(postcss@8.5.3) + postcss-convert-values: 7.0.4(postcss@8.5.3) + postcss-discard-comments: 7.0.3(postcss@8.5.3) + postcss-discard-duplicates: 7.0.1(postcss@8.5.3) + postcss-discard-empty: 7.0.0(postcss@8.5.3) + postcss-discard-overridden: 7.0.0(postcss@8.5.3) + postcss-merge-longhand: 7.0.4(postcss@8.5.3) + postcss-merge-rules: 7.0.4(postcss@8.5.3) + postcss-minify-font-values: 7.0.0(postcss@8.5.3) + postcss-minify-gradients: 7.0.0(postcss@8.5.3) + postcss-minify-params: 7.0.2(postcss@8.5.3) + postcss-minify-selectors: 7.0.4(postcss@8.5.3) + postcss-normalize-charset: 7.0.0(postcss@8.5.3) + postcss-normalize-display-values: 7.0.0(postcss@8.5.3) + postcss-normalize-positions: 7.0.0(postcss@8.5.3) + postcss-normalize-repeat-style: 7.0.0(postcss@8.5.3) + postcss-normalize-string: 7.0.0(postcss@8.5.3) + postcss-normalize-timing-functions: 7.0.0(postcss@8.5.3) + postcss-normalize-unicode: 7.0.2(postcss@8.5.3) + postcss-normalize-url: 7.0.0(postcss@8.5.3) + postcss-normalize-whitespace: 7.0.0(postcss@8.5.3) + postcss-ordered-values: 7.0.1(postcss@8.5.3) + postcss-reduce-initial: 7.0.2(postcss@8.5.3) + postcss-reduce-transforms: 7.0.0(postcss@8.5.3) + postcss-svgo: 7.0.1(postcss@8.5.3) + postcss-unique-selectors: 7.0.3(postcss@8.5.3) - cssnano-utils@5.0.0(postcss@8.5.1): + cssnano-utils@5.0.0(postcss@8.5.3): dependencies: - postcss: 8.5.1 + postcss: 8.5.3 - cssnano@7.0.6(postcss@8.5.1): + cssnano@7.0.6(postcss@8.5.3): dependencies: - cssnano-preset-default: 7.0.6(postcss@8.5.1) + cssnano-preset-default: 7.0.6(postcss@8.5.3) lilconfig: 3.1.3 - postcss: 8.5.1 + postcss: 8.5.3 csso@5.0.5: dependencies: @@ -10324,7 +10353,7 @@ snapshots: dunder-proto@1.0.1: dependencies: - call-bind-apply-helpers: 1.0.1 + call-bind-apply-helpers: 1.0.2 es-errors: 1.3.0 gopd: 1.2.0 @@ -10343,7 +10372,7 @@ snapshots: easy-transform-stream@1.0.1: {} - electron-to-chromium@1.5.88: {} + electron-to-chromium@1.5.105: {} emoji-regex@8.0.0: {} @@ -10360,7 +10389,7 @@ snapshots: dependencies: once: 1.4.0 - enhanced-resolve@5.18.0: + enhanced-resolve@5.18.1: dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 @@ -10398,7 +10427,7 @@ snapshots: es-set-tostringtag: 2.1.0 es-to-primitive: 1.3.0 function.prototype.name: 1.1.8 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 get-proto: 1.0.1 get-symbol-description: 1.1.0 globalthis: 1.0.4 @@ -10415,9 +10444,9 @@ snapshots: is-shared-array-buffer: 1.0.4 is-string: 1.1.1 is-typed-array: 1.1.15 - is-weakref: 1.1.0 + is-weakref: 1.1.1 math-intrinsics: 1.1.0 - object-inspect: 1.13.3 + object-inspect: 1.13.4 object-keys: 1.1.1 object.assign: 4.1.7 own-keys: 1.0.1 @@ -10449,7 +10478,7 @@ snapshots: es-errors: 1.3.0 es-set-tostringtag: 2.1.0 function-bind: 1.1.2 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 globalthis: 1.0.4 gopd: 1.2.0 has-property-descriptors: 1.0.2 @@ -10468,11 +10497,11 @@ snapshots: es-set-tostringtag@2.1.0: dependencies: es-errors: 1.3.0 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 has-tostringtag: 1.0.2 hasown: 2.0.2 - es-shim-unscopables@1.0.2: + es-shim-unscopables@1.1.0: dependencies: hasown: 2.0.2 @@ -10482,10 +10511,10 @@ snapshots: is-date-object: 1.1.0 is-symbol: 1.1.1 - esbuild-register@3.6.0(esbuild@0.24.2): + esbuild-register@3.6.0(esbuild@0.25.0): dependencies: debug: 4.4.0 - esbuild: 0.24.2 + esbuild: 0.25.0 transitivePeerDependencies: - supports-color @@ -10542,33 +10571,33 @@ snapshots: '@esbuild/win32-ia32': 0.23.1 '@esbuild/win32-x64': 0.23.1 - esbuild@0.24.2: + esbuild@0.25.0: optionalDependencies: - '@esbuild/aix-ppc64': 0.24.2 - '@esbuild/android-arm': 0.24.2 - '@esbuild/android-arm64': 0.24.2 - '@esbuild/android-x64': 0.24.2 - '@esbuild/darwin-arm64': 0.24.2 - '@esbuild/darwin-x64': 0.24.2 - '@esbuild/freebsd-arm64': 0.24.2 - '@esbuild/freebsd-x64': 0.24.2 - '@esbuild/linux-arm': 0.24.2 - '@esbuild/linux-arm64': 0.24.2 - '@esbuild/linux-ia32': 0.24.2 - '@esbuild/linux-loong64': 0.24.2 - '@esbuild/linux-mips64el': 0.24.2 - '@esbuild/linux-ppc64': 0.24.2 - '@esbuild/linux-riscv64': 0.24.2 - '@esbuild/linux-s390x': 0.24.2 - '@esbuild/linux-x64': 0.24.2 - '@esbuild/netbsd-arm64': 0.24.2 - '@esbuild/netbsd-x64': 0.24.2 - '@esbuild/openbsd-arm64': 0.24.2 - '@esbuild/openbsd-x64': 0.24.2 - '@esbuild/sunos-x64': 0.24.2 - '@esbuild/win32-arm64': 0.24.2 - '@esbuild/win32-ia32': 0.24.2 - '@esbuild/win32-x64': 0.24.2 + '@esbuild/aix-ppc64': 0.25.0 + '@esbuild/android-arm': 0.25.0 + '@esbuild/android-arm64': 0.25.0 + '@esbuild/android-x64': 0.25.0 + '@esbuild/darwin-arm64': 0.25.0 + '@esbuild/darwin-x64': 0.25.0 + '@esbuild/freebsd-arm64': 0.25.0 + '@esbuild/freebsd-x64': 0.25.0 + '@esbuild/linux-arm': 0.25.0 + '@esbuild/linux-arm64': 0.25.0 + '@esbuild/linux-ia32': 0.25.0 + '@esbuild/linux-loong64': 0.25.0 + '@esbuild/linux-mips64el': 0.25.0 + '@esbuild/linux-ppc64': 0.25.0 + '@esbuild/linux-riscv64': 0.25.0 + '@esbuild/linux-s390x': 0.25.0 + '@esbuild/linux-x64': 0.25.0 + '@esbuild/netbsd-arm64': 0.25.0 + '@esbuild/netbsd-x64': 0.25.0 + '@esbuild/openbsd-arm64': 0.25.0 + '@esbuild/openbsd-x64': 0.25.0 + '@esbuild/sunos-x64': 0.25.0 + '@esbuild/win32-arm64': 0.25.0 + '@esbuild/win32-ia32': 0.25.0 + '@esbuild/win32-x64': 0.25.0 escalade@3.2.0: {} @@ -10582,7 +10611,7 @@ snapshots: dependencies: confusing-browser-globals: 1.0.11 eslint: 8.57.1 - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.8.3)(eslint@8.57.1) object.assign: 4.1.7 object.entries: 1.1.8 semver: 6.3.1 @@ -10600,7 +10629,7 @@ snapshots: dependencies: eslint: 8.57.1 eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.31.0)(eslint@8.57.1) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.8.3)(eslint@8.57.1) eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1) eslint-plugin-react: 7.37.4(eslint@8.57.1) eslint-plugin-react-hooks: 4.6.2(eslint@8.57.1) @@ -10619,30 +10648,29 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.1): + eslint-import-resolver-typescript@3.8.3(eslint-plugin-import@2.31.0)(eslint@8.57.1): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.0 - enhanced-resolve: 5.18.0 + enhanced-resolve: 5.18.1 eslint: 8.57.1 - fast-glob: 3.3.3 get-tsconfig: 4.10.0 is-bun-module: 1.3.0 - is-glob: 4.0.3 stable-hash: 0.0.4 + tinyglobby: 0.2.12 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.8.3)(eslint@8.57.1) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1): + eslint-module-utils@2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.8.3)(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.7.3) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.1) + eslint-import-resolver-typescript: 3.8.3(eslint-plugin-import@2.31.0)(eslint@8.57.1) transitivePeerDependencies: - supports-color @@ -10650,7 +10678,7 @@ snapshots: dependencies: eslint: 8.57.1 - eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.8.3)(eslint@8.57.1): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -10661,7 +10689,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.8.3)(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -10690,7 +10718,7 @@ snapshots: espree: 10.3.0 esquery: 1.6.0 parse-imports: 2.2.1 - semver: 7.6.3 + semver: 7.7.1 spdx-expression-parse: 4.0.0 synckit: 0.9.2 transitivePeerDependencies: @@ -10715,10 +10743,10 @@ snapshots: safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 - eslint-plugin-prettier@5.2.3(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.4.2): + eslint-plugin-prettier@5.2.3(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.5.2): dependencies: eslint: 8.57.1 - prettier: 3.4.2 + prettier: 3.5.2 prettier-linter-helpers: 1.0.0 synckit: 0.9.2 optionalDependencies: @@ -10731,7 +10759,7 @@ snapshots: eslint-plugin-react-prefer-function-component@3.4.0: {} - eslint-plugin-react-refresh@0.4.18(eslint@8.57.1): + eslint-plugin-react-refresh@0.4.19(eslint@8.57.1): dependencies: eslint: 8.57.1 @@ -10951,9 +10979,9 @@ snapshots: fastest-levenshtein@1.0.16: {} - fastq@1.18.0: + fastq@1.19.0: dependencies: - reusify: 1.0.4 + reusify: 1.1.0 fault@1.0.4: dependencies: @@ -11032,13 +11060,13 @@ snapshots: flat-cache@3.2.0: dependencies: - flatted: 3.3.2 + flatted: 3.3.3 keyv: 4.5.4 rimraf: 3.0.2 - flatted@3.3.2: {} + flatted@3.3.3: {} - for-each@0.3.4: + for-each@0.3.5: dependencies: is-callable: 1.2.7 @@ -11048,12 +11076,12 @@ snapshots: dependencies: for-in: 1.0.2 - foreground-child@3.3.0: + foreground-child@3.3.1: dependencies: cross-spawn: 7.0.6 signal-exit: 4.1.0 - fork-ts-checker-webpack-plugin@6.5.3(eslint@8.57.1)(typescript@5.7.3)(webpack@5.97.1(esbuild@0.24.2)): + fork-ts-checker-webpack-plugin@6.5.3(eslint@8.57.1)(typescript@5.7.3)(webpack@5.97.1(esbuild@0.25.0)): dependencies: '@babel/code-frame': 7.26.2 '@types/json-schema': 7.0.15 @@ -11066,10 +11094,10 @@ snapshots: memfs: 3.5.3 minimatch: 3.1.2 schema-utils: 2.7.0 - semver: 7.6.3 + semver: 7.7.1 tapable: 1.1.3 typescript: 5.7.3 - webpack: 5.97.1(esbuild@0.24.2) + webpack: 5.97.1(esbuild@0.25.0) optionalDependencies: eslint: 8.57.1 @@ -11104,7 +11132,7 @@ snapshots: fs-mkdirp-stream@2.0.1: dependencies: graceful-fs: 4.2.11 - streamx: 2.21.1 + streamx: 2.22.0 fs-monkey@1.0.6: {} @@ -11132,9 +11160,9 @@ snapshots: get-caller-file@2.0.5: {} - get-intrinsic@1.2.7: + get-intrinsic@1.3.0: dependencies: - call-bind-apply-helpers: 1.0.1 + call-bind-apply-helpers: 1.0.2 es-define-property: 1.0.1 es-errors: 1.3.0 es-object-atoms: 1.1.1 @@ -11165,7 +11193,7 @@ snapshots: dependencies: call-bound: 1.0.3 es-errors: 1.3.0 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 get-tsconfig@4.10.0: dependencies: @@ -11186,17 +11214,17 @@ snapshots: meow: 12.1.1 split2: 4.2.0 - git-raw-commits@5.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0): + git-raw-commits@5.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.1.0): dependencies: - '@conventional-changelog/git-client': 1.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0) + '@conventional-changelog/git-client': 1.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.1.0) meow: 13.2.0 transitivePeerDependencies: - conventional-commits-filter - conventional-commits-parser - git-semver-tags@8.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0): + git-semver-tags@8.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.1.0): dependencies: - '@conventional-changelog/git-client': 1.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0) + '@conventional-changelog/git-client': 1.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.1.0) meow: 13.2.0 transitivePeerDependencies: - conventional-commits-filter @@ -11214,12 +11242,12 @@ snapshots: dependencies: '@gulpjs/to-absolute-glob': 4.0.0 anymatch: 3.1.3 - fastq: 1.18.0 + fastq: 1.19.0 glob-parent: 6.0.2 is-glob: 4.0.3 is-negated-glob: 1.0.0 normalize-path: 3.0.0 - streamx: 2.21.1 + streamx: 2.22.0 glob-to-regexp@0.4.1: {} @@ -11230,7 +11258,7 @@ snapshots: glob@10.4.5: dependencies: - foreground-child: 3.3.0 + foreground-child: 3.3.1 jackspeak: 3.4.3 minimatch: 9.0.5 minipass: 7.1.2 @@ -11280,7 +11308,7 @@ snapshots: dependencies: type-fest: 0.20.2 - globals@15.14.0: {} + globals@15.15.0: {} globalthis@1.0.4: dependencies: @@ -11296,14 +11324,14 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 - globby@14.0.2: + globby@14.1.0: dependencies: '@sindresorhus/merge-streams': 2.3.0 fast-glob: 3.3.3 - ignore: 5.3.2 - path-type: 5.0.0 + ignore: 7.0.3 + path-type: 6.0.0 slash: 5.1.0 - unicorn-magic: 0.1.0 + unicorn-magic: 0.3.0 glogg@2.2.0: dependencies: @@ -11410,7 +11438,7 @@ snapshots: hast-util-parse-selector@2.2.5: {} - hast-util-to-jsx-runtime@2.3.2: + hast-util-to-jsx-runtime@2.3.5: dependencies: '@types/estree': 1.0.6 '@types/hast': 3.0.4 @@ -11422,7 +11450,7 @@ snapshots: mdast-util-mdx-expression: 2.0.1 mdast-util-mdx-jsx: 3.2.0 mdast-util-mdxjs-esm: 2.0.1 - property-information: 6.5.0 + property-information: 7.0.0 space-separated-tokens: 2.0.2 style-to-object: 1.0.8 unist-util-position: 5.0.0 @@ -11473,7 +11501,7 @@ snapshots: html-escaper@2.0.2: {} - html-to-image@1.11.11: {} + html-to-image@1.11.13: {} html-url-attributes@3.0.1: {} @@ -11514,11 +11542,13 @@ snapshots: ignore@5.3.2: {} + ignore@7.0.3: {} + immer@9.0.21: {} immutable@5.0.3: {} - import-fresh@3.3.0: + import-fresh@3.3.1: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 @@ -11540,7 +11570,7 @@ snapshots: jiti: 2.0.0-beta.3 jiti-v1: jiti@1.21.7 pathe: 1.1.2 - tsx: 4.19.2 + tsx: 4.19.3 transitivePeerDependencies: - supports-color @@ -11608,7 +11638,7 @@ snapshots: dependencies: call-bind: 1.0.8 call-bound: 1.0.3 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 is-arrayish@0.2.1: {} @@ -11628,14 +11658,14 @@ snapshots: dependencies: binary-extensions: 2.3.0 - is-boolean-object@1.2.1: + is-boolean-object@1.2.2: dependencies: call-bound: 1.0.3 has-tostringtag: 1.0.2 is-bun-module@1.3.0: dependencies: - semver: 7.6.3 + semver: 7.7.1 is-callable@1.2.7: {} @@ -11646,7 +11676,7 @@ snapshots: is-data-view@1.0.2: dependencies: call-bound: 1.0.3 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 is-typed-array: 1.1.15 is-date-object@1.1.0: @@ -11762,14 +11792,14 @@ snapshots: is-weakmap@2.0.2: {} - is-weakref@1.1.0: + is-weakref@1.1.1: dependencies: call-bound: 1.0.3 is-weakset@2.0.4: dependencies: call-bound: 1.0.3 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 is-windows@1.0.2: {} @@ -11822,7 +11852,7 @@ snapshots: dependencies: define-data-property: 1.1.4 es-object-atoms: 1.1.1 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 get-proto: 1.0.1 has-symbols: 1.1.0 set-function-name: 2.0.2 @@ -11848,7 +11878,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.12.0 + '@types/node': 22.13.5 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -11982,6 +12012,11 @@ snapshots: mlly: 1.7.4 pkg-types: 1.3.1 + local-pkg@1.0.0: + dependencies: + mlly: 1.7.4 + pkg-types: 1.3.1 + locate-path@2.0.0: dependencies: p-locate: 2.0.0 @@ -12071,13 +12106,13 @@ snapshots: magicast@0.3.5: dependencies: - '@babel/parser': 7.26.7 - '@babel/types': 7.26.7 + '@babel/parser': 7.26.9 + '@babel/types': 7.26.9 source-map-js: 1.2.1 make-dir@4.0.0: dependencies: - semver: 7.6.3 + semver: 7.7.1 map-cache@0.2.2: {} @@ -12094,7 +12129,7 @@ snapshots: cli-table3: 0.6.5 marked: 12.0.2 node-emoji: 2.2.0 - supports-hyperlinks: 3.1.0 + supports-hyperlinks: 3.2.0 marked@12.0.2: {} @@ -12132,7 +12167,7 @@ snapshots: mdast-util-find-and-replace: 3.0.2 micromark-util-character: 2.1.1 - mdast-util-gfm-footnote@2.0.0: + mdast-util-gfm-footnote@2.1.0: dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 @@ -12169,11 +12204,11 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-gfm@3.0.0: + mdast-util-gfm@3.1.0: dependencies: mdast-util-from-markdown: 2.0.2 mdast-util-gfm-autolink-literal: 2.0.1 - mdast-util-gfm-footnote: 2.0.0 + mdast-util-gfm-footnote: 2.1.0 mdast-util-gfm-strikethrough: 2.0.0 mdast-util-gfm-table: 2.0.0 mdast-util-gfm-task-list-item: 2.0.0 @@ -12500,11 +12535,11 @@ snapshots: mlly@1.7.4: dependencies: acorn: 8.14.0 - pathe: 2.0.2 + pathe: 2.0.3 pkg-types: 1.3.1 ufo: 1.5.4 - mrmime@2.0.0: {} + mrmime@2.0.1: {} ms@2.0.0: {} @@ -12520,7 +12555,7 @@ snapshots: nanoid@3.3.8: {} - nanoid@5.0.9: {} + nanoid@5.1.2: {} natural-compare@1.4.0: {} @@ -12550,7 +12585,7 @@ snapshots: normalize-package-data@6.0.2: dependencies: hosted-git-info: 7.0.2 - semver: 7.6.3 + semver: 7.7.1 validate-npm-package-license: 3.0.4 normalize-path@3.0.0: {} @@ -12584,7 +12619,7 @@ snapshots: object-assign@4.1.1: {} - object-inspect@1.13.3: {} + object-inspect@1.13.4: {} object-keys@1.1.1: {} @@ -12676,7 +12711,7 @@ snapshots: own-keys@1.0.1: dependencies: - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 object-keys: 1.1.1 safe-push-apply: 1.0.0 @@ -12730,7 +12765,7 @@ snapshots: package-json-from-dist@1.0.1: {} - package-manager-detector@0.2.8: {} + package-manager-detector@0.2.9: {} parent-module@1.0.1: dependencies: @@ -12782,7 +12817,7 @@ snapshots: dependencies: '@babel/code-frame': 7.26.2 index-to-position: 0.1.2 - type-fest: 4.33.0 + type-fest: 4.35.0 parse-ms@4.0.0: {} @@ -12836,7 +12871,7 @@ snapshots: path-type@4.0.0: {} - path-type@5.0.0: {} + path-type@6.0.0: {} path@0.12.7: dependencies: @@ -12845,7 +12880,7 @@ snapshots: pathe@1.1.2: {} - pathe@2.0.2: {} + pathe@2.0.3: {} pathval@2.0.0: {} @@ -12868,7 +12903,7 @@ snapshots: dependencies: confbox: 0.1.8 mlly: 1.7.4 - pathe: 2.0.2 + pathe: 2.0.3 pkg-up@3.1.0: dependencies: @@ -12880,162 +12915,162 @@ snapshots: polished@4.3.1: dependencies: - '@babel/runtime': 7.26.7 + '@babel/runtime': 7.26.9 - possible-typed-array-names@1.0.0: {} + possible-typed-array-names@1.1.0: {} - postcss-calc@10.1.0(postcss@8.5.1): + postcss-calc@10.1.1(postcss@8.5.3): dependencies: - postcss: 8.5.1 - postcss-selector-parser: 7.0.0 + postcss: 8.5.3 + postcss-selector-parser: 7.1.0 postcss-value-parser: 4.2.0 - postcss-colormin@7.0.2(postcss@8.5.1): + postcss-colormin@7.0.2(postcss@8.5.3): dependencies: browserslist: 4.24.4 caniuse-api: 3.0.0 colord: 2.9.3 - postcss: 8.5.1 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-convert-values@7.0.4(postcss@8.5.1): + postcss-convert-values@7.0.4(postcss@8.5.3): dependencies: browserslist: 4.24.4 - postcss: 8.5.1 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-discard-comments@7.0.3(postcss@8.5.1): + postcss-discard-comments@7.0.3(postcss@8.5.3): dependencies: - postcss: 8.5.1 + postcss: 8.5.3 postcss-selector-parser: 6.1.2 - postcss-discard-duplicates@7.0.1(postcss@8.5.1): + postcss-discard-duplicates@7.0.1(postcss@8.5.3): dependencies: - postcss: 8.5.1 + postcss: 8.5.3 - postcss-discard-empty@7.0.0(postcss@8.5.1): + postcss-discard-empty@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.5.1 + postcss: 8.5.3 - postcss-discard-overridden@7.0.0(postcss@8.5.1): + postcss-discard-overridden@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.5.1 + postcss: 8.5.3 - postcss-discard-unused@7.0.3(postcss@8.5.1): + postcss-discard-unused@7.0.3(postcss@8.5.3): dependencies: - postcss: 8.5.1 + postcss: 8.5.3 postcss-selector-parser: 6.1.2 - postcss-merge-idents@7.0.0(postcss@8.5.1): + postcss-merge-idents@7.0.0(postcss@8.5.3): dependencies: - cssnano-utils: 5.0.0(postcss@8.5.1) - postcss: 8.5.1 + cssnano-utils: 5.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-merge-longhand@7.0.4(postcss@8.5.1): + postcss-merge-longhand@7.0.4(postcss@8.5.3): dependencies: - postcss: 8.5.1 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - stylehacks: 7.0.4(postcss@8.5.1) + stylehacks: 7.0.4(postcss@8.5.3) - postcss-merge-rules@7.0.4(postcss@8.5.1): + postcss-merge-rules@7.0.4(postcss@8.5.3): dependencies: browserslist: 4.24.4 caniuse-api: 3.0.0 - cssnano-utils: 5.0.0(postcss@8.5.1) - postcss: 8.5.1 + cssnano-utils: 5.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-selector-parser: 6.1.2 - postcss-minify-font-values@7.0.0(postcss@8.5.1): + postcss-minify-font-values@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.5.1 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-minify-gradients@7.0.0(postcss@8.5.1): + postcss-minify-gradients@7.0.0(postcss@8.5.3): dependencies: colord: 2.9.3 - cssnano-utils: 5.0.0(postcss@8.5.1) - postcss: 8.5.1 + cssnano-utils: 5.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-minify-params@7.0.2(postcss@8.5.1): + postcss-minify-params@7.0.2(postcss@8.5.3): dependencies: browserslist: 4.24.4 - cssnano-utils: 5.0.0(postcss@8.5.1) - postcss: 8.5.1 + cssnano-utils: 5.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-minify-selectors@7.0.4(postcss@8.5.1): + postcss-minify-selectors@7.0.4(postcss@8.5.3): dependencies: cssesc: 3.0.0 - postcss: 8.5.1 + postcss: 8.5.3 postcss-selector-parser: 6.1.2 - postcss-normalize-charset@7.0.0(postcss@8.5.1): + postcss-normalize-charset@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.5.1 + postcss: 8.5.3 - postcss-normalize-display-values@7.0.0(postcss@8.5.1): + postcss-normalize-display-values@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.5.1 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-normalize-positions@7.0.0(postcss@8.5.1): + postcss-normalize-positions@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.5.1 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-normalize-repeat-style@7.0.0(postcss@8.5.1): + postcss-normalize-repeat-style@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.5.1 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-normalize-string@7.0.0(postcss@8.5.1): + postcss-normalize-string@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.5.1 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-normalize-timing-functions@7.0.0(postcss@8.5.1): + postcss-normalize-timing-functions@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.5.1 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-normalize-unicode@7.0.2(postcss@8.5.1): + postcss-normalize-unicode@7.0.2(postcss@8.5.3): dependencies: browserslist: 4.24.4 - postcss: 8.5.1 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-normalize-url@7.0.0(postcss@8.5.1): + postcss-normalize-url@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.5.1 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-normalize-whitespace@7.0.0(postcss@8.5.1): + postcss-normalize-whitespace@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.5.1 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-ordered-values@7.0.1(postcss@8.5.1): + postcss-ordered-values@7.0.1(postcss@8.5.3): dependencies: - cssnano-utils: 5.0.0(postcss@8.5.1) - postcss: 8.5.1 + cssnano-utils: 5.0.0(postcss@8.5.3) + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-reduce-idents@7.0.0(postcss@8.5.1): + postcss-reduce-idents@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.5.1 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - postcss-reduce-initial@7.0.2(postcss@8.5.1): + postcss-reduce-initial@7.0.2(postcss@8.5.3): dependencies: browserslist: 4.24.4 caniuse-api: 3.0.0 - postcss: 8.5.1 + postcss: 8.5.3 - postcss-reduce-transforms@7.0.0(postcss@8.5.1): + postcss-reduce-transforms@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.5.1 + postcss: 8.5.3 postcss-value-parser: 4.2.0 postcss-selector-parser@6.1.2: @@ -13043,29 +13078,29 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-selector-parser@7.0.0: + postcss-selector-parser@7.1.0: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-svgo@7.0.1(postcss@8.5.1): + postcss-svgo@7.0.1(postcss@8.5.3): dependencies: - postcss: 8.5.1 + postcss: 8.5.3 postcss-value-parser: 4.2.0 svgo: 3.3.2 - postcss-unique-selectors@7.0.3(postcss@8.5.1): + postcss-unique-selectors@7.0.3(postcss@8.5.3): dependencies: - postcss: 8.5.1 + postcss: 8.5.3 postcss-selector-parser: 6.1.2 postcss-value-parser@4.2.0: {} - postcss-zindex@7.0.0(postcss@8.5.1): + postcss-zindex@7.0.0(postcss@8.5.3): dependencies: - postcss: 8.5.1 + postcss: 8.5.3 - postcss@8.5.1: + postcss@8.5.3: dependencies: nanoid: 3.3.8 picocolors: 1.1.1 @@ -13077,7 +13112,7 @@ snapshots: dependencies: fast-diff: 1.3.0 - prettier@3.4.2: {} + prettier@3.5.2: {} pretty-format@27.5.1: dependencies: @@ -13118,7 +13153,7 @@ snapshots: dependencies: xtend: 4.0.2 - property-information@6.5.0: {} + property-information@7.0.0: {} proto-list@1.2.4: {} @@ -13128,8 +13163,6 @@ snapshots: queue-microtask@1.2.3: {} - queue-tick@1.0.1: {} - randombytes@2.1.0: dependencies: safe-buffer: 5.2.1 @@ -13141,12 +13174,12 @@ snapshots: minimist: 1.2.8 strip-json-comments: 2.0.1 - react-confetti@6.2.2(react@18.3.1): + react-confetti@6.2.3(react@18.3.1): dependencies: react: 18.3.1 tween-functions: 1.2.0 - react-dev-utils@12.0.1(eslint@8.57.1)(typescript@5.7.3)(webpack@5.97.1(esbuild@0.24.2)): + react-dev-utils@12.0.1(eslint@8.57.1)(typescript@5.7.3)(webpack@5.97.1(esbuild@0.25.0)): dependencies: '@babel/code-frame': 7.26.2 address: 1.2.2 @@ -13157,7 +13190,7 @@ snapshots: escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.57.1)(typescript@5.7.3)(webpack@5.97.1(esbuild@0.24.2)) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.57.1)(typescript@5.7.3)(webpack@5.97.1(esbuild@0.25.0)) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -13167,12 +13200,12 @@ snapshots: open: 8.4.2 pkg-up: 3.1.0 prompts: 2.4.2 - react-error-overlay: 6.0.11 + react-error-overlay: 6.1.0 recursive-readdir: 2.2.3 shell-quote: 1.8.2 strip-ansi: 6.0.1 text-table: 0.2.0 - webpack: 5.97.1(esbuild@0.24.2) + webpack: 5.97.1(esbuild@0.25.0) optionalDependencies: typescript: 5.7.3 transitivePeerDependencies: @@ -13186,9 +13219,9 @@ snapshots: react-docgen@7.1.1: dependencies: - '@babel/core': 7.26.7 - '@babel/traverse': 7.26.7 - '@babel/types': 7.26.7 + '@babel/core': 7.26.9 + '@babel/traverse': 7.26.9 + '@babel/types': 7.26.9 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.6 '@types/doctrine': 0.0.9 @@ -13205,7 +13238,7 @@ snapshots: react: 18.3.1 scheduler: 0.23.2 - react-error-overlay@6.0.11: {} + react-error-overlay@6.1.0: {} react-is@16.13.1: {} @@ -13217,12 +13250,13 @@ snapshots: dependencies: react: 18.3.1 - react-markdown@9.0.3(@types/react@18.3.18)(react@18.3.1): + react-markdown@9.1.0(@types/react@18.3.18)(react@18.3.1): dependencies: '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 '@types/react': 18.3.18 devlop: 1.1.0 - hast-util-to-jsx-runtime: 2.3.2 + hast-util-to-jsx-runtime: 2.3.5 html-url-attributes: 3.0.1 mdast-util-to-hast: 13.2.0 react: 18.3.1 @@ -13240,7 +13274,7 @@ snapshots: react-syntax-highlighter@15.6.1(react@18.3.1): dependencies: - '@babel/runtime': 7.26.7 + '@babel/runtime': 7.26.9 highlight.js: 10.7.3 highlightjs-vue: 1.0.0 lowlight: 1.20.0 @@ -13256,14 +13290,14 @@ snapshots: dependencies: find-up-simple: 1.0.0 read-pkg: 9.0.1 - type-fest: 4.33.0 + type-fest: 4.35.0 read-pkg@9.0.1: dependencies: '@types/normalize-package-data': 2.4.4 normalize-package-data: 6.0.2 parse-json: 8.1.0 - type-fest: 4.33.0 + type-fest: 4.35.0 unicorn-magic: 0.1.0 readable-stream@2.3.8: @@ -13286,7 +13320,7 @@ snapshots: dependencies: picomatch: 2.3.1 - readdirp@4.1.1: {} + readdirp@4.1.2: {} recast@0.23.9: dependencies: @@ -13316,7 +13350,7 @@ snapshots: es-abstract: 1.23.9 es-errors: 1.3.0 es-object-atoms: 1.1.1 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 get-proto: 1.0.1 which-builtin-type: 1.2.1 @@ -13337,14 +13371,14 @@ snapshots: gopd: 1.2.0 set-function-name: 2.0.2 - registry-auth-token@5.0.3: + registry-auth-token@5.1.0: dependencies: '@pnpm/npm-conf': 2.3.1 - remark-gfm@4.0.0: + remark-gfm@4.0.1: dependencies: '@types/mdast': 4.0.4 - mdast-util-gfm: 3.0.0 + mdast-util-gfm: 3.1.0 micromark-extension-gfm: 3.0.0 remark-parse: 11.0.0 remark-stringify: 11.0.0 @@ -13416,7 +13450,7 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - reusify@1.0.4: {} + reusify@1.1.0: {} rimraf@3.0.2: dependencies: @@ -13426,29 +13460,29 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - rollup@4.32.1: + rollup@4.34.8: dependencies: '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.32.1 - '@rollup/rollup-android-arm64': 4.32.1 - '@rollup/rollup-darwin-arm64': 4.32.1 - '@rollup/rollup-darwin-x64': 4.32.1 - '@rollup/rollup-freebsd-arm64': 4.32.1 - '@rollup/rollup-freebsd-x64': 4.32.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.32.1 - '@rollup/rollup-linux-arm-musleabihf': 4.32.1 - '@rollup/rollup-linux-arm64-gnu': 4.32.1 - '@rollup/rollup-linux-arm64-musl': 4.32.1 - '@rollup/rollup-linux-loongarch64-gnu': 4.32.1 - '@rollup/rollup-linux-powerpc64le-gnu': 4.32.1 - '@rollup/rollup-linux-riscv64-gnu': 4.32.1 - '@rollup/rollup-linux-s390x-gnu': 4.32.1 - '@rollup/rollup-linux-x64-gnu': 4.32.1 - '@rollup/rollup-linux-x64-musl': 4.32.1 - '@rollup/rollup-win32-arm64-msvc': 4.32.1 - '@rollup/rollup-win32-ia32-msvc': 4.32.1 - '@rollup/rollup-win32-x64-msvc': 4.32.1 + '@rollup/rollup-android-arm-eabi': 4.34.8 + '@rollup/rollup-android-arm64': 4.34.8 + '@rollup/rollup-darwin-arm64': 4.34.8 + '@rollup/rollup-darwin-x64': 4.34.8 + '@rollup/rollup-freebsd-arm64': 4.34.8 + '@rollup/rollup-freebsd-x64': 4.34.8 + '@rollup/rollup-linux-arm-gnueabihf': 4.34.8 + '@rollup/rollup-linux-arm-musleabihf': 4.34.8 + '@rollup/rollup-linux-arm64-gnu': 4.34.8 + '@rollup/rollup-linux-arm64-musl': 4.34.8 + '@rollup/rollup-linux-loongarch64-gnu': 4.34.8 + '@rollup/rollup-linux-powerpc64le-gnu': 4.34.8 + '@rollup/rollup-linux-riscv64-gnu': 4.34.8 + '@rollup/rollup-linux-s390x-gnu': 4.34.8 + '@rollup/rollup-linux-x64-gnu': 4.34.8 + '@rollup/rollup-linux-x64-musl': 4.34.8 + '@rollup/rollup-win32-arm64-msvc': 4.34.8 + '@rollup/rollup-win32-ia32-msvc': 4.34.8 + '@rollup/rollup-win32-x64-msvc': 4.34.8 fsevents: 2.3.3 run-applescript@7.0.0: {} @@ -13465,7 +13499,7 @@ snapshots: dependencies: call-bind: 1.0.8 call-bound: 1.0.3 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 has-symbols: 1.1.0 isarray: 2.0.5 @@ -13486,7 +13520,7 @@ snapshots: safer-buffer@2.1.2: {} - sass@1.83.4: + sass@1.85.1: dependencies: chokidar: 4.0.3 immutable: 5.0.3 @@ -13517,13 +13551,13 @@ snapshots: ajv-formats: 2.1.1(ajv@8.17.1) ajv-keywords: 5.1.0(ajv@8.17.1) - semantic-release@24.2.1(typescript@5.7.3): + semantic-release@24.2.3(typescript@5.7.3): dependencies: - '@semantic-release/commit-analyzer': 13.0.1(semantic-release@24.2.1(typescript@5.7.3)) + '@semantic-release/commit-analyzer': 13.0.1(semantic-release@24.2.3(typescript@5.7.3)) '@semantic-release/error': 4.0.0 - '@semantic-release/github': 11.0.1(semantic-release@24.2.1(typescript@5.7.3)) - '@semantic-release/npm': 12.0.1(semantic-release@24.2.1(typescript@5.7.3)) - '@semantic-release/release-notes-generator': 14.0.3(semantic-release@24.2.1(typescript@5.7.3)) + '@semantic-release/github': 11.0.1(semantic-release@24.2.3(typescript@5.7.3)) + '@semantic-release/npm': 12.0.1(semantic-release@24.2.3(typescript@5.7.3)) + '@semantic-release/release-notes-generator': 14.0.3(semantic-release@24.2.3(typescript@5.7.3)) aggregate-error: 5.0.0 cosmiconfig: 9.0.0(typescript@5.7.3) debug: 4.4.0 @@ -13544,7 +13578,7 @@ snapshots: p-reduce: 3.0.0 read-package-up: 11.0.0 resolve-from: 5.0.0 - semver: 7.6.3 + semver: 7.7.1 semver-diff: 4.0.0 signale: 1.4.0 yargs: 17.7.2 @@ -13554,7 +13588,7 @@ snapshots: semver-diff@4.0.0: dependencies: - semver: 7.6.3 + semver: 7.7.1 semver-greatest-satisfied-range@2.0.0: dependencies: @@ -13564,7 +13598,7 @@ snapshots: semver@6.3.1: {} - semver@7.6.3: {} + semver@7.7.1: {} serialize-javascript@6.0.2: dependencies: @@ -13575,7 +13609,7 @@ snapshots: define-data-property: 1.1.4 es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 gopd: 1.2.0 has-property-descriptors: 1.0.2 @@ -13603,27 +13637,27 @@ snapshots: side-channel-list@1.0.0: dependencies: es-errors: 1.3.0 - object-inspect: 1.13.3 + object-inspect: 1.13.4 side-channel-map@1.0.1: dependencies: call-bound: 1.0.3 es-errors: 1.3.0 - get-intrinsic: 1.2.7 - object-inspect: 1.13.3 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 side-channel-weakmap@1.0.2: dependencies: call-bound: 1.0.3 es-errors: 1.3.0 - get-intrinsic: 1.2.7 - object-inspect: 1.13.3 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 side-channel-map: 1.0.1 side-channel@1.1.0: dependencies: es-errors: 1.3.0 - object-inspect: 1.13.3 + object-inspect: 1.13.4 side-channel-list: 1.0.0 side-channel-map: 1.0.1 side-channel-weakmap: 1.0.2 @@ -13651,13 +13685,13 @@ snapshots: sirv@2.0.4: dependencies: '@polka/url': 1.0.0-next.28 - mrmime: 2.0.0 + mrmime: 2.0.1 totalist: 3.0.1 - sirv@3.0.0: + sirv@3.0.1: dependencies: '@polka/url': 1.0.0-next.28 - mrmime: 2.0.0 + mrmime: 2.0.1 totalist: 3.0.1 sisteransi@1.0.5: {} @@ -13729,11 +13763,11 @@ snapshots: std-env@3.8.0: {} - storybook@8.5.2(prettier@3.4.2): + storybook@8.6.0(prettier@3.5.2): dependencies: - '@storybook/core': 8.5.2(prettier@3.4.2) + '@storybook/core': 8.6.0(prettier@3.5.2)(storybook@8.6.0(prettier@3.5.2)) optionalDependencies: - prettier: 3.4.2 + prettier: 3.5.2 transitivePeerDependencies: - bufferutil - supports-color @@ -13748,14 +13782,13 @@ snapshots: stream-composer@1.0.2: dependencies: - streamx: 2.21.1 + streamx: 2.22.0 stream-exhaust@1.0.2: {} - streamx@2.21.1: + streamx@2.22.0: dependencies: fast-fifo: 1.3.2 - queue-tick: 1.0.1 text-decoder: 1.2.3 optionalDependencies: bare-events: 2.5.4 @@ -13786,7 +13819,7 @@ snapshots: es-abstract: 1.23.9 es-errors: 1.3.0 es-object-atoms: 1.1.1 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 gopd: 1.2.0 has-symbols: 1.1.0 internal-slot: 1.1.0 @@ -13867,10 +13900,10 @@ snapshots: dependencies: inline-style-parser: 0.2.4 - stylehacks@7.0.4(postcss@8.5.1): + stylehacks@7.0.4(postcss@8.5.3): dependencies: browserslist: 4.24.4 - postcss: 8.5.1 + postcss: 8.5.3 postcss-selector-parser: 6.1.2 super-regex@1.0.0: @@ -13890,7 +13923,7 @@ snapshots: dependencies: has-flag: 4.0.0 - supports-hyperlinks@3.1.0: + supports-hyperlinks@3.2.0: dependencies: has-flag: 4.0.0 supports-color: 7.2.0 @@ -13926,7 +13959,7 @@ snapshots: teex@1.0.1: dependencies: - streamx: 2.21.1 + streamx: 2.22.0 temp-dir@3.0.0: {} @@ -13937,18 +13970,18 @@ snapshots: type-fest: 2.19.0 unique-string: 3.0.0 - terser-webpack-plugin@5.3.11(esbuild@0.24.2)(webpack@5.97.1(esbuild@0.24.2)): + terser-webpack-plugin@5.3.11(esbuild@0.25.0)(webpack@5.97.1(esbuild@0.25.0)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 4.3.0 serialize-javascript: 6.0.2 - terser: 5.37.0 - webpack: 5.97.1(esbuild@0.24.2) + terser: 5.39.0 + webpack: 5.97.1(esbuild@0.25.0) optionalDependencies: - esbuild: 0.24.2 + esbuild: 0.25.0 - terser@5.37.0: + terser@5.39.0: dependencies: '@jridgewell/source-map': 0.3.6 acorn: 8.14.0 @@ -13998,7 +14031,7 @@ snapshots: tinyexec@0.3.2: {} - tinyglobby@0.2.10: + tinyglobby@0.2.12: dependencies: fdir: 6.4.3(picomatch@4.0.2) picomatch: 4.0.2 @@ -14015,7 +14048,7 @@ snapshots: to-through@3.0.0: dependencies: - streamx: 2.21.1 + streamx: 2.22.0 totalist@3.0.1: {} @@ -14029,7 +14062,7 @@ snapshots: dependencies: typescript: 5.7.3 - ts-api-utils@2.0.0(typescript@5.7.3): + ts-api-utils@2.0.1(typescript@5.7.3): dependencies: typescript: 5.7.3 @@ -14057,9 +14090,9 @@ snapshots: tslib: 1.14.1 typescript: 5.7.3 - tsx@4.19.2: + tsx@4.19.3: dependencies: - esbuild: 0.23.1 + esbuild: 0.25.0 get-tsconfig: 4.10.0 optionalDependencies: fsevents: 2.3.3 @@ -14076,7 +14109,7 @@ snapshots: type-fest@2.19.0: {} - type-fest@4.33.0: {} + type-fest@4.35.0: {} typed-array-buffer@1.0.3: dependencies: @@ -14087,7 +14120,7 @@ snapshots: typed-array-byte-length@1.0.3: dependencies: call-bind: 1.0.8 - for-each: 0.3.4 + for-each: 0.3.5 gopd: 1.2.0 has-proto: 1.2.0 is-typed-array: 1.1.15 @@ -14096,7 +14129,7 @@ snapshots: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.8 - for-each: 0.3.4 + for-each: 0.3.5 gopd: 1.2.0 has-proto: 1.2.0 is-typed-array: 1.1.15 @@ -14105,10 +14138,10 @@ snapshots: typed-array-length@1.0.7: dependencies: call-bind: 1.0.8 - for-each: 0.3.4 + for-each: 0.3.5 gopd: 1.2.0 is-typed-array: 1.1.15 - possible-typed-array-names: 1.0.0 + possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 typescript@5.7.3: {} @@ -14201,12 +14234,12 @@ snapshots: dependencies: '@unocss/core': 0.61.9 - unocss@0.63.6(postcss@8.5.1)(rollup@4.32.1)(typescript@5.7.3)(vite@5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0)): + unocss@0.63.6(postcss@8.5.3)(rollup@4.34.8)(typescript@5.7.3)(vite@5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0)): dependencies: - '@unocss/astro': 0.63.6(rollup@4.32.1)(typescript@5.7.3)(vite@5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0)) - '@unocss/cli': 0.63.6(rollup@4.32.1) + '@unocss/astro': 0.63.6(rollup@4.34.8)(typescript@5.7.3)(vite@5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0)) + '@unocss/cli': 0.63.6(rollup@4.34.8) '@unocss/core': 0.63.6 - '@unocss/postcss': 0.63.6(postcss@8.5.1) + '@unocss/postcss': 0.63.6(postcss@8.5.3) '@unocss/preset-attributify': 0.63.6 '@unocss/preset-icons': 0.63.6 '@unocss/preset-mini': 0.63.6 @@ -14219,9 +14252,9 @@ snapshots: '@unocss/transformer-compile-class': 0.63.6 '@unocss/transformer-directives': 0.63.6 '@unocss/transformer-variant-group': 0.63.6 - '@unocss/vite': 0.63.6(patch_hash=5ptgy7mbavmjf7zwexb7dph4ji)(rollup@4.32.1)(typescript@5.7.3)(vite@5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0)) + '@unocss/vite': 0.63.6(patch_hash=5ptgy7mbavmjf7zwexb7dph4ji)(rollup@4.34.8)(typescript@5.7.3)(vite@5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0)) optionalDependencies: - vite: 5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0) + vite: 5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0) transitivePeerDependencies: - postcss - rollup @@ -14232,7 +14265,7 @@ snapshots: dependencies: '@antfu/install-pkg': 0.4.1 '@antfu/utils': 0.7.10 - '@iconify/utils': 2.2.1 + '@iconify/utils': 2.3.0 debug: 4.4.0 kolorist: 1.8.0 local-pkg: 0.5.1 @@ -14311,7 +14344,7 @@ snapshots: normalize-path: 3.0.0 resolve-options: 2.0.0 stream-composer: 1.0.2 - streamx: 2.21.1 + streamx: 2.22.0 to-through: 3.0.0 value-or-function: 4.0.0 vinyl: 3.0.0 @@ -14322,7 +14355,7 @@ snapshots: convert-source-map: 2.0.0 graceful-fs: 4.2.11 now-and-later: 3.0.0 - streamx: 2.21.1 + streamx: 2.22.0 vinyl: 3.0.0 vinyl-contents: 2.0.0 @@ -14334,13 +14367,13 @@ snapshots: replace-ext: 2.0.0 teex: 1.0.1 - vite-node@2.1.8(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0): + vite-node@2.1.9(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0): dependencies: cac: 6.7.14 debug: 4.4.0 es-module-lexer: 1.6.0 pathe: 1.1.2 - vite: 5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0) + vite: 5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0) transitivePeerDependencies: - '@types/node' - less @@ -14352,43 +14385,43 @@ snapshots: - supports-color - terser - vite-plugin-inspect@0.8.9(rollup@4.32.1)(vite@5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0)): + vite-plugin-inspect@0.8.9(rollup@4.34.8)(vite@5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0)): dependencies: '@antfu/utils': 0.7.10 - '@rollup/pluginutils': 5.1.4(rollup@4.32.1) + '@rollup/pluginutils': 5.1.4(rollup@4.34.8) debug: 4.4.0 error-stack-parser-es: 0.1.5 fs-extra: 11.3.0 open: 10.1.0 perfect-debounce: 1.0.0 picocolors: 1.1.1 - sirv: 3.0.0 - vite: 5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0) + sirv: 3.0.1 + vite: 5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0) transitivePeerDependencies: - rollup - supports-color - vite@5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0): + vite@5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0): dependencies: esbuild: 0.21.5 - postcss: 8.5.1 - rollup: 4.32.1 + postcss: 8.5.3 + rollup: 4.34.8 optionalDependencies: - '@types/node': 22.12.0 + '@types/node': 22.13.5 fsevents: 2.3.3 - sass: 1.83.4 - terser: 5.37.0 + sass: 1.85.1 + terser: 5.39.0 - vitest@2.1.8(@types/node@22.12.0)(@vitest/ui@2.1.8)(sass@1.83.4)(terser@5.37.0): + vitest@2.1.9(@types/node@22.13.5)(@vitest/ui@2.1.9)(sass@1.85.1)(terser@5.39.0): dependencies: - '@vitest/expect': 2.1.8 - '@vitest/mocker': 2.1.8(vite@5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0)) - '@vitest/pretty-format': 2.1.8 - '@vitest/runner': 2.1.8 - '@vitest/snapshot': 2.1.8 - '@vitest/spy': 2.1.8 - '@vitest/utils': 2.1.8 - chai: 5.1.2 + '@vitest/expect': 2.1.9 + '@vitest/mocker': 2.1.9(vite@5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0)) + '@vitest/pretty-format': 2.1.9 + '@vitest/runner': 2.1.9 + '@vitest/snapshot': 2.1.9 + '@vitest/spy': 2.1.9 + '@vitest/utils': 2.1.9 + chai: 5.2.0 debug: 4.4.0 expect-type: 1.1.0 magic-string: 0.30.17 @@ -14398,12 +14431,12 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.0.2 tinyrainbow: 1.2.0 - vite: 5.4.14(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0) - vite-node: 2.1.8(@types/node@22.12.0)(sass@1.83.4)(terser@5.37.0) + vite: 5.4.14(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0) + vite-node: 2.1.9(@types/node@22.13.5)(sass@1.85.1)(terser@5.39.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.12.0 - '@vitest/ui': 2.1.8(vitest@2.1.8) + '@types/node': 22.13.5 + '@vitest/ui': 2.1.9(vitest@2.1.9) transitivePeerDependencies: - less - lightningcss @@ -14440,7 +14473,7 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.97.1(esbuild@0.24.2): + webpack@5.97.1(esbuild@0.25.0): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.6 @@ -14450,7 +14483,7 @@ snapshots: acorn: 8.14.0 browserslist: 4.24.4 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.0 + enhanced-resolve: 5.18.1 es-module-lexer: 1.6.0 eslint-scope: 5.1.1 events: 3.3.0 @@ -14462,7 +14495,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.11(esbuild@0.24.2)(webpack@5.97.1(esbuild@0.24.2)) + terser-webpack-plugin: 5.3.11(esbuild@0.25.0)(webpack@5.97.1(esbuild@0.25.0)) watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -14479,7 +14512,7 @@ snapshots: which-boxed-primitive@1.1.1: dependencies: is-bigint: 1.1.0 - is-boolean-object: 1.2.1 + is-boolean-object: 1.2.2 is-number-object: 1.1.1 is-string: 1.1.1 is-symbol: 1.1.1 @@ -14494,7 +14527,7 @@ snapshots: is-finalizationregistry: 1.1.1 is-generator-function: 1.1.0 is-regex: 1.2.1 - is-weakref: 1.1.0 + is-weakref: 1.1.1 isarray: 2.0.5 which-boxed-primitive: 1.1.1 which-collection: 1.0.2 @@ -14512,7 +14545,7 @@ snapshots: available-typed-arrays: 1.0.7 call-bind: 1.0.8 call-bound: 1.0.3 - for-each: 0.3.4 + for-each: 0.3.5 gopd: 1.2.0 has-tostringtag: 1.0.2 @@ -14547,7 +14580,7 @@ snapshots: wrappy@1.0.2: {} - ws@8.18.0: {} + ws@8.18.1: {} xtend@4.0.2: {} diff --git a/src/assets/UT-Map.svg b/src/assets/UT-Map.svg new file mode 100644 index 00000000..c93ca675 --- /dev/null +++ b/src/assets/UT-Map.svg @@ -0,0 +1,5075 @@ + + + +UT MapADHLLDLLABMCWWHCMBLCHLFHCMALTDCRDBLDANDHSMKINUA9BWYNOAARCUSSCPBSW7CEEETCFDHJONCS4CRHHSSTMMTNHCCJIPFAFPLBJTCCMRHPACDFANEZBELSTDMNCRSCSSWUPBMMSMFHSRHARTCPECS5SSBBMEBURPHRFNTNHBGEAGWBBIOBOTHMAUNBFACMAIGEBWELWCHCOMWAGBRBGOLBTLWMBSUTPARCALBATGARMEZGSBCBAHRCHRHBENUTCPCLJCDLDHBHDRHDMHDGREPHDSJHJCDSZBUTAATTRRHBMSBMACS3TSCCDLJHHANBNURHDBHTBHLBSMCCCFJESPAISEANMSMBBPMAECJEERCPATPOBPPECS6PPLGDCPPAWINJGBEPSLTHRLPUTXWCPGLTAHGLLELLBLLCDFFSBSDEVFC8FC3FC4FC2FC5FC9FC6FC7CRBCDAFPCMSBCMLUILHCGTRGTexas StateCapitolTSGSWGSAGCCGBob BullockTexas StateHistory MuseumGUGSJGMAGBRG27thStreetWest 26thStreetNueces StreetSan Antonio StreetW 25thStreetWest Martin Luther King Jr. Blvd.West 21stStreetWest 20thStreetSan Antonio StreetGuadalupe StreetLavaca StreetWest 14thStreetWest 15thStreetEast 14thStreetEast 15thStreetWest 16thStreetWest 17thStreetWest 18thStreetWest 13thStreetColorado StreetCongress Ave.Brazos StreetBrazos StreetSan Jacinto Blvd.Trinity StreetRed River StreetWhitis Ave.University Ave.Whichita StreetteertS oinotnA naSWest 24thStreet.evA sitihWWest Dean Keeton StreetEast Dean Keeton StreetEast 24thStreet.evA ytisrevinU.evA ytisrevinU.tS atihcihWyawdeepSPark PlaceDuval StreetEast 30thStreetGuadalupe StreetGuadalupe StreetWest 25thStreetNueces StreetIC2Guadalupe StreetEast 25th StreetRobert Dedman DriveEast Dean Keeton StreetMedical Arts StreetteertS ytinirTEast 23rdStreetClyde Littlefield DriveRed River StreetInner Campus DriveEast 21stStreetEast 20thStreetSanJacintoBlvd.East Martin Luther King Jr. Blvd.Jester CircleteertS sozarBRed River StreetEast 20thStreetEast 21stStreetManor RoadEast 22ndStreetComal StreetConcho St.Leona StreetSalina StreetRobinson Ave.East 30thStreetEast Dean Keeton StreetyawdeepSSanJacintoBlvd.12345ABCDEECGEast Martin Luther King Jr. Blvd.RHGRobert Dedman DriveMoodyCenter(MCA)BBRNUGSEZUT Mapdoprz diff --git a/src/pages/map/Map.tsx b/src/pages/map/Map.tsx new file mode 100644 index 00000000..0397edf6 --- /dev/null +++ b/src/pages/map/Map.tsx @@ -0,0 +1,17 @@ +import DialogProvider from '@views/components/common/DialogProvider/DialogProvider'; +import ExtensionRoot from '@views/components/common/ExtensionRoot/ExtensionRoot'; +import Map from '@views/components/map/Map'; +import React from 'react'; + +/** + * Renders the map page for the UTRP (UT Registration Plus) extension. + */ +export default function MapPage() { + return ( + + + + + + ); +} diff --git a/src/pages/map/index.html b/src/pages/map/index.html new file mode 100644 index 00000000..bf775b44 --- /dev/null +++ b/src/pages/map/index.html @@ -0,0 +1,16 @@ + + + + + + + UTRP Map + + + + +
+ + + + diff --git a/src/pages/map/index.tsx b/src/pages/map/index.tsx new file mode 100644 index 00000000..2d403d19 --- /dev/null +++ b/src/pages/map/index.tsx @@ -0,0 +1,6 @@ +import React from 'react'; +import { createRoot } from 'react-dom/client'; + +import Map from './Map'; + +createRoot(document.getElementById('root')!).render(); diff --git a/src/shared/types/CRXPages.ts b/src/shared/types/CRXPages.ts index a52ad899..caf2e8de 100644 --- a/src/shared/types/CRXPages.ts +++ b/src/shared/types/CRXPages.ts @@ -5,6 +5,7 @@ export const CRX_PAGES = { DEBUG: '/debug.html', CALENDAR: '/calendar.html', OPTIONS: '/options.html', + MAP: '/map.html', REPORT: '/report.html', } as const; diff --git a/src/shared/types/MainCampusBuildings.ts b/src/shared/types/MainCampusBuildings.ts new file mode 100644 index 00000000..9445cbe3 --- /dev/null +++ b/src/shared/types/MainCampusBuildings.ts @@ -0,0 +1,1486 @@ +type None = 'None'; + +type BuildingInfo = { + name: string; + number: string; + year: number | None; + zone: number | None | 'LBJ'; +}; + +type Buildings = Record; + +/** + * An object representing the main campus buildings with their respective details. + */ +export const MainCampusBuildings = { + // Building Code, Building Name, Building Number, Occupied, Zone + ADH: { + name: 'ALMETRIS DUREN RESIDENCE HALL', + number: '0347', + year: 2007, + zone: 2, + }, + AF1: { + name: 'ATHLETIC FIELDS PAVILION (REHAB)', + number: '0438', + year: 2012, + zone: 3, + }, + AF2: { + name: 'ATHLETIC FIELDS PAVILION (EASTSIDE)', + number: '0439', + year: 2012, + zone: 3, + }, + AFP: { + name: 'ATHLETIC FIELDS PAVILION', + number: '0423', + year: 1995, + zone: 3, + }, + AHG: { + name: 'ANNA HISS GYMNASIUM', + number: '0657', + year: 1930, + zone: 1, + }, + ANB: { + name: 'ARNO NOWOTNY BUILDING', + number: '0722', + year: 1859, + zone: 6, + }, + AND: { + name: 'ANDREWS RESIDENCE HALL', + number: '0009', + year: 1936, + zone: 2, + }, + ARC: { + name: 'ANIMAL RESOURCES CENTER', + number: '0135', + year: 1977, + zone: 1, + }, + ART: { + name: 'ART BUILDING AND MUSEUM', + number: '0049', + year: 1962, + zone: 3, + }, + ASE: { + name: 'AEROSPACE ENGINEERING BUILDING', + number: '0983', + year: 2002, + zone: 1, + }, + ATT: { + name: 'AT&T EXECUTIVE EDUC & CONF CENTER', + number: '0027', + year: 2008, + zone: 4, + }, + BAT: { + name: 'BATTS HALL', + number: '0073', + year: 1951, + zone: 4, + }, + BBR: { + name: 'BASKETBALL & ROWING TRAINING FAC', + number: '9717', + year: 2023, + zone: 3, + }, + BEL: { + name: 'L. THEO BELLMONT HALL', + number: '0418', + year: 1972, + zone: 3, + }, + BEN: { + name: 'BENEDICT HALL', + number: '0081', + year: 1951, + zone: 4, + }, + BGH: { + name: 'BIOLOGICAL SCIENCES GREENHOUSES', + number: '0100', + year: 1975, + zone: 1, + }, + BHD: { + name: 'BRACKENRIDGE RESIDENCE HALL', + number: '0105', + year: 1933, + zone: 4, + }, + BIO: { + name: 'BIOLOGICAL LABORATORIES', + number: '0089', + year: 1924, + zone: 1, + }, + BLD: { + name: 'BLANTON RESIDENCE HALL', + number: '0098', + year: 1955, + zone: 2, + }, + BMA: { + name: 'JACK S. BLANTON MUSEUM OF ART', + number: '0114', + year: 2006, + zone: 4, + }, + BME: { + name: 'BIOMEDICAL ENGINEERING BUILDING', + number: '0136', + year: 2008, + zone: 1, + }, + BMK: { + name: 'BLANTON MUSEUM ELLSWORTH KELLY', + number: '0117', + year: 2016, + zone: 4, + }, + BMS: { + name: 'BLANTON MUSEUM SMITH BUILDING', + number: '0115', + year: 2008, + zone: 4, + }, + BOT: { + name: 'BIOLOGICAL GREENHOUSE', + number: '0097', + year: 1926, + zone: 1, + }, + BRB: { + name: 'BERNARD AND AUDRE RAPOPORT BUILDING', + number: '0457', + year: 1941, + zone: 2, + }, + BRG: { + name: 'BRAZOS GARAGE', + number: '0600', + year: 1997, + zone: 4, + }, + BSB: { + name: 'BASKETBALL SUPPORT BLDG (REC SPORT)', + number: '0145', + year: 2000, + zone: 4, + }, + BTL: { + name: 'BATTLE HALL', + number: '0065', + year: 1911, + zone: 2, + }, + BUR: { + name: 'BURDINE HALL', + number: '0099', + year: 1970, + zone: 2, + }, + BWY: { + name: '2616 WICHITA (BRIDGEWAY)', + number: '0435', + year: 1968, + zone: 2, + }, + CAL: { + name: 'CALHOUN HALL', + number: '0954', + year: 1967, + zone: 4, + }, + CBA: { + name: 'COLLEGE OF BUSINESS ADMINISTRATION', + number: '0107', + year: 1962, + zone: 4, + }, + CCG: { + name: 'CONFERENCE CENTER GARAGE', + number: '0028', + year: 2008, + zone: 4, + }, + CCJ: { + name: 'CONNALLY CENTER FOR JUSTICE', + number: '0603', + year: 2000, + zone: 3, + }, + CDA: { + name: 'COMAL CHILD DEVELOPMENT CTR ANNEX', + number: '0167', + year: 1996, + zone: 3, + }, + CDL: { + name: 'COLLECTIONS DEPOSIT LIBRARY', + number: '0162', + year: 1968, + zone: 6, + }, + CEE: { + name: 'CONTINUING ENGINEERING EDUCATION', + number: '0986', + year: 1967, + zone: 1, + }, + CLK: { + name: 'CAVEN CLARK FIELD SUPPORT BUILDING', + number: '0452', + year: 2011, + zone: 4, + }, + CMA: { + name: 'JESSE H. JONES COMM. CTR. (BLDG. A)', + number: '0180', + year: 1973, + zone: 2, + }, + CMB: { + name: 'JESSE H. JONES COMM. CTR. (BLDG. B)', + number: '0182', + year: 1973, + zone: 2, + }, + CML: { + name: 'COMAL ST. CHILD DEVELOPMENT CENTER', + number: '0168', + year: 2005, + zone: 3, + }, + COM: { + name: 'COMPUTATION CENTER', + number: '0178', + year: 1961, + zone: 2, + }, + CPB: { + name: 'COMPACTOR BUILDING', + number: '0630', + year: 1982, + zone: 1, + }, + CPC: { + name: 'CPC FIELD STAFF OFFICE', + number: '9700', + year: 2005, + zone: 3, + }, + CPE: { + name: 'CHEMICAL AND PETROLEUM ENGINEERING', + number: '0231', + year: 1986, + zone: 1, + }, + CRB: { + name: 'COMPUTATIONAL RESOURCE BUILDING', + number: '0160', + year: 1973, + zone: 3, + }, + CRD: { + name: 'CAROTHERS RESIDENCE HALL', + number: '0129', + year: 1937, + zone: 2, + }, + CRH: { + name: 'CREEKSIDE RESIDENCE HALL', + number: '0562', + year: 1955, + zone: 2, + }, + CS3: { + name: 'CENTRAL CHILLING STATION NO. 3', + number: '0138', + year: 1970, + zone: 4, + }, + CS4: { + name: 'CENTRAL CHILLING STATION NO. 4', + number: '0140', + year: 1971, + zone: 3, + }, + CS5: { + name: 'CENTRAL CHILLING STATION NO. 5', + number: '0141', + year: 1986, + zone: 1, + }, + CS6: { + name: 'CENTRAL CHILLING STATION NO. 6', + number: '0142', + year: 2009, + zone: 2, + }, + CS7: { + name: 'CENTRAL CHILLING STATION NO. 7', + number: '0143', + year: 2014, + zone: 3, + }, + CSS: { + name: 'CAROTHERS DORM SUBSTATION', + number: '0608', + year: 2011, + zone: 2, + }, + CT1: { + name: 'COOLING TOWER 1', + number: '0487', + year: 2009, + zone: 2, + }, + CT2: { + name: 'UTM COOLING TOWER 2', + number: '0486', + year: 2017, + zone: 2, + }, + CT7: { + name: 'UTM COOLING TOWER 7', + number: '0144', + year: 2014, + zone: 3, + }, + D21: { + name: 'DOBIE TWENTY21', + number: '0003', + year: 2021, + zone: 4, + }, + DCG: { + name: 'DOBIE CENTER GARAGE', + number: '0004', + year: 2021, + zone: NaN, + }, + DEV: { + name: 'DEVELOPMENT OFFICE BUILDING', + number: '9008', + year: 1988, + zone: 3, + }, + DFA: { + name: 'E. WILLIAM DOTY FINE ARTS BUILDING', + number: '0130', + year: 1979, + zone: 3, + }, + DFF: { + name: 'UFCU DISCH-FALK FIELD', + number: '9822', + year: 1975, + zone: 3, + }, + DMC: { + name: 'G. B. DEALEY CENTER FOR NEW MEDIA', + number: '0185', + year: 2009, + zone: 2, + }, + DPI: { + name: 'DELL PEDIATRIC RESEARCH INSTITUTE', + number: '3355', + year: 2009, + zone: 6, + }, + DTB: { + name: 'DINOSAUR TRACKWAY BLDG.', + number: '0594', + year: 1980, + zone: 3, + }, + E11: { + name: 'EQUIPMENT STOREHOUSE # 11', + number: '0691', + year: 1980, + zone: 3, + }, + E13: { + name: 'EQUIPMENT STOREHOUSE # 13', + number: '0693', + year: 1980, + zone: 3, + }, + E15: { + name: 'EQUIPMENT STOREHOUSE # 15', + number: '0695', + year: 1980, + zone: 3, + }, + E23: { + name: 'EQUIPMENT STOREHOUSE # 23', + number: 'E023', + year: 1955, + zone: 2, + }, + E24: { + name: 'EQUIPMENT STOREHOUSE # 24', + number: 'E024', + year: 2005, + zone: 3, + }, + E25: { + name: 'EQUIPMENT STOREHOUSE # 25', + number: 'E025', + year: 2015, + zone: 3, + }, + E26: { + name: 'EQUIPMENT STOREHOUSE #26', + number: '0563', + year: 1982, + zone: 1, + }, + E27: { + name: 'EQUIPMENT STOREHOUSE #27', + number: '0684', + year: 2023, + zone: 1, + }, + ECG: { + name: 'EAST CAMPUS GARAGE', + number: '9820', + year: 2017, + zone: 3, + }, + ECJ: { + name: 'ERNEST COCKRELL JR. HALL', + number: '0227', + year: 1974, + zone: 2, + }, + EER: { + name: 'ENGR EDUCATION AND RESEARCH CENTER', + number: '0223', + year: 2017, + zone: 1, + }, + EHZ: { + name: 'ETC HAZ-MAT STORAGE BUILDING', + number: '0232', + year: 2004, + zone: 1, + }, + EPS: { + name: 'E.P. SCHOCH BUILDING', + number: '0153', + year: 1941, + zone: 2, + }, + ETC: { + name: 'ENGINEERING TEACHING CENTER II', + number: '0230', + year: 1983, + zone: 1, + }, + F8A: { + name: 'FC8 CHEMICAL STORAGE BUILDING', + number: '0568', + year: 2020, + zone: 3, + }, + FAC: { + name: 'PETER T. FLAWN ACADEMIC CENTER', + number: '0605', + year: 1962, + zone: 2, + }, + FC1: { + name: 'FACILITIES COMPLEX BLDG. 1', + number: '0550', + year: 1988, + zone: 3, + }, + FC2: { + name: 'FACILITIES COMPLEX BLDG. 2', + number: '0565', + year: 1988, + zone: 3, + }, + FC3: { + name: 'FACILITIES COMPLEX BLDG. 3', + number: '0552', + year: 1988, + zone: 3, + }, + FC4: { + name: 'FACILITIES COMPLEX BLDG. 4', + number: '0558', + year: 1988, + zone: 3, + }, + FC5: { + name: 'FACILITIES COMPLEX BLDG. 5', + number: '0560', + year: 1988, + zone: 3, + }, + FC6: { + name: 'FACILITIES COMPLEX BLDG. 6', + number: '0564', + year: 1988, + zone: 3, + }, + FC7: { + name: 'FACILITIES COMPLEX BLDG. 7', + number: '0553', + year: 1983, + zone: 3, + }, + FC8: { + name: 'FACILITIES COMPLEX BLDG. 8', + number: '0566', + year: 1988, + zone: 3, + }, + FC9: { + name: 'CUSTODIAL SERVICES TRAINING FAC', + number: '0554', + year: 2012, + zone: 3, + }, + FCS: { + name: 'FOUNTAIN CONTROL STRUCTURE', + number: '0571', + year: 1968, + zone: 4, + }, + FDG: { + name: 'J. FRANK DOBIE GARAGE', + number: '0610', + year: 1995, + zone: 3, + }, + FDH: { + name: 'J. FRANK DOBIE HOUSE', + number: '0606', + year: 1995, + zone: 3, + }, + FNT: { + name: 'LARRY R. FAULKNER NANO SCI AND TECH', + number: '0242', + year: 2006, + zone: 1, + }, + FSB: { + name: 'FLAMMABLE STORAGE BUILDING', + number: '0234', + year: 2012, + zone: 1, + }, + G17: { + name: 'TRAFFIC KIOSK - 214 1/2 W 24TH ST', + number: 'PK17', + year: 2019, + zone: 2, + }, + GAR: { + name: 'GARRISON HALL', + number: '0249', + year: 1926, + zone: 2, + }, + GDC: { + name: 'GATES DELL COMPLEX', + number: '0152', + year: 2010, + zone: 1, + }, + GEA: { + name: 'MARY E. GEARING HALL', + number: '0305', + year: 1932, + zone: 2, + }, + GEB: { + name: 'DOROTHY L. GEBAUER BUILDING', + number: '0569', + year: 1904, + zone: 2, + }, + GHA: { + name: 'GRADUATE HOUSING, UNIT A', + number: '0586', + year: NaN, + zone: NaN, + }, + GHB: { + name: 'GRADUATE HOUSING, UNIT B', + number: '0587', + year: NaN, + zone: NaN, + }, + GHC: { + name: 'GRADUATE HOUSING, UNIT C', + number: '0588', + year: NaN, + zone: NaN, + }, + GHD: { + name: 'GRADUATE HOUSING, UNIT D', + number: '0589', + year: NaN, + zone: NaN, + }, + GHE: { + name: 'GRADUATE HOUSING, UNIT E', + number: '0590', + year: NaN, + zone: NaN, + }, + GHF: { + name: 'GRADUATE HOUSING, UNIT F', + number: '0591', + year: NaN, + zone: NaN, + }, + GLT: { + name: 'GARY L THOMAS ENERGY ENGR BLDG', + number: '0222', + year: 2021, + zone: 1, + }, + GOL: { + name: 'GOLDSMITH HALL', + number: '0017', + year: 1932, + zone: 2, + }, + GRC: { + name: 'GREGORY AQUATIC POOL CONTROL BLDG.', + number: '0275', + year: 2005, + zone: 4, + }, + GRE: { + name: 'GREGORY GYMNASIUM', + number: '0273', + year: 1930, + zone: 4, + }, + GRF: { + name: 'GREGORY AQUATIC FOOD SERVICE BLDG.', + number: '0274', + year: 2005, + zone: 4, + }, + GRP: { + name: 'GREGORY AQUATIC POOL EQUIP. BLDG.', + number: '0277', + year: 2005, + zone: 4, + }, + GRS: { + name: 'GREGORY AQUATIC POOL STORAGE BLDG.', + number: '0276', + year: 2005, + zone: 4, + }, + GSB: { + name: 'GRADUATE SCHOOL OF BUSINESS BLDG.', + number: '0106', + year: 1975, + zone: 4, + }, + GSM: { + name: 'GRADUATE HOUSING, MAINTENANCE BLDG', + number: '0592', + year: NaN, + zone: NaN, + }, + GUG: { + name: 'GUADALUPE GARAGE', + number: '0031', + year: 2006, + zone: 3, + }, + GWB: { + name: 'GORDON-WHITE BUILDING', + number: '0645', + year: 1951, + zone: 2, + }, + HCG: { + name: 'HEALTH CENTER GARAGE', + number: '0703', + year: 2016, + zone: 6, + }, + HDB: { + name: 'HEALTH DISCOVERY BUILDING', + number: '0700', + year: 2016, + zone: 6, + }, + HLB: { + name: 'HEALTH LEARNING BUILDING', + number: '0702', + year: 2016, + zone: 6, + }, + HMA: { + name: 'HOGG MEMORIAL AUDITORIUM', + number: '0297', + year: 1933, + zone: 2, + }, + HRC: { + name: 'HARRY RANSOM CENTER', + number: '0310', + year: 1972, + zone: 4, + }, + HRH: { + name: 'RAINEY HALL', + number: '0433', + year: 1941, + zone: 4, + }, + HSM: { + name: 'WILLIAM RANDOLPH HEARST BLDG', + number: '0183', + year: 1973, + zone: 2, + }, + HTB: { + name: 'HEALTH TRANSFORMATION BUILDING', + number: '0701', + year: 2016, + zone: 6, + }, + IC2: { + name: '2815 SAN GABRIEL (IC2 INSTITUTE)', + number: '9021', + year: 1983, + zone: 3, + }, + ICB: { + name: 'INTRAMURAL CONTROL BLDG.', + number: '0446', + year: 1982, + zone: 3, + }, + IMA: { + name: 'INTRAMURAL MAINT BLDG A', + number: '0443', + year: 1967, + zone: 3, + }, + IMB: { + name: 'INTRAMURAL MAINT BLDG B', + number: '0444', + year: 1967, + zone: 3, + }, + IPF: { + name: 'INDOOR PRACTICE FACILITY', + number: '9714', + year: 2002, + zone: 3, + }, + JCD: { + name: 'JESTER RESIDENCE HALL', + number: '0599', + year: 1969, + zone: 4, + }, + JES: { + name: 'BEAUFORD H. JESTER CENTER', + number: '0598', + year: 1969, + zone: 4, + }, + JGB: { + name: 'JACKSON GEOLOGICAL SCIENCES BLDG.', + number: '0950', + year: 1967, + zone: 2, + }, + JHH: { + name: 'JOHN W. HARGIS HALL', + number: '0737', + year: 1888, + zone: 6, + }, + JON: { + name: 'JESSE H. JONES HALL', + number: '0602', + year: 1976, + zone: 3, + }, + KIN: { + name: 'KINSOLVING RESIDENCE HALL', + number: '0346', + year: 1958, + zone: 2, + }, + LAC: { + name: 'LAKE AUSTIN CENTRE', + number: '0738', + year: 1993, + zone: 3, + }, + LBJ: { + name: 'LYNDON B JOHNSON LIBRARY', + number: '0113', + year: 1971, + zone: 'LBJ', + }, + LCH: { + name: 'LITTLEFIELD CARRIAGE HOUSE', + number: '0521', + year: 1939, + zone: 2, + }, + LDH: { + name: 'LONGHORN DINING FACILITY', + number: '0597', + year: 1971, + zone: 4, + }, + LFH: { + name: 'LITTLEFIELD HOME', + number: '0377', + year: 1894, + zone: 2, + }, + LLA: { + name: 'LIVING LEARNING HALL A', + number: '0669', + year: 1969, + zone: 2, + }, + LLB: { + name: 'LIVING LEARNING HALL B', + number: '0670', + year: 1969, + zone: 2, + }, + LLC: { + name: 'LIVING LEARNING HALL C', + number: '0671', + year: 1969, + zone: 2, + }, + LLD: { + name: 'LIVING LEARNING HALL D', + number: '0666', + year: 1953, + zone: 2, + }, + LLE: { + name: 'LIVING LEARNING HALL E', + number: '0667', + year: 1953, + zone: 2, + }, + LLF: { + name: 'LIVING LEARNING HALL F', + number: '0668', + year: 1953, + zone: 2, + }, + LNA: { + name: 'LEONA ST. CHILD DEVELOPMENT CENTER', + number: '0170', + year: 2023, + zone: NaN, + }, + LS1: { + name: 'LANDSCAPE SERVICES STORAGE BLDG.', + number: '0632', + year: 1980, + zone: 1, + }, + LTD: { + name: 'LITTLEFIELD RESIDENCE HALL', + number: '0369', + year: 1927, + zone: 2, + }, + LTH: { + name: 'LABORATORY THEATER BLDG.', + number: '0665', + year: 1959, + zone: 2, + }, + MAG: { + name: 'MANOR GARAGE', + number: '0415', + year: 1998, + zone: 3, + }, + MAI: { + name: 'MAIN BUILDING', + number: '0393', + year: 1932, + zone: 2, + }, + MBB: { + name: 'MOFFETT MOLECULAR BIOLOGY BLDG.', + number: '0740', + year: 1997, + zone: 1, + }, + MCA: { + name: 'MOODY CENTER', + number: '9713', + year: 2022, + zone: 'None', + }, + MEZ: { + name: 'MEZES HALL', + number: '0425', + year: 1951, + zone: 4, + }, + MFH: { + name: 'RICHARD MITHOFF TRK/SCR FIELDHOUSE', + number: '0416', + year: 1999, + zone: 3, + }, + MHD: { + name: 'MOORE-HILL RESIDENCE HALL', + number: '0427', + year: 1956, + zone: 4, + }, + MMS: { + name: 'MIKE A.MYERS TRACK & SOCCER STADIUM', + number: '9712', + year: 1999, + zone: 3, + }, + MNC: { + name: 'MONCRIEF-NEUHAUS ATHLETIC CENTER', + number: '0421', + year: 1986, + zone: 3, + }, + MRH: { + name: 'MUSIC BUILDING & RECITAL HALL', + number: '0131', + year: 1969, + zone: 3, + }, + MSB: { + name: '2207 COMAL (MAIL SERVICE BUILDING)', + number: '0163', + year: 1989, + zone: 3, + }, + MTC: { + name: 'MATERIAL TRANSFER CENTER', + number: '0235', + year: 2015, + zone: 3, + }, + N24: { + name: '2400 NUECES', + number: '9001', + year: 2013, + zone: 2, + }, + NEZ: { + name: 'NORTH END ZONE BUILDING', + number: '9716', + year: 2008, + zone: 3, + }, + NHB: { + name: 'NORMAN HACKERMAN BUILDING', + number: '0470', + year: 2008, + zone: 1, + }, + NMS: { + name: 'NEURAL AND MOLECULAR SCIENCE BLDG.', + number: '0741', + year: 2005, + zone: 1, + }, + NUG: { + name: 'NUECES GARAGE', + number: '9091', + year: 2019, + zone: 2, + }, + NUR: { + name: 'NURSING SCHOOL', + number: '8008', + year: 1973, + zone: 6, + }, + PA1: { + name: 'POWER PLANT ANNEX STOREHOUSE # 1', + number: '0493', + year: 1970, + zone: 2, + }, + PA3: { + name: 'POWER PLANT ANNEX STOREHOUSE #3-WD', + number: '0501', + year: 1988, + zone: 2, + }, + PA4: { + name: 'POWER PLANT ANNEX STOREHOUSE #4-MET', + number: '0494', + year: 1981, + zone: 2, + }, + PAC: { + name: 'PERFORMING ARTS CENTER', + number: '0132', + year: 1980, + zone: 3, + }, + PAI: { + name: 'T.S. PAINTER HALL', + number: '0473', + year: 1933, + zone: 1, + }, + PAR: { + name: 'PARLIN HALL', + number: '0233', + year: 1955, + zone: 4, + }, + PAT: { + name: 'J.T. PATTERSON LABS.BLDG.', + number: '0952', + year: 1967, + zone: 1, + }, + PB2: { + name: 'POWER PLANT AUX. BLDG.# 2', + number: '0492', + year: 1966, + zone: 2, + }, + PB5: { + name: 'POWER PLANT AUX. BLDG.# 5', + number: '0495', + year: 1976, + zone: 2, + }, + PB6: { + name: 'POWER PLANT AUX. BLDG.# 6', + number: '0496', + year: 1976, + zone: 2, + }, + PCL: { + name: 'PERRY-CASTANEDA LIBRARY', + number: '0559', + year: 1977, + zone: 4, + }, + PH1: { + name: 'ATHLETIC FIELDS PUMP HOUSE (NORTH)', + number: '0440', + year: 1995, + zone: 3, + }, + PH2: { + name: 'ATHLETIC FIELDS PUMP HOUSE (SOUTH)', + number: '0441', + year: 1995, + zone: 3, + }, + PHD: { + name: 'PRATHER RESIDENCE HALL', + number: '0497', + year: 1937, + zone: 4, + }, + PHR: { + name: 'PHARMACY BUILDING', + number: '0465', + year: 1951, + zone: 1, + }, + PMA: { + name: 'PHYSICS, MATH, & ASTRONOMY BUILDING', + number: '0116', + year: 1972, + zone: 2, + }, + POB: { + name: "PETER O'DONNELL JR. BUILDING", + number: '0224', + year: 2000, + zone: 1, + }, + PPA: { + name: 'HAL C. WEAVER POWER PLANT ANNEX', + number: '0490', + year: 1968, + zone: 2, + }, + PPE: { + name: 'HAL C WEAVER POWER PLANT EXPANSION', + number: '0448', + year: 1988, + zone: 2, + }, + PPL: { + name: 'HAL C. WEAVER POWER PLANT', + number: '0489', + year: 1927, + zone: 2, + }, + PRH: { + name: 'DOBIE PAISANO RANCH HOUSE', + number: '0979', + year: 1966, + zone: 3, + }, + RHD: { + name: 'ROBERTS RESIDENCE HALL', + number: '0537', + year: 1936, + zone: 4, + }, + RHG: { + name: 'ROWLING HALL GARAGE', + number: '0111', + year: 2017, + zone: 4, + }, + RLP: { + name: 'PATTON HALL', + number: '0540', + year: 2012, + zone: 4, + }, + RRH: { + name: 'ROBERT B. ROWLING HALL', + number: '0108', + year: 2017, + zone: 4, + }, + RSC: { + name: 'RECREATIONAL SPORTS CENTER', + number: '0422', + year: 1990, + zone: 4, + }, + SAG: { + name: 'SAN ANTONIO GARAGE', + number: '0739', + year: 1994, + zone: 2, + }, + SBS: { + name: 'RED AND CHARLINE MCCOMBS FIELD', + number: '9832', + year: 1997, + zone: 3, + }, + SEA: { + name: 'SARAH M. & CHARLES E. SEAY BUILDING', + number: '0985', + year: 2002, + zone: 2, + }, + SEZ: { + name: 'SOUTH END ZONE', + number: '9715', + year: 2021, + zone: 3, + }, + SJG: { + name: 'SAN JACINTO GARAGE', + number: '0551', + year: 1986, + zone: 3, + }, + SJH: { + name: 'SAN JACINTO RESIDENCE HALL', + number: '0502', + year: 2000, + zone: 4, + }, + SMC: { + name: 'DELL SETON MEDICAL CENTER AT UT', + number: '0704', + year: 2017, + zone: 'None', + }, + SOF: { + name: 'TELECOMM.SVC.SATELLITE OPS FACILITY', + number: '0638', + year: 1995, + zone: 3, + }, + SRH: { + name: 'SID RICHARDSON HALL', + number: '0118', + year: 1970, + zone: 3, + }, + SSB: { + name: 'STUDENT SERVICES BUILDING', + number: '0980', + year: 1997, + zone: 2, + }, + SSW: { + name: 'SCHOOL OF SOCIAL WORK BUILDING', + number: '0625', + year: 1933, + zone: 3, + }, + STD: { + name: 'DARRELL K ROYAL TX MEMORIAL STADIUM', + number: '9710', + year: 1988, + zone: 3, + }, + SUT: { + name: 'SUTTON HALL', + number: '0585', + year: 1917, + zone: 4, + }, + SW7: { + name: '2617 SPEEDWAY (OFC.BLDG.)', + number: '0988', + year: 1966, + zone: 1, + }, + SWG: { + name: 'SPEEDWAY GARAGE', + number: '0982', + year: 2000, + zone: 1, + }, + SZB: { + name: 'GEORGE I. SANCHEZ BUILDING', + number: '0025', + year: 1975, + zone: 4, + }, + TCC: { + name: 'JOE C THOMPSON CONFERENCE CENTER', + number: '0119', + year: 1970, + zone: 3, + }, + TCP: { + name: 'TEXAS COWBOYS PAVILION', + number: '0994', + year: 2004, + zone: 4, + }, + TLB: { + name: 'TEXAS LONGHORNS BOATHOUSE', + number: '2230', + year: 1999, + zone: 3, + }, + TMM: { + name: 'TEXAS MEMORIAL MUSEUM', + number: '0593', + year: 1937, + zone: 3, + }, + TNH: { + name: 'TOWNES HALL', + number: '0601', + year: 1952, + zone: 3, + }, + TRG: { + name: 'TRINITY GARAGE', + number: '0424', + year: 2002, + zone: 6, + }, + TS1: { + name: 'THERMAL ENERGY STORAGE', + number: '0503', + year: 2011, + zone: 3, + }, + TS2: { + name: 'UTM THERMAL STORAGE 2', + number: '0146', + year: 2014, + zone: 3, + }, + TSB: { + name: 'TENNIS SUPPORT BUILDING', + number: '0445', + year: 1976, + zone: 3, + }, + TSC: { + name: 'LEE & JOE JAMAIL TEXAS SWIMMING CTR', + number: '0419', + year: 1977, + zone: 3, + }, + TSG: { + name: '27TH STREET GARAGE', + number: '0981', + year: 1999, + zone: 2, + }, + TSP: { + name: 'TEXAS SWIMMING CENTER PUMP HOUSE', + number: '0414', + year: 2020, + zone: 3, + }, + TTC: { + name: 'TEXAS TENNIS CENTER', + number: '9825', + year: 2018, + zone: 3, + }, + UA9: { + name: '2609 UNIVERSITY AVENUE', + number: '0984', + year: 1968, + zone: 2, + }, + UIL: { + name: 'UNIV. INTERSCHOLASTIC LEAGUE BLDG.', + number: '0164', + year: 1998, + zone: 3, + }, + UNB: { + name: 'UNION BUILDING', + number: '0609', + year: 1933, + zone: 2, + }, + UPB: { + name: 'UNIVERSITY POLICE BUILDING', + number: '0634', + year: 1960, + zone: 3, + }, + UTA: { + name: 'UT ADMINISTRATION BUILDING', + number: '0030', + year: 2007, + zone: 3, + }, + UTC: { + name: 'UNIVERSITY TEACHING CENTER', + number: '0500', + year: 1984, + zone: 4, + }, + UTX: { + name: 'ETTER-HARBIN ALUMNI CENTER', + number: '0990', + year: 1964, + zone: 4, + }, + VRX: { + name: 'KVRX TRANSMITTER TWR & CNTRL BLDG', + number: '0184', + year: 1994, + zone: 3, + }, + WAG: { + name: 'WAGGENER HALL', + number: '0649', + year: 1931, + zone: 2, + }, + WAT: { + name: 'ARTHUR P. WATSON HOUSE', + number: '0165', + year: 1993, + zone: 6, + }, + WCH: { + name: 'WILL C. HOGG BLDG.', + number: '0257', + year: 1932, + zone: 2, + }, + WCP: { + name: 'WILLIAM C. POWERS, JR. SAC', + number: '0278', + year: 2010, + zone: 4, + }, + WCS: { + name: 'WALLER CREEK CONTROL STATION', + number: '0614', + year: 1980, + zone: 2, + }, + WEL: { + name: 'ROBERT A. WELCH HALL', + number: '0161', + year: 1930, + zone: 1, + }, + WGB: { + name: 'WHITAKER GATEWAY BUILDING', + number: '0447', + year: 2017, + zone: 3, + }, + WIN: { + name: 'F.L. WINSHIP DRAMA BLDG.', + number: '0201', + year: 1961, + zone: 2, + }, + WMB: { + name: 'WEST MALL OFFICE BLDG.', + number: '0652', + year: 1962, + zone: 2, + }, + WWH: { + name: 'WALTER WEBB HALL', + number: '0040', + year: 1973, + zone: 2, + }, + Z02: { + name: '2007 GUADALUPE', + number: '9012', + year: 2018, + zone: 'None', + }, + Z18: { + name: '1504 E MLK JR BLVD', + number: '9096', + year: 'None', + zone: 'None', + }, +} as const satisfies Buildings; + +/** + * Represents the type for the keys of the `MainCampusBuildings` object. + */ +export type MainCampusBuildingsCode = keyof typeof MainCampusBuildings; diff --git a/src/views/components/map/CampusMap.tsx b/src/views/components/map/CampusMap.tsx new file mode 100644 index 00000000..564dc86c --- /dev/null +++ b/src/views/components/map/CampusMap.tsx @@ -0,0 +1,795 @@ +/* eslint-disable no-nested-ternary */ +import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'; + +import DaySelector from './DaySelector'; +import DevToggles from './DevToggles'; +import FullscreenButton from './FullscreenButton'; +import { graphNodes } from './graphNodes'; +import type { ProcessInPersonMeetings } from './Map'; +import { Path } from './Path'; +import { calcDirectPathStats, PathStats } from './PathStats'; +import TimeWarningLabel from './TimeWarningLabel'; +import type { DayCode, NodeId, NodeType } from './types'; +import { DAY_MAPPING } from './types'; +import { getMidpoint } from './utils'; +import ZoomPanControls from './ZoomPanControls'; + +// Image: 783x753 +const UTMapURL = new URL('/src/assets/UT-Map.svg', import.meta.url).href; + +const minZoom = 0.5; +const maxZoom = 5; +const zoomStep = 1.2; + +// Define zoom level thresholds for showing different levels of detail +const ZOOM_LEVELS = { + LOW: 0.8, // Show minimal buildings at this zoom level and below + MEDIUM: 1.5, // Show moderate amount of buildings + HIGH: 2.5, // Show all buildings with full details +} as const; + +type SelectedBuildings = { + start: NodeId | null; + end: NodeId | null; +}; + +type CampusMapProps = { + processedCourses: ProcessInPersonMeetings[]; +}; + +/** + * Component representing the campus map with interactive features. + * + * @param processedCourses - Array of processed courses. + * @returns The rendered CampusMap component. + * + * @remarks + * This component renders a map of the campus with interactive features such as: + * - Selecting buildings to create a path. + * - Displaying daily paths between sequential classes. + * - Highlighting paths with less than 15 minutes transition time. + * - Zooming and panning the map. + * - Toggling visibility of different map elements. + * + * The rendered output includes: + * - An image of the campus map. + * - An SVG overlay with paths and buildings. + * - Controls for selecting the day and displaying path information. + * - Dev controls for toggling element visibility. + * - Zoom and pan controls. + */ +export default function CampusMap({ processedCourses }: CampusMapProps): JSX.Element { + // Core state + const [selected, setSelected] = useState({ + start: null, + end: null, + }); + const [selectedDay, setSelectedDay] = useState(null); + const [hoveredPathIndex, setHoveredPathIndex] = useState(null); + const [toggledPathIndex, setToggledPathIndex] = useState(null); + + // Dev toggle state + const [dynamicRendering, setDynamicRendering] = useState(true); + const [showBuildings, setShowBuildings] = useState(true); + const [showBuildingText, setShowBuildingText] = useState(true); + const [showPrioritizedOnly, setShowPrioritizedOnly] = useState(false); + const [showIntersections, setShowIntersections] = useState(false); + const [showWalkways, setShowWalkways] = useState(false); + + // Zoom and pan state + const [zoomLevel, setZoomLevel] = useState(1); + const [panPosition, setPanPosition] = useState<{ x: number; y: number }>({ x: 0, y: 0 }); + const [isDragging, setIsDragging] = useState(false); + const [dragStart, setDragStart] = useState<{ x: number; y: number }>({ x: 0, y: 0 }); + + // Refs + const mapContainerRef = useRef(null); + + // Function to calculate the current viewport in SVG coordinates + const calculateViewport = useCallback(() => { + if (!mapContainerRef.current) return null; + + const container = mapContainerRef.current; + const rect = container.getBoundingClientRect(); + + // SVG dimensions from viewBox + const svgWidth = 783; + const svgHeight = 753; + + // Calculate visible area in SVG coordinates + const scaleFactor = 1 / zoomLevel; + const visibleWidth = rect.width * scaleFactor; + const visibleHeight = rect.height * scaleFactor; + + // Calculate the center point in SVG coordinates after pan + const centerX = svgWidth / 2 - panPosition.x * scaleFactor; + const centerY = svgHeight / 2 - panPosition.y * scaleFactor; + + return { + left: centerX - visibleWidth / 2, + right: centerX + visibleWidth / 2, + top: centerY - visibleHeight / 2, + bottom: centerY + visibleHeight / 2, + width: visibleWidth, + height: visibleHeight, + }; + }, [zoomLevel, panPosition]); + + // Check if a node is in the viewport + const isNodeInViewport = useCallback( + ( + node: { x: number; y: number }, + viewport: { + left: number; + right: number; + top: number; + bottom: number; + } | null + ) => { + if (!dynamicRendering) return true; + if (!viewport) return true; + + return ( + node.x >= viewport.left && + node.x <= viewport.right && + node.y >= viewport.top && + node.y <= viewport.bottom + ); + }, + [dynamicRendering] + ); + + // Path calculations + const getDailyPaths = useCallback((courses: ProcessInPersonMeetings[]) => { + const sortedCourses = [...courses].sort((a, b) => a.normalizedStartTime - b.normalizedStartTime); + + const paths = []; + + for (let i = 0; i < sortedCourses.length - 1; i++) { + const currentCourse = sortedCourses[i]; + const nextCourse = sortedCourses[i + 1]; + + if (currentCourse && nextCourse && currentCourse.location?.building && nextCourse.location?.building) { + paths.push({ + start: currentCourse.location.building, + end: nextCourse.location.building, + startTime: currentCourse.normalizedEndTime, + endTime: nextCourse.normalizedStartTime, + colors: currentCourse.colors, + startCourseName: currentCourse.fullName, + endCourseName: nextCourse.fullName, + }); + } + } + + return paths; + }, []); + + const relevantPaths = useMemo(() => { + if (!selectedDay) return []; + + const coursesForDay = processedCourses.filter(course => course.day === DAY_MAPPING[selectedDay]); + + const paths = getDailyPaths(coursesForDay); + + return paths.map(path => ({ + ...path, + timeBetweenClasses: Math.floor(path.endTime - path.startTime), + })); + }, [selectedDay, processedCourses, getDailyPaths]); + + // Memoized set of important buildings - buildings in active paths or daily routes + const importantBuildings = useMemo(() => { + const result = new Set(); + + // Add selected buildings + if (selected.start) result.add(selected.start); + if (selected.end) result.add(selected.end); + + // Add buildings in the daily paths + relevantPaths?.forEach(path => { + result.add(path.start); + result.add(path.end); + }); + + return result; + }, [selected.start, selected.end, relevantPaths]); + + // Memoized set of buildings to show based on zoom level and grid clustering + const visibleBuildings = useMemo(() => { + // Start with important buildings (selected or in active paths) + const result = new Set(importantBuildings); + const viewport = calculateViewport(); + + if (!dynamicRendering) { + Object.entries(graphNodes).forEach(([id, node]) => { + if (node.type === 'building' && isNodeInViewport(node, viewport)) { + result.add(id); + } + }); + return result; + } + + // If showing prioritized buildings only, return just the important ones + if (showPrioritizedOnly) { + return result; + } + + // If we're zoomed in enough, show all buildings in viewport + if (zoomLevel >= ZOOM_LEVELS.HIGH) { + Object.entries(graphNodes).forEach(([id, node]) => { + if (node.type === 'building' && isNodeInViewport(node, viewport)) { + result.add(id); + } + }); + return result; + } + + // At medium zoom, show more buildings but still cluster them + if (zoomLevel >= ZOOM_LEVELS.MEDIUM) { + // Create a grid-based clustering with medium density + const gridSize = 40; + const grid: Record = {}; + + Object.entries(graphNodes).forEach(([id, node]) => { + if (node.type === 'building' && isNodeInViewport(node, viewport)) { + const gridX = Math.floor(node.x / gridSize); + const gridY = Math.floor(node.y / gridSize); + const gridId = `${gridX}-${gridY}`; + + if (!grid[gridId]) { + grid[gridId] = []; + } + grid[gridId].push(id); + } + }); + + // Select one building per grid cell + Object.values(grid).forEach(buildings => { + if (buildings.length > 0) { + // Sort to ensure consistent selection + const sorted = [...buildings].sort(); + if (sorted[0]) { + result.add(sorted[0]); + } + } + }); + return result; + } + + // At low zoom, create a sparser grid + const gridSize = 70; + const grid: Record = {}; + + Object.entries(graphNodes).forEach(([id, node]) => { + if (node.type === 'building' && isNodeInViewport(node, viewport)) { + const gridX = Math.floor(node.x / gridSize); + const gridY = Math.floor(node.y / gridSize); + const gridId = `${gridX}-${gridY}`; + + if (!grid[gridId]) { + grid[gridId] = []; + } + grid[gridId].push(id); + } + }); + + // Select one building per grid cell + Object.values(grid).forEach(buildings => { + if (buildings.length > 0) { + // Sort to ensure consistent selection + const sorted = [...buildings].sort(); + if (sorted[0]) { + result.add(sorted[0]); + } + + // For grid cells with many buildings, maybe show a second one too + if (sorted.length > 3 && zoomLevel > ZOOM_LEVELS.LOW && sorted[1]) { + result.add(sorted[1]); + } + } + }); + + return result; + }, [importantBuildings, calculateViewport, dynamicRendering, showPrioritizedOnly, zoomLevel, isNodeInViewport]); + + // Determine which intersections to show based on zoom level + const visibleIntersections = useMemo(() => { + const result = new Set(); + const viewport = calculateViewport(); + + // Only process if intersections should be shown + if (!showIntersections) return result; + + if (!dynamicRendering) { + Object.entries(graphNodes).forEach(([id, node]) => { + if (node.type === 'intersection' && isNodeInViewport(node, viewport)) { + result.add(id); + } + }); + return result; + } + + // Show all intersections at high zoom + if (zoomLevel >= ZOOM_LEVELS.HIGH) { + Object.entries(graphNodes).forEach(([id, node]) => { + if (node.type === 'intersection' && isNodeInViewport(node, viewport)) { + result.add(id); + } + }); + return result; + } + + // At medium zoom, show a subset + if (zoomLevel >= ZOOM_LEVELS.MEDIUM) { + Object.entries(graphNodes).forEach(([id, node]) => { + if (node.type === 'intersection' && isNodeInViewport(node, viewport)) { + // Show every 2nd intersection + const nodeIndex = parseInt(id.replace(/\D/g, '') || '0', 10); + if (nodeIndex % 2 === 0) { + result.add(id); + } + } + }); + return result; + } + + // At low zoom, show very few intersections + Object.entries(graphNodes).forEach(([id, node]) => { + if (node.type === 'intersection' && isNodeInViewport(node, viewport)) { + // Show only every 4th intersection + const nodeIndex = parseInt(id.replace(/\D/g, '') || '0', 10); + if (nodeIndex % 4 === 0) { + result.add(id); + } + } + }); + + return result; + }, [calculateViewport, dynamicRendering, showIntersections, zoomLevel, isNodeInViewport]); + + // Determine which walkways to show based on zoom level + const visibleWalkways = useMemo(() => { + const result = new Set(); + const viewport = calculateViewport(); + + // Only process if walkways should be shown + if (!showWalkways) return result; + + if (!dynamicRendering) { + Object.entries(graphNodes).forEach(([id, node]) => { + if (node.type === 'walkway' && isNodeInViewport(node, viewport)) { + result.add(id); + } + }); + return result; + } + + // Show all walkways at high zoom + if (zoomLevel >= ZOOM_LEVELS.HIGH) { + Object.entries(graphNodes).forEach(([id, node]) => { + if (node.type === 'walkway' && isNodeInViewport(node, viewport)) { + result.add(id); + } + }); + return result; + } + + // At medium zoom, show a subset + if (zoomLevel >= ZOOM_LEVELS.MEDIUM) { + Object.entries(graphNodes).forEach(([id, node]) => { + if (node.type === 'walkway' && isNodeInViewport(node, viewport)) { + // Show every 3rd walkway + const nodeIndex = parseInt(id.replace(/\D/g, '') || '0', 10); + if (nodeIndex % 3 === 0) { + result.add(id); + } + } + }); + return result; + } + + // At low zoom, show very few walkways + Object.entries(graphNodes).forEach(([id, node]) => { + if (node.type === 'walkway' && isNodeInViewport(node, viewport)) { + // Show only every 5th walkway + const nodeIndex = parseInt(id.replace(/\D/g, '') || '0', 10); + if (nodeIndex % 5 === 0) { + result.add(id); + } + } + }); + + return result; + }, [calculateViewport, dynamicRendering, showWalkways, zoomLevel, isNodeInViewport]); + + // Determine if a node should be shown based on type and zoom level + const shouldShowNode = useCallback( + (type: NodeType, id: NodeId): boolean => { + // Always show selected buildings + if (id === selected.start || id === selected.end) return true; + + switch (type) { + case 'building': + return showBuildings && visibleBuildings.has(id); + case 'intersection': + return visibleIntersections.has(id); + case 'walkway': + return visibleWalkways.has(id); + default: + return false; + } + }, + [showBuildings, selected, visibleBuildings, visibleIntersections, visibleWalkways] + ); + + // Get the appropriate node size based on zoom level with maximum cap + const getNodeSize = useCallback( + (type: NodeType): number => { + const baseSize = type === 'building' ? 6 : 4; + const minSize = baseSize * 0.8; // Minimum size at low zoom + const maxSize = baseSize * 0.5; // Maximum size cap + + // If below minimum zoom level + if (zoomLevel <= ZOOM_LEVELS.LOW) { + return minSize; + } + + // If above maximum zoom level, cap the size + if (zoomLevel >= ZOOM_LEVELS.HIGH) { + return maxSize; + } + + // Scale size gradually between LOW and HIGH zoom levels + const zoomRatio = (zoomLevel - ZOOM_LEVELS.LOW) / (ZOOM_LEVELS.HIGH - ZOOM_LEVELS.LOW); + return minSize + zoomRatio * (maxSize - minSize); + }, + [zoomLevel] + ); + + // Get the appropriate text size based on zoom level with maximum cap + const getTextSize = useCallback((): number => { + const minSize = 12; // Minimum text size at low zoom + const maxSize = 8; // Maximum text size cap + + // If below minimum zoom level + if (zoomLevel <= ZOOM_LEVELS.LOW) { + return minSize; + } + + // If above maximum zoom level, cap the size + if (zoomLevel >= ZOOM_LEVELS.HIGH) { + return maxSize; + } + + // Scale text size gradually between LOW and HIGH zoom levels + const zoomRatio = (zoomLevel - ZOOM_LEVELS.LOW) / (ZOOM_LEVELS.HIGH - ZOOM_LEVELS.LOW); + return minSize + zoomRatio * (maxSize - minSize); + }, [zoomLevel]); + + // Determine if text should be shown for a node + const shouldShowText = useCallback( + (type: NodeType, id: NodeId): boolean => { + // If building text is disabled in dev controls, don't show any text + if (!showBuildingText) return false; + + if (type !== 'building') return false; + + // Always show text for selected buildings + if (id === selected.start || id === selected.end) return true; + + // Show text based on zoom level + return zoomLevel >= ZOOM_LEVELS.LOW; + }, + [zoomLevel, selected, showBuildingText] + ); + + // Zoom and pan handlers + const handleZoomIn = useCallback(() => { + setZoomLevel(prev => Math.min(prev * zoomStep, maxZoom)); + }, []); + + const handleZoomOut = useCallback(() => { + setZoomLevel(prev => Math.max(prev / zoomStep, minZoom)); + }, []); + + const handleResetZoomPan = useCallback(() => { + setZoomLevel(1); + setPanPosition({ x: 0, y: 0 }); + }, []); + + const handleWheel = useCallback((e: React.WheelEvent) => { + e.preventDefault(); + if (e.deltaY < 0) { + setZoomLevel(prev => Math.min(prev * zoomStep, maxZoom)); + } else { + setZoomLevel(prev => Math.max(prev / zoomStep, minZoom)); + } + }, []); + + const handleMouseDown = useCallback((e: React.MouseEvent) => { + if (e.button !== 0) return; // Only handle left mouse button + setIsDragging(true); + setDragStart({ x: e.clientX, y: e.clientY }); + }, []); + + const handleMouseMove = useCallback( + (e: React.MouseEvent) => { + if (!isDragging) return; + + const dx = e.clientX - dragStart.x; + const dy = e.clientY - dragStart.y; + + setPanPosition(prev => ({ x: prev.x + dx, y: prev.y + dy })); + setDragStart({ x: e.clientX, y: e.clientY }); + }, + [isDragging, dragStart] + ); + + const handleMouseUp = useCallback(() => { + setIsDragging(false); + }, []); + + const handleMouseLeave = useCallback(() => { + setIsDragging(false); + }, []); + + // Event handlers + const handleDaySelect = useCallback((day: DayCode) => { + setSelectedDay(prevDay => (prevDay === day ? null : day)); + setHoveredPathIndex(null); + setToggledPathIndex(null); + }, []); + + const handleBuildingSelect = useCallback((buildingId: NodeId) => { + setSelected(prev => { + if (!prev.start) return { ...prev, start: buildingId }; + if (!prev.end) return { ...prev, end: buildingId }; + return { start: buildingId, end: null }; + }); + }, []); + + const handlePathClick = useCallback((index: number) => { + setToggledPathIndex(prevIndex => (prevIndex === index ? null : index)); + }, []); + + const shouldShowPath = useCallback( + (index: number) => { + if (hoveredPathIndex !== null) { + return hoveredPathIndex === index; + } + if (toggledPathIndex !== null) { + return toggledPathIndex === index; + } + return true; + }, + [hoveredPathIndex, toggledPathIndex] + ); + + // Global mouse up handler + useEffect(() => { + const handleGlobalMouseUp = () => { + setIsDragging(false); + }; + + window.addEventListener('mouseup', handleGlobalMouseUp); + return () => { + window.removeEventListener('mouseup', handleGlobalMouseUp); + }; + }, []); + + return ( +
+ {/* Map container with zoom and pan applied */} +
+ {/* Map Image */} + UT Campus Map + + {/* SVG Overlay - ensuring it matches the image dimensions */} + + {/* Render buildings, intersections, and walkways */} + {Object.entries(graphNodes).map( + ([id, node]) => + shouldShowNode(node.type, id) && ( + + handleBuildingSelect(id)} + /> + {node.type === 'building' && shouldShowText(node.type, id) && ( + + {id} + + )} + + ) + )} + + {/* Render daily schedule paths */} + {relevantPaths.map( + (path, index) => + shouldShowPath(index) && ( + // eslint-disable-next-line react/no-array-index-key + + + {path.timeBetweenClasses < 15 && + (() => { + const midpoint = getMidpoint(path.start, path.end); + return midpoint ? ( + + ) : null; + })()} + + ) + )} + + {/* Render user-selected path */} + {selected.start && selected.end && ( + + )} + +
+ + {/* Fixed position controls that don't move with zoom/pan */} +
+ {/* Day Selector */} + + + {/* Zoom and Pan Controls */} + + + {/* Fullscreen Button */} + + + {/* Dev Toggles */} + setDynamicRendering(prev => !prev)} + onToggleBuildings={() => setShowBuildings(prev => !prev)} + onToggleIntersections={() => setShowIntersections(prev => !prev)} + onToggleWalkways={() => setShowWalkways(prev => !prev)} + onToggleBuildingText={() => setShowBuildingText(prev => !prev)} + onTogglePrioritizedOnly={() => setShowPrioritizedOnly(prev => !prev)} + /> +
+ + {/* Path information */} +
+ {/* Path Statistics - show when a path is selected */} + {selected.start && selected.end && } + + {/* Daily Paths Statistics - show when day is selected */} + {relevantPaths.length > 0 && ( +
+
+

Daily Transitions

+

+ Total time:{' '} + {relevantPaths.reduce( + (total, path) => + total + + (calcDirectPathStats({ startId: path.start, endId: path.end }) + ?.walkingTimeMinutes || 0), + 0 + )}{' '} + min +

+

+ Total distance:{' '} + {relevantPaths.reduce( + (total, path) => + total + + (calcDirectPathStats({ startId: path.start, endId: path.end }) + ?.distanceInFeet || 0), + 0 + )}{' '} + ft +

+
+
+ {relevantPaths.map((path, index) => ( +
setHoveredPathIndex(index)} + onMouseLeave={() => setHoveredPathIndex(null)} + onClick={() => handlePathClick(index)} + > +

{path.startCourseName}

+

+ ( + { + calcDirectPathStats({ startId: path.start, endId: path.end }) + ?.walkingTimeMinutes + }{' '} + min,{' '} + {calcDirectPathStats({ startId: path.start, endId: path.end })?.distanceInFeet}{' '} + ft) + {' - '} + {path.timeBetweenClasses} min transition + {path.timeBetweenClasses < 15 && ' ⚠️'} +

+

{path.endCourseName}

+
+ ))} +
+
+ )} +
+
+ ); +} diff --git a/src/views/components/map/DaySelector.tsx b/src/views/components/map/DaySelector.tsx new file mode 100644 index 00000000..4753d1c9 --- /dev/null +++ b/src/views/components/map/DaySelector.tsx @@ -0,0 +1,38 @@ +import React from 'react'; + +import { Button } from '../common/Button'; +import type { DayCode } from './types'; +import { DAY_MAPPING } from './types'; + +interface DaySelectorProps { + selectedDay: DayCode | null; + onDaySelect: (day: DayCode) => void; +} + +/** + * DaySelector component allows users to select a day from a list of days. + * + * @param selectedDay - The currently selected day. + * @param onDaySelect - Callback function to handle day selection. + * + * @returns The rendered DaySelector component. + */ +// const DaySelector = ({ selectedDay, onDaySelect }: DaySelectorProps): JSX.Element => ( +export default function DaySelector({ selectedDay, onDaySelect }: DaySelectorProps): JSX.Element { + return ( +
+ {(Object.keys(DAY_MAPPING) as DayCode[]).map(day => ( + + ))} +
+ ); +} diff --git a/src/views/components/map/DevToggles.tsx b/src/views/components/map/DevToggles.tsx new file mode 100644 index 00000000..6a6bd4bf --- /dev/null +++ b/src/views/components/map/DevToggles.tsx @@ -0,0 +1,101 @@ +import React, { useState } from 'react'; + +interface DevTogglesProps { + dynamicRendering: boolean; + showBuildings: boolean; + showIntersections: boolean; + showWalkways: boolean; + showBuildingText: boolean; + showPrioritizedOnly: boolean; + onToggleDynamicRendering: () => void; + onToggleBuildings: () => void; + onToggleIntersections: () => void; + onToggleWalkways: () => void; + onToggleBuildingText: () => void; + onTogglePrioritizedOnly: () => void; +} + +/** + * DevToggles component allows developers to toggle visibility of map elements. + * + * @param dynamicRendering - Whether to enable dynamic rendering. + * @param showBuildings - Whether to show buildings on the map. + * @param showIntersections - Whether to show intersections on the map. + * @param showWalkways - Whether to show walkways on the map. + * @param onToggleDynamicRendering - Callback function to toggle dynamic rendering. + * @param onToggleBuildings - Callback function to toggle buildings visibility. + * @param onToggleIntersections - Callback function to toggle intersections visibility. + * @param onToggleWalkways - Callback function to toggle walkways visibility. + * + * @returns The rendered DevToggles component. + */ +export default function DevToggles({ + dynamicRendering, + showBuildings, + showIntersections, + showWalkways, + showBuildingText, + showPrioritizedOnly, + onToggleDynamicRendering, + onToggleBuildings, + onToggleIntersections, + onToggleWalkways, + onToggleBuildingText, + onTogglePrioritizedOnly, +}: DevTogglesProps): JSX.Element { + const [isCollapsed, setIsCollapsed] = useState(false); + + return ( +
+
+ Dev Controls + +
+ {!isCollapsed && ( +
+ + + + + + +
+ )} +
+ ); +} diff --git a/src/views/components/map/FullscreenButton.tsx b/src/views/components/map/FullscreenButton.tsx new file mode 100644 index 00000000..31286047 --- /dev/null +++ b/src/views/components/map/FullscreenButton.tsx @@ -0,0 +1,72 @@ +import React, { useEffect, useState } from 'react'; + +import { Button } from '../common/Button'; + +interface FullscreenButtonProps { + containerRef: React.RefObject; +} + +/** + * FullscreenButton component provides a toggle for fullscreen mode + * + * @param containerRef - Reference to the container element to make fullscreen. + * + * @returns The rendered FullscreenButton component. + */ +export default function FullscreenButton({ containerRef }: FullscreenButtonProps): JSX.Element { + const [isFullscreen, setIsFullscreen] = useState(false); + + useEffect(() => { + const handleFullscreenChange = () => { + setIsFullscreen(!!document.fullscreenElement); + }; + + document.addEventListener('fullscreenchange', handleFullscreenChange); + return () => { + document.removeEventListener('fullscreenchange', handleFullscreenChange); + }; + }, []); + + const toggleFullscreen = () => { + if (!document.fullscreenElement && containerRef.current) { + containerRef.current.requestFullscreen().catch(err => { + console.error(`Error attempting to enable fullscreen: ${err.message}`); + }); + } else if (document.fullscreenElement) { + document.exitFullscreen().catch(err => { + console.error(`Error attempting to exit fullscreen: ${err.message}`); + }); + } + }; + + return ( +
+ +
+ ); +} diff --git a/src/views/components/map/Map.tsx b/src/views/components/map/Map.tsx new file mode 100644 index 00000000..d0fa7a91 --- /dev/null +++ b/src/views/components/map/Map.tsx @@ -0,0 +1,287 @@ +import type { Course, StatusType } from '@shared/types/Course'; +import type { CourseMeeting } from '@shared/types/CourseMeeting'; +import { Button } from '@views/components/common/Button'; +import Divider from '@views/components/common/Divider'; +import { LargeLogo } from '@views/components/common/LogoIcon'; +import Text from '@views/components/common/Text/Text'; +import useChangelog from '@views/hooks/useChangelog'; +import useSchedules from '@views/hooks/useSchedules'; +import React, { useCallback, useEffect } from 'react'; + +import IconoirGitFork from '~icons/iconoir/git-fork'; + +import CalendarFooter from '../calendar/CalendarFooter'; +import { CalendarSchedules } from '../calendar/CalendarSchedules'; +import ImportantLinks from '../calendar/ImportantLinks'; +import TeamLinks from '../calendar/TeamLinks'; +import CampusMap from './CampusMap'; +import { type DAY, DAYS } from './types'; + +const manifest = chrome.runtime.getManifest(); +const LDIconURL = new URL('/src/assets/LD-icon.png', import.meta.url).href; + +const dayToNumber = { + Monday: 0, + Tuesday: 1, + Wednesday: 2, + Thursday: 3, + Friday: 4, + Saturday: 5, + Sunday: 6, +} as const satisfies Record; + +/** + * Represents the details of an in-person meeting process. + * + * day - The day of the meeting. + * dayIndex - The index of the day in the week. + * fullName - The full name of the person. + * uid - The unique identifier of the person. + * time - The time of the meeting. + * normalizedStartTime - The normalized start time of the meeting. + * normalizedEndTime - The normalized end time of the meeting. + * startIndex - The start index of the meeting. + * endIndex - The end index of the meeting. + * location - The location of the meeting. + * status - The status of the meeting. + * colors - The colors associated with the course. + * course - The course details. + */ +export type ProcessInPersonMeetings = { + day: DAY; + dayIndex: number; + fullName: string; + uid: number; + time: string; + normalizedStartTime: number; + normalizedEndTime: number; + startIndex: number; + endIndex: number; + location: CourseMeeting['location']; + status: StatusType; + colors: Course['colors']; + course: Course; +}; + +/** + * Converts minutes to an index value. + * @param minutes - The number of minutes. + * @returns The index value. + */ +const convertMinutesToIndex = (minutes: number): number => Math.floor((minutes - 420) / 30); + +/** + * Renders the map component for the UTRP (UT Registration Plus) extension. + */ +export default function Map(): JSX.Element { + const handleChangelogOnClick = useChangelog(); + const [activeSchedule] = useSchedules(); + + /** + * Function to extract and format basic course information + */ + function extractCourseInfo(course: Course) { + const { + status, + schedule: { meetings }, + } = course; + + let courseDeptAndInstr = `${course.department} ${course.number}`; + + const mainInstructor = course.instructors[0]; + if (mainInstructor) { + courseDeptAndInstr += ` – ${mainInstructor.toString({ format: 'first_last' })}`; + } + + return { status, courseDeptAndInstr, meetings, course }; + } + + // /** + // * Function to process each in-person class into its distinct meeting objects for calendar grid + // */ + // function processAsyncCourses({ + // courseDeptAndInstr, + // status, + // course, + // }: { + // courseDeptAndInstr: string; + // status: StatusType; + // course: Course; + // }): CalendarGridCourse[] { + // return [ + // { + // calendarGridPoint: { + // dayIndex: -1, + // startIndex: -1, + // endIndex: -1, + // }, + // componentProps: { + // courseDeptAndInstr, + // status, + // colors: course.colors, + // }, + // course, + // async: true, + // }, + // ]; + // } + + /** + * Function to process each in-person class into its distinct meeting objects for calendar grid + */ + function processInPersonMeetings( + meeting: CourseMeeting, + courseDeptAndInstr: string, + status: StatusType, + course: Course + ) { + const { days, location, startTime, endTime } = meeting; + const time = meeting.getTimeString({ separator: '-' }); + const timeAndLocation = `${time}${location ? ` - ${location.building} ${location.room}` : ''}`; + + const midnightIndex = 1440; + const normalizingTimeFactor = 720; + const normalizedStartTime = startTime >= midnightIndex ? startTime - normalizingTimeFactor : startTime; + const normalizedEndTime = endTime >= midnightIndex ? endTime - normalizingTimeFactor : endTime; + + return days.map(day => ({ + day, + dayIndex: dayToNumber[day], + // fullName: `${courseDeptAndInstr} - ${timeAndLocation}`, + fullName: `${timeAndLocation} - ${courseDeptAndInstr}`, + uid: course.uniqueId, + time, + normalizedStartTime, + normalizedEndTime, + startIndex: convertMinutesToIndex(normalizedStartTime), + endIndex: convertMinutesToIndex(normalizedEndTime), + location, + status, + colors: course.colors, + course, + })); + } + + const processedCourses: ProcessInPersonMeetings[] = activeSchedule.courses.flatMap(course => { + const { status, courseDeptAndInstr, meetings } = extractCourseInfo(course); + + // if (meetings.length === 0) { + // return processAsyncCourses({ courseDeptAndInstr, status, course }); + // } + + return meetings.flatMap(meeting => + // if (meeting.days.includes(DAY_MAP.S) || meeting.startTime < 480) { + // return processAsyncCourses({ courseDeptAndInstr, status, course }); + // } + + processInPersonMeetings(meeting, courseDeptAndInstr, status, course) + ); + }); + + const generateWeekSchedule = useCallback((): Record => { + const weekSchedule: Record = {}; + + processedCourses.forEach(course => { + const { day } = course; + + // Add the course to the day's schedule + if (!weekSchedule[day]) weekSchedule[day] = []; + weekSchedule[day].push(course.fullName); + }); + + // TODO: Not the best way to do this + // currently weekSchedule is an object with keys as days and values as an array of courses + // we want to display the days in order, so we create a new object with the days in order + + const orderedWeekSchedule: Record = { + Monday: [], + Tuesday: [], + Wednesday: [], + Thursday: [], + Friday: [], + Saturday: [], + Sunday: [], + }; + + DAYS.forEach(day => { + if (weekSchedule[day]) { + orderedWeekSchedule[day] = weekSchedule[day]; + } + }); + + // Sort each day based on the start time of the course + Object.entries(orderedWeekSchedule).forEach(([day, courses]) => { + orderedWeekSchedule[day as DAY] = courses.sort((courseA, courseB) => { + const courseAStartTime = processedCourses.find( + course => course.fullName === courseA + )?.normalizedStartTime; + const courseBStartTime = processedCourses.find( + course => course.fullName === courseB + )?.normalizedStartTime; + + return (courseAStartTime ?? 0) - (courseBStartTime ?? 0); + }); + }); + + return orderedWeekSchedule; + }, [processedCourses]); + + useEffect(() => { + console.log('Active Schedule: ', activeSchedule); + console.log('processedCourses:', processedCourses); + console.log('generateWeekSchedule():', generateWeekSchedule()); + }, [activeSchedule, processedCourses, generateWeekSchedule]); + + return ( +
+
+ + + + UTRP Map + +
+ + LD Icon +
+
+
+
+
+ + + + + +
+ +
+
+ +
+ + {/* Show week schedule */} +
+

Week Schedule:

+ {Object.entries(generateWeekSchedule()).map(([day, courses]) => ( +
+

{day}

+
    + {courses.map(course => ( +
  • + {course} +
  • + ))} +
+
+ ))} +
+
+
+ ); +} diff --git a/src/views/components/map/Path.tsx b/src/views/components/map/Path.tsx new file mode 100644 index 00000000..1a74a338 --- /dev/null +++ b/src/views/components/map/Path.tsx @@ -0,0 +1,61 @@ +import React from 'react'; + +import { PathFinder } from './PathFinder'; +import { type Graph, isValidNode, type NodeId } from './types'; + +type PathProps = { + startId: NodeId; + endId: NodeId; + graph: Graph; + color: string; + className?: string; +}; + +/** + * Renders a path between two nodes in a graph. + * + * @param startId - The ID of the starting node. + * @param endId - The ID of the ending node. + * @param graph - The graph object containing nodes and edges. + * @param color - The color of the path. + * @param className - Additional CSS classes for the path. + * + * @returns The rendered path as a series of SVG lines, or null if an error occurs. + */ +export const Path = ({ startId, endId, graph, color, className = '' }: PathProps): JSX.Element | null => { + try { + const pathFinder = new PathFinder(graph); + const path = pathFinder.findPath(startId, endId); + + return ( + <> + {path.slice(0, -1).map((nodeId, index) => { + const nextNodeId = path[index + 1]; + if (!nextNodeId) return null; + + const start = graph[nodeId]; + const end = graph[nextNodeId]; + + if (!isValidNode(start) || !isValidNode(end)) return null; + + return ( + + ); + })} + + ); + } catch (error) { + console.error('Error rendering path:', error instanceof Error ? error.message : 'Unknown error'); + return null; + } +}; diff --git a/src/views/components/map/PathFinder.ts b/src/views/components/map/PathFinder.ts new file mode 100644 index 00000000..1611b80a --- /dev/null +++ b/src/views/components/map/PathFinder.ts @@ -0,0 +1,193 @@ +/* eslint-disable max-classes-per-file */ +import { + DIRECT_PATH_THRESHOLD, + type DistanceMap, + type Graph, + isValidNode, + type MapNode, + NEIGHBOR_DISTANCE_THRESHOLD, + type NodeId, + type PreviousMap, +} from './types'; +import { calculateDistance, getNeighbors } from './utils'; + +/** + * Custom error class for handling pathfinding errors. + */ +export class PathFindingError extends Error { + constructor(message: string) { + super(message); + this.name = 'PathFindingError'; + } +} + +/** + * The `PathFinder` class is responsible for finding the shortest path between nodes in a graph. + * It uses Dijkstra's algorithm to compute the shortest path and supports bidirectional connections. + */ +export class PathFinder { + private graph: Graph; + private nodeConnections: Map>; + + constructor(graph: Graph) { + this.graph = graph; + this.nodeConnections = this.buildNodeConnections(); + } + + private buildNodeConnections(): Map> { + const connections = new Map>(); + + // Initialize connections for each node + Object.keys(this.graph).forEach(nodeId => { + connections.set(nodeId, new Set()); + }); + + // Build bidirectional connections + Object.keys(this.graph).forEach(nodeId => { + const neighbors = getNeighbors(nodeId, this.graph); + neighbors.forEach(neighbor => { + connections.get(nodeId)?.add(neighbor); + connections.get(neighbor)?.add(nodeId); + }); + }); + + return connections; + } + + public findPath(startId: NodeId, endId: NodeId): NodeId[] { + const startNode = this.graph[startId]; + const endNode = this.graph[endId]; + + // Validate input + if (!isValidNode(startNode)) { + throw new PathFindingError(`Invalid start node: ${startId}`); + } + if (!isValidNode(endNode)) { + throw new PathFindingError(`Invalid end node: ${endId}`); + } + + // Check for direct path possibility + if (this.shouldUseDirectPath(startNode, endNode)) { + return [startId, endId]; + } + + // Initialize Dijkstra's algorithm data structures + const distances = Object.keys(this.graph).reduce((acc, nodeId) => { + acc[nodeId] = nodeId === startId ? 0 : Infinity; + return acc; + }, {}); + + const previous = Object.keys(this.graph).reduce((acc, nodeId) => { + acc[nodeId] = null; + return acc; + }, {}); + + const unvisited = new Set(Object.keys(this.graph)); + + // Main Dijkstra's algorithm loop + while (unvisited.size > 0) { + const current = this.getMinDistanceNode(distances, unvisited); + if (current === null) break; + + if (current === endId) break; + + unvisited.delete(current); + + // Use pre-computed connections + const neighbors = this.nodeConnections.get(current) ?? new Set(); + neighbors.forEach(neighbor => { + if (!unvisited.has(neighbor)) return; + + const currentNode = this.graph[current]; + const neighborNode = this.graph[neighbor]; + + if (!isValidNode(currentNode) || !isValidNode(neighborNode)) return; + + const distance = calculateDistance(currentNode, neighborNode); + const totalDistance = distances[current]! + distance; + + if (totalDistance < distances[neighbor]!) { + distances[neighbor] = totalDistance; + previous[neighbor] = current; + } + }); + } + + // Reconstruct and validate path + const path = this.reconstructPath(previous, startId, endId); + + // Verify path distance is reasonable + const totalPathDistance = this.calculatePathDistance(path); + if (totalPathDistance > NEIGHBOR_DISTANCE_THRESHOLD * path.length) { + console.warn(`Long path detected (${totalPathDistance.toFixed(2)} units) from ${startId} to ${endId}`); + } + + return path; + } + + private calculatePathDistance(path: NodeId[]): number { + let totalDistance = 0; + for (let i = 0; i < path.length - 1; i++) { + const currentNode = this.graph[path[i]!]; + const nextNode = this.graph[path[i + 1]!]; + if (isValidNode(currentNode) && isValidNode(nextNode)) { + totalDistance += calculateDistance(currentNode, nextNode); + } + } + return totalDistance; + } + + private shouldUseDirectPath(start: MapNode, end: MapNode): boolean { + const distance = calculateDistance(start, end); + return distance <= DIRECT_PATH_THRESHOLD; + } + + private getMinDistanceNode(distances: DistanceMap, unvisited: Set): NodeId | null { + let minDistance = Infinity; + let minNode: NodeId | null = null; + + unvisited.forEach(nodeId => { + const distance = distances[nodeId] ?? Infinity; + if (distance < minDistance) { + minDistance = distance; + minNode = nodeId; + } + }); + + return minNode; + } + + private reconstructPath(previous: PreviousMap, startId: NodeId, endId: NodeId): NodeId[] { + const path: NodeId[] = []; + let currentNode: NodeId | null = endId; + + // Keep track of visited nodes to prevent infinite loops + const visited = new Set(); + + while (currentNode !== null) { + // Prevent infinite loops + if (visited.has(currentNode)) { + throw new PathFindingError('Circular path detected during reconstruction'); + } + visited.add(currentNode); + + path.unshift(currentNode); + const prevNode: NodeId | null = previous[currentNode] ?? null; + + // If we can't find the previous node and we haven't reached the start, + // then the path is broken + if (prevNode === undefined) { + throw new PathFindingError('Path reconstruction failed: broken path chain'); + } + + currentNode = prevNode; + } + + // Verify that we actually found a path to the start + if (path[0] !== startId) { + throw new PathFindingError('No valid path found between the specified nodes'); + } + + return path; + } +} diff --git a/src/views/components/map/PathStats.tsx b/src/views/components/map/PathStats.tsx new file mode 100644 index 00000000..cb3eeaf0 --- /dev/null +++ b/src/views/components/map/PathStats.tsx @@ -0,0 +1,86 @@ +import React from 'react'; + +import { graphNodes } from './graphNodes'; +import { isValidNode, PIXELS_TO_FEET, WALKING_SPEED } from './types'; + +type PathStatsProps = { + startId: string; + endId: string; +}; + +/** + * Calculates the direct path statistics between two nodes. + * + * @param startId - The ID of the starting node. + * @param endId - The ID of the ending node. + * + * @returns The distance in feet and walking time in minutes between the two nodes. + */ +export const calcDirectPathStats = ({ startId, endId }: PathStatsProps) => { + const startNode = graphNodes[startId]; + const endNode = graphNodes[endId]; + + if (!isValidNode(startNode) || !isValidNode(endNode)) { + return null; + } + + // Calculate distance in pixels + const distanceInPixels = Math.sqrt((endNode.x - startNode.x) ** 2 + (endNode.y - startNode.y) ** 2); + + // Convert to feet and calculate time + const distanceInFeet = Math.round(distanceInPixels * PIXELS_TO_FEET); + const walkingTimeMinutes = Math.ceil(distanceInFeet / WALKING_SPEED); + + return { + distanceInFeet, + walkingTimeMinutes, + }; +}; + +/** + * Component to display statistics about a path between two nodes on a map. + * + * @param startId - The ID of the starting node. + * @param endId - The ID of the ending node. + * + * @returns A JSX element displaying the path statistics, or null if the nodes are invalid. + */ +export const PathStats = ({ startId, endId }: PathStatsProps): JSX.Element | null => { + const startNode = graphNodes[startId]; + const endNode = graphNodes[endId]; + + if (!isValidNode(startNode) || !isValidNode(endNode)) { + return null; + } + + // Calculate distance in pixels + const distanceInPixels = Math.sqrt((endNode.x - startNode.x) ** 2 + (endNode.y - startNode.y) ** 2); + + // Convert to feet and calculate time + const distanceInFeet = Math.round(distanceInPixels * PIXELS_TO_FEET); + const walkingTimeMinutes = Math.ceil(distanceInFeet / WALKING_SPEED); + + return ( +
+

Path Statistics

+
+
+ Distance: + {distanceInFeet} ft +
+
+ Walking Time: + {walkingTimeMinutes} min +
+
+ From: + {startId} +
+
+ To: + {endId} +
+
+
+ ); +}; diff --git a/src/views/components/map/TimeWarningLabel.tsx b/src/views/components/map/TimeWarningLabel.tsx new file mode 100644 index 00000000..2bbb1f3e --- /dev/null +++ b/src/views/components/map/TimeWarningLabel.tsx @@ -0,0 +1,36 @@ +import React from 'react'; + +interface TimeWarningLabelProps { + x: number; + y: number; + minutes: number; +} + +/** + * TimeWarningLabel component that renders a warning label on a map. + * The label consists of a circle with a text inside it, indicating the number of minutes. + * + * @param x - The x-coordinate for the center of the circle. + * @param y - The y-coordinate for the center of the circle. + * @param minutes - The number of minutes to display inside the circle. + * + * @returns A JSX element representing the warning label. + */ +export default function TimeWarningLabel({ x, y, minutes }: TimeWarningLabelProps): JSX.Element { + return ( + + + + {minutes}' + + + ); +} diff --git a/src/views/components/map/ZoomPanControls.tsx b/src/views/components/map/ZoomPanControls.tsx new file mode 100644 index 00000000..f9710290 --- /dev/null +++ b/src/views/components/map/ZoomPanControls.tsx @@ -0,0 +1,84 @@ +import React from 'react'; + +import { Button } from '../common/Button'; + +interface ZoomPanControlsProps { + zoomIn: () => void; + zoomOut: () => void; + resetZoomPan: () => void; + zoomLevel: number; +} + +/** + * ZoomPanControls component provides buttons for zooming and panning. + * + * @param zoomIn - Function to zoom in the map. + * @param zoomOut - Function to zoom out the map. + * @param resetZoomPan - Function to reset zoom and pan to default. + * @param zoomLevel - Current zoom level. + * + * @returns The rendered ZoomPanControls component. + */ +export default function ZoomPanControls({ + zoomIn, + zoomOut, + resetZoomPan, + zoomLevel, +}: ZoomPanControlsProps): JSX.Element { + return ( +
+ + + + {Math.round(zoomLevel * 100)}% +
+ ); +} diff --git a/src/views/components/map/graphNodes.ts b/src/views/components/map/graphNodes.ts new file mode 100644 index 00000000..e3ded6a8 --- /dev/null +++ b/src/views/components/map/graphNodes.ts @@ -0,0 +1,1052 @@ +import type { Graph, NodeCoordinates } from './types'; + +/** + * A constant object representing the graph nodes for a map. + * + * The graph nodes are categorized into two types: buildings and intersections. + * Each node has coordinates (x, y) and a type indicating whether it is a building or an intersection. + */ +const rawGraphNodes: Graph = { + // // Debug nodes + // dn1: { + // x: 89, + // y: 83, + // type: 'building', + // }, + // dn2: { + // x: 89, + // y: 445, + // type: 'building', + // }, + + // Building nodes + GDC: { + x: 257, + y: 283, + type: 'building', + }, + PCL: { + x: 222, + y: 430, + type: 'building', + }, + JES: { + x: 260, + y: 420, + type: 'building', + }, + GRE: { + x: 260, + y: 375, + type: 'building', + }, + MAI: { + x: 167, + y: 310, + type: 'building', + }, + WEL: { + x: 216, + y: 268, + type: 'building', + }, + WAG: { + x: 230, + y: 330, + type: 'building', + }, + BEL: { + x: 365, + y: 377, + type: 'building', + }, + NEZ: { + x: 403, + y: 335, + type: 'building', + }, + SEZ: { + x: 403, + y: 408, + type: 'building', + }, + STD: { + x: 430, + y: 377, + type: 'building', + }, + MNC: { + x: 405, + y: 430, + type: 'building', + }, + WCP: { + x: 260, + y: 343, + type: 'building', + }, + RLP: { + x: 300, + y: 335, + type: 'building', + }, + POB: { + x: 258, + y: 265, + type: 'building', + }, + PPE: { + x: 282, + y: 265, + type: 'building', + }, + PPL: { + x: 302, + y: 280, + type: 'building', + }, + CS6: { + x: 287, + y: 280, + type: 'building', + }, + JGB: { + x: 287, + y: 298, + type: 'building', + }, + LTH: { + x: 305, + y: 296, + type: 'building', + }, + PPA: { + x: 330, + y: 258, + type: 'building', + }, + WIN: { + x: 330, + y: 295, + type: 'building', + }, + EPS: { + x: 258, + y: 308, + type: 'building', + }, + BRB: { + x: 258, + y: 328, + type: 'building', + }, + UTX: { + x: 337, + y: 358, + type: 'building', + }, + MHD: { + x: 308, + y: 388, + type: 'building', + }, + UTC: { + x: 197, + y: 410, + type: 'building', + }, + CBA: { + x: 232, + y: 363, + type: 'building', + }, + GSB: { + x: 208, + y: 382, + type: 'building', + }, + PMA: { + x: 255, + y: 185, + type: 'building', + }, + PAT: { + x: 258, + y: 222, + type: 'building', + }, + EER: { + x: 289, + y: 208, + type: 'building', + }, + ECJ: { + x: 289, + y: 180, + type: 'building', + }, + GLT: { + x: 285, + y: 237, + type: 'building', + }, + UNB: { + x: 105, + y: 288, + type: 'building', + }, + FAC: { + x: 133, + y: 298, + type: 'building', + }, + HRC: { + x: 112, + y: 380, + type: 'building', + }, + COM: { + x: 195, + y: 318, + type: 'building', + }, + CPE: { + x: 262, + y: 135, + type: 'building', + }, + ETC: { + x: 287, + y: 145, + type: 'building', + }, + PAR: { + x: 147, + y: 355, + type: 'building', + }, + CAL: { + x: 147, + y: 370, + type: 'building', + }, + HRH: { + x: 147, + y: 387, + type: 'building', + }, + BAT: { + x: 187, + y: 355, + type: 'building', + }, + MEZ: { + x: 187, + y: 370, + type: 'building', + }, + BEN: { + x: 187, + y: 387, + type: 'building', + }, + BTL: { + x: 137, + y: 327, + type: 'building', + }, + WMB: { + x: 128, + y: 335, + type: 'building', + }, + GOL: { + x: 105, + y: 330, + type: 'building', + }, + SUT: { + x: 122, + y: 352, + type: 'building', + }, + HMA: { + x: 122, + y: 278, + type: 'building', + }, + GEB: { + x: 190, + y: 290, + type: 'building', + }, + WCH: { + x: 200, + y: 300, + type: 'building', + }, + GAR: { + x: 198, + y: 335, + type: 'building', + }, + BOT: { + x: 141, + y: 270, + type: 'building', + }, + BIO: { + x: 148, + y: 258, + type: 'building', + }, + PAI: { + x: 183, + y: 258, + type: 'building', + }, + GEA: { + x: 166, + y: 235, + type: 'building', + }, + GWB: { + x: 142, + y: 238, + type: 'building', + }, + NHB: { + x: 205, + y: 235, + type: 'building', + }, + FNT: { + x: 205, + y: 227, + type: 'building', + }, + AHG: { + x: 212, + y: 212, + type: 'building', + }, + PHR: { + x: 186, + y: 224, + type: 'building', + }, + MBB: { + x: 230, + y: 200, + type: 'building', + }, + NMS: { + x: 215, + y: 175, + type: 'building', + }, + BUR: { + x: 189, + y: 187, + type: 'building', + }, + BME: { + x: 175, + y: 175, + type: 'building', + }, + WWH: { + x: 75, + y: 185, + type: 'building', + }, + CMB: { + x: 98, + y: 189, + type: 'building', + }, + CMA: { + x: 112, + y: 180, + type: 'building', + }, + HSM: { + x: 112, + y: 199, + type: 'building', + }, + LCH: { + x: 111, + y: 213, + type: 'building', + }, + LFH: { + x: 114, + y: 230, + type: 'building', + }, + AND: { + x: 143, + y: 221, + type: 'building', + }, + BLD: { + x: 156, + y: 202, + type: 'building', + }, + CRD: { + x: 132, + y: 201, + type: 'building', + }, + LTD: { + x: 142, + y: 177, + type: 'building', + }, + KIN: { + x: 148, + y: 140, + type: 'building', + }, + // JCD has two places on the map so we will use the center of the two + JCD: { + x: 280, + y: 440, + type: 'building', + }, + LDH: { + x: 285, + y: 425, + type: 'building', + }, + BHD: { + x: 293, + y: 405, + type: 'building', + }, + RHD: { + x: 312, + y: 405, + type: 'building', + }, + PHD: { + x: 322, + y: 432, + type: 'building', + }, + SJH: { + x: 348, + y: 425, + type: 'building', + }, + CCF: { + x: 348, + y: 471, + type: 'building', + }, + BMA: { + x: 249, + y: 491, + type: 'building', + }, + BMS: { + x: 222, + y: 488, + type: 'building', + }, + SZB: { + x: 202, + y: 470, + type: 'building', + }, + + // Intersection nodes + 'speedway-dean-keeton': { + x: 241, + y: 168, + type: 'intersection', + }, + 'speedway-24th': { + x: 241, + y: 250, + type: 'intersection', + }, + 'speedway-21st': { + x: 241, + y: 400, + type: 'intersection', + }, + 'speedway-e-mai-stairs': { + x: 241, + y: 315, + type: 'intersection', + }, + 'speedway-w-eer': { + x: 241, + y: 208, + type: 'intersection', + }, + 'speedway-jester-circle': { + x: 241, + y: 468, + type: 'intersection', + }, + 'guad-dean-keeton': { + x: 89, + y: 168, + type: 'intersection', + }, + 'guad-24th': { + x: 89, + y: 250, + type: 'intersection', + }, + 'guad-21st': { + x: 89, + y: 400, + type: 'intersection', + }, + 'guad-icd': { + x: 89, + y: 353, + type: 'intersection', + }, + 'uni-ave-21st': { + x: 166, + y: 400, + type: 'intersection', + }, + 'wichita-21st': { + x: 187, + y: 400, + type: 'intersection', + }, + 'wichita-mlk-jr': { + x: 187, + y: 498, + type: 'intersection', + }, + 'n-mai-24th': { + x: 167, + y: 250, + type: 'intersection', + }, + 's-mai-stairs': { + x: 167, + y: 347, + type: 'intersection', + }, + 'e-mai-stairs': { + x: 215, + y: 315, + type: 'intersection', + }, + 'guad-w-mai': { + x: 89, + y: 317, + type: 'intersection', + }, + 'guad-27th': { + x: 89, + y: 83, + type: 'intersection', + }, + 'guad-mlk-jr': { + x: 89, + y: 477, + type: 'intersection', + }, + 'n-mai-turtle-pond': { + x: 167, + y: 282, + type: 'intersection', + }, + 'icd-ne': { + x: 207, + y: 289, + type: 'intersection', + }, + 'icd-nne': { + x: 190, + y: 282, + type: 'intersection', + }, + 'icd-se': { + x: 212, + y: 338, + type: 'intersection', + }, + 'icd-sse': { + x: 190, + y: 347, + type: 'intersection', + }, + 'san-jac-dean-keeton': { + x: 315, + y: 168, + type: 'intersection', + }, + 'san-jac-21th': { + x: 354, + y: 400, + type: 'intersection', + }, + 'san-jac-24th': { + x: 357, + y: 250, + type: 'intersection', + }, + 'san-jac-23rd': { + x: 358, + y: 318, + type: 'intersection', + }, + 'mlk-jr-statue': { + x: 280, + y: 318, + type: 'intersection', + }, + 'pcl-nw-21st-walkway': { + x: 208, + y: 400, + type: 'intersection', + }, + 'pcl-w-speedway': { + x: 241, + y: 425, + type: 'intersection', + }, + 'speedway-27th': { + x: 241, + y: 83, + type: 'intersection', + }, + 'nueces-27th': { + x: 36, + y: 83, + type: 'intersection', + }, + 'san-jac-mlk-jr': { + x: 310, + y: 527, + type: 'intersection', + }, + 'robert-dedman-mlk-jr': { + x: 423, + y: 552, + type: 'intersection', + }, + 'robert-dedman-23rd': { + x: 460, + y: 318, + type: 'intersection', + }, + '23rd-circle': { + x: 340, + y: 318, + type: 'intersection', + }, +} as const; + +type LinearWalkway = { + type: 'linear'; + start: NodeCoordinates; + end: NodeCoordinates; + namePrefix: string; +}; + +type BezierWalkway = { + type: 'bezier'; + start: NodeCoordinates; + end: NodeCoordinates; + control1: NodeCoordinates; + control2: NodeCoordinates; + namePrefix: string; +}; + +type CircularWalkway = { + type: 'circular'; + center: NodeCoordinates; + radius: number; + startAngle?: number; // in radians, default 0 + endAngle?: number; // in radians, default 2π + namePrefix: string; +}; + +type Walkway = LinearWalkway | BezierWalkway | CircularWalkway; + +const WALKWAY_INTERVAL = 10; + +const walkways: Walkway[] = [ + // Linear walkways + { + type: 'linear', + start: { x: 241, y: 83 }, + end: { x: 241, y: 468 }, + namePrefix: 'speedway-walkway', + }, + { + type: 'linear', + start: { x: 89, y: 250 }, + end: { x: 357, y: 250 }, + namePrefix: '24st-walkway', + }, + { + type: 'linear', + start: { x: 89, y: 400 }, + end: { x: 354, y: 400 }, + namePrefix: '21st-walkway', + }, + { + type: 'linear', + start: { x: 89, y: 83 }, + end: { x: 89, y: 477 }, + namePrefix: 'guad-walkway', + }, + { + type: 'linear', + start: { x: 165, y: 255 }, + end: { x: 165, y: 168 }, + namePrefix: 'university-ave-walkway', + }, + { + type: 'linear', + start: { x: 167, y: 310 }, + end: { x: 166, y: 400 }, + namePrefix: 's-mall-walkway', + }, + { + type: 'linear', + start: { x: 167, y: 310 }, + end: { x: 315, y: 318 }, + namePrefix: 'e-mall-walkway', + }, + { + type: 'linear', + start: { x: 167, y: 310 }, + end: { x: 89, y: 317 }, + namePrefix: 'w-mall-walkway', + }, + { + type: 'linear', + start: { x: 89, y: 168 }, + end: { x: 315, y: 168 }, + namePrefix: 'dean-keeton-walkway', + }, + { + type: 'linear', + start: { x: 36, y: 83 }, + end: { x: 241, y: 83 }, + namePrefix: '27th-walkway', + }, + { + type: 'linear', + start: { x: 89, y: 477 }, + end: { x: 423, y: 552 }, + namePrefix: 'mlk-jr-walkway', + }, + { + type: 'linear', + start: { x: 187, y: 400 }, + end: { x: 187, y: 498 }, + namePrefix: 'wichita-walkway', + }, + { + type: 'linear', + start: { x: 273, y: 468 }, + end: { x: 273, y: 518 }, + namePrefix: 'brazos-walkway', + }, + { + type: 'linear', + start: { x: 460, y: 318 }, + end: { x: 423, y: 552 }, + namePrefix: 'robert-dedman-walkway', + }, + { + type: 'linear', + start: { x: 340, y: 318 }, + end: { x: 460, y: 318 }, + namePrefix: '23rd-walkway', + }, + + // Bezier curves + { + type: 'bezier', + start: { x: 190, y: 282 }, + end: { x: 190, y: 347 }, + control1: { x: 218, y: 282 }, + control2: { x: 233, y: 347 }, + namePrefix: 'inner-campus-drive-curve', + }, + { + type: 'bezier', + start: { x: 315, y: 168 }, + end: { x: 357, y: 250 }, + control1: { x: 310, y: 200 }, + control2: { x: 363, y: 223 }, + namePrefix: 'san-jac-bezier-curve-1', + }, + { + type: 'bezier', + start: { x: 357, y: 250 }, + end: { x: 354, y: 400 }, + control1: { x: 367, y: 296 }, + control2: { x: 348, y: 360 }, + namePrefix: 'san-jac-bezier-curve-2', + }, + { + type: 'bezier', + start: { x: 354, y: 400 }, + end: { x: 357, y: 510 }, + control1: { x: 400, y: 460 }, + control2: { x: 389, y: 487 }, + namePrefix: 'san-jac-bezier-curve-3', + }, + { + type: 'bezier', + start: { x: 371, y: 498 }, + end: { x: 310, y: 527 }, + control1: { x: 330, y: 527 }, + control2: { x: 322, y: 505 }, + namePrefix: 'san-jac-bezier-curve-4', + }, + { + type: 'bezier', + start: { x: 241, y: 468 }, + end: { x: 325, y: 449 }, + control1: { x: 317, y: 472 }, + control2: { x: 313, y: 468 }, + namePrefix: 'jester-circle-curve', + }, + + // Circular walkways + { + type: 'circular', + center: { x: 330, y: 318 }, + radius: 10, + namePrefix: '23rd-circle', + }, +]; + +/** + * Calculates a point on a cubic Bézier curve. + * + * @param t - The time value between 0 and 1. + * @param start - The starting point of the curve. + * @param end - The ending point of the curve. + * @param control1 - The first control point of the curve. + * @param control2 - The second control point of the curve. + * + * @returns The calculated point on the curve. + */ +const getBezierPoint = ( + t: number, + start: NodeCoordinates, + end: NodeCoordinates, + control1: NodeCoordinates, + control2: NodeCoordinates +): NodeCoordinates => { + const oneMinusT = 1 - t; + const oneMinusTSquared = oneMinusT * oneMinusT; + const oneMinusTCubed = oneMinusTSquared * oneMinusT; + const tSquared = t * t; + const tCubed = tSquared * t; + + return { + x: Math.round( + oneMinusTCubed * start.x + + 3 * oneMinusTSquared * t * control1.x + + 3 * oneMinusT * tSquared * control2.x + + tCubed * end.x + ), + y: Math.round( + oneMinusTCubed * start.y + + 3 * oneMinusTSquared * t * control1.y + + 3 * oneMinusT * tSquared * control2.y + + tCubed * end.y + ), + }; +}; + +/** + * Estimates the length of a cubic Bézier curve. + * + * @param start - The starting point of the curve. + * @param end - The ending point of the curve. + * @param control1 - The first control point of the curve. + * @param control2 - The second control point of the curve. + * @param segments - The number of segments to use for the estimation. + * + * @returns The estimated length of the curve. + */ +const estimateBezierLength = ( + start: NodeCoordinates, + end: NodeCoordinates, + control1: NodeCoordinates, + control2: NodeCoordinates, + segments: number = 100 +): number => { + let length = 0; + let previousPoint = start; + + for (let i = 1; i <= segments; i++) { + const t = i / segments; + const currentPoint = getBezierPoint(t, start, end, control1, control2); + + const dx = currentPoint.x - previousPoint.x; + const dy = currentPoint.y - previousPoint.y; + length += Math.sqrt(dx * dx + dy * dy); + + previousPoint = currentPoint; + } + + return length; +}; + +/** + * Calculates a point on a circle given a center, radius, and angle. + * + * @param center - The center of the circle. + * @param radius - The radius of the circle. + * @param angle - The angle in radians. + * + * @returns The calculated point on the circle. + */ +const getCirclePoint = (center: NodeCoordinates, radius: number, angle: number): NodeCoordinates => ({ + x: Math.round(center.x + radius * Math.cos(angle)), + y: Math.round(center.y + radius * Math.sin(angle)), +}); + +/** + * Generates nodes for a linear walkway. + * + * @param config - The configuration object for the walkway. + * + * @returns The generated nodes for the walkway. + */ +const generateLinearWalkwayNodes = (config: LinearWalkway): Graph => { + const { start, end, namePrefix } = config; + const nodes: Graph = {}; + + const dx = end.x - start.x; + const dy = end.y - start.y; + const distance = Math.sqrt(dx * dx + dy * dy); + const numPoints = Math.floor(distance / WALKWAY_INTERVAL); + + for (let i = 1; i < numPoints; i++) { + const t = i / numPoints; + const x = Math.round(start.x + dx * t); + const y = Math.round(start.y + dy * t); + + const nodeName = `${namePrefix}-${i}` as keyof Graph; + nodes[nodeName] = { + x, + y, + type: 'walkway', + }; + } + + return nodes; +}; + +/** + * Generates nodes for a Bézier walkway. + * + * @param config - The configuration object for the walkway. + * + * @returns The generated nodes for the walkway. + */ +const generateBezierWalkwayNodes = (config: BezierWalkway): Graph => { + const { start, end, control1, control2, namePrefix } = config; + const nodes: Graph = {}; + + // Estimate the curve length to determine number of points + const approximateLength = estimateBezierLength(start, end, control1, control2); + const numPoints = Math.floor(approximateLength / WALKWAY_INTERVAL); + + for (let i = 1; i < numPoints; i++) { + const t = i / numPoints; + const point = getBezierPoint(t, start, end, control1, control2); + + const nodeName = `${namePrefix}-${i}` as keyof Graph; + nodes[nodeName] = { + x: point.x, + y: point.y, + type: 'walkway', + }; + } + + return nodes; +}; + +/** + * Generates nodes for a circular walkway. + * + * @param config - The configuration object for the walkway. + * + * @returns The generated nodes for the walkway. + */ +const generateCircularWalkwayNodes = (config: CircularWalkway): Graph => { + const { center, radius, namePrefix, startAngle = 0, endAngle = 2 * Math.PI } = config; + const nodes: Graph = {}; + + // Calculate circumference to determine number of points + const arcLength = radius * (endAngle - startAngle); + const numPoints = Math.floor(arcLength / WALKWAY_INTERVAL); + + // Generate points along the circle + for (let i = 0; i < numPoints; i++) { + const angle = startAngle + (endAngle - startAngle) * (i / numPoints); + const point = getCirclePoint(center, radius, angle); + + const nodeName = `${namePrefix}-${i}` as keyof Graph; + nodes[nodeName] = { + x: point.x, + y: point.y, + type: 'walkway', + }; + } + + return nodes; +}; + +/** + * Generates all walkway nodes for the map. + * + * @param config - The configuration object for the walkway. + * + * @returns The combined graph with walkway nodes. + */ +const generateWalkwayNodes = (config: Walkway): Graph => { + switch (config.type) { + case 'bezier': + return generateBezierWalkwayNodes(config); + case 'circular': + return generateCircularWalkwayNodes(config); + default: + return generateLinearWalkwayNodes(config); + } +}; + +/** + * Generates all walkway nodes for the map. + * + * @returns The combined graph with all walkway nodes. + */ +const generateAllWalkwayNodes = (): Graph => { + const generatedNodes = walkways.reduce((acc, config) => { + const nodes = generateWalkwayNodes(config); + return { ...acc, ...nodes }; + }, {} as Graph); + + return { + ...rawGraphNodes, + ...generatedNodes, + }; +}; + +// Export the combined graph with walkway nodes +export const graphNodes = generateAllWalkwayNodes(); diff --git a/src/views/components/map/types.ts b/src/views/components/map/types.ts new file mode 100644 index 00000000..a28aa568 --- /dev/null +++ b/src/views/components/map/types.ts @@ -0,0 +1,124 @@ +// Constants +export const WALKING_SPEED = 246.4; // ~2.8 mph in feet per minute +export const PIXELS_TO_FEET = 9.3895; // Approximate scale factor + +export const DIRECT_PATH_THRESHOLD = 50; // Units for direct path calculation +export const NEIGHBOR_DISTANCE_THRESHOLD = 25; // Increased threshold for neighbor connections + +/** + * Represents the type of a node in the map. + * + * - 'building': A node representing a building. + * - 'intersection': A node representing an intersection. + * - 'walkway': A node representing a walkway. + */ +export type NodeType = 'building' | 'intersection' | 'walkway'; + +/** + * Represents the coordinates of a node on a map. + * + * @typeparam x - The x-coordinate of the node. + * @typeparam y - The y-coordinate of the node. + */ +export type NodeCoordinates = { + x: number; + y: number; +}; + +/** + * Represents a map node with specific coordinates and a type. + * + * @typeparam type - The type of the node. + */ +export type MapNode = NodeCoordinates & { + type: NodeType; +}; + +/** + * Represents a graph structure where each key is a string identifier + * and the value is a MapNode. This type is used to define the overall + * structure of a graph in the application. + */ +export type Graph = Record; + +/** + * Represents a distance measurement. + */ +export type Distance = number; + +/** + * Represents the unique identifier for a node in the map. + */ +export type NodeId = string; + +/** + * A map that associates a node identifier with a distance. + * + * @typeparam NodeId - The unique identifier for a node. + * @typeparam Distance - The distance associated with the node. + */ +export type DistanceMap = Record; + +/** + * A type representing a mapping of node identifiers to their previous node identifiers. + * + * @typeparam NodeId - The identifier of the current node. + * @typeparam NodeId - The identifier of the previous node, or null if there is no previous node. + */ +export type PreviousMap = Record; + +/** + * type guard to check if the given node is a valid MapNode. + * + * A valid MapNode is defined as: + * - Not undefined + * - Has numeric `x` and `y` properties + * - Has a `type` property that is either 'building', 'intersection', or 'walkway' + * + * @param node - The node to validate. + * @returns True if the node is a valid MapNode, false otherwise. + */ +export const isValidNode = (node: MapNode | undefined): node is MapNode => + node !== undefined && + typeof node.x === 'number' && + typeof node.y === 'number' && + (node.type === 'building' || node.type === 'intersection' || node.type === 'walkway'); + +/** + * Represents the code for a day of the week. + * + * - 'M' : Monday + * - 'T' : Tuesday + * - 'W' : Wednesday + * - 'TH' : Thursday + * - 'F' : Friday + */ +export type DayCode = 'M' | 'T' | 'W' | 'TH' | 'F'; + +/** + * An array of strings representing the days of the week. + * The days are ordered starting from Monday to Sunday. + */ +export const DAYS = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] as const; + +/** + * Represents a day of the week. + * + * @remarks + * This type is derived from the `DAYS` array, representing one of its elements. + * It is used to ensure that only valid days of the week are assigned to variables of this type. + */ +export type DAY = (typeof DAYS)[number]; + +type DayMapping = Record; + +/** + * A constant object that maps single-letter day abbreviations to their full names. + */ +export const DAY_MAPPING = { + M: 'Monday', + T: 'Tuesday', + W: 'Wednesday', + TH: 'Thursday', + F: 'Friday', +} as const satisfies DayMapping; diff --git a/src/views/components/map/utils.ts b/src/views/components/map/utils.ts new file mode 100644 index 00000000..c6d49153 --- /dev/null +++ b/src/views/components/map/utils.ts @@ -0,0 +1,111 @@ +import { graphNodes } from './graphNodes'; +import type { Graph, MapNode, NodeCoordinates, NodeId } from './types'; +import { isValidNode, NEIGHBOR_DISTANCE_THRESHOLD } from './types'; + +/** + * Calculates the Euclidean distance between two points. + * + * @param point1 - The coordinates of the first point. + * @param point2 - The coordinates of the second point. + * @returns The distance between the two points. + */ +export const calculateDistance = (point1: NodeCoordinates, point2: NodeCoordinates): number => + Math.sqrt((point2.x - point1.x) ** 2 + (point2.y - point1.y) ** 2); + +/** + * Finds the nearest nodes to a given node in a graph. + * + * @param nodeId - The ID of the node for which to find the nearest nodes. + * @param graph - The graph containing all nodes. + * @returns An array of node IDs representing the nearest nodes. + * + * The function first checks if the current node is valid. If not, it returns an empty array. + * It then calculates the distances to all other valid nodes in the graph. + * The nodes are sorted by distance, and the function first attempts to connect to the nearest intersections. + * If no intersections are found, it connects to the nearest buildings. + */ +const findNearestNodes = (nodeId: NodeId, graph: Graph): NodeId[] => { + const currentNode = graph[nodeId]; + if (!isValidNode(currentNode)) return []; + + // Calculate distances to all other nodes + const distances = Object.entries(graph) + .filter((entry): entry is [string, MapNode] => { + const [id, node] = entry; + return id !== nodeId && isValidNode(node); + }) + .map(([id, node]) => ({ + id, + distance: calculateDistance(currentNode, node), + isIntersection: node.type === 'intersection', + })) + .sort((a, b) => a.distance - b.distance); + + // First try to connect to nearest intersections + const nearestIntersections = distances + .filter(node => node.isIntersection) + .slice(0, 2) + .map(node => node.id); + + if (nearestIntersections.length > 0) { + return nearestIntersections; + } + + // If no intersections found, connect to nearest buildings + return distances.slice(0, 2).map(node => node.id); +}; + +/** + * Retrieves the neighboring nodes of a given node within a graph. + * + * @param nodeId - The ID of the node for which neighbors are to be found. + * @param graph - The graph containing all nodes and their connections. + * @returns An array of node IDs representing the neighbors of the given node. + * + * This function first checks if the current node is valid. If not, it returns an empty array. + * It then filters the graph to find all valid neighboring nodes within a specified distance threshold. + * If no direct neighbors are found, it attempts to connect to the nearest intersection or building. + */ +export const getNeighbors = (nodeId: NodeId, graph: Graph): NodeId[] => { + const currentNode = graph[nodeId]; + if (!isValidNode(currentNode)) return []; + + // Get all possible neighbors within the increased threshold + const neighbors = Object.entries(graph) + .filter((entry): entry is [string, MapNode] => { + const [id, node] = entry; + if (!isValidNode(node) || id === nodeId) return false; + const distance = calculateDistance(currentNode, node); + return distance < NEIGHBOR_DISTANCE_THRESHOLD; + }) + .map(([id]) => id); + + // If no direct neighbors found, connect to the nearest intersection or building + if (neighbors.length === 0) { + const nearestNodes = findNearestNodes(nodeId, graph); + return nearestNodes; + } + + return neighbors; +}; + +/** + * Calculates the midpoint between two nodes identified by their IDs. + * + * @param startId - The ID of the starting node. + * @param endId - The ID of the ending node. + * @returns An object containing the x and y coordinates of the midpoint, or null if either node is invalid. + */ +export const getMidpoint = (startId: string, endId: string) => { + const startNode = graphNodes[startId]; + const endNode = graphNodes[endId]; + + if (!isValidNode(startNode) || !isValidNode(endNode)) { + return null; + } + + return { + x: (startNode.x + endNode.x) / 2, + y: (startNode.y + endNode.y) / 2, + }; +}; diff --git a/src/views/components/settings/Settings.tsx b/src/views/components/settings/Settings.tsx index be835112..108b57b6 100644 --- a/src/views/components/settings/Settings.tsx +++ b/src/views/components/settings/Settings.tsx @@ -7,6 +7,7 @@ import { CalendarDots, Trash } from '@phosphor-icons/react'; import { background } from '@shared/messages'; import { initSettings, OptionsStore } from '@shared/storage/OptionsStore'; import { UserScheduleStore } from '@shared/storage/UserScheduleStore'; +import { CRX_PAGES } from '@shared/types/CRXPages'; import MIMEType from '@shared/types/MIMEType'; import { downloadBlob } from '@shared/util/downloadBlob'; // import { addCourseByUrl } from '@shared/util/courseUtils'; @@ -507,6 +508,60 @@ export default function Settings(): JSX.Element {

Developer Mode

+ +
+
+ + UTRP Map + + + BETA + +

+ Navigate campus efficiently with our interactive map tool that integrates with your + schedule +

+
+ +
+ + + +
+
+ + Debug Page + + + DEV + +

+ Open the developer debug page to view extension storage and debug logs +

+
+ +
+ + + diff --git a/vite.config.ts b/vite.config.ts index 71cf663d..01102f55 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -168,6 +168,7 @@ export default defineConfig({ renameFile('src/pages/options/index.html', 'options.html'), renameFile('src/pages/calendar/index.html', 'calendar.html'), renameFile('src/pages/report/index.html', 'report.html'), + renameFile('src/pages/map/index.html', 'map.html'), renameFile('src/pages/404/index.html', '404.html'), vitePluginRunCommandOnDemand({ // afterServerStart: 'pnpm gulp forceDisableUseDynamicUrl', @@ -225,6 +226,10 @@ export default defineConfig({ target: 'http://localhost:5173', rewrite: path => path.replace('report', 'src/pages/report/index'), }, + '/map.html': { + target: 'http://localhost:5173', + rewrite: path => path.replace('map', 'src/pages/map/index'), + }, '/404.html': { target: 'http://localhost:5173', rewrite: path => path.replace('404', 'src/pages/404/index'), @@ -244,6 +249,7 @@ export default defineConfig({ calendar: 'src/pages/calendar/index.html', options: 'src/pages/options/index.html', report: 'src/pages/report/index.html', + map: 'src/pages/map/index.html', 404: 'src/pages/404/index.html', }, output: {