Files
mpm/apps/platform-frontend/src/components/ui/icon.tsx
2026-10-08 21:13:57 +02:00

41 lines
945 B
TypeScript

import {
ArrowRight,
Boxes,
Check,
ClipboardList,
Clock3,
LayoutDashboard,
Menu,
Moon,
Plus,
Sun,
UserRound,
UsersRound,
X,
type LucideIcon,
} from 'lucide-react';
import { type ReactNode } from 'react';
export type IconName = 'dashboard' | 'users' | 'modules' | 'system' | 'audit' | 'moon' | 'sun' | 'user' | 'arrow' | 'close' | 'menu' | 'plus' | 'check';
const ICONS: Record<IconName, LucideIcon> = {
dashboard: LayoutDashboard,
users: UsersRound,
modules: Boxes,
system: Clock3,
audit: ClipboardList,
moon: Moon,
sun: Sun,
user: UserRound,
arrow: ArrowRight,
close: X,
menu: Menu,
plus: Plus,
check: Check,
};
/** Lucide-Symbole im bestehenden MPM-Icon-API. */
export function Icon({ name, className = 'h-5 w-5' }: { name: IconName; className?: string }): ReactNode {
const Component = ICONS[name];
return <Component aria-hidden="true" className={className} strokeWidth={1.8} />;
}