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 <style scoped>; consoles get accent presets, mall locked to red
- Fix VCard boolean prop default (padding) and PDP/store stale
  useAsyncData keys on param navigation
- Archive adopt-tailwind-design-system; new frontend-ui capability spec
This commit is contained in:
Chengdong Zhang
2026-09-22 18:22:50 +08:00
parent 4d2ee3b0bf
commit 0d0e10b97b
101 changed files with 2833 additions and 7207 deletions
+4 -26
View File
@@ -3,33 +3,11 @@ defineProps<{ items: { label: string; to?: string }[] }>();
</script>
<template>
<nav class="crumbs w1200" aria-label="breadcrumb">
<nav aria-label="breadcrumb" class="mx-auto my-5 max-w-mall px-4 text-[13px] text-muted">
<template v-for="(item, i) in items" :key="i">
<NuxtLink v-if="item.to" :to="item.to">{{ item.label }}</NuxtLink>
<span v-else class="here">{{ item.label }}</span>
<span v-if="i < items.length - 1" class="sep">/</span>
<NuxtLink v-if="item.to" :to="item.to" class="no-underline transition-colors hover:text-primary">{{ item.label }}</NuxtLink>
<span v-else class="text-text">{{ item.label }}</span>
<span v-if="i < items.length - 1" class="mx-2 text-muted/60">/</span>
</template>
</nav>
</template>
<style scoped>
.crumbs {
margin: 20px auto;
font-size: 13px;
color: var(--mall-muted);
}
a {
color: var(--mall-muted);
text-decoration: none;
}
a:hover {
color: var(--mall-red);
}
.sep {
margin: 0 8px;
color: var(--mall-faint);
}
.here {
color: var(--mall-ink);
}
</style>