'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 (
);
};
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 */}
{/* Customer List */}
{filteredCustomers.map((customer) => (
toggleCustomer(customer.name)}
/>
))}
{filteredCustomers.length === 0 && }
);
}