Kairo-Jinkendo/frontend/src/components/CollapsibleSection.jsx
Lars a520d54bcf
All checks were successful
Deploy Development / deploy (push) Successful in 46s
Test Suite / pytest-backend (push) Successful in 1m26s
Test Suite / lint-backend (push) Successful in 1s
Test Suite / compose-smoke (push) Has been skipped
Test Suite / k6 /api/health Baseline (push) Successful in 18s
Test Suite / playwright-smoke (push) Successful in 12s
AP1.1b: Vorhaben-Detail als Steuerungsfläche — Action-Hub statt paralleler Listen
Leitfrage oben, Maßnahmen mit verknüpftem Kontext aus dem Snapshot, vollständiges Meilenstein-Formular, Backlog/Entscheidungen/Nachweise unter Erweitert. Version 0.11.2-ap1.1b.
2026-07-05 17:39:18 +02:00

30 lines
838 B
JavaScript

import { useState } from 'react'
export function CollapsibleSection({
title,
summary,
defaultOpen = false,
children,
className = '',
}) {
const [open, setOpen] = useState(defaultOpen)
return (
<section className={`collapsible-section card ${className}`.trim()}>
<button
type="button"
className="collapsible-section-trigger"
onClick={() => setOpen((v) => !v)}
aria-expanded={open}
>
<span className="collapsible-section-title">{title}</span>
{summary && <span className="collapsible-section-summary muted">{summary}</span>}
<span className="collapsible-section-chevron" aria-hidden="true">
{open ? '▾' : '▸'}
</span>
</button>
{open && <div className="collapsible-section-body">{children}</div>}
</section>
)
}