@mlw-packages/react-components 1.6.1 → 1.7.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 +295 -56
- package/dist/index.css +278 -9
- package/dist/index.d.mts +12 -714
- package/dist/index.d.ts +12 -714
- package/dist/index.js +4085 -9463
- package/dist/index.mjs +4338 -9766
- package/package.json +14 -4
package/README.md
CHANGED
|
@@ -1,114 +1,353 @@
|
|
|
1
|
+
## @mlw-packages/react-components
|
|
1
2
|
|
|
2
|
-
|
|
3
|
+
Biblioteca de componentes React pronta para produção • TypeScript + Tailwind
|
|
3
4
|
|
|
4
|
-
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
[![npm version]][npm] [](https://main--68e80310a069c2f10b546ef3.chromatic.com)
|
|
8
|
+
[![license]](LICENSE)
|
|
9
|
+
|
|
10
|
+
> Coleção de _building blocks_ UI — pensada para velocidade de desenvolvimento, consistência visual, acessibilidade e performance.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Índice
|
|
15
|
+
|
|
16
|
+
- [Visão geral](#visão-geral)
|
|
17
|
+
- [Principles (princípios)](#principles-princ%C3%ADpios)
|
|
18
|
+
- [Instalação](#instala%C3%A7%C3%A3o)
|
|
19
|
+
- [Quick start](#quick-start)
|
|
20
|
+
- [Uso e boas práticas](#uso-e-boas-pr%C3%A1ticas)
|
|
21
|
+
- [Storybook (demos)](#storybook-demos)
|
|
22
|
+
- [Componentes principais](#componentes-principais)
|
|
23
|
+
- [Lista completa de componentes (stories)](#lista-completa-de-componentes-stories)
|
|
24
|
+
- [Desenvolvimento local](#desenvolvimento-local)
|
|
25
|
+
- [Testes & Quality Gates](#testes--quality-gates)
|
|
26
|
+
- [Problemas comuns](#problemas-comuns)
|
|
27
|
+
- [Contribuição](#contribui%C3%A7%C3%A3o)
|
|
28
|
+
- [Changelog & Releases](#changelog--releases)
|
|
29
|
+
- [Contato & Licença](#contato--licen%C3%A7a)
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Visão geral
|
|
34
|
+
|
|
35
|
+
`@mlw-packages/react-components` fornece um conjunto coeso de componentes reutilizáveis (Buttons, Cards, Inputs, Modals, Tables, etc.) com foco em:
|
|
36
|
+
|
|
37
|
+
- API simples e tipada (TypeScript) — documentação via Storybook.
|
|
38
|
+
- Estilos orientados a Tailwind para customização via `className`.
|
|
39
|
+
- Padrões de acessibilidade (aria, keyboard, focus management).
|
|
40
|
+
- Baixas dependências — ícones e extras como _peer deps_.
|
|
41
|
+
|
|
42
|
+
Use quando precisar padronizar UI e acelerar entregas sem sacrificar qualidade.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Principles (princípios)
|
|
47
|
+
|
|
48
|
+
1. **Composição sobre herança** — componentes pequenos, combináveis.
|
|
49
|
+
2. **Acessibilidade primeiro** — keyboard-friendly, roles, labels.
|
|
50
|
+
3. **Tailwind como API** — `className` para customização limitada.
|
|
51
|
+
4. **Mínimas dependências** — pacote enxuto para bundles menores.
|
|
52
|
+
5. **Testabilidade** — props determinísticas e `data-testid` opcionais.
|
|
5
53
|
|
|
6
54
|
---
|
|
7
55
|
|
|
8
56
|
## Instalação
|
|
9
57
|
|
|
10
|
-
|
|
58
|
+
Compatível com npm, yarn e pnpm:
|
|
11
59
|
|
|
12
60
|
```bash
|
|
13
61
|
npm install @mlw-packages/react-components
|
|
14
62
|
# ou
|
|
15
63
|
yarn add @mlw-packages/react-components
|
|
64
|
+
# ou
|
|
65
|
+
pnpm add @mlw-packages/react-components
|
|
16
66
|
```
|
|
17
67
|
|
|
18
|
-
|
|
68
|
+
> **Peer deps**: React 18+ e Tailwind configurado. Se usar ícones, instale `@phosphor-icons/react` como peer-dep.
|
|
19
69
|
|
|
20
|
-
|
|
70
|
+
---
|
|
21
71
|
|
|
22
|
-
|
|
72
|
+
## Quick start
|
|
23
73
|
|
|
24
74
|
```tsx
|
|
25
|
-
import
|
|
75
|
+
import React from "react";
|
|
76
|
+
import { CardBase, ButtonBase } from "@mlw-packages/react-components";
|
|
77
|
+
import "@mlw-packages/react-components/style/global.css";
|
|
26
78
|
|
|
27
79
|
export function App() {
|
|
28
80
|
return (
|
|
29
|
-
<
|
|
30
|
-
<
|
|
31
|
-
|
|
81
|
+
<main className="p-6 max-w-3xl mx-auto">
|
|
82
|
+
<CardBase className="p-6">
|
|
83
|
+
<h3 className="text-lg font-semibold">Bem-vindo</h3>
|
|
84
|
+
<p className="mt-2">Use os componentes para acelerar o layout.</p>
|
|
85
|
+
<div className="mt-4">
|
|
86
|
+
<ButtonBase variant="primary">Clique aqui</ButtonBase>
|
|
87
|
+
</div>
|
|
88
|
+
</CardBase>
|
|
89
|
+
</main>
|
|
32
90
|
);
|
|
33
91
|
}
|
|
34
92
|
```
|
|
35
93
|
|
|
94
|
+
**Notas rápidas**
|
|
95
|
+
|
|
96
|
+
- `className` é exposto na maioria dos componentes para customização.
|
|
97
|
+
- Variantes comuns: `primary`, `secondary`, `ghost`.
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## Uso e boas práticas
|
|
102
|
+
|
|
103
|
+
- **Composição**: prefira combinar componentes ao invés de alterar internals.
|
|
104
|
+
- **Acessibilidade**: passe `aria-*` quando aplicável (ex.: `aria-label` em botões iconográficos).
|
|
105
|
+
- **SSR**: componentes são compatíveis com server-side rendering; evite acessar `window` direto.
|
|
106
|
+
- **Theming**: use classes utilitárias do Tailwind e tokenize valores em `tailwind.config.js` quando necessário.
|
|
107
|
+
|
|
36
108
|
---
|
|
37
109
|
|
|
38
|
-
##
|
|
110
|
+
## Storybook (demos)
|
|
39
111
|
|
|
40
|
-
|
|
112
|
+
Veja as demos interativas e a documentação de props no Storybook:
|
|
41
113
|
|
|
42
|
-
|
|
43
|
-
- **CardBase** — Containers card com estrutura padrão.
|
|
44
|
-
- **InputBase**, **SelectBase**, **ComboboxBase** — Controles de formulário modernos.
|
|
45
|
-
- **CheckboxBase**, **SwitchBase** — Inputs booleanos.
|
|
46
|
-
- **TabsBase**, **TableBase**, **TooltipBase**, **DialogBase**, **DrawerBase** — Navegação e modais.
|
|
47
|
-
- **SidebarBase**, **AvatarBase**, **CalendarBase**, **CarouselBase**, **ProgressBase**, **SkeletonBase** — Componentes utilitários e visuais.
|
|
48
|
-
- **SonnerBase** — Sistema de notificações toast com feedback visual.
|
|
114
|
+
> [Abrir Storybook](https://main--68e80310a069c2f10b546ef3.chromatic.com)
|
|
49
115
|
|
|
50
|
-
|
|
116
|
+
Use **Controls** para testar props dinamicamente e **Docs** para copiar snippets.
|
|
51
117
|
|
|
52
118
|
---
|
|
53
119
|
|
|
54
|
-
|
|
120
|
+
### Lista completa de componentes
|
|
55
121
|
|
|
56
|
-
|
|
122
|
+
Abaixo está a lista completa de componentes :
|
|
57
123
|
|
|
58
|
-
|
|
124
|
+
- AlertDialog
|
|
59
125
|
|
|
60
|
-
|
|
61
|
-
import '@mlw-packages/react-components/style/global.css';
|
|
62
|
-
```
|
|
126
|
+
- Avatar
|
|
63
127
|
|
|
64
|
-
|
|
128
|
+
- Badge
|
|
65
129
|
|
|
66
|
-
-
|
|
67
|
-
- **Alta performance** com React 18 e otimizações internas.
|
|
68
|
-
- **Flexibilidade** para customizar via props, classes e hooks.
|
|
130
|
+
- BarChart
|
|
69
131
|
|
|
70
|
-
|
|
132
|
+
- Breadcrumb
|
|
71
133
|
|
|
72
|
-
|
|
134
|
+
- Button
|
|
73
135
|
|
|
74
|
-
|
|
136
|
+
- Calendar
|
|
75
137
|
|
|
76
|
-
|
|
138
|
+
- Card
|
|
77
139
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
140
|
+
- Carousel
|
|
141
|
+
|
|
142
|
+
- Chart
|
|
143
|
+
|
|
144
|
+
- CheckBox
|
|
145
|
+
|
|
146
|
+
- Collapsible
|
|
147
|
+
|
|
148
|
+
- Combobox
|
|
149
|
+
|
|
150
|
+
- ComboboxBase
|
|
151
|
+
|
|
152
|
+
- Command
|
|
153
|
+
|
|
154
|
+
- ContextMenu
|
|
155
|
+
|
|
156
|
+
- DateTimePicker
|
|
157
|
+
|
|
158
|
+
- DebouncedInput
|
|
159
|
+
|
|
160
|
+
- DestructiveDialog
|
|
161
|
+
|
|
162
|
+
- Dialog
|
|
163
|
+
|
|
164
|
+
- DraggableTooltip
|
|
165
|
+
|
|
166
|
+
- Drawer
|
|
167
|
+
|
|
168
|
+
- DropDownMenu
|
|
169
|
+
|
|
170
|
+
- FileUploader
|
|
171
|
+
|
|
172
|
+
- Filter
|
|
173
|
+
|
|
174
|
+
- Home
|
|
175
|
+
|
|
176
|
+
- HoverCard
|
|
177
|
+
|
|
178
|
+
- Input
|
|
179
|
+
|
|
180
|
+
- Input-OTP
|
|
181
|
+
|
|
182
|
+
- Label
|
|
183
|
+
|
|
184
|
+
- LineChart
|
|
185
|
+
|
|
186
|
+
- Loading
|
|
187
|
+
|
|
188
|
+
- Modal
|
|
189
|
+
|
|
190
|
+
- ModeToggle
|
|
191
|
+
|
|
192
|
+
- MultiCombobox
|
|
193
|
+
|
|
194
|
+
- NavigationMenu
|
|
195
|
+
|
|
196
|
+
- PieChart
|
|
197
|
+
|
|
198
|
+
- Popover
|
|
199
|
+
|
|
200
|
+
- rogress
|
|
201
|
+
|
|
202
|
+
- RangePicker
|
|
203
|
+
|
|
204
|
+
- Scrollarea
|
|
205
|
+
|
|
206
|
+
- Select
|
|
207
|
+
|
|
208
|
+
- Separator
|
|
209
|
+
|
|
210
|
+
- Sheet
|
|
211
|
+
|
|
212
|
+
- Sidebar
|
|
213
|
+
|
|
214
|
+
- Skeleton
|
|
215
|
+
|
|
216
|
+
- Slider
|
|
217
|
+
|
|
218
|
+
- Sonner
|
|
219
|
+
|
|
220
|
+
- Switch
|
|
221
|
+
|
|
222
|
+
- Table
|
|
223
|
+
|
|
224
|
+
- Tabs
|
|
225
|
+
|
|
226
|
+
- TextArea
|
|
227
|
+
|
|
228
|
+
- Tooltip
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## Desenvolvimento local
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
git clone git@github.com:grupo-malwee/react-components.git
|
|
236
|
+
cd react-components
|
|
237
|
+
npm install
|
|
238
|
+
npm run storybook
|
|
239
|
+
# lint/test/build
|
|
240
|
+
npm run lint
|
|
241
|
+
npm run test
|
|
242
|
+
npm run build
|
|
92
243
|
```
|
|
93
244
|
|
|
245
|
+
Dica: use `pnpm` para monorepos e instalações mais rápidas.
|
|
246
|
+
|
|
94
247
|
---
|
|
95
248
|
|
|
96
|
-
##
|
|
249
|
+
## Problemas comuns & diagnóstico
|
|
250
|
+
|
|
251
|
+
Segue uma versão formatada e mais direta da seção de _Issues_ com passos para diagnóstico e ações rápidas.
|
|
252
|
+
|
|
253
|
+
### Componente não aparece / tela em branco
|
|
254
|
+
|
|
255
|
+
- Abra o console do navegador e verifique erros (ex.: export faltando, erro de runtime).
|
|
256
|
+
- Confirme o import na story e que todas as props obrigatórias estão sendo passadas.
|
|
257
|
+
- Se o componente depende de dados remotos, garanta mocks ou dados de exemplo na story.
|
|
258
|
+
|
|
259
|
+
Checklist rápido:
|
|
260
|
+
|
|
261
|
+
- [ ] Console limpo
|
|
262
|
+
- [ ] Import correto
|
|
263
|
+
- [ ] Props obrigatórias fornecidas
|
|
264
|
+
- [ ] Dados/mocks presentes
|
|
265
|
+
|
|
266
|
+
### Componente pisca ou muda de estado sozinho
|
|
267
|
+
|
|
268
|
+
- Verifique addons do Storybook (Controls, Interactions) que possam disparar updates automaticamente.
|
|
269
|
+
- Revise timers (clearInterval / clearTimeout) e efeitos (`useEffect`) com dependências corretas.
|
|
270
|
+
- Use Actions para inspecionar eventos que dispararam mudanças.
|
|
271
|
+
|
|
272
|
+
### Estilos incorretos entre temas
|
|
97
273
|
|
|
98
|
-
|
|
274
|
+
- Verifique variáveis de tema e classes condicionais.
|
|
275
|
+
- Confirme se o decorator de tema do Storybook está aplicado na preview.
|
|
276
|
+
- Atenção ao purge do Tailwind: classes dinâmicas podem ser removidas. Use `safelist` quando necessário.
|
|
99
277
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
-
|
|
278
|
+
### Dependências / peer deps
|
|
279
|
+
|
|
280
|
+
Conflitos de peer-deps podem quebrar o build. Para instalar localmente (workaround):
|
|
281
|
+
|
|
282
|
+
```bash
|
|
283
|
+
npm i @mlw-packages/react-components --legacy-peer-deps
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
(mesma abordagem pode ser necessária para ícones Phosphor em alguns ambientes.)
|
|
287
|
+
|
|
288
|
+
### Ícones (Phosphor) não renderam
|
|
289
|
+
|
|
290
|
+
Instale o pacote se estiver faltando:
|
|
291
|
+
|
|
292
|
+
```bash
|
|
293
|
+
npm i @phosphor-icons/react
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
Se ainda não renderizar, confirme se o bundler transpila pacotes ESM/TSX corretamente (Vite normalmente já faz isso; em setups customizados pode ser preciso configurar `optimizeDeps` ou `esbuild` / `babel` transpile).
|
|
297
|
+
|
|
298
|
+
### Dicas rápidas
|
|
299
|
+
|
|
300
|
+
- Se uma story funciona localmente mas falha no Storybook hospedado, compare environment vars e versões de dependências.
|
|
301
|
+
- Para problemas de Tailwind, adicione classes dinâmicas ao `safelist` do `tailwind.config.js`.
|
|
302
|
+
- Ao reportar um issue, inclua: versão do pacote, trecho mínimo reproduzível, saída do console e versão do Node/NPM.
|
|
303
|
+
|
|
304
|
+
## Testes & Quality Gates
|
|
305
|
+
|
|
306
|
+
- Jest + Testing Library para unit e componentes.
|
|
307
|
+
- ESLint com regras TypeScript estritas.
|
|
308
|
+
- CI deve bloquear merges sem `lint`/`test`/`build` bem-sucedidos.
|
|
309
|
+
|
|
310
|
+
---
|
|
311
|
+
|
|
312
|
+
## Problemas comuns
|
|
313
|
+
|
|
314
|
+
- **Classes Tailwind desaparecendo**: cuidado com classes dinâmicas — adicione `safelist` no `tailwind.config.js`.
|
|
315
|
+
- **Ícones faltando**: instale `@phosphor-icons/react` e verifique transpile ESM.
|
|
316
|
+
- **Peer deps**: resolver explicitamente em CI preferível a `--legacy-peer-deps`.
|
|
103
317
|
|
|
104
318
|
---
|
|
105
319
|
|
|
106
320
|
## Contribuição
|
|
107
321
|
|
|
108
|
-
|
|
322
|
+
Siga o fluxo padrão:
|
|
323
|
+
|
|
324
|
+
1. Fork → branch com `feature/<descrição>` → PR para `main`.
|
|
325
|
+
2. Inclua descrição clara, screenshots quando necessário e testes básicos.
|
|
326
|
+
3. Use `pnpm`/`npm` consistentemente conforme `.github/workflows`.
|
|
327
|
+
|
|
328
|
+
Sugestão de PR template: mudança, razão, passos para testar, checklist (lint/test/build).
|
|
329
|
+
|
|
330
|
+
---
|
|
331
|
+
|
|
332
|
+
## Changelog & Releases
|
|
333
|
+
|
|
334
|
+
- Versionamento semântico (SemVer). Releases automatizadas via CI (GitHub Actions + OIDC publishing quando aplicável).
|
|
335
|
+
|
|
336
|
+
---
|
|
337
|
+
|
|
338
|
+
## Contato & Licença
|
|
339
|
+
|
|
340
|
+
- Mantido por: **Grupo Malwee**
|
|
341
|
+
- Licença: **MIT**
|
|
109
342
|
|
|
110
343
|
---
|
|
111
344
|
|
|
112
|
-
|
|
345
|
+
<!-- Links de badges -->
|
|
113
346
|
|
|
114
|
-
|
|
347
|
+
[npm]: https://www.npmjs.com/package/@mlw-packages/react-components
|
|
348
|
+
[ci]: https://github.com/grupo-malwee/react-components/actions
|
|
349
|
+
[storybook]: https://main--68e80310a069c2f10b546ef3.chromatic.com
|
|
350
|
+
[npm version]: https://img.shields.io/npm/v/@mlw-packages/react-components
|
|
351
|
+
[build status]: https://img.shields.io/github/actions/workflow/status/grupo-malwee/react-components/ci.yml
|
|
352
|
+
[storybook badge]: https://img.shields.io/badge/storybook-live-ff4785
|
|
353
|
+
[license]: https://img.shields.io/badge/license-MIT-brightgreen
|