@snksergio/design-system 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +260 -0
- package/dist-lib/chunks/app-shell-BNTvOETJ.mjs +2681 -0
- package/dist-lib/chunks/app-shell-BNTvOETJ.mjs.map +1 -0
- package/dist-lib/chunks/app-shell-CDy42aNI.mjs +2663 -0
- package/dist-lib/chunks/app-shell-CDy42aNI.mjs.map +1 -0
- package/dist-lib/chunks/app-shell-mocks-kWIVSzLs.mjs +208 -0
- package/dist-lib/chunks/app-shell-mocks-kWIVSzLs.mjs.map +1 -0
- package/dist-lib/chunks/app-shell-mocks-oO_IV3Gw.mjs +207 -0
- package/dist-lib/chunks/app-shell-mocks-oO_IV3Gw.mjs.map +1 -0
- package/dist-lib/chunks/badge-B_2Zt52o.mjs +797 -0
- package/dist-lib/chunks/badge-B_2Zt52o.mjs.map +1 -0
- package/dist-lib/chunks/badge-DKpXURa1.mjs +813 -0
- package/dist-lib/chunks/badge-DKpXURa1.mjs.map +1 -0
- package/dist-lib/chunks/chat-v2-mocks-BV9Wha_Z.mjs +192 -0
- package/dist-lib/chunks/chat-v2-mocks-BV9Wha_Z.mjs.map +1 -0
- package/dist-lib/chunks/chat-v2-mocks-DvZRkhmz.mjs +193 -0
- package/dist-lib/chunks/chat-v2-mocks-DvZRkhmz.mjs.map +1 -0
- package/dist-lib/chunks/chip-group-CsKBBHW2.mjs +796 -0
- package/dist-lib/chunks/chip-group-CsKBBHW2.mjs.map +1 -0
- package/dist-lib/chunks/chip-group-D3D0i72q.mjs +780 -0
- package/dist-lib/chunks/chip-group-D3D0i72q.mjs.map +1 -0
- package/dist-lib/chunks/clientes-showcase-mocks-BMfbNNJh.mjs +185 -0
- package/dist-lib/chunks/clientes-showcase-mocks-BMfbNNJh.mjs.map +1 -0
- package/dist-lib/chunks/clientes-showcase-mocks-Cq9u3nGZ.mjs +169 -0
- package/dist-lib/chunks/clientes-showcase-mocks-Cq9u3nGZ.mjs.map +1 -0
- package/dist-lib/chunks/input-374MpdBL.mjs +72 -0
- package/dist-lib/chunks/input-374MpdBL.mjs.map +1 -0
- package/dist-lib/chunks/input-DF4XAWmr.mjs +56 -0
- package/dist-lib/chunks/input-DF4XAWmr.mjs.map +1 -0
- package/dist-lib/chunks/page-header-Dw-3wqAG.mjs +75 -0
- package/dist-lib/chunks/page-header-Dw-3wqAG.mjs.map +1 -0
- package/dist-lib/chunks/page-header-mC1gGtOI.mjs +76 -0
- package/dist-lib/chunks/page-header-mC1gGtOI.mjs.map +1 -0
- package/dist-lib/chunks/panel-Ds15whqp.mjs +9717 -0
- package/dist-lib/chunks/panel-Ds15whqp.mjs.map +1 -0
- package/dist-lib/chunks/panel-bzNmFlEZ.mjs +9737 -0
- package/dist-lib/chunks/panel-bzNmFlEZ.mjs.map +1 -0
- package/dist-lib/chunks/useTheme-BUPLZBMs.mjs +66 -0
- package/dist-lib/chunks/useTheme-BUPLZBMs.mjs.map +1 -0
- package/dist-lib/chunks/useTheme-Dee4mo-A.mjs +65 -0
- package/dist-lib/chunks/useTheme-Dee4mo-A.mjs.map +1 -0
- package/dist-lib/index.cjs +1207 -0
- package/dist-lib/index.cjs.map +1 -0
- package/dist-lib/index.d.ts +2 -0
- package/dist-lib/index.mjs +1209 -0
- package/dist-lib/index.mjs.map +1 -0
- package/dist-lib/preview/chat.cjs +1120 -0
- package/dist-lib/preview/chat.cjs.map +1 -0
- package/dist-lib/preview/chat.d.ts +6 -0
- package/dist-lib/preview/chat.mjs +1120 -0
- package/dist-lib/preview/chat.mjs.map +1 -0
- package/dist-lib/preview/clientes.cjs +897 -0
- package/dist-lib/preview/clientes.cjs.map +1 -0
- package/dist-lib/preview/clientes.d.ts +6 -0
- package/dist-lib/preview/clientes.mjs +897 -0
- package/dist-lib/preview/clientes.mjs.map +1 -0
- package/dist-lib/preview/dashboard.cjs +733 -0
- package/dist-lib/preview/dashboard.cjs.map +1 -0
- package/dist-lib/preview/dashboard.d.ts +4 -0
- package/dist-lib/preview/dashboard.mjs +733 -0
- package/dist-lib/preview/dashboard.mjs.map +1 -0
- package/dist-lib/preview/mocks.cjs +15 -0
- package/dist-lib/preview/mocks.cjs.map +1 -0
- package/dist-lib/preview/mocks.d.ts +2 -0
- package/dist-lib/preview/mocks.mjs +15 -0
- package/dist-lib/preview/mocks.mjs.map +1 -0
- package/dist-lib/theme.css +668 -0
- package/dist-lib/tokens.cjs +915 -0
- package/dist-lib/tokens.cjs.map +1 -0
- package/dist-lib/tokens.d.ts +2 -0
- package/dist-lib/tokens.mjs +915 -0
- package/dist-lib/tokens.mjs.map +1 -0
- package/package.json +142 -0
package/README.md
ADDED
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
# iGreen Design System
|
|
2
|
+
|
|
3
|
+
Design system interno da iGreen para SaaS CRM, painéis admin e dashboards.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## O que é
|
|
8
|
+
|
|
9
|
+
Biblioteca de componentes, tokens e padrões usada pelas plataformas internas da iGreen — admin do CRM, dashboards operacionais, painéis de licenciamento e demais interfaces administrativas.
|
|
10
|
+
|
|
11
|
+
Stack canônica: **React 19 + TypeScript + Vite + Tailwind CSS v4 + Shadcn/ui + Radix UI**. Tailwind v4 e Shadcn são dependências diretas (não adapters opcionais) — todos os componentes são distribuídos com classes Tailwind nativas e padrões Shadcn.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Para quem é
|
|
16
|
+
|
|
17
|
+
- Telas administrativas (CRM, ERP-like, BPM)
|
|
18
|
+
- Dashboards operacionais e analíticos
|
|
19
|
+
- Painéis internos de licenciados e parceiros
|
|
20
|
+
- Qualquer aplicação iGreen que precise de consistência visual e padrão de interação
|
|
21
|
+
|
|
22
|
+
Não é um DS público nem genérico. É opinionado para SaaS densos de dados — tabelas grandes, formulários complexos, filtros, kanbans, modais multi-step.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Stack
|
|
27
|
+
|
|
28
|
+
| Camada | Tech |
|
|
29
|
+
|---|---|
|
|
30
|
+
| Framework | React 19 + Vite 6 |
|
|
31
|
+
| Linguagem | TypeScript 5.6 |
|
|
32
|
+
| Styling | Tailwind CSS v4 (@theme) |
|
|
33
|
+
| Variants | `tailwind-variants` via `@/utils/tv` |
|
|
34
|
+
| Primitives | Shadcn/ui + Radix UI |
|
|
35
|
+
| Ícones | Lucide Icons |
|
|
36
|
+
| Fonte | Geist |
|
|
37
|
+
| Dnd | `@dnd-kit` (Kanban) |
|
|
38
|
+
| Virtualização | `@tanstack/react-virtual` |
|
|
39
|
+
| Tabelas/charts | Recharts |
|
|
40
|
+
| Testes | Vitest |
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## O que tem dentro
|
|
45
|
+
|
|
46
|
+
- **Componentes iGreen** custom em `src/components/ui/` construídos com `tv()` — Button, Chip, Avatar, AppShell, Header, MenuSidebar, Modal, AlertModal, FloatingPanel, Panel, PageHeader, FormField, Kanban, Table, TableToolbar, FooterTable e mais
|
|
47
|
+
- **Componentes Shadcn** adaptados em `src/components/shadcn/` — Badge, Input, Select, Tabs, Card, Switch, Checkbox, RadioGroup, Slider, Progress, Dialog, DropdownMenu, Tooltip, Calendar e demais primitives do Radix
|
|
48
|
+
- **3 tiers de tokens** em `tokens/brands/default/` (primitives → semantic → component)
|
|
49
|
+
- **Pipeline de AI** com 4 agentes em `.claude/agents/` (Claude Code) espelhado em `.cursor/rules/`
|
|
50
|
+
- **Preview app navegável** com docs vivas em `npm run dev` — sempre reflete o estado atual do código
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Arquitetura de tokens
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
tokens/brands/default/
|
|
58
|
+
│
|
|
59
|
+
├── primitives/ Tier 1 — valores raw (API privada)
|
|
60
|
+
│ ├── color-palette Escalas OKLCH: brand, neutral, feedback, alpha
|
|
61
|
+
│ ├── scales Escala espacial: sp(n) = n × 4px
|
|
62
|
+
│ ├── fonts Escala tipográfica: BASE=16, ratio=1.25
|
|
63
|
+
│ └── motion Duração + easing
|
|
64
|
+
│
|
|
65
|
+
├── semantic/ Tier 2 — intenção (API pública via CSS vars)
|
|
66
|
+
│ ├── color-light bg.*, fg.*, border.*, ring.*, overlay.*
|
|
67
|
+
│ ├── color-dark Mesmo contrato, valores dark
|
|
68
|
+
│ ├── spacing space (sp-), gap (gp-), pad (pad-)
|
|
69
|
+
│ ├── sizing comp.* (form, icon, layout, container)
|
|
70
|
+
│ ├── shape radius.* + borderWidth
|
|
71
|
+
│ ├── elevation shadow.* (light/dark), opacity, blur
|
|
72
|
+
│ └── typography Presets compostos (rem + clamp): display, heading, title, label, paragraph, code
|
|
73
|
+
│
|
|
74
|
+
└── components/ Tier 2.5 — escalas componente-específicas
|
|
75
|
+
├── sizing form.*, icon.*, layout.*, container.*
|
|
76
|
+
└── spacing padCard.*, padPage.*
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**Componentes consomem semantic via CSS vars geradas pelo transform** — nunca importam primitives diretamente.
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Install in external apps
|
|
84
|
+
|
|
85
|
+
O DS é publicado como pacote NPM público (`@snksergio/design-system`). Apps externos consomem via:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
npm install @snksergio/design-system
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
**Pre-requisitos no app consumidor:**
|
|
92
|
+
- React 19+ (peer dep)
|
|
93
|
+
- Tailwind CSS v4 instalado e configurado
|
|
94
|
+
- Importar `@snksergio/design-system/theme.css` uma vez no entry CSS
|
|
95
|
+
|
|
96
|
+
**Uso:**
|
|
97
|
+
|
|
98
|
+
```tsx
|
|
99
|
+
// app.tsx — entry CSS
|
|
100
|
+
import "@snksergio/design-system/theme.css";
|
|
101
|
+
|
|
102
|
+
// componentes
|
|
103
|
+
import { Button, AppShell, DataTable } from "@snksergio/design-system";
|
|
104
|
+
|
|
105
|
+
// tokens (acesso programático)
|
|
106
|
+
import { colorLight, spacing } from "@snksergio/design-system/tokens";
|
|
107
|
+
|
|
108
|
+
// showcases prontas (com mocks)
|
|
109
|
+
import ChatV2 from "@snksergio/design-system/preview/chat";
|
|
110
|
+
|
|
111
|
+
// mocks reutilizáveis
|
|
112
|
+
import { APP_SHELL_CONTEXTS, chatMocks } from "@snksergio/design-system/preview/mocks";
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
**Modelo evergreen:** sem versionamento semver disciplinado. Apps usam `^0.1.0` no `package.json` e `npm update` puxa as últimas mudanças.
|
|
116
|
+
|
|
117
|
+
**Sub-paths disponíveis:** `.`, `/theme.css`, `/tokens`, `/preview/chat`, `/preview/clientes`, `/preview/dashboard`, `/preview/mocks`.
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Setup (desenvolvimento no DS)
|
|
122
|
+
|
|
123
|
+
Requisitos: Node 20+, npm 10+ (ou pnpm/yarn).
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
# 1. Clone
|
|
127
|
+
git clone https://github.com/snksergio/igreen-desingsystem-admin.git
|
|
128
|
+
cd igreen-desingsystem-admin
|
|
129
|
+
|
|
130
|
+
# 2. Install
|
|
131
|
+
npm install
|
|
132
|
+
|
|
133
|
+
# 3. Gerar o tema Tailwind v4
|
|
134
|
+
npm run tokens:tw4
|
|
135
|
+
|
|
136
|
+
# 4. Subir o preview
|
|
137
|
+
npm run dev
|
|
138
|
+
# → http://localhost:3100
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
`npm run dev` regenera o tema automaticamente antes do Vite.
|
|
142
|
+
|
|
143
|
+
### Scripts
|
|
144
|
+
|
|
145
|
+
| Comando | Função |
|
|
146
|
+
|---|---|
|
|
147
|
+
| `npm run dev` | Tokens + dev server (porta 3100) |
|
|
148
|
+
| `npm run build` | Tokens + tsc + vite build |
|
|
149
|
+
| `npm run preview` | Servir o build local |
|
|
150
|
+
| `npm run tokens:tw4` | Regenerar `tailwind-theme.css` |
|
|
151
|
+
| `npm run tokens:check` | `tsc --noEmit` nos tokens |
|
|
152
|
+
| `npm test` | Rodar Vitest |
|
|
153
|
+
| `npm run sync:agents` | Espelhar `.claude/agents/` em `.cursor/rules/` |
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## Anti-collision prefixes
|
|
158
|
+
|
|
159
|
+
Tokens DS usam prefixos para não colidir com utilities nativas do Tailwind:
|
|
160
|
+
|
|
161
|
+
| Token | Classe DS | Em vez de |
|
|
162
|
+
|---|---|---|
|
|
163
|
+
| gap | `gap-gp-md` | `gap-4` |
|
|
164
|
+
| spacing | `p-sp-md` | `p-4` |
|
|
165
|
+
| pad | `px-pad-lg` | `px-3` |
|
|
166
|
+
| radius | `rounded-radius-base` | `rounded-lg` |
|
|
167
|
+
| shadow | `shadow-sh-md` | `shadow-md` |
|
|
168
|
+
| form height | `min-h-form-lg` (40px) | `h-10` |
|
|
169
|
+
| icon | `size-icon-md` (20px) | `size-5` |
|
|
170
|
+
| container | `max-w-container-md` | `max-w-md` |
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## AI Pipeline
|
|
175
|
+
|
|
176
|
+
Pipeline de 4 agentes configurado em `.claude/agents/` (Claude Code) e espelhado em `.cursor/rules/` (Cursor).
|
|
177
|
+
|
|
178
|
+
| Agente | Responsabilidade | Modelo |
|
|
179
|
+
|---|---|---|
|
|
180
|
+
| `orchestrator` | Classifica a tarefa e delega | Sonnet |
|
|
181
|
+
| `ds-designer` | Especifica tokens e componentes (com gate) | Sonnet |
|
|
182
|
+
| `ds-dev` | Implementa a spec aprovada | Opus |
|
|
183
|
+
| `ds-reviewer` | Valida antes do merge (regression sweep + critique genuína) | Sonnet |
|
|
184
|
+
|
|
185
|
+
**Slash commands disponíveis:** `/ds-add-token`, `/ds-create-component`, `/ds-create-composite`, `/ds-add-shadcn`, `/ds-extract-figma`
|
|
186
|
+
|
|
187
|
+
A infraestrutura inclui:
|
|
188
|
+
- **Skills** atômicas por agente (`.claude/skills/`)
|
|
189
|
+
- **Hooks** PreToolUse/PostToolUse (`format-on-save`, `block-rm-rf`, `block-sensitive-edit`)
|
|
190
|
+
- **Output style** terse aplicado a toda sessão
|
|
191
|
+
- **MCP servers** (Figma, filesystem, chrome-devtools)
|
|
192
|
+
- **Memory system 4 camadas** (user, project, audit log, lessons system)
|
|
193
|
+
|
|
194
|
+
Detalhes no preview app → seções **Agents** e **Pipeline Infra**.
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## Component styles
|
|
199
|
+
|
|
200
|
+
Componentes iGreen seguem o padrão `tv()` do `tailwind-variants`. Cada componente tem 5 arquivos:
|
|
201
|
+
|
|
202
|
+
```
|
|
203
|
+
src/components/ui/Nome/
|
|
204
|
+
├── nome.tsx # markup — zero hardcode
|
|
205
|
+
├── nome.styles.ts # tv() — fonte de verdade visual
|
|
206
|
+
├── nome.types.ts # VariantProps
|
|
207
|
+
├── index.ts # barrel export
|
|
208
|
+
└── USAGE.md # documentação por componente (atalho IA)
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
Mudar o visual = mudar **só** o `.styles.ts`. Componentes Shadcn ficam em `src/components/shadcn/` com a lógica Radix preservada e classes substituídas por tokens DS.
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## Estrutura do repositório
|
|
216
|
+
|
|
217
|
+
```
|
|
218
|
+
├── tokens/ Tokens + transforms
|
|
219
|
+
├── src/
|
|
220
|
+
│ ├── components/ui/ Componentes iGreen (tv)
|
|
221
|
+
│ ├── components/shadcn/ Componentes Shadcn adaptados
|
|
222
|
+
│ ├── styles/theme/ CSS gerado pelo transform
|
|
223
|
+
│ ├── preview/ Doc pages (app navegável)
|
|
224
|
+
│ └── utils/ tv(), cn()
|
|
225
|
+
├── .claude/ Pipeline orchestration (agents, skills, hooks, rules)
|
|
226
|
+
├── .ai/ Contexto técnico + audit log + lessons
|
|
227
|
+
├── memory/ Memória project-level
|
|
228
|
+
├── CLAUDE.md Regras carregadas em toda sessão Claude
|
|
229
|
+
└── README-PIPELINE-WORKFLOW.md Guia humano detalhado do pipeline
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## Acessibilidade
|
|
235
|
+
|
|
236
|
+
- WCAG 2.5.5 — touch targets ≥ 44px (`min-h-form-xl`)
|
|
237
|
+
- Focus rings visíveis com `ring-ring-{color}` (cor por variant, nunca no base)
|
|
238
|
+
- Tokens dark com hierarquia crescente e shadows/rings amplificados
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
## Documentação completa
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
npm run dev
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
A preview app cobre:
|
|
249
|
+
- **Get Started** — Introduction, Structure, Installation, Transform Tokens
|
|
250
|
+
- **Agents** — Overview, Pipeline (estrutural + simulador), 4 agentes individuais
|
|
251
|
+
- **Pipeline Infra** — Skills, Commands, Hooks, Output Styles, MCP Servers, Memory System
|
|
252
|
+
- **Foundations** — Tokens Overview, Color, Typography, Spacing, Sizing, Shape, Elevation, Icons
|
|
253
|
+
- **Components** — docs com exemplos vivos para cada componente
|
|
254
|
+
- **Templates & Examples** — AppShell, Showcases, ChatV2, ClientesShowcase, Dashboard
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## Licença
|
|
259
|
+
|
|
260
|
+
Uso interno iGreen. Sem distribuição pública.
|