Skip to content

feat(ui): @uploads/ui design system + Claude Design sync#121

Merged
Zach Dunn (zachdunn) merged 6 commits into
mainfrom
worktree-uploads-ui-design-system
Jul 13, 2026
Merged

feat(ui): @uploads/ui design system + Claude Design sync#121
Zach Dunn (zachdunn) merged 6 commits into
mainfrom
worktree-uploads-ui-design-system

Conversation

@zachdunn

Copy link
Copy Markdown
Member

What

Establishes the uploads.sh design system as a real component library and syncs it into a new Uploads project on claude.ai/design, so the design agent builds screens from our actual components instead of generic ones.

packages/ui — the new library

A React + TSX component library carrying the uploads.sh brand, built with tsup to an ESM dist + type declarations + one self-contained stylesheet (tokens, @font-face, component CSS).

  • Foundation: Geist (sans), Geist Mono (console chrome), Geist Pixel (display, ELSH axis) — self-hosted woff2. Dark token palette lifted verbatim from the live app (--bg, --panel, --line, --fg/--body/--muted, --accent violet, --green/--red).
  • Components (11): Surface, Brand, Button, Panel, Field/Input/Label, Callout, Badge, Divider, GalleryTile (a hosted image / PR-screenshot tile — the product's core object).
  • Style-by-props + token overrides; no utility-class vocabulary to author.

.design-sync/ — the sync inputs (committed for reproducible re-syncs)

  • config.json — package-shape converter config (pinned to the Uploads project).
  • conventions.md — the design-agent guidance header, validated against the built artifacts.
  • previews/*.tsx — a hand-authored, self-contained preview per component.
  • NOTES.md — build/font/render-check gotchas + re-sync risks.

Verification

  • Bundle builds clean: dist/index.js + dist/index.d.ts (11 components, all Props interfaces) + dist/uploads-ui.css.
  • design-sync converter + validate exit 0; render check 11/11 previews clean, 0 bad, 0 floor cards.
  • All 22 preview cells graded good (styled, complete, plausible) on the absolute rubric.
  • Uploaded and verified: 67 files present in the project; DS pane populates on open.

Notes

  • packages/ui is private (no changeset needed).
  • Build in isolation with cd packages/ui && npm install --no-save --no-package-lock && npx tsup, or pnpm --filter @uploads/ui build from a full workspace install.
  • Review sheets for each component are available locally under ds-bundle/_screenshots/review/ (gitignored); happy to host them into this PR if a visual would help.

🤖 Generated with Claude Code

Add packages/ui — a React component library carrying the uploads.sh brand
(Geist / Geist Mono / Geist Pixel, dark developer-console tokens). Ships
Surface, Brand, Button, Panel, Field/Input/Label, Callout, Badge, Divider,
and GalleryTile, built with tsup to an ESM dist + type declarations + one
self-contained stylesheet (tokens, @font-face, component CSS).

Also add the .design-sync inputs (config, validated conventions header,
per-component previews, and re-sync notes) that import the package into the
"Uploads" Claude Design project, so the design agent builds screens from
these real components.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jul 13, 2026

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Updated (UTC)
🔵 In progress
View logs
uploads-auth 497dede Jul 13 2026, 01:40 PM

@coderabbitai

coderabbitai Bot commented Jul 13, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are limited based on label configuration.

🏷️ Required labels (at least one) (2)
  • coderabbit:review
  • review
🚫 Excluded labels (none allowed) (1)
  • wip

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 587eceac-b5ad-47d4-9e52-494608d74fec

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch worktree-uploads-ui-design-system

Comment @coderabbitai help to get the list of available commands.

CI's frozen-lockfile install rejected the new packages/ui devDeps
(react, react-dom, @types/react, @types/react-dom, tsup, typescript)
because the workspace lockfile wasn't regenerated.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jul 13, 2026

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
uploads-api 3b1e6f7 Commit Preview URL

Branch Preview URL
Jul 13 2026, 01:09 PM

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jul 13, 2026

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
uploads-web 3b1e6f7 Commit Preview URL

Branch Preview URL
Jul 13 2026, 01:10 PM

Zach Dunn (zachdunn) and others added 2 commits July 13, 2026 09:11
- Format packages/ui sources with oxfmt (line wrapping, transition/font stacks).
- Exclude .design-sync/ from oxlint + oxfmt: the committed previews are
  design-sync converter inputs compiled by its own toolchain (they import
  @uploads/ui and the JSX runtime with no repo tsconfig), so repo-wide
  type-aware lint can't resolve them and shouldn't try.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@zachdunn Zach Dunn (zachdunn) marked this pull request as ready for review July 13, 2026 13:22
Zach Dunn (zachdunn) and others added 2 commits July 13, 2026 09:40
Port back two annotation comments the Claude Design agent added to the
synced _ds_bundle.css, onto the source token declarations so /design-sync
carries them forward instead of overwriting:

- --sans / --mono / --pixel  -> /* @kind font */  (font tokens, not colors)
- --pixel-shape              -> /* @kind other */ (non-color flag token)

Keeps the design-system compiler's token classification clean. Re-synced to
the Uploads Claude Design project; verified the annotations now ship in the
remote _ds_bundle.css.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@zachdunn Zach Dunn (zachdunn) merged commit ef2b178 into main Jul 13, 2026
3 checks passed
@zachdunn Zach Dunn (zachdunn) deleted the worktree-uploads-ui-design-system branch July 13, 2026 13:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant