'use client'; import * as React from 'react'; import { Landmark, CalendarDays, CircleDollarSign, Tag, UserRound, } from 'lucide-react'; import * as Checkbox from '@/components/ui/checkbox'; import * as Label from '@/components/ui/label'; import * as LinkButton from '@/components/ui/link-button'; import { Actions, FilterSidebar, NoResults, SearchField, } from '@/components/blocks/filter/filter-popover-parts'; const FILTER_TYPES = [ { icon: , label: 'Date' }, { icon: , label: 'Customers' }, { icon: , label: 'Amount' }, { icon: , label: 'Categories' }, { icon: , label: 'Accounts' }, ]; const CUSTOMERS = [ { name: 'James Brown' }, { name: 'Sophia Williams' }, { name: 'Arthur Taylor' }, { name: 'Emma Wright' }, { name: 'Matthew Johnson' }, { name: 'Laura Perez' }, { name: 'Wei Chen' }, ]; type CustomerItemProps = { name: string; selected: boolean; onSelect: () => void; }; const CustomerItem = ({ name, selected, onSelect }: CustomerItemProps) => { const id = React.useId(); return (
{name}
(Recipient)
); }; const useCustomerFilter = () => { const [selectedCustomers, setSelectedCustomers] = React.useState([ 'James Brown', ]); const toggleCustomer = (customerName: string) => { if (selectedCustomers.includes(customerName)) { setSelectedCustomers( selectedCustomers.filter((name) => name !== customerName), ); } else { setSelectedCustomers([...selectedCustomers, customerName]); } }; const selectAll = () => { setSelectedCustomers(CUSTOMERS.map((customer) => customer.name)); }; const clearSelection = () => { setSelectedCustomers([]); }; return { selectedCustomers, toggleCustomer, selectAll, clearSelection, }; }; export default function CustomerFilterPopover() { const [activeFilter, setActiveFilter] = React.useState('Customers'); const [searchQuery, setSearchQuery] = React.useState(''); const { selectedCustomers, toggleCustomer, selectAll, clearSelection } = useCustomerFilter(); const filteredCustomers = CUSTOMERS.filter((customer) => customer.name.toLowerCase().includes(searchQuery.toLowerCase()), ); return (
{/* Content */}
{/* Header */}

Customers

Select All
{/* Customer List */}
{filteredCustomers.map((customer) => ( toggleCustomer(customer.name)} /> ))} {filteredCustomers.length === 0 && }
); }