import { CheckCircle2, Shield, Zap } from 'lucide-react';

import { PropsWithChildren, ReactNode } from 'react';

import { Head, Link } from '@inertiajs/react';

import { Logo, TextLogo } from '@/Components/branding/Logo';
import { ThemeToggle } from '@/Components/theme';
import { ErrorBoundary } from '@/Components/ui/error-boundary';

interface AuthLayoutProps extends PropsWithChildren {
  title?: string;
  leftContent?: ReactNode;
  leftFooter?: ReactNode;
  footer?: ReactNode;
}

export default function AuthLayout({
  children,
  title,
  leftContent,
  leftFooter,
  footer,
}: AuthLayoutProps) {
  const appName = import.meta.env.VITE_APP_NAME || 'Laravel';

  return (
    <>
      {title && <Head title={title} />}

      <div className="min-h-screen flex">
        <a
          href="#main-content"
          className="sr-only focus-visible:not-sr-only focus-visible:absolute focus-visible:top-4 focus-visible:left-4 focus-visible:z-50 focus-visible:px-4 focus-visible:py-2 focus-visible:bg-background focus-visible:text-foreground focus-visible:border focus-visible:border-border focus-visible:rounded-md focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
        >
          Skip to main content
        </a>
        {/* Left Panel - Branding (hidden on mobile) */}
        <div className="hidden lg:flex lg:w-1/2 bg-brand-surface text-brand-surface-foreground p-12 flex-col justify-between">
          <div>
            <Link href="/" className="flex items-center gap-2 mb-12">
              <Logo className="h-10 w-10" />
              <TextLogo className="text-2xl font-bold" />
            </Link>

            {leftContent || (
              <div className="max-w-lg space-y-6">
                <h1 className="text-4xl font-bold leading-tight">Welcome to {appName}</h1>
                <p className="text-lg text-brand-surface-foreground/70">
                  Sign in to access your dashboard and manage your account.
                </p>
              </div>
            )}
          </div>

          {leftFooter && <div>{leftFooter}</div>}
        </div>

        {/* Right Panel - Form */}
        <div className="flex-1 flex flex-col">
          {/* Mobile Header */}
          <header className="lg:hidden flex items-center justify-between p-4 border-b">
            <Link href="/" className="flex items-center gap-2">
              <Logo className="h-8 w-8" />
              <TextLogo className="font-bold" />
            </Link>
            <ThemeToggle />
          </header>

          {/* Desktop Theme Toggle */}
          <div className="hidden lg:flex justify-end p-6">
            <ThemeToggle />
          </div>

          {/* CRO-015: Mobile trust signals — visible only on mobile where left panel is hidden */}
          <div className="lg:hidden flex items-center justify-center gap-4 px-4 py-3 text-xs text-muted-foreground border-b bg-muted/30">
            <span className="flex items-center gap-1">
              <CheckCircle2 className="h-3.5 w-3.5 text-success" aria-hidden="true" />
              Free to start
            </span>
            <span className="flex items-center gap-1">
              <Shield className="h-3.5 w-3.5 text-success" aria-hidden="true" />
              No credit card
            </span>
            <span className="flex items-center gap-1">
              <Zap className="h-3.5 w-3.5 text-success" aria-hidden="true" />
              2-min setup
            </span>
          </div>

          {/* Form Container */}
          <main id="main-content" className="flex-1 flex items-center justify-center p-6 lg:p-12">
            <div className="w-full max-w-md">
              <ErrorBoundary>{children}</ErrorBoundary>
            </div>
          </main>

          {/* Footer */}
          {footer && (
            <footer className="p-6 text-center text-sm text-muted-foreground">{footer}</footer>
          )}
        </div>
      </div>
    </>
  );
}
