'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 (
);
};
// 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 */}
{/* Account List */}
{filteredAccounts.map((account) => (
toggleAccount(account.name)}
/>
))}
{filteredAccounts.length === 0 && }
);
}