@g4-educacao/g4-apollo-design-system v0.10.0
G4 Apollo Design System
Design System da organização G4 Educação, construído com React, Vite, Tailwind CSS, ShadCN, Radix UI e tokens CSS personalizados.
✨ Totalmente modular com suporte a Atomic Design e distribuição via NPM.
📦 Instalação
1. Via NPM (produção ou consumo externo)
pnpm add @g4-educacao/g4-apollo-design-system@develop
# ou
npm install @g4-educacao/g4-apollo-design-system@develop💡 Importando componentes e CSS
Após instalar o pacote, importe os componentes que desejar e o CSS global do Design System no seu projeto consumidor:
import {
Badge,
BreadcrumbBuilder,
Button,
Checkbox,
DropdownMenu,
DropdownMenuContent,
Icon,
SearchBar,
Switch,
TextArea,
} from '@g4-educacao/g4-apollo-design-system';
import '@g4-educacao/g4-apollo-design-system/css';2. Desenvolvimento local via npm link
Caso deseje contribuir com o design system e testá-lo em um projeto local:
# Dentro da pasta do design system
pnpm install
pnpm build
pnpm link
# Em outro projeto que irá consumir o design system
pnpm link @g4-educacao/g4-apollo-design-system⚠️ Após alterações no design system, sempre rode
pnpm buildnovamente para refletir as mudanças no projeto consumidor.
💡 Criação de novos componentes.
Componentes baseados no Shadcn
Para criar novos componentes baseados no shadcn, você pode rodar um dos scripts abaixo, de acordo com o local onde deseja que ele seja criado:
pnpm add:atom nome-do-componente
pnpm add:molecule nome-do-componente
pnpm add:organism nome-do-componente
pnpm add:template nome-do-componenteAo executar esse script, além de criar a pasta onde ficará o componente e o componente.tsx em si, o mesmo será exportado
no index.ts da pasta destino.
Por exemplo, ao rodar o comando:
pnpm add:molecule buttonserá criada a pasta src/components/molecules/buttom, o componente button.tsx baseado no shadcn e será adicionado
o seguinte trecho de código em src/components/molecules/index.ts:
export * from './button/button';Criação de componentes manualmente
Para criar componentes de forma manual ou que não faça parte do acervo do Shadcn , basta seguir os passos do processo dos scripts descritos acima:
1- Criar a pasta referente ao componente desejado, dentro da estrutura que fizer sentido (atoms, molecules, organisms ou templates).
2- Criar o componente.tsx na pasta criada anteriormente. Exemplo: src/components/molecules/button
3- Reexportar o componente dentro do index.tsda pasta criada.
Arquivos CSS
Em casos de componentes mais complexos onde faz sentido a criação de um arquivo css separado,
é preciso importar o CSS no na folha de estilo raiz do projeto src/index.css.
Por exemplo, na criação do arquivo button.css é preciso adicionar o seguinte trecho de código em src/index.css:
@import './components/molecules/button/button.css';🧪 Scripts úteis
🎨 Criar novo ícone SVG automaticamente
pnpm create:icon nome-do-iconeGera o componente no padrão e registra no iconsMap.ts.
Exemplo:
ao rodar o comando pnpm create:icon novo-icone, irá gerar o arquivo NovoIcone.tsx em src/componentes/atoms/icon/icons,
com a seguinte estrutura:
import { SvgWrapper } from '@/components/atoms/icon/svgWrapper';
import { IconProps } from '@/components/atoms/icon/iconsMap';
export const NovoIcone = ({ size, className, color = 'var(--color-icon-g400)' }: IconProps) => (
<SvgWrapper size={size} className={className}>
{/* Cole aqui o <path> do SVG */}
</SvgWrapper>
);Basta atualizar o arquivo com o <path> do svg e atualizar os imports do arquivo iconsMap.tsx para enxergar o novo componente.
Pronto, o Design System está pronto para enxergar o novo ícone.
📚 Desenvolvimento
pnpm dev: roda o Vite em modo devpnpm preview: preview da build
🧼 Qualidade e formatação
pnpm lint: analisa o projeto com ESLintpnpm format: formata todos os arquivos com Prettier
🧪 Testabilidade
Todos os componentes do Apollo Design System aceitam a propriedade data-testid para facilitar testes automatizados (como com Testing Library ou Cypress).
Como usar:
<Button data-testid="submit-button" label="Salvar" icon="check" />
<Icon data-testid="trash-icon" name="trash" />Caso o data-testid não seja informado, um identificador padrão será atribuído automaticamente (ex: icon-trash, button, etc.).
💡 Recomendamos fortemente sempre informar o
data-testidao usar os componentes, para garantir testes mais claros e consistentes.
🚀 Publicação
Para publicar versões com versionamento semântico e tags (develop, master, etc):
pnpm releaseEsse comando interativo pergunta:
- Tipo de versão (
patch,minor,major) - Tag a ser publicada (
develop,master, etc.)
📦 Pacote NPM
O G4 Apollo Design System está disponível no NPM:
@g4-educacao/g4-apollo-design-system no npmjs.com
Instalação
npm install @g4-educacao/g4-apollo-design-system
# ou
yarn add @g4-educacao/g4-apollo-design-system
# ou
pnpm add @g4-educacao/g4-apollo-design-system
---
## 🧠 Tecnologias usadas
- React 19
- TypeScript
- Tailwind CSS 4
- ShadCN + Radix UI
- Class Variance Authority (`cva`)
- CSS tokens com `@theme` e `:root`
- Storybook
- Vitest
---
## 📮 Contato
Projeto mantido por G4 Educação.
Dúvidas ou sugestões? Entre em contato com o time de tecnologia interno.10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago