AhaSlides Design
v0.52.0React · Vue · Lit

Patterns · Settings

Setting group

The settings GROUP container — an optional semibold header (with a "?" help and an action slot) over a column of rows — that bakes in the panel spacing scale so gaps come out right automatically.

Examples

Header
Help
Tone
Spacing scale baked in · rows 16 · between groups 32 (automatic) · danger zone 48 · optional header + "?" help + action slot · no dividers/cards
Reset

API

PropTypeDefaultNotes
labelstringOptional group header (a 1–3 word noun phrase). When set, renders a semibold header and becomes the group's aria-label
helpstringOptional guidance shown as the "?" help tooltip (composed DS <aha-tooltip help>) after the header label — never a standing line
tone'default' | 'danger'defaultdanger → a danger-zone group, dropped 48px below the previous group (overrides the automatic 32). Spacing only — the danger CTA styling lives on the button
actionslotForwarded to the header, right-aligned — e.g. a small link or button beside the group title
(default slot)slotThe setting rows / sub-groups; they stack 16px apart automatically

Install

# .npmrc — once: point the @ahaslides-product scope at GitHub Packages
@ahaslides-product:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}   # a GitHub token with read:packages

npm i @ahaslides-product/design
import '@ahaslides-product/design/tokens.css';   // once, at the app root
import '@ahaslides-product/design/aha-setting-group';   // registers <aha-setting-group>

Agent feed for this component (absolute, fetchable anywhere): setting-group.agent.json · setting-group.md · setting-group.llms.txt

When to use

When to use
  • Setting group — a titled cluster of related settings in a panel — it bakes in the 16/32/48 spacing scale
  • Sub setting group — dependent child settings that appear under one parent toggle (indent + tight gap)
  • Settings list — you want the whole surface rendered from a schema (rows + reused DS controls) in one element
Reach for a group whenever you place more than one setting in a panel — it removes the temptation to eyeball gaps or draw a divider. Title it with a noun phrase; put guidance in the "?" help, not a standing line. Never wrap plain settings in a card or separate them with a line — hierarchy is spacing. Reserve tone="danger" for a genuine danger zone (delete / reset), and put the destructive styling on the CTA button inside it.
Surfaces
editor settings dashboard

Spec

Rows column · 16px between sibling settings (the settings scale) · header→rows 12px · Between groups 32px automatically (:host(:not(:first-child))) — no divider, no wiring · Danger zone tone=danger → 48px above (overrides the 32); the danger CTA styling lives on the button, not here · Header optional (label) · 14/21 Semibold (600) #1A1A1A · optional "?" help (composed <aha-tooltip help>) · action slot pushed right (margin-left:auto) · Structure no divider lines, no card/box — spacing only, white background