+
+
+ {availableTags.map((tag) => {
+ const active = tags.includes(tag);
+ return (
+
+ );
+ })}
+
+
+ )}
+
{error &&
@@ -306,11 +360,13 @@ function DayTimeline({
isAdmin,
onDelete,
driveSegments,
+ availableTags,
}: {
events: TripEvent[];
isAdmin: boolean;
onDelete: (id: string) => void;
driveSegments: { fromId: string; toId: string; text: string }[];
+ availableTags: string[];
}) {
const timed = [...events.filter((e) => e.start_time)].sort(
(a, b) => toMin(a.start_time!) - toMin(b.start_time!)
@@ -397,6 +453,11 @@ function DayTimeline({
{height >= 60 && e.notes && (
{e.notes}
)}
+ {e.tags?.length > 0 && (
+
+ {e.tags.map((t) => )}
+
+ )}
{e.maps_link && (
@@ -451,6 +512,11 @@ function DayTimeline({
{e.location}
)}
{e.notes &&
{e.notes}
}
+ {e.tags?.length > 0 && (
+
+ {e.tags.map((t) => )}
+
+ )}
{e.maps_link && (
@@ -493,6 +559,7 @@ interface SuggestionCard {
location?: string;
maps_link?: string;
notes?: string;
+ tags?: string[];
dismissed?: boolean;
added?: boolean;
}
@@ -567,6 +634,7 @@ function AssistantPanel({
location: s.location ?? null,
maps_link: s.maps_link ?? null,
notes: s.notes ?? null,
+ tags: s.tags ?? [],
});
onAddEvent(event);
setMessages((prev) =>
@@ -672,6 +740,11 @@ function AssistantPanel({
)}
{s.location &&
{s.location}
}
{s.notes &&
{s.notes}
}
+ {s.tags && s.tags.length > 0 && (
+
+ {s.tags.map((t) => )}
+
+ )}
{s.maps_link && (