Files
zeekayandHanzo Dev 01dc7b5306 fix: shipped components spoke the fork's border vocabulary, which no longer exists
Swapping the forked token layer for the inherited one silently orphaned
two names. The fork declared --border-hairline (a solid #262626) and
--border-card; the substrate draws every one of those boundaries with a
single alpha --border, and explains at length why alpha beats a solid hex
there — a solid edge reads on the page and vanishes the moment it lands
on a lifted surface.

Nineteen shipped files still asked for the old names: Card, Avatar,
Badge, Table, Accordion, Dialog, DropdownMenu, Sheet, Toaster, seven
specimen cards, and the generation prompts. An undefined custom property
in `border:1px solid var(--gone)` does not fail. The declaration is
invalid at computed-value time, border-color falls back to currentColor,
and every one of those surfaces draws its edge in the INK colour — a
stark near-white hairline on black that reads as a bold design choice
rather than as nineteen broken files.

They are not re-declared as aliases. Both mapped to the substrate's
--border, so keeping them would be two names for one thing — exactly the
duplication this package exists to remove. The components now speak the
substrate's vocabulary.

check-tokens gains the check that would have caught it. Check 4 proves
the STYLESHEET is internally consistent and says nothing about the
components, kits, specimen cards and prompts shipped beside it — which
are the files a consumer actually renders. Now every var() in all 78 of
them must resolve against the sheet. Mutation-proven: pointing one card
back at --border-hairline fails the build.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-05 15:50:28 -07:00

2.4 KiB

Page prompts

Drop-in prompts for whole sections. Each already carries the brand constraints, so you can hand one to a model with only the specifics filled in. They assume the system prompt (system.md) is already loaded and styles.css is imported.

Hero

Build a hero section for {product}. Dark, --background. Centered column, --container-prose, vertical rhythm --hero-y/--hero-y-lg. One --type-hero h1 (≤ 7 words, scaling to --text-7xl on lg), one --type-lead subline (≤ 140 chars), one primary <Button pill> plus one outline secondary. Behind the column, a single --glow-hero radial — nothing else. Entry: lux-fade-up, --duration-slow, --stagger between the three elements.

Feature grid

Build a 3-column feature grid (1 column on mobile). Each cell: a lucide-react icon at h-6 in --foreground at 80%, a --type-h3 title, a --type-body --text-secondary description. Cells use --surface-card, --radius-lg, --border. No shadows. Constrain to --container-max, gutters --gutter*. Stagger the cells in on scroll with lux-slide-up-fade.

Pricing

Build a 3-tier pricing row. Monochrome cards, --surface-card; emphasize the recommended tier with --surface-card-emphasis and a --brand hairline — not a colored fill. Price in --type-h2, cadence in --text-helper. "Free" and "Save N%" are the only colored text, --state-success. One primary CTA per card, the rest outline.

CTA / resources block (every product page ends with this)

Build the closing section: a top hairline (--border), centered --container-prose, a --type-h2 "Get started", and a row of two or three links — "Read the docs", "View on GitHub", "Talk to us" — as --text-primary with underline-on-hover. No new color, no new component.

Build a fixed header: --surface-header with backdrop blur, --header-height tall, --z-header. Left: the H mark from assets/logo.svg. Right: text nav links at --text-secondary, hover --text-primary, and one primary <Button pill size="sm">. Footer: --container-max, columns of quiet --text-tertiary links over --background, a hairline on top.

Rules that still apply

  • One primary action per view.
  • No hue outside the reserved semantics.
  • Everything Tab-reachable, focus visible, reduced-motion honored.

After generating, run prompts/rules.md against the output.