commerce DS: Gaya 🇧🇷 🔓 Open-Source

Natura GaYa Design System

Design system da Natura (Gaya DS), empresa brasileira de cosméticos. Paleta verde orgânica, tipografia Roboto, tokens inspirados na natureza, mensagens de sustentabilidade e arquitetura multi-marca Natura&Co.

Referência Rápida

Cores

#F4AB34
#F6B854
#F8C675
#CD902C
#A67423

Tipografia

RobotoRoboto Mono

Light/Dark

Light + Dark

Filosofia de Design

Design system da Natura (Gaya DS), empresa brasileira de cosméticos. Paleta verde orgânica, tipografia Roboto, tokens inspirados na natureza, mensagen

Preview Visual

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

DESIGN.md

Baixar DESIGN.md
---
name: Natura GaYa Design System
description: >
  Design system multi-brand da Natura &Co (GaYa), construído como monorepo
  com tokens compartilhados via @naturacosmeticos/natds-themes. Suporta React (web),
  React Native, Android e iOS. Serve múltiplas marcas do grupo (Natura, Avon, Aesop,
  The Body Shop) através de temas intercambiáveis com tokens unificados.
colors:
  brand:
    primaryMain: "#F4AB34"
    primaryLight: "#F6B854"
    primaryLightest: "#F8C675"
    primaryDark: "#CD902C"
    primaryDarkest: "#A67423"
    secondaryMain: "#FF6B0B"
    secondaryLight: "#FF8332"
    secondaryLightest: "#FF9A59"
    secondaryDark: "#D65A09"
    secondaryDarkest: "#AD4907"
  gradient:
    primary: "linear-gradient(101deg, #F4AB34, #FF6B0B)"
  semantic:
    surface: "#FFFFFF"
    surfaceDark: "#4E4E4E"
    background: "#FAFAFA"
    onBackground: "#111111"
    highlight: "#111111"
    highEmphasis: "#363636"
    mediumEmphasis: "#737373"
    lowEmphasis: "#8C8C8C"
  feedback:
    info: "#1267CF"
    infoLight: "#A5C0FC"
    success: "#2F833E"
    successLight: "#92D492"
    warning: "#E5B815"
    warningLight: "#FFD75D"
    alert: "#DE3529"
    alertLight: "#FFA392"
    link: "#1267CF"
  neutral:
    neutral0: "#FFFFFF"
    neutral50: "#FAFAFA"
    neutral75: "#EEEEEE"
    neutral100: "#E1E1E1"
    neutral200: "#C9C9C9"
    neutral300: "#BDBDBD"
    neutral400: "#A4A4A4"
    neutral500: "#8C8C8C"
    neutral600: "#737373"
    neutral700: "#4E4E4E"
    neutral800: "#363636"
    neutral900: "#111111"
typography:
  families:
    - Roboto
    - Roboto Mono
  weights:
    regular: 400
    medium: 500
    bold: 700
  sizes:
    level1: 13
    level2: 14
    level3: 16
    level4: 18
    level5: 20
    level6: 23
    level7: 26
    level8: 29
    level9: 32
    level10: 36
    level11: 41
    level12: 46
    level13: 52
    level14: 58
    level15: 66
    level16: 74
    level17: 83
  lineHeights:
    auto: 1
    reset: 1
    small: 1.25
    medium: 1.5
    large: 2
rounded:
  none: 0
  small: 2
  medium: 4
  large: 8
  huge: 16
  pill: 999
  circle: 999
spacing:
  none: 0
  micro: 4
  tiny: 8
  small: 16
  standard: 24
  semi: 32
  large: 48
  xLarge: 64
---

## Overview

**GaYa** (anteriormente NatDS — Natura Design System) é o design system multi-plataforma e multi-brand da **Natura &Co**, grupo brasileiro de cosméticos que inclui Natura, Avon, Aesop e The Body Shop.

O sistema é distribuído como monorepo com pacotes independentes para cada plataforma:

| Pacote | Função |
|--------|--------|
| `@naturacosmeticos/natds-themes` | Tokens unificados — single source of truth |
| `@naturacosmeticos/natds-react` | Componentes React para web |
| `@naturacosmeticos/natds-rn` | Componentes React Native |
| `@naturacosmeticos/natds-icons` | Biblioteca de ícones SVG |
| `@naturacosmeticos/natds-styles` | Estilos CSS pré-compilados |
| `NatDS` (CocoaPods/SPM) | Componentes iOS (Swift) |
| `natds-android` | Componentes Android (Kotlin) |

