@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.
Files changed (73) hide show
  1. package/README.md +260 -0
  2. package/dist-lib/chunks/app-shell-BNTvOETJ.mjs +2681 -0
  3. package/dist-lib/chunks/app-shell-BNTvOETJ.mjs.map +1 -0
  4. package/dist-lib/chunks/app-shell-CDy42aNI.mjs +2663 -0
  5. package/dist-lib/chunks/app-shell-CDy42aNI.mjs.map +1 -0
  6. package/dist-lib/chunks/app-shell-mocks-kWIVSzLs.mjs +208 -0
  7. package/dist-lib/chunks/app-shell-mocks-kWIVSzLs.mjs.map +1 -0
  8. package/dist-lib/chunks/app-shell-mocks-oO_IV3Gw.mjs +207 -0
  9. package/dist-lib/chunks/app-shell-mocks-oO_IV3Gw.mjs.map +1 -0
  10. package/dist-lib/chunks/badge-B_2Zt52o.mjs +797 -0
  11. package/dist-lib/chunks/badge-B_2Zt52o.mjs.map +1 -0
  12. package/dist-lib/chunks/badge-DKpXURa1.mjs +813 -0
  13. package/dist-lib/chunks/badge-DKpXURa1.mjs.map +1 -0
  14. package/dist-lib/chunks/chat-v2-mocks-BV9Wha_Z.mjs +192 -0
  15. package/dist-lib/chunks/chat-v2-mocks-BV9Wha_Z.mjs.map +1 -0
  16. package/dist-lib/chunks/chat-v2-mocks-DvZRkhmz.mjs +193 -0
  17. package/dist-lib/chunks/chat-v2-mocks-DvZRkhmz.mjs.map +1 -0
  18. package/dist-lib/chunks/chip-group-CsKBBHW2.mjs +796 -0
  19. package/dist-lib/chunks/chip-group-CsKBBHW2.mjs.map +1 -0
  20. package/dist-lib/chunks/chip-group-D3D0i72q.mjs +780 -0
  21. package/dist-lib/chunks/chip-group-D3D0i72q.mjs.map +1 -0
  22. package/dist-lib/chunks/clientes-showcase-mocks-BMfbNNJh.mjs +185 -0
  23. package/dist-lib/chunks/clientes-showcase-mocks-BMfbNNJh.mjs.map +1 -0
  24. package/dist-lib/chunks/clientes-showcase-mocks-Cq9u3nGZ.mjs +169 -0
  25. package/dist-lib/chunks/clientes-showcase-mocks-Cq9u3nGZ.mjs.map +1 -0
  26. package/dist-lib/chunks/input-374MpdBL.mjs +72 -0
  27. package/dist-lib/chunks/input-374MpdBL.mjs.map +1 -0
  28. package/dist-lib/chunks/input-DF4XAWmr.mjs +56 -0
  29. package/dist-lib/chunks/input-DF4XAWmr.mjs.map +1 -0
  30. package/dist-lib/chunks/page-header-Dw-3wqAG.mjs +75 -0
  31. package/dist-lib/chunks/page-header-Dw-3wqAG.mjs.map +1 -0
  32. package/dist-lib/chunks/page-header-mC1gGtOI.mjs +76 -0
  33. package/dist-lib/chunks/page-header-mC1gGtOI.mjs.map +1 -0
  34. package/dist-lib/chunks/panel-Ds15whqp.mjs +9717 -0
  35. package/dist-lib/chunks/panel-Ds15whqp.mjs.map +1 -0
  36. package/dist-lib/chunks/panel-bzNmFlEZ.mjs +9737 -0
  37. package/dist-lib/chunks/panel-bzNmFlEZ.mjs.map +1 -0
  38. package/dist-lib/chunks/useTheme-BUPLZBMs.mjs +66 -0
  39. package/dist-lib/chunks/useTheme-BUPLZBMs.mjs.map +1 -0
  40. package/dist-lib/chunks/useTheme-Dee4mo-A.mjs +65 -0
  41. package/dist-lib/chunks/useTheme-Dee4mo-A.mjs.map +1 -0
  42. package/dist-lib/index.cjs +1207 -0
  43. package/dist-lib/index.cjs.map +1 -0
  44. package/dist-lib/index.d.ts +2 -0
  45. package/dist-lib/index.mjs +1209 -0
  46. package/dist-lib/index.mjs.map +1 -0
  47. package/dist-lib/preview/chat.cjs +1120 -0
  48. package/dist-lib/preview/chat.cjs.map +1 -0
  49. package/dist-lib/preview/chat.d.ts +6 -0
  50. package/dist-lib/preview/chat.mjs +1120 -0
  51. package/dist-lib/preview/chat.mjs.map +1 -0
  52. package/dist-lib/preview/clientes.cjs +897 -0
  53. package/dist-lib/preview/clientes.cjs.map +1 -0
  54. package/dist-lib/preview/clientes.d.ts +6 -0
  55. package/dist-lib/preview/clientes.mjs +897 -0
  56. package/dist-lib/preview/clientes.mjs.map +1 -0
  57. package/dist-lib/preview/dashboard.cjs +733 -0
  58. package/dist-lib/preview/dashboard.cjs.map +1 -0
  59. package/dist-lib/preview/dashboard.d.ts +4 -0
  60. package/dist-lib/preview/dashboard.mjs +733 -0
  61. package/dist-lib/preview/dashboard.mjs.map +1 -0
  62. package/dist-lib/preview/mocks.cjs +15 -0
  63. package/dist-lib/preview/mocks.cjs.map +1 -0
  64. package/dist-lib/preview/mocks.d.ts +2 -0
  65. package/dist-lib/preview/mocks.mjs +15 -0
  66. package/dist-lib/preview/mocks.mjs.map +1 -0
  67. package/dist-lib/theme.css +668 -0
  68. package/dist-lib/tokens.cjs +915 -0
  69. package/dist-lib/tokens.cjs.map +1 -0
  70. package/dist-lib/tokens.d.ts +2 -0
  71. package/dist-lib/tokens.mjs +915 -0
  72. package/dist-lib/tokens.mjs.map +1 -0
  73. 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.