style(frontend): grundlegendes Redesign (Design-System, Farben, Typografie)

Neues Design-System: warme Honig-/Wachs-Farbpalette (Amber-Primaer,
Salbeigruen-Sekundaer) statt Standard-Graustufen, Space Grotesk fuer
Ueberschriften, Inter fuer Fliesstext, IBM Plex Mono fuer Codes/IDs.
Card-Komponente mit weicher Schattierung statt Ring, neuer
Badge-Warning-Variante und statusTone()-Helper fuer semantische
Status-Farben (Voelker/Honigchargen). Navigation umgebaut: aktiver
Link-Zustand, Hexagon-Markenzeichen, "Mehr"-Dropdown fuer Admin-Links.
Dashboard-Kacheln mit Icons/Farbakzenten, Login-Seite mit dezentem
Waben-Hintergrundmuster als wiederkehrendes Signature-Element.
This commit is contained in:
Nick Szaunig committed 2026-08-22 10:45:41 +02:00
1 parent 26b2eb0829
commit e7348b0b68
38 files changed
+350 -201

No files matched your search

@@ -94,7 +94,7 @@ export function AddMeasurementDialog({ honeyBatchId }: { honeyBatchId: string })
/>
</div>
{error ? (
<p role="alert" className="text-sm text-red-600">
<p role="alert" className="text-sm text-destructive">
{error}
</p>
) : null}
@@ -29,7 +29,7 @@ export default function HoneyBatchDetailPage() {
}
if (isError || !honeyBatch) {
return (
<p role="alert" className="p-4 text-sm text-red-600 sm:p-6">
<p role="alert" className="p-4 text-sm text-destructive sm:p-6">
Honigcharge konnte nicht geladen werden.
</p>
);
@@ -122,7 +122,7 @@ export function CreateHoneyBatchDialog() {
/>
</div>
{error ? (
<p role="alert" className="text-sm text-red-600">
<p role="alert" className="text-sm text-destructive">
{error}
</p>
) : null}
@@ -6,6 +6,7 @@ import { useMutation, useQuery } from "@tanstack/react-query";
import { fetchHoneyBatches } from "@/lib/honey-batches/api";
import { HoneyBatchStatus } from "@/lib/honey-batches/types";
import { exportHoneyBatchesCsv } from "@/lib/export/api";
import { statusTone } from "@/lib/status-tone";
import { Badge } from "@/components/ui/badge";
import { Button } from "@/components/ui/button";
import {
@@ -49,7 +50,7 @@ export default function HoneyBatchesPage() {
return (
<main className="flex flex-col gap-4 p-4 sm:p-6">
<div className="flex items-center justify-between">
<h1 className="text-xl font-semibold">Honigchargen</h1>
<h1 className="text-2xl font-semibold tracking-tight">Honigchargen</h1>
<div className="flex gap-2">
<Button
variant="outline"
@@ -83,7 +84,7 @@ export default function HoneyBatchesPage() {
{isLoading ? <p className="text-sm text-muted-foreground">Lädt…</p> : null}
{isError ? (
<p role="alert" className="text-sm text-red-600">
<p role="alert" className="text-sm text-destructive">
Honigchargen konnten nicht geladen werden.
</p>
) : null}
@@ -102,7 +103,10 @@ export default function HoneyBatchesPage() {
{honeyBatches.map((honeyBatch) => (
<TableRow key={honeyBatch.id}>
<TableCell>
<Link className="underline" href={`/honey-batches/${honeyBatch.id}`}>
<Link
className="font-mono font-medium text-primary underline-offset-4 hover:underline"
href={`/honey-batches/${honeyBatch.id}`}
>
{honeyBatch.batchNumber}
</Link>
</TableCell>
@@ -111,7 +115,7 @@ export default function HoneyBatchesPage() {
{honeyBatch.amount !== null ? `${honeyBatch.amount} kg` : "—"}
</TableCell>
<TableCell>
<Badge>{honeyBatch.status}</Badge>
<Badge variant={statusTone(honeyBatch.status)}>{honeyBatch.status}</Badge>
</TableCell>
</TableRow>
))}