diff --git a/.gitignore b/.gitignore index a547bf3..dc49877 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,9 @@ node_modules dist dist-ssr *.local +public/video/* +public/words/* +public/audio/* # Editor directories and files .vscode/* diff --git a/.storybook/main.ts b/.storybook/main.ts new file mode 100644 index 0000000..b4803a4 --- /dev/null +++ b/.storybook/main.ts @@ -0,0 +1,28 @@ +import type { StorybookConfig } from "@storybook/react-vite"; +import { mergeConfig } from "vite"; +import path from "path"; + +const config: StorybookConfig = { + stories: ["../src/**/*.stories.@(js|jsx|mjs|ts|tsx)"], + addons: [ + "@storybook/addon-links", + "@storybook/addon-essentials", + "@storybook/addon-interactions", + ], + framework: { + name: "@storybook/react-vite", + options: {}, + }, + async viteFinal(config) { + return mergeConfig(config, { + resolve: { + alias: { + "@": path.resolve(__dirname, "../src"), + }, + }, + }); + }, +}; + +export default config; + diff --git a/.storybook/preview.ts b/.storybook/preview.ts new file mode 100644 index 0000000..b6b9677 --- /dev/null +++ b/.storybook/preview.ts @@ -0,0 +1,16 @@ +import type { Preview } from "@storybook/react"; +import "../src/index.css"; + +const preview: Preview = { + parameters: { + controls: { + matchers: { + color: /(background|color)$/i, + date: /Date$/i, + }, + }, + }, +}; + +export default preview; + diff --git a/index.html b/index.html index 13cae72..c1fc1da 100644 --- a/index.html +++ b/index.html @@ -3,8 +3,12 @@ - - 南湖名师/技能大师工作室 + + + 沪上又见故人来
diff --git a/package.json b/package.json index ef1deca..51b4c62 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "master-teacher-studio", + "name": "shanghai-residences", "private": true, "version": "0.0.0", "type": "module", @@ -13,20 +13,31 @@ "build": "tsc && vite build", "lint": "eslint .", "typecheck": "tsc --noEmit", - "preview": "vite preview" + "preview": "vite preview", + "storybook": "storybook dev -p 6006", + "build-storybook": "storybook build" }, "dependencies": { "axios": "^1.12.2", "clsx": "^2.1.1", + "framer-motion": "^12.23.26", "lucide-react": "^0.545.0", "mammoth": "^1.11.0", "react": "^19.1.1", "react-dom": "^19.1.1", "react-router-dom": "^7.9.4", + "tailwind-merge": "^3.4.0", + "vconsole": "^3.15.1", "zustand": "^5.0.8" }, "devDependencies": { "@eslint/js": "^9.36.0", + "@storybook/addon-essentials": "^8.4.7", + "@storybook/addon-interactions": "^8.4.7", + "@storybook/addon-links": "^8.4.7", + "@storybook/react": "^8.4.7", + "@storybook/react-vite": "^8.4.7", + "@storybook/test": "^8.4.7", "@tailwindcss/postcss": "^4.1.14", "@types/node": "^24.8.0", "@types/react": "^19.1.16", @@ -35,11 +46,13 @@ "@typescript-eslint/parser": "^8.46.1", "@vitejs/plugin-react": "^5.0.4", "autoprefixer": "^10.4.21", + "baseline-browser-mapping": "^2.9.6", "eslint": "^9.36.0", "eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-react-refresh": "^0.4.22", "globals": "^16.4.0", "postcss": "^8.5.6", + "storybook": "^8.4.7", "tailwindcss": "^4.1.14", "typescript": "^5.9.3", "typescript-eslint": "^8.46.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fadf8be..8b992b8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,6 +14,9 @@ importers: clsx: specifier: ^2.1.1 version: 2.1.1 + framer-motion: + specifier: ^12.23.26 + version: 12.23.26(react-dom@19.2.0(react@19.2.0))(react@19.2.0) lucide-react: specifier: ^0.545.0 version: 0.545.0(react@19.2.0) @@ -29,6 +32,12 @@ importers: react-router-dom: specifier: ^7.9.4 version: 7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + tailwind-merge: + specifier: ^3.4.0 + version: 3.4.0 + vconsole: + specifier: ^3.15.1 + version: 3.15.1 zustand: specifier: ^5.0.8 version: 5.0.8(@types/react@19.2.2)(react@19.2.0) @@ -36,6 +45,24 @@ importers: '@eslint/js': specifier: ^9.36.0 version: 9.37.0 + '@storybook/addon-essentials': + specifier: ^8.4.7 + version: 8.6.14(@types/react@19.2.2)(storybook@8.6.15) + '@storybook/addon-interactions': + specifier: ^8.4.7 + version: 8.6.14(storybook@8.6.15) + '@storybook/addon-links': + specifier: ^8.4.7 + version: 8.6.15(react@19.2.0)(storybook@8.6.15) + '@storybook/react': + specifier: ^8.4.7 + version: 8.6.15(@storybook/test@8.6.14(storybook@8.6.15))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@8.6.15)(typescript@5.9.3) + '@storybook/react-vite': + specifier: ^8.4.7 + version: 8.6.15(@storybook/test@8.6.14(storybook@8.6.15))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rollup@4.52.4)(storybook@8.6.15)(typescript@5.9.3)(vite@7.1.10(@types/node@24.8.0)(jiti@2.6.1)(lightningcss@1.30.1)) + '@storybook/test': + specifier: ^8.4.7 + version: 8.6.14(storybook@8.6.15) '@tailwindcss/postcss': specifier: ^4.1.14 version: 4.1.14 @@ -60,6 +87,9 @@ importers: autoprefixer: specifier: ^10.4.21 version: 10.4.21(postcss@8.5.6) + baseline-browser-mapping: + specifier: ^2.9.6 + version: 2.9.6 eslint: specifier: ^9.36.0 version: 9.37.0(jiti@2.6.1) @@ -75,6 +105,9 @@ importers: postcss: specifier: ^8.5.6 version: 8.5.6 + storybook: + specifier: ^8.4.7 + version: 8.6.15 tailwindcss: specifier: ^4.1.14 version: 4.1.14 @@ -90,6 +123,9 @@ importers: packages: + '@adobe/css-tools@4.4.4': + resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==} + '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} @@ -165,6 +201,10 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/runtime@7.28.4': + resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} + engines: {node: '>=6.9.0'} + '@babel/template@7.27.2': resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} @@ -387,10 +427,23 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + '@isaacs/fs-minipass@4.0.1': resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} engines: {node: '>=18.0.0'} + '@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 + peerDependenciesMeta: + typescript: + optional: true + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -407,6 +460,12 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@mdx-js/react@3.1.1': + resolution: {integrity: sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==} + peerDependencies: + '@types/react': '>=16' + react: '>=16' + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -419,9 +478,22 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + '@rolldown/pluginutils@1.0.0-beta.38': resolution: {integrity: sha512-N/ICGKleNhA5nc9XXQG/kkKHJ7S55u0x0XUJbbkmdCnFuoRkM1Il12q9q0eX19+M7KKUEPw/daUPIRnxhcxAIw==} + '@rollup/pluginutils@5.3.0': + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/rollup-android-arm-eabi@4.52.4': resolution: {integrity: sha512-BTm2qKNnWIQ5auf4deoetINJm2JzvihvGb9R6K/ETwKLql/Bb3Eg2H1FBp1gUb4YGbydMA3jcmQTR73q7J+GAA==} cpu: [arm] @@ -543,6 +615,188 @@ packages: cpu: [x64] os: [win32] + '@storybook/addon-actions@8.6.14': + resolution: {integrity: sha512-mDQxylxGGCQSK7tJPkD144J8jWh9IU9ziJMHfB84PKpI/V5ZgqMDnpr2bssTrUaGDqU5e1/z8KcRF+Melhs9pQ==} + peerDependencies: + storybook: ^8.6.14 + + '@storybook/addon-backgrounds@8.6.14': + resolution: {integrity: sha512-l9xS8qWe5n4tvMwth09QxH2PmJbCctEvBAc1tjjRasAfrd69f7/uFK4WhwJAstzBTNgTc8VXI4w8ZR97i1sFbg==} + peerDependencies: + storybook: ^8.6.14 + + '@storybook/addon-controls@8.6.14': + resolution: {integrity: sha512-IiQpkNJdiRyA4Mq9mzjZlvQugL/aE7hNgVxBBGPiIZG6wb6Ht9hNnBYpap5ZXXFKV9p2qVI0FZK445ONmAa+Cw==} + peerDependencies: + storybook: ^8.6.14 + + '@storybook/addon-docs@8.6.14': + resolution: {integrity: sha512-Obpd0OhAF99JyU5pp5ci17YmpcQtMNgqW2pTXV8jAiiipWpwO++hNDeQmLmlSXB399XjtRDOcDVkoc7rc6JzdQ==} + peerDependencies: + storybook: ^8.6.14 + + '@storybook/addon-essentials@8.6.14': + resolution: {integrity: sha512-5ZZSHNaW9mXMOFkoPyc3QkoNGdJHETZydI62/OASR0lmPlJ1065TNigEo5dJddmZNn0/3bkE8eKMAzLnO5eIdA==} + peerDependencies: + storybook: ^8.6.14 + + '@storybook/addon-highlight@8.6.14': + resolution: {integrity: sha512-4H19OJlapkofiE9tM6K/vsepf4ir9jMm9T+zw5L85blJZxhKZIbJ6FO0TCG9PDc4iPt3L6+aq5B0X29s9zicNQ==} + peerDependencies: + storybook: ^8.6.14 + + '@storybook/addon-interactions@8.6.14': + resolution: {integrity: sha512-8VmElhm2XOjh22l/dO4UmXxNOolGhNiSpBcls2pqWSraVh4a670EyYBZsHpkXqfNHo2YgKyZN3C91+9zfH79qQ==} + peerDependencies: + storybook: ^8.6.14 + + '@storybook/addon-links@8.6.15': + resolution: {integrity: sha512-abRWnDPBTwnj6sQYfAjUnYCNuUQbrVLLOyuormbDUqOcvZ+OqehNYo4BKXx0/lz61h0A2dOD1IuDo40uWyYVFQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.6.15 + peerDependenciesMeta: + react: + optional: true + + '@storybook/addon-measure@8.6.14': + resolution: {integrity: sha512-1Tlyb72NX8aAqm6I6OICsUuGOP6hgnXcuFlXucyhKomPa6j3Eu2vKu561t/f0oGtAK2nO93Z70kVaEh5X+vaGw==} + peerDependencies: + storybook: ^8.6.14 + + '@storybook/addon-outline@8.6.14': + resolution: {integrity: sha512-CW857JvN6OxGWElqjlzJO2S69DHf+xO3WsEfT5mT3ZtIjmsvRDukdWfDU9bIYUFyA2lFvYjncBGjbK+I91XR7w==} + peerDependencies: + storybook: ^8.6.14 + + '@storybook/addon-toolbars@8.6.14': + resolution: {integrity: sha512-W/wEXT8h3VyZTVfWK/84BAcjAxTdtRiAkT2KAN0nbSHxxB5KEM1MjKpKu2upyzzMa3EywITqbfy4dP6lpkVTwQ==} + peerDependencies: + storybook: ^8.6.14 + + '@storybook/addon-viewport@8.6.14': + resolution: {integrity: sha512-gNzVQbMqRC+/4uQTPI2ZrWuRHGquTMZpdgB9DrD88VTEjNudP+J6r8myLfr2VvGksBbUMHkGHMXHuIhrBEnXYA==} + peerDependencies: + storybook: ^8.6.14 + + '@storybook/blocks@8.6.14': + resolution: {integrity: sha512-rBMHAfA39AGHgkrDze4RmsnQTMw1ND5fGWobr9pDcJdnDKWQWNRD7Nrlxj0gFlN3n4D9lEZhWGdFrCbku7FVAQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + storybook: ^8.6.14 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + + '@storybook/builder-vite@8.6.15': + resolution: {integrity: sha512-9Y05/ndZE6/eI7ZIUCD/QtH2htRIUs9j1gxE6oW0zRo9TJO1iqxfLNwgzd59KEkId7gdZxPei0l+LGTUGXYKRg==} + peerDependencies: + storybook: ^8.6.15 + vite: ^4.0.0 || ^5.0.0 || ^6.0.0 + + '@storybook/components@8.6.15': + resolution: {integrity: sha512-+9GVKXPEW8Kl9zvNSTm9+VrJtx/puMZiO7gxCML63nK4aTWJXHQr4t9YUoGammSBM3AV1JglsKm6dBgJEeCoiA==} + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + + '@storybook/core@8.6.15': + resolution: {integrity: sha512-VFpKcphNurJpSC4fpUfKL3GTXVoL53oytghGR30QIw5jKWwaT50HVbTyb41BLOUuZjmMhUQA8weiQEew6RX0gw==} + peerDependencies: + prettier: ^2 || ^3 + peerDependenciesMeta: + prettier: + optional: true + + '@storybook/csf-plugin@8.6.14': + resolution: {integrity: sha512-dErtc9teAuN+eelN8FojzFE635xlq9cNGGGEu0WEmMUQ4iJ8pingvBO1N8X3scz4Ry7KnxX++NNf3J3gpxS8qQ==} + peerDependencies: + storybook: ^8.6.14 + + '@storybook/csf-plugin@8.6.15': + resolution: {integrity: sha512-ZLz/mtOoE1Jj2lE4pK3U7MmYrv5+lot3mGtwxGb832tcABMc97j9O+reCVxZYc7DeFbBuuEdMT9rBL/O3kXYmw==} + peerDependencies: + storybook: ^8.6.15 + + '@storybook/global@5.0.0': + resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} + + '@storybook/icons@1.6.0': + resolution: {integrity: sha512-hcFZIjW8yQz8O8//2WTIXylm5Xsgc+lW9ISLgUk1xGmptIJQRdlhVIXCpSyLrQaaRiyhQRaVg7l3BD9S216BHw==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + + '@storybook/instrumenter@8.6.14': + resolution: {integrity: sha512-iG4MlWCcz1L7Yu8AwgsnfVAmMbvyRSk700Mfy2g4c8y5O+Cv1ejshE1LBBsCwHgkuqU0H4R0qu4g23+6UnUemQ==} + peerDependencies: + storybook: ^8.6.14 + + '@storybook/manager-api@8.6.15': + resolution: {integrity: sha512-ZOFtH821vFcwzECbFYFTKtSVO96Cvwwg45dMh3M/9bZIdN7klsloX7YNKw8OKvwE6XLFLsi2OvsNNcmTW6g88w==} + 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.6.15': + resolution: {integrity: sha512-oqsp8f7QekB9RzpDqOXZQcPPRXXd/mTsnZSdAAQB/pBVqUpC9h/y5hgovbYnJ6DWXcpODbMwH+wbJHZu5lvm+w==} + 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.6.14': + resolution: {integrity: sha512-0hixr3dOy3f3M+HBofp3jtMQMS+sqzjKNgl7Arfuj3fvjmyXOks/yGjDImySR4imPtEllvPZfhiQNlejheaInw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.6.14 + + '@storybook/react-dom-shim@8.6.15': + resolution: {integrity: sha512-m2trBmmd4iom1qwrp1F109zjRDc0cPaHYhDQxZR4Qqdz8pYevYJTlipDbH/K4NVB6Rn687RT29OoOPfJh6vkFA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.6.15 + + '@storybook/react-vite@8.6.15': + resolution: {integrity: sha512-9st+2NCemzzBwmindpDrRLEqYJmwwd2RnXMoj+Wt4Y1r4MGoRe1l837ciT2tmstaqekY2mVUSYd6879NzeeMYw==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@storybook/test': 8.6.15 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.6.15 + vite: ^4.0.0 || ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + '@storybook/test': + optional: true + + '@storybook/react@8.6.15': + resolution: {integrity: sha512-hdnhlJg+YkpPMOw2hvK7+mhdxAbguA+TFTIAzVV9CeUYoHDIZAsgeKVhRmgZGN20NGjRN5ZcwkplAMJnF9v+6w==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@storybook/test': 8.6.15 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.6.15 + typescript: '>= 4.2.x' + peerDependenciesMeta: + '@storybook/test': + optional: true + typescript: + optional: true + + '@storybook/test@8.6.14': + resolution: {integrity: sha512-GkPNBbbZmz+XRdrhMtkxPotCLOQ1BaGNp/gFZYdGDk2KmUWBKmvc5JxxOhtoXM2703IzNFlQHSSNnhrDZYuLlw==} + peerDependencies: + storybook: ^8.6.14 + + '@storybook/theming@8.6.15': + resolution: {integrity: sha512-dAbL0XOekyT6XsF49R6Etj3WxQ/LpdJDIswUUeHgVJ6/yd2opZOGbPxnwA3zlmAh1c0tvpPyhSDXxSG79u8e4Q==} + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + '@tailwindcss/node@4.1.14': resolution: {integrity: sha512-hpz+8vFk3Ic2xssIA3e01R6jkmsAhvkQdXlEbRTk6S10xDAtiQiM3FyvZVGsucefq764euO/b8WUW9ysLdThHw==} @@ -635,6 +889,23 @@ packages: '@tailwindcss/postcss@4.1.14': resolution: {integrity: sha512-BdMjIxy7HUNThK87C7BC8I1rE8BVUsfNQSI5siQ4JK3iIa3w0XyVvVL9SXLWO//CtYTcp1v7zci0fYwJOjB+Zg==} + '@testing-library/dom@10.4.0': + resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} + engines: {node: '>=18'} + + '@testing-library/jest-dom@6.5.0': + resolution: {integrity: sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + + '@testing-library/user-event@14.5.2': + resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} + engines: {node: '>=12', npm: '>=6'} + peerDependencies: + '@testing-library/dom': '>=7.21.4' + + '@types/aria-query@5.0.4': + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} + '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -647,12 +918,18 @@ packages: '@types/babel__traverse@7.28.0': resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} + '@types/doctrine@0.0.9': + resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} + '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/mdx@2.0.13': + resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} + '@types/node@24.8.0': resolution: {integrity: sha512-5x08bUtU8hfboMTrJ7mEO4CpepS9yBwAqcL52y86SWNmbPX8LVbNs3EP4cNrIZgdjk2NAlP2ahNihozpoZIxSg==} @@ -664,6 +941,12 @@ packages: '@types/react@19.2.2': resolution: {integrity: sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==} + '@types/resolve@1.20.6': + resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==} + + '@types/uuid@9.0.8': + resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} + '@typescript-eslint/eslint-plugin@8.46.1': resolution: {integrity: sha512-rUsLh8PXmBjdiPY+Emjz9NX2yHvhS11v0SR6xNJkm5GM1MO9ea/1GoDKlHHZGrOJclL/cZ2i/vRUYVtjRhrHVQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -729,6 +1012,24 @@ packages: peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + '@vitest/expect@2.0.5': + resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} + + '@vitest/pretty-format@2.0.5': + resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==} + + '@vitest/pretty-format@2.1.9': + resolution: {integrity: sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==} + + '@vitest/spy@2.0.5': + resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} + + '@vitest/utils@2.0.5': + resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} + + '@vitest/utils@2.1.9': + resolution: {integrity: sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==} + '@xmldom/xmldom@0.8.11': resolution: {integrity: sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==} engines: {node: '>=10.0.0'} @@ -746,16 +1047,47 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + + aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + ast-types@0.16.1: + resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} + engines: {node: '>=4'} + asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -766,6 +1098,10 @@ packages: peerDependencies: postcss: ^8.1.0 + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + axios@1.12.2: resolution: {integrity: sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==} @@ -775,10 +1111,14 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.8.16: - resolution: {integrity: sha512-OMu3BGQ4E7P1ErFsIPpbJh0qvDudM/UuJeHgkAvfWe+0HFJCXh+t/l8L6fVLR55RI/UbKrVLnAXZSVwd9ysWYw==} + baseline-browser-mapping@2.9.6: + resolution: {integrity: sha512-v9BVVpOTLB59C9E7aSnmIF8h7qRsFpx+A2nugVMTszEOMcfjlZMsXRm4LF23I3Z9AJxc8ANpIvzbzONoX9VJlg==} hasBin: true + better-opn@3.0.2: + resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} + engines: {node: '>=12.0.0'} + bluebird@3.4.7: resolution: {integrity: sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==} @@ -792,6 +1132,9 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} + browser-assert@1.2.1: + resolution: {integrity: sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==} + browserslist@4.26.3: resolution: {integrity: sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -801,6 +1144,14 @@ packages: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -808,10 +1159,22 @@ packages: caniuse-lite@1.0.30001750: resolution: {integrity: sha512-cuom0g5sdX6rw00qOoLNSFCJ9/mYIsuSOA+yzpDw8eopiFqcVwQvZHqov0vmEighRxX++cfC0Vg1G+1Iy/mSpQ==} + chai@5.3.3: + resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} + engines: {node: '>=18'} + + chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} + chownr@3.0.0: resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} engines: {node: '>=18'} @@ -841,6 +1204,13 @@ packages: resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} engines: {node: '>=18'} + copy-text-to-clipboard@3.2.2: + resolution: {integrity: sha512-T6SqyLd1iLuqPA90J5N4cTalrtovCySh58iiZDGJ6FGznbclKh4UI+FGacQSgFzwKG77W7XT5gwbVEbd9cIH1A==} + engines: {node: '>=12'} + + core-js@3.46.0: + resolution: {integrity: sha512-vDMm9B0xnqqZ8uSBpZ8sNtRtOdmfShrvT6h2TuQGLs0Is+cR0DYbj/KWP6ALVNbWPpqA/qPLoOuppJN07humpA==} + core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -848,6 +1218,9 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} + css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} @@ -860,13 +1233,29 @@ packages: supports-color: optional: true + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} + deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} @@ -874,6 +1263,16 @@ packages: dingbat-to-unicode@1.0.1: resolution: {integrity: sha512-98l0sW87ZT58pU4i61wa2OHwxbiYSbuxsCBozaVnYX2iCnr3bLM3fIes1/ej7h1YdOKuKt/MLs706TVnALA65w==} + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + + dom-accessibility-api@0.6.3: + resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + duck@0.1.12: resolution: {integrity: sha512-wkctla1O6VfP89gQ+J/yDesM0S7B7XLXjKGzXxMDVFg7uEn706niAtyYovKbyq1oT9YwDcly721/iUWoc8MVRg==} @@ -881,9 +1280,18 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + electron-to-chromium@1.5.237: resolution: {integrity: sha512-icUt1NvfhGLar5lSWH3tHNzablaA5js3HVHacQimfP8ViEBOQv+L7DKEuHdbTZ0SKCO1ogTJTIL1Gwk9S6Qvcg==} + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + enhanced-resolve@5.18.3: resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} engines: {node: '>=10.13.0'} @@ -904,6 +1312,11 @@ packages: resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} engines: {node: '>= 0.4'} + esbuild-register@3.6.0: + resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} + peerDependencies: + esbuild: '>=0.12 <1' + esbuild@0.25.11: resolution: {integrity: sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==} engines: {node: '>=18'} @@ -954,6 +1367,11 @@ packages: resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + esquery@1.6.0: resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} engines: {node: '>=0.10'} @@ -966,6 +1384,12 @@ packages: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -1023,6 +1447,14 @@ packages: debug: optional: true + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + form-data@4.0.4: resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} engines: {node: '>= 6'} @@ -1030,6 +1462,20 @@ packages: fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + framer-motion@12.23.26: + resolution: {integrity: sha512-cPcIhgR42xBn1Uj+PzOyheMtZ73H927+uWPDVhUMqxy8UHt6Okavb6xIz9J/phFUHUj0OncR6UvMfJTXoc/LKA==} + peerDependencies: + '@emotion/is-prop-valid': '*' + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/is-prop-valid': + optional: true + react: + optional: true + react-dom: + optional: true + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -1038,6 +1484,10 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + generator-function@2.0.1: + resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} + engines: {node: '>= 0.4'} + gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -1058,6 +1508,10 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} + glob@10.5.0: + resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} + hasBin: true + globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -1080,6 +1534,9 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + has-symbols@1.1.0: resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} @@ -1111,13 +1568,42 @@ packages: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + is-arguments@1.2.0: + resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} + engines: {node: '>= 0.4'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-function@1.1.2: + resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} + engines: {node: '>= 0.4'} + is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -1126,12 +1612,27 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + jiti@2.6.1: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true @@ -1143,6 +1644,10 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true + jsdoc-type-pratt-parser@4.8.0: + resolution: {integrity: sha512-iZ8Bdb84lWRuGHamRXFyML07r21pcwBrLkHEuHgEY5UbCouBwv7ECknDRKzsQIXMiqpPymqtIf8TC/shYKB5rw==} + engines: {node: '>=12.0.0'} + jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} @@ -1250,9 +1755,18 @@ packages: lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + lop@0.4.2: resolution: {integrity: sha512-RefILVDQ4DKoRZsJ4Pj22TxE3omDO47yFpkIBoDKzkqPRISs5U1cnAdg/5583YPkWPaLIYHOKRMQSvjFsO26cw==} + loupe@3.2.1: + resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -1261,6 +1775,14 @@ packages: peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + + magic-string@0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + engines: {node: '>=12'} + magic-string@0.30.19: resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} @@ -1269,10 +1791,16 @@ packages: engines: {node: '>=12.0.0'} hasBin: true + map-or-similar@1.5.0: + resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==} + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} + memoizerific@1.11.3: + resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} + merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -1289,6 +1817,10 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -1296,6 +1828,9 @@ packages: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} @@ -1304,9 +1839,18 @@ packages: resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} engines: {node: '>= 18'} + motion-dom@12.23.23: + resolution: {integrity: sha512-n5yolOs0TQQBRUFImrRfs/+6X4p3Q4n1dUEqt/H58Vx7OW6RF+foWEgmTVDhIWJIMXOuNNL0apKH2S16en9eiA==} + + motion-utils@12.23.6: + resolution: {integrity: sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ==} + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + mutation-observer@1.0.3: + resolution: {integrity: sha512-M/O/4rF2h776hV7qGMZUH3utZLO/jK7p8rnNgGkjKUw8zCGjRQPxB8z6+5l8+VjRUQ3dNYu4vjqXYLr+U8ZVNA==} + nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -1322,6 +1866,10 @@ packages: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + option@0.2.4: resolution: {integrity: sha512-pkEqbDyl8ou5cpq+VsnQbe/WlEy5qS7xPzMS1U55OCG9KPvwFD46zDbxQIj3egJSFc3D+XhYOPUzz49zQAVy7A==} @@ -1337,6 +1885,9 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} @@ -1356,6 +1907,17 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + pathval@2.0.1: + resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} + engines: {node: '>= 14.16'} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -1367,6 +1929,14 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} + polished@4.3.1: + resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==} + engines: {node: '>=10'} + + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} @@ -1378,9 +1948,17 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} @@ -1391,11 +1969,23 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + react-docgen-typescript@2.4.0: + resolution: {integrity: sha512-ZtAp5XTO5HRzQctjPU0ybY0RRCQO19X/8fxn3w7y2VVTUbGHDKULPTL4ky3vB05euSgG5NpALhEhDPvQ56wvXg==} + peerDependencies: + typescript: '>= 4.3.x' + + react-docgen@7.1.1: + resolution: {integrity: sha512-hlSJDQ2synMPKFZOsKo9Hi8WWZTC7POR8EmWvTSjow+VDgKzkmjQvFm2fk0tmRw+f0vTOIYKlarR0iL4996pdg==} + engines: {node: '>=16.14.0'} + react-dom@19.2.0: resolution: {integrity: sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==} peerDependencies: react: ^19.2.0 + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + react-refresh@0.17.0: resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} engines: {node: '>=0.10.0'} @@ -1424,10 +2014,23 @@ packages: readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + recast@0.23.11: + resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==} + engines: {node: '>= 4'} + + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} + resolve@1.22.11: + resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} + engines: {node: '>= 0.4'} + hasBin: true + reusify@1.1.0: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -1443,6 +2046,10 @@ packages: safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + scheduler@0.27.0: resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} @@ -1458,6 +2065,10 @@ packages: set-cookie-parser@2.7.1: resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} @@ -1469,16 +2080,61 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + storybook@8.6.15: + resolution: {integrity: sha512-Ob7DMlwWx8s7dMvcQ3xPc02TvUeralb+xX3oaPRk9wY9Hc6M1IBC/7cEoITkSmRS2v38DHubC+mtEKNc1u2gQg==} + hasBin: true + peerDependencies: + prettier: ^2 || ^3 + peerDependenciesMeta: + prettier: + optional: true + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.2: + resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + + strip-indent@4.1.1: + resolution: {integrity: sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==} + engines: {node: '>=12'} + strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -1487,6 +2143,13 @@ packages: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + tailwind-merge@3.4.0: + resolution: {integrity: sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g==} + tailwindcss@4.1.14: resolution: {integrity: sha512-b7pCxjGO98LnxVkKjaZSDeNuljC4ueKUddjENJOADtubtdo8llTaJy7HwBMeLNSSo2N5QIAgklslK1+Ir8r6CA==} @@ -1498,10 +2161,21 @@ packages: resolution: {integrity: sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==} engines: {node: '>=18'} + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} + tinyrainbow@1.2.0: + resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} + engines: {node: '>=14.0.0'} + + tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} + engines: {node: '>=14.0.0'} + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -1512,6 +2186,17 @@ packages: peerDependencies: typescript: '>=4.8.4' + ts-dedent@2.2.0: + resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} + engines: {node: '>=6.10'} + + tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -1534,6 +2219,10 @@ packages: undici-types@7.14.0: resolution: {integrity: sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==} + unplugin@1.16.1: + resolution: {integrity: sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==} + engines: {node: '>=14.0.0'} + update-browserslist-db@1.1.3: resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} hasBin: true @@ -1546,6 +2235,16 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + + vconsole@3.15.1: + resolution: {integrity: sha512-KH8XLdrq9T5YHJO/ixrjivHfmF2PC2CdVoK6RWZB4yftMykYIaXY1mxZYAic70vADM54kpMQF+dYmvl5NRNy1g==} + vite@7.1.10: resolution: {integrity: sha512-CmuvUBzVJ/e3HGxhg6cYk88NGgTnBoOo7ogtfJJ0fefUWAxN/WDSUa50o+oVBxuIhO8FoEZW0j2eW7sfjs5EtA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1586,6 +2285,13 @@ packages: yaml: optional: true + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + + which-typed-array@1.1.19: + resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} + engines: {node: '>= 0.4'} + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -1595,6 +2301,26 @@ packages: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + ws@8.18.3: + resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + xmlbuilder@10.1.1: resolution: {integrity: sha512-OyzrcFLL/nb6fMGHbiRDuPup9ljBycsdCypwuyg5AAHvyWzGfChJpCXMG88AGTIMFhGZ9RccFN1e6lhg3hkwKg==} engines: {node: '>=4.0'} @@ -1630,6 +2356,8 @@ packages: snapshots: + '@adobe/css-tools@4.4.4': {} + '@alloc/quick-lru@5.2.0': {} '@babel/code-frame@7.27.1': @@ -1721,6 +2449,8 @@ snapshots: '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 + '@babel/runtime@7.28.4': {} + '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 @@ -1879,10 +2609,28 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.2 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + '@isaacs/fs-minipass@4.0.1': dependencies: minipass: 7.1.2 + '@joshwooding/vite-plugin-react-docgen-typescript@0.5.0(typescript@5.9.3)(vite@7.1.10(@types/node@24.8.0)(jiti@2.6.1)(lightningcss@1.30.1))': + dependencies: + glob: 10.5.0 + magic-string: 0.27.0 + react-docgen-typescript: 2.4.0(typescript@5.9.3) + vite: 7.1.10(@types/node@24.8.0)(jiti@2.6.1)(lightningcss@1.30.1) + optionalDependencies: + typescript: 5.9.3 + '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -1902,6 +2650,12 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 + '@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0)': + dependencies: + '@types/mdx': 2.0.13 + '@types/react': 19.2.2 + react: 19.2.0 + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -1914,8 +2668,19 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.19.1 + '@pkgjs/parseargs@0.11.0': + optional: true + '@rolldown/pluginutils@1.0.0-beta.38': {} + '@rollup/pluginutils@5.3.0(rollup@4.52.4)': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.3 + optionalDependencies: + rollup: 4.52.4 + '@rollup/rollup-android-arm-eabi@4.52.4': optional: true @@ -1982,6 +2747,236 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.52.4': optional: true + '@storybook/addon-actions@8.6.14(storybook@8.6.15)': + dependencies: + '@storybook/global': 5.0.0 + '@types/uuid': 9.0.8 + dequal: 2.0.3 + polished: 4.3.1 + storybook: 8.6.15 + uuid: 9.0.1 + + '@storybook/addon-backgrounds@8.6.14(storybook@8.6.15)': + dependencies: + '@storybook/global': 5.0.0 + memoizerific: 1.11.3 + storybook: 8.6.15 + ts-dedent: 2.2.0 + + '@storybook/addon-controls@8.6.14(storybook@8.6.15)': + dependencies: + '@storybook/global': 5.0.0 + dequal: 2.0.3 + storybook: 8.6.15 + ts-dedent: 2.2.0 + + '@storybook/addon-docs@8.6.14(@types/react@19.2.2)(storybook@8.6.15)': + dependencies: + '@mdx-js/react': 3.1.1(@types/react@19.2.2)(react@19.2.0) + '@storybook/blocks': 8.6.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@8.6.15) + '@storybook/csf-plugin': 8.6.14(storybook@8.6.15) + '@storybook/react-dom-shim': 8.6.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@8.6.15) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + storybook: 8.6.15 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - '@types/react' + + '@storybook/addon-essentials@8.6.14(@types/react@19.2.2)(storybook@8.6.15)': + dependencies: + '@storybook/addon-actions': 8.6.14(storybook@8.6.15) + '@storybook/addon-backgrounds': 8.6.14(storybook@8.6.15) + '@storybook/addon-controls': 8.6.14(storybook@8.6.15) + '@storybook/addon-docs': 8.6.14(@types/react@19.2.2)(storybook@8.6.15) + '@storybook/addon-highlight': 8.6.14(storybook@8.6.15) + '@storybook/addon-measure': 8.6.14(storybook@8.6.15) + '@storybook/addon-outline': 8.6.14(storybook@8.6.15) + '@storybook/addon-toolbars': 8.6.14(storybook@8.6.15) + '@storybook/addon-viewport': 8.6.14(storybook@8.6.15) + storybook: 8.6.15 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - '@types/react' + + '@storybook/addon-highlight@8.6.14(storybook@8.6.15)': + dependencies: + '@storybook/global': 5.0.0 + storybook: 8.6.15 + + '@storybook/addon-interactions@8.6.14(storybook@8.6.15)': + dependencies: + '@storybook/global': 5.0.0 + '@storybook/instrumenter': 8.6.14(storybook@8.6.15) + '@storybook/test': 8.6.14(storybook@8.6.15) + polished: 4.3.1 + storybook: 8.6.15 + ts-dedent: 2.2.0 + + '@storybook/addon-links@8.6.15(react@19.2.0)(storybook@8.6.15)': + dependencies: + '@storybook/global': 5.0.0 + storybook: 8.6.15 + ts-dedent: 2.2.0 + optionalDependencies: + react: 19.2.0 + + '@storybook/addon-measure@8.6.14(storybook@8.6.15)': + dependencies: + '@storybook/global': 5.0.0 + storybook: 8.6.15 + tiny-invariant: 1.3.3 + + '@storybook/addon-outline@8.6.14(storybook@8.6.15)': + dependencies: + '@storybook/global': 5.0.0 + storybook: 8.6.15 + ts-dedent: 2.2.0 + + '@storybook/addon-toolbars@8.6.14(storybook@8.6.15)': + dependencies: + storybook: 8.6.15 + + '@storybook/addon-viewport@8.6.14(storybook@8.6.15)': + dependencies: + memoizerific: 1.11.3 + storybook: 8.6.15 + + '@storybook/blocks@8.6.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@8.6.15)': + dependencies: + '@storybook/icons': 1.6.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + storybook: 8.6.15 + ts-dedent: 2.2.0 + optionalDependencies: + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + + '@storybook/builder-vite@8.6.15(storybook@8.6.15)(vite@7.1.10(@types/node@24.8.0)(jiti@2.6.1)(lightningcss@1.30.1))': + dependencies: + '@storybook/csf-plugin': 8.6.15(storybook@8.6.15) + browser-assert: 1.2.1 + storybook: 8.6.15 + ts-dedent: 2.2.0 + vite: 7.1.10(@types/node@24.8.0)(jiti@2.6.1)(lightningcss@1.30.1) + + '@storybook/components@8.6.15(storybook@8.6.15)': + dependencies: + storybook: 8.6.15 + + '@storybook/core@8.6.15(storybook@8.6.15)': + dependencies: + '@storybook/theming': 8.6.15(storybook@8.6.15) + better-opn: 3.0.2 + browser-assert: 1.2.1 + esbuild: 0.25.11 + esbuild-register: 3.6.0(esbuild@0.25.11) + jsdoc-type-pratt-parser: 4.8.0 + process: 0.11.10 + recast: 0.23.11 + semver: 7.7.3 + util: 0.12.5 + ws: 8.18.3 + transitivePeerDependencies: + - bufferutil + - storybook + - supports-color + - utf-8-validate + + '@storybook/csf-plugin@8.6.14(storybook@8.6.15)': + dependencies: + storybook: 8.6.15 + unplugin: 1.16.1 + + '@storybook/csf-plugin@8.6.15(storybook@8.6.15)': + dependencies: + storybook: 8.6.15 + unplugin: 1.16.1 + + '@storybook/global@5.0.0': {} + + '@storybook/icons@1.6.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + + '@storybook/instrumenter@8.6.14(storybook@8.6.15)': + dependencies: + '@storybook/global': 5.0.0 + '@vitest/utils': 2.1.9 + storybook: 8.6.15 + + '@storybook/manager-api@8.6.15(storybook@8.6.15)': + dependencies: + storybook: 8.6.15 + + '@storybook/preview-api@8.6.15(storybook@8.6.15)': + dependencies: + storybook: 8.6.15 + + '@storybook/react-dom-shim@8.6.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@8.6.15)': + dependencies: + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + storybook: 8.6.15 + + '@storybook/react-dom-shim@8.6.15(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@8.6.15)': + dependencies: + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + storybook: 8.6.15 + + '@storybook/react-vite@8.6.15(@storybook/test@8.6.14(storybook@8.6.15))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rollup@4.52.4)(storybook@8.6.15)(typescript@5.9.3)(vite@7.1.10(@types/node@24.8.0)(jiti@2.6.1)(lightningcss@1.30.1))': + dependencies: + '@joshwooding/vite-plugin-react-docgen-typescript': 0.5.0(typescript@5.9.3)(vite@7.1.10(@types/node@24.8.0)(jiti@2.6.1)(lightningcss@1.30.1)) + '@rollup/pluginutils': 5.3.0(rollup@4.52.4) + '@storybook/builder-vite': 8.6.15(storybook@8.6.15)(vite@7.1.10(@types/node@24.8.0)(jiti@2.6.1)(lightningcss@1.30.1)) + '@storybook/react': 8.6.15(@storybook/test@8.6.14(storybook@8.6.15))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@8.6.15)(typescript@5.9.3) + find-up: 5.0.0 + magic-string: 0.30.19 + react: 19.2.0 + react-docgen: 7.1.1 + react-dom: 19.2.0(react@19.2.0) + resolve: 1.22.11 + storybook: 8.6.15 + tsconfig-paths: 4.2.0 + vite: 7.1.10(@types/node@24.8.0)(jiti@2.6.1)(lightningcss@1.30.1) + optionalDependencies: + '@storybook/test': 8.6.14(storybook@8.6.15) + transitivePeerDependencies: + - rollup + - supports-color + - typescript + + '@storybook/react@8.6.15(@storybook/test@8.6.14(storybook@8.6.15))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@8.6.15)(typescript@5.9.3)': + dependencies: + '@storybook/components': 8.6.15(storybook@8.6.15) + '@storybook/global': 5.0.0 + '@storybook/manager-api': 8.6.15(storybook@8.6.15) + '@storybook/preview-api': 8.6.15(storybook@8.6.15) + '@storybook/react-dom-shim': 8.6.15(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@8.6.15) + '@storybook/theming': 8.6.15(storybook@8.6.15) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + storybook: 8.6.15 + optionalDependencies: + '@storybook/test': 8.6.14(storybook@8.6.15) + typescript: 5.9.3 + + '@storybook/test@8.6.14(storybook@8.6.15)': + dependencies: + '@storybook/global': 5.0.0 + '@storybook/instrumenter': 8.6.14(storybook@8.6.15) + '@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.6.15 + + '@storybook/theming@8.6.15(storybook@8.6.15)': + dependencies: + storybook: 8.6.15 + '@tailwindcss/node@4.1.14': dependencies: '@jridgewell/remapping': 2.3.5 @@ -2054,6 +3049,33 @@ snapshots: postcss: 8.5.6 tailwindcss: 4.1.14 + '@testing-library/dom@10.4.0': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/runtime': 7.28.4 + '@types/aria-query': 5.0.4 + aria-query: 5.3.0 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 + + '@testing-library/jest-dom@6.5.0': + dependencies: + '@adobe/css-tools': 4.4.4 + aria-query: 5.3.2 + chalk: 3.0.0 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + lodash: 4.17.21 + redent: 3.0.0 + + '@testing-library/user-event@14.5.2(@testing-library/dom@10.4.0)': + dependencies: + '@testing-library/dom': 10.4.0 + + '@types/aria-query@5.0.4': {} + '@types/babel__core@7.20.5': dependencies: '@babel/parser': 7.28.4 @@ -2075,10 +3097,14 @@ snapshots: dependencies: '@babel/types': 7.28.4 + '@types/doctrine@0.0.9': {} + '@types/estree@1.0.8': {} '@types/json-schema@7.0.15': {} + '@types/mdx@2.0.13': {} + '@types/node@24.8.0': dependencies: undici-types: 7.14.0 @@ -2091,6 +3117,10 @@ snapshots: dependencies: csstype: 3.1.3 + '@types/resolve@1.20.6': {} + + '@types/uuid@9.0.8': {} + '@typescript-eslint/eslint-plugin@8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.1 @@ -2196,6 +3226,38 @@ snapshots: transitivePeerDependencies: - supports-color + '@vitest/expect@2.0.5': + dependencies: + '@vitest/spy': 2.0.5 + '@vitest/utils': 2.0.5 + chai: 5.3.3 + tinyrainbow: 1.2.0 + + '@vitest/pretty-format@2.0.5': + dependencies: + tinyrainbow: 1.2.0 + + '@vitest/pretty-format@2.1.9': + dependencies: + tinyrainbow: 1.2.0 + + '@vitest/spy@2.0.5': + dependencies: + tinyspy: 3.0.2 + + '@vitest/utils@2.0.5': + dependencies: + '@vitest/pretty-format': 2.0.5 + estree-walker: 3.0.3 + loupe: 3.2.1 + tinyrainbow: 1.2.0 + + '@vitest/utils@2.1.9': + dependencies: + '@vitest/pretty-format': 2.1.9 + loupe: 3.2.1 + tinyrainbow: 1.2.0 + '@xmldom/xmldom@0.8.11': {} acorn-jsx@5.3.2(acorn@8.15.0): @@ -2211,16 +3273,36 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 + ansi-regex@5.0.1: {} + + ansi-regex@6.2.2: {} + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 + ansi-styles@5.2.0: {} + + ansi-styles@6.2.3: {} + argparse@1.0.10: dependencies: sprintf-js: 1.0.3 argparse@2.0.1: {} + aria-query@5.3.0: + dependencies: + dequal: 2.0.3 + + aria-query@5.3.2: {} + + assertion-error@2.0.1: {} + + ast-types@0.16.1: + dependencies: + tslib: 2.8.1 + asynckit@0.4.0: {} autoprefixer@10.4.21(postcss@8.5.6): @@ -2233,6 +3315,10 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 + axios@1.12.2: dependencies: follow-redirects: 1.15.11 @@ -2245,7 +3331,11 @@ snapshots: base64-js@1.5.1: {} - baseline-browser-mapping@2.8.16: {} + baseline-browser-mapping@2.9.6: {} + + better-opn@3.0.2: + dependencies: + open: 8.4.2 bluebird@3.4.7: {} @@ -2262,9 +3352,11 @@ snapshots: dependencies: fill-range: 7.1.1 + browser-assert@1.2.1: {} + browserslist@4.26.3: dependencies: - baseline-browser-mapping: 2.8.16 + baseline-browser-mapping: 2.9.6 caniuse-lite: 1.0.30001750 electron-to-chromium: 1.5.237 node-releases: 2.0.23 @@ -2275,15 +3367,42 @@ snapshots: es-errors: 1.3.0 function-bind: 1.1.2 + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + callsites@3.1.0: {} caniuse-lite@1.0.30001750: {} + chai@5.3.3: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.2.1 + pathval: 2.0.1 + + chalk@3.0.0: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 + check-error@2.1.1: {} + chownr@3.0.0: {} clsx@2.1.1: {} @@ -2304,6 +3423,10 @@ snapshots: cookie@1.0.2: {} + copy-text-to-clipboard@3.2.2: {} + + core-js@3.46.0: {} + core-util-is@1.0.3: {} cross-spawn@7.0.6: @@ -2312,20 +3435,42 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 + css.escape@1.5.1: {} + csstype@3.1.3: {} debug@4.4.3: dependencies: ms: 2.1.3 + deep-eql@5.0.2: {} + deep-is@0.1.4: {} + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-lazy-prop@2.0.0: {} + delayed-stream@1.0.0: {} + dequal@2.0.3: {} + detect-libc@2.1.2: {} dingbat-to-unicode@1.0.1: {} + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + + dom-accessibility-api@0.5.16: {} + + dom-accessibility-api@0.6.3: {} + duck@0.1.12: dependencies: underscore: 1.13.7 @@ -2336,8 +3481,14 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 + eastasianwidth@0.2.0: {} + electron-to-chromium@1.5.237: {} + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + enhanced-resolve@5.18.3: dependencies: graceful-fs: 4.2.11 @@ -2358,6 +3509,13 @@ snapshots: has-tostringtag: 1.0.2 hasown: 2.0.2 + esbuild-register@3.6.0(esbuild@0.25.11): + dependencies: + debug: 4.4.3 + esbuild: 0.25.11 + transitivePeerDependencies: + - supports-color + esbuild@0.25.11: optionalDependencies: '@esbuild/aix-ppc64': 0.25.11 @@ -2456,6 +3614,8 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.15.0) eslint-visitor-keys: 4.2.1 + esprima@4.0.1: {} + esquery@1.6.0: dependencies: estraverse: 5.3.0 @@ -2466,6 +3626,12 @@ snapshots: estraverse@5.3.0: {} + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.8 + esutils@2.0.3: {} fast-deep-equal@3.1.3: {} @@ -2512,6 +3678,15 @@ snapshots: follow-redirects@1.15.11: {} + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + form-data@4.0.4: dependencies: asynckit: 0.4.0 @@ -2522,11 +3697,22 @@ snapshots: fraction.js@4.3.7: {} + framer-motion@12.23.26(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + dependencies: + motion-dom: 12.23.23 + motion-utils: 12.23.6 + tslib: 2.8.1 + optionalDependencies: + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + fsevents@2.3.3: optional: true function-bind@1.1.2: {} + generator-function@2.0.1: {} + gensync@1.0.0-beta.2: {} get-intrinsic@1.3.0: @@ -2555,6 +3741,15 @@ snapshots: dependencies: is-glob: 4.0.3 + glob@10.5.0: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + globals@14.0.0: {} globals@16.4.0: {} @@ -2567,6 +3762,10 @@ snapshots: has-flag@4.0.0: {} + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + has-symbols@1.1.0: {} has-tostringtag@1.0.2: @@ -2590,20 +3789,66 @@ snapshots: imurmurhash@0.1.4: {} + indent-string@4.0.0: {} + inherits@2.0.4: {} + is-arguments@1.2.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-callable@1.2.7: {} + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-docker@2.2.1: {} + is-extglob@2.1.1: {} + is-fullwidth-code-point@3.0.0: {} + + is-generator-function@1.1.2: + dependencies: + call-bound: 1.0.4 + generator-function: 2.0.1 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + is-glob@4.0.3: dependencies: is-extglob: 2.1.1 is-number@7.0.0: {} + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.19 + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + isarray@1.0.0: {} isexe@2.0.0: {} + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + jiti@2.6.1: {} js-tokens@4.0.0: {} @@ -2612,6 +3857,8 @@ snapshots: dependencies: argparse: 2.0.1 + jsdoc-type-pratt-parser@4.8.0: {} + jsesc@3.1.0: {} json-buffer@3.0.1: {} @@ -2693,12 +3940,18 @@ snapshots: lodash.merge@4.6.2: {} + lodash@4.17.21: {} + lop@0.4.2: dependencies: duck: 0.1.12 option: 0.2.4 underscore: 1.13.7 + loupe@3.2.1: {} + + lru-cache@10.4.3: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -2707,6 +3960,12 @@ snapshots: dependencies: react: 19.2.0 + lz-string@1.5.0: {} + + magic-string@0.27.0: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + magic-string@0.30.19: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -2724,8 +3983,14 @@ snapshots: underscore: 1.13.7 xmlbuilder: 10.1.1 + map-or-similar@1.5.0: {} + math-intrinsics@1.1.0: {} + memoizerific@1.11.3: + dependencies: + map-or-similar: 1.5.0 + merge2@1.4.1: {} micromatch@4.0.8: @@ -2739,6 +4004,8 @@ snapshots: dependencies: mime-db: 1.52.0 + min-indent@1.0.1: {} + minimatch@3.1.2: dependencies: brace-expansion: 1.1.12 @@ -2747,14 +4014,24 @@ snapshots: dependencies: brace-expansion: 2.0.2 + minimist@1.2.8: {} + minipass@7.1.2: {} minizlib@3.1.0: dependencies: minipass: 7.1.2 + motion-dom@12.23.23: + dependencies: + motion-utils: 12.23.6 + + motion-utils@12.23.6: {} + ms@2.1.3: {} + mutation-observer@1.0.3: {} + nanoid@3.3.11: {} natural-compare@1.4.0: {} @@ -2763,6 +4040,12 @@ snapshots: normalize-range@0.1.2: {} + open@8.4.2: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + option@0.2.4: {} optionator@0.9.4: @@ -2782,6 +4065,8 @@ snapshots: dependencies: p-limit: 3.1.0 + package-json-from-dist@1.0.1: {} + pako@1.0.11: {} parent-module@1.0.1: @@ -2794,12 +4079,27 @@ snapshots: path-key@3.1.1: {} + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + pathval@2.0.1: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} picomatch@4.0.3: {} + polished@4.3.1: + dependencies: + '@babel/runtime': 7.28.4 + + possible-typed-array-names@1.1.0: {} + postcss-value-parser@4.2.0: {} postcss@8.5.6: @@ -2810,19 +4110,48 @@ snapshots: prelude-ls@1.2.1: {} + pretty-format@27.5.1: + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + process-nextick-args@2.0.1: {} + process@0.11.10: {} + proxy-from-env@1.1.0: {} punycode@2.3.1: {} queue-microtask@1.2.3: {} + react-docgen-typescript@2.4.0(typescript@5.9.3): + dependencies: + typescript: 5.9.3 + + react-docgen@7.1.1: + dependencies: + '@babel/core': 7.28.4 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.28.0 + '@types/doctrine': 0.0.9 + '@types/resolve': 1.20.6 + doctrine: 3.0.0 + resolve: 1.22.11 + strip-indent: 4.1.1 + transitivePeerDependencies: + - supports-color + react-dom@19.2.0(react@19.2.0): dependencies: react: 19.2.0 scheduler: 0.27.0 + react-is@17.0.2: {} + react-refresh@0.17.0: {} react-router-dom@7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0): @@ -2851,8 +4180,27 @@ snapshots: string_decoder: 1.1.1 util-deprecate: 1.0.2 + recast@0.23.11: + dependencies: + ast-types: 0.16.1 + esprima: 4.0.1 + source-map: 0.6.1 + tiny-invariant: 1.3.3 + tslib: 2.8.1 + + redent@3.0.0: + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + resolve-from@4.0.0: {} + resolve@1.22.11: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + reusify@1.1.0: {} rollup@4.52.4: @@ -2889,6 +4237,12 @@ snapshots: safe-buffer@5.1.2: {} + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + scheduler@0.27.0: {} semver@6.3.1: {} @@ -2897,6 +4251,15 @@ snapshots: set-cookie-parser@2.7.1: {} + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + setimmediate@1.0.5: {} shebang-command@2.0.0: @@ -2905,20 +4268,64 @@ snapshots: shebang-regex@3.0.0: {} + signal-exit@4.1.0: {} + source-map-js@1.2.1: {} + source-map@0.6.1: {} + sprintf-js@1.0.3: {} + storybook@8.6.15: + dependencies: + '@storybook/core': 8.6.15(storybook@8.6.15) + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.2 + string_decoder@1.1.1: dependencies: safe-buffer: 5.1.2 + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.2: + dependencies: + ansi-regex: 6.2.2 + + strip-bom@3.0.0: {} + + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 + + strip-indent@4.1.1: {} + strip-json-comments@3.1.1: {} supports-color@7.2.0: dependencies: has-flag: 4.0.0 + supports-preserve-symlinks-flag@1.0.0: {} + + tailwind-merge@3.4.0: {} + tailwindcss@4.1.14: {} tapable@2.3.0: {} @@ -2931,11 +4338,17 @@ snapshots: minizlib: 3.1.0 yallist: 5.0.0 + tiny-invariant@1.3.3: {} + tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 + tinyrainbow@1.2.0: {} + + tinyspy@3.0.2: {} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -2944,6 +4357,16 @@ snapshots: dependencies: typescript: 5.9.3 + ts-dedent@2.2.0: {} + + tsconfig-paths@4.2.0: + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tslib@2.8.1: {} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 @@ -2965,6 +4388,11 @@ snapshots: undici-types@7.14.0: {} + unplugin@1.16.1: + dependencies: + acorn: 8.15.0 + webpack-virtual-modules: 0.6.2 + update-browserslist-db@1.1.3(browserslist@4.26.3): dependencies: browserslist: 4.26.3 @@ -2977,6 +4405,23 @@ snapshots: util-deprecate@1.0.2: {} + util@0.12.5: + dependencies: + inherits: 2.0.4 + is-arguments: 1.2.0 + is-generator-function: 1.1.2 + is-typed-array: 1.1.15 + which-typed-array: 1.1.19 + + uuid@9.0.1: {} + + vconsole@3.15.1: + dependencies: + '@babel/runtime': 7.28.4 + copy-text-to-clipboard: 3.2.2 + core-js: 3.46.0 + mutation-observer: 1.0.3 + vite@7.1.10(@types/node@24.8.0)(jiti@2.6.1)(lightningcss@1.30.1): dependencies: esbuild: 0.25.11 @@ -2991,12 +4436,38 @@ snapshots: jiti: 2.6.1 lightningcss: 1.30.1 + webpack-virtual-modules@0.6.2: {} + + which-typed-array@1.1.19: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + which@2.0.2: dependencies: isexe: 2.0.0 word-wrap@1.2.5: {} + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.3 + string-width: 5.1.2 + strip-ansi: 7.1.2 + + ws@8.18.3: {} + xmlbuilder@10.1.1: {} yallist@3.1.1: {} diff --git a/public/fonts/SourceHanSerifCN-Bold-2.otf b/public/fonts/SourceHanSerifCN-Bold-2.otf new file mode 100644 index 0000000..28e08c5 Binary files /dev/null and b/public/fonts/SourceHanSerifCN-Bold-2.otf differ diff --git a/public/video/5_alpha channel.webm b/public/video/5_alpha channel.webm deleted file mode 100644 index 79c4ca1..0000000 Binary files a/public/video/5_alpha channel.webm and /dev/null differ diff --git a/public/word/~$同心育新农,山海携手促共富.docx b/public/word/~$同心育新农,山海携手促共富.docx deleted file mode 100644 index ca3b011..0000000 Binary files a/public/word/~$同心育新农,山海携手促共富.docx and /dev/null differ diff --git a/public/word/~$师资助力乡村振兴新发展.docx b/public/word/~$师资助力乡村振兴新发展.docx deleted file mode 100644 index ca3b011..0000000 Binary files a/public/word/~$师资助力乡村振兴新发展.docx and /dev/null differ diff --git a/public/word/~$浦江畔到雪域高原 沪青协作赋能果洛“土特产”出圈——对口支援新实践:从“输血”到“造血”的数智帮扶.docx b/public/word/~$浦江畔到雪域高原 沪青协作赋能果洛“土特产”出圈——对口支援新实践:从“输血”到“造血”的数智帮扶.docx deleted file mode 100644 index ca3b011..0000000 Binary files a/public/word/~$浦江畔到雪域高原 沪青协作赋能果洛“土特产”出圈——对口支援新实践:从“输血”到“造血”的数智帮扶.docx and /dev/null differ diff --git a/public/word/~$融合育新苗 直播赋能助振兴 ——智慧商旅系学子赴浦江边检站开展助农直播实践.docx b/public/word/~$融合育新苗 直播赋能助振兴 ——智慧商旅系学子赴浦江边检站开展助农直播实践.docx deleted file mode 100644 index ca3b011..0000000 Binary files a/public/word/~$融合育新苗 直播赋能助振兴 ——智慧商旅系学子赴浦江边检站开展助农直播实践.docx and /dev/null differ diff --git a/public/word/【10月16日】工作室活动情况记录.docx b/public/word/【10月16日】工作室活动情况记录.docx deleted file mode 100644 index 148c23d..0000000 Binary files a/public/word/【10月16日】工作室活动情况记录.docx and /dev/null differ diff --git a/public/word/【10月18日】工作室活动情况记录.docx b/public/word/【10月18日】工作室活动情况记录.docx deleted file mode 100644 index a2e4961..0000000 Binary files a/public/word/【10月18日】工作室活动情况记录.docx and /dev/null differ diff --git a/public/word/【10月8日】工作室活动情况记录.docx b/public/word/【10月8日】工作室活动情况记录.docx deleted file mode 100644 index 201c148..0000000 Binary files a/public/word/【10月8日】工作室活动情况记录.docx and /dev/null differ diff --git a/public/word/【11月14日】工作室活动情况记录.docx b/public/word/【11月14日】工作室活动情况记录.docx deleted file mode 100644 index bacad43..0000000 Binary files a/public/word/【11月14日】工作室活动情况记录.docx and /dev/null differ diff --git a/public/word/【11月15日】工作室活动情况记录.docx b/public/word/【11月15日】工作室活动情况记录.docx deleted file mode 100644 index 3ecef83..0000000 Binary files a/public/word/【11月15日】工作室活动情况记录.docx and /dev/null differ diff --git a/public/word/【11月6日】工作室活动情况记录.docx b/public/word/【11月6日】工作室活动情况记录.docx deleted file mode 100644 index 2658a20..0000000 Binary files a/public/word/【11月6日】工作室活动情况记录.docx and /dev/null differ diff --git a/public/word/【7月2日】工作室活动情况记录.docx b/public/word/【7月2日】工作室活动情况记录.docx deleted file mode 100644 index 4fe14f7..0000000 Binary files a/public/word/【7月2日】工作室活动情况记录.docx and /dev/null differ diff --git a/public/word/与桂同心育新农,山海携手促共富.docx b/public/word/与桂同心育新农,山海携手促共富.docx deleted file mode 100644 index e13c69c..0000000 Binary files a/public/word/与桂同心育新农,山海携手促共富.docx and /dev/null differ diff --git a/public/word/产教融合育新苗 直播赋能助振兴 ——智慧商旅系学子赴浦江边检站开展助农直播实践.docx b/public/word/产教融合育新苗 直播赋能助振兴 ——智慧商旅系学子赴浦江边检站开展助农直播实践.docx deleted file mode 100644 index 1f145d1..0000000 Binary files a/public/word/产教融合育新苗 直播赋能助振兴 ——智慧商旅系学子赴浦江边检站开展助农直播实践.docx and /dev/null differ diff --git a/public/word/从黄浦江畔到雪域高原 沪青协作赋能果洛“土特产”出圈——对口支援新实践:从“输血”到“造血”的数智帮扶.docx b/public/word/从黄浦江畔到雪域高原 沪青协作赋能果洛“土特产”出圈——对口支援新实践:从“输血”到“造血”的数智帮扶.docx deleted file mode 100644 index 41a8e16..0000000 Binary files a/public/word/从黄浦江畔到雪域高原 沪青协作赋能果洛“土特产”出圈——对口支援新实践:从“输血”到“造血”的数智帮扶.docx and /dev/null differ diff --git a/public/word/南湖师资助力乡村振兴新发展.docx b/public/word/南湖师资助力乡村振兴新发展.docx deleted file mode 100644 index a7dc815..0000000 Binary files a/public/word/南湖师资助力乡村振兴新发展.docx and /dev/null differ diff --git a/public/word/政校携手,口岸直播助侗乡——南湖学子浦江口岸助农实践出新彩.docx b/public/word/政校携手,口岸直播助侗乡——南湖学子浦江口岸助农实践出新彩.docx deleted file mode 100644 index 4330190..0000000 Binary files a/public/word/政校携手,口岸直播助侗乡——南湖学子浦江口岸助农实践出新彩.docx and /dev/null differ diff --git a/src/App.tsx b/src/App.tsx index fffd19c..d99c513 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,28 +1,43 @@ import { RouterProvider } from "react-router-dom"; +import { Suspense } from "react"; import router from "./router"; -import { usePageScale } from "./hooks/usePageScale"; -import { ScaleProvider } from "./contexts/ScaleContext"; +import { ScaleProvider, useScale } from "./contexts/ScaleContext"; +import { RotateHint } from "./components/RotateHint"; -function App() { - const { scaleStyle, scale, offsetX, offsetY, DESIGN_WIDTH, DESIGN_HEIGHT } = - usePageScale(); +/** + * 应用内容组件 + * 使用 useScale 获取缩放样式 + */ +function AppContent() { + const { scaleStyle } = useScale(); return ( - -
-
- + <> +
+
+ Loading...
}> + +
+ + + ); +} + +/** + * 应用根组件 + * ScaleProvider 自动处理所有缩放逻辑 + */ +function App() { + return ( + + ); } diff --git a/src/assets/images/chenyun/place1/场景1.png b/src/assets/images/chenyun/place1/场景1.png new file mode 100644 index 0000000..493d4ee Binary files /dev/null and b/src/assets/images/chenyun/place1/场景1.png differ diff --git a/src/assets/images/chenyun/place1/场景1展品1.png b/src/assets/images/chenyun/place1/场景1展品1.png new file mode 100644 index 0000000..24fe02a Binary files /dev/null and b/src/assets/images/chenyun/place1/场景1展品1.png differ diff --git a/src/assets/images/chenyun/place1/场景1展品2.png b/src/assets/images/chenyun/place1/场景1展品2.png new file mode 100644 index 0000000..2b1f776 Binary files /dev/null and b/src/assets/images/chenyun/place1/场景1展品2.png differ diff --git a/src/assets/images/chenyun/place1/场景1展品3.png b/src/assets/images/chenyun/place1/场景1展品3.png new file mode 100644 index 0000000..91f4a82 Binary files /dev/null and b/src/assets/images/chenyun/place1/场景1展品3.png differ diff --git a/src/assets/images/chenyun/place1/场景1展品4.png b/src/assets/images/chenyun/place1/场景1展品4.png new file mode 100644 index 0000000..c02643a Binary files /dev/null and b/src/assets/images/chenyun/place1/场景1展品4.png differ diff --git a/src/assets/images/chenyun/place1/继续前进.png b/src/assets/images/chenyun/place1/继续前进.png new file mode 100644 index 0000000..8d18ad0 Binary files /dev/null and b/src/assets/images/chenyun/place1/继续前进.png differ diff --git a/src/assets/images/chenyun/place2/场景2.png b/src/assets/images/chenyun/place2/场景2.png new file mode 100644 index 0000000..0baff24 Binary files /dev/null and b/src/assets/images/chenyun/place2/场景2.png differ diff --git a/src/assets/images/chenyun/place2/场景2展品1.png b/src/assets/images/chenyun/place2/场景2展品1.png new file mode 100644 index 0000000..e4ecba4 Binary files /dev/null and b/src/assets/images/chenyun/place2/场景2展品1.png differ diff --git a/src/assets/images/chenyun/place2/场景2展品2.png b/src/assets/images/chenyun/place2/场景2展品2.png new file mode 100644 index 0000000..085945b Binary files /dev/null and b/src/assets/images/chenyun/place2/场景2展品2.png differ diff --git a/src/assets/images/chenyun/place2/继续前进2.png b/src/assets/images/chenyun/place2/继续前进2.png new file mode 100644 index 0000000..8a65028 Binary files /dev/null and b/src/assets/images/chenyun/place2/继续前进2.png differ diff --git a/src/assets/images/chenyun/place3/场景3.png b/src/assets/images/chenyun/place3/场景3.png new file mode 100644 index 0000000..1311f79 Binary files /dev/null and b/src/assets/images/chenyun/place3/场景3.png differ diff --git a/src/assets/images/chenyun/place3/场景3展品1.png b/src/assets/images/chenyun/place3/场景3展品1.png new file mode 100644 index 0000000..2c91d97 Binary files /dev/null and b/src/assets/images/chenyun/place3/场景3展品1.png differ diff --git a/src/assets/images/chenyun/place3/场景3展品2.png b/src/assets/images/chenyun/place3/场景3展品2.png new file mode 100644 index 0000000..831e60b Binary files /dev/null and b/src/assets/images/chenyun/place3/场景3展品2.png differ diff --git a/src/assets/images/chenyun/place3/继续前进3.png b/src/assets/images/chenyun/place3/继续前进3.png new file mode 100644 index 0000000..4fa43f3 Binary files /dev/null and b/src/assets/images/chenyun/place3/继续前进3.png differ diff --git a/src/assets/images/chenyun/place4/场景4.png b/src/assets/images/chenyun/place4/场景4.png new file mode 100644 index 0000000..e1b406d Binary files /dev/null and b/src/assets/images/chenyun/place4/场景4.png differ diff --git a/src/assets/images/chenyun/place4/场景4展品1.png b/src/assets/images/chenyun/place4/场景4展品1.png new file mode 100644 index 0000000..8b98445 Binary files /dev/null and b/src/assets/images/chenyun/place4/场景4展品1.png differ diff --git a/src/assets/images/chenyun/place4/场景4展品2.png b/src/assets/images/chenyun/place4/场景4展品2.png new file mode 100644 index 0000000..f6bf8a7 Binary files /dev/null and b/src/assets/images/chenyun/place4/场景4展品2.png differ diff --git a/src/assets/images/chenyun/place5/场景5.png b/src/assets/images/chenyun/place5/场景5.png new file mode 100644 index 0000000..631d701 Binary files /dev/null and b/src/assets/images/chenyun/place5/场景5.png differ diff --git a/src/assets/images/chenyun/place5/场景5展品1.png b/src/assets/images/chenyun/place5/场景5展品1.png new file mode 100644 index 0000000..76b4005 Binary files /dev/null and b/src/assets/images/chenyun/place5/场景5展品1.png differ diff --git a/src/assets/images/chenyun/place5/场景5展品2.png b/src/assets/images/chenyun/place5/场景5展品2.png new file mode 100644 index 0000000..408f2be Binary files /dev/null and b/src/assets/images/chenyun/place5/场景5展品2.png differ diff --git a/src/assets/images/chenyun/place5/场景5展品3.png b/src/assets/images/chenyun/place5/场景5展品3.png new file mode 100644 index 0000000..62016c5 Binary files /dev/null and b/src/assets/images/chenyun/place5/场景5展品3.png differ diff --git a/src/assets/images/chenyun/place5/继续前进4.png b/src/assets/images/chenyun/place5/继续前进4.png new file mode 100644 index 0000000..205830c Binary files /dev/null and b/src/assets/images/chenyun/place5/继续前进4.png differ diff --git a/src/assets/images/chenyun/place6/场景6.png b/src/assets/images/chenyun/place6/场景6.png new file mode 100644 index 0000000..1b3b635 Binary files /dev/null and b/src/assets/images/chenyun/place6/场景6.png differ diff --git a/src/assets/images/chenyun/place6/场景6展品1.png b/src/assets/images/chenyun/place6/场景6展品1.png new file mode 100644 index 0000000..21190a8 Binary files /dev/null and b/src/assets/images/chenyun/place6/场景6展品1.png differ diff --git a/src/assets/images/chenyun/place6/继续前进5.png b/src/assets/images/chenyun/place6/继续前进5.png new file mode 100644 index 0000000..4ab750b Binary files /dev/null and b/src/assets/images/chenyun/place6/继续前进5.png differ diff --git a/src/assets/images/chenyun/place7/场景7.png b/src/assets/images/chenyun/place7/场景7.png new file mode 100644 index 0000000..95a78f1 Binary files /dev/null and b/src/assets/images/chenyun/place7/场景7.png differ diff --git a/src/assets/images/chenyun/place7/继续前进.png b/src/assets/images/chenyun/place7/继续前进.png new file mode 100644 index 0000000..56fc174 Binary files /dev/null and b/src/assets/images/chenyun/place7/继续前进.png differ diff --git a/src/assets/images/chenyun/place8/场景8.png b/src/assets/images/chenyun/place8/场景8.png new file mode 100644 index 0000000..67ded28 Binary files /dev/null and b/src/assets/images/chenyun/place8/场景8.png differ diff --git a/src/assets/images/chenyun/place8/场景8展品1.png b/src/assets/images/chenyun/place8/场景8展品1.png new file mode 100644 index 0000000..a861763 Binary files /dev/null and b/src/assets/images/chenyun/place8/场景8展品1.png differ diff --git a/src/assets/images/chenyun/place8/场景8展品2.png b/src/assets/images/chenyun/place8/场景8展品2.png new file mode 100644 index 0000000..fdf65f1 Binary files /dev/null and b/src/assets/images/chenyun/place8/场景8展品2.png differ diff --git a/src/assets/images/chenyun/place8/继续前进6.png b/src/assets/images/chenyun/place8/继续前进6.png new file mode 100644 index 0000000..55cd6e2 Binary files /dev/null and b/src/assets/images/chenyun/place8/继续前进6.png differ diff --git a/src/assets/images/chenyun/place9/场景9.png b/src/assets/images/chenyun/place9/场景9.png new file mode 100644 index 0000000..b42bcf1 Binary files /dev/null and b/src/assets/images/chenyun/place9/场景9.png differ diff --git a/src/assets/images/chenyun/place9/场景9展品1.png b/src/assets/images/chenyun/place9/场景9展品1.png new file mode 100644 index 0000000..b8b8840 Binary files /dev/null and b/src/assets/images/chenyun/place9/场景9展品1.png differ diff --git a/src/assets/images/chenyun/place9/离开场景.png b/src/assets/images/chenyun/place9/离开场景.png new file mode 100644 index 0000000..eee8371 Binary files /dev/null and b/src/assets/images/chenyun/place9/离开场景.png differ diff --git a/src/assets/images/chenyun/reflection/全国物资分布.png b/src/assets/images/chenyun/reflection/全国物资分布.png new file mode 100644 index 0000000..f45dcf6 Binary files /dev/null and b/src/assets/images/chenyun/reflection/全国物资分布.png differ diff --git a/src/assets/images/chenyun/reflection/全国物资分布桌上.png b/src/assets/images/chenyun/reflection/全国物资分布桌上.png new file mode 100644 index 0000000..7100721 Binary files /dev/null and b/src/assets/images/chenyun/reflection/全国物资分布桌上.png differ diff --git a/src/assets/images/chenyun/reflection/对话气泡.png b/src/assets/images/chenyun/reflection/对话气泡.png new file mode 100644 index 0000000..59bd633 Binary files /dev/null and b/src/assets/images/chenyun/reflection/对话气泡.png differ diff --git a/src/assets/images/chenyun/reflection/底图.png b/src/assets/images/chenyun/reflection/底图.png new file mode 100644 index 0000000..43d84ab Binary files /dev/null and b/src/assets/images/chenyun/reflection/底图.png differ diff --git a/src/assets/images/chenyun/reflection/录音.png b/src/assets/images/chenyun/reflection/录音.png new file mode 100644 index 0000000..7567d40 Binary files /dev/null and b/src/assets/images/chenyun/reflection/录音.png differ diff --git a/src/assets/images/chenyun/reflection/投机商情报桌上.png b/src/assets/images/chenyun/reflection/投机商情报桌上.png new file mode 100644 index 0000000..6b710bd Binary files /dev/null and b/src/assets/images/chenyun/reflection/投机商情报桌上.png differ diff --git a/src/assets/images/chenyun/reflection/探索.png b/src/assets/images/chenyun/reflection/探索.png new file mode 100644 index 0000000..5c269be Binary files /dev/null and b/src/assets/images/chenyun/reflection/探索.png differ diff --git a/src/assets/images/chenyun/reflection/文件1.png b/src/assets/images/chenyun/reflection/文件1.png new file mode 100644 index 0000000..6f311b4 Binary files /dev/null and b/src/assets/images/chenyun/reflection/文件1.png differ diff --git a/src/assets/images/chenyun/reflection/文件2.png b/src/assets/images/chenyun/reflection/文件2.png new file mode 100644 index 0000000..4e6a529 Binary files /dev/null and b/src/assets/images/chenyun/reflection/文件2.png differ diff --git a/src/assets/images/chenyun/reflection/点击前往解决.png b/src/assets/images/chenyun/reflection/点击前往解决.png new file mode 100644 index 0000000..549d65c Binary files /dev/null and b/src/assets/images/chenyun/reflection/点击前往解决.png differ diff --git a/src/assets/images/chenyun/reflection/电话.png b/src/assets/images/chenyun/reflection/电话.png new file mode 100644 index 0000000..2cafdc9 Binary files /dev/null and b/src/assets/images/chenyun/reflection/电话.png differ diff --git a/src/assets/images/chenyun/reflection/电话响.png b/src/assets/images/chenyun/reflection/电话响.png new file mode 100644 index 0000000..77e097b Binary files /dev/null and b/src/assets/images/chenyun/reflection/电话响.png differ diff --git a/src/assets/images/chenyun/reflection/线索1.png b/src/assets/images/chenyun/reflection/线索1.png new file mode 100644 index 0000000..7982e93 Binary files /dev/null and b/src/assets/images/chenyun/reflection/线索1.png differ diff --git a/src/assets/images/chenyun/reflection/线索2.png b/src/assets/images/chenyun/reflection/线索2.png new file mode 100644 index 0000000..d6ec00b Binary files /dev/null and b/src/assets/images/chenyun/reflection/线索2.png differ diff --git a/src/assets/images/chenyun/reflection/群众1.png b/src/assets/images/chenyun/reflection/群众1.png new file mode 100644 index 0000000..49953e2 Binary files /dev/null and b/src/assets/images/chenyun/reflection/群众1.png differ diff --git a/src/assets/images/chenyun/reflection/群众2.png b/src/assets/images/chenyun/reflection/群众2.png new file mode 100644 index 0000000..93f3a0c Binary files /dev/null and b/src/assets/images/chenyun/reflection/群众2.png differ diff --git a/src/assets/images/chenyun/reflection/走势图.png b/src/assets/images/chenyun/reflection/走势图.png new file mode 100644 index 0000000..0aff58b Binary files /dev/null and b/src/assets/images/chenyun/reflection/走势图.png differ diff --git a/src/assets/images/chenyun/reflection/银元价格走势图.png b/src/assets/images/chenyun/reflection/银元价格走势图.png new file mode 100644 index 0000000..3abe2ae Binary files /dev/null and b/src/assets/images/chenyun/reflection/银元价格走势图.png differ diff --git a/src/assets/images/chenyun/陈云故居底图.png b/src/assets/images/chenyun/陈云故居底图.png new file mode 100644 index 0000000..2978024 Binary files /dev/null and b/src/assets/images/chenyun/陈云故居底图.png differ diff --git a/src/assets/images/components/border.png b/src/assets/images/components/border.png new file mode 100644 index 0000000..fe98caf Binary files /dev/null and b/src/assets/images/components/border.png differ diff --git a/src/assets/images/components/layout/纸.png b/src/assets/images/components/layout/纸.png new file mode 100644 index 0000000..560a727 Binary files /dev/null and b/src/assets/images/components/layout/纸.png differ diff --git a/src/assets/images/components/narration/b.png b/src/assets/images/components/narration/b.png new file mode 100644 index 0000000..d9434af Binary files /dev/null and b/src/assets/images/components/narration/b.png differ diff --git a/src/assets/images/components/place/l-前进.png b/src/assets/images/components/place/l-前进.png new file mode 100644 index 0000000..01f323b Binary files /dev/null and b/src/assets/images/components/place/l-前进.png differ diff --git a/src/assets/images/components/place/r-3d前进.png b/src/assets/images/components/place/r-3d前进.png new file mode 100644 index 0000000..904154d Binary files /dev/null and b/src/assets/images/components/place/r-3d前进.png differ diff --git a/src/assets/images/components/place/r-前进.png b/src/assets/images/components/place/r-前进.png new file mode 100644 index 0000000..74f35cd Binary files /dev/null and b/src/assets/images/components/place/r-前进.png differ diff --git a/src/assets/images/components/place/继续前进.png b/src/assets/images/components/place/继续前进.png new file mode 100644 index 0000000..4fa43f3 Binary files /dev/null and b/src/assets/images/components/place/继续前进.png differ diff --git a/src/assets/images/components/point.png b/src/assets/images/components/point.png new file mode 100644 index 0000000..ee682cf Binary files /dev/null and b/src/assets/images/components/point.png differ diff --git a/src/assets/images/components/point_.png b/src/assets/images/components/point_.png new file mode 100644 index 0000000..9d5fd89 Binary files /dev/null and b/src/assets/images/components/point_.png differ diff --git a/src/assets/images/components/quiz/底板.png b/src/assets/images/components/quiz/底板.png new file mode 100644 index 0000000..f85ced0 Binary files /dev/null and b/src/assets/images/components/quiz/底板.png differ diff --git a/src/assets/images/components/quiz/未选择.png b/src/assets/images/components/quiz/未选择.png new file mode 100644 index 0000000..aa1b07c Binary files /dev/null and b/src/assets/images/components/quiz/未选择.png differ diff --git a/src/assets/images/components/quiz/正确版.png b/src/assets/images/components/quiz/正确版.png new file mode 100644 index 0000000..c344b30 Binary files /dev/null and b/src/assets/images/components/quiz/正确版.png differ diff --git a/src/assets/images/components/quiz/选中.png b/src/assets/images/components/quiz/选中.png new file mode 100644 index 0000000..5160a5d Binary files /dev/null and b/src/assets/images/components/quiz/选中.png differ diff --git a/src/assets/images/components/title.png b/src/assets/images/components/title.png new file mode 100644 index 0000000..e99c390 Binary files /dev/null and b/src/assets/images/components/title.png differ diff --git a/src/assets/images/components/关闭.png b/src/assets/images/components/关闭.png new file mode 100644 index 0000000..702c975 Binary files /dev/null and b/src/assets/images/components/关闭.png differ diff --git a/src/assets/images/components/去了解.png b/src/assets/images/components/去了解.png new file mode 100644 index 0000000..eb797f1 Binary files /dev/null and b/src/assets/images/components/去了解.png differ diff --git a/src/assets/images/components/引导板.png b/src/assets/images/components/引导板.png new file mode 100644 index 0000000..b58a0b4 Binary files /dev/null and b/src/assets/images/components/引导板.png differ diff --git a/src/assets/images/components/引导板2.png b/src/assets/images/components/引导板2.png new file mode 100644 index 0000000..297b1f7 Binary files /dev/null and b/src/assets/images/components/引导板2.png differ diff --git a/src/assets/images/components/引导页背景.png b/src/assets/images/components/引导页背景.png deleted file mode 100644 index 4f28d27..0000000 Binary files a/src/assets/images/components/引导页背景.png and /dev/null differ diff --git a/src/assets/images/components/拼图盒.png b/src/assets/images/components/拼图盒.png new file mode 100644 index 0000000..e2fdd89 Binary files /dev/null and b/src/assets/images/components/拼图盒.png differ diff --git a/src/assets/images/components/按钮-跳过.png b/src/assets/images/components/按钮-跳过.png deleted file mode 100644 index 4373353..0000000 Binary files a/src/assets/images/components/按钮-跳过.png and /dev/null differ diff --git a/src/assets/images/components/按钮-返回.png b/src/assets/images/components/按钮-返回.png deleted file mode 100644 index e538e97..0000000 Binary files a/src/assets/images/components/按钮-返回.png and /dev/null differ diff --git a/src/assets/images/components/按钮-进入.png b/src/assets/images/components/按钮-进入.png deleted file mode 100644 index a70ecaf..0000000 Binary files a/src/assets/images/components/按钮-进入.png and /dev/null differ diff --git a/src/assets/images/components/按钮.png b/src/assets/images/components/按钮.png new file mode 100644 index 0000000..3de676e Binary files /dev/null and b/src/assets/images/components/按钮.png differ diff --git a/src/assets/images/components/框.png b/src/assets/images/components/框.png deleted file mode 100644 index 58094fb..0000000 Binary files a/src/assets/images/components/框.png and /dev/null differ diff --git a/src/assets/images/components/正确版.png b/src/assets/images/components/正确版.png new file mode 100644 index 0000000..c344b30 Binary files /dev/null and b/src/assets/images/components/正确版.png differ diff --git a/src/assets/images/components/离开.png b/src/assets/images/components/离开.png new file mode 100644 index 0000000..ef56c5f Binary files /dev/null and b/src/assets/images/components/离开.png differ diff --git a/src/assets/images/components/继续前进.png b/src/assets/images/components/继续前进.png new file mode 100644 index 0000000..ffb0c84 Binary files /dev/null and b/src/assets/images/components/继续前进.png differ diff --git a/src/assets/images/components/蒙版遮罩.png b/src/assets/images/components/蒙版遮罩.png new file mode 100644 index 0000000..a0198a3 Binary files /dev/null and b/src/assets/images/components/蒙版遮罩.png differ diff --git a/src/assets/images/components/返回.png b/src/assets/images/components/返回.png new file mode 100644 index 0000000..37818bf Binary files /dev/null and b/src/assets/images/components/返回.png differ diff --git a/src/assets/images/components/革命先驱故居-返回.png b/src/assets/images/components/革命先驱故居-返回.png new file mode 100644 index 0000000..2b00818 Binary files /dev/null and b/src/assets/images/components/革命先驱故居-返回.png differ diff --git a/src/assets/images/content/交流与展示活动-未选中.png b/src/assets/images/content/交流与展示活动-未选中.png deleted file mode 100644 index fe53c30..0000000 Binary files a/src/assets/images/content/交流与展示活动-未选中.png and /dev/null differ diff --git a/src/assets/images/content/交流与展示活动-选中.png b/src/assets/images/content/交流与展示活动-选中.png deleted file mode 100644 index c5d3cd8..0000000 Binary files a/src/assets/images/content/交流与展示活动-选中.png and /dev/null differ diff --git a/src/assets/images/content/内页底图02.png b/src/assets/images/content/内页底图02.png deleted file mode 100644 index 206c43b..0000000 Binary files a/src/assets/images/content/内页底图02.png and /dev/null differ diff --git a/src/assets/images/content/图文.png b/src/assets/images/content/图文.png deleted file mode 100644 index 7613e42..0000000 Binary files a/src/assets/images/content/图文.png and /dev/null differ diff --git a/src/assets/images/content/图文1.png b/src/assets/images/content/图文1.png deleted file mode 100644 index 8f0a90d..0000000 Binary files a/src/assets/images/content/图文1.png and /dev/null differ diff --git a/src/assets/images/content/图文3.png b/src/assets/images/content/图文3.png deleted file mode 100644 index 4051053..0000000 Binary files a/src/assets/images/content/图文3.png and /dev/null differ diff --git a/src/assets/images/content/工作室介绍未选中.png b/src/assets/images/content/工作室介绍未选中.png deleted file mode 100644 index 59bf5ba..0000000 Binary files a/src/assets/images/content/工作室介绍未选中.png and /dev/null differ diff --git a/src/assets/images/content/工作室介绍选中.png b/src/assets/images/content/工作室介绍选中.png deleted file mode 100644 index 1482745..0000000 Binary files a/src/assets/images/content/工作室介绍选中.png and /dev/null differ diff --git a/src/assets/images/content/带教心得未选中.png b/src/assets/images/content/带教心得未选中.png deleted file mode 100644 index 325c15e..0000000 Binary files a/src/assets/images/content/带教心得未选中.png and /dev/null differ diff --git a/src/assets/images/content/带教心得选中.png b/src/assets/images/content/带教心得选中.png deleted file mode 100644 index 7352244..0000000 Binary files a/src/assets/images/content/带教心得选中.png and /dev/null differ diff --git a/src/assets/images/content/带教活动未选中.png b/src/assets/images/content/带教活动未选中.png deleted file mode 100644 index f784e61..0000000 Binary files a/src/assets/images/content/带教活动未选中.png and /dev/null differ diff --git a/src/assets/images/content/带教活动选中.png b/src/assets/images/content/带教活动选中.png deleted file mode 100644 index 46e0bb0..0000000 Binary files a/src/assets/images/content/带教活动选中.png and /dev/null differ diff --git a/src/assets/images/content/成果展示未选中.png b/src/assets/images/content/成果展示未选中.png deleted file mode 100644 index 4acd0db..0000000 Binary files a/src/assets/images/content/成果展示未选中.png and /dev/null differ diff --git a/src/assets/images/content/成果展示选中.png b/src/assets/images/content/成果展示选中.png deleted file mode 100644 index 708df11..0000000 Binary files a/src/assets/images/content/成果展示选中.png and /dev/null differ diff --git a/src/assets/images/content/教学实践与反思-未选中.png b/src/assets/images/content/教学实践与反思-未选中.png deleted file mode 100644 index c55cc38..0000000 Binary files a/src/assets/images/content/教学实践与反思-未选中.png and /dev/null differ diff --git a/src/assets/images/content/教学实践与反思-选中.png b/src/assets/images/content/教学实践与反思-选中.png deleted file mode 100644 index 5d753c8..0000000 Binary files a/src/assets/images/content/教学实践与反思-选中.png and /dev/null differ diff --git a/src/assets/images/content/理论与技能专项培训-未选中.png b/src/assets/images/content/理论与技能专项培训-未选中.png deleted file mode 100644 index 51ff260..0000000 Binary files a/src/assets/images/content/理论与技能专项培训-未选中.png and /dev/null differ diff --git a/src/assets/images/content/理论与技能专项培训-选中.png b/src/assets/images/content/理论与技能专项培训-选中.png deleted file mode 100644 index f96ecaa..0000000 Binary files a/src/assets/images/content/理论与技能专项培训-选中.png and /dev/null differ diff --git a/src/assets/images/content/经验传承与资源共享-未选中.png b/src/assets/images/content/经验传承与资源共享-未选中.png deleted file mode 100644 index 4f8640a..0000000 Binary files a/src/assets/images/content/经验传承与资源共享-未选中.png and /dev/null differ diff --git a/src/assets/images/content/经验传承与资源共享-选中.png b/src/assets/images/content/经验传承与资源共享-选中.png deleted file mode 100644 index 464711c..0000000 Binary files a/src/assets/images/content/经验传承与资源共享-选中.png and /dev/null differ diff --git a/src/assets/images/content/视频区域框.png b/src/assets/images/content/视频区域框.png deleted file mode 100644 index c11cb73..0000000 Binary files a/src/assets/images/content/视频区域框.png and /dev/null differ diff --git a/src/assets/images/content/项目与课题研究-未选中.png b/src/assets/images/content/项目与课题研究-未选中.png deleted file mode 100644 index a7a2704..0000000 Binary files a/src/assets/images/content/项目与课题研究-未选中.png and /dev/null differ diff --git a/src/assets/images/content/项目与课题研究-选中.png b/src/assets/images/content/项目与课题研究-选中.png deleted file mode 100644 index 82079da..0000000 Binary files a/src/assets/images/content/项目与课题研究-选中.png and /dev/null differ diff --git a/src/assets/images/entrance/入口-返回.png b/src/assets/images/entrance/入口-返回.png new file mode 100644 index 0000000..95040b2 Binary files /dev/null and b/src/assets/images/entrance/入口-返回.png differ diff --git a/src/assets/images/entrance/孙中山故居入口-未解锁.png b/src/assets/images/entrance/孙中山故居入口-未解锁.png new file mode 100644 index 0000000..6894e2c Binary files /dev/null and b/src/assets/images/entrance/孙中山故居入口-未解锁.png differ diff --git a/src/assets/images/entrance/孙中山故居入口-解锁.png b/src/assets/images/entrance/孙中山故居入口-解锁.png new file mode 100644 index 0000000..d3f132c Binary files /dev/null and b/src/assets/images/entrance/孙中山故居入口-解锁.png differ diff --git a/src/assets/images/entrance/文化名人.png b/src/assets/images/entrance/文化名人.png new file mode 100644 index 0000000..f87491a Binary files /dev/null and b/src/assets/images/entrance/文化名人.png differ diff --git a/src/assets/images/entrance/暂未解锁.png b/src/assets/images/entrance/暂未解锁.png new file mode 100644 index 0000000..771b149 Binary files /dev/null and b/src/assets/images/entrance/暂未解锁.png differ diff --git a/src/assets/images/entrance/毛泽东故居入口.png b/src/assets/images/entrance/毛泽东故居入口.png new file mode 100644 index 0000000..db9d651 Binary files /dev/null and b/src/assets/images/entrance/毛泽东故居入口.png differ diff --git a/src/assets/images/entrance/点击前往浏览.png b/src/assets/images/entrance/点击前往浏览.png new file mode 100644 index 0000000..d608122 Binary files /dev/null and b/src/assets/images/entrance/点击前往浏览.png differ diff --git a/src/assets/images/entrance/经济.png b/src/assets/images/entrance/经济.png new file mode 100644 index 0000000..efef1ac Binary files /dev/null and b/src/assets/images/entrance/经济.png differ diff --git a/src/assets/images/entrance/艺术名家.png b/src/assets/images/entrance/艺术名家.png new file mode 100644 index 0000000..5715901 Binary files /dev/null and b/src/assets/images/entrance/艺术名家.png differ diff --git a/src/assets/images/entrance/荣德生-未解锁.png b/src/assets/images/entrance/荣德生-未解锁.png new file mode 100644 index 0000000..0722de7 Binary files /dev/null and b/src/assets/images/entrance/荣德生-未解锁.png differ diff --git a/src/assets/images/entrance/荣德生-解锁.png b/src/assets/images/entrance/荣德生-解锁.png new file mode 100644 index 0000000..974eebe Binary files /dev/null and b/src/assets/images/entrance/荣德生-解锁.png differ diff --git a/src/assets/images/entrance/该故居已访问.png b/src/assets/images/entrance/该故居已访问.png new file mode 100644 index 0000000..cb5f819 Binary files /dev/null and b/src/assets/images/entrance/该故居已访问.png differ diff --git a/src/assets/images/entrance/陈云故居-未解锁.png b/src/assets/images/entrance/陈云故居-未解锁.png new file mode 100644 index 0000000..c03b634 Binary files /dev/null and b/src/assets/images/entrance/陈云故居-未解锁.png differ diff --git a/src/assets/images/entrance/陈云故居-解锁.png b/src/assets/images/entrance/陈云故居-解锁.png new file mode 100644 index 0000000..91b4711 Binary files /dev/null and b/src/assets/images/entrance/陈云故居-解锁.png differ diff --git a/src/assets/images/entrance/革命先驱.png b/src/assets/images/entrance/革命先驱.png new file mode 100644 index 0000000..b12bb1d Binary files /dev/null and b/src/assets/images/entrance/革命先驱.png differ diff --git a/src/assets/images/entrance/鲁迅故居-未解锁.png b/src/assets/images/entrance/鲁迅故居-未解锁.png new file mode 100644 index 0000000..d270bf4 Binary files /dev/null and b/src/assets/images/entrance/鲁迅故居-未解锁.png differ diff --git a/src/assets/images/entrance/鲁迅故居-解锁.png b/src/assets/images/entrance/鲁迅故居-解锁.png new file mode 100644 index 0000000..b6b5ba7 Binary files /dev/null and b/src/assets/images/entrance/鲁迅故居-解锁.png differ diff --git a/src/assets/images/entrance/黄元培-未解锁.png b/src/assets/images/entrance/黄元培-未解锁.png new file mode 100644 index 0000000..475c324 Binary files /dev/null and b/src/assets/images/entrance/黄元培-未解锁.png differ diff --git a/src/assets/images/entrance/黄元培-解锁.png b/src/assets/images/entrance/黄元培-解锁.png new file mode 100644 index 0000000..0bfc391 Binary files /dev/null and b/src/assets/images/entrance/黄元培-解锁.png differ diff --git a/src/assets/images/guide/引导页背景.png b/src/assets/images/guide/引导页背景.png deleted file mode 100644 index 4f28d27..0000000 Binary files a/src/assets/images/guide/引导页背景.png and /dev/null differ diff --git a/src/assets/images/guide/框.png b/src/assets/images/guide/框.png deleted file mode 100644 index 58094fb..0000000 Binary files a/src/assets/images/guide/框.png and /dev/null differ diff --git a/src/assets/images/home/进入页.png b/src/assets/images/home/进入页.png deleted file mode 100644 index 3a56706..0000000 Binary files a/src/assets/images/home/进入页.png and /dev/null differ diff --git a/src/assets/images/home/首页-进入.png b/src/assets/images/home/首页-进入.png new file mode 100644 index 0000000..b677e4d Binary files /dev/null and b/src/assets/images/home/首页-进入.png differ diff --git a/src/assets/images/home/首页底图.png b/src/assets/images/home/首页底图.png new file mode 100644 index 0000000..462d309 Binary files /dev/null and b/src/assets/images/home/首页底图.png differ diff --git a/src/assets/images/huangyanpei/internalization/13_002.png b/src/assets/images/huangyanpei/internalization/13_002.png new file mode 100644 index 0000000..fadd9b2 Binary files /dev/null and b/src/assets/images/huangyanpei/internalization/13_002.png differ diff --git a/src/assets/images/huangyanpei/internalization/13_007.png b/src/assets/images/huangyanpei/internalization/13_007.png new file mode 100644 index 0000000..c313fe8 Binary files /dev/null and b/src/assets/images/huangyanpei/internalization/13_007.png differ diff --git a/src/assets/images/huangyanpei/internalization/13_F1.png b/src/assets/images/huangyanpei/internalization/13_F1.png new file mode 100644 index 0000000..44811f7 Binary files /dev/null and b/src/assets/images/huangyanpei/internalization/13_F1.png differ diff --git a/src/assets/images/huangyanpei/internalization/13_F2.png b/src/assets/images/huangyanpei/internalization/13_F2.png new file mode 100644 index 0000000..bfeb56b Binary files /dev/null and b/src/assets/images/huangyanpei/internalization/13_F2.png differ diff --git a/src/assets/images/huangyanpei/internalization/13_a1.png b/src/assets/images/huangyanpei/internalization/13_a1.png new file mode 100644 index 0000000..8decd69 Binary files /dev/null and b/src/assets/images/huangyanpei/internalization/13_a1.png differ diff --git a/src/assets/images/huangyanpei/internalization/13_a2.png b/src/assets/images/huangyanpei/internalization/13_a2.png new file mode 100644 index 0000000..1a53980 Binary files /dev/null and b/src/assets/images/huangyanpei/internalization/13_a2.png differ diff --git a/src/assets/images/huangyanpei/internalization/13_b1.png b/src/assets/images/huangyanpei/internalization/13_b1.png new file mode 100644 index 0000000..efea7a4 Binary files /dev/null and b/src/assets/images/huangyanpei/internalization/13_b1.png differ diff --git a/src/assets/images/huangyanpei/internalization/13_b2.png b/src/assets/images/huangyanpei/internalization/13_b2.png new file mode 100644 index 0000000..404c8f5 Binary files /dev/null and b/src/assets/images/huangyanpei/internalization/13_b2.png differ diff --git a/src/assets/images/huangyanpei/internalization/13_c2.png b/src/assets/images/huangyanpei/internalization/13_c2.png new file mode 100644 index 0000000..86b0c9e Binary files /dev/null and b/src/assets/images/huangyanpei/internalization/13_c2.png differ diff --git a/src/assets/images/huangyanpei/internalization/13_e1.png b/src/assets/images/huangyanpei/internalization/13_e1.png new file mode 100644 index 0000000..be363b1 Binary files /dev/null and b/src/assets/images/huangyanpei/internalization/13_e1.png differ diff --git a/src/assets/images/huangyanpei/internalization/13_e2.png b/src/assets/images/huangyanpei/internalization/13_e2.png new file mode 100644 index 0000000..fdb849b Binary files /dev/null and b/src/assets/images/huangyanpei/internalization/13_e2.png differ diff --git a/src/assets/images/huangyanpei/internalization/13d1.png b/src/assets/images/huangyanpei/internalization/13d1.png new file mode 100644 index 0000000..5a61a2c Binary files /dev/null and b/src/assets/images/huangyanpei/internalization/13d1.png differ diff --git a/src/assets/images/huangyanpei/internalization/13d2.png b/src/assets/images/huangyanpei/internalization/13d2.png new file mode 100644 index 0000000..b26dac7 Binary files /dev/null and b/src/assets/images/huangyanpei/internalization/13d2.png differ diff --git a/src/assets/images/huangyanpei/place1/3_001.png b/src/assets/images/huangyanpei/place1/3_001.png new file mode 100644 index 0000000..e2626f3 Binary files /dev/null and b/src/assets/images/huangyanpei/place1/3_001.png differ diff --git a/src/assets/images/huangyanpei/place1/3_002.png b/src/assets/images/huangyanpei/place1/3_002.png new file mode 100644 index 0000000..a0198a3 Binary files /dev/null and b/src/assets/images/huangyanpei/place1/3_002.png differ diff --git a/src/assets/images/huangyanpei/place1/3_003.png b/src/assets/images/huangyanpei/place1/3_003.png new file mode 100644 index 0000000..9566351 Binary files /dev/null and b/src/assets/images/huangyanpei/place1/3_003.png differ diff --git a/src/assets/images/huangyanpei/place1/3_004.png b/src/assets/images/huangyanpei/place1/3_004.png new file mode 100644 index 0000000..085be67 Binary files /dev/null and b/src/assets/images/huangyanpei/place1/3_004.png differ diff --git a/src/assets/images/huangyanpei/place1/3_005.png b/src/assets/images/huangyanpei/place1/3_005.png new file mode 100644 index 0000000..dcf7336 Binary files /dev/null and b/src/assets/images/huangyanpei/place1/3_005.png differ diff --git a/src/assets/images/huangyanpei/place2/4_001.png b/src/assets/images/huangyanpei/place2/4_001.png new file mode 100644 index 0000000..abdca71 Binary files /dev/null and b/src/assets/images/huangyanpei/place2/4_001.png differ diff --git a/src/assets/images/huangyanpei/place2/4_004.png b/src/assets/images/huangyanpei/place2/4_004.png new file mode 100644 index 0000000..aac465f Binary files /dev/null and b/src/assets/images/huangyanpei/place2/4_004.png differ diff --git a/src/assets/images/huangyanpei/place2/4_005.png b/src/assets/images/huangyanpei/place2/4_005.png new file mode 100644 index 0000000..3fc2eb3 Binary files /dev/null and b/src/assets/images/huangyanpei/place2/4_005.png differ diff --git a/src/assets/images/huangyanpei/place3/5_001.png b/src/assets/images/huangyanpei/place3/5_001.png new file mode 100644 index 0000000..ecd3545 Binary files /dev/null and b/src/assets/images/huangyanpei/place3/5_001.png differ diff --git a/src/assets/images/huangyanpei/place3/5_002.png b/src/assets/images/huangyanpei/place3/5_002.png new file mode 100644 index 0000000..f1ae462 Binary files /dev/null and b/src/assets/images/huangyanpei/place3/5_002.png differ diff --git a/src/assets/images/huangyanpei/place3/5_003.png b/src/assets/images/huangyanpei/place3/5_003.png new file mode 100644 index 0000000..398f8af Binary files /dev/null and b/src/assets/images/huangyanpei/place3/5_003.png differ diff --git a/src/assets/images/huangyanpei/place3/5_004.png b/src/assets/images/huangyanpei/place3/5_004.png new file mode 100644 index 0000000..3fd9935 Binary files /dev/null and b/src/assets/images/huangyanpei/place3/5_004.png differ diff --git a/src/assets/images/huangyanpei/place3/5_005.png b/src/assets/images/huangyanpei/place3/5_005.png new file mode 100644 index 0000000..606f350 Binary files /dev/null and b/src/assets/images/huangyanpei/place3/5_005.png differ diff --git a/src/assets/images/huangyanpei/place3/5_006.png b/src/assets/images/huangyanpei/place3/5_006.png new file mode 100644 index 0000000..12d9992 Binary files /dev/null and b/src/assets/images/huangyanpei/place3/5_006.png differ diff --git a/src/assets/images/huangyanpei/place3/5_007.png b/src/assets/images/huangyanpei/place3/5_007.png new file mode 100644 index 0000000..8da89ef Binary files /dev/null and b/src/assets/images/huangyanpei/place3/5_007.png differ diff --git a/src/assets/images/huangyanpei/place4/6_001.png b/src/assets/images/huangyanpei/place4/6_001.png new file mode 100644 index 0000000..61147af Binary files /dev/null and b/src/assets/images/huangyanpei/place4/6_001.png differ diff --git a/src/assets/images/huangyanpei/place4/6_002.png b/src/assets/images/huangyanpei/place4/6_002.png new file mode 100644 index 0000000..9e376b0 Binary files /dev/null and b/src/assets/images/huangyanpei/place4/6_002.png differ diff --git a/src/assets/images/huangyanpei/place4/6_003.png b/src/assets/images/huangyanpei/place4/6_003.png new file mode 100644 index 0000000..a2af481 Binary files /dev/null and b/src/assets/images/huangyanpei/place4/6_003.png differ diff --git a/src/assets/images/huangyanpei/place4/6_004.png b/src/assets/images/huangyanpei/place4/6_004.png new file mode 100644 index 0000000..a67cdc4 Binary files /dev/null and b/src/assets/images/huangyanpei/place4/6_004.png differ diff --git a/src/assets/images/huangyanpei/place4/6_005.png b/src/assets/images/huangyanpei/place4/6_005.png new file mode 100644 index 0000000..a2faef5 Binary files /dev/null and b/src/assets/images/huangyanpei/place4/6_005.png differ diff --git a/src/assets/images/huangyanpei/place4/6_006.png b/src/assets/images/huangyanpei/place4/6_006.png new file mode 100644 index 0000000..898def3 Binary files /dev/null and b/src/assets/images/huangyanpei/place4/6_006.png differ diff --git a/src/assets/images/huangyanpei/place4/6_007.png b/src/assets/images/huangyanpei/place4/6_007.png new file mode 100644 index 0000000..9dd3cdf Binary files /dev/null and b/src/assets/images/huangyanpei/place4/6_007.png differ diff --git a/src/assets/images/huangyanpei/place4/6_008.png b/src/assets/images/huangyanpei/place4/6_008.png new file mode 100644 index 0000000..1a7ee92 Binary files /dev/null and b/src/assets/images/huangyanpei/place4/6_008.png differ diff --git a/src/assets/images/huangyanpei/place4/6_009.png b/src/assets/images/huangyanpei/place4/6_009.png new file mode 100644 index 0000000..c67f508 Binary files /dev/null and b/src/assets/images/huangyanpei/place4/6_009.png differ diff --git a/src/assets/images/huangyanpei/place5/7_001.png b/src/assets/images/huangyanpei/place5/7_001.png new file mode 100644 index 0000000..f8613e3 Binary files /dev/null and b/src/assets/images/huangyanpei/place5/7_001.png differ diff --git a/src/assets/images/huangyanpei/place5/7_002.png b/src/assets/images/huangyanpei/place5/7_002.png new file mode 100644 index 0000000..8655a72 Binary files /dev/null and b/src/assets/images/huangyanpei/place5/7_002.png differ diff --git a/src/assets/images/huangyanpei/place5/7_003.png b/src/assets/images/huangyanpei/place5/7_003.png new file mode 100644 index 0000000..065403a Binary files /dev/null and b/src/assets/images/huangyanpei/place5/7_003.png differ diff --git a/src/assets/images/huangyanpei/place5/7_004.png b/src/assets/images/huangyanpei/place5/7_004.png new file mode 100644 index 0000000..6bf412c Binary files /dev/null and b/src/assets/images/huangyanpei/place5/7_004.png differ diff --git a/src/assets/images/huangyanpei/place6/8_001.png b/src/assets/images/huangyanpei/place6/8_001.png new file mode 100644 index 0000000..3515353 Binary files /dev/null and b/src/assets/images/huangyanpei/place6/8_001.png differ diff --git a/src/assets/images/huangyanpei/place6/8_002.png b/src/assets/images/huangyanpei/place6/8_002.png new file mode 100644 index 0000000..ed4c0dd Binary files /dev/null and b/src/assets/images/huangyanpei/place6/8_002.png differ diff --git a/src/assets/images/huangyanpei/place6/8_003.png b/src/assets/images/huangyanpei/place6/8_003.png new file mode 100644 index 0000000..c1ac867 Binary files /dev/null and b/src/assets/images/huangyanpei/place6/8_003.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene1/9_001.png b/src/assets/images/huangyanpei/reflection/scene1/9_001.png new file mode 100644 index 0000000..2e211ca Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene1/9_001.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene1/9_0010.png b/src/assets/images/huangyanpei/reflection/scene1/9_0010.png new file mode 100644 index 0000000..f2b0b19 Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene1/9_0010.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene1/9_0011.png b/src/assets/images/huangyanpei/reflection/scene1/9_0011.png new file mode 100644 index 0000000..13807e7 Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene1/9_0011.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene1/9_0012.png b/src/assets/images/huangyanpei/reflection/scene1/9_0012.png new file mode 100644 index 0000000..6636ec8 Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene1/9_0012.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene1/9_0013.png b/src/assets/images/huangyanpei/reflection/scene1/9_0013.png new file mode 100644 index 0000000..6fec10a Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene1/9_0013.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene1/9_0014.png b/src/assets/images/huangyanpei/reflection/scene1/9_0014.png new file mode 100644 index 0000000..aaf25ce Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene1/9_0014.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene1/9_002.png b/src/assets/images/huangyanpei/reflection/scene1/9_002.png new file mode 100644 index 0000000..d8805c6 Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene1/9_002.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene1/9_003.png b/src/assets/images/huangyanpei/reflection/scene1/9_003.png new file mode 100644 index 0000000..3f54b5b Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene1/9_003.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene1/9_004.png b/src/assets/images/huangyanpei/reflection/scene1/9_004.png new file mode 100644 index 0000000..b2eb1e9 Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene1/9_004.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene1/9_006.png b/src/assets/images/huangyanpei/reflection/scene1/9_006.png new file mode 100644 index 0000000..cd05405 Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene1/9_006.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene1/9_007.png b/src/assets/images/huangyanpei/reflection/scene1/9_007.png new file mode 100644 index 0000000..3a9e36d Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene1/9_007.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene1/9_008.png b/src/assets/images/huangyanpei/reflection/scene1/9_008.png new file mode 100644 index 0000000..70bbcc2 Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene1/9_008.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene1/9_009.png b/src/assets/images/huangyanpei/reflection/scene1/9_009.png new file mode 100644 index 0000000..0e47e0c Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene1/9_009.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene1/9btn.png b/src/assets/images/huangyanpei/reflection/scene1/9btn.png new file mode 100644 index 0000000..d44eeb3 Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene1/9btn.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene2/10_001.png b/src/assets/images/huangyanpei/reflection/scene2/10_001.png new file mode 100644 index 0000000..901ac3e Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene2/10_001.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene2/10_002.png b/src/assets/images/huangyanpei/reflection/scene2/10_002.png new file mode 100644 index 0000000..593e9ef Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene2/10_002.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene2/10_003.png b/src/assets/images/huangyanpei/reflection/scene2/10_003.png new file mode 100644 index 0000000..b07d616 Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene2/10_003.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene2/10_004.png b/src/assets/images/huangyanpei/reflection/scene2/10_004.png new file mode 100644 index 0000000..ec18b79 Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene2/10_004.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene2/10_005.png b/src/assets/images/huangyanpei/reflection/scene2/10_005.png new file mode 100644 index 0000000..e4e4f29 Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene2/10_005.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene2/10_005_02.png b/src/assets/images/huangyanpei/reflection/scene2/10_005_02.png new file mode 100644 index 0000000..c7fbccd Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene2/10_005_02.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene2/10_006.png b/src/assets/images/huangyanpei/reflection/scene2/10_006.png new file mode 100644 index 0000000..ff0b00b Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene2/10_006.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene2/10_006_02.png b/src/assets/images/huangyanpei/reflection/scene2/10_006_02.png new file mode 100644 index 0000000..b522b9e Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene2/10_006_02.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene2/10_007.png b/src/assets/images/huangyanpei/reflection/scene2/10_007.png new file mode 100644 index 0000000..9f0b8a7 Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene2/10_007.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene2/10_007_02.png b/src/assets/images/huangyanpei/reflection/scene2/10_007_02.png new file mode 100644 index 0000000..f2c72d4 Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene2/10_007_02.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene2/10_008.png b/src/assets/images/huangyanpei/reflection/scene2/10_008.png new file mode 100644 index 0000000..4de7213 Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene2/10_008.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene2/10_008_2.png b/src/assets/images/huangyanpei/reflection/scene2/10_008_2.png new file mode 100644 index 0000000..fc70350 Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene2/10_008_2.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene2/10_009.png b/src/assets/images/huangyanpei/reflection/scene2/10_009.png new file mode 100644 index 0000000..c67161d Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene2/10_009.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene2/10_009_02.png b/src/assets/images/huangyanpei/reflection/scene2/10_009_02.png new file mode 100644 index 0000000..093c636 Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene2/10_009_02.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene2/10btn.png b/src/assets/images/huangyanpei/reflection/scene2/10btn.png new file mode 100644 index 0000000..c8f4e61 Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene2/10btn.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene3/11_001.png b/src/assets/images/huangyanpei/reflection/scene3/11_001.png new file mode 100644 index 0000000..92e35f0 Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene3/11_001.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene3/11_002.png b/src/assets/images/huangyanpei/reflection/scene3/11_002.png new file mode 100644 index 0000000..2680473 Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene3/11_002.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene3/11_003.png b/src/assets/images/huangyanpei/reflection/scene3/11_003.png new file mode 100644 index 0000000..6d1ed71 Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene3/11_003.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene3/11_004.png b/src/assets/images/huangyanpei/reflection/scene3/11_004.png new file mode 100644 index 0000000..d09fb17 Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene3/11_004.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene3/11_005.png b/src/assets/images/huangyanpei/reflection/scene3/11_005.png new file mode 100644 index 0000000..399ace0 Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene3/11_005.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene3/11_006.png b/src/assets/images/huangyanpei/reflection/scene3/11_006.png new file mode 100644 index 0000000..7870c6c Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene3/11_006.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene3/11_007.png b/src/assets/images/huangyanpei/reflection/scene3/11_007.png new file mode 100644 index 0000000..24ed7f3 Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene3/11_007.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene3/11_008.png b/src/assets/images/huangyanpei/reflection/scene3/11_008.png new file mode 100644 index 0000000..b159ce1 Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene3/11_008.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene3/11_009.png b/src/assets/images/huangyanpei/reflection/scene3/11_009.png new file mode 100644 index 0000000..d5ca065 Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene3/11_009.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene3/11_010.png b/src/assets/images/huangyanpei/reflection/scene3/11_010.png new file mode 100644 index 0000000..7e29474 Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene3/11_010.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene3/11_010_2.png b/src/assets/images/huangyanpei/reflection/scene3/11_010_2.png new file mode 100644 index 0000000..ee2e7c3 Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene3/11_010_2.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene3/11_011.png b/src/assets/images/huangyanpei/reflection/scene3/11_011.png new file mode 100644 index 0000000..472f28d Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene3/11_011.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene3/11_011_2.png b/src/assets/images/huangyanpei/reflection/scene3/11_011_2.png new file mode 100644 index 0000000..828e4bb Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene3/11_011_2.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene3/11_012.png b/src/assets/images/huangyanpei/reflection/scene3/11_012.png new file mode 100644 index 0000000..4527541 Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene3/11_012.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene3/11_012_3.png b/src/assets/images/huangyanpei/reflection/scene3/11_012_3.png new file mode 100644 index 0000000..bd33161 Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene3/11_012_3.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene4/12_001.png b/src/assets/images/huangyanpei/reflection/scene4/12_001.png new file mode 100644 index 0000000..65987c1 Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene4/12_001.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene4/12_002.png b/src/assets/images/huangyanpei/reflection/scene4/12_002.png new file mode 100644 index 0000000..647945f Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene4/12_002.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene4/12_002_02.png b/src/assets/images/huangyanpei/reflection/scene4/12_002_02.png new file mode 100644 index 0000000..1e3533b Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene4/12_002_02.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene4/12_003.png b/src/assets/images/huangyanpei/reflection/scene4/12_003.png new file mode 100644 index 0000000..021fb2d Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene4/12_003.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene4/12_003_02.png b/src/assets/images/huangyanpei/reflection/scene4/12_003_02.png new file mode 100644 index 0000000..915d225 Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene4/12_003_02.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene4/12_004.png b/src/assets/images/huangyanpei/reflection/scene4/12_004.png new file mode 100644 index 0000000..7acb533 Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene4/12_004.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene4/12_004_03.png b/src/assets/images/huangyanpei/reflection/scene4/12_004_03.png new file mode 100644 index 0000000..001fe3a Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene4/12_004_03.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene4/12_005.png b/src/assets/images/huangyanpei/reflection/scene4/12_005.png new file mode 100644 index 0000000..372cfeb Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene4/12_005.png differ diff --git a/src/assets/images/huangyanpei/reflection/scene4/12_006.png b/src/assets/images/huangyanpei/reflection/scene4/12_006.png new file mode 100644 index 0000000..abc2795 Binary files /dev/null and b/src/assets/images/huangyanpei/reflection/scene4/12_006.png differ diff --git a/src/assets/images/huangyanpei/背景.png b/src/assets/images/huangyanpei/背景.png new file mode 100644 index 0000000..4f0ee9b Binary files /dev/null and b/src/assets/images/huangyanpei/背景.png differ diff --git a/src/assets/images/luxun/README.md b/src/assets/images/luxun/README.md new file mode 100644 index 0000000..26c6322 --- /dev/null +++ b/src/assets/images/luxun/README.md @@ -0,0 +1,57 @@ +# 鲁迅故居图片文件说明 + +## 文件夹结构已创建完成 + +以下文件夹已创建,请将对应的图片文件放入相应文件夹: + +## 需要的图片文件列表 + +### 1. 首页 +- `鲁迅-首页.png` - 首页背景图(放在 luxun 根目录) + +### 2. place1 - 风雨前夕的思想淬炼(探索鲁迅故居一楼客厅) +- `背景.png` - 场景背景图 +- `展品1.png` - 展品1图片 +- `展品2.png` - 展品2图片 +- `展品3.png` - 展品3图片 +- `展品4.png` - 展品4图片 +- `展品5.png` - 展品5图片 + +### 3. place2 - 杂文集里的匕首与投枪(探索卧室兼书房) +- `背景.png` - 场景背景图 +- `展品1.png` - 展品1图片 +- `展品2.png` - 展品2图片 +- `展品3.png` - 展品3图片 +- `展品4.png` - 展品4图片 + +### 4. place3 - 历史新编中的现实呐喊(探索二楼卧室兼书房) +- `背景.png` - 场景背景图 +- `展品1.png` - 展品1图片 +- `展品2.png` - 展品2图片 +- `展品3.png` - 展品3图片 +- `展品4.png` - 展品4图片 + +### 5. place4 - 为亡友编纂的精神丰碑(探索二楼卧室兼书房的书桌) +- `背景.png` - 场景背景图 +- `展品1.png` - 展品1图片 +- `展品2.png` - 展品2图片 +- `展品3.png` - 展品3图片 + +### 6. place5 - 6平方米的红色庇护所(探索鲁迅故居的客房) +- `背景.png` - 场景背景图 +- `展品1.png` - 展品1图片 +- `展品2.png` - 展品2图片 +- `展品3.png` - 展品3图片 + +### 7. reflection - 体悟模块 +- `底图.png` - 体悟模块背景图 + +### 8. internalization - 内化模块 +- `底图.png` - 内化模块背景图 + +## 注意事项 + +1. 所有图片文件请使用 PNG 格式 +2. 文件名请严格按照上述命名,区分大小写 +3. 入口页的鲁迅图标文件已存在于 `entrance/鲁迅.png` + diff --git a/src/assets/images/luxun/place1/前进.png b/src/assets/images/luxun/place1/前进.png new file mode 100644 index 0000000..e213b8b Binary files /dev/null and b/src/assets/images/luxun/place1/前进.png differ diff --git a/src/assets/images/luxun/place1/完整参考.png b/src/assets/images/luxun/place1/完整参考.png new file mode 100644 index 0000000..f61a6fc Binary files /dev/null and b/src/assets/images/luxun/place1/完整参考.png differ diff --git a/src/assets/images/luxun/place1/展品1.png b/src/assets/images/luxun/place1/展品1.png new file mode 100644 index 0000000..f255266 Binary files /dev/null and b/src/assets/images/luxun/place1/展品1.png differ diff --git a/src/assets/images/luxun/place1/展品2.png b/src/assets/images/luxun/place1/展品2.png new file mode 100644 index 0000000..e1d3f15 Binary files /dev/null and b/src/assets/images/luxun/place1/展品2.png differ diff --git a/src/assets/images/luxun/place1/背景.png b/src/assets/images/luxun/place1/背景.png new file mode 100644 index 0000000..4304bc5 Binary files /dev/null and b/src/assets/images/luxun/place1/背景.png differ diff --git a/src/assets/images/luxun/place2/前进.png b/src/assets/images/luxun/place2/前进.png new file mode 100644 index 0000000..b45526a Binary files /dev/null and b/src/assets/images/luxun/place2/前进.png differ diff --git a/src/assets/images/luxun/place2/完整参考.png b/src/assets/images/luxun/place2/完整参考.png new file mode 100644 index 0000000..617cf11 Binary files /dev/null and b/src/assets/images/luxun/place2/完整参考.png differ diff --git a/src/assets/images/luxun/place2/展品3.png b/src/assets/images/luxun/place2/展品3.png new file mode 100644 index 0000000..875c22a Binary files /dev/null and b/src/assets/images/luxun/place2/展品3.png differ diff --git a/src/assets/images/luxun/place2/展品4.png b/src/assets/images/luxun/place2/展品4.png new file mode 100644 index 0000000..85bcc63 Binary files /dev/null and b/src/assets/images/luxun/place2/展品4.png differ diff --git a/src/assets/images/luxun/place2/展品5.png b/src/assets/images/luxun/place2/展品5.png new file mode 100644 index 0000000..ce5d38d Binary files /dev/null and b/src/assets/images/luxun/place2/展品5.png differ diff --git a/src/assets/images/luxun/place2/背景.png b/src/assets/images/luxun/place2/背景.png new file mode 100644 index 0000000..336c3ee Binary files /dev/null and b/src/assets/images/luxun/place2/背景.png differ diff --git a/src/assets/images/luxun/place3/前进.png b/src/assets/images/luxun/place3/前进.png new file mode 100644 index 0000000..3596e1c Binary files /dev/null and b/src/assets/images/luxun/place3/前进.png differ diff --git a/src/assets/images/luxun/place3/完整参考.png b/src/assets/images/luxun/place3/完整参考.png new file mode 100644 index 0000000..9afee0d Binary files /dev/null and b/src/assets/images/luxun/place3/完整参考.png differ diff --git a/src/assets/images/luxun/place3/展品6.png b/src/assets/images/luxun/place3/展品6.png new file mode 100644 index 0000000..48a79df Binary files /dev/null and b/src/assets/images/luxun/place3/展品6.png differ diff --git a/src/assets/images/luxun/place3/展品7.png b/src/assets/images/luxun/place3/展品7.png new file mode 100644 index 0000000..d8c6532 Binary files /dev/null and b/src/assets/images/luxun/place3/展品7.png differ diff --git a/src/assets/images/luxun/place3/展品8.png b/src/assets/images/luxun/place3/展品8.png new file mode 100644 index 0000000..e2fc048 Binary files /dev/null and b/src/assets/images/luxun/place3/展品8.png differ diff --git a/src/assets/images/luxun/place3/背景.png b/src/assets/images/luxun/place3/背景.png new file mode 100644 index 0000000..0fe5998 Binary files /dev/null and b/src/assets/images/luxun/place3/背景.png differ diff --git a/src/assets/images/luxun/place4/前进.png b/src/assets/images/luxun/place4/前进.png new file mode 100644 index 0000000..f3e5e01 Binary files /dev/null and b/src/assets/images/luxun/place4/前进.png differ diff --git a/src/assets/images/luxun/place4/完整参考.png b/src/assets/images/luxun/place4/完整参考.png new file mode 100644 index 0000000..6cf6ab7 Binary files /dev/null and b/src/assets/images/luxun/place4/完整参考.png differ diff --git a/src/assets/images/luxun/place4/展品10.png b/src/assets/images/luxun/place4/展品10.png new file mode 100644 index 0000000..00df72b Binary files /dev/null and b/src/assets/images/luxun/place4/展品10.png differ diff --git a/src/assets/images/luxun/place4/展品9_b.png b/src/assets/images/luxun/place4/展品9_b.png new file mode 100644 index 0000000..34e4f4d Binary files /dev/null and b/src/assets/images/luxun/place4/展品9_b.png differ diff --git a/src/assets/images/luxun/place4/展品9_t.png b/src/assets/images/luxun/place4/展品9_t.png new file mode 100644 index 0000000..1574377 Binary files /dev/null and b/src/assets/images/luxun/place4/展品9_t.png differ diff --git a/src/assets/images/luxun/place4/背景.png b/src/assets/images/luxun/place4/背景.png new file mode 100644 index 0000000..0fe5998 Binary files /dev/null and b/src/assets/images/luxun/place4/背景.png differ diff --git a/src/assets/images/luxun/place5/完整参考.png b/src/assets/images/luxun/place5/完整参考.png new file mode 100644 index 0000000..9a7e4a4 Binary files /dev/null and b/src/assets/images/luxun/place5/完整参考.png differ diff --git a/src/assets/images/luxun/place5/展品11.png b/src/assets/images/luxun/place5/展品11.png new file mode 100644 index 0000000..b38c10a Binary files /dev/null and b/src/assets/images/luxun/place5/展品11.png differ diff --git a/src/assets/images/luxun/place5/展品12.png b/src/assets/images/luxun/place5/展品12.png new file mode 100644 index 0000000..f45f426 Binary files /dev/null and b/src/assets/images/luxun/place5/展品12.png differ diff --git a/src/assets/images/luxun/place5/展品13.png b/src/assets/images/luxun/place5/展品13.png new file mode 100644 index 0000000..a714a95 Binary files /dev/null and b/src/assets/images/luxun/place5/展品13.png differ diff --git a/src/assets/images/luxun/place5/离开.png b/src/assets/images/luxun/place5/离开.png new file mode 100644 index 0000000..beb87c2 Binary files /dev/null and b/src/assets/images/luxun/place5/离开.png differ diff --git a/src/assets/images/luxun/place5/背景.png b/src/assets/images/luxun/place5/背景.png new file mode 100644 index 0000000..9bf1405 Binary files /dev/null and b/src/assets/images/luxun/place5/背景.png differ diff --git a/src/assets/images/luxun/首页.png b/src/assets/images/luxun/首页.png new file mode 100644 index 0000000..9a651e3 Binary files /dev/null and b/src/assets/images/luxun/首页.png differ diff --git a/src/assets/images/maozedong/毛泽东故居底图.png b/src/assets/images/maozedong/毛泽东故居底图.png new file mode 100644 index 0000000..8ffecc3 Binary files /dev/null and b/src/assets/images/maozedong/毛泽东故居底图.png differ diff --git a/src/assets/images/menu/内页居中标题.png b/src/assets/images/menu/内页居中标题.png deleted file mode 100644 index ea8d34e..0000000 Binary files a/src/assets/images/menu/内页居中标题.png and /dev/null differ diff --git a/src/assets/images/menu/卢航-未选中.png b/src/assets/images/menu/卢航-未选中.png deleted file mode 100644 index 48ae8e3..0000000 Binary files a/src/assets/images/menu/卢航-未选中.png and /dev/null differ diff --git a/src/assets/images/menu/名师曹君选中.png b/src/assets/images/menu/名师曹君选中.png deleted file mode 100644 index 48c70e0..0000000 Binary files a/src/assets/images/menu/名师曹君选中.png and /dev/null differ diff --git a/src/assets/images/menu/故居入口页底图.png b/src/assets/images/menu/故居入口页底图.png new file mode 100644 index 0000000..9271df1 Binary files /dev/null and b/src/assets/images/menu/故居入口页底图.png differ diff --git a/src/assets/images/menu/曹君-未选中.png b/src/assets/images/menu/曹君-未选中.png deleted file mode 100644 index 8896b3e..0000000 Binary files a/src/assets/images/menu/曹君-未选中.png and /dev/null differ diff --git a/src/assets/images/menu/未探索.png b/src/assets/images/menu/未探索.png new file mode 100644 index 0000000..5f374ee Binary files /dev/null and b/src/assets/images/menu/未探索.png differ diff --git a/src/assets/images/menu/未看完.png b/src/assets/images/menu/未看完.png new file mode 100644 index 0000000..cb2da99 Binary files /dev/null and b/src/assets/images/menu/未看完.png differ diff --git a/src/assets/images/menu/模块-文化名人.png b/src/assets/images/menu/模块-文化名人.png new file mode 100644 index 0000000..7a82de3 Binary files /dev/null and b/src/assets/images/menu/模块-文化名人.png differ diff --git a/src/assets/images/menu/模块-经济巨擘.png b/src/assets/images/menu/模块-经济巨擘.png new file mode 100644 index 0000000..16432e8 Binary files /dev/null and b/src/assets/images/menu/模块-经济巨擘.png differ diff --git a/src/assets/images/menu/模块-艺术名家.png b/src/assets/images/menu/模块-艺术名家.png new file mode 100644 index 0000000..215b486 Binary files /dev/null and b/src/assets/images/menu/模块-艺术名家.png differ diff --git a/src/assets/images/menu/模块-通用.png b/src/assets/images/menu/模块-通用.png new file mode 100644 index 0000000..3460b76 Binary files /dev/null and b/src/assets/images/menu/模块-通用.png differ diff --git a/src/assets/images/menu/模块-革命先驱.png b/src/assets/images/menu/模块-革命先驱.png new file mode 100644 index 0000000..aa3d901 Binary files /dev/null and b/src/assets/images/menu/模块-革命先驱.png differ diff --git a/src/assets/images/menu/转盘合.png b/src/assets/images/menu/转盘合.png deleted file mode 100644 index fac782a..0000000 Binary files a/src/assets/images/menu/转盘合.png and /dev/null differ diff --git a/src/assets/images/menu/首页-返回.png b/src/assets/images/menu/首页-返回.png new file mode 100644 index 0000000..67993f3 Binary files /dev/null and b/src/assets/images/menu/首页-返回.png differ diff --git a/src/assets/images/menu/首页背景.png b/src/assets/images/menu/首页背景.png deleted file mode 100644 index da82d96..0000000 Binary files a/src/assets/images/menu/首页背景.png and /dev/null differ diff --git a/src/assets/images/menu/龚丹-未选中.png b/src/assets/images/menu/龚丹-未选中.png deleted file mode 100644 index fa4781b..0000000 Binary files a/src/assets/images/menu/龚丹-未选中.png and /dev/null differ diff --git a/src/assets/images/publicity/01工作室介绍选中.png b/src/assets/images/publicity/01工作室介绍选中.png deleted file mode 100644 index b672c64..0000000 Binary files a/src/assets/images/publicity/01工作室介绍选中.png and /dev/null differ diff --git a/src/assets/images/publicity/01未选中.png b/src/assets/images/publicity/01未选中.png deleted file mode 100644 index 151a695..0000000 Binary files a/src/assets/images/publicity/01未选中.png and /dev/null differ diff --git a/src/assets/images/publicity/02带教活动选中.png b/src/assets/images/publicity/02带教活动选中.png deleted file mode 100644 index c16f6d7..0000000 Binary files a/src/assets/images/publicity/02带教活动选中.png and /dev/null differ diff --git a/src/assets/images/publicity/02未选中.png b/src/assets/images/publicity/02未选中.png deleted file mode 100644 index cf67200..0000000 Binary files a/src/assets/images/publicity/02未选中.png and /dev/null differ diff --git a/src/assets/images/publicity/03带教心得选中.png b/src/assets/images/publicity/03带教心得选中.png deleted file mode 100644 index af93c52..0000000 Binary files a/src/assets/images/publicity/03带教心得选中.png and /dev/null differ diff --git a/src/assets/images/publicity/03未选中.png b/src/assets/images/publicity/03未选中.png deleted file mode 100644 index 7f4fd37..0000000 Binary files a/src/assets/images/publicity/03未选中.png and /dev/null differ diff --git a/src/assets/images/publicity/04成果展示选中.png b/src/assets/images/publicity/04成果展示选中.png deleted file mode 100644 index 86c6e0b..0000000 Binary files a/src/assets/images/publicity/04成果展示选中.png and /dev/null differ diff --git a/src/assets/images/publicity/04未选中.png b/src/assets/images/publicity/04未选中.png deleted file mode 100644 index 6bf66c0..0000000 Binary files a/src/assets/images/publicity/04未选中.png and /dev/null differ diff --git a/src/assets/images/publicity/内页底图01.png b/src/assets/images/publicity/内页底图01.png deleted file mode 100644 index 65e8a11..0000000 Binary files a/src/assets/images/publicity/内页底图01.png and /dev/null differ diff --git a/src/assets/images/publicity/功能-发送.png b/src/assets/images/publicity/功能-发送.png deleted file mode 100644 index ea7fc63..0000000 Binary files a/src/assets/images/publicity/功能-发送.png and /dev/null differ diff --git a/src/assets/images/publicity/功能-语音输入.png b/src/assets/images/publicity/功能-语音输入.png deleted file mode 100644 index edcc0a1..0000000 Binary files a/src/assets/images/publicity/功能-语音输入.png and /dev/null differ diff --git a/src/assets/images/publicity/功能-输入.png b/src/assets/images/publicity/功能-输入.png deleted file mode 100644 index 35d3d7a..0000000 Binary files a/src/assets/images/publicity/功能-输入.png and /dev/null differ diff --git a/src/assets/images/publicity/发言底板.png b/src/assets/images/publicity/发言底板.png deleted file mode 100644 index 4ea6a04..0000000 Binary files a/src/assets/images/publicity/发言底板.png and /dev/null differ diff --git a/src/assets/images/publicity/名师工作室-标题.png b/src/assets/images/publicity/名师工作室-标题.png deleted file mode 100644 index 0699c7a..0000000 Binary files a/src/assets/images/publicity/名师工作室-标题.png and /dev/null differ diff --git a/src/assets/images/publicity/按钮-关闭.png b/src/assets/images/publicity/按钮-关闭.png deleted file mode 100644 index cc6cb98..0000000 Binary files a/src/assets/images/publicity/按钮-关闭.png and /dev/null differ diff --git a/src/assets/images/publicity/数字人-头像框.png b/src/assets/images/publicity/数字人-头像框.png deleted file mode 100644 index 0b8738c..0000000 Binary files a/src/assets/images/publicity/数字人-头像框.png and /dev/null differ diff --git a/src/assets/images/publicity/数字人-头像框_.png b/src/assets/images/publicity/数字人-头像框_.png deleted file mode 100644 index 4c87ef9..0000000 Binary files a/src/assets/images/publicity/数字人-头像框_.png and /dev/null differ diff --git a/src/assets/images/publicity/曹君名师数字人分身.png b/src/assets/images/publicity/曹君名师数字人分身.png deleted file mode 100644 index 7c8d08d..0000000 Binary files a/src/assets/images/publicity/曹君名师数字人分身.png and /dev/null differ diff --git a/src/assets/images/publicity/点击提示.png b/src/assets/images/publicity/点击提示.png deleted file mode 100644 index 5922a89..0000000 Binary files a/src/assets/images/publicity/点击提示.png and /dev/null differ diff --git a/src/assets/images/publicity/输入框.png b/src/assets/images/publicity/输入框.png deleted file mode 100644 index 5eb1108..0000000 Binary files a/src/assets/images/publicity/输入框.png and /dev/null differ diff --git a/src/assets/images/star/一-解锁.png b/src/assets/images/star/一-解锁.png new file mode 100644 index 0000000..6690cb3 Binary files /dev/null and b/src/assets/images/star/一-解锁.png differ diff --git a/src/assets/images/star/三-解锁.png b/src/assets/images/star/三-解锁.png new file mode 100644 index 0000000..f57cf9a Binary files /dev/null and b/src/assets/images/star/三-解锁.png differ diff --git a/src/assets/images/star/二-解锁.png b/src/assets/images/star/二-解锁.png new file mode 100644 index 0000000..0fed94d Binary files /dev/null and b/src/assets/images/star/二-解锁.png differ diff --git a/src/assets/images/sunzhongshan/place1/“南北议和”纪念章.png b/src/assets/images/sunzhongshan/place1/“南北议和”纪念章.png new file mode 100644 index 0000000..7bcf655 Binary files /dev/null and b/src/assets/images/sunzhongshan/place1/“南北议和”纪念章.png differ diff --git a/src/assets/images/sunzhongshan/place1/“四大寇”合影.png b/src/assets/images/sunzhongshan/place1/“四大寇”合影.png new file mode 100644 index 0000000..5998540 Binary files /dev/null and b/src/assets/images/sunzhongshan/place1/“四大寇”合影.png differ diff --git a/src/assets/images/sunzhongshan/place1/位置参考.png b/src/assets/images/sunzhongshan/place1/位置参考.png new file mode 100644 index 0000000..936c6d9 Binary files /dev/null and b/src/assets/images/sunzhongshan/place1/位置参考.png differ diff --git a/src/assets/images/sunzhongshan/place1/民立报.png b/src/assets/images/sunzhongshan/place1/民立报.png new file mode 100644 index 0000000..2154390 Binary files /dev/null and b/src/assets/images/sunzhongshan/place1/民立报.png differ diff --git a/src/assets/images/sunzhongshan/place1/申报.png b/src/assets/images/sunzhongshan/place1/申报.png new file mode 100644 index 0000000..5eed704 Binary files /dev/null and b/src/assets/images/sunzhongshan/place1/申报.png differ diff --git a/src/assets/images/sunzhongshan/place1/背景.png b/src/assets/images/sunzhongshan/place1/背景.png new file mode 100644 index 0000000..cb24d29 Binary files /dev/null and b/src/assets/images/sunzhongshan/place1/背景.png differ diff --git a/src/assets/images/sunzhongshan/place1/郑观应的推荐信.png b/src/assets/images/sunzhongshan/place1/郑观应的推荐信.png new file mode 100644 index 0000000..36fb877 Binary files /dev/null and b/src/assets/images/sunzhongshan/place1/郑观应的推荐信.png differ diff --git a/src/assets/images/sunzhongshan/place2/917.9.10孙中山就任中华民国军政府海陆军大元帅留影.png b/src/assets/images/sunzhongshan/place2/917.9.10孙中山就任中华民国军政府海陆军大元帅留影.png new file mode 100644 index 0000000..835de0b Binary files /dev/null and b/src/assets/images/sunzhongshan/place2/917.9.10孙中山就任中华民国军政府海陆军大元帅留影.png differ diff --git a/src/assets/images/sunzhongshan/place2/位置参考.png b/src/assets/images/sunzhongshan/place2/位置参考.png new file mode 100644 index 0000000..0b27ecf Binary files /dev/null and b/src/assets/images/sunzhongshan/place2/位置参考.png differ diff --git a/src/assets/images/sunzhongshan/place2/实业计划.png b/src/assets/images/sunzhongshan/place2/实业计划.png new file mode 100644 index 0000000..5b55c66 Binary files /dev/null and b/src/assets/images/sunzhongshan/place2/实业计划.png differ diff --git a/src/assets/images/sunzhongshan/place2/背景.png b/src/assets/images/sunzhongshan/place2/背景.png new file mode 100644 index 0000000..421301c Binary files /dev/null and b/src/assets/images/sunzhongshan/place2/背景.png differ diff --git a/src/assets/images/sunzhongshan/place2/铁路计划图.png b/src/assets/images/sunzhongshan/place2/铁路计划图.png new file mode 100644 index 0000000..542dc67 Binary files /dev/null and b/src/assets/images/sunzhongshan/place2/铁路计划图.png differ diff --git a/src/assets/images/sunzhongshan/place2/陆军大元帅时佩带的指挥刀.png b/src/assets/images/sunzhongshan/place2/陆军大元帅时佩带的指挥刀.png new file mode 100644 index 0000000..cfec48d Binary files /dev/null and b/src/assets/images/sunzhongshan/place2/陆军大元帅时佩带的指挥刀.png differ diff --git a/src/assets/images/sunzhongshan/place3/中国国民党第一次全国代表大会宣言.png b/src/assets/images/sunzhongshan/place3/中国国民党第一次全国代表大会宣言.png new file mode 100644 index 0000000..73649d3 Binary files /dev/null and b/src/assets/images/sunzhongshan/place3/中国国民党第一次全国代表大会宣言.png differ diff --git a/src/assets/images/sunzhongshan/place3/位置参考.png b/src/assets/images/sunzhongshan/place3/位置参考.png new file mode 100644 index 0000000..aeb5e5b Binary files /dev/null and b/src/assets/images/sunzhongshan/place3/位置参考.png differ diff --git a/src/assets/images/sunzhongshan/place3/星期评论.png b/src/assets/images/sunzhongshan/place3/星期评论.png new file mode 100644 index 0000000..ec8b2a9 Binary files /dev/null and b/src/assets/images/sunzhongshan/place3/星期评论.png differ diff --git a/src/assets/images/sunzhongshan/place3/李大钊给胡适的信.png b/src/assets/images/sunzhongshan/place3/李大钊给胡适的信.png new file mode 100644 index 0000000..7ef4eba Binary files /dev/null and b/src/assets/images/sunzhongshan/place3/李大钊给胡适的信.png differ diff --git a/src/assets/images/sunzhongshan/place3/社会主义的精义.png b/src/assets/images/sunzhongshan/place3/社会主义的精义.png new file mode 100644 index 0000000..c04e63f Binary files /dev/null and b/src/assets/images/sunzhongshan/place3/社会主义的精义.png differ diff --git a/src/assets/images/sunzhongshan/place3/背景.png b/src/assets/images/sunzhongshan/place3/背景.png new file mode 100644 index 0000000..6afa8a9 Binary files /dev/null and b/src/assets/images/sunzhongshan/place3/背景.png differ diff --git a/src/assets/images/sunzhongshan/place4/上海各界人士在外滩码头欢迎孙中山.png b/src/assets/images/sunzhongshan/place4/上海各界人士在外滩码头欢迎孙中山.png new file mode 100644 index 0000000..4e03677 Binary files /dev/null and b/src/assets/images/sunzhongshan/place4/上海各界人士在外滩码头欢迎孙中山.png differ diff --git a/src/assets/images/sunzhongshan/place4/位置参考.png b/src/assets/images/sunzhongshan/place4/位置参考.png new file mode 100644 index 0000000..1730dce Binary files /dev/null and b/src/assets/images/sunzhongshan/place4/位置参考.png differ diff --git a/src/assets/images/sunzhongshan/place4/国事遗嘱.png b/src/assets/images/sunzhongshan/place4/国事遗嘱.png new file mode 100644 index 0000000..df86417 Binary files /dev/null and b/src/assets/images/sunzhongshan/place4/国事遗嘱.png differ diff --git a/src/assets/images/sunzhongshan/place4/背景.png b/src/assets/images/sunzhongshan/place4/背景.png new file mode 100644 index 0000000..adff182 Binary files /dev/null and b/src/assets/images/sunzhongshan/place4/背景.png differ diff --git a/src/assets/images/sunzhongshan/孙中山-首页.png b/src/assets/images/sunzhongshan/孙中山-首页.png new file mode 100644 index 0000000..c34c071 Binary files /dev/null and b/src/assets/images/sunzhongshan/孙中山-首页.png differ diff --git a/src/components/ALERT_USAGE.md b/src/components/ALERT_USAGE.md deleted file mode 100644 index 37af859..0000000 --- a/src/components/ALERT_USAGE.md +++ /dev/null @@ -1,147 +0,0 @@ -# Alert 组件使用说明 - -## 简介 - -`Alert` 是一个通用的提示框组件,类似于 Ant Design 的 Alert,用于向用户显示重要的提示信息。 - -## 特性 - -- 🎨 支持 4 种类型:`warning`、`info`、`success`、`error` -- 🎭 可选显示/隐藏图标 -- ❌ 可选是否可关闭 -- 🎯 居中模态显示 -- ✨ 优雅的动画效果 - -## 基本用法 - -```tsx -import { Alert } from "@/components"; - -function MyComponent() { - const [showAlert, setShowAlert] = useState(false); - - return ( - setShowAlert(false)} - message="这是一条提示信息" - type="warning" - /> - ); -} -``` - -## API - -### Props - -| 参数 | 说明 | 类型 | 默认值 | 必填 | -| -------- | -------------- | --------------------------------------------- | ----------- | ---- | -| isOpen | 是否显示 Alert | `boolean` | - | ✅ | -| onClose | 关闭回调函数 | `() => void` | - | ✅ | -| message | 提示内容 | `string \| ReactNode` | - | ✅ | -| type | 提示类型 | `'warning' \| 'info' \| 'success' \| 'error'` | `'warning'` | ❌ | -| showIcon | 是否显示图标 | `boolean` | `true` | ❌ | -| closable | 是否可关闭 | `boolean` | `true` | ❌ | - -## 示例 - -### 警告提示 - -```tsx - setShowWarning(false)} - message="该名师工作室数字睿教正在筹划中" - type="warning" -/> -``` - -### 成功提示 - -```tsx - setShowSuccess(false)} - message="操作成功!" - type="success" -/> -``` - -### 错误提示 - -```tsx - setShowError(false)} - message="操作失败,请稍后重试" - type="error" -/> -``` - -### 信息提示 - -```tsx - setShowInfo(false)} - message="这是一条普通信息" - type="info" -/> -``` - -### 自定义内容 - -```tsx - setShowCustom(false)} - message={ -
-

