@assembleo/ui 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 ADDED
@@ -0,0 +1,89 @@
1
+ # assembleo-ui
2
+
3
+ O design system do Assembleo: tokens, componentes e a camada expressiva que dão
4
+ cara ao produto. Publicado como [`@assembleo/ui`](https://www.npmjs.com/package/@assembleo/ui)
5
+ no npm, consumido pelo [`assembleo-web`](https://github.com/The-Fant-Company/assembleo-web).
6
+
7
+ A ideia visual em uma linha: **a vida em comum de um condomínio** — superfícies
8
+ claras e calmas, um azul cívico para a decisão, e uma paleta expressiva
9
+ (telhado, jardim, luz de janela) reservada aos objetos do mundo do condomínio:
10
+ prédios, crachás, livretos. Os princípios (Clareza, Deferência, Vida) estão em
11
+ [`src/docs/introducao.mdx`](src/docs/introducao.mdx) e as decisões que
12
+ valem para os quatro repos, nos ADRs 0008–0010 do repo
13
+ [`assembleo`](https://github.com/The-Fant-Company/assembleo).
14
+
15
+ ## Consumir
16
+
17
+ ```bash
18
+ pnpm add @assembleo/ui
19
+ ```
20
+
21
+ ```css
22
+ /* app.css — a ordem importa */
23
+ @import 'tailwindcss';
24
+ @import '@assembleo/ui/theme.css';
25
+ @source '../node_modules/@assembleo/ui/dist';
26
+ ```
27
+
28
+ O `@source` é o que faz o Tailwind do app enxergar as classes usadas pelos
29
+ componentes do package; sem ele, componente chega sem estilo. O caminho é
30
+ relativo ao arquivo CSS.
31
+
32
+ ```tsx
33
+ import { Button, Field, Input } from '@assembleo/ui'
34
+ ```
35
+
36
+ ### Tema
37
+
38
+ Sem configurar nada, claro/escuro segue o aparelho. Para dar a escolha ao
39
+ usuário, o sistema traz o gerenciador pronto:
40
+
41
+ ```tsx
42
+ // main.tsx — antes do createRoot: aplica a escolha guardada sem flash
43
+ import { initTheme } from '@assembleo/ui'
44
+ initTheme()
45
+ ```
46
+
47
+ ```tsx
48
+ // no app: o provider expõe useTheme(); o ThemeToggle é o seletor pronto
49
+ <ThemeProvider>
50
+ <App />
51
+ </ThemeProvider>
52
+ ```
53
+
54
+ A escolha vira `data-theme` no `<html>` (o mesmo mecanismo dos tokens) e
55
+ persiste em localStorage; "Sistema" apaga a escolha e devolve o controle ao
56
+ aparelho.
57
+
58
+ ## Desenvolver
59
+
60
+ ```bash
61
+ pnpm install
62
+ pnpm storybook # a documentação viva, em http://localhost:6006
63
+ pnpm test # vitest — comportamento, acessibilidade e contraste AA
64
+ pnpm typecheck
65
+ pnpm lint
66
+ pnpm build # tsup → dist/ + theme.css
67
+ ```
68
+
69
+ O checklist para criar ou mudar componente está em
70
+ [`docs/contribuindo.md`](docs/contribuindo.md); o piso de acessibilidade, em
71
+ [`docs/acessibilidade.md`](docs/acessibilidade.md).
72
+
73
+ ## Estrutura
74
+
75
+ ```
76
+ src/
77
+ tokens/ theme.css — cor, tipo, raio, elevação, movimento (e o teste
78
+ que verifica contraste AA e a paridade claro/escuro)
79
+ lib/ cn() e utilidades transversais
80
+ components/ as primitivas: botão, campo, diálogo, lista…
81
+ expressive/ a camada lúdica: prédio, crachá, livreto
82
+ docs/ páginas de fundação do Storybook
83
+ ```
84
+
85
+ ## Release
86
+
87
+ Igual ao contracts (ADR 0002/0008): changeset por mudança visível
88
+ (`pnpm changeset`), e o CI da main versiona e publica sozinho. Sem changeset
89
+ pendente não há release — e PR sem changeset é mudança que não chega a ninguém.