Installation
Adicione o Gremorie ao seu projeto Angular ou React em quatro passos.
O Gremorie é distribuído de duas formas — escolha a que se encaixa no seu projeto:
- Como pacotes npm (versionados) —
npm i @gremorie/react. O código vive emnode_modulese você recebe atualizações comnpm update. Melhor quando você quer uma fonte da verdade compartilhada entre projetos. - Como source via o registry (copy-paste) —
npx gremorie add <name>. Cada primitive vira um arquivo que você possui e pode editar. Melhor quando você quer controle total sobre o código.
Instalar como pacote (npm)
O começo mais rápido: instale a edição completa em um pacote e importe qualquer primitive. O tree-shaking mantém só o que você usa no bundle final.
npm i @gremorie/reactnpm i @gremorie/angularDepois importe os componentes diretamente do pacote:
import { Button, Card, CardHeader, CardTitle } from '@gremorie/react';
export function Example() {
return (
<Card>
<CardHeader>
<CardTitle>Hello, Gremorie</CardTitle>
</CardHeader>
<Button>Ship it</Button>
</Card>
);
}import { Component } from '@angular/core';
import { Badge } from '@gremorie/angular';
@Component({
standalone: true,
imports: [Badge],
template: `<gr-badge>New</gr-badge>`,
})
export class Example {}Configure os estilos
As duas edições lidam com estilização de forma diferente no caminho npm:
- React entrega uma stylesheet pré-compilada com os design tokens e
os estilos de cada componente em um único arquivo. Importe uma vez e você não precisa
de Tailwind, de um import
@theme, nem de qualquer config@source. - Angular emite classes utilitárias do Tailwind e não entrega nenhum CSS
compilado, então o caminho npm requer Tailwind CSS v4 no seu projeto. Você
importa o theme dos tokens e aponta o Tailwind para os pacotes
@gremorieemnode_modulescom uma linha@source, para que os utilitários deles sejam compilados no seu CSS.
// app/layout.tsx (Next.js) or src/main.tsx (Vite) - once, in your app entry
import '@gremorie/react/styles.css';/* src/styles.css - requires Tailwind CSS v4 */
@import 'tailwindcss';
@import '@gremorie/tokens/theme.css';
/* Tailwind v4 ignores node_modules by default; this line makes it scan the
Gremorie packages so their utility classes end up in your compiled CSS. */
@source '../node_modules/@gremorie';Next.js App Router: os componentes do Gremorie são interativos (eles usam
React context e state), então renderize-os a partir de um Client Component
— adicione "use client" no topo do arquivo (ou de um pai) que os usa.
@gremorie/react empacota todas as categorias de componente (forms,
display, overlays, feedback, navigation, containers, data, AI).
@gremorie/angular atualmente empacota seis categorias (core, AI,
display, containers, data e feedback); forms, overlays, navigation e artifacts
são entregues como pacotes @gremorie/ng-* separados. Artifacts
(Artifact, CodeBlock, WebPreview) são um add-on opcional — instale
@gremorie/rx-artifacts quando você precisar deles. Prefere uma instalação
menor? Adicione uma única categoria em vez disso: @gremorie/rx-forms,
@gremorie/rx-display, @gremorie/rx-ai, e assim por diante — cada categoria
React entrega o mesmo @gremorie/rx-core/styles/globals.css pré-compilado
para os seus tokens.
Esse é o setup npm inteiro: instale, configure os estilos, use os componentes. O fluxo da CLI abaixo é a alternativa copy-paste em que você possui o source e o compila com o seu próprio Tailwind.
Copy-paste via a CLI (registry)
Prefere possuir o source? Instale a CLI e puxe primitives para o seu projeto sob demanda — cada um vira um arquivo que você pode editar livremente.
Pré-requisitos
- Node.js 20+ para o runtime da CLI
- Tailwind CSS v4 — necessário para o fluxo copy-paste/registry (o source que você possui é compilado pelo seu Tailwind), e para o caminho npm do Angular. O caminho npm do React entrega CSS pré-compilado e não requer Tailwind.
- Um projeto Angular 21+ ou um projeto React 19 (Next.js, Vite, Remix)
Ambas as edições são publicadas: React (@gremorie/react,
@gremorie/rx-*) e Angular (@gremorie/angular, @gremorie/ng-*). Elas
compartilham o mesmo schema de registry, tokens e corpus, então tudo o que
você aprende aqui vale para as duas. A cobertura do registry difere hoje: o
registry React cobre o catálogo completo, enquanto o registry Angular ainda
está crescendo. Rode npx gremorie list para ver o que está disponível por
edição.
Passos
Rode a CLI no seu projeto
A CLI lê o framework do seu projeto a partir do package.json e escreve
primitives para um caminho default sensato. Nenhuma instalação global necessária.
npx gremorie@latest initpnpm dlx gremorie@latest inityarn dlx gremorie@latest initbunx gremorie@latest initO init detecta o seu gerenciador de pacotes, instala as dependências core
(os pacotes de tokens e de core do framework mais class-variance-authority,
clsx e tailwind-merge), adiciona o import do theme à sua stylesheet
global, e imprime os próximos passos.
Importe os tokens
Os tokens do Gremorie cascateiam por três camadas (primitive, semantic, chart). A camada semantic é a única que os componentes referenciam diretamente, então ela deve carregar antes de qualquer outra coisa.
/* src/styles.css */
@import 'tailwindcss';
@import '@gremorie/tokens/theme.css';/* app/globals.css */
@import 'tailwindcss';
@import '@gremorie/rx-core/styles/globals.css';O import declara --primary, --foreground, --background e a
paleta de chart como variáveis CSS. Trocar o data-theme no <html>
atualiza todo componente no lugar.
Adicione seu primeiro primitive
Escolha qualquer coisa do catálogo de Components.
Button é o menor exemplo útil.
npx gremorie@latest add ng-buttonnpx gremorie@latest add rx-buttonA CLI escreve o source para o caminho de destino do item
(src/components/gremorie/<category>/<name>/ para React,
src/app/gremorie/<name>/ para Angular) e lista os peer packages que você
precisa instalar.
Use
import { Component } from '@angular/core';
import { Button } from './gremorie/button/button';
@Component({
standalone: true,
imports: [Button],
template: `<ai-button (pressedChange)="onClick()">Ship it</ai-button>`,
})
export class MyComponent {
onClick() {
console.log('Hello, Gremorie.');
}
}import { Button } from '@/components/gremorie/forms/button/button';
export function MyComponent() {
return (
<Button onClick={() => console.log('Hello, Gremorie.')}>Ship it</Button>
);
}Verificação
Se o button renderizar estilizado (arredondado, com a cor primary da marca na variant default), a instalação está funcionando de ponta a ponta: CLI -> source -> tokens -> render.
Para o próximo passo, veja Your first component para um tutorial completo de cinco minutos que conecta três primitives em uma chat surface.