@mlw-packages/react-components 1.6.1 → 1.7.1

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