import React from 'react'; import { Link } from 'react-router-dom'; import { ChevronRight, Package } from 'lucide-react'; import { __ } from '@/lib/i18n'; import { formatMoney } from '@/lib/currency'; import { formatRelativeOrDate } from '@/lib/dates'; import { Checkbox } from '@/components/ui/checkbox'; const statusStyle: Record = { pending: 'bg-amber-100 text-amber-800 dark:bg-amber-900/30 dark:text-amber-300', processing: 'bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-300', completed: 'bg-emerald-100 text-emerald-800 dark:bg-emerald-900/30 dark:text-emerald-300', 'on-hold': 'bg-slate-200 text-slate-800 dark:bg-slate-800 dark:text-slate-300', cancelled: 'bg-zinc-200 text-zinc-800 dark:bg-zinc-800 dark:text-zinc-300', refunded: 'bg-purple-100 text-purple-800 dark:bg-purple-900/30 dark:text-purple-300', failed: 'bg-rose-100 text-rose-800 dark:bg-rose-900/30 dark:text-rose-300', }; interface OrderCardProps { order: any; selected?: boolean; onSelect?: (id: number) => void; currencyConfig: any; } export function OrderCard({ order, selected, onSelect, currencyConfig }: OrderCardProps) { const statusClass = statusStyle[order.status?.toLowerCase()] || 'bg-slate-100 text-slate-800'; return (
{/* Checkbox */} {onSelect && (
{ e.preventDefault(); e.stopPropagation(); onSelect(order.id); }} >
)}
{/* Icon - inline with first 2 lines */}
{/* Line 2: Order Number (big) */} #{order.number}
{/* Line 1: Date (small) */}
{formatRelativeOrDate(order.date_ts)}
{/* Content - 2 lines inline with icon */}
{/* Line 3: Customer */}
{order.customer || __('Guest')}
{/* Line 4: Items */} {order.items_brief && (
{order.items_count} {order.items_count === 1 ? __('item') : __('items')} ยท {order.items_brief}
)} {/* Line 5: Total & Status */}
{formatMoney(order.total, { currency: order.currency || currencyConfig.currency, symbol: order.currency_symbol || currencyConfig.symbol, thousandSep: currencyConfig.thousand_sep, decimalSep: currencyConfig.decimal_sep, position: currencyConfig.position, decimals: currencyConfig.decimals, })}
{/* Chevron */}
); }