"use client" import Link from "next/link" import { useGrowEntriesQuery } from "@/services/grow" import { formatDistanceToNow } from "date-fns" import { de } from "date-fns/locale" import { useTranslations } from "next-intl" import { Leaf, Plus, Sprout } from "lucide-react" import type { GrowStage } from "@/services/grow" import { Badge } from "@/components/ui/badge" import { Button } from "@/components/ui/button" import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" import { TableSkeleton } from "@/components/ui/data-skeleton" const STAGE_COLORS: Record = { SEEDLING: "bg-lime-500/20 text-lime-700 dark:text-lime-400", VEGETATIVE: "bg-green-500/20 text-green-700 dark:text-green-400", FLOWERING: "bg-purple-500/20 text-purple-700 dark:text-purple-400", HARVEST: "bg-amber-500/20 text-amber-700 dark:text-amber-400", DRYING: "bg-orange-500/20 text-orange-700 dark:text-orange-400", CURING: "bg-yellow-500/20 text-yellow-700 dark:text-yellow-400", COMPLETE: "bg-emerald-500/20 text-emerald-700 dark:text-emerald-400", } const STAGES_ORDER: GrowStage[] = [ "SEEDLING", "VEGETATIVE", "FLOWERING", "HARVEST", "DRYING", "CURING", "COMPLETE", ] export default function GrowPage() { const t = useTranslations("grow") const { data: entries, isLoading } = useGrowEntriesQuery() if (isLoading) { return (

{t("title")}

) } const growEntries = entries ?? [] return (

{t("title")}

{growEntries.length === 0 ? (

{t("noGrows")}

) : (
{growEntries.map((entry) => { const stageIndex = STAGES_ORDER.indexOf(entry.status) const daysInStage = formatDistanceToNow(new Date(entry.startedAt), { locale: de, addSuffix: false, }) return (
{entry.name} {t(`stages.${entry.status}`)}
{/* Stage progress indicator */}
{STAGES_ORDER.map((stage, i) => (
))}
{t("daysInStage")}: {daysInStage} {entry.expectedHarvestAt && ( {t("expectedHarvest")}:{" "} {new Date(entry.expectedHarvestAt).toLocaleDateString( "de-DE" )} )}
{entry.harvestedGrams && (
🌿 {entry.harvestedGrams}g {t("harvestGrams")}
)} ) })}
)}
) }