Without image
The base slot-based card. Meta, title, description and footer are all optional slots.
Referencia visual de todos los componentes UI. No está enlazado desde el sitio público.
Deep navy ink, sea-blue accent, warm sand-orange highlight, generous whitespace.
Bilingual ES/EN. Sentence case everywhere. No emoji. Em dashes for asides.
Sea 600 #006ED2 primary. Sand 500 #FC6413 secondary highlight. Grey 950 #04274D ink.
Display 72 · H1 48 · H2 32 · H3 24 · Body 16 · Small 14 · Caption 12. Bold 700, tight −0.02em tracking.
–space-1 → –space-20. Section rhythm 72–96px. Card padding 24px. Max layout 1200px.
Cards 16px · Inputs/buttons 8px · Pills 80px. Avatars fully rounded.
–shadow-xs resting → –shadow-lg hover. –shadow-brand on primary button hover (sea-blue glow).
cubic-bezier(0.16,1,0.3,1). Cards lift 3–4px on hover. No bounces, no infinite loops.
Sea — Primary — The brand blue. Primary actions, links, focus.
Sand — Secondary — Warm accent orange. CTAs that need extra warmth, highlights.
Grey — Neutral — Text, surfaces, borders. Grey 950 = primary text, Grey 0 = page.
Default body — the quick brown fox jumps over the lazy dog.
Secondary — used for descriptions and subtitles.
Small — captions, metadata, timestamps.
Default — padding, no shadow.
With shadow.
Hover + shadow — try hovering.
How we structured a three-tier token system so designers and engineers finally spoke the same language.
Empty states are the most-skipped, most-seen screens in any product. Here's how I approach them.
A practical guide to i18n with Next.js App Router and a localized CMS, without the headache.
Animation should explain, not decorate. A small set of rules I keep coming back to.
A fluid type scale built on CSS clamp — no more magic numbers, no more breakpoint overrides.
1
cols=1 colsMd=2 colsLg=4
A
B
C
D