Instalar o Design System numa aplicação Next.js, configurar o Tailwind v4 com os tokens, ativar o dark mode e personalizar o tema.
Num projeto gerado pelo Studio, tudo isto já vem configurado. Esta página é para quando adicionas o Design System a uma aplicação existente, ou queres perceber e personalizar a configuração.
Requisitos
| Versão | |
|---|---|
| Node.js | 22+ |
| React | ^19.2 |
| Next.js | ^15.5 |
| Tailwind CSS | v4 |
Instalar
pnpm add @igrp/igrp-framework-react-design-systemO pacote vive no registry da NOSi — ver a nota sobre o --registry em CLI.
| Entrada | Conteúdo |
|---|---|
@igrp/igrp-framework-react-design-system | Componentes, hooks e utilitários |
…/tokens | Variáveis CSS do tema (tokens) |
…/cn | O utilitário cn() para juntar classes |
…/rich-text | Editor e visualizador de texto rico (entrada separada, mais pesada) |
Configurar o CSS
O Design System não traz CSS compilado: a tua aplicação compila o Tailwind e lê as classes usadas pelos componentes. No CSS principal (por exemplo src/styles/globals.css):
@import "tailwindcss";
@import "tw-animate-css";
@custom-variant dark (&:is(.dark *));
/* lê a tua aplicação e o Design System */
@source "../**/*.{ts,tsx,js,jsx}";
@source "../../node_modules/@igrp/igrp-framework-react-design-system/dist/**/*.{js,jsx,ts,tsx,mjs,cjs}";
/* tokens do tema */
@import "@igrp/igrp-framework-react-design-system/tokens";
/* opcional: os teus overrides */
@import "./themes.css";Não importes styles.css
Versões antigas importavam @igrp/…/styles.css. Remove esse import: causa conflitos de cascata e utilitários em falta. Bastam o @source e os tokens.
Usar os componentes
'use client';
import { IGRPButton, IGRPCard, IGRPInputText, useIGRPToast } from '@igrp/igrp-framework-react-design-system';Os componentes IGRP* são componentes de cliente — o ficheiro que os importa precisa de 'use client'.
Tokens
As cores, raios e estados vêm de variáveis CSS definidas em :root e .dark. Usa sempre as classes semânticas (bg-primary, text-muted-foreground, border-border…), nunca cores Tailwind cruas — é isso que faz o dark mode e os temas funcionarem.
| Token | Para quê |
|---|---|
--background / --foreground | Fundo e texto da página |
--primary / --primary-foreground | Ações principais |
--secondary, --muted, --accent (+ -foreground) | Elementos secundários, fundos discretos, hover |
--destructive | Ações destrutivas |
--success, --warning, --info, --highlight (+ -foreground) | Estados e realces |
--border, --input, --ring | Bordas, campos, foco |
--card, --popover (+ -foreground) | Superfícies |
--radius | Raio base dos cantos |
--sidebar-* | Barra lateral |
--chart-1 … --chart-8 | Cores dos gráficos |
--process-completed, --process-active | Estados dos passos de processo |
Dark mode
O dark mode é a classe .dark num elemento pai (normalmente <html>). Com next-themes:
import { ThemeProvider } from 'next-themes';
<ThemeProvider attribute="class" defaultTheme="system">
{children}
</ThemeProvider>Para a barra do browser em mobile acompanhar o tema, usa useIGRPMetaColor() no layout.
Personalizar o tema
Sobrepõe os tokens num ficheiro teu, carregado depois do import dos tokens:
:root {
--primary: oklch(0.62 0.13 230);
--primary-foreground: oklch(0.985 0 0);
}
.dark {
--primary: oklch(0.72 0.12 230);
--primary-foreground: oklch(0.205 0 0);
}
/* variantes de tema ativáveis por classe */
.theme-green {
--primary: var(--color-green-600);
}Componentes descontinuados
| Descontinuado | Usa |
|---|---|
IGRPCalendar | IGRPCalendarSingle, IGRPCalendarRange ou IGRPCalendarMultiple |
IGRPDatePicker | IGRPDatePickerSingle, IGRPDatePickerRange ou IGRPDatePickerMultiple |
Última atualização:
