import React, { useState, useEffect } from 'react';
import { Head, Link } from '@inertiajs/react';
import AuthenticatedLayout from '@/Layouts/AuthenticatedLayout';
import {
  TrendingUp,
  Receipt,
  Banknote,
  QrCode,
  CreditCard,
  Tag,
  AlertOctagon,
  Sparkles,
  Package,
  Calendar,
  ArrowUpRight,
  ShoppingCart,
  Users,
  Clock,
  Flame,
  Award
} from '@/Components/AnimatedIcons';

interface Props {
  stats: {
    today_sales: number;
    today_bills: number;
    cash_sales: number;
    upi_sales: number;
    card_sales: number;
    discounts: number;
    voided_bills: number;
  };
  topProducts: Array<{
    product_name_snapshot: string;
    total_qty: number;
    total_sales: number;
  }>;
  salesTrend: Array<{
    date: string;
    sales: number;
    bills: number;
  }>;
}

export default function Dashboard({ stats, topProducts, salesTrend }: Props) {
  const safeStats = {
    today_sales: Number(stats?.today_sales || 0),
    today_bills: Number(stats?.today_bills || 0),
    cash_sales: Number(stats?.cash_sales || 0),
    upi_sales: Number(stats?.upi_sales || 0),
    card_sales: Number(stats?.card_sales || 0),
    discounts: Number(stats?.discounts || 0),
    voided_bills: Number(stats?.voided_bills || 0),
  };
  const safeTopProducts = topProducts || [];
  const safeSalesTrend = salesTrend || [];

  // Max qty for progress bar calculation
  const maxQty = Math.max(...safeTopProducts.map((p) => Number(p.total_qty || 0)), 1);
  const maxSalesTrend = Math.max(...safeSalesTrend.map((s) => Number(s.sales || 0)), 1);

  // Active theme accent state (Pink vs SeaGreen)
  const [accent, setAccent] = useState<'pink' | 'seagreen'>(() => {
    if (typeof window !== 'undefined') {
      return (localStorage.getItem('admin_accent_color') as any) || 'pink';
    }
    return 'pink';
  });

  useEffect(() => {
    const handler = () => {
      const current = (localStorage.getItem('admin_accent_color') as any) || 'pink';
      setAccent(current);
    };
    window.addEventListener('theme_accent_changed', handler);
    return () => window.removeEventListener('theme_accent_changed', handler);
  }, []);

  const isPink = accent === 'pink';

  // Accent helper classes
  const accentText = isPink ? 'text-[#FF0D8F] dark:text-[#FF4DB8]' : 'text-[#0CA996] dark:text-[#00C8B2]';
  const accentBg = isPink ? 'bg-[#FF0D8F]' : 'bg-[#0CA996]';
  const accentHoverBg = isPink ? 'hover:bg-[#E0067B]' : 'hover:bg-[#098777]';
  const accentBadge = isPink
    ? 'bg-[#FF0D8F]/10 text-[#FF0D8F] border-2 shadow-2xs border-[#FF0D8F]/20 dark:bg-[#FF0D8F]/20 dark:text-[#FFC1E1]'
    : 'bg-[#0CA996]/10 text-[#0CA996] border-2 shadow-2xs border-[#0CA996]/20 dark:bg-[#0CA996]/20 dark:text-[#00C8B2]';
  const accentGradient = isPink
    ? 'from-[#FF0D8F] to-[#E0067B]'
    : 'from-[#0CA996] to-[#098777]';

  return (
    <AuthenticatedLayout>
      <Head title="Owner & Admin Dashboard - Cakes & Candles" />

      <div className="space-y-8">
        {/* HERO WELCOME HEADER BANNER */}
        <div className="relative overflow-hidden bg-white dark:bg-slate-950 text-slate-900 dark:text-white rounded-3xl p-6 sm:p-8 shadow-2xs border border-slate-200/80 dark:border-slate-800">
          <div className={`absolute top-0 right-0 -mt-10 -mr-10 w-64 h-64 ${isPink ? 'bg-[#FF0D8F]/10' : 'bg-[#0CA996]/10'} rounded-full blur-3xl pointer-events-none`} />

          <div className="relative z-10 flex flex-col md:flex-row md:items-center justify-between gap-6">
            <div className="space-y-2">
              <div className={`inline-flex items-center space-x-2 px-3 py-1 rounded-full text-xs font-semibold backdrop-blur-md ${accentBadge}`}>
                <Sparkles className="w-3.5 h-3.5 animate-pulse" />
                <span>Real-Time Store Performance Analytics</span>
              </div>
              <h1 className="text-2xl sm:text-3xl font-extrabold tracking-tight text-slate-900 dark:text-white ">
                Owner Analytics & Business Dashboard
              </h1>
              <p className="text-xs sm:text-sm text-slate-600 dark:text-slate-300 max-w-xl font-medium">
                Monitor live revenue metrics, payment channel settlements, top bakery cake items, and daily billing history.
              </p>
            </div>

            <div className="flex flex-wrap items-center gap-3">
              <Link
                href={route('admin.reports.index')}
                className="px-4 py-2.5 bg-slate-800 hover:bg-slate-700 text-slate-200 border border-slate-700 font-bold text-xs rounded-xl shadow-xs transition-all hover:scale-[1.02] flex items-center space-x-1.5"
              >
                <Calendar className="w-4 h-4 text-slate-400" />
                <span>Financial Reports</span>
              </Link>
              <Link
                href={route('pos.index')}
                className={`px-5 py-2.5 bg-gradient-to-r ${accentGradient} text-white font-extrabold text-xs rounded-xl shadow-md transition-all hover:scale-[1.02] flex items-center space-x-2`}
              >
                <ShoppingCart className="w-4 h-4" />
                <span>Open POS Terminal</span>
              </Link>
            </div>
          </div>
        </div>

        {/* TOP HERO KPI CARDS GRID */}
        <div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-5">
          {/* Card 1: Today Net Sales */}
          <div className="group bg-white dark:bg-slate-900 text-slate-900 dark:text-white rounded-3xl p-6 border border-slate-200/80 dark:border-slate-800 shadow-2xs hover:shadow-sm relative overflow-hidden transition-all duration-300 hover:-translate-y-1">
            <div className="absolute top-0 right-0 p-4 opacity-[0.03] dark:opacity-10 group-hover:opacity-[0.05] dark:group-hover:opacity-20 transition-opacity">
              <TrendingUp className="w-28 h-28 text-slate-900 dark:text-white" />
            </div>
            <div className="relative z-10">
              <span className={`text-xs font-extrabold uppercase tracking-wider block  ${accentText}`}>
                Today Net Revenue
              </span>
              <span className="text-3xl sm:text-4xl font-black mt-2 block tracking-tight  text-slate-900 dark:text-white">
                ₹{safeStats.today_sales.toFixed(2)}
              </span>
              <div className="mt-4 pt-3 border-t border-slate-100 dark:border-slate-800 flex items-center justify-between text-[11px] font-semibold text-slate-500 dark:text-slate-300">
                <span className="flex items-center text-slate-600 dark:text-slate-400">
                  <ArrowUpRight className={`w-4 h-4 mr-1 ${accentText}`} />
                  Live POS Settlements
                </span>
                <span className={`px-2 py-0.5 rounded-full text-[10px] ${accentBadge}`}>Updated</span>
              </div>
            </div>
          </div>

          {/* Card 2: Confirmed Bills */}
          <div className="bg-white dark:bg-slate-900 rounded-3xl p-6 border border-slate-200/80 dark:border-slate-800 shadow-2xs hover:shadow-sm transition-all duration-300 hover:-translate-y-1 flex flex-col justify-between">
            <div>
              <div className="flex justify-between items-center">
                <span className="text-slate-500 dark:text-slate-400 text-xs font-bold uppercase tracking-wider ">
                  Confirmed Bills
                </span>
                <div className={`w-10 h-10 rounded-2xl flex items-center justify-center ${accentBadge}`}>
                  <Receipt className="w-5 h-5" />
                </div>
              </div>
              <span className="text-3xl font-black text-slate-900 dark:text-white mt-3 block ">
                {safeStats.today_bills}
              </span>
            </div>
            <div className="mt-4 pt-3 border-t border-slate-100 dark:border-slate-800 text-[11px] text-slate-500 dark:text-slate-400 font-medium flex justify-between items-center">
              <span>Active orders fulfilled</span>
              <span className={`font-bold px-2 py-0.5 rounded-full text-[10px] ${accentBadge}`}>Today</span>
            </div>
          </div>

          {/* Card 3: Cash Collection */}
          <div className="bg-white dark:bg-slate-900 rounded-3xl p-6 border border-slate-200/80 dark:border-slate-800 shadow-2xs hover:shadow-sm transition-all duration-300 hover:-translate-y-1 flex flex-col justify-between">
            <div>
              <div className="flex justify-between items-center">
                <span className="text-slate-500 dark:text-slate-400 text-xs font-bold uppercase tracking-wider ">
                  Cash Collection
                </span>
                <div className={`w-10 h-10 rounded-2xl flex items-center justify-center ${accentBadge}`}>
                  <Banknote className="w-5 h-5" />
                </div>
              </div>
              <span className="text-3xl font-black text-slate-900 dark:text-white mt-3 block ">
                ₹{safeStats.cash_sales.toFixed(2)}
              </span>
            </div>
            <div className="mt-4 pt-3 border-t border-slate-100 dark:border-slate-800 text-[11px] text-slate-500 dark:text-slate-400 font-medium flex justify-between items-center">
              <span>Physical register cash</span>
              <span className={`px-2 py-0.5 rounded-full text-[10px] font-bold ${accentBadge}`}>In Drawer</span>
            </div>
          </div>

          {/* Card 4: UPI QR Sales */}
          <div className="bg-white dark:bg-slate-900 rounded-3xl p-6 border border-slate-200/80 dark:border-slate-800 shadow-2xs hover:shadow-sm transition-all duration-300 hover:-translate-y-1 flex flex-col justify-between">
            <div>
              <div className="flex justify-between items-center">
                <span className="text-slate-500 dark:text-slate-400 text-xs font-bold uppercase tracking-wider ">
                  UPI QR Digital
                </span>
                <div className={`w-10 h-10 rounded-2xl flex items-center justify-center ${accentBadge}`}>
                  <QrCode className="w-5 h-5" />
                </div>
              </div>
              <span className="text-3xl font-black text-slate-900 dark:text-white mt-3 block ">
                ₹{safeStats.upi_sales.toFixed(2)}
              </span>
            </div>
            <div className="mt-4 pt-3 border-t border-slate-100 dark:border-slate-800 text-[11px] text-slate-500 dark:text-slate-400 font-medium flex justify-between items-center">
              <span>Instant QR settlements</span>
              <span className={`px-2 py-0.5 rounded-full text-[10px] font-bold ${accentBadge}`}>Instant</span>
            </div>
          </div>
        </div>

        {/* SECOND ROW FINANCIAL TILES */}
        <div className="grid grid-cols-1 sm:grid-cols-3 gap-5">
          <div className="bg-white dark:bg-slate-900 rounded-3xl p-5 border border-slate-200/80 dark:border-slate-800 shadow-2xs hover:shadow-xs transition-all flex items-center justify-between">
            <div className="space-y-1">
              <span className="text-slate-400 dark:text-slate-500 text-xs font-extrabold uppercase ">Card Payments</span>
              <span className="text-2xl font-black text-slate-900 dark:text-white block ">₹{safeStats.card_sales.toFixed(2)}</span>
              <span className="text-[10px] text-slate-500 dark:text-slate-400 font-semibold block">POS Machine Swipes</span>
            </div>
            <div className={`w-11 h-11 rounded-2xl flex items-center justify-center ${accentBadge}`}>
              <CreditCard className="w-5 h-5" />
            </div>
          </div>

          <div className="bg-white dark:bg-slate-900 rounded-3xl p-5 border border-slate-200/80 dark:border-slate-800 shadow-2xs hover:shadow-xs transition-all flex items-center justify-between">
            <div className="space-y-1">
              <span className="text-slate-400 dark:text-slate-500 text-xs font-extrabold uppercase ">Discounts Given</span>
              <span className="text-2xl font-black text-slate-900 dark:text-white block ">₹{safeStats.discounts.toFixed(2)}</span>
              <span className="text-[10px] text-slate-500 dark:text-slate-400 font-semibold block">Total Bill Concessions</span>
            </div>
            <div className={`w-11 h-11 rounded-2xl flex items-center justify-center ${accentBadge}`}>
              <Tag className="w-5 h-5" />
            </div>
          </div>

          <div className="bg-white dark:bg-slate-900 rounded-3xl p-5 border border-slate-200/80 dark:border-slate-800 shadow-2xs hover:shadow-xs transition-all flex items-center justify-between">
            <div className="space-y-1">
              <span className="text-rose-600 dark:text-rose-400 text-xs font-extrabold uppercase ">Voided Bills</span>
              <span className="text-2xl font-black text-rose-950 dark:text-rose-200 block ">{safeStats.voided_bills}</span>
              <span className="text-[10px] text-rose-600 dark:text-rose-400 font-semibold block">Cancelled Transactions</span>
            </div>
            <div className="w-11 h-11 rounded-2xl bg-rose-50 dark:bg-rose-950/40 text-rose-600 dark:text-rose-400 border border-rose-200 dark:border-rose-800 flex items-center justify-center">
              <AlertOctagon className="w-5 h-5" />
            </div>
          </div>
        </div>

        {/* PINTEREST MASONRY SECTION: Top Items & Sales History */}
        <div className="grid grid-cols-1 lg:grid-cols-12 gap-8 items-start">
          {/* Top Selling Bakery Items (7 Cols) */}
          <div className="lg:col-span-7 bg-white dark:bg-slate-900 rounded-3xl border border-slate-200/80 dark:border-slate-800 p-6 shadow-2xs space-y-6">
            <div className="flex items-center justify-between border-b border-slate-100 dark:border-slate-800 pb-4">
              <div>
                <h3 className="font-extrabold text-lg text-slate-900 dark:text-white  flex items-center space-x-2">
                  <Flame className={`w-5 h-5 ${accentText}`} />
                  <span>Top Selling Bakery Items Today</span>
                </h3>
                <p className="text-xs text-slate-400 font-medium">Ranked by volume sold in POS terminal</p>
              </div>
              <span className={`text-xs font-extrabold px-3 py-1 rounded-full  ${accentBadge}`}>
                Top Products
              </span>
            </div>

            <div className="space-y-4">
              {topProducts.map((p, idx) => {
                const percentage = Math.round((p.total_qty / maxQty) * 100);
                return (
                  <div
                    key={idx}
                    className="p-4 rounded-2xl bg-slate-50/70 dark:bg-slate-800/50 border border-slate-100 dark:border-slate-800 hover:border-slate-300 dark:hover:border-slate-700 transition-all space-y-2"
                  >
                    <div className="flex items-center justify-between">
                      <div className="flex items-center space-x-3">
                        <span className={`w-7 h-7 rounded-xl ${accentBg} text-white font-extrabold text-xs flex items-center justify-center shadow-2xs`}>
                          #{idx + 1}
                        </span>
                        <div>
                          <span className="font-bold text-sm text-slate-900 dark:text-white block">{p.product_name_snapshot}</span>
                          <span className="text-[11px] text-slate-500 dark:text-slate-400 font-medium">
                            Qty Sold: <strong className="text-slate-900 dark:text-slate-200 font-extrabold">{p.total_qty} units</strong>
                          </span>
                        </div>
                      </div>

                      <div className="text-right">
                        <span className="font-black text-base text-slate-900 dark:text-white block ">
                          ₹{Number(p.total_sales).toFixed(2)}
                        </span>
                        <span className="text-[10px] text-slate-400 ">Gross Total</span>
                      </div>
                    </div>

                    {/* Progress Bar */}
                    <div className="w-full h-2 bg-slate-200 dark:bg-slate-700 rounded-full overflow-hidden">
                      <div
                        className={`h-full ${accentBg} rounded-full transition-all duration-500`}
                        style={{ width: `${percentage}%` }}
                      />
                    </div>
                  </div>
                );
              })}

              {topProducts.length === 0 && (
                <div className="p-12 text-center text-slate-400 space-y-2">
                  <Package className="w-10 h-10 mx-auto text-slate-300 dark:text-slate-600" />
                  <p className="text-xs font-semibold">No bakery items sold yet today.</p>
                </div>
              )}
            </div>
          </div>

          {/* 7-Day Sales Trend & Quick Operations (5 Cols) */}
          <div className="lg:col-span-5 space-y-6">
            {/* 7-Day Trend Card */}
            <div className="bg-white dark:bg-slate-900 rounded-3xl border border-slate-200/80 dark:border-slate-800 p-6 shadow-2xs space-y-5">
              <div className="flex items-center justify-between border-b border-slate-100 dark:border-slate-800 pb-4">
                <div>
                  <h3 className="font-extrabold text-lg text-slate-900 dark:text-white  flex items-center space-x-2">
                    <Calendar className={`w-5 h-5 ${accentText}`} />
                    <span>7-Day Sales History</span>
                  </h3>
                  <p className="text-xs text-slate-400 font-medium">Recent store revenue breakdown</p>
                </div>
              </div>

              <div className="space-y-3">
                {salesTrend.map((row, idx) => (
                  <div
                    key={idx}
                    className="flex items-center justify-between p-3 rounded-2xl bg-slate-50/80 dark:bg-slate-800/40 border border-slate-100 dark:border-slate-800 hover:bg-slate-100 dark:hover:bg-slate-800 transition-colors"
                  >
                    <div className="flex items-center space-x-3">
                      <div className="w-8 h-8 rounded-xl bg-slate-200/70 dark:bg-slate-700 text-slate-700 dark:text-slate-300 flex items-center justify-center  text-xs font-bold">
                        {idx + 1}
                      </div>
                      <div>
                        <span className="font-bold text-xs text-slate-800 dark:text-slate-200 block">{row.date}</span>
                        <span className="text-[10px] text-slate-400 font-medium">{row.bills} bills completed</span>
                      </div>
                    </div>

                    <div className="text-right">
                      <span className="font-extrabold text-sm text-slate-900 dark:text-white block ">
                        ₹{Number(row.sales).toFixed(2)}
                      </span>
                    </div>
                  </div>
                ))}

                {salesTrend.length === 0 && (
                  <div className="p-8 text-center text-slate-400 text-xs">
                    No historical sales recorded.
                  </div>
                )}
              </div>
            </div>

            {/* Quick Operations Tile */}
            <div className="bg-white dark:bg-slate-900 text-slate-900 dark:text-white rounded-3xl p-6 shadow-2xs border border-slate-200/80 dark:border-slate-800 space-y-4">
              <div className="flex items-center justify-between border-b border-slate-100 dark:border-slate-800 pb-3">
                <span className={`text-xs font-extrabold uppercase tracking-widest  ${accentText}`}>
                  Quick Operations Hub
                </span>
                <Award className={`w-4 h-4 ${accentText}`} />
              </div>

              <div className="grid grid-cols-2 gap-3">
                <Link
                  href={route('pos.index')}
                  className={`p-3.5 rounded-2xl bg-slate-50 dark:bg-slate-800/80 hover:bg-slate-100 dark:hover:bg-slate-700 text-slate-800 dark:text-white transition-all text-xs font-bold flex flex-col justify-between space-y-2 border border-slate-200 dark:border-slate-700/60 group`}
                >
                  <ShoppingCart className={`w-5 h-5 ${accentText}`} />
                  <span>POS Terminal</span>
                </Link>

                <Link
                  href={route('invoices.index')}
                  className={`p-3.5 rounded-2xl bg-slate-50 dark:bg-slate-800/80 hover:bg-slate-100 dark:hover:bg-slate-700 text-slate-800 dark:text-white transition-all text-xs font-bold flex flex-col justify-between space-y-2 border border-slate-200 dark:border-slate-700/60 group`}
                >
                  <Receipt className={`w-5 h-5 ${accentText}`} />
                  <span>All Invoices</span>
                </Link>

                <Link
                  href={route('daily-closing.index')}
                  className={`p-3.5 rounded-2xl bg-slate-50 dark:bg-slate-800/80 hover:bg-slate-100 dark:hover:bg-slate-700 text-slate-800 dark:text-white transition-all text-xs font-bold flex flex-col justify-between space-y-2 border border-slate-200 dark:border-slate-700/60 group`}
                >
                  <Clock className={`w-5 h-5 ${accentText}`} />
                  <span>Daily Closing</span>
                </Link>

                <Link
                  href={route('admin.customers.index')}
                  className={`p-3.5 rounded-2xl bg-slate-50 dark:bg-slate-800/80 hover:bg-slate-100 dark:hover:bg-slate-700 text-slate-800 dark:text-white transition-all text-xs font-bold flex flex-col justify-between space-y-2 border border-slate-200 dark:border-slate-700/60 group`}
                >
                  <Users className={`w-5 h-5 ${accentText}`} />
                  <span>Customer CRM</span>
                </Link>
              </div>
            </div>
          </div>
        </div>
      </div>
    </AuthenticatedLayout>
  );
}



