From f59e929843d8cfdedce20170d8ac2d7155117ab6 Mon Sep 17 00:00:00 2001 From: Eamon <17516219072@163.com> Date: Fri, 4 Sep 2026 13:21:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E4=B8=AA=E4=BA=BA=E4=B8=AD?= =?UTF-8?q?=E5=BF=83=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bun.lock | 3 + package.json | 3 +- src/admin/clients.tsx | 16 +- src/admin/dashboard/mock.ts | 38 ---- src/admin/dashboard/page.tsx | 179 +++++++++--------- src/admin/effects.tsx | 53 +----- src/admin/layout-context.tsx | 27 --- src/admin/layout.tsx | 5 +- src/admin/refundOrders/page.tsx | 2 +- src/api/dashboard.ts | 44 +---- src/api/token.ts | 2 + src/api/user.ts | 23 ++- src/components/authGuard.tsx | 11 +- .../composites/dialogs/changePwdDialog.tsx | 170 +++++++++++++++++ .../composites/dialogs/editInfoDialog.tsx | 138 +++++--------- src/components/profileOrLogin.tsx | 15 +- src/components/stores/app.ts | 11 ++ src/components/stores/client.ts | 54 ++++++ src/components/stores/dashboard.ts | 41 ++++ src/components/stores/layout.ts | 20 ++ src/components/stores/profile.ts | 34 ++++ src/home/header.tsx | 20 +- src/home/index.tsx | 7 +- src/home/product/productGrid.tsx | 13 +- src/lib/hooks/useMediaQuery.ts | 36 ---- src/lib/models/dashboard.ts | 58 ++++++ src/main.tsx | 5 + 27 files changed, 614 insertions(+), 414 deletions(-) delete mode 100644 src/admin/dashboard/mock.ts delete mode 100644 src/admin/layout-context.tsx create mode 100644 src/components/composites/dialogs/changePwdDialog.tsx create mode 100644 src/components/stores/app.ts create mode 100644 src/components/stores/client.ts create mode 100644 src/components/stores/dashboard.ts create mode 100644 src/components/stores/layout.ts create mode 100644 src/components/stores/profile.ts delete mode 100644 src/lib/hooks/useMediaQuery.ts diff --git a/bun.lock b/bun.lock index 9beb093..3562882 100644 --- a/bun.lock +++ b/bun.lock @@ -27,6 +27,7 @@ "tailwindcss": "^4.3.0", "tw-animate-css": "^1.4.0", "zod": "^4.4.3", + "zustand": "^5.0.15", }, "devDependencies": { "@biomejs/biome": "2.4.16", @@ -1258,6 +1259,8 @@ "zod-to-json-schema": ["zod-to-json-schema@3.25.2", "https://registry.npmmirror.com/zod-to-json-schema/-/zod-to-json-schema-3.25.2.tgz", { "peerDependencies": { "zod": "^3.25.28 || ^4" } }, "sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA=="], + "zustand": ["zustand@5.0.15", "https://registry.npmmirror.com/zustand/-/zustand-5.0.15.tgz", { "peerDependencies": { "@types/react": ">=18.0.0", "immer": ">=9.0.6", "react": ">=18.0.0", "use-sync-external-store": ">=1.2.0" }, "optionalPeers": ["@types/react", "immer", "react", "use-sync-external-store"] }, "sha512-MpSEjRiBkA9crSYeOUH32rJC7SVqAbm0Fqcqge/bUi2PPoLcBWKOsG+C8mevmpr8TwXHBVkChbbJiyvkE+i/3A=="], + "zwitch": ["zwitch@2.0.4", "https://registry.npmmirror.com/zwitch/-/zwitch-2.0.4.tgz", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="], "@dotenvx/dotenvx/commander": ["commander@11.1.0", "https://registry.npmmirror.com/commander/-/commander-11.1.0.tgz", {}, "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ=="], diff --git a/package.json b/package.json index 8e4a25f..b849abd 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,8 @@ "tailwind-merge": "^3.6.0", "tailwindcss": "^4.3.0", "tw-animate-css": "^1.4.0", - "zod": "^4.4.3" + "zod": "^4.4.3", + "zustand": "^5.0.15" }, "devDependencies": { "@biomejs/biome": "2.4.16", diff --git a/src/admin/clients.tsx b/src/admin/clients.tsx index 20965dc..dc2250f 100644 --- a/src/admin/clients.tsx +++ b/src/admin/clients.tsx @@ -18,6 +18,7 @@ import { import { type ReactNode, useState } from "react" import { Link } from "react-router-dom" import ProfileOrLogin from "@/components/profileOrLogin" +import { useLayoutStore } from "@/components/stores/layout" import { Button } from "@/components/ui/button" import { Tooltip, @@ -27,11 +28,10 @@ import { } from "@/components/ui/tooltip" import { cn } from "@/lib/utils" import logoAvatar from "./assets/logo-avatar.svg" -import { useLayout } from "./layout-context" import { AdminNavMenu } from "./nav-menu" export function Shell(props: { children: ReactNode }) { - const { navbar } = useLayout() + const navbar = useLayoutStore(state => state.navbar) return (