@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.
Files changed (2) hide show
  1. package/README.md +47 -166
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -1,202 +1,83 @@
1
- # @umain.works/ui — Umain Design System
1
+ # @umain-works/ui
2
2
 
3
- Biblioteca de componentes React partilhada pela Umain. Publicada no [npmjs.com](https://www.npmjs.com/package/@umain.works/ui) como pacote público.
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
- ## Desenvolvimento de componentes
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 run storybook
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
- # Instalar dependências
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
- ## Publicar no npmjs.com
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
- Após publicar, o pacote aparece em:
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.works/ui';
22
+ import { Button } from '@umain-works/ui';
112
23
 
113
- export function LoginPage() {
24
+ export function Example() {
114
25
  return (
115
- <Button color="Primary" size="base" onClick={handleLogin}>
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
- | Componente | Versão | Descrição |
127
- |---|---|---|
128
- | `Button` | 0.0.1 | Botão com 7 variantes de cor, 5 tamanhos, estados loading/disabled/active |
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
- ## Estrutura do projecto
49
+ #### Variantes de cor (`ButtonColor`)
133
50
 
134
- ```
135
- design-system/
136
- ├── src/
137
- │ ├── components/
138
- │ │ └── Button/
139
- │ │ ├── Button.tsx ← implementação
140
- │ │ ├── Button.types.ts ← tipos TypeScript
141
- │ │ ├── Button.stories.tsx ← documentação Storybook
142
- │ │ └── index.ts ← re-exports
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
- ## Scripts
61
+ #### Tamanhos (`ButtonSize`)
176
62
 
177
- | Script | Descrição |
63
+ | Valor | Descrição |
178
64
  |---|---|
179
- | `npm run build` | Build do pacote para `dist/` (ESM + CJS + types) |
180
- | `npm run dev` | Build em modo watch |
181
- | `npm run storybook` | Storybook em modo desenvolvimento (porta 6006) |
182
- | `npm run build-storybook` | Build estático do Storybook |
183
- | `npm run lint` | Verificação de tipos TypeScript |
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
- ## Versionamento
73
+ ## Componentes disponíveis
189
74
 
190
- Usamos [Semantic Versioning](https://semver.org/):
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
- - `PATCH` (0.0.x) — bug fixes
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
- ```bash
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
- npm publish # build automático + publish no npmjs.com
202
- ```
83
+ MIT © [Umain](https://umain.works)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@umain-works/ui",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "Umain Design System — componentes React partilhados",
5
5
  "keywords": [
6
6
  "design-system",