'use client'; import { useState } from 'react'; import { Popover, PopoverContent, PopoverTrigger, } from '@/components/ui/popover'; import { Button } from '@/components/ui/button'; import { Label } from '@/components/ui/label'; import { Checkbox } from '@/components/ui/checkbox'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select'; import { Download, FileDown, CalendarDays } from 'lucide-react'; import { toast } from 'sonner'; interface OrdersExportPopoverProps { onExport: (options: ExportOptions) => void; } export interface ExportOptions { range: string; includeColumns: string[]; respectFilters: boolean; } const AVAILABLE_COLUMNS = [ { id: 'id', label: 'Order ID' }, { id: 'eventName', label: 'Event Name' }, { id: 'amount', label: 'Amount' }, { id: 'status', label: 'Status' }, { id: 'date', label: 'Date' }, { id: 'customer', label: 'Customer Info' }, ]; export function OrdersExportPopover({ onExport }: OrdersExportPopoverProps) { const [range, setRange] = useState('30d'); const [respectFilters, setRespectFilters] = useState(true); const [selectedColumns, setSelectedColumns] = useState(AVAILABLE_COLUMNS.map(c => c.id)); const [open, setOpen] = useState(false); const handleColumnToggle = (id: string, checked: boolean) => { if (checked) { setSelectedColumns([...selectedColumns, id]); } else { setSelectedColumns(selectedColumns.filter(c => c !== id)); } }; const handleExport = () => { onExport({ range, includeColumns: selectedColumns, respectFilters }); setOpen(false); toast.promise(new Promise(resolve => setTimeout(resolve, 2000)), { loading: 'Generating CSV...', success: 'Export downloaded successfully!', error: 'Failed to export' }); }; return (

Export Options

Customize your data export.

{AVAILABLE_COLUMNS.map(col => (
handleColumnToggle(col.id, c as boolean)} className="h-3.5 w-3.5" />
))}
setRespectFilters(c as boolean)} />
); }