O GaYa serve **15 temas de marca** (natura, natura_v2, natura_v3, avon, avon_v2, avon_v3, aesop, biome, theBodyShop, consultoriaDeBeleza, casaEestilo, forcaDeVendas, entre outros) com um único codebase de componentes, trocando apenas os tokens do tema.

### Princípios

1. **Multi-brand por design** — mesmos componentes, tokens distintos por marca
2. **Plataforma-agnóstico** — tokens compartilhados entre web, iOS, Android e RN
3. **Semantic tokens** — cores nomeadas por uso (surface, onSurface, primary) e não por valor
4. **Acessibilidade** — pares de cor sempre fornecem `on*` (e.g., `primary` + `onPrimary`)

---

## Colors

O GaYa organiza cores em camadas progressivas: **spectrum** (paleta bruta), **brand** (identidade da marca) e **semantic** (uso contextual).

### Brand Colors (Natura)

| Token | Hex | Uso |
|-------|-----|-----|
| `brand.a.main` | `#F4AB34` | Dourado Natura — cor primária da marca |
| `brand.a.light` | `#F6B854` | Dourado claro |
| `brand.a.lightest` | `#F8C675` | Dourado muito claro |
| `brand.a.dark` | `#CD902C` | Dourado escuro |
| `brand.a.darkest` | `#A67423` | Dourado muito escuro |
| `brand.b.main` | `#FF6B0B` | Laranja Natura — cor secundária |
| `brand.b.light` | `#FF8332` | Laranja claro |
| `brand.b.lightest` | `#FF9A59` | Laranja muito claro |
| `brand.b.dark` | `#D65A09` | Laranja escuro |
| `brand.b.darkest` | `#AD4907` | Laranja muito escuro |
| `brand.gradient.primary` | `101deg, #F4AB34 → #FF6B0B` | Gradiente primário da marca |

### Semantic Colors

| Token | Hex | Uso |
|-------|-----|-----|
| `primary` | `#F4AB34` | CTAs primários, destaques de marca |
| `onPrimary` | `#333333` | Texto/ícones sobre primary |
| `secondary` | `#FF6B0B` | Ações secundárias, acentos |
| `onSecondary` | `#000000` | Texto/ícones sobre secondary |
| `surface` | `#FFFFFF` | Backgrounds de cards, modais |
| `onSurface` | `#363636` | Texto sobre surfaces |
| `background` | `#FAFAFA` | Background geral da aplicação |
| `onBackground` | `#111111` | Texto principal sobre background |

### Feedback Colors

| Token | Hex | Uso |
|-------|-----|-----|
| `success` | `#2F833E` | Confirmações, estados positivos |
| `warning` | `#E5B815` | Alertas de atenção |
| `alert` | `#DE3529` | Erros, destruição, perigo |
| `info` / `link` | `#1267CF` | Links, informação, ações contextuais |

### Neutrals

| Token | Hex | Uso |
|-------|-----|-----|
| `neutral0` | `#FFFFFF` | Branco puro |
| `neutral50` | `#FAFAFA` | Background claro |
| `neutral100` | `#E1E1E1` | Bordas, dividers |
| `neutral300` | `#BDBDBD` | Bordas inativas |
| `neutral500` | `#8C8C8C` | Placeholders |
| `neutral700` | `#4E4E4E` | Texto terciário |
| `neutral900` | `#111111` | Texto máximo contraste |

---

## Typography

### Font Families

- **Roboto** — Família primária, headline e branding. Sans-serif geométrica do Google, usada em todas as variantes de peso.
- **Roboto Mono** — Família code. Monospace para snippets, dados técnicos e tabelas numéricas.
- **Arial** — Fallback cross-platform.

### Roles Tipográficos

| Role | Font Family | Weight | Uso |
|------|-------------|:------:|-----|
| `display` | Roboto | 700 (Bold) | Títulos hero, destaques |
| `headline` | Roboto | 500 (Medium) | Subtítulos, headings |
| `body.regular` | Roboto | 400 (Regular) | Corpo de texto |
| `body.bold` | Roboto | 700 (Bold) | Ênfase no corpo |
| `fallback` | Arial | 400 | Substituição quando Roboto indisponível |

### Escala Tipográfica

| Token | Tamanho (px) | Uso sugerido |
|-------|:---:|---|
| `level1` | 13 | Overline, captions mínimos |
| `level2` | 14 | Captions, labels auxiliares |
| `level3` | 16 | Corpo padrão (body1) |
| `level4` | 18 | Corpo destacado (body2) |
| `level5` | 20 | Subtitle2, subtítulos menores |
| `level6` | 23 | Subtitle1 |
| `level7` | 26 | Heading6 |
| `level8` | 29 | Heading5 |
| `level9` | 32 | Heading4 |
| `level10` | 36 | Heading3 |
| `level11` | 41 | Heading2 |
| `level12` | 46 | Heading1 |
| `level13–17` | 52–83 | Display sizes (hero, splash) |

