From 19099526e156ea4e36dff1431fe2ba0e72213072 Mon Sep 17 00:00:00 2001 From: Felix Zett Date: Sat, 20 Sep 2025 20:19:14 +0200 Subject: [PATCH] feat: enhance TripChecklist header with dynamic progress gradient and tag colors --- frontend/src/pages/TripChecklist.tsx | 94 ++++++++++++---------------- 1 file changed, 40 insertions(+), 54 deletions(-) diff --git a/frontend/src/pages/TripChecklist.tsx b/frontend/src/pages/TripChecklist.tsx index b5a34cf..36f8c6a 100644 --- a/frontend/src/pages/TripChecklist.tsx +++ b/frontend/src/pages/TripChecklist.tsx @@ -3,6 +3,7 @@ import React, { useState, useEffect, useRef } from "react"; import { useParams } from "react-router-dom"; import { getTripItems, toggleTripItem, updateTrip, getTags } from "../api"; import TagAutocompleteInput from "../components/TagAutocompleteInput"; +import { getTagColor } from "../utils/tagColors"; export default function TripChecklist({ trips }: { trips: any[] }) { const { id } = useParams(); @@ -239,38 +240,60 @@ export default function TripChecklist({ trips }: { trips: any[] }) { const checkedItems = items.filter((item) => item.checked).length; const progress = totalItems > 0 ? Math.round((checkedItems / totalItems) * 100) : 0; + // Progress gradient for header background (always full width) + const progressGradient = `linear-gradient(140deg, #f59e42 0%, #facc15 50%, #22c55e 100%)`; + return (
- {/* Kompakter Header für Trip-Titel und Zeitraum */} -
-
-
-

{trip.name}

- +
+ {/* Overlay: shrinking box from the right */} +
+
+
+

{trip.name}

+ {trip.start_date} – {trip.end_date}
- Tags: {selectedTags.length === 0 ? ( keine ) : ( selectedTags.map((tag: any) => { const isMarked = markedTags.some((mt: any) => mt.id === tag.id); + const color = getTagColor(tag.id); return ( handleToggleMark(tag.id)} onMouseEnter={() => setHoveredTag(tag.id)} onMouseLeave={() => setHoveredTag(null)} > #{tag.name} + {tag.mandatory && !} {hoveredTag === tag.id && (
- {/* Fortschrittsbalken kompakt rechts */} -
-
- Fortschritt - {checkedItems} / {totalItems} -
-
-
-
-
-
{progress}%
+ {/* Fortschritt kompakt rechts */} +
+ Fortschritt + {checkedItems} / {totalItems} + {progress}%
- {/* ...existing code... */} + {/* ...restliche Seite... */}