import { Head, router, usePage } from '@inertiajs/react';
import { useState } from 'react';
import { Users, Plus, Trash2 } from 'lucide-react';

type Space = {
    id: number; name: string; slug: string; description: string | null; color: string;
    members: number; dashboards: number; metrics: number;
};

export default function Spaces() {
    const { spaces } = usePage().props as unknown as { spaces: Space[] };
    const [form, setForm] = useState({ name: '', description: '', color: '#4C5BD4' });

    const create = () => {
        if (!form.name) return;
        router.post('/spaces', form, { preserveScroll: true, onSuccess: () => setForm({ name: '', description: '', color: '#4C5BD4' }) });
    };

    return (
        <>
            <Head title="Spaces" />
            <div className="mx-auto w-full max-w-4xl px-6 py-8">
                <h1 className="mb-6 flex items-center gap-2 text-2xl font-semibold tracking-tight text-foreground">
                    <Users className="size-5 text-primary" /> Spaces
                </h1>

                <section className="mb-8 rounded-xl border border-border bg-card p-5">
                    <h2 className="mb-3 flex items-center gap-2 font-medium text-foreground"><Plus className="size-4 text-primary" /> New space</h2>
                    <div className="grid gap-3">
                        <input value={form.name} onChange={(e) => setForm({ ...form, name: e.target.value })} placeholder="Space name (e.g. Marketing Team)"
                            className="rounded-md border border-border bg-background px-3 py-2 text-sm" />
                        <input value={form.description} onChange={(e) => setForm({ ...form, description: e.target.value })} placeholder="Description (optional)"
                            className="rounded-md border border-border bg-background px-3 py-2 text-sm" />
                        <div className="flex items-center gap-2">
                            <input type="color" value={form.color} onChange={(e) => setForm({ ...form, color: e.target.value })}
                                className="h-9 w-14 rounded border border-border" />
                            <button onClick={create} className="ml-auto rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:opacity-90">
                                Create space
                            </button>
                        </div>
                    </div>
                </section>

                <div className="grid gap-3 sm:grid-cols-2">
                    {spaces.map((s) => (
                        <div key={s.id} className="rounded-xl border border-border bg-card p-5">
                            <div className="flex items-start justify-between">
                                <div className="flex items-center gap-2">
                                    <span className="size-3 rounded-full" style={{ background: s.color }} />
                                    <span className="font-medium text-foreground">{s.name}</span>
                                </div>
                                <button onClick={() => router.delete(`/spaces/${s.id}`, { preserveScroll: true })}
                                    className="rounded p-1.5 text-muted-foreground hover:text-destructive"><Trash2 className="size-4" /></button>
                            </div>
                            {s.description && <p className="mt-1 text-sm text-muted-foreground">{s.description}</p>}
                            <p className="mt-3 text-xs text-muted-foreground">{s.members} members · {s.dashboards} dashboards · {s.metrics} metrics</p>
                        </div>
                    ))}
                    {spaces.length === 0 && (
                        <p className="col-span-2 rounded-xl border border-dashed border-border p-8 text-center text-sm text-muted-foreground">
                            No spaces yet. Create one to group dashboards and metrics for a team.
                        </p>
                    )}
                </div>
            </div>
        </>
    );
}