自定义标题

-

这是自定义的内容

-
- } - type="info" -/> -``` - -### 不可关闭的提示 - -```tsx - {}} - message="这是一条不可关闭的提示" - type="info" - closable={false} -/> -``` - -### 无图标提示 - -```tsx - setShowNoIcon(false)} - message="这是一条没有图标的提示" - type="info" - showIcon={false} -/> -``` - -## 样式说明 - -每种类型都有对应的颜色主题: - -- **warning**: 黄色系(适用于警告信息) -- **info**: 蓝色系(适用于一般信息) -- **success**: 绿色系(适用于成功提示) -- **error**: 红色系(适用于错误提示) - -## 注意事项 - -1. Alert 组件会创建一个全屏半透明遮罩层 -2. 点击遮罩层可以关闭 Alert(当 `closable` 为 `true` 时) -3. Alert 的 z-index 为 50,确保在大多数元素之上 -4. 支持动画效果,通过 `animate-scale-in` 类实现 diff --git a/src/components/Alert.tsx b/src/components/Alert.tsx deleted file mode 100644 index f50c752..0000000 --- a/src/components/Alert.tsx +++ /dev/null @@ -1,152 +0,0 @@ -import { ReactNode } from "react"; - -type AlertType = "warning" | "info" | "success" | "error"; - -interface AlertProps { - isOpen: boolean; - onClose: () => void; - message: string | ReactNode; - type?: AlertType; - showIcon?: boolean; - closable?: boolean; -} - -const alertStyles: Record< - AlertType, - { - bg: string; - border: string; - text: string; - icon: string; - } -> = { - warning: { - bg: "bg-yellow-50", - border: "border-yellow-400", - text: "text-yellow-800", - icon: "text-yellow-400", - }, - info: { - bg: "bg-blue-50", - border: "border-blue-400", - text: "text-blue-800", - icon: "text-blue-400", - }, - success: { - bg: "bg-green-50", - border: "border-green-400", - text: "text-green-800", - icon: "text-green-400", - }, - error: { - bg: "bg-red-50", - border: "border-red-400", - text: "text-red-800", - icon: "text-red-400", - }, -}; - -const icons = { - warning: ( - - - - ), - info: ( - - - - ), - success: ( - - - - ), - error: ( - - - - ), -}; - -export const Alert = ({ - isOpen, - onClose, - message, - type = "warning", - showIcon = true, - closable = true, -}: AlertProps) => { - if (!isOpen) return null; - - const styles = alertStyles[type]; - - return ( -
- {/* 半透明背景 */} -
- - {/* Alert 提示框 */} -
-
- {/* 图标 */} - {showIcon && ( -
-
{icons[type]}
-
- )} - - {/* 内容 */} -
- {typeof message === "string" ? ( -

{message}

- ) : ( - message - )} -
- - {/* 关闭按钮 */} - {closable && ( - - )} -
-
-
- ); -}; diff --git a/src/components/BackgroundImage.tsx b/src/components/BackgroundImage.tsx deleted file mode 100644 index 4b48242..0000000 --- a/src/components/BackgroundImage.tsx +++ /dev/null @@ -1,188 +0,0 @@ -import { useState, useRef, useEffect } from "react"; -import { clsx } from "clsx"; - -interface BackgroundImageProps extends React.HTMLAttributes { - src: string; - alt?: string; - className?: string; - width?: number | string; - height?: number | string; - backgroundSize?: "cover" | "contain" | "auto" | string; - backgroundPosition?: string; - backgroundRepeat?: "no-repeat" | "repeat" | "repeat-x" | "repeat-y"; - placeholder?: string; - fallback?: string; - onLoad?: () => void; - onError?: () => void; - children?: React.ReactNode; - overlay?: boolean; - overlayColor?: string; - overlayOpacity?: number; - overflowHidden?: boolean; - style?: React.CSSProperties; -} - -export default function BackgroundImage({ - src, - alt, - className, - width, - height, - backgroundSize = "cover", - backgroundPosition = "center", - backgroundRepeat = "no-repeat", - placeholder, - fallback, - onLoad, - onError, - children, - overlay = false, - overlayColor = "rgba(0, 0, 0, 0.5)", - overlayOpacity = 0.5, - overflowHidden = true, - style, - ...restProps -}: BackgroundImageProps) { - const [imageSrc, setImageSrc] = useState(src); - const [isLoading, setIsLoading] = useState(true); - const [hasError, setHasError] = useState(false); - const [isLoaded, setIsLoaded] = useState(false); - const containerRef = useRef(null); - const loadedImagesRef = useRef>(new Set()); - - // 预加载图片 - const preloadImage = (url: string): Promise => { - return new Promise((resolve, reject) => { - const img = new Image(); - img.onload = () => resolve(); - img.onerror = () => reject(); - img.src = url; - }); - }; - - // 统一的加载逻辑 - useEffect(() => { - let isMounted = true; - - const loadImage = async () => { - if (!imageSrc || !isMounted) return; - - // 检查是否已经加载过这个图片 - if (loadedImagesRef.current.has(imageSrc)) { - setIsLoading(false); - setIsLoaded(true); - setHasError(false); - return; - } - - try { - await preloadImage(imageSrc); - if (isMounted) { - loadedImagesRef.current.add(imageSrc); - setIsLoading(false); - setIsLoaded(true); - setHasError(false); - onLoad?.(); - } - } catch (error) { - if (isMounted) { - setIsLoading(false); - setHasError(true); - if (fallback && imageSrc !== fallback) { - setImageSrc(fallback); - } else { - onError?.(); - } - } - } - }; - - loadImage(); - - return () => { - isMounted = false; - }; - }, [imageSrc]); // 只在imageSrc改变时执行 - - // 当src改变时更新imageSrc - useEffect(() => { - if (src !== imageSrc) { - setImageSrc(src); - setIsLoading(true); - setHasError(false); - setIsLoaded(false); - } - }, [src]); - - const backgroundStyle = { - width, - height, - backgroundImage: isLoaded - ? `url(${imageSrc})` - : placeholder - ? `url(${placeholder})` - : undefined, - backgroundSize, - backgroundPosition, - backgroundRepeat, - position: "relative" as const, - ...style, - }; - - const overlayStyle = { - backgroundColor: overlayColor, - opacity: overlayOpacity, - }; - - return ( -
- {/* 加载占位符 */} - {isLoading && !placeholder && ( -
-
-
- )} - - {/* 错误状态 */} - {hasError && ( -
-
- - - -

背景图片加载失败

-
-
- )} - - {/* 遮罩层 */} - {overlay && isLoaded && ( -
- )} - - {/* 内容 */} - {children && ( -
{children}
- )} -
- ); -} diff --git a/src/components/COMPONENT_GUIDELINES.md b/src/components/COMPONENT_GUIDELINES.md new file mode 100644 index 0000000..eeca180 --- /dev/null +++ b/src/components/COMPONENT_GUIDELINES.md @@ -0,0 +1,156 @@ +# 组件创建规范 + +## 目录结构 + +采用模块化结构组织组件: + +``` +src/components/ +├── video/ +│ ├── index.ts # 导出入口 +│ ├── video.tsx # 主组件 +│ ├── video.types.ts # 类型定义 +│ ├── video.hooks.ts # 组件专用 hooks(可选) +│ └── video.utils.ts # 工具函数(可选) +├── button/ +│ ├── index.ts +│ └── button.tsx +├── ui/ # 基础 UI 组件 +│ ├── button.tsx +│ └── dialog.tsx +└── index.ts # 统一导出所有组件 +``` + +## 命名规范 + +| 类型 | 规范 | 示例 | +| ---------- | ------------------ | ------------------ | +| 文件名 | kebab-case | `video-player.tsx` | +| 目录名 | kebab-case | `video-player/` | +| 组件名 | PascalCase | `VideoPlayer` | +| Props 接口 | `{组件名}Props` | `VideoPlayerProps` | +| Ref 接口 | `{组件名}Ref` | `VideoPlayerRef` | +| 导出类型 | `{组件名}{类型名}` | `VideoAnchor` | + +## 文件结构顺序 + +每个组件文件按以下顺序组织: + +1. **Imports** - 导入语句 +2. **Types/Interfaces** - 类型定义(需导出) +3. **Constants** - 常量定义 +4. **Helper Functions** - 辅助函数 +5. **Component** - 组件定义 +6. **displayName** - 设置显示名称 +7. **Export** - 默认导出 + +## 组件模板 + +````tsx +import React, { + forwardRef, + useRef, + useState, + useImperativeHandle, +} from "react"; +import { cn } from "@/lib/utils"; + +/** 组件配置项 */ +export interface ComponentNameProps { + /** 必填属性说明 */ + requiredProp: string; + /** 可选属性说明 */ + optionalProp?: boolean; + /** 子元素 */ + children?: React.ReactNode; + /** 自定义类名 */ + className?: string; +} + +/** 组件 Ref 暴露的方法 */ +export interface ComponentNameRef { + /** 方法说明 */ + methodName: () => void; +} + +/** + * ComponentName - 组件简要说明 + * + * @example + * ```tsx + * + * ``` + */ +const ComponentName = forwardRef( + ({ requiredProp, optionalProp = false, className, children }, ref) => { + // 状态定义 + const [state, setState] = useState(""); + + // Ref 定义 + const innerRef = useRef(null); + + // 暴露方法给父组件 + useImperativeHandle(ref, () => ({ + methodName: () => { + // 实现 + }, + })); + + return
{children}
; + } +); + +ComponentName.displayName = "ComponentName"; + +export default ComponentName; +```` + +## index.ts 导出模板 + +```ts +export { default } from "./component-name"; +export { default as ComponentName } from "./component-name"; +export type { ComponentNameProps, ComponentNameRef } from "./component-name"; +``` + +## 类型规范 + +- **必须**为所有 props、state、函数参数和返回值声明类型 +- **禁止**使用 `any`,使用 `unknown` 或泛型替代 +- **导出**所有公共接口和类型 +- 使用 `React.ReactNode` 表示子元素类型 +- 使用 `React.CSSProperties` 表示样式对象 + +## 样式规范 + +- 使用 `cn()` 工具函数合并类名 +- 优先使用 Tailwind CSS 类名 +- 支持通过 `className` prop 自定义样式 +- 避免内联样式,除非是动态计算值 + +```tsx +// ✅ 推荐 +
+ +// ❌ 避免 +
+``` + +## 最佳实践 + +1. **单一职责** - 每个组件只做一件事,保持在 200 行以内 +2. **使用 forwardRef** - 需要暴露 ref 的组件必须使用 +3. **设置 displayName** - 便于 React DevTools 调试 +4. **提取逻辑** - 复杂逻辑提取到自定义 hooks +5. **组合优于继承** - 使用 children 和 render props +6. **早返回** - 避免深层嵌套,使用 early return + +## 文件拆分指南 + +| 文件 | 用途 | 何时创建 | +| ---------------- | -------------- | -------------------- | +| `*.tsx` | 主组件 | 必须 | +| `*.types.ts` | 类型定义 | 类型超过 30 行 | +| `*.hooks.ts` | 组件专用 hooks | 有可复用的状态逻辑 | +| `*.utils.ts` | 工具函数 | 有纯函数逻辑需要提取 | +| `*.constants.ts` | 常量定义 | 有多个常量需要共享 | diff --git a/src/components/MODAL_USAGE.md b/src/components/MODAL_USAGE.md deleted file mode 100644 index 0519ecb..0000000 --- a/src/components/MODAL_USAGE.md +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/components/Modal.tsx b/src/components/Modal.tsx deleted file mode 100644 index 5cb87af..0000000 --- a/src/components/Modal.tsx +++ /dev/null @@ -1,245 +0,0 @@ -import clsx from "clsx"; -import { useState } from "react"; - -type DisplayMode = "modal" | "embedded"; -type EmbeddedPosition = - | "bottom-right" - | "bottom-left" - | "top-right" - | "top-left"; - -interface ModalProps { - isOpen: boolean; - onClose: () => void; - children?: React.ReactNode; - className?: string; - mode?: DisplayMode; - position?: EmbeddedPosition; - width?: string | number; - height?: string | number; - showMask?: boolean; -} - -export const Modal = ({ - isOpen, - onClose, - children, - className, - mode = "modal", - position = "bottom-right", - width, - height, - showMask = true, -}: ModalProps) => { - if (!isOpen) return null; - - // 嵌入式客服对话框模式 - if (mode === "embedded") { - const getPosition = () => { - switch (position) { - case "bottom-right": - return "bottom-6 right-6"; - case "bottom-left": - return "bottom-6 left-6"; - case "top-right": - return "top-6 right-6"; - case "top-left": - return "top-6 left-6"; - } - }; - - const defaultWidth = width || "400px"; - const defaultHeight = height || "600px"; - - return ( -
- {/* 关闭/最小化按钮 */} - - - {/* 内容 */} -
{children}
-
- ); - } - - // 传统弹窗模式 - return ( -
- {/* 背景遮罩 */} - {showMask && ( -
- )} - - {/* 弹窗内容 */} -
- {/* 关闭按钮 */} - - - {/* 弹窗内容 */} -
{children}
-
-
- ); -}; - -interface IframeModalProps { - isOpen: boolean; - onClose: () => void; - url: string; - title?: string; - mode?: DisplayMode; - position?: EmbeddedPosition; - width?: string | number; - height?: string | number; - showMask?: boolean; -} - -export const IframeModal = ({ - isOpen, - onClose, - url, - title, - mode = "modal", - position = "bottom-right", - width, - height, - showMask = true, -}: IframeModalProps) => { - const [hasError, setHasError] = useState(false); - const [isLoading, setIsLoading] = useState(true); - const [errorType, setErrorType] = useState< - "network" | "security" | "unknown" - >("unknown"); - - const handleIframeError = () => { - setHasError(true); - setIsLoading(false); - setErrorType("network"); - }; - - const handleIframeLoad = () => { - setIsLoading(false); - setHasError(false); - - // 监听iframe内部的错误 - const iframe = document.querySelector("iframe"); - if (iframe) { - try { - iframe.contentWindow?.addEventListener("error", (event) => { - console.error("Iframe内部错误:", event); - if ( - event.message?.includes("VideoDecoder") || - event.message?.includes("WebCodecs") - ) { - setErrorType("security"); - setHasError(true); - } - }); - } catch { - console.log("无法访问iframe内容,这是正常的跨域限制"); - } - } - }; - - return ( - -
- {title && mode === "modal" && ( -
-

{title}

-
- )} -
- {isLoading && ( -
-
-
-

正在加载...

-
-
- )} - - {hasError ? ( -
-
-
⚠️
-

- {errorType === "security" ? "页面功能受限" : "页面加载失败"} -

-

- {errorType === "security" - ? "该页面使用了高级视频处理功能,在嵌入模式下可能无法正常工作" - : "由于安全策略限制,无法在此窗口中显示该页面"} -

-

- {errorType === "security" - ? "建议在支持的浏览器中直接访问该页面" - : "请检查网络连接或稍后重试"} -

-
-
- ) : ( -