- Entferne alle überflüssigen Installations- und Konfigurationsskripte - Erstelle zwei vereinfachte Docker-Installationsskripte: - install-frontend.sh für Frontend-Installation - install-backend.sh für Backend-Installation - Verbessere Frontend Dockerfile mit besserer Unterstützung für native Dependencies - Aktualisiere Backend Dockerfile für automatische DB-Initialisierung - Korrigiere TypeScript-Fehler in personalized-cards.tsx - Erstelle env.ts für Umgebungsvariablen-Verwaltung - Füge ausführliche Installationsanleitung in INSTALL.md hinzu - Konfiguriere Docker-Compose für Host-Netzwerkmodus - Erweitere Dockerfiles mit Healthchecks für bessere Zuverlässigkeit 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
39 lines
1.0 KiB
TypeScript
39 lines
1.0 KiB
TypeScript
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
|
|
import { icons } from "lucide-react";
|
|
|
|
interface GenericIconProps {
|
|
name: keyof typeof icons;
|
|
className: string;
|
|
}
|
|
|
|
function GenericIcon(props: GenericIconProps) {
|
|
const { name, className } = props;
|
|
const LucideIcon = icons[name];
|
|
|
|
return <LucideIcon className={className} />;
|
|
}
|
|
|
|
interface DataCardProps {
|
|
title: string;
|
|
description?: string;
|
|
value: string | number;
|
|
icon: keyof typeof icons;
|
|
}
|
|
|
|
export function DataCard(props: DataCardProps) {
|
|
const { title, description, value, icon } = props;
|
|
|
|
return (
|
|
<Card className="w-full">
|
|
<CardHeader className="flex flex-row items-center justify-between space-y-0 pb-2">
|
|
<CardTitle className="text-sm font-medium">{title}</CardTitle>
|
|
<GenericIcon name={icon} className="h-4 w-4 text-muted-foreground" />
|
|
</CardHeader>
|
|
<CardContent>
|
|
<div className="text-2xl font-bold">{value}</div>
|
|
<p className="text-xs text-muted-foreground"> </p>
|
|
</CardContent>
|
|
</Card>
|
|
);
|
|
}
|