Frame Design System

Navigation & hints

SectionTitle

#MasterUsed in: Wingman 0 · WorkPal 4

Lucide icon + bold title + optional count badge. Use across shared section headers.

Needs Your Eyes3
Agents at Work
Big section

SectionCount

#MasterUsed in: Wingman 0 · WorkPal 5

Compact count label for grouped messages, references or workflow steps.

View source

Requires React 19, ReactDOM 19, TypeScript and lucide-react 1.14.0. Import frame.css once and use a frame-root wrapper; set its background to var(--color-bg-page) and color to var(--color-text-primary), or supply a matching host surface; add dark to an ancestor for dark mode.

The count badge beside a section title. SectionTitle renders it for its `count` prop; import it directly when a surface builds its own heading row (a collapsible section with a chevron, a heading that needs its own semantic level) so the markup is never re-spelled.

112140

Tooltip

#MasterUsed in: Wingman 4 · WorkPal 1

Dark hover tooltip — appears above the trigger. Shows on group-hover AND group-focus-within (WCAG 1.4.13).

?

PopoverMenu

#MasterUsed in: Wingman 0 · WorkPal 3

The shell for a small menu that pops out of a trigger (DS-159): portaled, placed below or above the anchor, and dismissed by a press outside, Escape (focus back to the trigger), a resize, or a scroll that moves the anchor. Overlay glass + popup shadow, no border. The caller supplies the rows.

EmptyState

#MasterUsed in: Wingman 14 · WorkPal 3

Icon and explanation for an empty message, result or reference area.

View source

Requires React 19, ReactDOM 19, TypeScript and lucide-react 1.14.0. Import frame.css once and use a frame-root wrapper; set its background to var(--color-bg-page) and color to var(--color-text-primary), or supply a matching host surface; add dark to an ancestor for dark mode.

Centered icon + title + optional description. No CTA, no illustration — reads as 'nothing here yet, that's expected'.

No files yet
Drop a file or paste a link to get started.

VersionRow

#MasterUsed in: Wingman 0 · WorkPal 2

Version comparison and update-status presentation without a network or update client.

View source

Requires React 19, ReactDOM 19, TypeScript and lucide-react 1.14.0. Import frame.css once and use a frame-root wrapper; set its background to var(--color-bg-page) and color to var(--color-text-primary), or supply a matching host surface; add dark to an ancestor for dark mode.

Single row in the Software Update dashboard — component name, current version, latest version, status tag.

WorkPal Agent

0.4.2 → 0.4.3

Update available

Wingman

0.0.1

Up to date

Unknown peer

0.0.0

AgentRequiredHint

#MasterUsed in: Wingman 0 · WorkPal 6

Notice shown on mobile when a surface depends on the local WorkPal Agent (Mac-only). Two variants: 'card' (inline assistant message) and 'tip' (compact pill near disabled button).

This needs WorkPal Agent on your Mac. Open the page on your computer to use it.

Open this on your Mac to use Agent tools.

StepIndicator

#MasterUsed in: Wingman 1 · WorkPal 1

Visual pending, active and completed workflow step marker; pair with a text label.

View source

Requires React 19, ReactDOM 19, TypeScript and lucide-react 1.14.0. Import frame.css once and use a frame-root wrapper; set its background to var(--color-bg-page) and color to var(--color-text-primary), or supply a matching host surface; add dark to an ancestor for dark mode.

Three states: done (check), in-progress (filled dot), pending (empty circle). Used inside TaskProgressCard.

Done
In progress
Pending