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
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.
30 lines
838 B
JavaScript
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>
|
|
)
|
|
}
|