| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 | 
							- import { useState } from 'react'
 
- import { ChevronDownIcon, ChevronRightIcon } from '@heroicons/react/24/outline'
 
- import classNames from '@/utils/classnames'
 
- export type IItem = {
 
-   key: string
 
-   name: string
 
- }
 
- type ICollapse = {
 
-   title: string | undefined
 
-   items: IItem[]
 
-   renderItem: (item: IItem) => React.ReactNode
 
-   onSelect?: (item: IItem) => void
 
-   wrapperClassName?: string
 
- }
 
- const Collapse = ({
 
-   title,
 
-   items,
 
-   renderItem,
 
-   onSelect,
 
-   wrapperClassName,
 
- }: ICollapse) => {
 
-   const [open, setOpen] = useState(false)
 
-   const toggle = () => setOpen(!open)
 
-   return (
 
-     <div className={classNames('border border-gray-200 bg-gray-50 rounded-lg', wrapperClassName)}>
 
-       <div className='flex items-center justify-between leading-[18px] px-3 py-2 text-xs font-medium text-gray-800 cursor-pointer' onClick={toggle}>
 
-         {title}
 
-         {
 
-           open
 
-             ? <ChevronDownIcon className='w-3 h-3 text-gray-400' />
 
-             : <ChevronRightIcon className='w-3 h-3 text-gray-400' />
 
-         }
 
-       </div>
 
-       {
 
-         open && (
 
-           <div className='py-2 border-t border-t-gray-100'>
 
-             {
 
-               items.map(item => (
 
-                 <div key={item.key} onClick={() => onSelect && onSelect(item)}>
 
-                   {renderItem(item)}
 
-                 </div>
 
-               ))
 
-             }
 
-           </div>
 
-         )
 
-       }
 
-     </div>
 
-   )
 
- }
 
- export default Collapse
 
 
  |