Skip to content

chore(design): sync Botloft's interface to claude.ai/design - #119

Merged
httpsphl merged 1 commit into
mainfrom
feat/design-sync
Oct 2, 2026
Merged

httpsphl merged 1 commit into
mainfrom
feat/design-sync

Conversation

@httpsphl

@httpsphl httpsphl commented Oct 2, 2026

Copy link
Copy Markdown
Owner

What and why

Botloft's interface now lives as a design system on claude.ai/design, so Claude Design can make visuals (the explainer video first) with the app's real pieces.

Botloft is an app, not a component library, so .design-sync/pkg/ builds one from the app's own source, without reimplementing anything:

  • index.ts re-exports the components: Button, Dialog, Confirm, Callout, Details, Choices, Select, SelectField, TextField, TextArea, Switch, Tabs, Menu, SidePanel, Toaster, plus BotAvatar, BotStateBadge and ChiefBadge. It also exports icons (the lucide icons the app imports) and setLocaleChoice.
  • styles.css is the app's stylesheet plus a fixed set of layout utilities (@source inline), since only compiled Tailwind classes exist in the design system.
  • build.mjs builds dist/ with the app's own Vite, Tailwind and TypeScript. The fonts ship as Latin files, not base64.

Next to the package: the converter config (config.json), one authored preview per component (previews/), the guide the design agent reads (conventions.md) and the notes for the next sync (NOTES.md). Build output, the staged converter and machine state are gitignored.

Nothing under app/ or crates/ changes.

How it was tested

The converter's validation passes; all 18 previews render (headless Chromium) and were graded from screenshots. The upload to the claude.ai/design project was checked file by file against the local build.

No manual test with Claude Code needed: this does not touch the daemon or the app.

Checklist

  • cargo fmt, clippy -D warnings and cargo test pass (no Rust changes)
  • pnpm check passes (no app changes)
  • New interface text is in English, Portuguese and Spanish (none added)
  • docs/spec.md still matches the code

A small package in .design-sync/pkg builds the app's own components,
stylesheet, fonts and icons into a library the design-sync converter
turns into a claude.ai/design design system: the base pieces (Button,
Dialog, fields, Callout...) plus BotAvatar, BotStateBadge and ChiefBadge.
Previews, the conventions read by the design agent and the notes for the
next sync live next to the config. Build output and machine state are
gitignored.
@httpsphl
httpsphl enabled auto-merge October 2, 2026 17:52
@httpsphl
httpsphl merged commit fb6d989 into main Oct 2, 2026
4 checks passed
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