### Line Heights

| Token | Multiplicador | Uso |
|-------|:---:|---|
| `auto` / `reset` | 1.0× | Single-line, ícones com texto |
| `small` | 1.25× | Headings, títulos curtos |
| `medium` | 1.5× | Corpo padrão, parágrafos |
| `large` | 2.0× | Texto com espaçamento generoso |

---

## Layout

### Spacing Scale

O GaYa utiliza uma escala de espaçamento baseada em incrementos de 4px e 8px:

| Token | Valor | Uso |
|-------|:---:|---|
| `none` | 0px | Reset |
| `micro` | 4px | Espaçamento mínimo, gaps internos de ícone |
| `tiny` | 8px | Padding mínimo, gap ícone-texto |
| `small` | 16px | Padding padrão de componentes |
| `standard` | 24px | Espaçamento entre blocos |
| `semi` | 32px | Separação entre seções menores |
| `large` | 48px | Espaçamento generoso entre seções |
| `xLarge` | 64px | Espaçamento máximo, separação de áreas |

### Size Scale (Componentes)

O sistema define tamanhos nomeados para dimensões de componentes:

| Token | Valor | Uso |
|-------|:---:|---|
| `micro` | 4px | Dots, indicators |
| `tiny` | 8px | Badges mínimos |
| `small` | 16px | Ícones pequenos, checkboxes |
| `standard` | 24px | Ícones padrão |
| `semi` | 32px | Botões compactos |
| `semiX` | 40px | Input heights |
| `medium` | 48px | Botões padrão, avatars |
| `mediumX` | 56px | App bar height |
| `large` | 64px | Avatars grandes |
| `largeXXX` | 96px | Avatars hero |
| `huge` | 128px | Thumbnails |
| `veryHuge` | 256px | Imagens featured |

---

## Elevation & Depth

O GaYa implementa 10 níveis de elevação com sombras progressivas baseadas em rgba(0, 0, 0, 0.14):

| Token | Box-shadow | Uso |
|-------|-----------|-----|
| `none` | Nenhuma | Elementos flat, inline |
| `micro` | `0 1px 1px 0 rgba(0,0,0,0.14)` | Hover sutil |
| `tiny` | `0 2px 2px 0 rgba(0,0,0,0.14)` | Cards em repouso |
| `small` | `0 3px 4px 0 rgba(0,0,0,0.14)` | Cards elevados, dropdowns |
| `medium` | `0 4px 5px 0 rgba(0,0,0,0.14)` | FABs, navigation drawers |
| `large` | `0 6px 10px 0 rgba(0,0,0,0.14)` | Modais, bottom sheets |
| `largeX` | `0 8px 10px 0 rgba(0,0,0,0.14)` | Dialogs |
| `largeXX` | `0 9px 12px 0 rgba(0,0,0,0.14)` | Menus elevados |
| `huge` | `0 12px 17px 0 rgba(0,0,0,0.14)` | Overlays |
| `hugeX` | `0 16px 24px 0 rgba(0,0,0,0.14)` | Floating panels |
| `hugeXX` | `0 24px 38px 0 rgba(0,0,0,0.14)` | Elementos máximos (pickers full-screen) |

### Opacity Scale

| Token | Valor | Uso |
|-------|:---:|---|
| `transparent` | 0.0 | Totalmente invisível |
| `lower` | 0.04 | Backgrounds sutis de hover |
| `veryLow` | 0.08 | States desabilitados muito leves |
| `low` | 0.12 | Overlays mínimos |
| `disabled` | 0.32 | Elementos desabilitados |
| `medium` | 0.48 | Overlays médios |
| `high` | 0.72 | Scrim de modais |
| `opaque` | 1.0 | Totalmente opaco |

---

## Shapes

### Border Radius

| Token | Valor | Uso |
|-------|:---:|---|
| `none` | 0px | Elementos sharp (imagens full-bleed, dividers) |
| `small` | 2px | Badges, tags compactas |
| `medium` | 4px | Inputs, selects, cards padrão |
| `large` | 8px | Botões, cards destacados, modais |
| `huge` | 16px | Chips, cards arredondados, bottom sheets |
| `pill` | 999px | Botões pill, tags arredondadas |
| `circle` | 999px | Avatares, FABs, ícones circulares |

