@umain-works/ui 0.0.1 → 0.0.2
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 +47 -166
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,202 +1,83 @@
|
|
|
1
|
-
# @umain
|
|
1
|
+
# @umain-works/ui
|
|
2
2
|
|
|
3
|
-
Biblioteca de componentes React
|
|
3
|
+
Biblioteca de componentes React do **Umain Design System**. Publicada no [npmjs.com](https://www.npmjs.com/package/@umain-works/ui) como pacote público.
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
##
|
|
8
|
-
|
|
9
|
-
O Storybook é o ambiente de desenvolvimento principal — desenvolves e vês os componentes em isolamento, sem precisar de levantar nenhum projecto React.
|
|
7
|
+
## Instalação
|
|
10
8
|
|
|
11
9
|
```bash
|
|
12
|
-
npm
|
|
13
|
-
# → http://localhost:6006
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
Só precisas de instalar o `@umain.works/ui` num projecto quando quiseres testar a **integração real** numa aplicação.
|
|
17
|
-
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
## Como funciona (GitLab + npmjs.com)
|
|
21
|
-
|
|
22
|
-
São duas coisas independentes:
|
|
23
|
-
|
|
10
|
+
npm install @umain-works/ui
|
|
24
11
|
```
|
|
25
|
-
GITLAB (código-fonte) → git push
|
|
26
|
-
src/, .storybook/, etc. para a equipa trabalhar
|
|
27
|
-
|
|
28
|
-
NPMJS.COM (pacote compilado) ← npm publish
|
|
29
|
-
dist/index.js só o dist/ é publicado
|
|
30
|
-
dist/index.mjs (o código-fonte não aparece no npm)
|
|
31
|
-
dist/index.d.ts
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
- O **GitLab** tem o código-fonte — commits, pull requests, Storybook, tudo.
|
|
35
|
-
- O **npmjs.com** tem apenas o resultado compilado (`dist/`) para os projectos instalarem.
|
|
36
|
-
|
|
37
|
-
---
|
|
38
|
-
|
|
39
|
-
## Setup inicial
|
|
40
|
-
|
|
41
|
-
```bash
|
|
42
|
-
# Clonar o repo
|
|
43
|
-
git clone https://gitlab.umain.works/umain/tools/design-system-umain/design-system.git
|
|
44
|
-
cd design-system
|
|
45
12
|
|
|
46
|
-
|
|
47
|
-
npm install
|
|
48
|
-
|
|
49
|
-
# Iniciar Storybook (ambiente de desenvolvimento)
|
|
50
|
-
npm run storybook
|
|
51
|
-
|
|
52
|
-
# Build do pacote
|
|
53
|
-
npm run build
|
|
54
|
-
|
|
55
|
-
# Build em modo watch (útil ao desenvolver)
|
|
56
|
-
npm run dev
|
|
57
|
-
```
|
|
13
|
+
> **Requisitos:** React 18 ou superior.
|
|
58
14
|
|
|
59
15
|
---
|
|
60
16
|
|
|
61
|
-
##
|
|
62
|
-
|
|
63
|
-
### Pré-requisitos (apenas 1 vez)
|
|
64
|
-
|
|
65
|
-
1. **Criar conta** em [npmjs.com](https://npmjs.com) se não tens
|
|
66
|
-
2. **Organização `umain.works`** já criada em npmjs.com
|
|
67
|
-
3. **Gerar um Access Token com bypass 2FA:**
|
|
68
|
-
`npmjs.com` → Avatar → **Access Tokens** → **Generate New Token** → **Granular Access Token**
|
|
69
|
-
- Packages and scopes: **Read and write**
|
|
70
|
-
- Activa **"Bypass 2FA"** ✅
|
|
71
|
-
Copia o token (começa com `npm_...`)
|
|
72
|
-
|
|
73
|
-
### Publicar
|
|
74
|
-
|
|
75
|
-
```bash
|
|
76
|
-
# Exportar o token como variável de ambiente
|
|
77
|
-
export NPM_TOKEN=npm_xxxxxxxxxxxxxxxxxxxx
|
|
78
|
-
|
|
79
|
-
# Publicar (o build corre automaticamente antes)
|
|
80
|
-
npm publish
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
### Verificar
|
|
17
|
+
## Utilização
|
|
84
18
|
|
|
85
|
-
|
|
86
|
-
**`https://www.npmjs.com/package/@umain.works/ui`**
|
|
87
|
-
|
|
88
|
-
### Apagar (para demos)
|
|
89
|
-
|
|
90
|
-
```bash
|
|
91
|
-
# Podes apagar nas primeiras 72 horas sem restrições
|
|
92
|
-
npm unpublish @umain.works/ui@0.0.1
|
|
93
|
-
|
|
94
|
-
# Ou apagar o pacote inteiro
|
|
95
|
-
npm unpublish @umain.works/ui --force
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
---
|
|
99
|
-
|
|
100
|
-
## Instalar num projecto consumidor
|
|
101
|
-
|
|
102
|
-
Como é um pacote público no npmjs.com, **não precisas de nenhum `.npmrc` especial** — funciona como qualquer outro pacote:
|
|
103
|
-
|
|
104
|
-
```bash
|
|
105
|
-
npm install @umain.works/ui
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
### Usar nos componentes
|
|
19
|
+
### Button
|
|
109
20
|
|
|
110
21
|
```tsx
|
|
111
|
-
import { Button } from '@umain
|
|
22
|
+
import { Button } from '@umain-works/ui';
|
|
112
23
|
|
|
113
|
-
export function
|
|
24
|
+
export function Example() {
|
|
114
25
|
return (
|
|
115
|
-
<Button color="Primary" size="base" onClick={
|
|
26
|
+
<Button color="Primary" size="base" onClick={() => console.log('clicado')}>
|
|
116
27
|
Entrar
|
|
117
28
|
</Button>
|
|
118
29
|
);
|
|
119
30
|
}
|
|
120
31
|
```
|
|
121
32
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
## Componentes disponíveis
|
|
33
|
+
#### Props
|
|
125
34
|
|
|
126
|
-
|
|
|
127
|
-
|
|
128
|
-
| `
|
|
35
|
+
| Prop | Tipo | Default | Descrição |
|
|
36
|
+
|---|---|---|---|
|
|
37
|
+
| `color` | `ButtonColor` | `"Primary"` | Variante de cor do botão |
|
|
38
|
+
| `size` | `ButtonSize` | `"base"` | Tamanho do botão |
|
|
39
|
+
| `loading` | `boolean` | `false` | Mostra spinner e desactiva o botão |
|
|
40
|
+
| `loadingIcon` | `ReactNode` | — | Ícone personalizado para o estado de loading |
|
|
41
|
+
| `disabled` | `boolean` | — | Desactiva o botão |
|
|
42
|
+
| `iconOnly` | `boolean` | `false` | Modo icon-only (padding quadrado, sem gap) |
|
|
43
|
+
| `responsiveSize` | `boolean` | `false` | Padding responsivo automático |
|
|
44
|
+
| `active` | `boolean` | `false` | Estado activo (ex: botão toggle pressionado) |
|
|
45
|
+
| `squarePadding` | `boolean` | `false` | Padding igual em todos os lados |
|
|
129
46
|
|
|
130
|
-
|
|
47
|
+
Aceita também todos os atributos nativos de `<button>` (`onClick`, `type`, `aria-*`, etc.).
|
|
131
48
|
|
|
132
|
-
|
|
49
|
+
#### Variantes de cor (`ButtonColor`)
|
|
133
50
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
│ └── index.ts ← export central do pacote
|
|
144
|
-
├── .storybook/
|
|
145
|
-
│ ├── main.ts ← config Storybook (Vite + React)
|
|
146
|
-
│ └── preview.ts ← globals e decorators
|
|
147
|
-
├── dist/ ← gerado pelo build (não commitar)
|
|
148
|
-
├── .npmrc ← token do npmjs.com (não commitar o token!)
|
|
149
|
-
├── package.json
|
|
150
|
-
├── tsconfig.json
|
|
151
|
-
└── tsup.config.ts ← config do builder (ESM + CJS + types)
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
---
|
|
155
|
-
|
|
156
|
-
## Adicionar um novo componente
|
|
157
|
-
|
|
158
|
-
1. Cria a pasta `src/components/NomeComponente/`
|
|
159
|
-
2. Segue o padrão do Button:
|
|
160
|
-
- `NomeComponente.tsx` — implementação
|
|
161
|
-
- `NomeComponente.types.ts` — tipos
|
|
162
|
-
- `NomeComponente.stories.tsx` — stories do Storybook
|
|
163
|
-
- `index.ts` — re-exports
|
|
164
|
-
3. Exporta em `src/index.ts`:
|
|
165
|
-
```ts
|
|
166
|
-
export { NomeComponente } from "./components/NomeComponente";
|
|
167
|
-
export type { NomeComponenteProps } from "./components/NomeComponente";
|
|
168
|
-
```
|
|
169
|
-
4. Testa no Storybook: `npm run storybook`
|
|
170
|
-
5. Faz build: `npm run build`
|
|
171
|
-
6. Bumpa a versão e publica: `npm version minor && npm publish`
|
|
172
|
-
|
|
173
|
-
---
|
|
51
|
+
| Valor | Descrição |
|
|
52
|
+
|---|---|
|
|
53
|
+
| `Primary` | Fundo azul primário, texto branco |
|
|
54
|
+
| `PrimaryWhite` | Fundo branco, texto azul primário |
|
|
55
|
+
| `PrimaryTertiary` | Fundo transparente, texto azul primário |
|
|
56
|
+
| `BlackWhite` | Fundo transparente, texto escuro |
|
|
57
|
+
| `Black` | Fundo preto, texto branco |
|
|
58
|
+
| `WhiteBordered` | Fundo branco com borda |
|
|
59
|
+
| `BlackTertiary` | Fundo transparente, texto escuro com hover azul |
|
|
174
60
|
|
|
175
|
-
|
|
61
|
+
#### Tamanhos (`ButtonSize`)
|
|
176
62
|
|
|
177
|
-
|
|
|
63
|
+
| Valor | Descrição |
|
|
178
64
|
|---|---|
|
|
179
|
-
| `
|
|
180
|
-
| `
|
|
181
|
-
| `
|
|
182
|
-
| `
|
|
183
|
-
| `
|
|
184
|
-
| `npm publish` | Publica no npmjs.com (build automático antes) |
|
|
65
|
+
| `xxs` | Extra extra pequeno |
|
|
66
|
+
| `xs` | Extra pequeno |
|
|
67
|
+
| `sm` | Pequeno |
|
|
68
|
+
| `base` | Base (default) |
|
|
69
|
+
| `l` | Grande |
|
|
185
70
|
|
|
186
71
|
---
|
|
187
72
|
|
|
188
|
-
##
|
|
73
|
+
## Componentes disponíveis
|
|
189
74
|
|
|
190
|
-
|
|
75
|
+
| Componente | Versão | Descrição |
|
|
76
|
+
|---|---|---|
|
|
77
|
+
| `Button` | 0.0.1 | Botão com 7 variantes de cor, 5 tamanhos, estados loading/disabled/active |
|
|
191
78
|
|
|
192
|
-
|
|
193
|
-
- `MINOR` (0.x.0) — novos componentes ou funcionalidades (não breaking)
|
|
194
|
-
- `MAJOR` (x.0.0) — breaking changes na API
|
|
79
|
+
---
|
|
195
80
|
|
|
196
|
-
|
|
197
|
-
npm version patch # 0.0.1 → 0.0.2
|
|
198
|
-
npm version minor # 0.0.1 → 0.1.0
|
|
199
|
-
npm version major # 0.0.1 → 1.0.0
|
|
81
|
+
## Licença
|
|
200
82
|
|
|
201
|
-
|
|
202
|
-
```
|
|
83
|
+
MIT © [Umain](https://umain.works)
|