From 8da529b8677ac8a24c3a6ae926b7c14b0530bf1a Mon Sep 17 00:00:00 2001 From: Claude Project Manager Date: Thu, 25 Sep 2025 00:55:12 +0200 Subject: [PATCH] Farben von Kacheln --- admin-panel/src/views/OrganizationEditor.tsx | 58 +++++++++++++------- 1 file changed, 37 insertions(+), 21 deletions(-) diff --git a/admin-panel/src/views/OrganizationEditor.tsx b/admin-panel/src/views/OrganizationEditor.tsx index b3af480..8c45da6 100644 --- a/admin-panel/src/views/OrganizationEditor.tsx +++ b/admin-panel/src/views/OrganizationEditor.tsx @@ -18,7 +18,7 @@ import { api } from '../services/api' import { OrganizationalUnit, OrganizationalUnitType } from '@skillmate/shared' import { Upload } from 'lucide-react' -// Custom Node Component +// Custom Node Component (vorheriger Look, aber mit soliden dezenten Farben) const OrganizationNode = ({ data }: { data: any }) => { const getTypeIcon = (type: OrganizationalUnitType) => { const icons = { @@ -34,38 +34,45 @@ const OrganizationNode = ({ data }: { data: any }) => { return icons[type] || '📄' } - const getGradient = (level: number) => { - const gradients = [ - 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)', - 'linear-gradient(135deg, #f093fb 0%, #f5576c 100%)', - 'linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)', - 'linear-gradient(135deg, #43e97b 0%, #38f9d7 100%)', - 'linear-gradient(135deg, #fa709a 0%, #fee140 100%)', - 'linear-gradient(135deg, #30cfd0 0%, #330867 100%)' - ] - return gradients[level % gradients.length] + const getAccent = (type: OrganizationalUnitType): string => { + switch (type) { + case 'direktion': return '#1E3A8A' // navy + case 'abteilung': return '#334155' // slate-700 + case 'dezernat': return '#1D4ED8' // blue-700 + case 'sachgebiet': return '#64748B' // slate-500 + case 'teildezernat': return '#64748B' // slate-500 + case 'stabsstelle': return '#374151' // gray-700 + case 'sondereinheit': return '#475569' // slate-600 + default: return '#334155' + } } return ( -
-
+
- {getTypeIcon(data.type)} - {data.code} + {getTypeIcon(data.type)} + {data.code && ( + + {data.code} + + )}
-

{data.name}

+

+ {data.name} +

{data.employeeCount !== undefined && ( -

+

👥 {data.employeeCount} Mitarbeiter

)} {data.hasFuehrungsstelle && ( - + FüSt )} @@ -562,8 +569,17 @@ export default function OrganizationEditor() { { - const gradients = ['#667eea', '#f093fb', '#4facfe', '#43e97b', '#fa709a', '#30cfd0'] - return gradients[node.data?.level % gradients.length] || '#94a3b8' + const type = (node.data as any)?.type as OrganizationalUnitType | undefined + const map: Record = { + direktion: '#1E3A8A', + abteilung: '#334155', + dezernat: '#1D4ED8', + sachgebiet: '#64748B', + teildezernat: '#64748B', + stabsstelle: '#374151', + sondereinheit: '#475569' + } + return (type && map[type]) || '#94a3b8' }} />