feat: dashboard tiles link to their matching list page
Each stat tile now navigates to /apiaries, /colonies, /queens, /tasks, /honey-batches or /storage on click instead of being inert.
This commit is contained in:
1 parent
147417d7d4
commit
faefd47e4b
1 file changed
+23
-14
@@ -38,6 +38,7 @@ interface StatTile {
|
||||
value: number;
|
||||
icon: LucideIcon;
|
||||
gradient: string;
|
||||
href: string;
|
||||
}
|
||||
|
||||
const ALERT_META: Record<
|
||||
@@ -79,30 +80,35 @@ export default function DashboardPage() {
|
||||
value: summary.apiariesActive,
|
||||
icon: MapPin,
|
||||
gradient: "var(--gradient-honey)",
|
||||
href: "/apiaries",
|
||||
},
|
||||
{
|
||||
label: "Aktive Völker",
|
||||
value: summary.coloniesActive,
|
||||
icon: Layers,
|
||||
gradient: "var(--gradient-honey)",
|
||||
href: "/colonies",
|
||||
},
|
||||
{
|
||||
label: "Aktive Königinnen",
|
||||
value: summary.queensActive,
|
||||
icon: Crown,
|
||||
gradient: "var(--gradient-sage)",
|
||||
href: "/queens",
|
||||
},
|
||||
{
|
||||
label: "Offene Aufgaben",
|
||||
value: summary.openTasks,
|
||||
icon: ListTodo,
|
||||
gradient: "var(--gradient-sky)",
|
||||
href: "/tasks",
|
||||
},
|
||||
{
|
||||
label: "Honigchargen",
|
||||
value: summary.honeyBatchesTotal,
|
||||
icon: Droplet,
|
||||
gradient: "var(--gradient-honey)",
|
||||
href: "/honey-batches",
|
||||
},
|
||||
{
|
||||
label: "Artikel unter Mindestbestand",
|
||||
@@ -112,6 +118,7 @@ export default function DashboardPage() {
|
||||
summary.stockItemsLowCount > 0
|
||||
? "linear-gradient(135deg, oklch(0.72 0.15 70) 0%, oklch(0.56 0.15 50) 100%)"
|
||||
: "var(--gradient-sage)",
|
||||
href: "/storage",
|
||||
},
|
||||
]
|
||||
: [];
|
||||
@@ -137,20 +144,22 @@ export default function DashboardPage() {
|
||||
{tiles.map((tile) => {
|
||||
const Icon = tile.icon;
|
||||
return (
|
||||
<Card key={tile.label} interactive>
|
||||
<CardContent className="flex flex-col gap-3">
|
||||
<div
|
||||
className="flex size-10 items-center justify-center rounded-xl text-white shadow-[var(--shadow-soft)]"
|
||||
style={{ background: tile.gradient }}
|
||||
>
|
||||
<Icon className="size-5" />
|
||||
</div>
|
||||
<div>
|
||||
<p className="text-2xl font-semibold tabular-nums">{tile.value}</p>
|
||||
<p className="text-xs text-muted-foreground">{tile.label}</p>
|
||||
</div>
|
||||
</CardContent>
|
||||
</Card>
|
||||
<Link key={tile.label} href={tile.href}>
|
||||
<Card interactive>
|
||||
<CardContent className="flex flex-col gap-3">
|
||||
<div
|
||||
className="flex size-10 items-center justify-center rounded-xl text-white shadow-[var(--shadow-soft)]"
|
||||
style={{ background: tile.gradient }}
|
||||
>
|
||||
<Icon className="size-5" />
|
||||
</div>
|
||||
<div>
|
||||
<p className="text-2xl font-semibold tabular-nums">{tile.value}</p>
|
||||
<p className="text-xs text-muted-foreground">{tile.label}</p>
|
||||
</div>
|
||||
</CardContent>
|
||||
</Card>
|
||||
</Link>
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
|
||||
Reference in new issue
Block a user