41 lines
945 B
TypeScript
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} />;
|
|
}
|