- Ruhiges Dark-Designsystem (Tokens, Karten, Badges/Pills, KPIs) in global.css, animierter PixelBlast-Hintergrund entfernt (kleineres Bundle) - Aufgeraeumter App-Rahmen: feste Sidebar mit sichtbaren Labels, gruppierter Navigation, aktivem Zustand und Collapse - Wiederverwendbare UI-Bausteine unter src/components/ui/ - Ticketliste als scanbare Karten (TicketCard) statt rowSpan-Tabelle - Neue Bereiche: Kunden (CRM-360), Finanzen-Cockpit, Dokumente-Browser - Dashboard als echtes Cockpit (Ticket-/Finanz-/Dokument-Kennzahlen) - Alle Seiten auf einheitlichen PageHeader/Container/Tokens umgestellt Co-authored-by: Cursor <cursoragent@cursor.com>
37 lines
962 B
React
37 lines
962 B
React
const STATUS_CLASS = {
|
|
Open: 'status-open',
|
|
Occupied: 'status-occupied',
|
|
Assigned: 'status-assigned',
|
|
Awaiting: 'status-awaiting',
|
|
'Added Info': 'status-awaiting',
|
|
Closed: 'status-closed',
|
|
}
|
|
|
|
const PRIORITY = {
|
|
0: { cls: 'priority-none', label: 'Keine' },
|
|
1: { cls: 'priority-low', label: 'Niedrig' },
|
|
2: { cls: 'priority-medium', label: 'Mittel' },
|
|
3: { cls: 'priority-high', label: 'Hoch' },
|
|
4: { cls: 'priority-critical', label: 'Kritisch' },
|
|
}
|
|
|
|
const pillBase = {
|
|
display: 'inline-flex',
|
|
alignItems: 'center',
|
|
gap: 6,
|
|
padding: '3px 10px',
|
|
borderRadius: 999,
|
|
fontSize: 12,
|
|
fontWeight: 700,
|
|
}
|
|
|
|
export function StatusPill({ status }) {
|
|
const cls = STATUS_CLASS[status] || 'status-open'
|
|
return <span className={cls} style={pillBase}>{status || 'Open'}</span>
|
|
}
|
|
|
|
export function PriorityPill({ priority }) {
|
|
const p = PRIORITY[priority] ?? PRIORITY[1]
|
|
return <span className={p.cls} style={pillBase}>{p.label}</span>
|
|
}
|