artifact.css · kitchen sink

Every component in one page

A reference artifact that uses every major class in the library. Open this side-by-side with SKILL.md when learning the vocabulary.

Prompt Show me every component artifact.css ships with, on one page, so I can pick what I need.
01

Stat strip


Big numbers with a tiny uppercase label and an optional movement indicator.

42
PRs merged
+12 vs last week
3
Open incidents
+2 since Monday
98%
Uptime
SLO 99.5
216
Deploys
+18%
02

Key/value strip


Shorter alternative when values are labels, not big numbers.

Effort
~2 weeks
Surfaces touched
3 packages
New tables
2
Feature flag
task_comments_v1
03

Surfaces


Panel, callout, note variants, and the prompt-box.

Panel

White card with a subtle 1.5px border and 12px radius. The default container for grouping related content.

Callout

Soft oat-colored aside. Use once per section, not as wallpaper.

Note · success. Migration ran cleanly on all 14 production shards.
Note · warning. The new index doubles write amplification for two days. Re-evaluate after backfill.
Note · danger. Token rotation will invalidate all existing API keys at 02:00 UTC.
Note · info. The team uses Pacific time for standups even though half of us are in EU.
04

Inline atoms


Tags, pills, badges, avatars, dots - the small parts.

Tags & pills:

  • apps/web
  • packages/db
  • migration 0042
  • filter: all
  • filter: open

Badges:

default attention passing in review failing info

Avatars:

DK DK DK JL AM

Status dots:

healthy at risk down info

05

Buttons and inputs


06

Table


PR Title Author +/− Risk
#247 Threaded comments on task cards danielle +412 / −38 medium
#248 Drop unused gravatar fallback jules +8 / −94 low
#251 Migrate retention worker to v2 queue amir +1.2k / −208 high
07

Timeline


Week 1 · Mon–Tue

Schema and API contract

New comments and comment_reads tables, migrations, and the tRPC router stubs. No UI. Contract reviewed before anything else lands.

  • packages/db
  • packages/api
Week 1 · Wed–Fri

Thread component and composer

Static <CommentThread> rendered from fixtures. Optimistic insert on submit, one level of nesting only.

  • apps/web
  • storybook
Week 2

Realtime, notifications, flag ramp

Wire up the realtime channel, drop in notification rows, and ramp task_comments_v1 to internal, then 10% → 100%.

  • packages/realtime
  • packages/notify
08

Highlights list


09

Code block


packages/api/src/comments/router.ts
import { z } from 'zod';
import { router, procedure } from '../trpc';

// One-level nested threads. Parent is nullable for top-level.
export const commentRouter = router({
  create: procedure
    .input(z.object({ taskId: z.string(), body: z.string().min(1) }))
    .mutation(async ({ input, ctx }) => {
      return ctx.db.comment.create({ data: input });
    }),
});