Files
DOSSIER/src/components/Section.jsx
T
karim 9dc191be4f Initial commit — Dossier Rhino 8 Plugin
OpenStudio-Suite Architektur-Plugin fuer Rhino 8 (Mac):
- Smart-Elemente: Wand, Decke, Dach (Pult/Sattel/Walm/Mansarde),
  Oeffnungen (Fenster/Tueren mit Rahmen + Sims + Glas + Fluegel),
  Treppen (gerade · L · Wendel mit Schrittmass-Validierung)
- Live-Previews mit Step-Lines + Soll-Range-Clamping
- Bidirektionale Selection-Sync zwischen Source-Linie und Volume
- Geschoss-/Ebenen-Verwaltung mit OKFF-Persistenz
- Layouts mit PDF-Export
- Ausschnitte / Massstab / Override-Regeln
- Petrol-Gruen Theme (Rapport-konform)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 04:27:41 +02:00

42 lines
1.3 KiB
React

import { useState } from 'react'
import Icon from './Icon'
export default function Section({ title, badge, action, defaultOpen = true, children }) {
const [open, setOpen] = useState(defaultOpen)
return (
<div>
<div
onClick={() => setOpen(o => !o)}
style={{
display: 'flex',
alignItems: 'center',
gap: 6,
padding: '6px 14px 4px',
cursor: 'pointer',
userSelect: 'none',
}}
>
<span style={{
transform: open ? 'rotate(0deg)' : 'rotate(-90deg)',
transition: 'transform 0.2s cubic-bezier(0.4, 0, 0.2, 1)',
color: 'var(--text-muted)',
display: 'inline-flex',
marginLeft: -6,
}}>
<Icon name="arrow_drop_down" size={18} />
</span>
<span style={{
fontSize: 11, fontWeight: 500,
color: 'var(--text-primary)',
letterSpacing: '0.02em',
}}>{title}</span>
{badge != null && <span className="chip" style={{ fontSize: 8 }}>{badge}</span>}
<div style={{ flex: 1, height: 1, background: 'var(--border)', marginLeft: 4 }} />
{action && <div onClick={e => e.stopPropagation()}>{action}</div>}
</div>
{open && children}
</div>
)
}