import Box from "@mui/material/Box"; import Typography from "@mui/material/Typography"; import { Card } from "../../ui"; import { formatDate } from "../../utils/formatters"; /** The logged-in user's resolved work plan for today (see GET /api/admin/dashboard). */ export interface TodayPlan { shift_date: string; category: string; category_label: string; category_color: string | null; project_id: number | null; project_number: string | null; project_name: string | null; note: string; source: "entry" | "override"; rangeFrom: string | null; rangeTo: string | null; } function projectLabel(p: TodayPlan): string { const parts = [p.project_number, p.project_name].filter(Boolean); return parts.length > 0 ? parts.join(" — ") : "Bez projektu"; } /** * "Vaše dnešní zařazení" — shows the logged-in user's work-plan entry for today * (category + project/site + note, with a range badge when the day is part of a * multi-day range). `plan === null` = the user has plan access but nothing is * scheduled today (muted empty state). Rendered near the clock-in on the * dashboard; the caller gates it on the plan permission. */ export default function DashTodayPlan({ plan }: { plan: TodayPlan | null }) { const color = plan?.category_color || "var(--mui-palette-primary-main)"; return ( Vaše dnešní zařazení {plan ? ( {plan.category_label} {plan.rangeFrom && plan.rangeTo && plan.rangeFrom !== plan.rangeTo && ( součást rozsahu {formatDate(plan.rangeFrom)} –{" "} {formatDate(plan.rangeTo)} )} {projectLabel(plan)} {plan.note && ( {plan.note} )} ) : ( Pro dnešek nemáte naplánováno. )} ); }