import { useState } from 'react';
import { ShoppingCart, Truck, Package, Star, AlertTriangle } from 'lucide-react';

export const MiniCart = () => (
  <div className="h-full flex flex-col">
    <div className="flex items-center justify-between mb-2">
      <ShoppingCart className="w-4 h-4 text-primary" />
      <span className="text-[8px] bg-accent text-accent-foreground px-1 rounded">3</span>
    </div>
    {[1, 2, 3].map(i => (
      <div key={i} className="flex items-center gap-2 mb-1">
        <div className="w-4 h-4 bg-secondary rounded" />
        <div className="flex-1 h-2 bg-secondary/50 rounded" />
        <span className="text-[7px] text-primary">$99</span>
      </div>
    ))}
    <div className="mt-auto pt-1 border-t border-border/30 flex justify-between text-[8px]">
      <span className="text-muted-foreground">Total:</span>
      <span className="text-primary font-mono">$297</span>
    </div>
  </div>
);

export const MiniCountdown = () => {
  const [time] = useState({ d: 12, h: 5, m: 34, s: 22 });
  return (
    <div className="h-full flex items-center justify-center gap-2">
      {Object.entries(time).map(([unit, val]) => (
        <div key={unit} className="text-center">
          <div className="text-lg font-mono text-primary bg-secondary/30 rounded px-1">
            {String(val).padStart(2, '0')}
          </div>
          <div className="text-[6px] text-muted-foreground uppercase">{unit}</div>
        </div>
      ))}
    </div>
  );
};

export const MiniCryptoTicker = () => (
  <div className="h-full flex flex-col justify-center gap-1">
    {[
      { symbol: 'BTC', price: '43,250', change: '+2.4%', up: true },
      { symbol: 'ETH', price: '2,280', change: '-0.8%', up: false },
      { symbol: 'SOL', price: '98.50', change: '+5.2%', up: true },
    ].map(({ symbol, price, change, up }) => (
      <div key={symbol} className="flex items-center justify-between text-[8px]">
        <span className="font-mono text-foreground">{symbol}</span>
        <span className="font-mono text-primary">${price}</span>
        <span className={up ? 'text-green-400' : 'text-red-400'}>{change}</span>
      </div>
    ))}
  </div>
);

export const MiniOrderStatus = () => (
  <div className="h-full flex items-center justify-between px-1">
    {['Ordered', 'Packed', 'Shipped', 'Delivered'].map((s, i) => (
      <div key={s} className="flex flex-col items-center gap-1">
        <div className={`w-5 h-5 rounded-full flex items-center justify-center text-[7px] ${i < 2 ? 'bg-green-500 text-white' : i === 2 ? 'bg-yellow-500 text-black' : 'bg-secondary text-muted-foreground'}`}>
          {i < 2 ? '✓' : i === 2 ? <Truck className="w-3 h-3" /> : '○'}
        </div>
        <span className="text-[5px] text-muted-foreground">{s}</span>
      </div>
    ))}
  </div>
);

export const MiniProductCard = () => (
  <div className="h-full flex gap-2">
    <div className="w-12 h-12 bg-secondary/50 rounded flex items-center justify-center">
      <Package className="w-6 h-6 text-muted-foreground" />
    </div>
    <div className="flex-1 flex flex-col justify-center">
      <span className="text-[9px] font-medium truncate">Product Name</span>
      <span className="text-[8px] text-muted-foreground">SKU: PRD-001</span>
      <div className="flex items-center gap-2 mt-1">
        <span className="text-[10px] text-primary font-mono">$49.99</span>
        <span className="text-[7px] text-green-400">In Stock</span>
      </div>
    </div>
  </div>
);

export const MiniSalesFunnel = () => (
  <div className="h-full flex flex-col justify-center gap-0.5">
    {[
      { label: 'Visitors', value: '10,000', width: '100%' },
      { label: 'Added to Cart', value: '2,500', width: '70%' },
      { label: 'Checkout', value: '800', width: '45%' },
      { label: 'Purchased', value: '320', width: '25%' },
    ].map((stage, i) => (
      <div key={stage.label} className="flex items-center gap-2">
        <div className="h-2 bg-gradient-to-r from-primary to-accent rounded-r" style={{ width: stage.width }} />
        <span className="text-[6px] text-muted-foreground whitespace-nowrap">{stage.value}</span>
      </div>
    ))}
  </div>
);

export const MiniReviewScore = () => (
  <div className="h-full flex flex-col items-center justify-center gap-1">
    <div className="flex gap-0.5">
      {[1, 2, 3, 4, 5].map(i => (
        <Star key={i} className={`w-3 h-3 ${i <= 4 ? 'text-yellow-400 fill-yellow-400' : 'text-muted-foreground'}`} />
      ))}
    </div>
    <span className="text-sm font-mono text-primary">4.2</span>
    <span className="text-[7px] text-muted-foreground">1,247 reviews</span>
  </div>
);

export const MiniInventoryAlert = () => (
  <div className="h-full flex flex-col gap-1">
    <div className="flex items-center gap-1 text-[8px]">
      <AlertTriangle className="w-3 h-3 text-yellow-400" />
      <span className="text-yellow-400">Low Stock Alert</span>
    </div>
    {[
      { name: 'Widget A', qty: 5 },
      { name: 'Gadget B', qty: 12 },
    ].map(item => (
      <div key={item.name} className="flex items-center justify-between text-[7px] bg-secondary/20 rounded px-1.5 py-0.5">
        <span className="text-muted-foreground">{item.name}</span>
        <span className="text-red-400 font-mono">{item.qty} left</span>
      </div>
    ))}
  </div>
);

export const MiniConversionRate = () => (
  <div className="h-full flex flex-col items-center justify-center gap-1">
    <div className="relative w-14 h-14">
      <svg viewBox="0 0 36 36" className="w-full h-full -rotate-90">
        <circle cx="18" cy="18" r="15" fill="none" stroke="hsl(var(--secondary))" strokeWidth="3" />
        <circle cx="18" cy="18" r="15" fill="none" stroke="hsl(var(--primary))" strokeWidth="3" strokeDasharray="32 68" />
      </svg>
      <div className="absolute inset-0 flex flex-col items-center justify-center">
        <span className="text-sm font-mono text-primary">3.2%</span>
      </div>
    </div>
    <span className="text-[7px] text-muted-foreground">Conversion Rate</span>
  </div>
);
