@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 CHANGED
@@ -1,114 +1,353 @@
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
+ [![npm version]][npm] [![storybook badge](https://img.shields.io/badge/storybook-live-ff4785)](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
- Instale via npm ou yarn:
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
- ## Uso Básico
70
+ ---
21
71
 
22
- Importe os componentes que precisa e use direto no JSX:
72
+ ## Quick start
23
73
 
24
74
  ```tsx
25
- import { ButtonBase, CardBase } from '@mlw-packages/react-components';
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
- <CardBase>
30
- <ButtonBase>Meu botão</ButtonBase>
31
- </CardBase>
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
- ## Componentes Disponíveis
110
+ ## Storybook (demos)
39
111
 
40
- A biblioteca oferece uma gama completa de componentes UI prontos para produção, todos estilizados com Tailwind CSS e pensados para alta acessibilidade:
112
+ Veja as demos interativas e a documentação de props no Storybook:
41
113
 
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.
114
+ > [Abrir Storybook](https://main--68e80310a069c2f10b546ef3.chromatic.com)
49
115
 
50
- > Para a lista completa, confira a pasta `src/components/ui` no código fonte.
116
+ Use **Controls** para testar props dinamicamente e **Docs** para copiar snippets.
51
117
 
52
118
  ---
53
119
 
54
- ## Estilos e Customização
120
+ ### Lista completa de componentes
55
121
 
56
- Todos os componentes são estilizados com **Tailwind CSS**. Para que funcionem corretamente, seu projeto deve estar configurado com Tailwind.
122
+ Abaixo está a lista completa de componentes :
57
123
 
58
- Importe o CSS global para aplicar estilos base da biblioteca:
124
+ - AlertDialog
59
125
 
60
- ```tsx
61
- import '@mlw-packages/react-components/style/global.css';
62
- ```
126
+ - Avatar
63
127
 
64
- A arquitetura dos componentes segue as melhores práticas:
128
+ - Badge
65
129
 
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.
130
+ - BarChart
69
131
 
70
- ---
132
+ - Breadcrumb
71
133
 
72
- ## Data-testid para Testes Automatizados
134
+ - Button
73
135
 
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.
136
+ - Calendar
75
137
 
76
- Exemplo no `ComboboxBase`:
138
+ - Card
77
139
 
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
- />
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
- ## Documentação e Exemplos
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
- Explore exemplos completos e documentação técnica na pasta `src/pages` dentro do repositório, incluindo:
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
- - Uso avançado de componentes.
101
- - Configurações de tema e responsividade.
102
- - Exemplos de integração com testes e acessibilidade.
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
- Contribuições são super bem-vindas!
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
- ## Licença
345
+ <!-- Links de badges -->
113
346
 
114
- MIT License — sinta-se livre para usar, modificar e distribuir.
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