From 0d0e10b97bfb46be56f9763a69bf18de6ceed562 Mon Sep 17 00:00:00 2001 From: Chengdong Zhang Date: Tue, 22 Sep 2026 18:22:50 +0800 Subject: [PATCH] feat(ui): adopt Tailwind v4 design system and archive change - Add tailwindcss v4 + @tailwindcss/vite to mall, shop-admin, admin - Add @vmall/shared/theme.css tokens with html[data-accent] presets - Add @vmall/ui kit (VBtn/VBadge/VField/VInput/VCard/VPanel/VTable/VPage, VAccentSwatch, useAccent) as a Nuxt module - Convert all three apps to kit + utilities; delete ui.css/mall.css and every diff --git a/apps/admin/pages/index.vue b/apps/admin/pages/index.vue index 44df251..396911d 100644 --- a/apps/admin/pages/index.vue +++ b/apps/admin/pages/index.vue @@ -49,110 +49,42 @@ const cards = computed(() => [ - - diff --git a/apps/admin/pages/login.vue b/apps/admin/pages/login.vue index d0c36b4..cbcfd80 100644 --- a/apps/admin/pages/login.vue +++ b/apps/admin/pages/login.vue @@ -37,54 +37,24 @@ async function submit(): Promise { - - diff --git a/apps/admin/pages/orders.vue b/apps/admin/pages/orders.vue index f3881ef..b3ddcec 100644 --- a/apps/admin/pages/orders.vue +++ b/apps/admin/pages/orders.vue @@ -36,7 +36,7 @@ function formatDate(value: string): string { return new Date(value).toLocaleString(locale.value === "zh" ? "zh-CN" : "en-US"); } -function statusClass(status: Order["status"]): string { +function statusClass(status: Order["status"]): "green" | "red" | "orange" | "blue" { if (status === "completed") return "green"; if (status === "cancelled") return "red"; if (status === "pending_payment") return "orange"; @@ -76,53 +76,39 @@ onMounted(() => { - - diff --git a/apps/admin/pages/points-orders.vue b/apps/admin/pages/points-orders.vue index 7e5a8f2..907ce02 100644 --- a/apps/admin/pages/points-orders.vue +++ b/apps/admin/pages/points-orders.vue @@ -16,7 +16,7 @@ function rewardName(order: IntegralOrder): string { return order.items.map((line) => line.name[locale.value] ?? line.name.en).join(", "); } -function statusClass(status: IntegralOrderStatus): string { +function statusClass(status: IntegralOrderStatus): "green" | "red" | "orange" { if (status === "fulfilled") return "green"; if (status === "cancelled") return "red"; return "orange"; @@ -61,75 +61,43 @@ onMounted(() => void load()); - - diff --git a/apps/admin/pages/points-products.vue b/apps/admin/pages/points-products.vue index 4193a09..fd25551 100644 --- a/apps/admin/pages/points-products.vue +++ b/apps/admin/pages/points-products.vue @@ -127,141 +127,68 @@ onMounted(() => void load()); - - diff --git a/apps/admin/pages/shops.vue b/apps/admin/pages/shops.vue index 7dfac14..896ba48 100644 --- a/apps/admin/pages/shops.vue +++ b/apps/admin/pages/shops.vue @@ -24,7 +24,7 @@ function formatDate(value: string): string { return new Date(value).toLocaleString(locale.value === "zh" ? "zh-CN" : "en-US"); } -function statusClass(status: Shop["status"]): string { +function statusClass(status: Shop["status"]): "green" | "red" { return status === "active" ? "green" : "red"; } @@ -84,69 +84,51 @@ onMounted(() => { - - diff --git a/apps/admin/pages/users.vue b/apps/admin/pages/users.vue index e0f21a6..f25ca58 100644 --- a/apps/admin/pages/users.vue +++ b/apps/admin/pages/users.vue @@ -109,85 +109,68 @@ onMounted(() => { - - diff --git a/apps/mall/app.vue b/apps/mall/app.vue index c5d0e31..18c5ce3 100644 --- a/apps/mall/app.vue +++ b/apps/mall/app.vue @@ -1,13 +1,20 @@