Skip to content

The design rules speak shadcn - #632

Merged
WaylandYang merged 2 commits into
devfrom
docs/the-design-rules-speak-shadcn
Sep 13, 2026
Merged

WaylandYang merged 2 commits into
devfrom
docs/the-design-rules-speak-shadcn

Conversation

@WaylandYang

Copy link
Copy Markdown
Contributor

web/DESIGN.md was written before the interface moved onto shadcn (#622), and several things it stated as fact had stopped being true. It is the spec contributors read before touching the web code, so a wrong sentence in it gets copied.

Corrected

  • The wordmark is Manrope, not Marcellus. The chrome comes in two themes, not only dark glass.
  • Radii. The document gave fixed values of 4 / 6 / 8 / 12 px. All four now derive from shadcn's --radius (10 px): cell ×0.8, control ×1, overlay ×1, panel ×1.4. That makes an overlay flatter than a panel, so the old line "a panel inside an overlay steps inwards" would now be false. The rule is restated as it actually holds: a panel does not go inside an overlay, which rule 6 already implies.
  • Tokens. The document described one family of tokens. There are two: --u-* (dark in :root, light in :root[data-theme="light"]) and shadcn's (light in :root, dark in .dark). theme.ts sets both data-theme and .dark, so registry components follow the theme unedited.
  • Disabled is the components' opacity-50, not opacity-40.
  • The "Migration order" section described work that finished long ago. It is replaced by Where the looks come from: the shell over shadcn, how variants map, what the shell keeps, and why generated components are added with shadcn add and never edited.
  • Enforcement now names the guard's VENDOR exemption for src/components/ui/.

Added — rules settled in the last few days that were only in code

  • A status is a coloured dot and plain words (Status); Chip is for things that are not states.
  • A list of records is a table (Table / Th / Td), not stacked name-and-chips rows.
  • A row's actions are one icon that appears on hover (REVEAL) and opens a menu or a FormDialog, not standing text on every row.
  • A filter bar is one row, with the search box first at w-64. A count in a label goes in parentheses: Pending (3).
  • A decision card's footer is CARD_ACTIONS: bottom-left, wrapping, destructive action last. What explains the card goes above its content.
  • FormDialog can carry several destructive actions when they differ in weight.
  • The canvas readers parse every CSS colour spelling, because the minifier rewrites #ffffff as #fff and rgba(…) as #rrggbbaa. A reader that only knows six-digit hex falls back to grey without a word.

Each of these was checked against the code on dev before it was written down: the token names, the radius multipliers, the --u-fast / --u-base durations, the exported component names, and the guard's exemption. Everything else in the document still holds and is unchanged.

🤖 Generated with Claude Code

WaylandYang and others added 2 commits September 13, 2026 09:32
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: WaylandYang <wayland0916@gmail.com>
@WaylandYang
WaylandYang merged commit 948e703 into dev Sep 13, 2026
4 checks passed
@WaylandYang
WaylandYang deleted the docs/the-design-rules-speak-shadcn branch September 13, 2026 07:39
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