From 14205a902141cb540378cf14fd27174c772435e8 Mon Sep 17 00:00:00 2001 From: imeepos Date: Wed, 3 Sep 2025 16:33:06 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=85=8D=E7=BD=AE=20TailwindCSS=20?= =?UTF-8?q?=E5=B9=B6=E8=BF=81=E7=A7=BB=E5=88=B0=20Redux?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 配置 TailwindCSS 支持小程序开发 - 安装 tailwindcss, postcss, autoprefixer - 安装 weapp-tailwindcss 插件支持小程序 - 配置 tailwind.config.js 和 postcss.config.js - 更新 Taro 配置支持 TailwindCSS - 从 Zustand 迁移到 Redux Toolkit - 移除 zustand 依赖 - 安装 redux, react-redux, redux-thunk, @reduxjs/toolkit - 重构状态管理架构: - src/constants/ - Action 类型常量 - src/actions/ - Action creators 和异步 actions - src/reducers/ - Reducers - src/selectors/ - 状态选择器 - src/hooks/redux.ts - 类型化 hooks - 更新组件使用新的 Redux API - 保持数据持久化功能 - 更新应用配置 - 将 app.ts 重命名为 app.tsx 支持 JSX - 添加 Redux Provider 到应用根组件 - 更新 TODO.md 标记完成状态 - 构建验证通过,所有功能正常 --- TODO.md | 13 +- config/index.ts | 15 + package.json | 11 +- pnpm-lock.yaml | 2001 +++++++++++++++++++++++++++++++++-- postcss.config.js | 7 + src/actions/history.ts | 200 ++++ src/actions/template.ts | 12 + src/app.css | 4 + src/{app.ts => app.tsx} | 11 +- src/constants/history.ts | 22 + src/constants/template.ts | 3 + src/hooks/redux.ts | 6 + src/pages/history/index.tsx | 17 +- src/pages/home/index.tsx | 18 +- src/reducers/history.ts | 91 ++ src/reducers/index.ts | 11 + src/reducers/template.ts | 31 + src/selectors/history.ts | 18 + src/selectors/template.ts | 15 + src/store/README.md | 167 +++ src/store/historyStore.ts | 137 --- src/store/index.ts | 29 +- src/store/templateStore.ts | 39 - tailwind.config.js | 15 + 24 files changed, 2606 insertions(+), 287 deletions(-) create mode 100644 postcss.config.js create mode 100644 src/actions/history.ts create mode 100644 src/actions/template.ts rename src/{app.ts => app.tsx} (61%) create mode 100644 src/constants/history.ts create mode 100644 src/constants/template.ts create mode 100644 src/hooks/redux.ts create mode 100644 src/reducers/history.ts create mode 100644 src/reducers/index.ts create mode 100644 src/reducers/template.ts create mode 100644 src/selectors/history.ts create mode 100644 src/selectors/template.ts create mode 100644 src/store/README.md delete mode 100644 src/store/historyStore.ts delete mode 100644 src/store/templateStore.ts create mode 100644 tailwind.config.js diff --git a/TODO.md b/TODO.md index 72080e8..a2c1e53 100644 --- a/TODO.md +++ b/TODO.md @@ -53,11 +53,14 @@ interface HistoryRecord { ``` #### 2.2 状态管理 -- [ ] 创建 `src/store/` 目录 -- [ ] 实现 Zustand 状态管理 - - [ ] `src/store/historyStore.ts` - 历史记录管理 - - [ ] `src/store/templateStore.ts` - 模板配置管理 -- [ ] 添加数据持久化功能 +- [x] 创建 `src/store/` 目录 +- [x] 实现 Redux 状态管理(已从 Zustand 迁移到 Redux Toolkit) + - [x] `src/reducers/history.ts` - 历史记录管理 + - [x] `src/reducers/template.ts` - 模板配置管理 + - [x] `src/actions/` - Action creators + - [x] `src/selectors/` - 选择器 + - [x] `src/hooks/redux.ts` - 类型化 hooks +- [x] 添加数据持久化功能(通过 Taro Storage API) ### 阶段三:模板卡片首页开发 (优先级:高) diff --git a/config/index.ts b/config/index.ts index 42a8072..8841b42 100644 --- a/config/index.ts +++ b/config/index.ts @@ -1,4 +1,5 @@ import { defineConfig, type UserConfigExport } from '@tarojs/cli' +import { UnifiedWebpackPluginV5 } from 'weapp-tailwindcss/webpack' import devConfig from './dev' import prodConfig from './prod' @@ -56,6 +57,20 @@ export default defineConfig<'vite'>(async (merge) => { } } }, + webpackChain(chain) { + chain.merge({ + plugin: { + install: { + plugin: UnifiedWebpackPluginV5, + args: [{ + appType: 'taro', + // 下面个配置,会开启 rem -> rpx 的转化 + rem2rpx: true + }] + } + } + }) + } }, // 小程序平台特定配置 weapp: { diff --git a/package.json b/package.json index 1927a7b..ee44c71 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "scripts": { "claude": "claude --dangerously-skip-permissions", "prepare": "husky", + "postinstall": "npx weapp-tw patch", "new": "taro new", "test": "jest", "test:watch": "jest --watch", @@ -51,6 +52,7 @@ "author": "", "dependencies": { "@babel/runtime": "^7.24.4", + "@reduxjs/toolkit": "^2.9.0", "@tarojs/components": "4.1.6", "@tarojs/helper": "4.1.6", "@tarojs/plugin-framework-react": "4.1.6", @@ -68,7 +70,9 @@ "@tarojs/taro": "4.1.6", "react": "^18.0.0", "react-dom": "^18.0.0", - "zustand": "^5.0.8" + "react-redux": "^9.2.0", + "redux": "^5.0.1", + "redux-thunk": "^3.1.0" }, "devDependencies": { "@babel/core": "^7.24.4", @@ -87,6 +91,7 @@ "@types/minimatch": "^5", "@types/react": "^18.0.0", "@vitejs/plugin-react": "^4.3.0", + "autoprefixer": "^10.4.21", "babel-jest": "^30.1.2", "babel-preset-taro": "4.1.6", "eslint": "^8.57.0", @@ -102,9 +107,11 @@ "react-refresh": "^0.14.0", "stylelint": "^16.4.0", "stylelint-config-standard": "^38.0.0", + "tailwindcss": "^4.1.12", "terser": "^5.30.4", "ts-jest": "^29.4.1", "typescript": "^5.4.5", - "vite": "^4.2.0" + "vite": "^4.2.0", + "weapp-tailwindcss": "^4.2.6" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c6143e6..c3aaab7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,9 +11,12 @@ importers: '@babel/runtime': specifier: ^7.24.4 version: 7.28.3 + '@reduxjs/toolkit': + specifier: ^2.9.0 + version: 2.9.0(react-redux@9.2.0(@types/react@18.3.24)(react@18.3.1)(redux@5.0.1))(react@18.3.1) '@tarojs/components': specifier: 4.1.6 - version: 4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5) + version: 4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)) '@tarojs/helper': specifier: 4.1.6 version: 4.1.6 @@ -25,10 +28,10 @@ importers: version: 4.1.6(@tarojs/service@4.1.6)(@tarojs/shared@4.1.6) '@tarojs/plugin-platform-h5': specifier: 4.1.6 - version: 4.1.6(@tarojs/taro@4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5))(@types/react@18.3.24)(postcss@8.5.6)(react@18.3.1)(rollup@3.29.5)(solid-js@1.9.9) + version: 4.1.6(@tarojs/taro@4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)))(@types/react@18.3.24)(postcss@8.5.6)(react@18.3.1)(rollup@3.29.5)(solid-js@1.9.9)(vue@3.5.21(typescript@5.9.2)) '@tarojs/plugin-platform-harmony-hybrid': specifier: 4.1.6 - version: 4.1.6(@babel/core@7.28.3)(@tarojs/taro@4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5))(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(solid-js@1.9.9) + version: 4.1.6(@babel/core@7.28.3)(@tarojs/taro@4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)))(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(solid-js@1.9.9)(vue@3.5.21(typescript@5.9.2)) '@tarojs/plugin-platform-jd': specifier: 4.1.6 version: 4.1.6(@tarojs/service@4.1.6)(@tarojs/shared@4.1.6) @@ -55,16 +58,22 @@ importers: version: 4.1.6 '@tarojs/taro': specifier: 4.1.6 - version: 4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5) + version: 4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)) react: specifier: ^18.0.0 version: 18.3.1 react-dom: specifier: ^18.0.0 version: 18.3.1(react@18.3.1) - zustand: - specifier: ^5.0.8 - version: 5.0.8(@types/react@18.3.24)(react@18.3.1) + react-redux: + specifier: ^9.2.0 + version: 9.2.0(@types/react@18.3.24)(react@18.3.1)(redux@5.0.1) + redux: + specifier: ^5.0.1 + version: 5.0.1 + redux-thunk: + specifier: ^3.1.0 + version: 3.1.0(redux@5.0.1) devDependencies: '@babel/core': specifier: ^7.24.4 @@ -89,7 +98,7 @@ importers: version: 4.1.6(@types/node@24.3.0) '@tarojs/test-utils-react': specifier: ^0.1.1 - version: 0.1.1(@babel/core@7.28.3)(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5))(@tarojs/helper@4.1.6)(@tarojs/plugin-framework-react@4.1.6(@tarojs/helper@4.1.6)(@tarojs/runtime@4.1.6)(@tarojs/shared@4.1.6)(@vitejs/plugin-react@4.7.0(vite@4.5.14(@types/node@24.3.0)(sass@1.91.0)(terser@5.43.1)))(react@18.3.1)(vite@4.5.14(@types/node@24.3.0)(sass@1.91.0)(terser@5.43.1)))(@tarojs/plugin-platform-h5@4.1.6(@tarojs/taro@4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5))(@types/react@18.3.24)(postcss@8.5.6)(react@18.3.1)(rollup@3.29.5)(solid-js@1.9.9))(@tarojs/react@4.1.6(react@18.3.1))(@tarojs/runtime@4.1.6)(@tarojs/shared@4.1.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.1.1(@babel/core@7.28.3)(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)))(@tarojs/helper@4.1.6)(@tarojs/plugin-framework-react@4.1.6(@tarojs/helper@4.1.6)(@tarojs/runtime@4.1.6)(@tarojs/shared@4.1.6)(@vitejs/plugin-react@4.7.0(vite@4.5.14(@types/node@24.3.0)(sass@1.91.0)(terser@5.43.1)))(react@18.3.1)(vite@4.5.14(@types/node@24.3.0)(sass@1.91.0)(terser@5.43.1)))(@tarojs/plugin-platform-h5@4.1.6(@tarojs/taro@4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)))(@types/react@18.3.24)(postcss@8.5.6)(react@18.3.1)(rollup@3.29.5)(solid-js@1.9.9)(vue@3.5.21(typescript@5.9.2)))(@tarojs/react@4.1.6(react@18.3.1))(@tarojs/runtime@4.1.6)(@tarojs/shared@4.1.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tarojs/vite-runner': specifier: 4.1.6 version: 4.1.6(@tarojs/runtime@4.1.6)(@types/babel__core@7.20.5)(jiti@2.5.1)(postcss@8.5.6)(rollup@3.29.5)(terser@5.43.1)(typescript@5.9.2)(vite@4.5.14(@types/node@24.3.0)(sass@1.91.0)(terser@5.43.1)) @@ -114,6 +123,9 @@ importers: '@vitejs/plugin-react': specifier: ^4.3.0 version: 4.7.0(vite@4.5.14(@types/node@24.3.0)(sass@1.91.0)(terser@5.43.1)) + autoprefixer: + specifier: ^10.4.21 + version: 10.4.21(postcss@8.5.6) babel-jest: specifier: ^30.1.2 version: 30.1.2(@babel/core@7.28.3) @@ -159,6 +171,9 @@ importers: stylelint-config-standard: specifier: ^38.0.0 version: 38.0.0(stylelint@16.23.1(typescript@5.9.2)) + tailwindcss: + specifier: ^4.1.12 + version: 4.1.12 terser: specifier: ^5.30.4 version: 5.43.1 @@ -171,6 +186,9 @@ importers: vite: specifier: ^4.2.0 version: 4.5.14(@types/node@24.3.0)(sass@1.91.0)(terser@5.43.1) + weapp-tailwindcss: + specifier: ^4.2.6 + version: 4.2.6(tailwindcss@4.1.12)(typescript@5.9.2) packages: @@ -184,6 +202,9 @@ packages: '@asamuzakjp/css-color@3.2.0': resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} + '@ast-core/escape@1.0.1': + resolution: {integrity: sha512-/kVjBkDzYrSW1S+gTBCuOfhnNkge9qZFJgLT+MOZdmPN4Vts36S60uU5br3ozoxpJ1eRGe6pGy7/EfcOpFFHlA==} + '@babel/code-frame@7.27.1': resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} @@ -962,6 +983,13 @@ packages: resolution: {integrity: sha512-/yCrWGCoA1SVKOks25EGadP9Pnj0oAIHGpl2wH2M2Y46dPM2ueb8wyCVOD7O3WCTkaJ0IkKvzhl1JY7+uCT2Dw==} engines: {node: '>=v18'} + '@csstools/cascade-layer-name-parser@2.0.5': + resolution: {integrity: sha512-p1ko5eHgV+MgXFVa4STPKpvPxr6ReS8oS2jzTukjR74i5zJNyWO1ZM1m8YKBXnzDKWfBN1ztLYlHxbVemDD88A==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 + '@csstools/color-helpers@5.1.0': resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} engines: {node: '>=18'} @@ -997,12 +1025,234 @@ packages: '@csstools/css-parser-algorithms': ^3.0.5 '@csstools/css-tokenizer': ^3.0.4 + '@csstools/postcss-alpha-function@1.0.0': + resolution: {integrity: sha512-r2L8KNg5Wriq5n8IUQcjzy2Rh37J5YjzP9iOyHZL5fxdWYHB08vqykHQa4wAzN/tXwDuCHnhQDGCtxfS76xn7g==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-cascade-layers@5.0.2': + resolution: {integrity: sha512-nWBE08nhO8uWl6kSAeCx4im7QfVko3zLrtgWZY4/bP87zrSPpSyN/3W3TDqz1jJuH+kbKOHXg5rJnK+ZVYcFFg==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-color-function-display-p3-linear@1.0.0': + resolution: {integrity: sha512-7q+OuUqfowRrP84m/Jl0wv3pfCQyUTCW5MxDIux+/yty5IkUUHOTigCjrC0Fjy3OT0ncGLudHbfLWmP7E1arNA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-color-function@4.0.11': + resolution: {integrity: sha512-AtH22zLHTLm64HLdpv5EedT/zmYTm1MtdQbQhRZXxEB6iYtS6SrS1jLX3TcmUWMFzpumK/OVylCm3HcLms4slw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-color-mix-function@3.0.11': + resolution: {integrity: sha512-cQpXBelpTx0YhScZM5Ve0jDCA4RzwFc7oNafzZOGgCHt/GQVYiU8Vevz9QJcwy/W0Pyi/BneY+KMjz23lI9r+Q==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-color-mix-variadic-function-arguments@1.0.1': + resolution: {integrity: sha512-c7hyBtbF+jlHIcUGVdWY06bHICgguV9ypfcELU3eU3W/9fiz2dxM8PqxQk2ndXYTzLnwPvNNqu1yCmQ++N6Dcg==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-content-alt-text@2.0.7': + resolution: {integrity: sha512-cq/zWaEkpcg3RttJ5+GdNwk26NwxY5KgqgtNL777Fdd28AVGHxuBvqmK4Jq4oKhW1NX4M2LbgYAVVN0NZ+/XYQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-exponential-functions@2.0.9': + resolution: {integrity: sha512-abg2W/PI3HXwS/CZshSa79kNWNZHdJPMBXeZNyPQFbbj8sKO3jXxOt/wF7juJVjyDTc6JrvaUZYFcSBZBhaxjw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-font-format-keywords@4.0.0': + resolution: {integrity: sha512-usBzw9aCRDvchpok6C+4TXC57btc4bJtmKQWOHQxOVKen1ZfVqBUuCZ/wuqdX5GHsD0NRSr9XTP+5ID1ZZQBXw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-gamut-mapping@2.0.11': + resolution: {integrity: sha512-fCpCUgZNE2piVJKC76zFsgVW1apF6dpYsqGyH8SIeCcM4pTEsRTWTLCaJIMKFEundsCKwY1rwfhtrio04RJ4Dw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-gradients-interpolation-method@5.0.11': + resolution: {integrity: sha512-8M3mcNTL3cGIJXDnvrJ2oWEcKi3zyw7NeYheFKePUlBmLYm1gkw9Rr/BA7lFONrOPeQA3yeMPldrrws6lqHrug==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-hwb-function@4.0.11': + resolution: {integrity: sha512-9meZbsVWTZkWsSBazQips3cHUOT29a/UAwFz0AMEXukvpIGGDR9+GMl3nIckWO5sPImsadu4F5Zy+zjt8QgCdA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-ic-unit@4.0.3': + resolution: {integrity: sha512-RtYYm2qUIu9vAaHB0cC8rQGlOCQAUgEc2tMr7ewlGXYipBQKjoWmyVArqsk7SEr8N3tErq6P6UOJT3amaVof5Q==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-initial@2.0.1': + resolution: {integrity: sha512-L1wLVMSAZ4wovznquK0xmC7QSctzO4D0Is590bxpGqhqjboLXYA16dWZpfwImkdOgACdQ9PqXsuRroW6qPlEsg==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-is-pseudo-class@5.0.3': + resolution: {integrity: sha512-jS/TY4SpG4gszAtIg7Qnf3AS2pjcUM5SzxpApOrlndMeGhIbaTzWBzzP/IApXoNWEW7OhcjkRT48jnAUIFXhAQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-light-dark-function@2.0.10': + resolution: {integrity: sha512-g7Lwb294lSoNnyrwcqoooh9fTAp47rRNo+ILg7SLRSMU3K9ePIwRt566sNx+pehiCelv4E1ICaU1EwLQuyF2qw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-logical-float-and-clear@3.0.0': + resolution: {integrity: sha512-SEmaHMszwakI2rqKRJgE+8rpotFfne1ZS6bZqBoQIicFyV+xT1UF42eORPxJkVJVrH9C0ctUgwMSn3BLOIZldQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-logical-overflow@2.0.0': + resolution: {integrity: sha512-spzR1MInxPuXKEX2csMamshR4LRaSZ3UXVaRGjeQxl70ySxOhMpP2252RAFsg8QyyBXBzuVOOdx1+bVO5bPIzA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-logical-overscroll-behavior@2.0.0': + resolution: {integrity: sha512-e/webMjoGOSYfqLunyzByZj5KKe5oyVg/YSbie99VEaSDE2kimFm0q1f6t/6Jo+VVCQ/jbe2Xy+uX+C4xzWs4w==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-logical-resize@3.0.0': + resolution: {integrity: sha512-DFbHQOFW/+I+MY4Ycd/QN6Dg4Hcbb50elIJCfnwkRTCX05G11SwViI5BbBlg9iHRl4ytB7pmY5ieAFk3ws7yyg==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-logical-viewport-units@3.0.4': + resolution: {integrity: sha512-q+eHV1haXA4w9xBwZLKjVKAWn3W2CMqmpNpZUk5kRprvSiBEGMgrNH3/sJZ8UA3JgyHaOt3jwT9uFa4wLX4EqQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-media-minmax@2.0.9': + resolution: {integrity: sha512-af9Qw3uS3JhYLnCbqtZ9crTvvkR+0Se+bBqSr7ykAnl9yKhk6895z9rf+2F4dClIDJWxgn0iZZ1PSdkhrbs2ig==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.5': + resolution: {integrity: sha512-zhAe31xaaXOY2Px8IYfoVTB3wglbJUVigGphFLj6exb7cjZRH9A6adyE22XfFK3P2PzwRk0VDeTJmaxpluyrDg==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-nested-calc@4.0.0': + resolution: {integrity: sha512-jMYDdqrQQxE7k9+KjstC3NbsmC063n1FTPLCgCRS2/qHUbHM0mNy9pIn4QIiQGs9I/Bg98vMqw7mJXBxa0N88A==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-normalize-display-values@4.0.0': + resolution: {integrity: sha512-HlEoG0IDRoHXzXnkV4in47dzsxdsjdz6+j7MLjaACABX2NfvjFS6XVAnpaDyGesz9gK2SC7MbNwdCHusObKJ9Q==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-oklab-function@4.0.11': + resolution: {integrity: sha512-9f03ZGxZ2VmSCrM4SDXlAYP+Xpu4VFzemfQUQFL9OYxAbpvDy0FjDipZ0i8So1pgs8VIbQI0bNjFWgfdpGw8ig==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-progressive-custom-properties@4.2.0': + resolution: {integrity: sha512-fWCXRasX17N1NCPTCuwC3FJDV+Wc031f16cFuuMEfIsYJ1q5ABCa59W0C6VeMGqjNv6ldf37vvwXXAeaZjD9PA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-random-function@2.0.1': + resolution: {integrity: sha512-q+FQaNiRBhnoSNo+GzqGOIBKoHQ43lYz0ICrV+UudfWnEF6ksS6DsBIJSISKQT2Bvu3g4k6r7t0zYrk5pDlo8w==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-relative-color-syntax@3.0.11': + resolution: {integrity: sha512-oQ5fZvkcBrWR+k6arHXk0F8FlkmD4IxM+rcGDLWrF2f31tWyEM3lSraeWAV0f7BGH6LIrqmyU3+Qo/1acfoJng==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-scope-pseudo-class@4.0.1': + resolution: {integrity: sha512-IMi9FwtH6LMNuLea1bjVMQAsUhFxJnyLSgOp/cpv5hrzWmrUYU5fm0EguNDIIOHUqzXode8F/1qkC/tEo/qN8Q==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-sign-functions@1.1.4': + resolution: {integrity: sha512-P97h1XqRPcfcJndFdG95Gv/6ZzxUBBISem0IDqPZ7WMvc/wlO+yU0c5D/OCpZ5TJoTt63Ok3knGk64N+o6L2Pg==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-stepped-value-functions@4.0.9': + resolution: {integrity: sha512-h9btycWrsex4dNLeQfyU3y3w40LMQooJWFMm/SK9lrKguHDcFl4VMkncKKoXi2z5rM9YGWbUQABI8BT2UydIcA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-text-decoration-shorthand@4.0.3': + resolution: {integrity: sha512-KSkGgZfx0kQjRIYnpsD7X2Om9BUXX/Kii77VBifQW9Ih929hK0KNjVngHDH0bFB9GmfWcR9vJYJJRvw/NQjkrA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-trigonometric-functions@4.0.9': + resolution: {integrity: sha512-Hnh5zJUdpNrJqK9v1/E3BbrQhaDTj5YiX7P61TOvUhoDHnUmsNNxcDAgkQ32RrcWx9GVUvfUNPcUkn8R3vIX6A==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-unset-value@4.0.0': + resolution: {integrity: sha512-cBz3tOCI5Fw6NIFEwU3RiwK6mn3nKegjpJuzCndoGq3BZPkUjnsq7uQmIeMNeMbMk7YD2MfKcgCpZwX5jyXqCA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/selector-resolve-nested@3.1.0': + resolution: {integrity: sha512-mf1LEW0tJLKfWyvn5KdDrhpxHyuxpbNwTIwOYLIvsTffeyOf85j5oIzfG0yosxDgx/sswlqBnESYUcQH0vgZ0g==} + engines: {node: '>=18'} + peerDependencies: + postcss-selector-parser: ^7.0.0 + '@csstools/selector-specificity@5.0.0': resolution: {integrity: sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==} engines: {node: '>=18'} peerDependencies: postcss-selector-parser: ^7.0.0 + '@csstools/utilities@2.0.0': + resolution: {integrity: sha512-5VdOr0Z71u+Yp3ozOx8T11N703wIFGVRgOWbOZMKgglPJsWA54MRIoMNVMa7shUToIhx5J8vX4sOZgD2XiihiQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + '@dual-bundle/import-meta-resolve@4.1.0': resolution: {integrity: sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==} @@ -1352,6 +1602,10 @@ packages: 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'} + '@istanbuljs/load-nyc-config@1.1.0': resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} @@ -1504,6 +1758,18 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@npmcli/agent@3.0.0': + resolution: {integrity: sha512-S79NdEgDQd/NGCay6TCoVzXSj74skRZIKJcpJjC5lOq34SZzyI6MqtiiWoiVWoVrTcGjNeC4ipbh1VIHlpfF5Q==} + engines: {node: ^18.17.0 || >=20.5.0} + + '@npmcli/fs@4.0.0': + resolution: {integrity: sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==} + engines: {node: ^18.17.0 || >=20.5.0} + + '@npmcli/redact@3.2.2': + resolution: {integrity: sha512-7VmYAmk4csGv08QzrDKScdzn11jHPFGyqJW39FyPgPuAp3zIaUmuCo1yxw9aGs+NEJuTGQ9Gwqpt93vtJubucg==} + engines: {node: ^18.17.0 || >=20.5.0} + '@parcel/watcher-android-arm64@2.5.1': resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} engines: {node: '>= 10.0.0'} @@ -1533,42 +1799,36 @@ packages: engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] - libc: [glibc] '@parcel/watcher-linux-arm-musl@2.5.1': resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] - libc: [musl] '@parcel/watcher-linux-arm64-glibc@2.5.1': resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] - libc: [glibc] '@parcel/watcher-linux-arm64-musl@2.5.1': resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] - libc: [musl] '@parcel/watcher-linux-x64-glibc@2.5.1': resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] - libc: [glibc] '@parcel/watcher-linux-x64-musl@2.5.1': resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] - libc: [musl] '@parcel/watcher-win32-arm64@2.5.1': resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} @@ -1600,6 +1860,17 @@ packages: resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + '@reduxjs/toolkit@2.9.0': + resolution: {integrity: sha512-fSfQlSRu9Z5yBkvsNhYF2rPS8cGXn/TZVrlwN1948QyZ8xMZ0JvP50S2acZNaf+o63u6aEeMjipFyksjIcWrog==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || ^18 || ^19 + react-redux: ^7.2.1 || ^8.1.3 || ^9.0.0 + peerDependenciesMeta: + react: + optional: true + react-redux: + optional: true + '@rnx-kit/babel-preset-metro-react-native@1.1.8': resolution: {integrity: sha512-8DotuBK1ZgV0H/tmCmtW/3ofA7JR/8aPqSu9lKnuqwBfq4bxz+w1sMyfFl89m4teWlkhgyczWBGD6NCLqTgi9A==} peerDependencies: @@ -1694,6 +1965,12 @@ packages: '@sinonjs/fake-timers@13.0.5': resolution: {integrity: sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==} + '@standard-schema/spec@1.0.0': + resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} + + '@standard-schema/utils@0.3.0': + resolution: {integrity: sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==} + '@stencil/core@2.22.3': resolution: {integrity: sha512-kmVA0M/HojwsfkeHsifvHVIYe4l5tin7J5+DLgtl8h6WWfiMClND5K3ifCXXI2ETDNKiEk21p6jql3Fx9o2rng==} engines: {node: '>=12.10.0', npm: '>=6.0.0'} @@ -1722,28 +1999,24 @@ packages: engines: {node: '>=10'} cpu: [arm64] os: [linux] - libc: [glibc] '@swc/core-linux-arm64-musl@1.3.96': resolution: {integrity: sha512-i5/UTUwmJLri7zhtF6SAo/4QDQJDH2fhYJaBIUhrICmIkRO/ltURmpejqxsM/ye9Jqv5zG7VszMC0v/GYn/7BQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - libc: [musl] '@swc/core-linux-x64-gnu@1.3.96': resolution: {integrity: sha512-USdaZu8lTIkm4Yf9cogct/j5eqtdZqTgcTib4I+NloUW0E/hySou3eSyp3V2UAA1qyuC72ld1otXuyKBna0YKQ==} engines: {node: '>=10'} cpu: [x64] os: [linux] - libc: [glibc] '@swc/core-linux-x64-musl@1.3.96': resolution: {integrity: sha512-QYErutd+G2SNaCinUVobfL7jWWjGTI0QEoQ6hqTp7PxCJS/dmKmj3C5ZkvxRYcq7XcZt7ovrYCTwPTHzt6lZBg==} engines: {node: '>=10'} cpu: [x64] os: [linux] - libc: [musl] '@swc/core-win32-arm64-msvc@1.3.96': resolution: {integrity: sha512-hjGvvAduA3Un2cZ9iNP4xvTXOO4jL3G9iakhFsgVhpkU73SGmK7+LN8ZVBEu4oq2SUcHO6caWvnZ881cxGuSpg==} @@ -1789,6 +2062,12 @@ packages: resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} engines: {node: '>=6'} + '@tailwindcss-mangle/config@5.1.1': + resolution: {integrity: sha512-GZQlZjjwFhOTFzxiKvCNKHl597y2p0EglPJpXMJXsPGsynA2WigrcgRH4e6Jg2u03CPi8lYX8+3w4KnWTSszFw==} + + '@tailwindcss-mangle/shared@4.1.1': + resolution: {integrity: sha512-bVRIDBJlo+ysYySVgP1GWC+uHQzlZi6w9Gsvm/UOUA9SXwzwUBlR+25YLJJ9MIT4oaHTK4a/w1kWKHRZnQDbhQ==} + '@tarojs/api@4.1.6': resolution: {integrity: sha512-QkPz1p54FUwbl2/GQjzFCgAokatYd3vrRmUWscJAHrxsG/eNJtFk5K+bBujvikJo4px8P3hn4ZAwGo3PpM5jiw==} engines: {node: '>= 18'} @@ -1813,7 +2092,6 @@ packages: engines: {node: '>= 18'} cpu: [x64] os: [linux] - libc: [glibc] '@tarojs/binding-win32-x64-msvc@4.1.6': resolution: {integrity: sha512-jHeQtg3qJLtTdj36CPgiSzfLyEDP0xt1nm9hXSr3LDvsXrp+7Qz6HL4bgbSEFAxLMnHUd7NnTE1Au3WmNOQTkg==} @@ -1891,28 +2169,24 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [glibc] '@tarojs/parse-css-to-stylesheet-linux-arm64-musl@0.0.69': resolution: {integrity: sha512-bYODGCEx1Ni4EMNuZU95IUPqVZAXsY9gIc5CPSfKQ2j167Vbeo/gskQk/uNVjmnYJ69PplgJ9npylINgLIPIrA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [musl] '@tarojs/parse-css-to-stylesheet-linux-x64-gnu@0.0.69': resolution: {integrity: sha512-89f03s+txGJ1c8Zc6Ib4qTAP4YhfFbVFq29XExqbC7eGvpQl5DeOtwonO5DBwMc7lA+LG4b1Q4CMXE3qodn2eA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [glibc] '@tarojs/parse-css-to-stylesheet-linux-x64-musl@0.0.69': resolution: {integrity: sha512-vyewIf1KysXYNIJdkzc9JSPguTG9zD65Belk3H186mLR18KtsvrqNqlWnP8kKfduF4ixh6qt0F2PkKbeI9PZvg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [musl] '@tarojs/parse-css-to-stylesheet-win32-x64-msvc@0.0.69': resolution: {integrity: sha512-CHKlVjAiSAZTFNV8GkfXV88Jy9yyFSvKBAO3++l2KSQUBUWmPX775FbH+god2BOLf5SfAXRPd0HVAEK9qNeHXQ==} @@ -1952,28 +2226,24 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [glibc] '@tarojs/plugin-doctor-linux-arm64-musl@0.0.13': resolution: {integrity: sha512-V1HnFITOLgHVyQ+OCa1oPFKOtGFRtP91vlbUGfOwMA4GeOVw9g28W/hfTyucTCkfZWlrssLehgW6L2AGAMXh2w==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [musl] '@tarojs/plugin-doctor-linux-x64-gnu@0.0.13': resolution: {integrity: sha512-oetfzBW60uenPBBF4/NE6Mf0Iwkw1YGqIIBiN++aVQynbWrmMzWBsW8kleZ5vN1npxI9aud9EfRU1uM37DrG2A==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [glibc] '@tarojs/plugin-doctor-linux-x64-musl@0.0.13': resolution: {integrity: sha512-OdIF/kFwwM0kQPDnpkanhvfWRaAI6EtDmpM9rQA/Lu2QcJq86w5d7X/WSN0U2xF1nialAUrfl79NyIaEzp4Fcw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [musl] '@tarojs/plugin-doctor-win32-ia32-msvc@0.0.13': resolution: {integrity: sha512-nIbG2SliRhRwACLa1kNMskcfjsihp+3tZQMAxl+LoYUq6JRaWgP3vH2nHkDyZHTCheBTDtAaupqXWrYF3w+U6g==} @@ -2302,6 +2572,9 @@ packages: '@types/tough-cookie@4.0.5': resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + '@types/use-sync-external-store@0.0.6': + resolution: {integrity: sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==} + '@types/yargs-parser@21.0.3': resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} @@ -2408,49 +2681,41 @@ packages: resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==} cpu: [arm64] os: [linux] - libc: [glibc] '@unrs/resolver-binding-linux-arm64-musl@1.11.1': resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==} cpu: [arm64] os: [linux] - libc: [musl] '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==} cpu: [ppc64] os: [linux] - libc: [glibc] '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==} cpu: [riscv64] os: [linux] - libc: [glibc] '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==} cpu: [riscv64] os: [linux] - libc: [musl] '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==} cpu: [s390x] os: [linux] - libc: [glibc] '@unrs/resolver-binding-linux-x64-gnu@1.11.1': resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==} cpu: [x64] os: [linux] - libc: [glibc] '@unrs/resolver-binding-linux-x64-musl@1.11.1': resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==} cpu: [x64] os: [linux] - libc: [musl] '@unrs/resolver-binding-wasm32-wasi@1.11.1': resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==} @@ -2485,6 +2750,56 @@ packages: peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + '@vue/compiler-core@3.5.21': + resolution: {integrity: sha512-8i+LZ0vf6ZgII5Z9XmUvrCyEzocvWT+TeR2VBUVlzIH6Tyv57E20mPZ1bCS+tbejgUgmjrEh7q/0F0bibskAmw==} + + '@vue/compiler-dom@3.5.21': + resolution: {integrity: sha512-jNtbu/u97wiyEBJlJ9kmdw7tAr5Vy0Aj5CgQmo+6pxWNQhXZDPsRr1UWPN4v3Zf82s2H3kF51IbzZ4jMWAgPlQ==} + + '@vue/compiler-sfc@3.5.21': + resolution: {integrity: sha512-SXlyk6I5eUGBd2v8Ie7tF6ADHE9kCR6mBEuPyH1nUZ0h6Xx6nZI29i12sJKQmzbDyr2tUHMhhTt51Z6blbkTTQ==} + + '@vue/compiler-ssr@3.5.21': + resolution: {integrity: sha512-vKQ5olH5edFZdf5ZrlEgSO1j1DMA4u23TVK5XR1uMhvwnYvVdDF0nHXJUblL/GvzlShQbjhZZ2uvYmDlAbgo9w==} + + '@vue/reactivity@3.5.21': + resolution: {integrity: sha512-3ah7sa+Cwr9iiYEERt9JfZKPw4A2UlbY8RbbnH2mGCE8NwHkhmlZt2VsH0oDA3P08X3jJd29ohBDtX+TbD9AsA==} + + '@vue/runtime-core@3.5.21': + resolution: {integrity: sha512-+DplQlRS4MXfIf9gfD1BOJpk5RSyGgGXD/R+cumhe8jdjUcq/qlxDawQlSI8hCKupBlvM+3eS1se5xW+SuNAwA==} + + '@vue/runtime-dom@3.5.21': + resolution: {integrity: sha512-3M2DZsOFwM5qI15wrMmNF5RJe1+ARijt2HM3TbzBbPSuBHOQpoidE+Pa+XEaVN+czbHf81ETRoG1ltztP2em8w==} + + '@vue/server-renderer@3.5.21': + resolution: {integrity: sha512-qr8AqgD3DJPJcGvLcJKQo2tAc8OnXRcfxhOJCPF+fcfn5bBGz7VCcO7t+qETOPxpWK1mgysXvVT/j+xWaHeMWA==} + peerDependencies: + vue: 3.5.21 + + '@vue/shared@3.5.21': + resolution: {integrity: sha512-+2k1EQpnYuVuu3N7atWyG3/xoFWIVJZq4Mz8XNOdScFI0etES75fbny/oU4lKWk/577P1zmg0ioYvpGEDZ3DLw==} + + '@weapp-core/escape@4.0.1': + resolution: {integrity: sha512-FuO9zTs/8VMhoZ+sZkMEMipcHd9FZhxstdhg9+Z3JlTgxMFAIvhBFOuFjM2bUyjDJ7O21nr9podHDjVjcVYu4Q==} + + '@weapp-core/regex@1.0.1': + resolution: {integrity: sha512-gRIHHAb1MoTmM1lzfaKldwNXgsScaVu9/bnZDKT0A1CgUkaHAouxvZta3yQgev91V3ZAHQ+tdwA8WGhpkstzUw==} + + '@weapp-tailwindcss/init@1.0.5': + resolution: {integrity: sha512-WAoRiQCLW8aE3hN7TimryLcgfxAFFDen92iuB6Dr2Rh+5sh+tarDKMfeCYKN6mKTPqlYT44gwVtkde5nIcYURQ==} + + '@weapp-tailwindcss/logger@1.0.2': + resolution: {integrity: sha512-1G2AW8vshJH/Qh3iGNlwkJPH1K7Zyf7DznxEsTU89CuQWRvJ20l4838Mu1E5oDTTKQlBsl6XnaA1FNHfH2oecw==} + + '@weapp-tailwindcss/mangle@1.0.5': + resolution: {integrity: sha512-v59vYs2405ttUyLDXsdrkdwGrp0LEeZfgkycGuVE/T4h3zr45amofbRv3FnZxjMgWpyqSW+tSsxNiNFH6VPbDA==} + + '@weapp-tailwindcss/postcss@1.1.0': + resolution: {integrity: sha512-mlzDy//+yVafNnXx3r9EPKutVARSLsTDc40dDuppsP4J06rX37nBTyOwqdew7w+vkvKiAoiTAq3lfT1XCEFG+A==} + + '@weapp-tailwindcss/shared@1.0.3': + resolution: {integrity: sha512-g6P2zSsVosDOzYYn6zYXGiRNw9jwsBrU6EU6bakVpG4wrpDYAW2T7kJdalCM7F/QyHtkoOKhPVVfNXYwVMA62A==} + JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true @@ -2753,6 +3068,9 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} @@ -2803,6 +3121,22 @@ packages: buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + c12@2.0.4: + resolution: {integrity: sha512-3DbbhnFt0fKJHxU4tEUPmD1ahWE4PWPMomqfYsTJdrhpmEnRKJi3qSC4rO5U6E6zN1+pjBY7+z8fUmNRMaVKLw==} + peerDependencies: + magicast: ^0.3.5 + peerDependenciesMeta: + magicast: + optional: true + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + cacache@19.0.1: + resolution: {integrity: sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ==} + engines: {node: ^18.17.0 || >=20.5.0} + cacheable-request@2.1.4: resolution: {integrity: sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==} @@ -2883,6 +3217,14 @@ packages: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} @@ -2891,6 +3233,9 @@ packages: resolution: {integrity: sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==} engines: {node: '>=8'} + citty@0.1.6: + resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + cjs-module-lexer@2.1.0: resolution: {integrity: sha512-UX0OwmYRYQQetfrLEZeewIFFI+wSTofC+pMBLNuH3RUuu/xzG1oz84UCEDOSoQlN3fZ4+AzmV50ZYvGqkMh9yA==} @@ -2991,6 +3336,12 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + confbox@0.2.2: + resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} + config-chain@1.1.13: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} @@ -2998,6 +3349,10 @@ packages: resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} engines: {node: '>=0.8'} + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} + engines: {node: ^14.18.0 || >=16.10.0} + constant-case@3.0.4: resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} @@ -3054,10 +3409,28 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} + css-blank-pseudo@7.0.1: + resolution: {integrity: sha512-jf+twWGDf6LDoXDUode+nc7ZlrqfaNphrBIBrcmeP3D8yw1uPaix1gCC8LUQUGQ6CycuK2opkbFFWFuq/a94ag==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + css-functions-list@3.2.3: resolution: {integrity: sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==} engines: {node: '>=12 || >=16'} + css-has-pseudo@7.0.3: + resolution: {integrity: sha512-oG+vKuGyqe/xvEMoxAQrhi7uY16deJR3i7wwhBerVrGQKSqUC5GiOVxTpM9F9B9hw0J+eKeOWLH7E9gZ1Dr5rA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + css-prefers-color-scheme@10.0.0: + resolution: {integrity: sha512-VCtXZAWivRglTZditUfB4StnsWr6YVZ2PRtuxQLKTNRdtAf8tpzaVPE9zXIF3VaSc7O70iK/j1+NXxyQCqdPjQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + css-tree@3.1.0: resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} @@ -3065,6 +3438,9 @@ packages: css.escape@1.5.1: resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + cssdb@8.4.0: + resolution: {integrity: sha512-lyATYGyvXwQ8h55WeQeEHXhI+47rl52pXSYkFK/ZrCbAJSgVIaPFjYc3RM8TpRHKk7W3wsAZImmLps+P5VyN9g==} + cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} @@ -3182,6 +3558,9 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -3190,6 +3569,9 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + destr@2.0.5: + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} + detect-libc@1.0.3: resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} engines: {node: '>=0.10'} @@ -3220,6 +3602,19 @@ packages: dom-accessibility-api@0.6.3: resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} @@ -3268,9 +3663,20 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + + encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + end-of-stream@1.4.5: resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + entities@6.0.1: resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} @@ -3288,6 +3694,9 @@ packages: resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} engines: {node: '>=18'} + err-code@2.0.3: + resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} + error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} @@ -3486,6 +3895,9 @@ packages: resolution: {integrity: sha512-xvHszRavo28ejws8FpemjhwswGj4w/BetHIL8cU49u4sGyXDw2+p3YbeDbj6xzlxi6kWTjIRSTJ+9sNXPnF0Zg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + exsolve@1.0.7: + resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==} + ext-list@2.2.2: resolution: {integrity: sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==} engines: {node: '>=0.10.0'} @@ -3640,6 +4052,14 @@ packages: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + + fs-minipass@3.0.3: + resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -3713,6 +4133,10 @@ packages: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} + giget@1.2.5: + resolution: {integrity: sha512-r1ekGw/Bgpi3HLV3h1MRBIlSAdHoIMklpaQ3OQLFcRw9PwAj2rqigvIbg+dBUI51OxVI2jsEtDywDBjSiuf7Ug==} + hasBin: true + git-clone@0.1.0: resolution: {integrity: sha512-zs9rlfa7HyaJAKG9o+V7C6qfMzyc+tb1IIXdUFcOBcR1U7siKy/uPdauLlrH1mc0vOgUwIv4BF+QxPiiTYz3Rw==} @@ -3858,6 +4282,10 @@ packages: hookified@1.12.0: resolution: {integrity: sha512-hMr1Y9TCLshScrBbV2QxJ9BROddxZ12MX9KsCtuGGy/3SmmN5H1PllKerrVlSotur9dlE8hmUKAOSa3WDzsZmQ==} + hosted-git-info@8.1.0: + resolution: {integrity: sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==} + engines: {node: ^18.17.0 || >=20.5.0} + html-encoding-sniffer@4.0.0: resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} engines: {node: '>=18'} @@ -3877,6 +4305,9 @@ packages: resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} engines: {node: '>=8'} + htmlparser2@10.0.0: + resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==} + http-cache-semantics@3.8.1: resolution: {integrity: sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==} @@ -3928,6 +4359,9 @@ packages: resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} engines: {node: '>= 4'} + immer@10.1.3: + resolution: {integrity: sha512-tmjF/k8QDKydUlm3mZU+tjM6zeq9/fFpPqH9SzWmBnVVKsPBg/V66qsMwb3/Bo90cgUN+ghdVBess+hPsxUyRw==} + immutable@5.1.3: resolution: {integrity: sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==} @@ -3977,6 +4411,10 @@ packages: resolution: {integrity: sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ==} engines: {node: '>=4'} + ip-address@10.0.1: + resolution: {integrity: sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==} + engines: {node: '>= 12'} + is-array-buffer@3.0.5: resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} engines: {node: '>= 0.4'} @@ -4008,6 +4446,9 @@ packages: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} + is-css-request@1.0.1: + resolution: {integrity: sha512-KOrHD2lt94cHcS50h0ULYWRJ2f8PhdVqgR+rs0Bk4HwgpxVN4dLM7Dl53da1XdsoOgT9gygNW3eMSMvhaiXMkg==} + is-data-view@1.0.2: resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} engines: {node: '>= 0.4'} @@ -4498,10 +4939,18 @@ packages: resolution: {integrity: sha512-0aeh5HHHgmq1KRdMMDHfhMWQmIT/m7nRDTlxlFqni2Sp0had9baqsjJRvDGdlvgd6NmPE0nPloOipiQJGFtTHQ==} engines: {node: '>=20.0.0'} + loader-utils@2.0.4: + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} + loader-utils@3.3.1: resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==} engines: {node: '>= 12.13.0'} + local-pkg@1.1.2: + resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} + engines: {node: '>=14'} + locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} @@ -4620,6 +5069,10 @@ packages: make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + make-fetch-happen@14.0.3: + resolution: {integrity: sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ==} + engines: {node: ^18.17.0 || >=20.5.0} + makeerror@1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} @@ -4698,6 +5151,34 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + minipass-collect@2.0.1: + resolution: {integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==} + engines: {node: '>=16 || 14 >=14.17'} + + minipass-fetch@4.0.1: + resolution: {integrity: sha512-j7U11C5HXigVuutxebFadoYBbd7VSdZWggSe64NVdvWNBqGAiXPL2QVCehjmw7lY1oF9gOllYbORh+hiNgfPgQ==} + engines: {node: ^18.17.0 || >=20.5.0} + + minipass-flush@1.0.5: + resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} + engines: {node: '>= 8'} + + minipass-pipeline@1.2.4: + resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} + engines: {node: '>=8'} + + minipass-sized@1.0.3: + resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} + engines: {node: '>=8'} + + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + minipass@6.0.2: resolution: {integrity: sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==} engines: {node: '>=16 || 14 >=14.17'} @@ -4706,6 +5187,27 @@ packages: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + + minizlib@3.0.2: + resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} + engines: {node: '>= 18'} + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + + mlly@1.8.0: + resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} + mobile-detect@1.4.5: resolution: {integrity: sha512-yc0LhH6tItlvfLBugVUEtgawwFU2sIe+cSdmRJJCTMZ5GEJyLxNyC/NIOAOGk67Fa8GNpOttO3Xz/1bHpXFD/g==} @@ -4739,6 +5241,10 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + negotiator@1.0.0: + resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} + engines: {node: '>= 0.6'} + neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} @@ -4751,6 +5257,9 @@ packages: node-addon-api@7.1.1: resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + node-fetch-native@1.6.7: + resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} + node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} @@ -4777,6 +5286,14 @@ packages: resolution: {integrity: sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==} engines: {node: '>=4'} + npm-package-arg@12.0.2: + resolution: {integrity: sha512-f1NpFjNI9O4VbKMOlA5QoBq/vSQPORHcTZ2feJpFkTHJ9eQkdlmZEKSjcAhxTGInC7RlEyScT9ui67NaOsjFWA==} + engines: {node: ^18.17.0 || >=20.5.0} + + npm-registry-fetch@18.0.2: + resolution: {integrity: sha512-LeVMZBBVy+oQb5R6FDV9OlJCcWDU+al10oKpe+nsvcHnG24Z3uM3SvJYKfGJlfGjVU8v9liejCrUR/M5HO5NEQ==} + engines: {node: ^18.17.0 || >=20.5.0} + npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} @@ -4784,6 +5301,11 @@ packages: nwsapi@2.2.21: resolution: {integrity: sha512-o6nIY3qwiSXl7/LuOU0Dmuctd34Yay0yeuZRLFmDPrrdHpXKFndPj3hM+YEPVHYC5fx2otBx4Ilc/gyYSAUaIA==} + nypm@0.5.4: + resolution: {integrity: sha512-X0SNNrZiGU8/e/zAB7sCTtdxWTMSIO73q+xuKgglm2Yvzwlo8UoC5FNySQFCvl84uPaeADkqHUZUkWy4aH4xOA==} + engines: {node: ^14.16.0 || >=16.10.0} + hasBin: true + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -4816,6 +5338,9 @@ packages: resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} engines: {node: '>= 0.4'} + ohash@2.0.11: + resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -4883,6 +5408,10 @@ packages: resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-map@7.0.3: + resolution: {integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==} + engines: {node: '>=18'} + p-timeout@2.0.1: resolution: {integrity: sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==} engines: {node: '>=4'} @@ -4963,9 +5492,15 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + pend@1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -5006,6 +5541,12 @@ packages: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + + pkg-types@2.3.0: + resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} + platform@1.3.6: resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==} @@ -5013,23 +5554,118 @@ packages: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} + postcss-attribute-case-insensitive@7.0.1: + resolution: {integrity: sha512-Uai+SupNSqzlschRyNx3kbCTWgY/2hcwtHEI/ej2LJWc9JJ77qKgGptd8DHwY1mXtZ7Aoh4z4yxfwMBue9eNgw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-clamp@4.1.0: + resolution: {integrity: sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==} + engines: {node: '>=7.6.0'} + peerDependencies: + postcss: ^8.4.6 + + postcss-color-functional-notation@7.0.11: + resolution: {integrity: sha512-zfqoUSaHMko/k2PA9xnaydVTHqYv5vphq5Q2AHcG/dCdv/OkHYWcVWfVTBKZ526uzT8L7NghuvSw3C9PxlKnLg==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-color-hex-alpha@10.0.0: + resolution: {integrity: sha512-1kervM2cnlgPs2a8Vt/Qbe5cQ++N7rkYo/2rz2BkqJZIHQwaVuJgQH38REHrAi4uM0b1fqxMkWYmese94iMp3w==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-color-rebeccapurple@10.0.0: + resolution: {integrity: sha512-JFta737jSP+hdAIEhk1Vs0q0YF5P8fFcj+09pweS8ktuGuZ8pPlykHsk6mPxZ8awDl4TrcxUqJo9l1IhVr/OjQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + postcss-css-variables@0.19.0: resolution: {integrity: sha512-Hr0WEYKLK9VCrY15anHXOd4RCvJy/xRvCnWdplGBeLInwEj6Z14hgzTb2W/39dYTCnS8hnHUfU4/F1zxX0IZuQ==} peerDependencies: postcss: ^8.2.6 + postcss-custom-media@11.0.6: + resolution: {integrity: sha512-C4lD4b7mUIw+RZhtY7qUbf4eADmb7Ey8BFA2px9jUbwg7pjTZDl4KY4bvlUV+/vXQvzQRfiGEVJyAbtOsCMInw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-custom-properties@14.0.6: + resolution: {integrity: sha512-fTYSp3xuk4BUeVhxCSJdIPhDLpJfNakZKoiTDx7yRGCdlZrSJR7mWKVOBS4sBF+5poPQFMj2YdXx1VHItBGihQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-custom-selectors@8.0.5: + resolution: {integrity: sha512-9PGmckHQswiB2usSO6XMSswO2yFWVoCAuih1yl9FVcwkscLjRKjwsjM3t+NIWpSU2Jx3eOiK2+t4vVTQaoCHHg==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-dir-pseudo-class@9.0.1: + resolution: {integrity: sha512-tRBEK0MHYvcMUrAuYMEOa0zg9APqirBcgzi6P21OhxtJyJADo/SWBwY1CAwEohQ/6HDaa9jCjLRG7K3PVQYHEA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-double-position-gradients@6.0.3: + resolution: {integrity: sha512-Dl0Z9sdbMwrPslgOaGBZRGo3TASmmgTcqcUODr82MTYyJk6devXZM6MlQjpQKMJqlLJ6oL1w78U7IXFdPA5+ug==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-focus-visible@10.0.1: + resolution: {integrity: sha512-U58wyjS/I1GZgjRok33aE8juW9qQgQUNwTSdxQGuShHzwuYdcklnvK/+qOWX1Q9kr7ysbraQ6ht6r+udansalA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-focus-within@9.0.1: + resolution: {integrity: sha512-fzNUyS1yOYa7mOjpci/bR+u+ESvdar6hk8XNK/TRR0fiGTp2QT5N+ducP0n3rfH/m9I7H/EQU6lsa2BrgxkEjw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-font-variant@5.0.0: + resolution: {integrity: sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==} + peerDependencies: + postcss: ^8.1.0 + + postcss-gap-properties@6.0.0: + resolution: {integrity: sha512-Om0WPjEwiM9Ru+VhfEDPZJAKWUd0mV1HmNXqp2C29z80aQ2uP9UVhLc7e3aYMIor/S5cVhoPgYQ7RtfeZpYTRw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + postcss-html-transform@4.1.6: resolution: {integrity: sha512-zhv1SNeMaa11bOIqCXElBHrrBo3EO+So1lW0ygjW94iCIzk1VqDHYT6Tunqs6DbKsk8dg11POjhLZzi6R0LiDw==} engines: {node: '>= 18'} peerDependencies: postcss: ^8 + postcss-image-set-function@7.0.0: + resolution: {integrity: sha512-QL7W7QNlZuzOwBTeXEmbVckNt1FSmhQtbMRvGGqqU4Nf4xk6KUEQhAoWuMzwbSv5jxiRiSZ5Tv7eiDB9U87znA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + postcss-import@16.1.1: resolution: {integrity: sha512-2xVS1NCZAfjtVdvXiyegxzJ447GyqCeEI5V7ApgQVOWnros1p5lGNovJNapwPpMombyFBfqDwt7AD3n2l0KOfQ==} engines: {node: '>=18.0.0'} peerDependencies: postcss: ^8.0.0 + postcss-lab-function@7.0.11: + resolution: {integrity: sha512-BEA4jId8uQe1gyjZZ6Bunb6ZsH2izks+v25AxQJDBtigXCjTLmCPWECwQpLTtcxH589MVxhs/9TAmRC6lUEmXQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + postcss-load-config@5.1.0: resolution: {integrity: sha512-G5AJ+IX0aD0dygOE0yFZQ/huFFMSNneyfp0e3/bT05a8OfPC5FUoZRPfGijUdGOJNMewJiwzcHJXFafFzeKFVA==} engines: {node: '>= 18'} @@ -5045,6 +5681,12 @@ packages: tsx: optional: true + postcss-logical@8.1.0: + resolution: {integrity: sha512-pL1hXFQ2fEXNKiNiAgtfA005T9FBxky5zkX6s4GZM2D8RkVgRqz3f4g1JUoq925zXv495qk8UNldDwh8uGEDoA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + postcss-modules-extract-imports@3.1.0: resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} engines: {node: ^10 || ^12 || >= 14} @@ -5074,18 +5716,68 @@ packages: peerDependencies: postcss: ^8.0.0 + postcss-nesting@13.0.2: + resolution: {integrity: sha512-1YCI290TX+VP0U/K/aFxzHzQWHWURL+CtHMSbex1lCdpXD1SoR2sYuxDu5aNI9lPoXpKTCggFZiDJbwylU0LEQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-opacity-percentage@3.0.0: + resolution: {integrity: sha512-K6HGVzyxUxd/VgZdX04DCtdwWJ4NGLG212US4/LA1TLAbHgmAsTWVR86o+gGIbFtnTkfOpb9sCRBx8K7HO66qQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-overflow-shorthand@6.0.0: + resolution: {integrity: sha512-BdDl/AbVkDjoTofzDQnwDdm/Ym6oS9KgmO7Gr+LHYjNWJ6ExORe4+3pcLQsLA9gIROMkiGVjjwZNoL/mpXHd5Q==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-page-break@3.0.4: + resolution: {integrity: sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==} + peerDependencies: + postcss: ^8 + + postcss-place@10.0.0: + resolution: {integrity: sha512-5EBrMzat2pPAxQNWYavwAfoKfYcTADJ8AXGVPcUZ2UkNloUTWzJQExgrzrDkh3EKzmAx1evfTAzF9I8NGcc+qw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + postcss-plugin-constparse@4.1.6: resolution: {integrity: sha512-1pNZccbT7EOydsyCuEK+wMiq+0kk09O/T8OoNV7DUHkc1y5h5qUSnDbZWet4RvzbZhU97Wbgqi7mPwAvIMxgDg==} engines: {node: '>= 18'} peerDependencies: postcss: ^8 + postcss-preset-env@10.3.1: + resolution: {integrity: sha512-8ZOOWVwQ0iMpfEYkYo+U6W7fE2dJ/tP6dtEFwPJ66eB5JjnFupfYh+y6zo+vWDO72nGhKOVdxwhTjfzcSNRg4Q==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-pseudo-class-any-link@10.0.1: + resolution: {integrity: sha512-3el9rXlBOqTFaMFkWDOkHUTQekFIYnaQY55Rsp8As8QQkpiSgIYEcF/6Ond93oHiDsGb4kad8zjt+NPlOC1H0Q==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + postcss-pxtransform@4.1.6: resolution: {integrity: sha512-I9K4KXiBRHGO08IbAFO6C9uUWL2bWXODgNkLszewITGOJl6NZrIDqJjZS9zNG9hbw5EUt9FWr7guPVXpQwxo8Q==} engines: {node: '>= 18'} peerDependencies: postcss: ^8 + postcss-rem-to-responsive-pixel@6.0.2: + resolution: {integrity: sha512-Qseol4vPNC+WJIzwU7AWXGc7pjcw+7c2YRh6bwpwz/4akmtL9Zu/mZ87yeaiGuqQaBgQy45266uxIBQY+BMUfQ==} + engines: {node: '>=16.6.0'} + + postcss-replace-overflow-wrap@4.0.0: + resolution: {integrity: sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==} + peerDependencies: + postcss: ^8.0.3 + postcss-resolve-nested-selector@0.1.6: resolution: {integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==} @@ -5095,6 +5787,12 @@ packages: peerDependencies: postcss: ^8.4.31 + postcss-selector-not@8.0.1: + resolution: {integrity: sha512-kmVy/5PYVb2UOhy0+LqUYAhKj7DUGDpSWa5LZqlkWJaaAV+dxxsOG3+St0yNLu6vsKD7Dmqx+nWQt0iil89+WA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + postcss-selector-parser@7.1.0: resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} engines: {node: '>=4'} @@ -5130,12 +5828,20 @@ packages: resolution: {integrity: sha512-D1tKtYvByrBkFLe2wHJl2bwMJIiT8rW+XA+TiataH79/FszLQMrpGEvzUVkzPau7OCO0Qnrhpe87PqtOAIB8Yw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + proc-log@5.0.0: + resolution: {integrity: sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==} + engines: {node: ^18.17.0 || >=20.5.0} + process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} promise-polyfill@7.1.2: resolution: {integrity: sha512-FuEc12/eKqqoRYIGBrUptCBRhobL19PS2U31vMNTfyck1FxPyMfgsXyW4Mav85y/ZN1hop3hOwRlUDok23oYfQ==} + promise-retry@2.0.1: + resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} + engines: {node: '>=10'} + prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} @@ -5158,6 +5864,9 @@ packages: pure-rand@7.0.1: resolution: {integrity: sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==} + quansync@0.2.11: + resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + query-string@5.1.1: resolution: {integrity: sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==} engines: {node: '>=0.10.0'} @@ -5172,6 +5881,9 @@ packages: randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + rc9@2.1.2: + resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} + rc@1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true @@ -5196,6 +5908,18 @@ packages: peerDependencies: react: ^18.2.0 + react-redux@9.2.0: + resolution: {integrity: sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==} + peerDependencies: + '@types/react': ^18.2.25 || ^19 + react: ^18.0 || ^19 + redux: ^5.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + redux: + optional: true + react-refresh@0.14.2: resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} @@ -5230,6 +5954,14 @@ packages: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} + redux-thunk@3.1.0: + resolution: {integrity: sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==} + peerDependencies: + redux: ^5.0.0 + + redux@5.0.1: + resolution: {integrity: sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==} + reflect.getprototypeof@1.0.10: resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} engines: {node: '>= 0.4'} @@ -5282,6 +6014,9 @@ packages: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} + reselect@5.1.1: + resolution: {integrity: sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==} + resolve-cwd@3.0.0: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} engines: {node: '>=8'} @@ -5317,6 +6052,10 @@ packages: resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} engines: {node: '>=18'} + retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + reusify@1.1.0: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -5482,12 +6221,24 @@ packages: resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} engines: {node: '>=18'} + smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + smob@1.5.0: resolution: {integrity: sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==} snake-case@3.0.4: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + socks-proxy-agent@8.0.5: + resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} + engines: {node: '>= 14'} + + socks@2.8.7: + resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + solid-js@1.9.9: resolution: {integrity: sha512-A0ZBPJQldAeGCTW0YRYJmt7RCeh5rbFfPZ2aOttgYnctHE7HgKeHCBB/PVc2P7eOfmNXqMFFFoYYdm3S4dcbkA==} @@ -5528,6 +6279,10 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + ssri@12.0.0: + resolution: {integrity: sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ==} + engines: {node: ^18.17.0 || >=20.5.0} + stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} @@ -5681,6 +6436,21 @@ packages: resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} engines: {node: '>=10.0.0'} + tailwindcss-config@1.1.1: + resolution: {integrity: sha512-VSHcqvRzx95BR5fhMzgEDUU53/18u2K7X2ZtS4gk7xjuQZRfCIgsmF347n1QPrPDXESpepXazN2ULgMlMDpSUg==} + + tailwindcss-patch@7.1.4: + resolution: {integrity: sha512-hlX9cupmZDXdtzQgZ7zVcMZIVLYPOS1QTFtSr1yvjVPcUw2YZMDTL8mWh3FRBVbUIA8IqQGhsr6aaZxz3w71nQ==} + hasBin: true + peerDependencies: + tailwindcss: '>=2.0.0' + peerDependenciesMeta: + tailwindcss: + optional: true + + tailwindcss@4.1.12: + resolution: {integrity: sha512-DzFtxOi+7NsFf7DBtI3BJsynR+0Yp6etH+nRPTbpWnS2pZBaSksv/JGctNwSWzbFjp0vxSqknaUylseZqMDGrA==} + tapable@2.2.3: resolution: {integrity: sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==} engines: {node: '>=6'} @@ -5689,6 +6459,14 @@ packages: resolution: {integrity: sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==} engines: {node: '>= 0.8.0'} + tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + engines: {node: '>=10'} + + tar@7.4.3: + resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + engines: {node: '>=18'} + terser@5.43.1: resolution: {integrity: sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==} engines: {node: '>=10'} @@ -5722,6 +6500,9 @@ packages: tiny-case@1.0.3: resolution: {integrity: sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==} + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + tinyexec@1.0.1: resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} @@ -5859,6 +6640,9 @@ packages: engines: {node: '>=14.17'} hasBin: true + ufo@1.6.1: + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + uglify-js@3.19.3: resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} engines: {node: '>=0.8.0'} @@ -5894,6 +6678,14 @@ packages: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} + unique-filename@4.0.0: + resolution: {integrity: sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ==} + engines: {node: ^18.17.0 || >=20.5.0} + + unique-slug@5.0.0: + resolution: {integrity: sha512-9OdaqO5kwqR+1kVgHAhsp5vPNU0hnxRa26rBFNfNgM7M6pNtgzeBn3s/xbyCQL3dcjzOatcef6UUHpB/6MaETg==} + engines: {node: ^18.17.0 || >=20.5.0} + universal-router@9.2.1: resolution: {integrity: sha512-i3XDhyfg0znwCu2Ue1zwWIWgfed+XYDqlUYXgriGnS58tzO3RgKHe4KWtq9HLQOl/Tknnh0C6jEH0+FLTrrBiQ==} @@ -5934,6 +6726,11 @@ packages: resolution: {integrity: sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A==} engines: {node: '>= 4'} + use-sync-external-store@1.5.0: + resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -5948,6 +6745,10 @@ packages: resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + validate-npm-package-name@6.0.2: + resolution: {integrity: sha512-IUoow1YUtvoBBC06dXs8bR8B9vuA3aJfmQNKMoaPG/OFsPmoQvw8xh+6Ye25Gx9DQhoEom3Pcu9MKHerm/NpUQ==} + engines: {node: ^18.17.0 || >=20.5.0} + vite-plugin-static-copy@0.17.1: resolution: {integrity: sha512-9h3iaVs0bqnqZOM5YHJXGHqdC5VAVlTZ2ARYsuNpzhEJUHmFqXY7dAK4ZFpjEQ4WLFKcaN8yWbczr81n01U4sQ==} engines: {node: ^14.18.0 || >=16.0.0} @@ -5982,6 +6783,14 @@ packages: terser: optional: true + vue@3.5.21: + resolution: {integrity: sha512-xxf9rum9KtOdwdRkiApWL+9hZEMWE90FHh8yS1+KJAiWYh+iGWV1FquPjoO9VUHQ+VIhsCXNNyZ5Sf4++RVZBA==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + w3c-xmlserializer@5.0.0: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} @@ -5992,6 +6801,11 @@ packages: wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + weapp-tailwindcss@4.2.6: + resolution: {integrity: sha512-87BWOcLkz4vk1vUwTmo9qHEjGaoYibym7n4VcxP3v7uXecnTSPzknbj3AOpd4LyNyH2PvJdSfwc/UO/T8/Yp/g==} + engines: {node: ^18.17.0 || >=20.5.0} + hasBin: true + webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} @@ -6111,6 +6925,13 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + yaml@2.8.1: resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==} engines: {node: '>= 14.6'} @@ -6146,24 +6967,6 @@ packages: yup@1.7.0: resolution: {integrity: sha512-VJce62dBd+JQvoc+fCVq+KZfPHr+hXaxCcVgotfwWvlR0Ja3ffYKaJBT8rptPOSKOGJDCUnW2C2JWpud7aRP6Q==} - zustand@5.0.8: - resolution: {integrity: sha512-gyPKpIaxY9XcO2vSMrLbiER7QMAMGOQZVRdJ6Zi782jkbzZygq5GI9nG8g+sMgitRtndwaBSl7uiqC49o1SSiw==} - engines: {node: '>=12.20.0'} - peerDependencies: - '@types/react': '>=18.0.0' - immer: '>=9.0.6' - react: '>=18.0.0' - use-sync-external-store: '>=1.2.0' - peerDependenciesMeta: - '@types/react': - optional: true - immer: - optional: true - react: - optional: true - use-sync-external-store: - optional: true - snapshots: '@adobe/css-tools@4.4.4': {} @@ -6181,6 +6984,8 @@ snapshots: '@csstools/css-tokenizer': 3.0.4 lru-cache: 10.4.3 + '@ast-core/escape@1.0.1': {} + '@babel/code-frame@7.27.1': dependencies: '@babel/helper-validator-identifier': 7.27.1 @@ -7199,6 +8004,11 @@ snapshots: '@types/conventional-commits-parser': 5.0.1 chalk: 5.6.0 + '@csstools/cascade-layer-name-parser@2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/color-helpers@5.1.0': {} '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': @@ -7224,10 +8034,255 @@ snapshots: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-alpha-function@1.0.0(postcss@8.5.6)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.0(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + + '@csstools/postcss-cascade-layers@5.0.2(postcss@8.5.6)': + dependencies: + '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + + '@csstools/postcss-color-function-display-p3-linear@1.0.0(postcss@8.5.6)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.0(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + + '@csstools/postcss-color-function@4.0.11(postcss@8.5.6)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.0(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + + '@csstools/postcss-color-mix-function@3.0.11(postcss@8.5.6)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.0(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + + '@csstools/postcss-color-mix-variadic-function-arguments@1.0.1(postcss@8.5.6)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.0(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + + '@csstools/postcss-content-alt-text@2.0.7(postcss@8.5.6)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.0(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + + '@csstools/postcss-exponential-functions@2.0.9(postcss@8.5.6)': + dependencies: + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.6 + + '@csstools/postcss-font-format-keywords@4.0.0(postcss@8.5.6)': + dependencies: + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-gamut-mapping@2.0.11(postcss@8.5.6)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.6 + + '@csstools/postcss-gradients-interpolation-method@5.0.11(postcss@8.5.6)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.0(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + + '@csstools/postcss-hwb-function@4.0.11(postcss@8.5.6)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.0(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + + '@csstools/postcss-ic-unit@4.0.3(postcss@8.5.6)': + dependencies: + '@csstools/postcss-progressive-custom-properties': 4.2.0(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-initial@2.0.1(postcss@8.5.6)': + dependencies: + postcss: 8.5.6 + + '@csstools/postcss-is-pseudo-class@5.0.3(postcss@8.5.6)': + dependencies: + '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + + '@csstools/postcss-light-dark-function@2.0.10(postcss@8.5.6)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.0(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + + '@csstools/postcss-logical-float-and-clear@3.0.0(postcss@8.5.6)': + dependencies: + postcss: 8.5.6 + + '@csstools/postcss-logical-overflow@2.0.0(postcss@8.5.6)': + dependencies: + postcss: 8.5.6 + + '@csstools/postcss-logical-overscroll-behavior@2.0.0(postcss@8.5.6)': + dependencies: + postcss: 8.5.6 + + '@csstools/postcss-logical-resize@3.0.0(postcss@8.5.6)': + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-logical-viewport-units@3.0.4(postcss@8.5.6)': + dependencies: + '@csstools/css-tokenizer': 3.0.4 + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + + '@csstools/postcss-media-minmax@2.0.9(postcss@8.5.6)': + dependencies: + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/media-query-list-parser': 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + postcss: 8.5.6 + + '@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.5(postcss@8.5.6)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/media-query-list-parser': 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + postcss: 8.5.6 + + '@csstools/postcss-nested-calc@4.0.0(postcss@8.5.6)': + dependencies: + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-normalize-display-values@4.0.0(postcss@8.5.6)': + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-oklab-function@4.0.11(postcss@8.5.6)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.0(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + + '@csstools/postcss-progressive-custom-properties@4.2.0(postcss@8.5.6)': + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-random-function@2.0.1(postcss@8.5.6)': + dependencies: + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.6 + + '@csstools/postcss-relative-color-syntax@3.0.11(postcss@8.5.6)': + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.0(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + + '@csstools/postcss-scope-pseudo-class@4.0.1(postcss@8.5.6)': + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + + '@csstools/postcss-sign-functions@1.1.4(postcss@8.5.6)': + dependencies: + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.6 + + '@csstools/postcss-stepped-value-functions@4.0.9(postcss@8.5.6)': + dependencies: + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.6 + + '@csstools/postcss-text-decoration-shorthand@4.0.3(postcss@8.5.6)': + dependencies: + '@csstools/color-helpers': 5.1.0 + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-trigonometric-functions@4.0.9(postcss@8.5.6)': + dependencies: + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.6 + + '@csstools/postcss-unset-value@4.0.0(postcss@8.5.6)': + dependencies: + postcss: 8.5.6 + + '@csstools/selector-resolve-nested@3.1.0(postcss-selector-parser@7.1.0)': + dependencies: + postcss-selector-parser: 7.1.0 + '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.0)': dependencies: postcss-selector-parser: 7.1.0 + '@csstools/utilities@2.0.0(postcss@8.5.6)': + dependencies: + postcss: 8.5.6 + '@dual-bundle/import-meta-resolve@4.1.0': {} '@emnapi/core@1.5.0': @@ -7459,6 +8514,10 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.2 + '@istanbuljs/load-nyc-config@1.1.0': dependencies: camelcase: 5.3.1 @@ -7738,6 +8797,22 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.19.1 + '@npmcli/agent@3.0.0': + dependencies: + agent-base: 7.1.4 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + lru-cache: 10.4.3 + socks-proxy-agent: 8.0.5 + transitivePeerDependencies: + - supports-color + + '@npmcli/fs@4.0.0': + dependencies: + semver: 7.7.2 + + '@npmcli/redact@3.2.2': {} + '@parcel/watcher-android-arm64@2.5.1': optional: true @@ -7804,6 +8879,18 @@ snapshots: '@pkgr/core@0.2.9': {} + '@reduxjs/toolkit@2.9.0(react-redux@9.2.0(@types/react@18.3.24)(react@18.3.1)(redux@5.0.1))(react@18.3.1)': + dependencies: + '@standard-schema/spec': 1.0.0 + '@standard-schema/utils': 0.3.0 + immer: 10.1.3 + redux: 5.0.1 + redux-thunk: 3.1.0(redux@5.0.1) + reselect: 5.1.1 + optionalDependencies: + react: 18.3.1 + react-redux: 9.2.0(@types/react@18.3.24)(react@18.3.1)(redux@5.0.1) + '@rnx-kit/babel-preset-metro-react-native@1.1.8(@babel/core@7.28.3)(@babel/plugin-transform-typescript@7.28.0(@babel/core@7.28.3))(@babel/runtime@7.28.3)': dependencies: '@babel/core': 7.28.3 @@ -7880,6 +8967,10 @@ snapshots: dependencies: '@sinonjs/commons': 3.0.1 + '@standard-schema/spec@1.0.0': {} + + '@standard-schema/utils@0.3.0': {} + '@stencil/core@2.22.3': {} '@swc/core-darwin-arm64@1.3.96': @@ -7945,6 +9036,18 @@ snapshots: dependencies: defer-to-connect: 1.1.3 + '@tailwindcss-mangle/config@5.1.1': + dependencies: + '@tailwindcss-mangle/shared': 4.1.1 + c12: 2.0.4 + fs-extra: 11.3.1 + is-css-request: 1.0.1 + pathe: 2.0.3 + transitivePeerDependencies: + - magicast + + '@tailwindcss-mangle/shared@4.1.1': {} + '@tarojs/api@4.1.6(@tarojs/runtime@4.1.6)(@tarojs/shared@4.1.6)': dependencies: '@tarojs/runtime': 4.1.6 @@ -7995,12 +9098,12 @@ snapshots: - debug - supports-color - '@tarojs/components-react@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(react@18.3.1)(rollup@3.29.5)(solid-js@1.9.9)': + '@tarojs/components-react@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(react@18.3.1)(rollup@3.29.5)(solid-js@1.9.9)(vue@3.5.21(typescript@5.9.2))': dependencies: '@babel/runtime': 7.28.3 - '@tarojs/components': 4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5) + '@tarojs/components': 4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)) '@tarojs/shared': 4.1.6 - '@tarojs/taro': 4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5) + '@tarojs/taro': 4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)) classnames: 2.5.1 identity-obj-proxy: 3.0.0 react: 18.3.1 @@ -8018,12 +9121,12 @@ snapshots: - webpack-chain - webpack-dev-server - '@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)': + '@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2))': dependencies: '@stencil/core': 2.22.3 '@tarojs/runtime': 4.1.6 '@tarojs/shared': 4.1.6 - '@tarojs/taro': 4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5) + '@tarojs/taro': 4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)) classnames: 2.5.1 hammerjs: 2.0.8 hls.js: 1.6.11 @@ -8032,6 +9135,7 @@ snapshots: tslib: 2.8.1 optionalDependencies: '@types/react': 18.3.24 + vue: 3.5.21(typescript@5.9.2) transitivePeerDependencies: - '@tarojs/helper' - html-webpack-plugin @@ -8199,16 +9303,16 @@ snapshots: '@tarojs/service': 4.1.6 '@tarojs/shared': 4.1.6 - '@tarojs/plugin-platform-h5@4.1.6(@tarojs/taro@4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5))(@types/react@18.3.24)(postcss@8.5.6)(react@18.3.1)(rollup@3.29.5)(solid-js@1.9.9)': + '@tarojs/plugin-platform-h5@4.1.6(@tarojs/taro@4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)))(@types/react@18.3.24)(postcss@8.5.6)(react@18.3.1)(rollup@3.29.5)(solid-js@1.9.9)(vue@3.5.21(typescript@5.9.2))': dependencies: '@babel/core': 7.28.3 - '@tarojs/components': 4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5) - '@tarojs/components-react': 4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(react@18.3.1)(rollup@3.29.5)(solid-js@1.9.9) + '@tarojs/components': 4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)) + '@tarojs/components-react': 4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(react@18.3.1)(rollup@3.29.5)(solid-js@1.9.9)(vue@3.5.21(typescript@5.9.2)) '@tarojs/helper': 4.1.6 '@tarojs/runtime': 4.1.6 '@tarojs/service': 4.1.6 '@tarojs/shared': 4.1.6 - '@tarojs/taro-h5': 4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5))(@tarojs/taro@4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)) + '@tarojs/taro-h5': 4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)))(@tarojs/taro@4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2))) babel-plugin-transform-taroapi: 4.1.6(@babel/core@7.28.3) change-case: 4.1.2 lodash-es: 4.17.21 @@ -8228,18 +9332,18 @@ snapshots: - webpack-chain - webpack-dev-server - '@tarojs/plugin-platform-harmony-hybrid@4.1.6(@babel/core@7.28.3)(@tarojs/taro@4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5))(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(solid-js@1.9.9)': + '@tarojs/plugin-platform-harmony-hybrid@4.1.6(@babel/core@7.28.3)(@tarojs/taro@4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)))(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(solid-js@1.9.9)(vue@3.5.21(typescript@5.9.2))': dependencies: '@tarojs/api': 4.1.6(@tarojs/runtime@4.1.6)(@tarojs/shared@4.1.6) - '@tarojs/components': 4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5) - '@tarojs/components-react': 4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(react@18.3.1)(rollup@3.29.5)(solid-js@1.9.9) + '@tarojs/components': 4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)) + '@tarojs/components-react': 4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(react@18.3.1)(rollup@3.29.5)(solid-js@1.9.9)(vue@3.5.21(typescript@5.9.2)) '@tarojs/helper': 4.1.6 - '@tarojs/plugin-platform-h5': 4.1.6(@tarojs/taro@4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5))(@types/react@18.3.24)(postcss@8.5.6)(react@18.3.1)(rollup@3.29.5)(solid-js@1.9.9) - '@tarojs/router': 4.1.6(@tarojs/runtime@4.1.6)(@tarojs/shared@4.1.6)(@tarojs/taro@4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)) + '@tarojs/plugin-platform-h5': 4.1.6(@tarojs/taro@4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)))(@types/react@18.3.24)(postcss@8.5.6)(react@18.3.1)(rollup@3.29.5)(solid-js@1.9.9)(vue@3.5.21(typescript@5.9.2)) + '@tarojs/router': 4.1.6(@tarojs/runtime@4.1.6)(@tarojs/shared@4.1.6)(@tarojs/taro@4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2))) '@tarojs/runtime': 4.1.6 '@tarojs/service': 4.1.6 '@tarojs/shared': 4.1.6 - '@tarojs/taro-h5': 4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5))(@tarojs/taro@4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)) + '@tarojs/taro-h5': 4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)))(@tarojs/taro@4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2))) axios: 1.11.0 babel-plugin-transform-taroapi: 4.1.6(@babel/core@7.28.3) base64-js: 1.5.1 @@ -8298,11 +9402,11 @@ snapshots: react: 18.3.1 react-reconciler: 0.29.0(react@18.3.1) - '@tarojs/router@4.1.6(@tarojs/runtime@4.1.6)(@tarojs/shared@4.1.6)(@tarojs/taro@4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5))': + '@tarojs/router@4.1.6(@tarojs/runtime@4.1.6)(@tarojs/shared@4.1.6)(@tarojs/taro@4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)))': dependencies: '@tarojs/runtime': 4.1.6 '@tarojs/shared': 4.1.6 - '@tarojs/taro': 4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5) + '@tarojs/taro': 4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)) dingtalk-jsapi: 2.15.6 history: 5.3.0 mobile-detect: 1.4.5 @@ -8341,11 +9445,11 @@ snapshots: '@tarojs/shared@4.1.6': {} - '@tarojs/taro-h5@4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5))(@tarojs/taro@4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5))': + '@tarojs/taro-h5@4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)))(@tarojs/taro@4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)))': dependencies: '@tarojs/api': 4.1.6(@tarojs/runtime@4.1.6)(@tarojs/shared@4.1.6) - '@tarojs/components': 4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5) - '@tarojs/router': 4.1.6(@tarojs/runtime@4.1.6)(@tarojs/shared@4.1.6)(@tarojs/taro@4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)) + '@tarojs/components': 4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)) + '@tarojs/router': 4.1.6(@tarojs/runtime@4.1.6)(@tarojs/shared@4.1.6)(@tarojs/taro@4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2))) '@tarojs/runtime': 4.1.6 '@tarojs/shared': 4.1.6 abortcontroller-polyfill: 1.7.8 @@ -8361,10 +9465,10 @@ snapshots: transitivePeerDependencies: - '@tarojs/taro' - '@tarojs/taro@4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)': + '@tarojs/taro@4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2))': dependencies: '@tarojs/api': 4.1.6(@tarojs/runtime@4.1.6)(@tarojs/shared@4.1.6) - '@tarojs/components': 4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5) + '@tarojs/components': 4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)) '@tarojs/helper': 4.1.6 '@tarojs/runtime': 4.1.6 '@tarojs/shared': 4.1.6 @@ -8373,6 +9477,7 @@ snapshots: optionalDependencies: '@types/react': 18.3.24 rollup: 3.29.5 + vue: 3.5.21(typescript@5.9.2) '@tarojs/test-utils-dom@0.1.1(@babel/core@7.28.3)': dependencies: @@ -8383,13 +9488,13 @@ snapshots: - '@babel/core' - supports-color - '@tarojs/test-utils-react@0.1.1(@babel/core@7.28.3)(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5))(@tarojs/helper@4.1.6)(@tarojs/plugin-framework-react@4.1.6(@tarojs/helper@4.1.6)(@tarojs/runtime@4.1.6)(@tarojs/shared@4.1.6)(@vitejs/plugin-react@4.7.0(vite@4.5.14(@types/node@24.3.0)(sass@1.91.0)(terser@5.43.1)))(react@18.3.1)(vite@4.5.14(@types/node@24.3.0)(sass@1.91.0)(terser@5.43.1)))(@tarojs/plugin-platform-h5@4.1.6(@tarojs/taro@4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5))(@types/react@18.3.24)(postcss@8.5.6)(react@18.3.1)(rollup@3.29.5)(solid-js@1.9.9))(@tarojs/react@4.1.6(react@18.3.1))(@tarojs/runtime@4.1.6)(@tarojs/shared@4.1.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@tarojs/test-utils-react@0.1.1(@babel/core@7.28.3)(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)))(@tarojs/helper@4.1.6)(@tarojs/plugin-framework-react@4.1.6(@tarojs/helper@4.1.6)(@tarojs/runtime@4.1.6)(@tarojs/shared@4.1.6)(@vitejs/plugin-react@4.7.0(vite@4.5.14(@types/node@24.3.0)(sass@1.91.0)(terser@5.43.1)))(react@18.3.1)(vite@4.5.14(@types/node@24.3.0)(sass@1.91.0)(terser@5.43.1)))(@tarojs/plugin-platform-h5@4.1.6(@tarojs/taro@4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)))(@types/react@18.3.24)(postcss@8.5.6)(react@18.3.1)(rollup@3.29.5)(solid-js@1.9.9)(vue@3.5.21(typescript@5.9.2)))(@tarojs/react@4.1.6(react@18.3.1))(@tarojs/runtime@4.1.6)(@tarojs/shared@4.1.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.28.3 - '@tarojs/components': 4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5) + '@tarojs/components': 4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)) '@tarojs/helper': 4.1.6 '@tarojs/plugin-framework-react': 4.1.6(@tarojs/helper@4.1.6)(@tarojs/runtime@4.1.6)(@tarojs/shared@4.1.6)(@vitejs/plugin-react@4.7.0(vite@4.5.14(@types/node@24.3.0)(sass@1.91.0)(terser@5.43.1)))(react@18.3.1)(vite@4.5.14(@types/node@24.3.0)(sass@1.91.0)(terser@5.43.1)) - '@tarojs/plugin-platform-h5': 4.1.6(@tarojs/taro@4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5))(@types/react@18.3.24)(postcss@8.5.6)(react@18.3.1)(rollup@3.29.5)(solid-js@1.9.9) + '@tarojs/plugin-platform-h5': 4.1.6(@tarojs/taro@4.1.6(@tarojs/components@4.1.6(@tarojs/helper@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)))(@tarojs/helper@4.1.6)(@tarojs/shared@4.1.6)(@types/react@18.3.24)(postcss@8.5.6)(rollup@3.29.5)(vue@3.5.21(typescript@5.9.2)))(@types/react@18.3.24)(postcss@8.5.6)(react@18.3.1)(rollup@3.29.5)(solid-js@1.9.9)(vue@3.5.21(typescript@5.9.2)) '@tarojs/react': 4.1.6(react@18.3.1) '@tarojs/runtime': 4.1.6 '@tarojs/shared': 4.1.6 @@ -8621,6 +9726,8 @@ snapshots: '@types/tough-cookie@4.0.5': {} + '@types/use-sync-external-store@0.0.6': {} + '@types/yargs-parser@21.0.3': {} '@types/yargs@17.0.33': @@ -8800,6 +9907,95 @@ snapshots: transitivePeerDependencies: - supports-color + '@vue/compiler-core@3.5.21': + dependencies: + '@babel/parser': 7.28.3 + '@vue/shared': 3.5.21 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.5.21': + dependencies: + '@vue/compiler-core': 3.5.21 + '@vue/shared': 3.5.21 + + '@vue/compiler-sfc@3.5.21': + dependencies: + '@babel/parser': 7.28.3 + '@vue/compiler-core': 3.5.21 + '@vue/compiler-dom': 3.5.21 + '@vue/compiler-ssr': 3.5.21 + '@vue/shared': 3.5.21 + estree-walker: 2.0.2 + magic-string: 0.30.18 + postcss: 8.5.6 + source-map-js: 1.2.1 + + '@vue/compiler-ssr@3.5.21': + dependencies: + '@vue/compiler-dom': 3.5.21 + '@vue/shared': 3.5.21 + + '@vue/reactivity@3.5.21': + dependencies: + '@vue/shared': 3.5.21 + + '@vue/runtime-core@3.5.21': + dependencies: + '@vue/reactivity': 3.5.21 + '@vue/shared': 3.5.21 + + '@vue/runtime-dom@3.5.21': + dependencies: + '@vue/reactivity': 3.5.21 + '@vue/runtime-core': 3.5.21 + '@vue/shared': 3.5.21 + csstype: 3.1.3 + + '@vue/server-renderer@3.5.21(vue@3.5.21(typescript@5.9.2))': + dependencies: + '@vue/compiler-ssr': 3.5.21 + '@vue/shared': 3.5.21 + vue: 3.5.21(typescript@5.9.2) + + '@vue/shared@3.5.21': {} + + '@weapp-core/escape@4.0.1': {} + + '@weapp-core/regex@1.0.1': {} + + '@weapp-tailwindcss/init@1.0.5': + dependencies: + '@weapp-tailwindcss/logger': 1.0.2 + '@weapp-tailwindcss/shared': 1.0.3 + fs-extra: 11.3.1 + npm-registry-fetch: 18.0.2 + pathe: 2.0.3 + transitivePeerDependencies: + - supports-color + + '@weapp-tailwindcss/logger@1.0.2': + dependencies: + consola: 3.4.2 + + '@weapp-tailwindcss/mangle@1.0.5': + dependencies: + '@tailwindcss-mangle/shared': 4.1.1 + '@weapp-core/regex': 1.0.1 + '@weapp-tailwindcss/shared': 1.0.3 + + '@weapp-tailwindcss/postcss@1.1.0': + dependencies: + '@weapp-core/escape': 4.0.1 + '@weapp-tailwindcss/shared': 1.0.3 + postcss: 8.5.6 + postcss-preset-env: 10.3.1(postcss@8.5.6) + postcss-rem-to-responsive-pixel: 6.0.2 + postcss-selector-parser: 7.1.0 + + '@weapp-tailwindcss/shared@1.0.3': {} + JSONStream@1.3.5: dependencies: jsonparse: 1.3.1 @@ -9157,6 +10353,8 @@ snapshots: base64-js@1.5.1: {} + big.js@5.2.2: {} + binary-extensions@2.3.0: {} bl@1.2.3: @@ -9216,6 +10414,38 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 + c12@2.0.4: + dependencies: + chokidar: 4.0.3 + confbox: 0.1.8 + defu: 6.1.4 + dotenv: 16.6.1 + giget: 1.2.5 + jiti: 2.5.1 + mlly: 1.8.0 + ohash: 2.0.11 + pathe: 2.0.3 + perfect-debounce: 1.0.0 + pkg-types: 1.3.1 + rc9: 2.1.2 + + cac@6.7.14: {} + + cacache@19.0.1: + dependencies: + '@npmcli/fs': 4.0.0 + fs-minipass: 3.0.3 + glob: 10.4.5 + lru-cache: 10.4.3 + minipass: 7.1.2 + minipass-collect: 2.0.1 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + p-map: 7.0.3 + ssri: 12.0.0 + tar: 7.4.3 + unique-filename: 4.0.0 + cacheable-request@2.1.4: dependencies: clone-response: 1.0.2 @@ -9336,10 +10566,18 @@ snapshots: dependencies: readdirp: 4.1.2 + chownr@2.0.0: {} + + chownr@3.0.0: {} + ci-info@3.9.0: {} ci-info@4.3.0: {} + citty@0.1.6: + dependencies: + consola: 3.4.2 + cjs-module-lexer@2.1.0: {} classnames@2.5.1: {} @@ -9435,6 +10673,10 @@ snapshots: concat-map@0.0.1: {} + confbox@0.1.8: {} + + confbox@0.2.2: {} + config-chain@1.1.13: dependencies: ini: 1.3.8 @@ -9442,6 +10684,8 @@ snapshots: connect-history-api-fallback@2.0.0: {} + consola@3.4.2: {} + constant-case@3.0.4: dependencies: no-case: 3.0.4 @@ -9501,8 +10745,24 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 + css-blank-pseudo@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + css-functions-list@3.2.3: {} + css-has-pseudo@7.0.3(postcss@8.5.6): + dependencies: + '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + postcss-value-parser: 4.2.0 + + css-prefers-color-scheme@10.0.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + css-tree@3.1.0: dependencies: mdn-data: 2.12.2 @@ -9510,6 +10770,8 @@ snapshots: css.escape@1.5.1: {} + cssdb@8.4.0: {} + cssesc@3.0.0: {} cssstyle@4.6.0: @@ -9626,10 +10888,14 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 + defu@6.1.4: {} + delayed-stream@1.0.0: {} dequal@2.0.3: {} + destr@2.0.5: {} + detect-libc@1.0.3: optional: true @@ -9655,6 +10921,24 @@ snapshots: dom-accessibility-api@0.6.3: {} + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dot-case@3.0.4: dependencies: no-case: 3.0.4 @@ -9711,10 +10995,19 @@ snapshots: emoji-regex@9.2.2: {} + emojis-list@3.0.0: {} + + encoding@0.1.13: + dependencies: + iconv-lite: 0.6.3 + optional: true + end-of-stream@1.4.5: dependencies: once: 1.4.0 + entities@4.5.0: {} + entities@6.0.1: {} env-paths@2.2.1: {} @@ -9723,6 +11016,8 @@ snapshots: environment@1.1.0: {} + err-code@2.0.3: {} + error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 @@ -10127,6 +11422,8 @@ snapshots: jest-mock: 30.0.5 jest-util: 30.0.5 + exsolve@1.0.7: {} + ext-list@2.2.2: dependencies: mime-db: 1.54.0 @@ -10280,6 +11577,14 @@ snapshots: jsonfile: 4.0.0 universalify: 0.1.2 + fs-minipass@2.1.0: + dependencies: + minipass: 3.3.6 + + fs-minipass@3.0.3: + dependencies: + minipass: 7.1.2 + fs.realpath@1.0.0: {} fsevents@2.3.3: @@ -10355,6 +11660,16 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 + giget@1.2.5: + dependencies: + citty: 0.1.6 + consola: 3.4.2 + defu: 6.1.4 + node-fetch-native: 1.6.7 + nypm: 0.5.4 + pathe: 2.0.3 + tar: 6.2.1 + git-clone@0.1.0: {} git-raw-commits@4.0.0: @@ -10539,6 +11854,10 @@ snapshots: hookified@1.12.0: {} + hosted-git-info@8.1.0: + dependencies: + lru-cache: 10.4.3 + html-encoding-sniffer@4.0.0: dependencies: whatwg-encoding: 3.1.1 @@ -10559,6 +11878,13 @@ snapshots: html-tags@3.3.1: {} + htmlparser2@10.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 6.0.1 + http-cache-semantics@3.8.1: {} http-cache-semantics@4.2.0: {} @@ -10605,6 +11931,8 @@ snapshots: ignore@7.0.5: {} + immer@10.1.3: {} + immutable@5.1.3: {} import-fresh@3.3.1: @@ -10665,6 +11993,8 @@ snapshots: from2: 2.3.0 p-is-promise: 1.1.0 + ip-address@10.0.1: {} + is-array-buffer@3.0.5: dependencies: call-bind: 1.0.8 @@ -10700,6 +12030,8 @@ snapshots: dependencies: hasown: 2.0.2 + is-css-request@1.0.1: {} + is-data-view@1.0.2: dependencies: call-bound: 1.0.4 @@ -11410,8 +12742,20 @@ snapshots: rfdc: 1.4.1 wrap-ansi: 9.0.0 + loader-utils@2.0.4: + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.3 + loader-utils@3.3.1: {} + local-pkg@1.1.2: + dependencies: + mlly: 1.8.0 + pkg-types: 2.3.0 + quansync: 0.2.11 + locate-path@5.0.0: dependencies: p-locate: 4.1.0 @@ -11509,6 +12853,22 @@ snapshots: make-error@1.3.6: {} + make-fetch-happen@14.0.3: + dependencies: + '@npmcli/agent': 3.0.0 + cacache: 19.0.1 + http-cache-semantics: 4.2.0 + minipass: 7.1.2 + minipass-fetch: 4.0.1 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + negotiator: 1.0.0 + proc-log: 5.0.0 + promise-retry: 2.0.1 + ssri: 12.0.0 + transitivePeerDependencies: + - supports-color + makeerror@1.0.12: dependencies: tmpl: 1.0.5 @@ -11566,10 +12926,60 @@ snapshots: minimist@1.2.8: {} + minipass-collect@2.0.1: + dependencies: + minipass: 7.1.2 + + minipass-fetch@4.0.1: + dependencies: + minipass: 7.1.2 + minipass-sized: 1.0.3 + minizlib: 3.0.2 + optionalDependencies: + encoding: 0.1.13 + + minipass-flush@1.0.5: + dependencies: + minipass: 3.3.6 + + minipass-pipeline@1.2.4: + dependencies: + minipass: 3.3.6 + + minipass-sized@1.0.3: + dependencies: + minipass: 3.3.6 + + minipass@3.3.6: + dependencies: + yallist: 4.0.0 + + minipass@5.0.0: {} + minipass@6.0.2: {} minipass@7.1.2: {} + minizlib@2.1.2: + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + + minizlib@3.0.2: + dependencies: + minipass: 7.1.2 + + mkdirp@1.0.4: {} + + mkdirp@3.0.1: {} + + mlly@1.8.0: + dependencies: + acorn: 8.15.0 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.1 + mobile-detect@1.4.5: {} mrmime@2.0.1: {} @@ -11592,6 +13002,8 @@ snapshots: natural-compare@1.4.0: {} + negotiator@1.0.0: {} + neo-async@2.6.2: {} no-case@2.3.2: @@ -11606,6 +13018,8 @@ snapshots: node-addon-api@7.1.1: optional: true + node-fetch-native@1.6.7: {} + node-int64@0.4.0: {} node-releases@2.0.19: {} @@ -11627,12 +13041,41 @@ snapshots: config-chain: 1.1.13 pify: 3.0.0 + npm-package-arg@12.0.2: + dependencies: + hosted-git-info: 8.1.0 + proc-log: 5.0.0 + semver: 7.7.2 + validate-npm-package-name: 6.0.2 + + npm-registry-fetch@18.0.2: + dependencies: + '@npmcli/redact': 3.2.2 + jsonparse: 1.3.1 + make-fetch-happen: 14.0.3 + minipass: 7.1.2 + minipass-fetch: 4.0.1 + minizlib: 3.0.2 + npm-package-arg: 12.0.2 + proc-log: 5.0.0 + transitivePeerDependencies: + - supports-color + npm-run-path@4.0.1: dependencies: path-key: 3.1.1 nwsapi@2.2.21: {} + nypm@0.5.4: + dependencies: + citty: 0.1.6 + consola: 3.4.2 + pathe: 2.0.3 + pkg-types: 1.3.1 + tinyexec: 0.3.2 + ufo: 1.6.1 + object-assign@4.1.1: {} object-inspect@1.13.4: {} @@ -11675,6 +13118,8 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.1.1 + ohash@2.0.11: {} + once@1.4.0: dependencies: wrappy: 1.0.2 @@ -11750,6 +13195,8 @@ snapshots: dependencies: p-limit: 4.0.0 + p-map@7.0.3: {} + p-timeout@2.0.1: dependencies: p-finally: 1.0.0 @@ -11828,8 +13275,12 @@ snapshots: path-type@4.0.0: {} + pathe@2.0.3: {} + pend@1.2.0: {} + perfect-debounce@1.0.0: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -11854,10 +13305,53 @@ snapshots: dependencies: find-up: 4.1.0 + pkg-types@1.3.1: + dependencies: + confbox: 0.1.8 + mlly: 1.8.0 + pathe: 2.0.3 + + pkg-types@2.3.0: + dependencies: + confbox: 0.2.2 + exsolve: 1.0.7 + pathe: 2.0.3 + platform@1.3.6: {} possible-typed-array-names@1.1.0: {} + postcss-attribute-case-insensitive@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + + postcss-clamp@4.1.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-color-functional-notation@7.0.11(postcss@8.5.6): + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.0(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + + postcss-color-hex-alpha@10.0.0(postcss@8.5.6): + dependencies: + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-color-rebeccapurple@10.0.0(postcss@8.5.6): + dependencies: + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + postcss-css-variables@0.19.0(postcss@8.5.6): dependencies: balanced-match: 1.0.2 @@ -11865,10 +13359,71 @@ snapshots: extend: 3.0.2 postcss: 8.5.6 + postcss-custom-media@11.0.6(postcss@8.5.6): + dependencies: + '@csstools/cascade-layer-name-parser': 2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/media-query-list-parser': 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + postcss: 8.5.6 + + postcss-custom-properties@14.0.6(postcss@8.5.6): + dependencies: + '@csstools/cascade-layer-name-parser': 2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-custom-selectors@8.0.5(postcss@8.5.6): + dependencies: + '@csstools/cascade-layer-name-parser': 2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + + postcss-dir-pseudo-class@9.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + + postcss-double-position-gradients@6.0.3(postcss@8.5.6): + dependencies: + '@csstools/postcss-progressive-custom-properties': 4.2.0(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-focus-visible@10.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + + postcss-focus-within@9.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + + postcss-font-variant@5.0.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-gap-properties@6.0.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-html-transform@4.1.6(postcss@8.5.6): dependencies: postcss: 8.5.6 + postcss-image-set-function@7.0.0(postcss@8.5.6): + dependencies: + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + postcss-import@16.1.1(postcss@8.5.6): dependencies: postcss: 8.5.6 @@ -11876,6 +13431,15 @@ snapshots: read-cache: 1.0.0 resolve: 1.22.10 + postcss-lab-function@7.0.11(postcss@8.5.6): + dependencies: + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/postcss-progressive-custom-properties': 4.2.0(postcss@8.5.6) + '@csstools/utilities': 2.0.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-load-config@5.1.0(jiti@2.5.1)(postcss@8.5.6): dependencies: lilconfig: 3.1.3 @@ -11884,6 +13448,11 @@ snapshots: jiti: 2.5.1 postcss: 8.5.6 + postcss-logical@8.1.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + postcss-modules-extract-imports@3.1.0(postcss@8.5.6): dependencies: postcss: 8.5.6 @@ -11917,20 +13486,131 @@ snapshots: postcss-modules-values: 4.0.0(postcss@8.5.6) string-hash: 1.1.3 + postcss-nesting@13.0.2(postcss@8.5.6): + dependencies: + '@csstools/selector-resolve-nested': 3.1.0(postcss-selector-parser@7.1.0) + '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + + postcss-opacity-percentage@3.0.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-overflow-shorthand@6.0.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-page-break@3.0.4(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-place@10.0.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + postcss-plugin-constparse@4.1.6(postcss@8.5.6): dependencies: postcss: 8.5.6 + postcss-preset-env@10.3.1(postcss@8.5.6): + dependencies: + '@csstools/postcss-alpha-function': 1.0.0(postcss@8.5.6) + '@csstools/postcss-cascade-layers': 5.0.2(postcss@8.5.6) + '@csstools/postcss-color-function': 4.0.11(postcss@8.5.6) + '@csstools/postcss-color-function-display-p3-linear': 1.0.0(postcss@8.5.6) + '@csstools/postcss-color-mix-function': 3.0.11(postcss@8.5.6) + '@csstools/postcss-color-mix-variadic-function-arguments': 1.0.1(postcss@8.5.6) + '@csstools/postcss-content-alt-text': 2.0.7(postcss@8.5.6) + '@csstools/postcss-exponential-functions': 2.0.9(postcss@8.5.6) + '@csstools/postcss-font-format-keywords': 4.0.0(postcss@8.5.6) + '@csstools/postcss-gamut-mapping': 2.0.11(postcss@8.5.6) + '@csstools/postcss-gradients-interpolation-method': 5.0.11(postcss@8.5.6) + '@csstools/postcss-hwb-function': 4.0.11(postcss@8.5.6) + '@csstools/postcss-ic-unit': 4.0.3(postcss@8.5.6) + '@csstools/postcss-initial': 2.0.1(postcss@8.5.6) + '@csstools/postcss-is-pseudo-class': 5.0.3(postcss@8.5.6) + '@csstools/postcss-light-dark-function': 2.0.10(postcss@8.5.6) + '@csstools/postcss-logical-float-and-clear': 3.0.0(postcss@8.5.6) + '@csstools/postcss-logical-overflow': 2.0.0(postcss@8.5.6) + '@csstools/postcss-logical-overscroll-behavior': 2.0.0(postcss@8.5.6) + '@csstools/postcss-logical-resize': 3.0.0(postcss@8.5.6) + '@csstools/postcss-logical-viewport-units': 3.0.4(postcss@8.5.6) + '@csstools/postcss-media-minmax': 2.0.9(postcss@8.5.6) + '@csstools/postcss-media-queries-aspect-ratio-number-values': 3.0.5(postcss@8.5.6) + '@csstools/postcss-nested-calc': 4.0.0(postcss@8.5.6) + '@csstools/postcss-normalize-display-values': 4.0.0(postcss@8.5.6) + '@csstools/postcss-oklab-function': 4.0.11(postcss@8.5.6) + '@csstools/postcss-progressive-custom-properties': 4.2.0(postcss@8.5.6) + '@csstools/postcss-random-function': 2.0.1(postcss@8.5.6) + '@csstools/postcss-relative-color-syntax': 3.0.11(postcss@8.5.6) + '@csstools/postcss-scope-pseudo-class': 4.0.1(postcss@8.5.6) + '@csstools/postcss-sign-functions': 1.1.4(postcss@8.5.6) + '@csstools/postcss-stepped-value-functions': 4.0.9(postcss@8.5.6) + '@csstools/postcss-text-decoration-shorthand': 4.0.3(postcss@8.5.6) + '@csstools/postcss-trigonometric-functions': 4.0.9(postcss@8.5.6) + '@csstools/postcss-unset-value': 4.0.0(postcss@8.5.6) + autoprefixer: 10.4.21(postcss@8.5.6) + browserslist: 4.25.4 + css-blank-pseudo: 7.0.1(postcss@8.5.6) + css-has-pseudo: 7.0.3(postcss@8.5.6) + css-prefers-color-scheme: 10.0.0(postcss@8.5.6) + cssdb: 8.4.0 + postcss: 8.5.6 + postcss-attribute-case-insensitive: 7.0.1(postcss@8.5.6) + postcss-clamp: 4.1.0(postcss@8.5.6) + postcss-color-functional-notation: 7.0.11(postcss@8.5.6) + postcss-color-hex-alpha: 10.0.0(postcss@8.5.6) + postcss-color-rebeccapurple: 10.0.0(postcss@8.5.6) + postcss-custom-media: 11.0.6(postcss@8.5.6) + postcss-custom-properties: 14.0.6(postcss@8.5.6) + postcss-custom-selectors: 8.0.5(postcss@8.5.6) + postcss-dir-pseudo-class: 9.0.1(postcss@8.5.6) + postcss-double-position-gradients: 6.0.3(postcss@8.5.6) + postcss-focus-visible: 10.0.1(postcss@8.5.6) + postcss-focus-within: 9.0.1(postcss@8.5.6) + postcss-font-variant: 5.0.0(postcss@8.5.6) + postcss-gap-properties: 6.0.0(postcss@8.5.6) + postcss-image-set-function: 7.0.0(postcss@8.5.6) + postcss-lab-function: 7.0.11(postcss@8.5.6) + postcss-logical: 8.1.0(postcss@8.5.6) + postcss-nesting: 13.0.2(postcss@8.5.6) + postcss-opacity-percentage: 3.0.0(postcss@8.5.6) + postcss-overflow-shorthand: 6.0.0(postcss@8.5.6) + postcss-page-break: 3.0.4(postcss@8.5.6) + postcss-place: 10.0.0(postcss@8.5.6) + postcss-pseudo-class-any-link: 10.0.1(postcss@8.5.6) + postcss-replace-overflow-wrap: 4.0.0(postcss@8.5.6) + postcss-selector-not: 8.0.1(postcss@8.5.6) + + postcss-pseudo-class-any-link@10.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + postcss-pxtransform@4.1.6(postcss@8.5.6): dependencies: postcss: 8.5.6 + postcss-rem-to-responsive-pixel@6.0.2: {} + + postcss-replace-overflow-wrap@4.0.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-resolve-nested-selector@0.1.6: {} postcss-safe-parser@7.0.1(postcss@8.5.6): dependencies: postcss: 8.5.6 + postcss-selector-not@8.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + postcss-selector-parser@7.1.0: dependencies: cssesc: 3.0.0 @@ -11968,10 +13648,17 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.3.1 + proc-log@5.0.0: {} + process-nextick-args@2.0.1: {} promise-polyfill@7.1.2: {} + promise-retry@2.0.1: + dependencies: + err-code: 2.0.3 + retry: 0.12.0 + prop-types@15.8.1: dependencies: loose-envify: 1.4.0 @@ -11993,6 +13680,8 @@ snapshots: pure-rand@7.0.1: {} + quansync@0.2.11: {} + query-string@5.1.1: dependencies: decode-uri-component: 0.2.2 @@ -12011,6 +13700,11 @@ snapshots: dependencies: safe-buffer: 5.2.1 + rc9@2.1.2: + dependencies: + defu: 6.1.4 + destr: 2.0.5 + rc@1.2.8: dependencies: deep-extend: 0.6.0 @@ -12036,6 +13730,15 @@ snapshots: react: 18.3.1 scheduler: 0.23.2 + react-redux@9.2.0(@types/react@18.3.24)(react@18.3.1)(redux@5.0.1): + dependencies: + '@types/use-sync-external-store': 0.0.6 + react: 18.3.1 + use-sync-external-store: 1.5.0(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.24 + redux: 5.0.1 + react-refresh@0.14.2: {} react-refresh@0.17.0: {} @@ -12075,6 +13778,12 @@ snapshots: indent-string: 4.0.0 strip-indent: 3.0.0 + redux-thunk@3.1.0(redux@5.0.1): + dependencies: + redux: 5.0.1 + + redux@5.0.1: {} + reflect.getprototypeof@1.0.10: dependencies: call-bind: 1.0.8 @@ -12134,6 +13843,8 @@ snapshots: require-from-string@2.0.2: {} + reselect@5.1.1: {} + resolve-cwd@3.0.0: dependencies: resolve-from: 5.0.0 @@ -12170,6 +13881,8 @@ snapshots: onetime: 7.0.0 signal-exit: 4.1.0 + retry@0.12.0: {} + reusify@1.1.0: {} rfdc@1.4.1: {} @@ -12366,6 +14079,8 @@ snapshots: ansi-styles: 6.2.1 is-fullwidth-code-point: 5.1.0 + smart-buffer@4.2.0: {} + smob@1.5.0: {} snake-case@3.0.4: @@ -12373,6 +14088,19 @@ snapshots: dot-case: 3.0.4 tslib: 2.8.1 + socks-proxy-agent@8.0.5: + dependencies: + agent-base: 7.1.4 + debug: 4.4.1 + socks: 2.8.7 + transitivePeerDependencies: + - supports-color + + socks@2.8.7: + dependencies: + ip-address: 10.0.1 + smart-buffer: 4.2.0 + solid-js@1.9.9: dependencies: csstype: 3.1.3 @@ -12411,6 +14139,10 @@ snapshots: sprintf-js@1.0.3: {} + ssri@12.0.0: + dependencies: + minipass: 7.1.2 + stack-utils@2.0.6: dependencies: escape-string-regexp: 2.0.0 @@ -12619,6 +14351,34 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 + tailwindcss-config@1.1.1: + dependencies: + jiti: 2.5.1 + lilconfig: 3.1.3 + + tailwindcss-patch@7.1.4(tailwindcss@4.1.12): + dependencies: + '@babel/generator': 7.28.3 + '@babel/parser': 7.28.3 + '@babel/traverse': 7.28.3 + '@babel/types': 7.28.2 + '@tailwindcss-mangle/config': 5.1.1 + cac: 6.7.14 + consola: 3.4.2 + fs-extra: 11.3.1 + local-pkg: 1.1.2 + pathe: 2.0.3 + postcss: 8.5.6 + semver: 7.7.2 + tailwindcss-config: 1.1.1 + optionalDependencies: + tailwindcss: 4.1.12 + transitivePeerDependencies: + - magicast + - supports-color + + tailwindcss@4.1.12: {} + tapable@2.2.3: {} tar-stream@1.6.2: @@ -12631,6 +14391,24 @@ snapshots: to-buffer: 1.2.1 xtend: 4.0.2 + tar@6.2.1: + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + + tar@7.4.3: + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.2 + minizlib: 3.0.2 + mkdirp: 3.0.1 + yallist: 5.0.0 + terser@5.43.1: dependencies: '@jridgewell/source-map': 0.3.11 @@ -12662,6 +14440,8 @@ snapshots: tiny-case@1.0.3: {} + tinyexec@0.3.2: {} + tinyexec@1.0.1: {} tldts-core@6.1.86: {} @@ -12793,6 +14573,8 @@ snapshots: typescript@5.9.2: {} + ufo@1.6.1: {} + uglify-js@3.19.3: {} unbox-primitive@1.1.0: @@ -12822,6 +14604,14 @@ snapshots: unicorn-magic@0.1.0: {} + unique-filename@4.0.0: + dependencies: + unique-slug: 5.0.0 + + unique-slug@5.0.0: + dependencies: + imurmurhash: 0.1.4 + universal-router@9.2.1: dependencies: path-to-regexp: 6.3.0 @@ -12880,6 +14670,10 @@ snapshots: url-to-options@1.0.1: {} + use-sync-external-store@1.5.0(react@18.3.1): + dependencies: + react: 18.3.1 + util-deprecate@1.0.2: {} v8-to-istanbul@9.3.0: @@ -12892,6 +14686,8 @@ snapshots: validate-npm-package-name@5.0.1: {} + validate-npm-package-name@6.0.2: {} + vite-plugin-static-copy@0.17.1(vite@4.5.14(@types/node@24.3.0)(sass@1.91.0)(terser@5.43.1)): dependencies: chokidar: 3.6.0 @@ -12911,6 +14707,16 @@ snapshots: sass: 1.91.0 terser: 5.43.1 + vue@3.5.21(typescript@5.9.2): + dependencies: + '@vue/compiler-dom': 3.5.21 + '@vue/compiler-sfc': 3.5.21 + '@vue/runtime-dom': 3.5.21 + '@vue/server-renderer': 3.5.21(vue@3.5.21(typescript@5.9.2)) + '@vue/shared': 3.5.21 + optionalDependencies: + typescript: 5.9.2 + w3c-xmlserializer@5.0.0: dependencies: xml-name-validator: 5.0.0 @@ -12923,6 +14729,36 @@ snapshots: dependencies: defaults: 1.0.4 + weapp-tailwindcss@4.2.6(tailwindcss@4.1.12)(typescript@5.9.2): + dependencies: + '@ast-core/escape': 1.0.1 + '@babel/parser': 7.28.3 + '@babel/traverse': 7.28.3 + '@babel/types': 7.28.2 + '@vue/compiler-dom': 3.5.21 + '@weapp-core/escape': 4.0.1 + '@weapp-core/regex': 1.0.1 + '@weapp-tailwindcss/init': 1.0.5 + '@weapp-tailwindcss/logger': 1.0.2 + '@weapp-tailwindcss/mangle': 1.0.5 + '@weapp-tailwindcss/postcss': 1.1.0 + '@weapp-tailwindcss/shared': 1.0.3 + debug: 4.4.1 + htmlparser2: 10.0.0 + loader-utils: 2.0.4 + local-pkg: 1.1.2 + lru-cache: 10.4.3 + magic-string: 0.30.18 + semver: 7.7.2 + tailwindcss-patch: 7.1.4(tailwindcss@4.1.12) + vue: 3.5.21(typescript@5.9.2) + webpack-sources: 3.3.3 + transitivePeerDependencies: + - magicast + - supports-color + - tailwindcss + - typescript + webidl-conversions@7.0.0: {} webpack-merge@5.10.0: @@ -13049,6 +14885,10 @@ snapshots: yallist@3.1.1: {} + yallist@4.0.0: {} + + yallist@5.0.0: {} + yaml@2.8.1: {} yargs-parser@20.2.9: {} @@ -13090,8 +14930,3 @@ snapshots: tiny-case: 1.0.3 toposort: 2.0.2 type-fest: 2.19.0 - - zustand@5.0.8(@types/react@18.3.24)(react@18.3.1): - optionalDependencies: - '@types/react': 18.3.24 - react: 18.3.1 diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..aa9687c --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,7 @@ +// postcss 插件以 object 方式注册的话,是按照由上到下的顺序执行的 +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/src/actions/history.ts b/src/actions/history.ts new file mode 100644 index 0000000..3bc839e --- /dev/null +++ b/src/actions/history.ts @@ -0,0 +1,200 @@ +import Taro from '@tarojs/taro' +import { Dispatch } from 'redux' +import { HistoryRecord } from '../store/types' +import * as types from '../constants/history' + +const STORAGE_KEY = 'historyRecords' + +// Action creators +export const loadRecordsRequest = () => ({ + type: types.LOAD_RECORDS_REQUEST +}) + +export const loadRecordsSuccess = (records: HistoryRecord[]) => ({ + type: types.LOAD_RECORDS_SUCCESS, + payload: records +}) + +export const loadRecordsFailure = (error: string) => ({ + type: types.LOAD_RECORDS_FAILURE, + payload: error +}) + +export const addRecordRequest = () => ({ + type: types.ADD_RECORD_REQUEST +}) + +export const addRecordSuccess = (record: HistoryRecord) => ({ + type: types.ADD_RECORD_SUCCESS, + payload: record +}) + +export const addRecordFailure = (error: string) => ({ + type: types.ADD_RECORD_FAILURE, + payload: error +}) + +export const updateRecordRequest = () => ({ + type: types.UPDATE_RECORD_REQUEST +}) + +export const updateRecordSuccess = (record: HistoryRecord) => ({ + type: types.UPDATE_RECORD_SUCCESS, + payload: record +}) + +export const updateRecordFailure = (error: string) => ({ + type: types.UPDATE_RECORD_FAILURE, + payload: error +}) + +export const deleteRecordRequest = () => ({ + type: types.DELETE_RECORD_REQUEST +}) + +export const deleteRecordSuccess = (id: string) => ({ + type: types.DELETE_RECORD_SUCCESS, + payload: id +}) + +export const deleteRecordFailure = (error: string) => ({ + type: types.DELETE_RECORD_FAILURE, + payload: error +}) + +export const clearRecordsRequest = () => ({ + type: types.CLEAR_RECORDS_REQUEST +}) + +export const clearRecordsSuccess = () => ({ + type: types.CLEAR_RECORDS_SUCCESS +}) + +export const clearRecordsFailure = (error: string) => ({ + type: types.CLEAR_RECORDS_FAILURE, + payload: error +}) + +export const clearError = () => ({ + type: types.CLEAR_ERROR +}) + +// Async actions +export const loadRecords = () => { + return async (dispatch: Dispatch) => { + dispatch(loadRecordsRequest()) + try { + const savedRecords = Taro.getStorageSync(STORAGE_KEY) || [] + dispatch(loadRecordsSuccess(savedRecords)) + } catch (error) { + const errorMsg = error instanceof Error ? error.message : '加载历史记录失败' + dispatch(loadRecordsFailure(errorMsg)) + console.error('加载历史记录失败:', error) + } + } +} + +export const addRecord = (recordData: Omit) => { + return async (dispatch: Dispatch, getState: () => any) => { + dispatch(addRecordRequest()) + try { + const id = `record_${Date.now()}_${Math.random().toString(36).substr(2, 9)}` + const now = new Date().toISOString() + + const newRecord: HistoryRecord = { + ...recordData, + id, + createTime: now, + updateTime: now + } + + const currentRecords = getState().history.records + const updatedRecords = [newRecord, ...currentRecords] + + await Taro.setStorage({ + key: STORAGE_KEY, + data: updatedRecords + }) + + dispatch(addRecordSuccess(newRecord)) + return id + } catch (error) { + const errorMsg = error instanceof Error ? error.message : '添加记录失败' + dispatch(addRecordFailure(errorMsg)) + console.error('添加记录失败:', error) + throw error + } + } +} + +export const updateRecord = (id: string, updates: Partial) => { + return async (dispatch: Dispatch, getState: () => any) => { + dispatch(updateRecordRequest()) + try { + const currentRecords = getState().history.records + const recordIndex = currentRecords.findIndex((record: HistoryRecord) => record.id === id) + + if (recordIndex === -1) { + throw new Error('记录不存在') + } + + const updatedRecord = { + ...currentRecords[recordIndex], + ...updates, + updateTime: new Date().toISOString() + } + + const updatedRecords = [...currentRecords] + updatedRecords[recordIndex] = updatedRecord + + await Taro.setStorage({ + key: STORAGE_KEY, + data: updatedRecords + }) + + dispatch(updateRecordSuccess(updatedRecord)) + } catch (error) { + const errorMsg = error instanceof Error ? error.message : '更新记录失败' + dispatch(updateRecordFailure(errorMsg)) + console.error('更新记录失败:', error) + throw error + } + } +} + +export const deleteRecord = (id: string) => { + return async (dispatch: Dispatch, getState: () => any) => { + dispatch(deleteRecordRequest()) + try { + const currentRecords = getState().history.records + const updatedRecords = currentRecords.filter((record: HistoryRecord) => record.id !== id) + + await Taro.setStorage({ + key: STORAGE_KEY, + data: updatedRecords + }) + + dispatch(deleteRecordSuccess(id)) + } catch (error) { + const errorMsg = error instanceof Error ? error.message : '删除记录失败' + dispatch(deleteRecordFailure(errorMsg)) + console.error('删除记录失败:', error) + throw error + } + } +} + +export const clearRecords = () => { + return async (dispatch: Dispatch) => { + dispatch(clearRecordsRequest()) + try { + await Taro.removeStorage({ key: STORAGE_KEY }) + dispatch(clearRecordsSuccess()) + } catch (error) { + const errorMsg = error instanceof Error ? error.message : '清空记录失败' + dispatch(clearRecordsFailure(errorMsg)) + console.error('清空记录失败:', error) + throw error + } + } +} diff --git a/src/actions/template.ts b/src/actions/template.ts new file mode 100644 index 0000000..3e30b77 --- /dev/null +++ b/src/actions/template.ts @@ -0,0 +1,12 @@ +import { Template } from '../store/types' +import * as types from '../constants/template' + +export const initTemplates = (templates: Template[]) => ({ + type: types.INIT_TEMPLATES, + payload: templates +}) + +export const setSelectedTemplate = (template: Template | null) => ({ + type: types.SET_SELECTED_TEMPLATE, + payload: template +}) diff --git a/src/app.css b/src/app.css index d6a55ff..16f9270 100644 --- a/src/app.css +++ b/src/app.css @@ -1,4 +1,8 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + #app{ width: 100vw; height: 100vh; diff --git a/src/app.ts b/src/app.tsx similarity index 61% rename from src/app.ts rename to src/app.tsx index 3e020ab..3d8aadd 100644 --- a/src/app.ts +++ b/src/app.tsx @@ -1,16 +1,23 @@ import { PropsWithChildren } from 'react' import { useLaunch } from '@tarojs/taro' +import { Provider } from 'react-redux' +import configStore from './store' import './app.css' +const store = configStore() + function App({ children }: PropsWithChildren) { useLaunch(() => { console.log('App launched.') - }) // children 是将要会渲染的页面 - return children + return ( + + {children} + + ) } diff --git a/src/constants/history.ts b/src/constants/history.ts new file mode 100644 index 0000000..863b739 --- /dev/null +++ b/src/constants/history.ts @@ -0,0 +1,22 @@ +// History action types +export const LOAD_RECORDS_REQUEST = 'LOAD_RECORDS_REQUEST' +export const LOAD_RECORDS_SUCCESS = 'LOAD_RECORDS_SUCCESS' +export const LOAD_RECORDS_FAILURE = 'LOAD_RECORDS_FAILURE' + +export const ADD_RECORD_REQUEST = 'ADD_RECORD_REQUEST' +export const ADD_RECORD_SUCCESS = 'ADD_RECORD_SUCCESS' +export const ADD_RECORD_FAILURE = 'ADD_RECORD_FAILURE' + +export const UPDATE_RECORD_REQUEST = 'UPDATE_RECORD_REQUEST' +export const UPDATE_RECORD_SUCCESS = 'UPDATE_RECORD_SUCCESS' +export const UPDATE_RECORD_FAILURE = 'UPDATE_RECORD_FAILURE' + +export const DELETE_RECORD_REQUEST = 'DELETE_RECORD_REQUEST' +export const DELETE_RECORD_SUCCESS = 'DELETE_RECORD_SUCCESS' +export const DELETE_RECORD_FAILURE = 'DELETE_RECORD_FAILURE' + +export const CLEAR_RECORDS_REQUEST = 'CLEAR_RECORDS_REQUEST' +export const CLEAR_RECORDS_SUCCESS = 'CLEAR_RECORDS_SUCCESS' +export const CLEAR_RECORDS_FAILURE = 'CLEAR_RECORDS_FAILURE' + +export const CLEAR_ERROR = 'CLEAR_ERROR' diff --git a/src/constants/template.ts b/src/constants/template.ts new file mode 100644 index 0000000..6b3cc89 --- /dev/null +++ b/src/constants/template.ts @@ -0,0 +1,3 @@ +// Template action types +export const INIT_TEMPLATES = 'INIT_TEMPLATES' +export const SET_SELECTED_TEMPLATE = 'SET_SELECTED_TEMPLATE' diff --git a/src/hooks/redux.ts b/src/hooks/redux.ts new file mode 100644 index 0000000..80ca11d --- /dev/null +++ b/src/hooks/redux.ts @@ -0,0 +1,6 @@ +import { useDispatch, useSelector, TypedUseSelectorHook } from 'react-redux' +import type { RootState, AppDispatch } from '../store' + +// 使用类型化的 hooks +export const useAppDispatch = () => useDispatch() +export const useAppSelector: TypedUseSelectorHook = useSelector diff --git a/src/pages/history/index.tsx b/src/pages/history/index.tsx index c0f0ca8..c153630 100644 --- a/src/pages/history/index.tsx +++ b/src/pages/history/index.tsx @@ -1,19 +1,18 @@ import { View, Text, ScrollView } from '@tarojs/components' import { useEffect } from 'react' import Taro from '@tarojs/taro' -import { useHistoryStore } from '../../store' +import { useAppDispatch, useAppSelector } from '../../hooks/redux' +import { selectHistoryRecords } from '../../selectors/history' +import { loadRecords, clearRecords } from '../../actions/history' import './index.css' export default function History() { - const { - records, - loadRecords, - clearRecords - } = useHistoryStore() + const dispatch = useAppDispatch() + const records = useAppSelector(selectHistoryRecords) useEffect(() => { - loadRecords() - }, [loadRecords]) + dispatch(loadRecords()) + }, [dispatch]) const clearHistory = () => { Taro.showModal({ @@ -22,7 +21,7 @@ export default function History() { success: async (res) => { if (res.confirm) { try { - await clearRecords() + await dispatch(clearRecords()) Taro.showToast({ title: '清空成功', icon: 'success' diff --git a/src/pages/home/index.tsx b/src/pages/home/index.tsx index eaf375b..f90cea6 100644 --- a/src/pages/home/index.tsx +++ b/src/pages/home/index.tsx @@ -1,21 +1,27 @@ import { View, Text } from '@tarojs/components' import { useEffect } from 'react' import { navigateTo } from '@tarojs/taro' -import { useTemplateStore, Template } from '../../store/index' +import { useAppDispatch, useAppSelector } from '../../hooks/redux' +import { selectTemplates } from '../../selectors/template' +import { initTemplates, setSelectedTemplate } from '../../actions/template' +import { Template } from '../../store/types' import TemplateCard from '../../components/TemplateCard' import './index.css' export default function Home() { - const { templates, initTemplates, setSelectedTemplate } = useTemplateStore() + const dispatch = useAppDispatch() + const templates = useAppSelector(selectTemplates) useEffect(() => { - initTemplates() - }, [initTemplates]) + // 需要先检查是否有模板配置文件 + const { TEMPLATE_CONFIG } = require('../../config/templates') + dispatch(initTemplates(TEMPLATE_CONFIG)) + }, [dispatch]) const handleTemplateClick = (template: Template) => { // 设置选中的模板 - setSelectedTemplate(template) - + dispatch(setSelectedTemplate(template)) + // 跳转到原有的功能页面,保持老功能可用 navigateTo({ url: `/pages/index/index?templateId=${template.id}&templateName=${encodeURIComponent(template.name)}&templateType=${template.type}` diff --git a/src/reducers/history.ts b/src/reducers/history.ts new file mode 100644 index 0000000..709e590 --- /dev/null +++ b/src/reducers/history.ts @@ -0,0 +1,91 @@ +import { HistoryRecord } from '../store/types' +import * as types from '../constants/history' + +export interface HistoryState { + records: HistoryRecord[] + loading: boolean + error: string | null +} + +const initialState: HistoryState = { + records: [], + loading: false, + error: null +} + +export default function historyReducer(state = initialState, action: any): HistoryState { + switch (action.type) { + case types.LOAD_RECORDS_REQUEST: + case types.ADD_RECORD_REQUEST: + case types.UPDATE_RECORD_REQUEST: + case types.DELETE_RECORD_REQUEST: + case types.CLEAR_RECORDS_REQUEST: + return { + ...state, + loading: true, + error: null + } + + case types.LOAD_RECORDS_SUCCESS: + return { + ...state, + loading: false, + records: action.payload, + error: null + } + + case types.ADD_RECORD_SUCCESS: + return { + ...state, + loading: false, + records: [action.payload, ...state.records], + error: null + } + + case types.UPDATE_RECORD_SUCCESS: + return { + ...state, + loading: false, + records: state.records.map(record => + record.id === action.payload.id ? action.payload : record + ), + error: null + } + + case types.DELETE_RECORD_SUCCESS: + return { + ...state, + loading: false, + records: state.records.filter(record => record.id !== action.payload), + error: null + } + + case types.CLEAR_RECORDS_SUCCESS: + return { + ...state, + loading: false, + records: [], + error: null + } + + case types.LOAD_RECORDS_FAILURE: + case types.ADD_RECORD_FAILURE: + case types.UPDATE_RECORD_FAILURE: + case types.DELETE_RECORD_FAILURE: + case types.CLEAR_RECORDS_FAILURE: + return { + ...state, + loading: false, + error: action.payload + } + + case types.CLEAR_ERROR: + return { + ...state, + error: null + } + + default: + return state + } +} diff --git a/src/reducers/index.ts b/src/reducers/index.ts new file mode 100644 index 0000000..28f10d0 --- /dev/null +++ b/src/reducers/index.ts @@ -0,0 +1,11 @@ +import { combineReducers } from 'redux' +import history from './history' +import template from './template' + +const rootReducer = combineReducers({ + history, + template +}) + +export type RootState = ReturnType +export default rootReducer diff --git a/src/reducers/template.ts b/src/reducers/template.ts new file mode 100644 index 0000000..e64bf22 --- /dev/null +++ b/src/reducers/template.ts @@ -0,0 +1,31 @@ +import { Template } from '../store/types' +import * as types from '../constants/template' + +export interface TemplateState { + templates: Template[] + selectedTemplate: Template | null +} + +const initialState: TemplateState = { + templates: [], + selectedTemplate: null +} + +export default function templateReducer(state = initialState, action: any): TemplateState { + switch (action.type) { + case types.INIT_TEMPLATES: + return { + ...state, + templates: action.payload + } + + case types.SET_SELECTED_TEMPLATE: + return { + ...state, + selectedTemplate: action.payload + } + + default: + return state + } +} diff --git a/src/selectors/history.ts b/src/selectors/history.ts new file mode 100644 index 0000000..e6a87f3 --- /dev/null +++ b/src/selectors/history.ts @@ -0,0 +1,18 @@ +import { RootState } from '../store' +import { HistoryRecord } from '../store/types' + +// History selectors +export const selectHistoryRecords = (state: RootState): HistoryRecord[] => + state.history.records + +export const selectHistoryLoading = (state: RootState): boolean => + state.history.loading + +export const selectHistoryError = (state: RootState): string | null => + state.history.error + +export const selectRecordById = (state: RootState, id: string): HistoryRecord | undefined => + state.history.records.find(record => record.id === id) + +export const selectRecordsByStatus = (state: RootState, status: HistoryRecord['status']): HistoryRecord[] => + state.history.records.filter(record => record.status === status) diff --git a/src/selectors/template.ts b/src/selectors/template.ts new file mode 100644 index 0000000..c4ca78f --- /dev/null +++ b/src/selectors/template.ts @@ -0,0 +1,15 @@ +import { RootState } from '../store' +import { Template } from '../store/types' + +// Template selectors +export const selectTemplates = (state: RootState): Template[] => + state.template.templates + +export const selectSelectedTemplate = (state: RootState): Template | null => + state.template.selectedTemplate + +export const selectTemplateById = (state: RootState, id: string): Template | undefined => + state.template.templates.find(template => template.id === id) + +export const selectTemplatesByType = (state: RootState, type: 'image-to-image' | 'image-to-video'): Template[] => + state.template.templates.filter(template => template.type === type) diff --git a/src/store/README.md b/src/store/README.md new file mode 100644 index 0000000..a2af9c7 --- /dev/null +++ b/src/store/README.md @@ -0,0 +1,167 @@ +# Redux Store 使用指南 + +本项目已从 Zustand 迁移到 Redux Toolkit,以下是使用指南。 + +## 目录结构 + +``` +src/ +├── store/ +│ ├── index.ts # Store 配置 +│ └── types.ts # 类型定义 +├── constants/ # Action 类型常量 +│ ├── history.ts +│ └── template.ts +├── actions/ # Action creators +│ ├── history.ts +│ └── template.ts +├── reducers/ # Reducers +│ ├── index.ts +│ ├── history.ts +│ └── template.ts +├── selectors/ # 选择器 +│ ├── history.ts +│ └── template.ts +└── hooks/ + └── redux.ts # 类型化的 hooks +``` + +## 基本使用 + +### 1. 在组件中使用 Redux + +```tsx +import { useAppDispatch, useAppSelector } from '../../hooks/redux' +import { selectHistoryRecords, selectHistoryLoading } from '../../selectors/history' +import { loadRecords, addRecord } from '../../actions/history' + +export default function MyComponent() { + const dispatch = useAppDispatch() + const records = useAppSelector(selectHistoryRecords) + const loading = useAppSelector(selectHistoryLoading) + + useEffect(() => { + dispatch(loadRecords()) + }, [dispatch]) + + const handleAddRecord = async () => { + try { + await dispatch(addRecord({ + type: 'image-to-image', + templateId: '1', + templateName: '艺术风格', + inputImage: 'path/to/image.jpg', + status: 'generating' + })) + } catch (error) { + console.error('添加记录失败:', error) + } + } + + return ( + + {loading && 加载中...} + {records.map(record => ( + + {record.templateName} + + ))} + + + ) +} +``` + +### 2. 历史记录管理 + +```tsx +// 加载历史记录 +dispatch(loadRecords()) + +// 添加新记录 +dispatch(addRecord({ + type: 'image-to-video', + templateId: '2', + templateName: '视频生成', + inputImage: 'path/to/image.jpg', + status: 'generating' +})) + +// 更新记录 +dispatch(updateRecord('record_id', { + status: 'completed', + outputResult: 'path/to/result.mp4' +})) + +// 删除记录 +dispatch(deleteRecord('record_id')) + +// 清空所有记录 +dispatch(clearRecords()) +``` + +### 3. 模板管理 + +```tsx +// 初始化模板 +import { TEMPLATE_CONFIG } from '../../config/templates' +dispatch(initTemplates(TEMPLATE_CONFIG)) + +// 设置选中的模板 +dispatch(setSelectedTemplate(template)) + +// 获取模板列表 +const templates = useAppSelector(selectTemplates) + +// 获取选中的模板 +const selectedTemplate = useAppSelector(selectSelectedTemplate) + +// 根据类型筛选模板 +const videoTemplates = useAppSelector(state => + selectTemplatesByType(state, 'image-to-video') +) +``` + +### 4. 选择器使用 + +```tsx +// 基本选择器 +const records = useAppSelector(selectHistoryRecords) +const loading = useAppSelector(selectHistoryLoading) +const error = useAppSelector(selectHistoryError) + +// 带参数的选择器 +const record = useAppSelector(state => selectRecordById(state, 'record_id')) +const generatingRecords = useAppSelector(state => + selectRecordsByStatus(state, 'generating') +) +``` + +## 迁移说明 + +### 从 Zustand 迁移到 Redux + +原来的 Zustand 用法: +```tsx +// 旧的 Zustand 用法 +const { records, loadRecords, addRecord } = useHistoryStore() +``` + +新的 Redux 用法: +```tsx +// 新的 Redux 用法 +const dispatch = useAppDispatch() +const records = useAppSelector(selectHistoryRecords) + +// 调用 actions +dispatch(loadRecords()) +dispatch(addRecord(recordData)) +``` + +## 注意事项 + +1. 所有异步操作都通过 Redux Thunk 处理 +2. 使用类型化的 hooks (`useAppDispatch`, `useAppSelector`) +3. 选择器函数提供了类型安全的状态访问 +4. 所有状态更新都是不可变的 +5. 错误处理通过 Redux 状态管理 diff --git a/src/store/historyStore.ts b/src/store/historyStore.ts deleted file mode 100644 index 0b93708..0000000 --- a/src/store/historyStore.ts +++ /dev/null @@ -1,137 +0,0 @@ -import { create } from 'zustand' -import Taro from '@tarojs/taro' -import { HistoryRecord } from './types' - -interface HistoryStore { - records: HistoryRecord[] - loading: boolean - error: string | null - - // Actions - loadRecords: () => Promise - addRecord: (record: Omit) => Promise - updateRecord: (id: string, updates: Partial) => Promise - deleteRecord: (id: string) => Promise - clearRecords: () => Promise - getRecordById: (id: string) => HistoryRecord | undefined - getRecordsByStatus: (status: HistoryRecord['status']) => HistoryRecord[] -} - -const STORAGE_KEY = 'historyRecords' - -export const useHistoryStore = create((set, get) => ({ - records: [], - loading: false, - error: null, - - // 加载历史记录 - loadRecords: async () => { - set({ loading: true, error: null }) - try { - const savedRecords = Taro.getStorageSync(STORAGE_KEY) || [] - set({ records: savedRecords, loading: false }) - } catch (error) { - const errorMsg = error instanceof Error ? error.message : '加载历史记录失败' - set({ error: errorMsg, loading: false }) - console.error('加载历史记录失败:', error) - } - }, - - // 添加新记录 - addRecord: async (recordData) => { - const id = `record_${Date.now()}_${Math.random().toString(36).substr(2, 9)}` - const now = new Date().toISOString() - - const newRecord: HistoryRecord = { - ...recordData, - id, - createTime: now, - updateTime: now - } - - try { - const currentRecords = get().records - const updatedRecords = [newRecord, ...currentRecords] - - await Taro.setStorage({ - key: STORAGE_KEY, - data: updatedRecords - }) - - set({ records: updatedRecords }) - return id - } catch (error) { - const errorMsg = error instanceof Error ? error.message : '添加记录失败' - set({ error: errorMsg }) - console.error('添加记录失败:', error) - throw error - } - }, - - // 更新记录 - updateRecord: async (id, updates) => { - try { - const currentRecords = get().records - const updatedRecords = currentRecords.map(record => - record.id === id - ? { ...record, ...updates, updateTime: new Date().toISOString() } - : record - ) - - await Taro.setStorage({ - key: STORAGE_KEY, - data: updatedRecords - }) - - set({ records: updatedRecords }) - } catch (error) { - const errorMsg = error instanceof Error ? error.message : '更新记录失败' - set({ error: errorMsg }) - console.error('更新记录失败:', error) - throw error - } - }, - - // 删除记录 - deleteRecord: async (id) => { - try { - const currentRecords = get().records - const updatedRecords = currentRecords.filter(record => record.id !== id) - - await Taro.setStorage({ - key: STORAGE_KEY, - data: updatedRecords - }) - - set({ records: updatedRecords }) - } catch (error) { - const errorMsg = error instanceof Error ? error.message : '删除记录失败' - set({ error: errorMsg }) - console.error('删除记录失败:', error) - throw error - } - }, - - // 清空所有记录 - clearRecords: async () => { - try { - await Taro.removeStorage({ key: STORAGE_KEY }) - set({ records: [] }) - } catch (error) { - const errorMsg = error instanceof Error ? error.message : '清空记录失败' - set({ error: errorMsg }) - console.error('清空记录失败:', error) - throw error - } - }, - - // 获取单个记录 - getRecordById: (id) => { - return get().records.find(record => record.id === id) - }, - - // 按状态筛选记录 - getRecordsByStatus: (status) => { - return get().records.filter(record => record.status === status) - } -})) \ No newline at end of file diff --git a/src/store/index.ts b/src/store/index.ts index a6123f6..196c917 100644 --- a/src/store/index.ts +++ b/src/store/index.ts @@ -1,4 +1,25 @@ -// 统一导出所有store -export * from './types' -export * from './historyStore' -export * from './templateStore' \ No newline at end of file +import { configureStore } from '@reduxjs/toolkit' +import historyReducer from '../reducers/history' +import templateReducer from '../reducers/template' + +export default function configStore() { + const store = configureStore({ + reducer: { + history: historyReducer, + template: templateReducer + }, + middleware: (getDefaultMiddleware) => + getDefaultMiddleware({ + serializableCheck: { + ignoredActions: ['persist/PERSIST'] + } + }) + }) + return store +} + +export type RootState = ReturnType['getState']> +export type AppDispatch = ReturnType['dispatch'] + +// 导出类型 +export * from './types' \ No newline at end of file diff --git a/src/store/templateStore.ts b/src/store/templateStore.ts deleted file mode 100644 index bcd321c..0000000 --- a/src/store/templateStore.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { create } from 'zustand' -import { Template } from './types' -import { TEMPLATE_CONFIG } from '../config/templates' - -interface TemplateStore { - templates: Template[] - selectedTemplate: Template | null - - // Actions - initTemplates: () => void - getTemplateById: (id: string) => Template | undefined - setSelectedTemplate: (template: Template | null) => void - getTemplatesByType: (type: 'image-to-image' | 'image-to-video') => Template[] -} - -export const useTemplateStore = create((set, get) => ({ - templates: [], - selectedTemplate: null, - - // 初始化模板数据 - initTemplates: () => { - set({ templates: TEMPLATE_CONFIG }) - }, - - // 根据ID获取模板 - getTemplateById: (id) => { - return get().templates.find(template => template.id === id) - }, - - // 设置选中的模板 - setSelectedTemplate: (template) => { - set({ selectedTemplate: template }) - }, - - // 根据类型筛选模板 - getTemplatesByType: (type) => { - return get().templates.filter(template => template.type === type) - } -})) \ No newline at end of file diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..4040580 --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,15 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + // 这里给出了一份 taro 通用示例,具体要根据你自己项目的目录结构进行配置 + // 比如你使用 vue3 项目,你就需要把 vue 这个格式也包括进来 + // 不在 content glob 表达式中包括的文件,在里面编写 tailwindcss class,是不会生成对应的 css 工具类的 + content: ['./public/index.html', './src/**/*.{html,js,ts,jsx,tsx}'], + theme: { + extend: {}, + }, + plugins: [], + corePlugins: { + // 小程序不需要 preflight,因为这主要是给 h5 的,如果你要同时开发多端,你应该使用 process.env.TARO_ENV 环境变量来控制它 + preflight: false, + }, +}