@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 +89 -0
- package/dist/index.d.ts +676 -0
- package/dist/index.js +1594 -0
- package/dist/theme.css +538 -0
- package/package.json +89 -0
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.
|