feat: Frutiger Aero redesign — glass panels, Aero shimmer, interaction moments
This commit is contained in:
@@ -1,68 +1,57 @@
|
||||
import { Link } from "lucide-react";
|
||||
import {
|
||||
Card,
|
||||
CardHeader,
|
||||
CardTitle,
|
||||
CardContent,
|
||||
CardDescription,
|
||||
} from "@/components/ui/card";
|
||||
import { getAllUsersCount } from "@/lib/api";
|
||||
|
||||
export async function UsersCount() {
|
||||
const usersCount = await getAllUsersCount().catch(() => null);
|
||||
|
||||
if (usersCount === null) {
|
||||
return (
|
||||
<Card className="p-4">
|
||||
<CardHeader className="p-0 pb-2">
|
||||
<CardTitle className="text-lg text-shadow-md">Users Count</CardTitle>
|
||||
<CardDescription>
|
||||
Total number of registered users on Thoughts.
|
||||
</CardDescription>
|
||||
</CardHeader>
|
||||
<CardContent>
|
||||
<div className="text-muted-foreground text-sm text-center py-4">
|
||||
Could not load users count.
|
||||
</div>
|
||||
</CardContent>
|
||||
</Card>
|
||||
);
|
||||
}
|
||||
|
||||
if (usersCount.count === 0) {
|
||||
return (
|
||||
<Card className="p-4">
|
||||
<CardHeader className="p-0 pb-2">
|
||||
<CardTitle className="text-lg text-shadow-md">Users Count</CardTitle>
|
||||
<CardDescription>
|
||||
Total number of registered users on Thoughts.
|
||||
</CardDescription>
|
||||
</CardHeader>
|
||||
<CardContent>
|
||||
<div className="text-muted-foreground text-sm text-center py-4">
|
||||
No registered users yet. Be the first to{" "}
|
||||
<Link href="/signup" className="text-primary hover:underline">
|
||||
sign up
|
||||
</Link>
|
||||
!
|
||||
</div>
|
||||
</CardContent>
|
||||
</Card>
|
||||
);
|
||||
}
|
||||
const count = usersCount?.count ?? null;
|
||||
|
||||
return (
|
||||
<Card className="p-4">
|
||||
<CardHeader className="p-0 pb-2">
|
||||
<CardTitle className="text-lg text-shadow-md">Users Count</CardTitle>
|
||||
<CardDescription>
|
||||
Total number of registered users on Thoughts.
|
||||
</CardDescription>
|
||||
<CardHeader className="p-0 pb-3">
|
||||
<CardTitle className="text-lg flex items-center gap-2">
|
||||
<span className="widget-icon widget-icon-purple">✨</span>
|
||||
Community
|
||||
</CardTitle>
|
||||
</CardHeader>
|
||||
<CardContent>
|
||||
<div className="text-muted-foreground text-sm text-center py-4">
|
||||
{usersCount.count} registered users.
|
||||
</div>
|
||||
<CardContent className="p-0">
|
||||
{count === null ? (
|
||||
<p className="text-sm text-muted-foreground text-center py-2">
|
||||
Could not load member count.
|
||||
</p>
|
||||
) : count === 0 ? (
|
||||
<p className="text-sm text-muted-foreground text-center py-2">
|
||||
Be the first to join!
|
||||
</p>
|
||||
) : (
|
||||
<div
|
||||
className="rounded-xl p-3 text-center glossy-effect relative overflow-hidden"
|
||||
style={{
|
||||
background: "rgba(255,255,255,0.4)",
|
||||
border: "1px solid rgba(255,255,255,0.6)",
|
||||
}}
|
||||
>
|
||||
<div
|
||||
className="text-3xl font-extrabold leading-none"
|
||||
style={{
|
||||
background: "linear-gradient(135deg, #2563eb, #06b6d4)",
|
||||
WebkitBackgroundClip: "text",
|
||||
WebkitTextFillColor: "transparent",
|
||||
backgroundClip: "text",
|
||||
}}
|
||||
>
|
||||
{count}
|
||||
</div>
|
||||
<div className="text-[10px] uppercase tracking-widest text-muted-foreground mt-1 font-semibold">
|
||||
members
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</CardContent>
|
||||
</Card>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user