AhaSlides Design
v0.52.0React · Vue · Lit

Patterns · Settings

Setting Row

ONE setting — a label (with an optional "?" help) plus a slotted DS control; inline (label-left / control-right) by default, or stacked (label above, control full-width) for a wide control.

Examples

Layout
Help
Disabled
Setting row · ONE setting — label + a slotted DS control (the playground drives this one)
Inline (default) · label LEFT · control RIGHT · space-between
Stack · label above · control full-width (a wide textarea / wide select)

API

PropTypeDefaultNotes
labelstringThe setting name — a noun phrase in sentence case
helpstringOptional guidance — renders the "?" help trigger (circled question glyph) after the label; the tooltip carries the text
layoutinline | stackinlineinline: label-left / control-right (space-between). stack: label above, control full-width — for a wide control
disabledbooleanfalseDims the label to text-disabled and sets aria-disabled; the slotted control disables itself on its own element
controlslotThe DS control (slot="control") — an existing element like <aha-switch> / <aha-checkbox> / <aha-input>; reuse, never a re-implemented control

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-row';   // registers <aha-setting-row>

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

When to use

When to use
  • Setting row (inline) — a compact control — a switch, a checkbox, a short input — sits to the right of its label
  • Setting row (stack) — a wide control — a textarea, a wide select — needs the full row width below the label
  • Section header — the title of the GROUP these rows sit under
Name the setting with a noun phrase in sentence case ("Progress bar", "Speaker notes") — never a question and never Title Case. Put guidance in `help` (the "?" tooltip), not a standing line. Choose `inline` for a toggle/checkbox/short input; switch to `stack` the moment the control needs real width (a textarea, a wide select). Never hand-place an icon before the label — functional icons belong inside the control (SETTINGS-40).
Surfaces
editor dashboard settings audience

Spec

Inline row flex; align-items center; justify-content space-between; gap 12; min-height 24 · Label Plus Jakarta 14/21, regular (400), text-default (#1A1A1A); flex:1 (label-left) · Control flex:0 0 auto (control-right); slotted DS control — reuse, not re-implemented · Stack flex-direction column; align-items stretch; gap 8; control full-width · Help optional "?" after the label (DS <aha-tooltip help> — the circled question glyph) · Disabled label dims to text-disabled (#B5B5B5); the control disables itself · Leading icon NONE — no decorative leading-icon slot on the label (SETTINGS-40)