From 60b59c120a8fbcbe1b5f233aa21975a658265a8c Mon Sep 17 00:00:00 2001 From: Nick Szaunig Date: Sun, 23 Aug 2026 20:31:03 +0200 Subject: [PATCH] feat(frontend): einheitliche Seiten-Header mit Icon-Badge Neue PageHeader-Komponente (Gradient-Icon-Badge + Titel + Beschreibung + Aktionen) ersetzt die nackten

-Zeilen auf den meistgenutzten Seiten (Voelker, Bienenstaende, Koeniginnen, Aufgaben, Honigchargen, Statistik, Webhooks, Benutzerverwaltung). Gradient variiert pro Bereich (Honig/Salbei/Himmel), passend zum jeweiligen Sidebar-Icon. --- .../src/app/(app)/apiaries/page.tsx | 18 ++++++--- .../src/app/(app)/colonies/page.tsx | 36 ++++++++++-------- .../src/app/(app)/honey-batches/page.tsx | 32 +++++++++------- .../src/app/(app)/queens/page.tsx | 19 +++++++--- .../src/app/(app)/settings/users/page.tsx | 13 +++++-- .../src/app/(app)/settings/webhooks/page.tsx | 18 ++++----- .../src/app/(app)/statistics/page.tsx | 12 ++++-- ApiCore-Frontend/src/app/(app)/tasks/page.tsx | 19 +++++++--- .../src/components/page-header.tsx | 38 +++++++++++++++++++ 9 files changed, 142 insertions(+), 63 deletions(-) create mode 100644 ApiCore-Frontend/src/components/page-header.tsx diff --git a/ApiCore-Frontend/src/app/(app)/apiaries/page.tsx b/ApiCore-Frontend/src/app/(app)/apiaries/page.tsx index 6ba3fed..0dad296 100644 --- a/ApiCore-Frontend/src/app/(app)/apiaries/page.tsx +++ b/ApiCore-Frontend/src/app/(app)/apiaries/page.tsx @@ -2,12 +2,14 @@ import { useState } from "react"; import Link from "next/link"; +import { MapPin } from "lucide-react"; import { useQuery } from "@tanstack/react-query"; import { fetchApiaries } from "@/lib/apiaries/api"; import { ApiaryStatus } from "@/lib/apiaries/types"; import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; import { Input } from "@/components/ui/input"; +import { PageHeader } from "@/components/page-header"; import { Select, SelectContent, @@ -35,12 +37,16 @@ export default function ApiariesPage() { return (
-
-

Bienenstände

- -
+ }> + + Neuer Bienenstand + + } + />
-
-

Honigchargen

-
- - -
-
+ + + + + } + /> -
-

Benutzerverwaltung

- -
+ } + /> {isLoading ?

Lädt…

: null} {isError ? ( diff --git a/ApiCore-Frontend/src/app/(app)/settings/webhooks/page.tsx b/ApiCore-Frontend/src/app/(app)/settings/webhooks/page.tsx index a47d2d9..3b3c05c 100644 --- a/ApiCore-Frontend/src/app/(app)/settings/webhooks/page.tsx +++ b/ApiCore-Frontend/src/app/(app)/settings/webhooks/page.tsx @@ -1,10 +1,12 @@ "use client"; +import { Webhook } from "lucide-react"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { toast } from "sonner"; import { deleteWebhook, fetchWebhooks } from "@/lib/webhooks/api"; import { Badge } from "@/components/ui/badge"; import { ConfirmDialog } from "@/components/confirm-dialog"; +import { PageHeader } from "@/components/page-header"; import { Table, TableBody, @@ -33,15 +35,13 @@ export default function WebhooksPage() { return (
-
-
-

Webhooks

-

- Externe Systeme über Ereignisse in ApiCore benachrichtigen -

-
- -
+ } + /> {isLoading ?

Lädt…

: null} {isError ? ( diff --git a/ApiCore-Frontend/src/app/(app)/statistics/page.tsx b/ApiCore-Frontend/src/app/(app)/statistics/page.tsx index aa66aa0..943354a 100644 --- a/ApiCore-Frontend/src/app/(app)/statistics/page.tsx +++ b/ApiCore-Frontend/src/app/(app)/statistics/page.tsx @@ -1,5 +1,6 @@ "use client"; +import { BarChart3 } from "lucide-react"; import { useQuery } from "@tanstack/react-query"; import { fetchApiaries } from "@/lib/apiaries/api"; import { fetchColonies } from "@/lib/colonies/api"; @@ -12,6 +13,7 @@ import { fetchVarroaStats, } from "@/lib/statistics/api"; import { StatBarList } from "@/components/stat-bar-list"; +import { PageHeader } from "@/components/page-header"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; @@ -286,10 +288,12 @@ export default function StatisticsPage() { return (
-
-

Statistik

-

Auswertungen über deine Imkerei

-
+ diff --git a/ApiCore-Frontend/src/app/(app)/tasks/page.tsx b/ApiCore-Frontend/src/app/(app)/tasks/page.tsx index 1be583a..5de93bf 100644 --- a/ApiCore-Frontend/src/app/(app)/tasks/page.tsx +++ b/ApiCore-Frontend/src/app/(app)/tasks/page.tsx @@ -2,11 +2,13 @@ import { useState } from "react"; import Link from "next/link"; +import { ListTodo } from "lucide-react"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { completeTask, fetchTasks } from "@/lib/tasks/api"; import { TaskPriority, TaskStatus } from "@/lib/tasks/types"; import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; +import { PageHeader } from "@/components/page-header"; import { Select, SelectContent, @@ -56,12 +58,17 @@ export default function TasksPage() { return (
-
-

Aufgaben

- -
+ }> + + Neue Aufgabe + + } + />