AhaSlides Design
v0.52.0React · Vue · Lit

Patterns · Settings

Sub setting group

The dependent (child) settings wrapper — indents a cluster of sub-settings under one parent toggle with a tight gap, spacing only (no border, no card).

Examples

Parent
Dependent (child) settings · 8px above (binds tighter than the 16 between siblings) · 24px indent · host owns visibility (hidden when the parent is off) · no border/card

API

PropTypeDefaultNotes
hiddenbooleanfalseAuthor-controlled: collapse the sub-settings when the parent setting is off (the component does not derive this itself)
(default slot)slotThe dependent sub-settings; they stack 16px apart, indented 24px under the parent

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

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

When to use

When to use
  • Sub setting group — settings that only apply when a parent toggle is on — indent them under it and hide when off
  • Setting group — a top-level titled cluster of settings (the 16/32/48 scale + optional header)
  • a disabled row — the setting always shows but isn't currently changeable — dim it, don't nest it
Use this only for genuinely dependent settings — ones that are meaningless until a parent is on. Keep the parent row and its sub-group inside the same setting group. Hide (not disable) the sub-settings when the parent is off, so the panel doesn't fill with dead controls. Never draw a left rail or box around the nest — the 24px indent + the tight 8px bind are the whole signal.
Surfaces
editor settings dashboard

Spec

Bind margin-top 8px — tighter than the 16 between siblings, so the child binds to its parent · Indent padding-left 24px — the primary nesting signal (no left border, no card) · Rows column · 16px between dependent sub-settings (the settings scale) · Visibility host owns it — author adds `hidden` when the parent is off (:host([hidden]){display:none}) · Structure no divider lines, no card/box — spacing + indent only