Components / Power List

Power List

The answer to "why would I do this" on any surface that puts a capability behind a setup step: a connection, a phone number to verify, an SDK to install. One sentence per thing the capability buys.

import { PowerList } from '@layers/ui/power-list'

Rendered stock

House rules

  • Render it in BOTH states, set up and not. A list that disappears once you are connected leaves nobody able to say why the connection they already have matters.
  • Put it ABOVE the body, before the form or the QR or the instance list. "Why am I doing this" precedes "do it".
  • One sentence each, and only what the product actually does. This is the copy a user decides on, so a line the code cannot back is a support ticket, not a sell.
  • The points are primary reading content, not caption text: reading size, full-contrast ink. Education rendered small and muted is the anti-pattern this treatment replaced.
  • The block cards itself — education and help content gets card containment, never loose body text (founder ruling 2026-08-02). The surface stack handles every plane: --card reads inside a dialog in both themes, and a secondary surface remaps it to --background. Call sites never wrap it in a second card.
  • Prose education takes EducationCard, the same treatment with paragraphs instead of bullets: the "how this one works" block, the popup-authorization note. Enumerable outcomes are PowerList; explanation is EducationCard; neither is ever a loose muted paragraph.
  • Every point gets an ICON in a medallion, never a bullet. A disc says only "this is a list"; the icon says what KIND of thing the line is about, which is the one thing a reader can take from the block before reading a word (founder ruling 2026-08-05).
  • Pass icons as { text, icon } when they carry real distinctions, and a bare string when they do not — the Check fallback repeated down the list is BETTER than three glyphs picked to look busy, which implies a taxonomy the reader then tries and fails to decode.
  • The medallion is EmptyState's recipe at PowerList's own size: rounded-full bg-muted, 40px circle, size-5 glyph at strokeWidth 1.5 (restored from a brief run at 1 — founder call 2026-08-15). Never a second take on "icon in a circle" — that is how a design system grows two of everything.
  • The label is omitted ONLY when the surface already names the block — a Dialog whose DialogTitle is the education title (the library education dialogs). A list floating in a mixed body always carries its marker.
  • Never hand-roll the block. ConnectionPanel and the SMS settings panel both render it, and it is a component so the two cannot drift.