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.
@@ -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
+ ---