UI Kit
Composed primitives from Components + Tokens. Use when the shape fits; reach for underlying primitives when it doesn't.
SectionHead
Section header — title uses .label-caps; optional actions snippet sits
right-aligned on the title row; optional hint renders as supporting copy below.
Props
title— heading text (rendered as.label-caps).hint?— supporting copy, always rendered below the title row.actions?— snippet for right-aligned buttons/controls on the title row.
Projects
Changes save automatically
Active sessions
Projects
Changes save automatically
StatCard
KPI label/value/sub triplet. align="start" = standalone glass card; align="center" =
bare text block for dashboard grids.
Props
valueandsubaccept strings or snippets (▲▼ deltas, inline markup).progress={{ pct, color }}adds an animated fill bar below sub.barKey— change to replay the bar animation without remounting the card.valueColor— inline color override for the value text.
EmptyState
Centred no-data/loading placeholder. size: sm inline, md row gap, lg full-section.
Slots
icon— Lucide icon above the message.actionsnippet — CTA below the message.
ConfirmDialog
Modal with Cancel/Confirm footer. Parent owns open; dialog owns its pending state.
Props & when to use
- Default is destructive (danger button). Pass
danger={false}for non-destructive confirms. confirmLabeloverrides "Confirm".messagefor plain body,bodysnippet for rich content.- Use
InlineConfirminstead for row-level quick confirms that don't need explanation.
Project Appearance Picker
Color + optional icon picker. Trigger: ProjectIcon with pencil-on-hover.
Details
- Color-only: omit
onIconChange. - With icons: 21 curated Lucide icons + URL input. Selecting the active icon again clears it.
- Icons stored as
lucide:name; image URLs render via<img>.
#FF6384lucide:tree-palm/images/deno-logo.webpAI Assist
Floating sparkle button for AI rewrites on textareas. Click → preview suggestion → Accept/Reject.
Setup & gates
- Parent needs
position: relative; addpadding-rightto the textarea. kind— server-side prompt:"project-description"or"user-bio".- Gated to admin +
GEMINI_API_KEY(orANTHROPIC_API_KEY). - Pink/purple shimmer distinguishes AI affordances from accent-blue UI.
InlineConfirm
Inline question + Cancel/Confirm pair. Use instead of ConfirmDialog for row-level quick confirms.
Usage
- Caller owns the trigger — toggle an
openboolean, render<InlineConfirm>in its place. busydisables both buttons whileonConfirmresolves.confirmLabeloverrides "Confirm".