style(runner): unify editor shell and panels on the design's type/grid scales - #248
style(runner): unify editor shell and panels on the design's type/grid scales#248sl01k wants to merge 1 commit into
Conversation
…/grid scales A design-alignment pass over the authoring shell and both drawers, built against Figma 48:6560 (light) / 31:6438 (dark) and the docs assistant: - Typography: one scale in theme.type (base 12/20, small 10/20, row 12/16, label 10/20+tracking) replacing ~50 ad-hoc sizes; sidebar rows raised to 12px by decision, category labels stay 10. - Spacing: 4px grid discipline (8px rhythm) across shell and app pages; geometry-locked exceptions documented inline. - Editor: Fira Code 12/20 (bundled via @fontsource), 16px inset, chromeless gutter, editorBg token over githubDark's #0d1117 (Prec.high — the theme prop outranks plain extensions); Mod-F search panel restyled to shell idiom. - Drawers: full-height, slide-in from the right, docs-assistant chrome; Ask AI transcript/composer restyled after the Docs assistant; Style panel aligned on the 24px inset with Theme Builder's row layout (label + info tooltip left, control right), floating pickers with Common/Pick-color tabs, muted-track segmented controllers, framed menu lists shared with the chat suggestions, dismissible intro notice, and the AI tab on the chat composer. - Classes over inline styles: Drawer registers its stylesheet via installCss; the panels' rules live in panels.css with tokens as CSS variables (--hot-font-* added); the ADR-0026 hover-vs-inline trap disappears with it. - Tooltips for the two toolbar CTAs share one treatment; thin scrollbars shell-wide; theme toggle moved between Download and the avatar; lighter hover token in light mode (0.16 -> 0.10). E2E updated where intent changed: full-height drawers cover the top-bar triggers (switching is keyboard-reachable, tests activate via Enter), the composer is transparent over the drawer surface, the edit box and token rows are located by class/data-token instead of inline-style sniffing. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Want higher recall? High effort reviews run extra passes and find more bugs. A team admin can switch effort levels in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit d87d40a. Configure here.
| // The AI tab swaps the actions band for the chat panel's composer — same | ||
| // flush field, same ↑ send — so the two assistants read as one product. | ||
| footer={tab === "ai" ? aiComposer : footer} | ||
| footerStyle={tab === "ai" ? { padding: 0, background: ui.color.surfaceRaised } : undefined} |
There was a problem hiding this comment.
AI tab hides theme wiring warning
Medium Severity
The AI tab replaces the whole drawer footer with the composer, so the unlinked-theme warning (applied && !applied.linked) never mounts there. AI styling still writes the module through apply, including on examples the panel cannot wire. The preview stays on the stock theme with no on-tab explanation, which reads as the assistant doing nothing.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit d87d40a. Configure here.


Summary
A design-alignment pass over the runner's authoring shell and both drawers, built against the Sandbox Figma (
48:6560light /31:6438dark) and the docs assistant on handsontable.com/docs.Typography & spacing
theme.type— base 12/20, small 10/20, row 12/16, label 10/20 + 0.8px tracking — replacing ~50 ad-hoc sizes (13/12.5/14/15/17…). Sidebar rows raised to 12px by decision; category labels stay 10.Editor
@fontsource/fira-code), 16px inset, chromeless right-aligned gutter at 40% ink,editorBgtoken over githubDark's#0d1117(Prec.high— thethemeprop outranks plain extensions).Drawers
Classes over inline styles
Drawerregisters its stylesheet through the newinstallCss; panel rules live insrc/panels.csson--hot-*tokens (font stacks exposed as--hot-font-*). The ADR-0026 inline-background-vs-hover trap disappears where classes took over.E2E
Updated where intent changed: keyboard activation for panel switching under full-height drawers, transparent composer measured against the surface behind it, edit box / token rows located by class and
data-tokeninstead of inline-style sniffing.Test plan
pnpm typecheck(editor-shell, authoring)pnpm e2e e2e/panels.spec.ts e2e/style-panel.spec.ts e2e/style-apply.spec.ts— 32 passed, 14 skipped (gated suites)🤖 Generated with Claude Code
Note
Cursor Bugbot is generating a summary for commit d87d40a. Configure here.