import { Head, Link } from '@inertiajs/react';
import {
    Globe,
    Mail,
    Share2,
    Palette,
    Type,
    Upload,
    CreditCard,
    Send,
    Search,
    ToggleLeft,
} from 'lucide-react';

const groupIcons: Record<string, typeof Globe> = {
    identity: Globe,
    contact: Mail,
    socials: Share2,
    palette: Palette,
    typography: Type,
    uploads: Upload,
    membership: CreditCard,
    smtp: Send,
    seo: Search,
    features: ToggleLeft,
};

interface Group {
    key: string;
    label: string;
    count: number;
}

export default function SettingsIndex({ groups }: { groups: Group[] }) {
    return (
        <>
            <Head title="Settings" />
            <div className="space-y-6">
                <div>
                    <h1 className="text-2xl font-bold">Settings</h1>
                    <p className="mt-1 text-sm text-muted-foreground">Configure every aspect of the public site and system</p>
                </div>

                <div className="grid gap-4 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4">
                    {groups.map((group) => {
                        const Icon = groupIcons[group.key] ?? Globe;
                        return (
                            <Link
                                key={group.key}
                                href={`/admin/settings/${group.key}`}
                                className="flex items-start gap-4 rounded-xl border border-border bg-card p-5 transition-all hover:border-primary/30 hover:shadow-sm"
                            >
                                <div className="rounded-lg bg-muted p-2.5">
                                    <Icon className="h-5 w-5 text-muted-foreground" />
                                </div>
                                <div className="min-w-0">
                                    <p className="font-semibold">{group.label}</p>
                                    <p className="mt-0.5 text-xs text-muted-foreground">
                                        {group.count} setting{group.count !== 1 ? 's' : ''}
                                    </p>
                                </div>
                            </Link>
                        );
                    })}
                </div>
            </div>
        </>
    );
}
