forlogic-core 2.0.2 → 2.0.4
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 +187 -917
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1 -1
- package/dist/types/sidebar.d.ts +2 -1
- package/docs/AUDIT_PROMPT.md +74 -0
- package/docs/PROJECT_KNOWLEDGE_TEMPLATE.md +117 -0
- package/docs/PROMPT_TEMPLATE.md +77 -0
- package/docs/STARTER_TEMPLATE.md +114 -0
- package/docs/design-system/README.md +45 -0
- package/docs/design-system/buttons-actions.md +427 -0
- package/docs/design-system/charts-dashboards.md +547 -0
- package/docs/design-system/crud.md +243 -0
- package/docs/design-system/data-display.md +360 -0
- package/docs/design-system/dialogs.md +588 -0
- package/docs/design-system/domain.md +651 -0
- package/docs/design-system/examples.md +275 -0
- package/docs/design-system/foundation.md +82 -0
- package/docs/design-system/infra-utils.md +36 -0
- package/docs/design-system/inputs.md +536 -0
- package/docs/design-system/layout.md +351 -0
- package/docs/design-system/navigation.md +599 -0
- package/docs/design-system/notifications-feedback.md +137 -0
- package/docs/design-system/platform.md +95 -0
- package/docs/design-system/selectors.md +424 -0
- package/docs/design-system/tables-grids.md +114 -0
- package/package.json +2 -2
|
@@ -0,0 +1,427 @@
|
|
|
1
|
+
<!-- ⚠️ ARQUIVO GERADO AUTOMATICAMENTE — NÃO EDITAR MANUALMENTE -->
|
|
2
|
+
<!-- Fonte: src/design-system/docs/ | Regenerar: npx tsx scripts/generate-ds-docs.ts -->
|
|
3
|
+
|
|
4
|
+
# Botões & Ações
|
|
5
|
+
|
|
6
|
+
Categoria: **Botões & Ações** | 6 componentes
|
|
7
|
+
|
|
8
|
+
### Action Menu (ActionButton)
|
|
9
|
+
|
|
10
|
+
Botão compacto otimizado para ações em linhas de tabela e menus dropdown. OBRIGATÓRIO para todas as ações em tabelas CRUD. Também disponível como ActionMenu.
|
|
11
|
+
|
|
12
|
+
**Uso:**
|
|
13
|
+
```tsx
|
|
14
|
+
import {
|
|
15
|
+
ActionButton, // ou: import { ActionMenu } from "forlogic-core"
|
|
16
|
+
DropdownMenu,
|
|
17
|
+
DropdownMenuTrigger,
|
|
18
|
+
DropdownMenuContent,
|
|
19
|
+
DropdownMenuItem
|
|
20
|
+
} from "forlogic-core"
|
|
21
|
+
import { Edit, Trash } from 'lucide-react'
|
|
22
|
+
|
|
23
|
+
// 💡 Alias disponível: ActionMenu = ActionButton
|
|
24
|
+
|
|
25
|
+
// ✅ CORRETO: Uso padrão em tabelas CRUD
|
|
26
|
+
<DropdownMenu>
|
|
27
|
+
<DropdownMenuTrigger asChild>
|
|
28
|
+
<ActionButton />
|
|
29
|
+
</DropdownMenuTrigger>
|
|
30
|
+
<DropdownMenuContent align="end">
|
|
31
|
+
<DropdownMenuItem onClick={() => handleEdit(item)}>
|
|
32
|
+
<Edit className="mr-2 h-4 w-4" />
|
|
33
|
+
Editar
|
|
34
|
+
</DropdownMenuItem>
|
|
35
|
+
<DropdownMenuItem onClick={() => handleDelete(item)}>
|
|
36
|
+
<Trash className="mr-2 h-4 w-4" />
|
|
37
|
+
Excluir
|
|
38
|
+
</DropdownMenuItem>
|
|
39
|
+
</DropdownMenuContent>
|
|
40
|
+
</DropdownMenu>
|
|
41
|
+
|
|
42
|
+
// ✅ CORRETO: Com ícone customizado
|
|
43
|
+
<ActionButton>
|
|
44
|
+
<Edit size={12} />
|
|
45
|
+
</ActionButton>
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
**Props:**
|
|
49
|
+
| Prop | Tipo | Padrão | Descrição |
|
|
50
|
+
|------|------|--------|-----------|
|
|
51
|
+
| `children` | `ReactNode` | <EllipsisVertical /> | Conteúdo customizado (ícone padrão: três pontos verticais). |
|
|
52
|
+
| `className` | `string` | - | Classes CSS adicionais. |
|
|
53
|
+
| `onClick` | `() => void` | - | Handler de clique. |
|
|
54
|
+
|
|
55
|
+
**Exemplos:**
|
|
56
|
+
```tsx
|
|
57
|
+
// ❌ NUNCA faça isso em tabelas CRUD
|
|
58
|
+
<Button variant=
|
|
59
|
+
```
|
|
60
|
+
```tsx
|
|
61
|
+
// ✅ SEMPRE use ActionButton em tabelas
|
|
62
|
+
<DropdownMenu>
|
|
63
|
+
<DropdownMenuTrigger asChild>
|
|
64
|
+
<ActionButton />
|
|
65
|
+
</DropdownMenuTrigger>
|
|
66
|
+
<DropdownMenuContent align=
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**Acessibilidade:**
|
|
70
|
+
- Tamanho compacto (height: 28px, padding: 8px)
|
|
71
|
+
- Ícone padrão: EllipsisVertical (três pontos verticais)
|
|
72
|
+
- variant=
|
|
73
|
+
- com estilo consistente do tema
|
|
74
|
+
- Perfeito para menus de ação em linhas de tabela
|
|
75
|
+
|
|
76
|
+
**Notas:**
|
|
77
|
+
- 💡 Alias: Também disponível como
|
|
78
|
+
- — import { ActionMenu } from
|
|
79
|
+
- ,
|
|
80
|
+
|
|
81
|
+
- ,
|
|
82
|
+
|
|
83
|
+
- ghost
|
|
84
|
+
- icon
|
|
85
|
+
- ,
|
|
86
|
+
|
|
87
|
+
- ,
|
|
88
|
+
|
|
89
|
+
- ,
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
> Fonte: `src\design-system\docs\components\ActionButtonDoc.tsx`
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
### Button
|
|
97
|
+
|
|
98
|
+
Componente de botão com variantes semânticas, tamanhos e estados. Use para ações primárias, secundárias e destrutivas.
|
|
99
|
+
|
|
100
|
+
**Uso:**
|
|
101
|
+
```tsx
|
|
102
|
+
import { Button } from "forlogic-core"
|
|
103
|
+
|
|
104
|
+
<Button>Click me</Button>
|
|
105
|
+
<Button variant="primary">Primary</Button>
|
|
106
|
+
<Button variant="destructive">Delete</Button>
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**Props:**
|
|
110
|
+
| Prop | Tipo | Padrão | Descrição |
|
|
111
|
+
|------|------|--------|-----------|
|
|
112
|
+
| `asChild` | `boolean` | false | Renderiza como elemento filho (ex: Link). |
|
|
113
|
+
| `disabled` | `boolean` | false | Estado desabilitado. |
|
|
114
|
+
|
|
115
|
+
**Exemplos:**
|
|
116
|
+
```tsx
|
|
117
|
+
<Button variant=
|
|
118
|
+
```
|
|
119
|
+
```tsx
|
|
120
|
+
// ⚠️ DEPRECATED: Variantes mantidas para compatibilidade
|
|
121
|
+
// Use as variantes semânticas (primary, secondary, etc.)
|
|
122
|
+
<Button variant=
|
|
123
|
+
```
|
|
124
|
+
```tsx
|
|
125
|
+
<Button size=
|
|
126
|
+
```
|
|
127
|
+
```tsx
|
|
128
|
+
<Button size=
|
|
129
|
+
```
|
|
130
|
+
```tsx
|
|
131
|
+
<Button>Normal</Button>
|
|
132
|
+
<Button disabled>Disabled</Button>
|
|
133
|
+
<Button disabled>
|
|
134
|
+
<Loader2 className=
|
|
135
|
+
```
|
|
136
|
+
```tsx
|
|
137
|
+
<Button variant=
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
**Acessibilidade:**
|
|
141
|
+
- Acessível via teclado (Tab, Enter, Space)
|
|
142
|
+
- Indicador de foco visível (focus-visible)
|
|
143
|
+
- Estado desabilitado comunicado a leitores de tela
|
|
144
|
+
- Botões de ícone devem ter aria-label
|
|
145
|
+
- Tamanho mínimo de toque de 44x44px no mobile
|
|
146
|
+
|
|
147
|
+
**Notas:**
|
|
148
|
+
- ✅ Use variant=
|
|
149
|
+
- para a ação principal da página
|
|
150
|
+
- ✅ Limite a um botão primário por seção
|
|
151
|
+
- ✅ Use variant=
|
|
152
|
+
- para ações destrutivas (consistente com Alert e Badge)
|
|
153
|
+
- ✅ Inclua estado de loading para ações assíncronas
|
|
154
|
+
- ❌ Não use múltiplos botões primários no mesmo contexto
|
|
155
|
+
- ❌ Não crie estilos customizados fora do design system
|
|
156
|
+
|
|
157
|
+
> Fonte: `src\design-system\docs\components\ButtonDoc.tsx`
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
### Button
|
|
162
|
+
|
|
163
|
+
Componente de botão com variantes semânticas, tamanhos e estados. Use para ações primárias, secundárias e destrutivas.
|
|
164
|
+
|
|
165
|
+
**Uso:**
|
|
166
|
+
```tsx
|
|
167
|
+
import { Button } from "forlogic-core"
|
|
168
|
+
|
|
169
|
+
<Button>Click me</Button>
|
|
170
|
+
<Button variant="primary">Primary</Button>
|
|
171
|
+
<Button variant="destructive">Delete</Button>
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
**Props:**
|
|
175
|
+
| Prop | Tipo | Padrão | Descrição |
|
|
176
|
+
|------|------|--------|-----------|
|
|
177
|
+
| `asChild` | `boolean` | false | Renderiza como elemento filho (ex: Link). |
|
|
178
|
+
| `disabled` | `boolean` | false | Estado desabilitado. |
|
|
179
|
+
|
|
180
|
+
**Exemplos:**
|
|
181
|
+
```tsx
|
|
182
|
+
<Button variant=
|
|
183
|
+
```
|
|
184
|
+
```tsx
|
|
185
|
+
// ⚠️ DEPRECATED: Variantes mantidas para compatibilidade
|
|
186
|
+
// Use as variantes semânticas (primary, secondary, etc.)
|
|
187
|
+
<Button variant=
|
|
188
|
+
```
|
|
189
|
+
```tsx
|
|
190
|
+
<Button size=
|
|
191
|
+
```
|
|
192
|
+
```tsx
|
|
193
|
+
<Button size=
|
|
194
|
+
```
|
|
195
|
+
```tsx
|
|
196
|
+
<Button>Normal</Button>
|
|
197
|
+
<Button disabled>Disabled</Button>
|
|
198
|
+
<Button disabled>
|
|
199
|
+
<Loader2 className=
|
|
200
|
+
```
|
|
201
|
+
```tsx
|
|
202
|
+
<Button variant=
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
**Acessibilidade:**
|
|
206
|
+
- Acessível via teclado (Tab, Enter, Space)
|
|
207
|
+
- Indicador de foco visível (focus-visible)
|
|
208
|
+
- Estado desabilitado comunicado a leitores de tela
|
|
209
|
+
- Botões de ícone devem ter aria-label
|
|
210
|
+
- Tamanho mínimo de toque de 44x44px no mobile
|
|
211
|
+
|
|
212
|
+
**Notas:**
|
|
213
|
+
- ✅ Use variant=
|
|
214
|
+
- para a ação principal da página
|
|
215
|
+
- ✅ Limite a um botão primário por seção
|
|
216
|
+
- ✅ Use variant=
|
|
217
|
+
- para ações destrutivas (consistente com Alert e Badge)
|
|
218
|
+
- ✅ Inclua estado de loading para ações assíncronas
|
|
219
|
+
- ❌ Não use múltiplos botões primários no mesmo contexto
|
|
220
|
+
- ❌ Não crie estilos customizados fora do design system
|
|
221
|
+
|
|
222
|
+
> Fonte: `src\design-system\docs\components\ButtonDoc.tsx`
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
### Action Menu (ActionButton)
|
|
227
|
+
|
|
228
|
+
Botão compacto otimizado para ações em linhas de tabela e menus dropdown. OBRIGATÓRIO para todas as ações em tabelas CRUD. Também disponível como ActionMenu.
|
|
229
|
+
|
|
230
|
+
**Uso:**
|
|
231
|
+
```tsx
|
|
232
|
+
import {
|
|
233
|
+
ActionButton, // ou: import { ActionMenu } from "forlogic-core"
|
|
234
|
+
DropdownMenu,
|
|
235
|
+
DropdownMenuTrigger,
|
|
236
|
+
DropdownMenuContent,
|
|
237
|
+
DropdownMenuItem
|
|
238
|
+
} from "forlogic-core"
|
|
239
|
+
import { Edit, Trash } from 'lucide-react'
|
|
240
|
+
|
|
241
|
+
// 💡 Alias disponível: ActionMenu = ActionButton
|
|
242
|
+
|
|
243
|
+
// ✅ CORRETO: Uso padrão em tabelas CRUD
|
|
244
|
+
<DropdownMenu>
|
|
245
|
+
<DropdownMenuTrigger asChild>
|
|
246
|
+
<ActionButton />
|
|
247
|
+
</DropdownMenuTrigger>
|
|
248
|
+
<DropdownMenuContent align="end">
|
|
249
|
+
<DropdownMenuItem onClick={() => handleEdit(item)}>
|
|
250
|
+
<Edit className="mr-2 h-4 w-4" />
|
|
251
|
+
Editar
|
|
252
|
+
</DropdownMenuItem>
|
|
253
|
+
<DropdownMenuItem onClick={() => handleDelete(item)}>
|
|
254
|
+
<Trash className="mr-2 h-4 w-4" />
|
|
255
|
+
Excluir
|
|
256
|
+
</DropdownMenuItem>
|
|
257
|
+
</DropdownMenuContent>
|
|
258
|
+
</DropdownMenu>
|
|
259
|
+
|
|
260
|
+
// ✅ CORRETO: Com ícone customizado
|
|
261
|
+
<ActionButton>
|
|
262
|
+
<Edit size={12} />
|
|
263
|
+
</ActionButton>
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
**Props:**
|
|
267
|
+
| Prop | Tipo | Padrão | Descrição |
|
|
268
|
+
|------|------|--------|-----------|
|
|
269
|
+
| `children` | `ReactNode` | <EllipsisVertical /> | Conteúdo customizado (ícone padrão: três pontos verticais). |
|
|
270
|
+
| `className` | `string` | - | Classes CSS adicionais. |
|
|
271
|
+
| `onClick` | `() => void` | - | Handler de clique. |
|
|
272
|
+
|
|
273
|
+
**Exemplos:**
|
|
274
|
+
```tsx
|
|
275
|
+
// ❌ NUNCA faça isso em tabelas CRUD
|
|
276
|
+
<Button variant=
|
|
277
|
+
```
|
|
278
|
+
```tsx
|
|
279
|
+
// ✅ SEMPRE use ActionButton em tabelas
|
|
280
|
+
<DropdownMenu>
|
|
281
|
+
<DropdownMenuTrigger asChild>
|
|
282
|
+
<ActionButton />
|
|
283
|
+
</DropdownMenuTrigger>
|
|
284
|
+
<DropdownMenuContent align=
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
**Acessibilidade:**
|
|
288
|
+
- Tamanho compacto (height: 28px, padding: 8px)
|
|
289
|
+
- Ícone padrão: EllipsisVertical (três pontos verticais)
|
|
290
|
+
- variant=
|
|
291
|
+
- com estilo consistente do tema
|
|
292
|
+
- Perfeito para menus de ação em linhas de tabela
|
|
293
|
+
|
|
294
|
+
**Notas:**
|
|
295
|
+
- 💡 Alias: Também disponível como
|
|
296
|
+
- — import { ActionMenu } from
|
|
297
|
+
- ,
|
|
298
|
+
|
|
299
|
+
- ,
|
|
300
|
+
|
|
301
|
+
- ghost
|
|
302
|
+
- icon
|
|
303
|
+
- ,
|
|
304
|
+
|
|
305
|
+
- ,
|
|
306
|
+
|
|
307
|
+
- ,
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
> Fonte: `src\design-system\docs\components\ActionButtonDoc.tsx`
|
|
311
|
+
|
|
312
|
+
---
|
|
313
|
+
|
|
314
|
+
### Switch
|
|
315
|
+
|
|
316
|
+
Um controle que permite ao usuário alternar entre marcado e desmarcado.
|
|
317
|
+
|
|
318
|
+
**Uso:**
|
|
319
|
+
```tsx
|
|
320
|
+
import { Switch, Label } from "forlogic-core"
|
|
321
|
+
|
|
322
|
+
<div className="flex items-center space-x-2">
|
|
323
|
+
<Switch id="airplane-mode" />
|
|
324
|
+
<Label htmlFor="airplane-mode">Modo Avião</Label>
|
|
325
|
+
</div>
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
**Props:**
|
|
329
|
+
| Prop | Tipo | Padrão | Descrição |
|
|
330
|
+
|------|------|--------|-----------|
|
|
331
|
+
| `id` | `string` | - | Identificador único para associar com Label. |
|
|
332
|
+
| `checked` | `boolean` | - | Estado controlado do switch. |
|
|
333
|
+
| `defaultChecked` | `boolean` | false | Estado inicial não controlado. |
|
|
334
|
+
| `disabled` | `boolean` | false | Desabilita a interação. |
|
|
335
|
+
| `required` | `boolean` | false | Indica campo obrigatório em formulário. |
|
|
336
|
+
| `name` | `string` | - | Nome do campo para submissão de formulário. |
|
|
337
|
+
| `onCheckedChange` | `(checked: boolean) => void` | - | Callback quando o estado muda. |
|
|
338
|
+
|
|
339
|
+
**Exemplos:**
|
|
340
|
+
```tsx
|
|
341
|
+
// Desligado
|
|
342
|
+
<Switch id=
|
|
343
|
+
```
|
|
344
|
+
```tsx
|
|
345
|
+
import { Switch, Label } from
|
|
346
|
+
```
|
|
347
|
+
```tsx
|
|
348
|
+
<div className=
|
|
349
|
+
```
|
|
350
|
+
```tsx
|
|
351
|
+
<div className=
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
**Acessibilidade:**
|
|
355
|
+
- Role
|
|
356
|
+
- aplicado automaticamente (WAI-ARIA)
|
|
357
|
+
- Suporte completo de teclado (Espaço para alternar)
|
|
358
|
+
- Estados aria-checked comunicados para leitores de tela
|
|
359
|
+
- Associação com Label via htmlFor/id
|
|
360
|
+
- Indicadores visuais de foco visíveis
|
|
361
|
+
- Estado desabilitado comunicado via aria-disabled
|
|
362
|
+
|
|
363
|
+
> Fonte: `src\design-system\docs\components\SwitchDoc.tsx`
|
|
364
|
+
|
|
365
|
+
---
|
|
366
|
+
|
|
367
|
+
### Toggle
|
|
368
|
+
|
|
369
|
+
Botões de dois estados que podem estar ligados ou desligados, individualmente ou em grupo.
|
|
370
|
+
|
|
371
|
+
**Uso:**
|
|
372
|
+
```tsx
|
|
373
|
+
import { Toggle, ToggleGroup, ToggleGroupItem } from "forlogic-core"
|
|
374
|
+
import { Bold, Italic } from "lucide-react"
|
|
375
|
+
|
|
376
|
+
// Toggle individual
|
|
377
|
+
<Toggle aria-label="Alternar negrito">
|
|
378
|
+
<Bold className="h-4 w-4" />
|
|
379
|
+
</Toggle>
|
|
380
|
+
|
|
381
|
+
// Toggle em grupo (seleção única)
|
|
382
|
+
<ToggleGroup type="single" defaultValue="center">
|
|
383
|
+
<ToggleGroupItem value="left" aria-label="Alinhar à esquerda">
|
|
384
|
+
<AlignLeft className="h-4 w-4" />
|
|
385
|
+
</ToggleGroupItem>
|
|
386
|
+
<ToggleGroupItem value="center" aria-label="Centralizar">
|
|
387
|
+
<AlignCenter className="h-4 w-4" />
|
|
388
|
+
</ToggleGroupItem>
|
|
389
|
+
</ToggleGroup>
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
**Props:**
|
|
393
|
+
| Prop | Tipo | Padrão | Descrição |
|
|
394
|
+
|------|------|--------|-----------|
|
|
395
|
+
| `pressed` | `boolean` | - | Estado controlado do Toggle. |
|
|
396
|
+
| `defaultPressed` | `boolean` | false | Estado inicial não controlado do Toggle. |
|
|
397
|
+
| `onPressedChange` | `(pressed: boolean) => void` | - | Callback quando o estado do Toggle muda. |
|
|
398
|
+
| `disabled` | `boolean` | false | Desabilita a interação. |
|
|
399
|
+
| `aria-label` | `string` | - | Obrigatório para acessibilidade quando não há texto visível. |
|
|
400
|
+
|
|
401
|
+
**Exemplos:**
|
|
402
|
+
```tsx
|
|
403
|
+
import { Toggle } from
|
|
404
|
+
```
|
|
405
|
+
```tsx
|
|
406
|
+
<Toggle aria-label=
|
|
407
|
+
```
|
|
408
|
+
```tsx
|
|
409
|
+
import { ToggleGroup, ToggleGroupItem } from
|
|
410
|
+
```
|
|
411
|
+
```tsx
|
|
412
|
+
import { ToggleGroup, ToggleGroupItem } from
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
**Acessibilidade:**
|
|
416
|
+
- Role
|
|
417
|
+
- com aria-pressed aplicado automaticamente
|
|
418
|
+
- Suporte completo de teclado (Espaço/Enter para alternar)
|
|
419
|
+
- Navegação por setas entre itens do ToggleGroup
|
|
420
|
+
- aria-label obrigatório para toggles apenas com ícones
|
|
421
|
+
- Estados aria-pressed comunicados para leitores de tela
|
|
422
|
+
- Indicadores visuais de foco e estado ativo
|
|
423
|
+
- ToggleGroup implementa padrão roving tabindex
|
|
424
|
+
|
|
425
|
+
> Fonte: `src\design-system\docs\components\ToggleDoc.tsx`
|
|
426
|
+
|
|
427
|
+
---
|