diff options
| author | Pinapelz <yukais@pinapelz.com> | 2025-11-09 20:33:00 -0800 |
|---|---|---|
| committer | Pinapelz <yukais@pinapelz.com> | 2025-11-09 20:33:11 -0800 |
| commit | 9608610b0fef717c8f2d87ab518a077f4e0763cb (patch) | |
| tree | 8f07ba97fbf782634c1818676660a93a2ac1360d /frontend/src/components/admin/CollapsibleSection.tsx | |
| parent | f0e80463fa23a6a52623b7507d6959d19af6ae07 (diff) | |
admin: implement user deletion
Diffstat (limited to 'frontend/src/components/admin/CollapsibleSection.tsx')
| -rw-r--r-- | frontend/src/components/admin/CollapsibleSection.tsx | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/frontend/src/components/admin/CollapsibleSection.tsx b/frontend/src/components/admin/CollapsibleSection.tsx new file mode 100644 index 0000000..ab72cc8 --- /dev/null +++ b/frontend/src/components/admin/CollapsibleSection.tsx @@ -0,0 +1,40 @@ +import type {ReactNode} from 'react'; + +interface CollapsibleSectionProps { + title: string; + isOpen: boolean; + onToggle: () => void; + children: ReactNode; +} + +const CollapsibleSection = ({ title, isOpen, onToggle, children }: CollapsibleSectionProps) => { + return ( + <div className="mb-8"> + <div className="bg-slate-900 rounded-lg border border-slate-700"> + <button + className="w-full px-6 py-4 text-left flex items-center justify-between hover:bg-slate-800 transition-colors rounded-lg" + onClick={onToggle} + > + <h2 className="text-xl font-semibold text-white">{title}</h2> + <svg + className={`w-5 h-5 text-slate-400 transform transition-transform ${ + isOpen ? 'rotate-180' : '' + }`} + fill="none" + stroke="currentColor" + viewBox="0 0 24 24" + > + <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M19 9l-7 7-7-7" /> + </svg> + </button> + {isOpen && ( + <div className="px-6 pb-6"> + {children} + </div> + )} + </div> + </div> + ); +}; + +export default CollapsibleSection; |
