diff options
| author | Pinapelz <yukais@pinapelz.com> | 2025-11-09 20:15:12 -0800 |
|---|---|---|
| committer | Pinapelz <yukais@pinapelz.com> | 2025-11-09 20:15:12 -0800 |
| commit | f0e80463fa23a6a52623b7507d6959d19af6ae07 (patch) | |
| tree | 9847794861802746def25f0d556210d4985ed901 /frontend/src/components/CollapsibleSection.tsx | |
| parent | 6649c6d950ee4216773d55f71b7e28eaef715ef5 (diff) | |
clean up admin page into components
Diffstat (limited to 'frontend/src/components/CollapsibleSection.tsx')
| -rw-r--r-- | frontend/src/components/CollapsibleSection.tsx | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/frontend/src/components/CollapsibleSection.tsx b/frontend/src/components/CollapsibleSection.tsx new file mode 100644 index 0000000..08df24f --- /dev/null +++ b/frontend/src/components/CollapsibleSection.tsx @@ -0,0 +1,40 @@ +import { 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;
\ No newline at end of file |
