infrastructure DS: Nimbus 🇧🇷 🔓 Open-Source

Nuvemshop-Nimbus-design-system

Design system da Nuvemshop (Nimbus), plataforma líder de e-commerce para PMEs na América Latina. Azul primário (#0059D5), acessibilidade como prioridade, construído para simplicidade e performance em 130K+ lojas.

Referência Rápida

Cores

#0059D5
#00429F
#00347D
#EEF5FF
#96C1FC

Tipografia

Light/Dark

Light

Filosofia de Design

Design system da Nuvemshop (Nimbus), plataforma líder de e-commerce para PMEs na América Latina. Azul primário (#0059D5), acessibilidade como priorida

Preview Visual

Landing page fictícia inspirada neste design system — não afiliada à marca.

DESIGN.md

Baixar DESIGN.md
---
version: alpha
name: Nuvemshop-Nimbus-design-system
description: The official open-source design system by Nuvemshop/Tiendanube — Latin America's leading e-commerce platform. Nimbus uses a semantic token architecture (ref → sys) built on a blue-primary palette with Geist Sans as the sole typographic voice, 4px-base spacing scale, and a 5-level elevation system anchored by layered neutral shadows. Designed for accessibility, consistency, and performance across the e-commerce admin experience.

colors:
  primary-interactive: "#0059D5"
  primary-interactive-hover: "#00429F"
  primary-interactive-pressed: "#00347D"
  primary-surface: "#EEF5FF"
  primary-surface-highlight: "#96C1FC"
  primary-text-low: "#00255A"
  primary-text-high: "#000B19"
  success-interactive: "#00C87B"
  success-interactive-hover: "#00935B"
  success-interactive-pressed: "#007447"
  success-surface: "#DEFEF2"
  success-surface-highlight: "#7AF7C7"
  success-text-low: "#005333"
  success-text-high: "#001910"
  warning-interactive: "#C87B00"
  warning-interactive-hover: "#935B00"
  warning-interactive-pressed: "#744700"
  warning-surface: "#FEF2DE"
  warning-surface-highlight: "#F7C77A"
  warning-text-low: "#533300"
  warning-text-high: "#191000"
  danger-interactive: "#C80003"
  danger-interactive-hover: "#930002"
  danger-interactive-pressed: "#740002"
  danger-surface: "#FEDEDE"
  danger-surface-highlight: "#F77A7C"
  danger-text-low: "#530001"
  danger-text-high: "#190000"
  neutral-background: "#FFFFFF"
  neutral-surface: "#F6F6F6"
  neutral-surface-disabled: "#E7E7E7"
  neutral-surface-highlight: "#D1D1D1"
  neutral-interactive: "#B0B0B0"
  neutral-interactive-hover: "#888888"
  neutral-interactive-pressed: "#777777"
  neutral-text-disabled: "#6D6D6D"
  neutral-text-low: "#5D5D5D"
  neutral-text-high: "#0A0A0A"
  ai-generative-interactive: "#E2DCFA"
  ai-generative-text-high: "#1F1254"
  ai-gradient-blue-high: "#0050C3"
  ai-gradient-purple-high: "#4629BA"
  ai-gradient-pink-high: "#D8446E"

typography:
  title-h1:
    fontFamily: Geist, -apple-system, BlinkMacSystemFont, Roboto, 'Helvetica Neue', arial, sans-serif
    fontSize: 32px
    fontWeight: 600
    lineHeight: 40px
  title-h2:
    fontFamily: Geist, -apple-system, BlinkMacSystemFont, Roboto, 'Helvetica Neue', arial, sans-serif
    fontSize: 28px
    fontWeight: 600
    lineHeight: 32px
  title-h3:
    fontFamily: Geist, -apple-system, BlinkMacSystemFont, Roboto, 'Helvetica Neue', arial, sans-serif
    fontSize: 24px
    fontWeight: 600
    lineHeight: 28px
  title-h4:
    fontFamily: Geist, -apple-system, BlinkMacSystemFont, Roboto, 'Helvetica Neue', arial, sans-serif
    fontSize: 20px
    fontWeight: 500
    lineHeight: 24px
  title-h5:
    fontFamily: Geist, -apple-system, BlinkMacSystemFont, Roboto, 'Helvetica Neue', arial, sans-serif
    fontSize: 16px
    fontWeight: 500
    lineHeight: 24px
  title-h6:
    fontFamily: Geist, -apple-system, BlinkMacSystemFont, Roboto, 'Helvetica Neue', arial, sans-serif
    fontSize: 14px
    fontWeight: 500
    lineHeight: 20px
  body-highlight:
    fontFamily: Geist, -apple-system, BlinkMacSystemFont, Roboto, 'Helvetica Neue', arial, sans-serif
    fontSize: 16px
    fontWeight: 400
    lineHeight: 24px
  body-base:
    fontFamily: Geist, -apple-system, BlinkMacSystemFont, Roboto, 'Helvetica Neue', arial, sans-serif
    fontSize: 14px
    fontWeight: 400
    lineHeight: 20px
  body-caption:
    fontFamily: Geist, -apple-system, BlinkMacSystemFont, Roboto, 'Helvetica Neue', arial, sans-serif
    fontSize: 12px
    fontWeight: 400
    lineHeight: 16px
  mono:
    fontFamily: Geist Mono, 'Roboto Mono', monospace
    fontSize: 14px
    fontWeight: 400
    lineHeight: 20px

rounded:
  0-5: 2px
  1: 4px
  base: 6px
  2: 8px
  3: 12px
  4: 16px
  5: 20px
  6: 24px
  full: 9999px
  half: 50%

spacing:
  0-5: 2px
  1: 4px
  1-5: 6px
  2: 8px
  2-5: 10px
  3: 12px
  3-5: 14px
  4: 16px
  4-5: 18px
  5: 20px
  6: 24px
  7: 28px
  8: 32px
  9: 36px
  10: 40px
  11: 44px
  12: 48px
  14: 56px
  16: 64px
  18: 72px
  20: 80px

components:
  button-primary:
    backgroundColor: "{colors.primary-interactive}"
    textColor: "{colors.neutral-background}"
    typography: "{typography.body-base}"
    fontWeight: 500
    rounded: "{rounded.base}"
    padding: "{spacing.2} {spacing.4}"
  button-secondary:
    backgroundColor: "{colors.neutral-background}"
    textColor: "{colors.primary-interactive}"
    borderColor: "{colors.primary-interactive}"
    typography: "{typography.body-base}"
    fontWeight: 500
    rounded: "{rounded.base}"
    padding: "{spacing.2} {spacing.4}"
  button-danger:
    backgroundColor: "{colors.danger-interactive}"
    textColor: "{colors.neutral-background}"
    typography: "{typography.body-base}"
    fontWeight: 500
    rounded: "{rounded.base}"
    padding: "{spacing.2} {spacing.4}"
  card:
    backgroundColor: "{colors.neutral-background}"
    textColor: "{colors.neutral-text-high}"
    borderColor: "{colors.neutral-surface-highlight}"
    rounded: "{rounded.2}"
    padding: "{spacing.4}"
  input:
    backgroundColor: "{colors.neutral-background}"
    textColor: "{colors.neutral-text-high}"
    borderColor: "{colors.neutral-interactive}"
    typography: "{typography.body-base}"
    rounded: "{rounded.base}"
    padding: "{spacing.2} {spacing.3}"
  chip:
    backgroundColor: "{colors.neutral-surface}"
    textColor: "{colors.neutral-text-high}"
    typography: "{typography.body-caption}"
    rounded: "{rounded.full}"
    padding: "{spacing.0-5} {spacing.2}"
  badge:
    backgroundColor: "{colors.primary-surface}"
    textColor: "{colors.primary-text-low}"
    typography: "{typography.body-caption}"
    rounded: "{rounded.full}"
    padding: "{spacing.0-5} {spacing.1}"
  alert-success:
    backgroundColor: "{colors.success-surface}"
    textColor: "{colors.success-text-high}"
    borderColor: "{colors.success-interactive}"
    rounded: "{rounded.2}"
    padding: "{spacing.3} {spacing.4}"
  alert-danger:
    backgroundColor: "{colors.danger-surface}"
    textColor: "{colors.danger-text-high}"
    borderColor: "{colors.danger-interactive}"
    rounded: "{rounded.2}"
    padding: "{spacing.3} {spacing.4}"
  alert-warning:
    backgroundColor: "{colors.warning-surface}"
    textColor: "{colors.warning-text-high}"
    borderColor: "{colors.warning-interactive}"
    rounded: "{rounded.2}"
    padding: "{spacing.3} {spacing.4}"
  modal:
    backgroundColor: "{colors.neutral-background}"
    textColor: "{colors.neutral-text-high}"
    rounded: "{rounded.2}"
    padding: "{spacing.6}"
  sidebar:
    backgroundColor: "{colors.neutral-background}"
    textColor: "{colors.neutral-text-high}"
    padding: "{spacing.4}"
  table:
    backgroundColor: "{colors.neutral-background}"
    textColor: "{colors.neutral-text-high}"
    headerBackground: "{colors.neutral-surface}"
    borderColor: "{colors.neutral-surface-highlight}"
    padding: "{spacing.3} {spacing.4}"
  tabs:
    textColor: "{colors.neutral-text-low}"
    activeTextColor: "{colors.primary-interactive}"
    activeBorderColor: "{colors.primary-interactive}"
    typography: "{typography.body-base}"
    fontWeight: 500
    padding: "{spacing.2} {spacing.4}"
  skeleton:
    backgroundColor: "{colors.neutral-surface-disabled}"
    rounded: "{rounded.1}"

---


## Overview

Nimbus is the open-source design system built by Nuvemshop (Tiendanube) — Latin America's largest independent e-commerce platform. It powers the admin dashboard, partner app ecosystem, and internal tooling across all Nuvemshop products. The system follows a reference → semantic token architecture where raw color values (ref tokens) are mapped to purpose-driven roles (sys tokens), enabling both light and dark themes from a single source of truth.

The visual language is purposefully restrained and professional. A strong blue primary (`#0059D5`) anchors the interactive layer while a predominantly neutral canvas (`#FFFFFF` → `#F6F6F6`) keeps the admin interface clean and content-focused. Typography is handled entirely by Vercel's Geist family (Sans + Mono) at three weights (400 / 500 / 600), creating a modern, geometric, developer-friendly reading experience.

Nimbus ships as individually installable npm packages (`@nimbus-ds/components`, `@nimbus-ds/styles`, `@nimbus-ds/tokens`) with React components and CSS token exports for maximum adoption flexibility. The system is purpose-built for the e-commerce vertical — emphasizing data density, multi-step workflows, and clear feedback states (success, warning, danger) that merchants encounter daily.

**Key Characteristics:**
- **Semantic token architecture** — two-tier color system (ref → sys) with 5 semantic categories: primary, success, warning, danger, neutral, plus an AI generative palette.
- **Single font family** — Geist Sans/Mono handles all typographic roles. No secondary or decorative faces.
- **4px base unit** — The spacing scale starts at `0.125rem` (2px) and progresses through a consistent rem-based system up to `5rem` (80px).
- **5-level elevation** — Shadow tokens from `level-0` (none) through `level-5` (24px offset), using neutral `{colors.neutral-interactive-hover}` as shadow color.
- **Accessible by default** — Color contrast ratios built into the token hierarchy (text-high for primary content, text-low for secondary).
- **Dark mode native** — Every semantic token has a dark-mode counterpart defined at the sys layer.
- **E-commerce focused** — Components optimized for admin dashboards, order management, and merchant workflows.

## Colors

### Primary (Brand Blue)
- **Primary Interactive** (`{colors.primary-interactive}` — `#0059D5`): The brand's core action color. All primary buttons, links, active states, and focus rings.
- **Primary Interactive Hover** (`{colors.primary-interactive-hover}` — `#00429F`): Hover state for primary interactive elements.
- **Primary Interactive Pressed** (`{colors.primary-interactive-pressed}` — `#00347D`): Pressed/active state.
- **Primary Surface** (`{colors.primary-surface}` — `#EEF5FF`): Light blue tint for selected rows, active tab backgrounds, info callouts.
- **Primary Surface Highlight** (`{colors.primary-surface-highlight}` — `#96C1FC`): Stronger emphasis surface — progress bars, selection rings.
- **Primary Text Low** (`{colors.primary-text-low}` — `#00255A`): Secondary text on primary surfaces.
- **Primary Text High** (`{colors.primary-text-high}` — `#000B19`): High-contrast text on primary surfaces.

### Success (Green)
- **Success Interactive** (`{colors.success-interactive}` — `#00C87B`): Positive action buttons, confirmation states.
- **Success Surface** (`{colors.success-surface}` — `#DEFEF2`): Background for success alerts and banners.
- **Success Text High** (`{colors.success-text-high}` — `#001910`): Text on success surfaces.

### Warning (Amber)
- **Warning Interactive** (`{colors.warning-interactive}` — `#C87B00`): Caution-state buttons and indicators.
- **Warning Surface** (`{colors.warning-surface}` — `#FEF2DE`): Background for warning alerts.
- **Warning Text High** (`{colors.warning-text-high}` — `#191000`): Text on warning surfaces.

### Danger (Red)
- **Danger Interactive** (`{colors.danger-interactive}` — `#C80003`): Destructive action buttons, error states.
- **Danger Surface** (`{colors.danger-surface}` — `#FEDEDE`): Background for error alerts and validation messages.
- **Danger Text High** (`{colors.danger-text-high}` — `#190000`): Text on danger surfaces.

### Neutral
- **Background** (`{colors.neutral-background}` — `#FFFFFF`): The base page background.
- **Surface** (`{colors.neutral-surface}` — `#F6F6F6`): Card backgrounds, table headers, subtle separation.
- **Surface Disabled** (`{colors.neutral-surface-disabled}` — `#E7E7E7`): Disabled element backgrounds, skeleton loaders.
- **Surface Highlight** (`{colors.neutral-surface-highlight}` — `#D1D1D1`): Borders, dividers, pressed surfaces.
- **Interactive** (`{colors.neutral-interactive}` — `#B0B0B0`): Default input borders, inactive toggle tracks.
- **Interactive Hover** (`{colors.neutral-interactive-hover}` — `#888888`): Hovered neutral elements.
- **Text Disabled** (`{colors.neutral-text-disabled}` — `#6D6D6D`): Disabled text and placeholders.
- **Text Low** (`{colors.neutral-text-low}` — `#5D5D5D`): Secondary body text, captions, metadata.
- **Text High** (`{colors.neutral-text-high}` — `#0A0A0A`): Primary text — headings and body content.

### AI Generative (Purple)
- **AI Interactive** (`{colors.ai-generative-interactive}` — `#E2DCFA`): AI feature backgrounds and surfaces.
- **AI Text High** (`{colors.ai-generative-text-high}` — `#1F1254`): Text on AI surfaces.
- **AI Gradient Blue** (`{colors.ai-gradient-blue-high}` — `#0050C3`): Gradient stop for AI feature branding.
- **AI Gradient Purple** (`{colors.ai-gradient-purple-high}` — `#4629BA`): Gradient stop for AI feature branding.
- **AI Gradient Pink** (`{colors.ai-gradient-pink-high}` — `#D8446E`): Gradient stop for AI feature branding.

## Typography

### Font Family
A single font family — **Geist** by Vercel — serves every typographic role across the system. The geometric sans-serif provides excellent readability at small sizes (critical for data-dense admin UIs) while maintaining personality at display sizes. **Geist Mono** handles code blocks, technical metadata, and monospaced content.

Fallback stack: `-apple-system, BlinkMacSystemFont, Roboto, 'Helvetica Neue', arial, sans-serif`.

### Hierarchy

| Token | Size | Weight | Line Height | Use |
|---|---|---|---|---|
| `{typography.title-h1}` | 32px (2rem) | 600 | 40px (2.5rem) | Page titles. One per page max. |
| `{typography.title-h2}` | 28px (1.75rem) | 600 | 32px (2rem) | Section headings dividing large content areas. |
| `{typography.title-h3}` | 24px (1.5rem) | 600 | 28px (1.75rem) | Sub-section headings. |
| `{typography.title-h4}` | 20px (1.25rem) | 500 | 24px (1.5rem) | Card titles, dialog headings. |
| `{typography.title-h5}` | 16px (1rem) | 500 | 24px (1.5rem) | Low-hierarchy titles, highlighted text. |
| `{typography.title-h6}` | 14px (0.875rem) | 500 | 20px (1.25rem) | Smallest heading role. |
| `{typography.body-highlight}` | 16px (1rem) | 400 | 24px (1.5rem) | Emphasized body text, lead paragraphs. |
| `{typography.body-base}` | 14px (0.875rem) | 400 | 20px (1.25rem) | Default body text for all content. |
| `{typography.body-caption}` | 12px (0.75rem) | 400 | 16px (1rem) | Captions, labels, helper text, chips. |
| `{typography.mono}` | 14px (0.875rem) | 400 | 20px (1.25rem) | Code blocks, technical values. |

### Weight System
- **Regular (400)** — body text, descriptions, plain content.
- **Medium (500)** — buttons, labels, low-hierarchy titles (h4–h6), navigation items.
- **Bold (600)** — high-hierarchy titles (h1–h3). The system never goes above 600.

### Principles
- **Three weights maximum.** 400 / 500 / 600 — no 700 or 800. The hierarchy is achieved through size and weight combination, not extreme boldness.
- **Rem-based sizing.** All font sizes use rem units for accessibility (user font-size preferences respected).
- **Generous line heights.** Body text at 1.43× ratio (20px / 14px), titles at 1.17–1.25× — optimized for readability in dense admin layouts.
- **Single family discipline.** No decorative or display fonts. Geist's geometric neutrality keeps the admin feeling professional and content-focused.

## Layout

### Spacing System
- **Base unit**: 4px (`0.25rem`).
- **Scale**: `{spacing.0-5}` 2px · `{spacing.1}` 4px · `{spacing.1-5}` 6px · `{spacing.2}` 8px · `{spacing.2-5}` 10px · `{spacing.3}` 12px · `{spacing.4}` 16px · `{spacing.5}` 20px · `{spacing.6}` 24px · `{spacing.8}` 32px · `{spacing.10}` 40px · `{spacing.12}` 48px · `{spacing.16}` 64px · `{spacing.20}` 80px.
- **Component internal padding**: `{spacing.2}` to `{spacing.4}` (8–16px) for atomic components.
- **Card padding**: `{spacing.4}` (16px) standard.
- **Section separation**: `{spacing.6}` to `{spacing.8}` (24–32px) between unrelated content blocks.

### Grid & Breakpoints

| Breakpoint | Width | Use |
|---|---|---|
| `xs` | 0px | Mobile — single column layouts. |
| `md` | 672px | Tablet — two-column grids begin. |
| `lg` | 1024px | Small desktop — full sidebar + content. |
| `xl` | 1200px | Desktop — expanded content areas. |
| `xxl` | 1920px | Extra-large displays. |

### Responsive Strategy
- Admin layout: fixed sidebar (collapsed on mobile) + fluid content area.
- Content grids collapse from multi-column to single-column at `md` breakpoint.
- Tables become scrollable or stack on mobile.
- Touch targets: minimum 44px (achieved through padding + line-height combinations).

## Elevation & Depth

Nimbus uses a 6-level shadow system (0–5) where shadow color references the neutral interactive-hover token (`#888888`) for consistency with the neutral palette.

| Level | Value | Use |
|---|---|---|
| Level 0 | `none` | Flat surfaces, inline content. |
| Level 1 | `0px 0px 1px 0px` neutral-interactive-hover | Subtle edge definition — input focus rings, dividers. |
| Level 2 | `0px 0px 2px 0px` neutral-interactive-hover | Slight lift — hovered cards, active inputs. |
| Level 3 | `0px 3px 6px 0px` neutral-surface-highlight + `0px 0px 1px 0px` neutral-interactive-hover | Medium elevation — dropdowns, popovers, floating actions. |
| Level 4 | `0px 12px 16px 0px` neutral-surface-highlight + `0px 0px 1px 0px` neutral-interactive-hover | High elevation — modals, sidebars. |
| Level 5 | `0px 24px 32px 0px` neutral-surface-highlight + `0px 0px 1px 0px` neutral-interactive-hover | Maximum elevation — dialogs over dimmed overlays. |

### z-Index Layering

| Token | Value | Use |
|---|---|---|
| 100–300 | 100–300 | Base layer elements, sticky headers. |
| 400–500 | 400–500 | Floating elements, dropdown menus. |
| 600 | 600 | Overlays, sidebars. |
| 700 | 700 | Modals, sidebars. |
| 800 | 800 | Toasts, tooltips, popovers. |
| 900 | 900 | Highest general-purpose layer. |
| 1000–1100 | 1000–1100 | Reserved for top-priority modals. |

## Shapes

### Border Radius Scale

| Token | Value | Use |
|---|---|---|
| `{rounded.0-5}` | 2px | Very subtle rounding — small inline elements. |
| `{rounded.1}` | 4px | Medium/small elements — badges, skeleton loaders. |
| `{rounded.base}` | 6px | Default component radius — buttons, inputs. |
| `{rounded.2}` | 8px | Cards, alerts, modals, larger containers. |
| `{rounded.3}` | 12px | Large panels, feature cards. |
| `{rounded.4}` | 16px | Hero elements, promotional cards. |
| `{rounded.5}` | 20px | Extra-large containers. |
| `{rounded.6}` | 24px | Oversized decorative elements. |
| `{rounded.full}` | 9999px | Pills, chips, badges, avatars. |
| `{rounded.half}` | 50% | Perfect circles (1:1 aspect ratio elements). |

### Border Width Scale

| Token | Value | Use |
|---|---|---|
| 1 | 0.0625rem (1px) | Default borders — inputs, cards, dividers. |
| 2 | 0.125rem (2px) | Emphasis borders — focus rings, active states. |
| 3 | 0.1875rem (3px) | Strong borders — selected tabs, active indicators. |

## Components

### Atomic Components
The foundational building blocks:

- **Badge** — Status indicators with semantic color variants (primary, success, warning, danger).
- **Box** — Layout primitive with spacing, flex, and responsive props.
- **Button** — Primary, secondary, danger, and text variants. 6px radius, medium weight labels.
- **Checkbox** — Form selection with label and helper text.
- **Chip** — Pill-shaped tags for categories and filters.
- **Divider** — Horizontal/vertical content separators.
- **FileUploader** — Drag-and-drop file upload zone.
- **Icon** — SVG icon wrapper from the Nimbus Icons library.
- **IconButton** — Icon-only circular buttons for toolbars.
- **Input** — Text input with prefix/suffix slots, validation states.
- **Label** — Form field labels with required indicator.
- **Link** — Inline and standalone link styles.
- **List** — Ordered and unordered list containers.
- **MultiSelect** — Multi-value selection dropdown.
- **Popover** — Floating content triggered by click/hover.
- **ProgressBar** — Linear progress indicator.
- **Radio** — Radio button groups.
- **Select** — Single-value dropdown selection.
- **Skeleton** — Loading placeholder animations.
- **Slider** — Range input slider.
- **Spinner** — Loading indicator (circular).
- **Tag** — Removable tags for multi-value inputs.
- **Text** — Typography component with semantic size/weight props.
- **Textarea** — Multi-line text input.
- **Thumbnail** — Image preview containers.
- **Title** — Heading component (h1–h6) with built-in spacing.
- **Toast** — Temporary notification messages.
- **Toggle** — On/off switch toggle.
- **Tooltip** — Contextual hover information.

### Composite Components
Higher-level patterns composed from atomic elements:

- **Accordion** — Expandable content sections.
- **Alert** — Persistent feedback banners (success, warning, danger, info).
- **Card** — Content container with header, body, and footer slots.
- **Collapsible** — Show/hide content toggle.
- **Modal** — Dialog overlay with backdrop.
- **Pagination** — Page navigation controls.
- **ScrollPane** — Scrollable content container.
- **SegmentedControl** — Tab-like option selector.
- **Sidebar** — Navigation drawer (fixed or overlay).
- **SplitButton** — Button with dropdown action menu.
- **Stepper** — Multi-step workflow indicator.
- **Table** — Data table with sorting, selection, and pagination.
- **Tabs** — Tabbed content navigation.
- **TimePicker** — Time selection input.

### Motion

| Token | Duration | Use |
|---|---|---|
| `motion.speed.fast` | 150ms | Micro-interactions — hover, focus, toggle. |
| `motion.speed.base` | 300ms | Standard transitions — dropdowns, tabs. |
| `motion.speed.slow` | 450ms | Emphasis animations — modals appearing. |
| `motion.speed.slower` | 600ms | Complex sequences — page transitions. |

## Do's and Don'ts

### Do's
- ✅ Use semantic color tokens (`primary-interactive`, `danger-surface`) instead of raw hex values.
- ✅ Stick to the 3-weight system (400/500/600) — never use 700+ weights.
- ✅ Use `{spacing.4}` (16px) as default card padding.
- ✅ Apply `{rounded.base}` (6px) for interactive elements and `{rounded.2}` (8px) for containers.
- ✅ Use the shadow level system for elevation — don't create custom shadows.
- ✅ Respect the breakpoint tokens for responsive layouts.
- ✅ Use Geist Sans as the sole font family — never mix with other sans-serif faces.
- ✅ Use `{colors.neutral-text-high}` for primary content and `{colors.neutral-text-low}` for secondary.
- ✅ Import components individually (`@nimbus-ds/button`) for optimal tree-shaking.
- ✅ Use the ThemeProvider for dark mode — never hardcode dark-mode colors.

### Don'ts
- ❌ Don't use raw color hex values — always reference semantic tokens.
- ❌ Don't exceed font-weight 600 — the system caps at semibold.
- ❌ Don't mix spacing values outside the defined scale.
- ❌ Don't use custom border-radius values — pick from the defined scale.
- ❌ Don't apply shadows arbitrarily — use the 0–5 level system.
- ❌ Don't use `{colors.primary-interactive}` for text — use `{colors.primary-text-low}` or `{colors.primary-text-high}`.
- ❌ Don't combine multiple font families — Geist alone handles all roles.
- ❌ Don't hardcode breakpoint values — use the token names.
- ❌ Don't use `{colors.neutral-interactive}` for text — it's for borders and non-text elements.
- ❌ Don't create one-off components — compose from atomic primitives.

---

## Attribution

| Field | Value |
|---|---|
| Source | github.com/TiendaNube/nimbus-design-system |
| Method | Open-source repository analysis (tokens/src JSON files) |
| Date | 2026-07-05 |
| License | MIT |
| Official docs | nimbus.nuvemshop.com.br |

Extraído de: https://nuvemshop.com.br

Repo: TiendaNube/nimbus-design-system

Extraído em: 05/07/2026

Este site não é afiliado, endossado ou patrocinado por nenhuma das marcas listadas. Os tokens de design apresentados foram extraídos exclusivamente de informações publicamente acessíveis (CSS visível em navegadores). Nenhum conteúdo protegido por direitos autorais é reproduzido. Se você é titular de uma marca e deseja solicitar remoção, consulte nossa Política de Privacidade — seção 9.

Política de Privacidade — Seção 9