O sistema é conservador no arredondamento — `medium` (4px) é o padrão para a maioria dos componentes, mantendo uma estética clean e profissional.

---

## Components

O GaYa oferece uma biblioteca abrangente de componentes nativos para web, iOS, Android e React Native:

### Navegação e Estrutura
- **AppBarTop** — Barra de topo com título, ações e navegação
- **NavigationDrawer** — Menu lateral com header, seções e itens
- **Tab** — Abas de navegação horizontal
- **ExpansionPanel** — Conteúdo colapsável com título e animação

### Formulários e Inputs
- **TextField** — Campo de texto com label, helper text e estados
- **Select** — Seletor dropdown com opções
- **Checkbox** — Caixa de seleção com label
- **RadioButton** — Grupo de seleção exclusiva
- **Counter** — Input numérico com incremento/decremento
- **Rating** — Avaliação por estrelas (input e display)

### Ações
- **Button** — Botões com variantes (contained, filled, outlined, ghost, text, tonal) e cores (primary, secondary, neutral, inverse)
- **IconButton** — Botão circular com ícone (semi, medium, standard, float, overlay)
- **Link** — Links textuais com estados
- **Shortcut** — Atalhos de ação rápida (contained, outlined)

### Feedback e Informação
- **Alert** — Mensagens com título e conteúdo
- **Badge** — Indicadores numéricos e dots (primary, secondary, success, alert)
- **Snackbar** — Notificações temporárias
- **Dialog** — Modais de confirmação com título e corpo
- **ProgressIndicator** — Indicador de carregamento (standard, semi, medium, large)
- **Tag** — Labels categóricos (primary, secondary, success, alert, warning, link)
- **Divider** — Separador visual horizontal

### Mídia e Display
- **Avatar** — Foto ou iniciais de usuário (standard, semi, semiX, medium, largeXXX)
- **Card** — Container de conteúdo com elevação
- **Image** — Imagem com border-radius configurável

---

## Do's and Don'ts

### ✅ Do's

- **Use semantic tokens** — Sempre usar `color.primary`, `color.surface`, `color.onBackground` em vez de hex codes diretos
- **Respeite os pares `on*`** — Se o background é `primary`, o texto deve ser `onPrimary` para garantir contraste
- **Envolva a aplicação com ThemeProvider** — Todos os componentes dependem do tema injetado via context
- **Use a escala de spacing** — Nunca use valores arbitrários; sempre `spacing.tiny`, `spacing.small`, etc.
- **Mantenha multi-brand em mente** — Não hardcode cores da Natura; use tokens semânticos que funcionam em todos os temas
- **Use a hierarquia de elevação** — Cards em repouso com `tiny`, modais com `large`, dialogs com `largeX`
- **Siga o gradiente de peso tipográfico** — Display (700) → Headline (500) → Body (400) para hierarquia clara

### ❌ Don'ts

- **Não use cores hex diretas** — Sempre prefira tokens. `color.primary` muda por marca; `#F4AB34` é fixo.
- **Não misture pesos arbitrários** — Respeite regular (400), medium (500) e bold (700) apenas
- **Não crie elevações custom** — Use os 10 níveis do sistema; sombras fora da escala quebram consistência
- **Não use border-radius fora da escala** — Apenas none/small/medium/large/huge/pill/circle
- **Não ignore o tema dark** — O GaYa suporta light e dark em todos os temas; teste ambos
- **Não hardcode tamanhos de componentes** — Use a size scale (standard, semi, medium, large)
- **Não sobreponha a opacidade manualmente** — Use os tokens de opacity para estados disabled e overlays
- **Não misture fonts** — Roboto para conteúdo, Roboto Mono apenas para code

---

## Attribution

| Campo | Valor |
|-------|-------|
| Source | [github.com/natura-cosmeticos](https://github.com/natura-cosmeticos) — natds-commons, natds-js, natds-rn, natds-ios, natds-android |
| Listing | [designsystemsbrasileiros.com/gaya](https://designsystemsbrasileiros.com/gaya/) — tags: components, repo |
| Package | [@naturacosmeticos/natds-themes](https://www.npmjs.com/package/@naturacosmeticos/natds-themes) v0.84.9 |
| Documentation | [ds.natura.design](https://ds.natura.design/) |
| Storybook | [natds-web.natura.design](https://natds-web.natura.design/react/index.html) |
| Method | Open-source repository + npm package token extraction |
| License | ISC |
| Date | 2025-07-05 |

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

Repo: natura-cosmeticos/natds

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