import { Head } from '@inertiajs/react';
import { ReactNode } from 'react';
import AdminLayout from '@/layouts/AdminLayout';
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';
import { Construction } from 'lucide-react';

interface ComingSoonProps {
  path: string;
}

const labels: Record<string, string> = {
  orders: 'Bookings',
  calendar: 'Calendar',
  trainers: 'Trainers',
  companies: 'Companies',
  availability: 'Availability',
  courses: 'Courses',
  'course-assignments': 'Assignments',
  venues: 'Locations',
  'e-learning': 'E-Learning',
  accounts: 'Accounts',
  'user-roles': 'User Roles',
  'discount-codes': 'Discounts',
  sops: 'SOPs',
  'locktel-cms': 'Locktel CMS',
  'audit-log': 'Audit Log',
  prerequisites: 'Prerequisites',
  waitlist: 'Waitlist',
  certificates: 'Certificates',
  revenue: 'Revenue',
  'ar-assist': 'AR Assist',
  services: 'Services',
  'location-overrides': 'Location Overrides',
  'date-changes': 'Date Changes',
  'my-schedule': 'My Schedule',
  finance: 'Finance',
  'course-requests': 'Course Requests',
  'compliance-hub': 'Compliance Hub',
  'compliance-docs': 'Compliance Docs',
  'risk-assessor': 'Risk Assessor',
  'skills-gap': 'Skills Gap',
};

function titleFor(path: string): string {
  const seg = path.split('/').filter(Boolean)[0] ?? '';
  return labels[seg] || seg.replace(/-/g, ' ').replace(/\b\w/g, (c) => c.toUpperCase());
}

export default function ComingSoon({ path }: ComingSoonProps) {
  const label = titleFor(path);

  return (
    <>
      <Head title={label} />
      <div className="space-y-6">
        <div>
          <h1 className="text-3xl font-bold tracking-tight">{label}</h1>
        </div>

        <Card>
          <CardHeader>
            <CardTitle className="flex items-center gap-2">
              <Construction className="h-5 w-5 text-primary" /> Coming soon
            </CardTitle>
            <CardDescription>This page is on the porting list and will land in a follow-up batch.</CardDescription>
          </CardHeader>
          <CardContent>
            <p className="text-sm text-muted-foreground">
              The route <code className="bg-muted px-1.5 py-0.5 rounded">/admin/{path}</code> is wired,
              but the React page from the source app hasn't been ported into Inertia yet.
            </p>
          </CardContent>
        </Card>
      </div>
    </>
  );
}

ComingSoon.layout = (page: ReactNode) => <AdminLayout>{page}</AdminLayout>;
