This commit is contained in:
michael committed 2026-09-15 14:11:23 +00:00
1 parent 62d8f537a8
commit 8a4cf3fc9b
4 files changed
+354 -247

No files matched your search

+15 -7
View File
@@ -1628,20 +1628,23 @@ export function TicketDetailPage({ periodType, period, ticketId, onNavigate, onO
<div className="space-y-2">
{sessionGroups.map((group) => (
<div key={group.key} className="rounded-md border bg-background">
<div className="flex min-w-0 flex-col gap-2 border-b bg-muted/25 px-3 py-2 lg:flex-row lg:items-center lg:justify-between">
<div className="grid min-w-0 gap-2 border-b bg-muted/25 px-3 py-2 lg:grid-cols-[minmax(180px,1fr)_auto] lg:items-center">
<div className="min-w-0 text-left">
<p className="truncate font-medium">{group.label}</p>
<p className="text-xs text-muted-foreground">{group.sessions.length} Session(s)</p>
</div>
<div className="flex flex-wrap items-center gap-2">
<Button type="button" size="sm" variant="secondary" className="h-7" onClick={() => openTeamspacePreparation(group)}>
<div className="grid w-full gap-2 sm:grid-cols-[13rem_10rem_8rem] xl:w-auto xl:grid-cols-[13rem_10rem_8rem_auto] xl:items-center xl:justify-end">
<Button type="button" size="sm" variant="secondary" className="h-7 w-full justify-center" onClick={() => openTeamspacePreparation(group)}>
<ClipboardList className="size-3.5" />
TS Aufbereitung
</Button>
<Badge variant="outline">Abgerechnet {formatMinutes(group.totalMinutes)}</Badge>
{group.nonBillableMinutes > 0 ? <Badge variant="secondary">Nicht {formatMinutes(group.nonBillableMinutes)}</Badge> : null}
{group.openMinutes > 0 ? <Badge variant="warning">Offen {formatMinutes(group.openMinutes)}</Badge> : null}
<div className="flex items-center gap-2 text-xs text-muted-foreground">
<Badge variant="outline" className="flex h-7 w-full justify-center whitespace-nowrap">
Abgerechnet {formatMinutes(group.totalMinutes)}
</Badge>
<Badge variant={group.openMinutes > 0 ? "warning" : "success"} className="flex h-7 w-full justify-center whitespace-nowrap">
Offen {formatMinutes(group.openMinutes)}
</Badge>
<div className="flex items-center gap-2 text-xs text-muted-foreground sm:col-span-3 xl:col-span-1">
<label htmlFor={`crm-billing-${group.key}`}>Teamspace</label>
<Input
id={`crm-billing-${group.key}`}
@@ -1683,6 +1686,11 @@ export function TicketDetailPage({ periodType, period, ticketId, onNavigate, onO
{savingDayBillingKey === group.key ? "Speichert..." : "Speichern"}
</Button>
</div>
{group.nonBillableMinutes > 0 ? (
<Badge variant="secondary" className="flex h-7 w-full justify-center whitespace-nowrap sm:col-span-3 xl:col-span-1 xl:col-start-2">
Nicht {formatMinutes(group.nonBillableMinutes)}
</Badge>
) : null}
</div>
</div>
<div className="space-y-1.5 p-2 sm:p-3">