Usage
SettingsSection, SettingsRow, and the layout enums from @prepared911/ui/blocks/settings-section.
Each section fills its column up to 640px (calc(var(--space-128) * 5) on the section root; SSEC-26) and stays full width in narrower layouts.
Each commit row passes a control render function that receives { labelId, descriptionId, value, disabled, readOnly, busy, onValueChange }. Wire labelledBy and describedBy on the control from those ids.
Sections render null when every row is hidden by permission or audience. When the backing data is empty but the section stays on the page, pass emptyState so ComposedEmptyState fills the card.
Danger sections use kind: danger with layout: destructive rows and typed ConfirmDialog; they never commit on change until confirm succeeds.