refactor(shadow): introduce shadow-card utility and extend tailwind-merge

This commit is contained in:
zetaloop
2026-02-25 19:31:39 +08:00
parent feef03670a
commit c55d533925
26 changed files with 63 additions and 52 deletions
+1 -1
View File
@@ -5,7 +5,7 @@ export default function HelpPage() {
return (
<div className="container mx-auto max-w-3xl px-4 py-8 space-y-6">
<h1 className="text-2xl font-bold tracking-tighter leading-tight"></h1>
<Card className="hover:shadow-[var(--shadow-card)]">
<Card className="hover:shadow-card-hover">
<CardHeader>
<CardTitle className="text-base"></CardTitle>
</CardHeader>
+1 -1
View File
@@ -37,7 +37,7 @@ export default function HomePage() {
type="text"
name="q"
placeholder="搜索陪玩、店铺、游戏..."
className="w-full border-border bg-card shadow-[0_4px_16px_-2px_rgba(0,0,0,0.08),0_8px_24px_-4px_rgba(0,0,0,0.1)] transition-shadow focus:shadow-[0_8px_30px_-4px_rgba(0,0,0,0.12),0_12px_40px_-8px_rgba(0,0,0,0.14)]"
className="w-full border-border bg-card shadow-card transition-shadow focus:shadow-card-hover"
/>
</form>
</div>
+1 -1
View File
@@ -34,7 +34,7 @@ export default async function PlayerDetailPage({ params }: { params: Promise<{ i
<div className="container mx-auto py-8 px-4 max-w-5xl">
<div className="flex flex-col md:flex-row gap-8 mb-8">
<div className="flex-shrink-0">
<Avatar className="w-32 h-32 border-4 border-background shadow-[var(--shadow-card)]">
<Avatar className="w-32 h-32 border-4 border-background shadow-card">
<AvatarImage src={player.user.avatar} alt={player.user.nickname} />
<AvatarFallback>{player.user.nickname[0]}</AvatarFallback>
</Avatar>
+1 -1
View File
@@ -30,7 +30,7 @@ export default async function PostDetailPage({ params }: { params: Promise<{ id:
</Link>
<Card className="hover:shadow-[var(--shadow-card)]">
<Card className="hover:shadow-card-hover">
<CardHeader className="pb-3">
<div className="flex items-center gap-3">
<Avatar className="h-10 w-10">
+1 -1
View File
@@ -101,7 +101,7 @@ export default function NewPostPage() {
</Link>
<Card className="hover:shadow-[var(--shadow-card)]">
<Card className="hover:shadow-card-hover">
<CardHeader>
<CardTitle className="tracking-tighter leading-tight"></CardTitle>
</CardHeader>
+1 -1
View File
@@ -4,7 +4,7 @@ export default function PrivacyPage() {
return (
<div className="container mx-auto max-w-3xl px-4 py-8 space-y-6">
<h1 className="text-2xl font-bold tracking-tighter leading-tight"></h1>
<Card className="hover:shadow-[var(--shadow-card)]">
<Card className="hover:shadow-card-hover">
<CardHeader>
<CardTitle className="text-base">使</CardTitle>
</CardHeader>
+1 -1
View File
@@ -567,7 +567,7 @@ function SearchPageContent() {
icon={<Search />}
type="search"
placeholder="搜索陪玩、游戏、标签..."
className="border-border bg-card shadow-[var(--shadow-card)] transition-shadow focus:shadow-[var(--shadow-card-hover)]"
className="border-border bg-card shadow-card transition-shadow focus:shadow-card-hover"
value={searchQuery}
onChange={(e) => setSearchQuery(e.target.value)}
/>
+1 -1
View File
@@ -5,7 +5,7 @@ export default function TermsPage() {
return (
<div className="container mx-auto max-w-3xl px-4 py-8 space-y-6">
<h1 className="text-2xl font-bold tracking-tighter leading-tight"></h1>
<Card className="hover:shadow-[var(--shadow-card)]">
<Card className="hover:shadow-card-hover">
<CardHeader>
<CardTitle className="text-base"></CardTitle>
</CardHeader>
+1 -1
View File
@@ -35,7 +35,7 @@ export default async function UserProfilePage({ params }: { params: Promise<{ id
return (
<div className="container mx-auto max-w-4xl px-4 py-8 space-y-6">
<div className="flex items-center gap-6 mb-8">
<Avatar className="w-24 h-24 border-4 border-background shadow-[var(--shadow-card)]">
<Avatar className="w-24 h-24 border-4 border-background shadow-card">
<AvatarImage src={user.avatar} alt={user.nickname} />
<AvatarFallback>{user.nickname[0]}</AvatarFallback>
</Avatar>