'use client'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { ChevronLeftIcon, ChevronRightIcon, SquareCheckIcon, SquareIcon, } from 'lucide-react'; import React from 'react'; export type TransferListItemType = { key: string; label: string; selected?: boolean; }; export default function TransferList({ items, }: { items: TransferListItemType[]; }) { const [leftList, setLeftList] = React.useState(items); const [rightList, setRightList] = React.useState([]); const [leftSearch, setLeftSearch] = React.useState(''); const [rightSearch, setRightSearch] = React.useState(''); const moveToRight = () => { const selectedItems = leftList.filter((item) => item.selected); setRightList([...rightList, ...selectedItems]); setLeftList(leftList.filter((item) => !item.selected)); }; const moveToLeft = () => { const selectedItems = rightList.filter((item) => item.selected); setLeftList([...leftList, ...selectedItems]); setRightList(rightList.filter((item) => !item.selected)); }; const toggleSelection = ( list: TransferListItemType[], setList: React.Dispatch>, key: string, ) => { const updatedList = list.map((item) => { if (item.key === key) { return { ...item, selected: !item.selected }; } return item; }); setList(updatedList); }; return (
setLeftSearch(e.target.value)} />
    {leftList .filter((item) => item.label.toLowerCase().includes(leftSearch.toLowerCase()), ) .map((item) => (
  • ))}
setRightSearch(e.target.value)} />
    {rightList .filter((item) => item.label.toLowerCase().includes(rightSearch.toLowerCase()), ) .map((item) => (
  • ))}
); }