Instalação
Aprenda como instalar e configurar o Ocean Design System no seu projeto React.
Pré-requisitos
- Node.js 16.0 ou superior
- React 17.0
- TypeScript (recomendado)
Instalação
Pacote principal
npm install @useblu/ocean-react
yarn add @useblu/ocean-react
Este pacote inclui todos os componentes React do Ocean Design System.
Pacotes complementares (opcionais)
Design Tokens
npm install @useblu/ocean-tokens
Para usar os design tokens diretamente (cores, espaçamentos, tipografia):
import {
colorInterfaceLightPure,
fontSizeLg,
spacingMd,
} from '@useblu/ocean-tokens';
Ícones
npm install @useblu/ocean-icons-react
Para usar os ícones SVG do Ocean:
import { Star, Heart, Search } from '@useblu/ocean-icons-react';
function MyComponent() {
return (
<div>
<Star size={24} />
<Heart size={32} />
<Search size={16} />
</div>
);
}
CSS Base
npm install @useblu/ocean-core
Para usar apenas os estilos CSS do Ocean (sem componentes React):
@import '@useblu/ocean-core';
Configuração
1. Configurar fontes
⚠️ Importante: Configure as fontes antes de importar os estilos CSS.
Adicione a CDN das fontes no <head> do seu HTML:
<link
rel="stylesheet"
href="https://cdn-libscore.blu.com.br/assets/fonts/fonts.css"
/>
Diferentes frameworks:
Create React App / Vite - No public/index.html:
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Minha Aplicação</title>
<!-- Fontes do Ocean Design System -->
<link
rel="stylesheet"
href="https://cdn-libscore.blu.com.br/assets/fonts/fonts.css"
/>
</head>
<body>
<div id="root"></div>
</body>
</html>
Next.js - No pages/_document.js ou app/layout.tsx:
// pages/_document.js (Pages Router)
import { Html, Head, Main, NextScript } from 'next/document';
export default function Document() {
return (
<Html>
<Head>
<link
rel="stylesheet"
href="https://cdn-libscore.blu.com.br/assets/fonts/fonts.css"
/>
</Head>
<body>
<Main />
<NextScript />
</body>
</Html>
);
}
// app/layout.tsx (App Router)
export default function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
return (
<html lang="pt-BR">
<head>
<link
rel="stylesheet"
href="https://cdn-libscore.blu.com.br/assets/fonts/fonts.css"
/>
</head>
<body>{children}</body>
</html>
);
}
Alternativa via CSS - No arquivo CSS principal:
/* Primeira linha do seu arquivo CSS principal */
@import url('https://cdn-libscore.blu.com.br/assets/fonts/fonts.css');
2. Importar estilos
Importe os estilos CSS no seu arquivo principal (ex: src/index.css):
@import '@useblu/ocean-react/dist/ocean.css';
Uso básico
import React from 'react';
import { Button, Input, Badge } from '@useblu/ocean-react';
function App() {
return (
<div>
<Button variant="primary">Clique aqui</Button>
<Input label="Nome" placeholder="Digite seu nome" />
<Badge count={5} color="brand" />
</div>
);
}
export default App;
Tree Shaking (otimização)
Para reduzir o tamanho do bundle, importe apenas os componentes que você usa:
// ✅ Recomendado - importação específica
import { Button } from '@useblu/ocean-react/Button';
import { Input } from '@useblu/ocean-react/Input';
// ❌ Evite - importa toda a biblioteca
import { Button, Input } from '@useblu/ocean-react';
Verificar instalação
Para verificar se tudo está funcionando, crie um componente simples:
import React from 'react';
import { Button } from '@useblu/ocean-react';
function TestComponent() {
return (
<Button variant="primary" onClick={() => alert('Ocean funcionando!')}>
Testar Ocean
</Button>
);
}
export default TestComponent;
Problemas comuns
Fontes não aparecem / Typography com fonte errada
Verifique se você configurou a CDN das fontes:
<!-- Deve estar no <head> do HTML -->
<link
rel="stylesheet"
href="https://cdn-libscore.blu.com.br/assets/fonts/fonts.css"
/>
Ou se importou via CSS (deve ser a primeira linha):
@import url('https://cdn-libscore.blu.com.br/assets/fonts/fonts.css');
Estilos não aparecem
Verifique se você importou o CSS:
@import '@useblu/ocean-react/dist/ocean.css';
Erro de módulo não encontrado
Certifique-se de que instalou o pacote:
npm install @useblu/ocean-react
Problemas de tipagem TypeScript
As tipagens estão incluídas no pacote. Se houver problemas, reinicie o TypeScript server no seu editor.