'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'; // Constants const FILTER_TYPES = [ { icon: , label: 'Date' }, { icon: , label: 'Customers' }, { icon: , label: 'Amount' }, { icon: , label: 'Categories' }, { icon: , label: 'Accounts' }, ]; const ACCOUNTS = [ { name: 'Credit' }, { name: 'Treasury' }, { name: 'Ops / Payroll' }, { name: 'AP' }, { name: 'AR' }, { name: 'Checking' }, { name: 'Savings' }, ]; type AccountItemProps = { name: string; selected: boolean; onSelect: () => void; }; const AccountItem = ({ name, selected, onSelect }: AccountItemProps) => { const id = React.useId(); return (
{name}
); }; // Custom hook const useAccountFilter = () => { const [selectedAccounts, setSelectedAccounts] = React.useState([ 'Ops / Payroll', 'Checking', ]); const toggleAccount = (accountName: string) => { if (selectedAccounts.includes(accountName)) { setSelectedAccounts( selectedAccounts.filter((name) => name !== accountName), ); } else { setSelectedAccounts([...selectedAccounts, accountName]); } }; const selectAll = () => { setSelectedAccounts(ACCOUNTS.map((account) => account.name)); }; const clearSelection = () => { setSelectedAccounts([]); }; return { selectedAccounts, toggleAccount, selectAll, clearSelection, }; }; // Main Component export default function AccountFilterPopover() { const [activeFilter, setActiveFilter] = React.useState('Accounts'); const [searchQuery, setSearchQuery] = React.useState(''); const { selectedAccounts, toggleAccount, selectAll, clearSelection } = useAccountFilter(); const filteredAccounts = ACCOUNTS.filter((account) => account.name.toLowerCase().includes(searchQuery.toLowerCase()), ); return (
{/* Content */}
{/* Header */}

Accounts

Select All
{/* Account List */}
{filteredAccounts.map((account) => ( toggleAccount(account.name)} /> ))} {filteredAccounts.length === 0 && }
); }