registry://designs/voltagent-awesome-design-md-replicate
Replicate
### Replicate - Run ML models via API. - Clean white canvas, code-forward - Replicate's marketing surfaces pair the warm-cream developer-tools aesthetic
registry://designs/voltagent-awesome-design-md-replicate
### Replicate - Run ML models via API. - Clean white canvas, code-forward - Replicate's marketing surfaces pair the warm-cream developer-tools aesthetic
| version | alpha |
| name | Replicate |
| description | | Replicate's marketing surfaces pair the warm-cream developer-tools aesthetic of an indie ML playground with a confident hot-orange brand accent and a signature display typeface (rb-freigeist-neue) sized aggressively large at 72px+. The system reads as "AI lab notebook crossed with print magazine": cream and bone surfaces, dark ink type, monospace code wells, irregular hand-drawn-feeling diagrams, and a rich orange used scarcely on the most consequential CTA. Photography of contributors and example outputs is square-ish with mid-radius corners; everything else is borderless or hairline. |
| colors | primary: "#ea2804" primary-deep: "#c01f00" on-primary: "#ffffff" ink: "#202020" body: "#3a3a3a" charcoal: "#575757" mute: "#646464" ash: "#8d8d8d" stone: "#bbbbbb" on-dark: "#fcfcfc" on-dark-mute: "rgba(252,252,252,0.72)" canvas: "#f9f7f3" surface-bone: "#f3f0e8" surface-card: "#ffffff" surface-dark: "#202020" surface-deep: "#000000" hairline: "rgba(32,32,32,0.12)" hairline-strong: "#202020" divider-dark: "rgba(255,255,255,0.2)" hero-warm: "#ea2804" hero-glow: "#ff6a3d" hero-pink: "#f4a8a0" badge-success: "#2b9a66" link: "#ea2804" ring-focus: "rgba(59,130,246,0.5)" github-dark: "#24292e" |
| typography | display-xxl: fontFamily: rb-freigeist-neue fontSize: 128px fontWeight: 700 lineHeight: 1.0 letterSpacing: -3px display-xl: fontFamily: rb-freigeist-neue fontSize: 72px fontWeight: 700 lineHeight: 1.0 letterSpacing: -1.8px display-lg: fontFamily: rb-freigeist-neue fontSize: 48px fontWeight: 700 lineHeight: 1.0 letterSpacing: -1px display-md: fontFamily: rb-freigeist-neue fontSize: 30px fontWeight: 600 lineHeight: 1.2 letterSpacing: -0.5px heading-lg: fontFamily: basier-square fontSize: 38.4px fontWeight: 600 lineHeight: 0.83 letterSpacing: -0.5px heading-md: fontFamily: basier-square fontSize: 24px fontWeight: 600 lineHeight: 1.33 letterSpacing: -0.35px heading-sm: fontFamily: basier-square fontSize: 20px fontWeight: 600 lineHeight: 1.4 letterSpacing: -0.3px subtitle: fontFamily: rb-freigeist-neue fontSize: 18px fontWeight: 600 lineHeight: 1.56 letterSpacing: 0 body-lg: fontFamily: basier-square fontSize: 18px fontWeight: 400 lineHeight: 1.56 letterSpacing: 0 body-md: fontFamily: basier-square fontSize: 16px fontWeight: 400 lineHeight: 1.5 letterSpacing: 0 body-sm: fontFamily: basier-square fontSize: 14px fontWeight: 400 lineHeight: 1.43 letterSpacing: 0 button-md: fontFamily: basier-square fontSize: 16px fontWeight: 600 lineHeight: 1.0 letterSpacing: 0 button-sm: fontFamily: basier-square fontSize: 14px fontWeight: 600 lineHeight: 1.0 letterSpacing: 0 caption: fontFamily: basier-square fontSize: 12px fontWeight: 400 lineHeight: 1.33 letterSpacing: 0 caption-tight: fontFamily: basier-square fontSize: 14px fontWeight: 600 lineHeight: 1.43 letterSpacing: -0.35px code-md: fontFamily: jetbrains-mono fontSize: 14px fontWeight: 400 lineHeight: 1.43 letterSpacing: 0 code-sm: fontFamily: jetbrains-mono fontSize: 11px fontWeight: 400 lineHeight: 1.5 letterSpacing: 0 |
| rounded | none: 0px xs: 4px sm: 6px md: 10px lg: 16px full: 9999px |
| spacing | xxs: 2px xs: 4px sm: 8px md: 12px lg: 16px xl: 24px xxl: 32px xxxl: 48px section: 96px band: 160px |
| components | button-primary: backgroundColor: "{colors.primary}" textColor: "{colors.on-primary}" typography: "{typography.button-md}" rounded: "{rounded.full}" padding: 12px 24px height: 44px button-primary-pressed: backgroundColor: "{colors.primary-deep}" textColor: "{colors.on-primary}" typography: "{typography.button-md}" rounded: "{rounded.full}" button-dark: backgroundColor: "{colors.surface-dark}" textColor: "{colors.on-dark}" typography: "{typography.button-md}" rounded: "{rounded.full}" padding: 12px 24px height: 44px button-outline: backgroundColor: "{colors.surface-card}" textColor: "{colors.ink}" typography: "{typography.button-md}" rounded: "{rounded.full}" padding: 11px 23px height: 44px button-ghost: backgroundColor: "{colors.canvas}" textColor: "{colors.ink}" typography: "{typography.button-md}" rounded: "{rounded.full}" padding: 8px 16px height: 36px button-icon: backgroundColor: "{colors.surface-card}" textColor: "{colors.ink}" rounded: "{rounded.full}" size: 36px text-input: backgroundColor: "{colors.surface-card}" textColor: "{colors.ink}" typography: "{typography.body-md}" rounded: "{rounded.full}" padding: 12px 20px height: 44px hero-band: backgroundColor: "{colors.hero-warm}" textColor: "{colors.on-dark}" typography: "{typography.display-xl}" rounded: "{rounded.none}" padding: 96px 32px model-card: backgroundColor: "{colors.surface-card}" textColor: "{colors.ink}" typography: "{typography.body-md}" rounded: "{rounded.md}" padding: 16px collection-tile: backgroundColor: "{colors.canvas}" textColor: "{colors.ink}" typography: "{typography.heading-md}" rounded: "{rounded.md}" padding: 24px pricing-tier: backgroundColor: "{colors.surface-card}" textColor: "{colors.ink}" typography: "{typography.body-md}" rounded: "{rounded.lg}" padding: 32px pricing-tier-featured: backgroundColor: "{colors.surface-dark}" textColor: "{colors.on-dark}" typography: "{typography.body-md}" rounded: "{rounded.lg}" padding: 32px code-block: backgroundColor: "{colors.surface-dark}" textColor: "{colors.on-dark}" typography: "{typography.code-md}" rounded: "{rounded.md}" padding: 24px code-tab: backgroundColor: "{colors.surface-deep}" textColor: "{colors.on-dark-mute}" typography: "{typography.code-sm}" rounded: "{rounded.xs}" padding: 6px 12px badge-status: backgroundColor: "{colors.badge-success}" textColor: "{colors.on-dark}" typography: "{typography.caption}" rounded: "{rounded.full}" padding: 4px 10px badge-tag: backgroundColor: "{colors.canvas}" textColor: "{colors.ink}" typography: "{typography.caption}" rounded: "{rounded.full}" padding: 4px 10px nav-bar: backgroundColor: "{colors.canvas}" textColor: "{colors.ink}" typography: "{typography.button-sm}" rounded: "{rounded.none}" height: 60px sub-nav-pill: backgroundColor: "{colors.surface-card}" textColor: "{colors.ink}" typography: "{typography.button-sm}" rounded: "{rounded.full}" padding: 6px 14px contributor-avatar: backgroundColor: "{colors.surface-card}" textColor: "{colors.ink}" rounded: "{rounded.full}" size: 40px footer: backgroundColor: "{colors.surface-deep}" textColor: "{colors.on-dark}" typography: "{typography.body-sm}" rounded: "{rounded.none}" padding: 64px 32px |
Replicate is a developer-tools platform with the soul of an art zine. The
public marketing surfaces sit on a warm cream canvas ({colors.canvas} β
#f9f7f3) rather than the white-or-near-black default of typical AI
infrastructure sites, and that single decision colours everything else:
photography reads as editorial, code wells read as printed pull-quotes, and
the brand orange ({colors.primary} β #ea2804) feels like a stamp rather
than a notification.
The typography is the load-bearing decoration. rb-freigeist-neue β a
heavy, slightly condensed grotesque β appears at sizes up to 128px in hero
bands, with a tight lineHeight: 1.0 and negative letter-spacing that lets
multi-line headlines pack into geometric blocks. The companion family,
basier-square, takes care of body, button labels, and metadata in the
14β18px range. JetBrains Mono carries every code well, command, and
example. Three families, three jobs, no overlap.
Page rhythm cycles between a default cream canvas, a bold full-bleed orange
hero band, and a {colors.surface-dark} (#202020) section that hosts the
code stories β the "how it works" walkthrough. Curves are intentional and
soft: every interactive surface (buttons, inputs, tags, avatars) uses
{rounded.full}, while content cards and code wells step up to {rounded.md}
or {rounded.lg}. There are no sharp corners on Replicate; the system reads
as friendly precision.
Key Characteristics:
{colors.canvas} β #f9f7f3) replaces the typical white background, paired with {colors.surface-bone} for inset cards.{colors.primary} β #ea2804) is reserved for the primary CTA, the hero band, and inline link colour. Never decorative.{typography.display-xxl} at 128px in hero bands and {typography.display-xl} at 72px on section openers β with tight lineHeight: 1.0 and negative letter-spacing.rb-freigeist-neue for display, basier-square for UI/body, jetbrains-mono for code.{rounded.full} 9999px) β buttons, inputs, badges, avatars β while content cards step to {rounded.md} 10px.{colors.surface-dark} background) sit inside the cream canvas as full-bleed reading surfaces, mimicking print pull-quotes.{colors.primary} β #ea2804): the brand accent. Reserved for the primary CTA, hero band background, and inline link colour. Treat as a stamp β one orange element per viewport at most.{colors.primary-deep} β #c01f00): the active/pressed state of {colors.primary} β used on {component.button-primary-pressed}.{colors.hero-glow} β #ff6a3d): the lighter orange that appears in the radial atmospheric mesh behind the hero copy.{colors.hero-pink} β #f4a8a0): a warm pink wash that softens the bottom edge of the hero band before it transitions to cream.{colors.on-primary} β #ffffff): label colour on top of {colors.primary} surfaces.{colors.canvas} β #f9f7f3): the default page background. Warm cream, never pure white.{colors.surface-bone} β #f3f0e8): a half-step deeper cream used for inset card groups and feature bands.{colors.surface-card} β #ffffff): pure white for individual model cards, search inputs, and pricing tiers β the only place white appears.{colors.surface-dark} β #202020): code wells, featured pricing tier, and the "how it works" walkthrough band.{colors.surface-deep} β #000000): footer canvas and the inset code-tab strip inside {component.code-block}.{colors.hairline} β rgba(32,32,32,0.12)): low-contrast 1px dividers on cream surfaces.{colors.hairline-strong} β #202020): button outlines, focused inputs, and structural separators.{colors.ink} β #202020): primary text colour. Notably warmer than #000000, matching the cream canvas.{colors.body} β #3a3a3a): long-form body copy where ink would feel too heavy at 18px+ line lengths.{colors.charcoal} β #575757): captions, metadata, secondary nav.{colors.mute} β #646464): supporting text and inactive labels.{colors.ash} β #8d8d8d): tertiary text, placeholder copy.{colors.stone} β #bbbbbb): disabled foreground, neutral icon outlines.{colors.on-dark} β #fcfcfc): primary text on {colors.surface-dark} and {colors.surface-deep}.{colors.on-dark-mute} β rgba(252,252,252,0.72)): secondary text in dark regions; preserves the off-white feel without pure white pop.{colors.badge-success} β #2b9a66): inline success badges and "running" status pills on model cards.{colors.link} β #ea2804): inline link colour β same as primary orange, intentionally pulling links into the brand accent.{colors.ring-focus} β rgba(59,130,246,0.5)): the default focus ring on interactive elements.{colors.github-dark} β #24292e): the GitHub-branded button surface (kept off-brand-on-purpose to match GitHub's own tokens).Replicate ships a deliberate three-family stack:
lineHeight: 1.0 and negative letter-spacing.When proprietary families cannot be licensed, Bricolage Grotesque or Migra are credible substitutes for rb-freigeist-neue, and Geist or Inter can stand in for basier-square. JetBrains Mono is open-source and should always be used directly.
| Token | Size | Weight | Line Height | Letter Spacing | Use |
|---|---|---|---|---|---|
{typography.display-xxl} | 128px | 700 | 1.0 | -3px | The single hero "Run AI" / "Imagine what you can build" headline. One per page. |
{typography.display-xl} | 72px | 700 | 1.0 | -1.8px | Section openers ("How it works", "Scale on Replicate"). |
{typography.display-lg} | 48px | 700 | 1.0 | -1px | Sub-section titles, pricing tier names. |
{typography.display-md} | 30px | 600 | 1.2 | -0.5px | Feature card titles. |
{typography.heading-lg} | 38.4px | 600 | 0.83 | -0.5px | Tightly-stacked basier-square headlines, used in pricing and enterprise hero. |
{typography.heading-md} | 24px | 600 | 1.33 | -0.35px | Card titles, model detail headers. |
{typography.heading-sm} | 20px | 600 | 1.4 | -0.3px | List section headers. |
{typography.subtitle} | 18px | 600 | 1.56 | 0 | Lead paragraphs in display sections. |
{typography.body-lg} | 18px | 400 | 1.56 | 0 | Marketing prose. |
{typography.body-md} | 16px | 400 | 1.5 | 0 | Default body. |
{typography.body-sm} | 14px | 400 | 1.43 | 0 | Captions, metadata. |
{typography.button-md} | 16px | 600 | 1.0 | 0 | Default button label. |
{typography.button-sm} | 14px | 600 | 1.0 | 0 | Compact button label, sub-nav pills. |
{typography.caption} | 12px | 400 | 1.33 | 0 | Footer disclosure, copyright. |
{typography.caption-tight} | 14px | 600 | 1.43 | -0.35px | Emphatic small caption used in pricing tier rows. |
{typography.code-md} | 14px | 400 | 1.43 | 0 | Code blocks and inline code. |
{typography.code-sm} | 11px | 400 | 1.5 | 0 | Code-tab labels and small inline tokens. |
lineHeight: 1.0 (or 0.83 on {typography.heading-lg}) so multi-line stacks read as single typographic blocks.{typography.body-lg} and {typography.body-md} β never bumped to 500 for emphasis. Emphasis comes from family change (basier-square β rb-freigeist-neue) rather than weight.When the proprietary families are unavailable, clamp display lineHeight to 1.0 explicitly and apply a -3% letter-spacing on display-xxl / display-xl to match the original tightness. Substitutes typically render with looser tracking by default.
{spacing.xxs} 2px Β· {spacing.xs} 4px Β· {spacing.sm} 8px Β· {spacing.md} 12px Β· {spacing.lg} 16px Β· {spacing.xl} 24px Β· {spacing.xxl} 32px Β· {spacing.xxxl} 48px Β· {spacing.section} 96px Β· {spacing.band} 160px.{spacing.section} (96px) vertical between full-width bands; {spacing.band} (160px) when a band needs extra editorial breathing room (the hero, the closing "Imagine what you can build" stripe).{spacing.lg} (16px) on {component.model-card}, {spacing.xxl} (32px) on {component.pricing-tier}.{component.pricing-tier-featured} (dark inversion) as the recommended option.{colors.hairline} dividers replace shadow on cream surfaces; on dark surfaces, {colors.divider-dark} carries the equivalent role.| Level | Treatment | Use |
|---|---|---|
| 0 β flat | No shadow, no border | Default cream canvas, full-bleed bands. |
| 1 β outline | 1px solid {colors.hairline} or {colors.hairline-strong} | Model cards, pricing tiers, collection tiles. |
| 2 β bone inset | Surface colour shift to {colors.surface-bone} inside a {colors.canvas} band | Feature group containers, "How it works" walkthrough. |
| 3 β dark inversion | Card swaps to {colors.surface-dark} against cream | Code wells, featured pricing tier, "Scale on Replicate" hero card. |
| 4 β soft drop | 0 8px 24px rgba(32,32,32,0.08) | Hover-anchored model thumbnails (visual only β not interaction-state-documented). |
Drop shadows exist in the extracted tokens but are restrained β used sparingly to lift photography thumbnails one step off the cream canvas. The dominant elevation language is colour-blocking.
{colors.primary} core β {colors.hero-glow} mid-stop β {colors.hero-pink} outer wash. Reserved for the home hero band only.{colors.surface-dark} full-bleed with a single hairline {colors.divider-dark} separating narrative copy and code well.{component.contributor-avatar}) over a textured cream canvas; this is the only place avatars appear at the brand level.| Token | Value | Use |
|---|---|---|
{rounded.none} | 0px | Hero bands, full-bleed sections, footer. |
{rounded.xs} | 4px | Code tabs, inline tags inside code wells. |
{rounded.sm} | 6px | Mid-radius callouts, small inset chips. |
{rounded.md} | 10px | Model cards, collection tiles, code wells. |
{rounded.lg} | 16px | Pricing tiers, larger feature cards. |
{rounded.full} | 9999px | Buttons, inputs, badges, avatars, pills. |
{rounded.md} corners, full-bleed image to the card edge.{rounded.md} corners.{rounded.full}), 40px on home, 32px in card metadata.button-primary β orange CTA
{colors.primary}, label {colors.on-primary}, type {typography.button-md}, padding 12px 24px, rounded: {rounded.full}, height 44px.button-primary-pressed (background {colors.primary-deep}).button-dark β dark CTA
{colors.surface-dark}, label {colors.on-dark}, type {typography.button-md}, rounded: {rounded.full}.{component.button-primary}, or the primary action on cream when orange would be too loud.button-outline β outlined CTA
{colors.surface-card}, label {colors.ink}, 1px solid {colors.hairline-strong}, type {typography.button-md}, rounded: {rounded.full}.button-ghost β inline button
{colors.canvas}, label {colors.ink}, no border, type {typography.button-md}, rounded: {rounded.full}, padding 8px 16px.button-icon β icon button
{colors.surface-card}, label {colors.ink}, 1px solid {colors.hairline}, rounded: {rounded.full}, 36Γ36px circular.model-card β model listing card
{colors.surface-card}, text {colors.ink}, type {typography.body-md}, rounded: {rounded.md}, padding {spacing.lg} (16px).{typography.body-sm}, single-line description in {colors.charcoal}, status pill {component.badge-status} bottom-left.collection-tile β collection-of-models tile
{colors.canvas}, text {colors.ink}, type {typography.heading-md}, rounded: {rounded.md}, padding {spacing.xl} (24px).{colors.surface-bone} band, used for browsing model categories.pricing-tier β pricing tier card
{colors.surface-card}, text {colors.ink}, type {typography.body-md}, rounded: {rounded.lg}, padding {spacing.xxl} (32px).{typography.display-lg} ("Free", "Pro", "Enterprise"), price in {typography.display-md}.pricing-tier-featured β featured pricing tier
{colors.surface-dark}, text {colors.on-dark}, type {typography.body-md}, rounded: {rounded.lg}, padding {spacing.xxl}.code-block β code well
{colors.surface-dark}, text {colors.on-dark}, type {typography.code-md}, rounded: {rounded.md}, padding {spacing.xl} (24px).{component.code-tab} for switching between languages (Python, Node.js, cURL, HTTP).code-tab β code tab chip
{colors.surface-deep}, text {colors.on-dark-mute}, type {typography.code-sm}, rounded: {rounded.xs}, padding 6px 12px.{colors.on-dark} and adds a 2px bottom underline in {colors.primary}.hero-band β full-bleed hero
{colors.hero-warm} with the atmospheric mesh detailed in Elevation, text {colors.on-dark}, type {typography.display-xxl} for the title.{typography.display-xl}.text-input β default input
{colors.surface-card}, text {colors.ink}, type {typography.body-md}, 1px solid {colors.hairline}, rounded: {rounded.full}, padding 12px 20px, height 44px.{colors.ring-focus} 3px ring.nav-bar β top nav (desktop)
{colors.canvas}, type {typography.button-sm}, height 60px, single hairline {colors.hairline} bottom border.{component.button-primary}.nav-bar (mobile)
sub-nav-pill β sub-nav chip
{component.sub-nav-pill} styling.badge-status β model status badge
{colors.badge-success}, label {colors.on-dark}, type {typography.caption}, rounded: {rounded.full}, padding 4px 10px.badge-tag β neutral tag
{colors.canvas}, label {colors.ink}, 1px solid {colors.hairline}, type {typography.caption}, rounded: {rounded.full}, padding 4px 10px.contributor-avatar β community contributor
{colors.surface-card} placeholder behind 1:1 photography, rounded: {rounded.full}, 40Γ40px (32px in metadata contexts).footer β global footer
{colors.surface-deep}, text {colors.on-dark}, type {typography.body-sm}, rounded: {rounded.none}, padding 64px 32px.{colors.divider-dark}.{colors.canvas} (cream) as the default page background. White ({colors.surface-card}) appears only on individual cards, inputs, and the hero illustration backdrop.{colors.primary} for the primary CTA, the home hero band, and inline links β three roles, nothing else.{rounded.full} β buttons, inputs, badges, avatars, pills.{rounded.md} (10px) or {rounded.lg} (16px) β never sharp corners.{typography.display-xxl} (128px) and {typography.display-xl} (72px) at lineHeight: 1.0 with negative letter-spacing.rb-freigeist-neue for all display, basier-square for UI/body, jetbrains-mono for code. Keep the lanes strict.{component.code-block} with a {colors.surface-dark} background β code is print, not an inline grey box.{rounded.md} corners and full-bleed crop inside cards.{colors.canvas}.lineHeight past 1.0. Tight stacking is structural.basier-square β rb-freigeist-neue) instead.{rounded.full} to content cards. Pill-shaped cards break the rhythm.{colors.surface-dark} or {colors.surface-deep}.| Name | Width | Key Changes |
|---|---|---|
| Desktop XL | β₯ 1440px | Full max-width 1280 body, hero band runs full-bleed, 4-up model grid. |
| Desktop | 1280β1439px | Container shrinks; padding {spacing.xl} (24px) sides. |
| Tablet Large | 1024β1279px | Model grid 3-up, code-story splits remain 2-up. |
| Tablet | 768β1023px | Model grid 2-up, code-story stacks (narrative on top, code below), pricing stacks vertically. |
| Mobile Large | 426β767px | Model grid 1-up at 480px+, nav collapses to hamburger, hero {typography.display-xxl} clamps to 64px. |
| Mobile | β€ 425px | All grids 1-up, hero clamps to 48px, section padding {spacing.section} collapses to 64px. |
{component.button-primary} is 44px tall β comfortably clearing WCAG AAA.{component.button-icon} (36px) is bumped to 44px on mobile via increased padding.{component.sub-nav-pill} stays at 36px on desktop and grows to 40px on mobile via vertical padding adjustment.{component.button-primary} stay anchored.{typography.display-xxl} clamps: 128px β 96px β 64px β 48px across the breakpoint ladder.{rounded.full} and the {colors.canvas} / {colors.surface-card} pair β only the role-specific tokens ({colors.primary}, {component.code-block}) shift between variants.{colors.primary}, {component.button-primary-pressed}, {rounded.lg}) β do not paraphrase.npx @google/design.md lint DESIGN.md after edits; orphaned-tokens warnings will catch unused entries.-pressed, -disabled, -featured) β do not bury them in prose.{typography.body-md}; reach for {typography.subtitle} only on hero subtitles.{colors.primary} scarce β if more than one orange element appears per viewport, ask whether one should drop to {colors.surface-dark} instead.button-primary-pressed only; other components rely on the focus-ring ({colors.ring-focus}) for interactive feedback, which is not extracted as a per-component variant.Still exploring the format? Browse the full DESIGN.md registry or draft a new system with our DESIGN.md generator.
Community listing for AI design workflowsβnot necessarily affiliated with any brand referenced in the name or summary. For context on the format, see Google Stitch.
Share your design system with AI agents worldwide