forlogic-core 2.0.3 → 2.0.5

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.
Files changed (207) hide show
  1. package/.note/memory/features/crud-defaults-batteries-included.md +1 -1
  2. package/README.md +187 -917
  3. package/dist/components/ui/dialog-wizard.d.ts +82 -0
  4. package/dist/components/ui/input-group.d.ts +1 -1
  5. package/dist/components/ui/input.d.ts +5 -23
  6. package/dist/components/ui/resizable.d.ts +1 -1
  7. package/dist/components/ui/sidebar.d.ts +1 -1
  8. package/dist/components/ui/step-selector.d.ts +11 -9
  9. package/dist/components/ui/textarea.d.ts +1 -0
  10. package/dist/crud/components/CrudTable.d.ts +3 -1
  11. package/dist/crud/createCrudPage.d.ts +2 -0
  12. package/dist/crud/hooks/useColumnManager.d.ts +3 -1
  13. package/dist/exports/ui.d.ts +1 -0
  14. package/dist/index.css +1 -1
  15. package/dist/index.css.map +1 -1
  16. package/dist/index.esm.js +1 -1
  17. package/dist/index.js +1 -1
  18. package/dist/types/sidebar.d.ts +2 -1
  19. package/dist/types.d.ts +3 -0
  20. package/docs/AUDIT_PROMPT.md +74 -0
  21. package/docs/PROJECT_KNOWLEDGE_TEMPLATE.md +117 -0
  22. package/docs/PROMPT_TEMPLATE.md +77 -0
  23. package/docs/STARTER_TEMPLATE.md +114 -0
  24. package/docs/design-system/README.md +45 -0
  25. package/docs/design-system/buttons-actions.md +433 -0
  26. package/docs/design-system/charts-dashboards.md +547 -0
  27. package/docs/design-system/crud.md +243 -0
  28. package/docs/design-system/data-display.md +360 -0
  29. package/docs/design-system/dialogs.md +588 -0
  30. package/docs/design-system/domain.md +661 -0
  31. package/docs/design-system/examples.md +275 -0
  32. package/docs/design-system/foundation.md +82 -0
  33. package/docs/design-system/infra-utils.md +36 -0
  34. package/docs/design-system/inputs.md +556 -0
  35. package/docs/design-system/layout.md +351 -0
  36. package/docs/design-system/navigation.md +604 -0
  37. package/docs/design-system/notifications-feedback.md +139 -0
  38. package/docs/design-system/platform.md +95 -0
  39. package/docs/design-system/selectors.md +424 -0
  40. package/docs/design-system/tables-grids.md +114 -0
  41. package/package.json +2 -2
  42. package/dist/assets/AccordionDoc-CGNlubG3.js +0 -31
  43. package/dist/assets/ActionButtonDoc-CYtkXR0k.js +0 -47
  44. package/dist/assets/ActionPlanDoc-BSuPRftQ.js +0 -65
  45. package/dist/assets/AlertDoc-Cpvxneqg.js +0 -37
  46. package/dist/assets/AliasUrlDoc-DIpUWf4Y.js +0 -189
  47. package/dist/assets/AppHeaderDoc-DNQErj_t.js +0 -74
  48. package/dist/assets/AppSidebarDoc-DkeQarDu.js +0 -221
  49. package/dist/assets/ApprovalFlowDoc-8YgXbhKJ.js +0 -31
  50. package/dist/assets/AuditLogDoc-BBvNcHIo.js +0 -67
  51. package/dist/assets/AuditTrailDoc-DgFHO-uo.js +0 -17
  52. package/dist/assets/AuthDoc-WIA_Aetl.js +0 -200
  53. package/dist/assets/AvatarDoc-B6go1C1T.js +0 -11
  54. package/dist/assets/BadgeDoc-BONhfqB_.js +0 -36
  55. package/dist/assets/BaseFormDoc-CuyUArcj.js +0 -169
  56. package/dist/assets/BodyContentDoc-CterHC1E.js +0 -83
  57. package/dist/assets/BreadcrumbDoc-Dwn9nLeO.js +0 -75
  58. package/dist/assets/ButtonDoc-BOjRseZT.js +0 -41
  59. package/dist/assets/ButtonGroupDoc-8IS6PPh4.js +0 -7
  60. package/dist/assets/CalendarDoc-CMwIEqgT.js +0 -81
  61. package/dist/assets/CardDoc-BZz1CVg2.js +0 -49
  62. package/dist/assets/ChartDoc-B5vZVtqD.js +0 -76
  63. package/dist/assets/CheckboxDoc-lAbYO9I5.js +0 -55
  64. package/dist/assets/ColorPickerDoc-Dpsprp4N.js +0 -10
  65. package/dist/assets/ColorsFoundationDoc-CCHeSL3p.js +0 -13
  66. package/dist/assets/ComboTreeDoc-D4dTkIt-.js +0 -46
  67. package/dist/assets/ComboboxDoc-CqqZPvZq.js +0 -134
  68. package/dist/assets/ComponentDocTemplate-CQbBhfvZ.js +0 -1
  69. package/dist/assets/ContextMenuDoc-D3jC-MVA.js +0 -182
  70. package/dist/assets/ContextsDoc-XFH0-JdS.js +0 -211
  71. package/dist/assets/CreateCrudPageDoc-CpuiWI-g.js +0 -106
  72. package/dist/assets/CrudActionBarDoc-wuBGXD9Y.js +0 -112
  73. package/dist/assets/CrudGridDoc-BYWqSXBH.js +0 -85
  74. package/dist/assets/CrudOverviewDoc-B_bk2a2t.js +0 -14
  75. package/dist/assets/CrudPrimitivesDoc-CxaTB94A.js +0 -164
  76. package/dist/assets/CrudTableDoc-Dga1VgCu.js +0 -113
  77. package/dist/assets/CustomFormFieldsDoc-C1hwwSl3.js +0 -33
  78. package/dist/assets/DashboardFormDoc-BUDCmrMl.js +0 -49
  79. package/dist/assets/DashboardGeneralViewDoc-Cyg1SIiG.js +0 -71
  80. package/dist/assets/DashboardGridDoc-BavePiRF.js +0 -49
  81. package/dist/assets/DashboardListDoc-CLyMA6UK.js +0 -37
  82. package/dist/assets/DashboardOverviewDoc-DRVvNIF1.js +0 -35
  83. package/dist/assets/DashboardPanelRendererDoc--mfwb8Nc.js +0 -60
  84. package/dist/assets/DashboardPanelsBasicDoc-BQ2V_52D.js +0 -62
  85. package/dist/assets/DashboardPanelsCartesianDoc-sy-hcVQY.js +0 -75
  86. package/dist/assets/DashboardPanelsSpecialDoc-DsIUCRRP.js +0 -83
  87. package/dist/assets/DashboardViewDoc-CtlCNlEF.js +0 -45
  88. package/dist/assets/DataListDoc-DUy88lCQ.js +0 -13
  89. package/dist/assets/DesignSystemHome-DHl9YtbH.js +0 -1
  90. package/dist/assets/DialogDoc-CMQqnTV-.js +0 -981
  91. package/dist/assets/DropdownMenuDoc-S7X9csGt.js +0 -175
  92. package/dist/assets/ElectronicSignatureDialogDoc-BfithaL_.js +0 -57
  93. package/dist/assets/EmptyStateDoc-CHGCiGIk.js +0 -35
  94. package/dist/assets/EnvironmentsDoc-DZHJZ2nm.js +0 -96
  95. package/dist/assets/ErrorBoundaryDoc-DoaAg68p.js +0 -111
  96. package/dist/assets/ExampleActionPlanPage-C0fIMZCD.js +0 -1
  97. package/dist/assets/ExampleAppDoc-DzIU81Fn.js +0 -1
  98. package/dist/assets/ExampleCard-DuLrb3t-.js +0 -1
  99. package/dist/assets/ExampleCrudReportsPage-M0pz6tdM.js +0 -1
  100. package/dist/assets/ExampleDashboardPage-CRG5r3Vw.js +0 -1
  101. package/dist/assets/ExampleIdeasPage-I84ZMLY4.js +0 -1
  102. package/dist/assets/ExampleImportWizardPage-h4YqrrSe.js +0 -1
  103. package/dist/assets/ExampleSettingsPage-CwdWqoaP.js +0 -1
  104. package/dist/assets/FileUploadDoc-9-UujFNX.js +0 -34
  105. package/dist/assets/FilterBar-DDTqqUfZ.js +0 -1
  106. package/dist/assets/FormDoc-CVES6n3d.js +0 -81
  107. package/dist/assets/FoundationOverview-DT0u11Gz.js +0 -1
  108. package/dist/assets/GridDoc-CbHFSILF.js +0 -28
  109. package/dist/assets/HooksDoc-Ctxdk6Wq.js +0 -665
  110. package/dist/assets/HoverCardDoc-8Wkaafdj.js +0 -31
  111. package/dist/assets/I18nDoc-D3Q2m7ik.js +0 -167
  112. package/dist/assets/IconPickerDoc-DZ26Gdpg.js +0 -10
  113. package/dist/assets/IconsFoundationDoc-xOxtC7CW.js +0 -33
  114. package/dist/assets/InputDoc-BhztAiuJ.js +0 -211
  115. package/dist/assets/LabelDoc-A4hmTRRV.js +0 -42
  116. package/dist/assets/LeadershipDoc-CqOSfWsP.js +0 -452
  117. package/dist/assets/MediaDoc-C78gvC8p.js +0 -459
  118. package/dist/assets/MenubarDoc-DCnmd2tO.js +0 -165
  119. package/dist/assets/ModuleAccessDoc-CmD5nHDp.js +0 -153
  120. package/dist/assets/ModulesDialogDoc-DVit1CA-.js +0 -46
  121. package/dist/assets/MultiselectPermissionsDoc-tlJMs04L.js +0 -34
  122. package/dist/assets/NavigationMenuDoc-q1fbc89j.js +0 -116
  123. package/dist/assets/OnboardingDialogDoc-3A3eBYrq.js +0 -55
  124. package/dist/assets/PaginationDoc-B8-bMz5J.js +0 -27
  125. package/dist/assets/PaginationDoc-BkGdxHL3.js +0 -98
  126. package/dist/assets/PlacesDoc-CKPO6ATs.js +0 -226
  127. package/dist/assets/PopoverDoc-CJPU4Ags.js +0 -64
  128. package/dist/assets/ProgressDoc-CpjbTL4o.js +0 -29
  129. package/dist/assets/QualiexUserFieldDoc-DDwumlRw.js +0 -149
  130. package/dist/assets/RadioGroupDoc-D6tSZz8G.js +0 -57
  131. package/dist/assets/RadiusDoc-B4xSnajw.js +0 -7
  132. package/dist/assets/ReportRequestListDoc-C0LIaU8P.js +0 -15
  133. package/dist/assets/RequiredFieldsCounterDoc-COesoSdx.js +0 -58
  134. package/dist/assets/ResizableDoc-CW0-XQuB.js +0 -104
  135. package/dist/assets/RichTextEditorDoc-C8c_XA9P.js +0 -24
  136. package/dist/assets/ScrollAreaDoc-BxtoAPaZ.js +0 -28
  137. package/dist/assets/SecurityDoc-wOVqpg2F.js +0 -204
  138. package/dist/assets/SelectDoc-C75gtY9D.js +0 -80
  139. package/dist/assets/SeparatorDoc-BjQBPB1P.js +0 -4
  140. package/dist/assets/ServicesDoc-CXTctwBl.js +0 -308
  141. package/dist/assets/ShadowsDoc-C6Lw8_x2.js +0 -9
  142. package/dist/assets/SignDoc-Bh5ZUg5x.js +0 -66
  143. package/dist/assets/SkeletonDoc-rTLGK5VE.js +0 -54
  144. package/dist/assets/SliderDoc-JMAMDub7.js +0 -41
  145. package/dist/assets/SpacingDoc-RljOrpwA.js +0 -12
  146. package/dist/assets/SplitButtonDoc-CvShUW3w.js +0 -53
  147. package/dist/assets/StepSelectorDoc-C-nAap9H.js +0 -41
  148. package/dist/assets/SwitchDoc-DLnqmkPr.js +0 -56
  149. package/dist/assets/TableDoc-B8EpWLVg.js +0 -128
  150. package/dist/assets/TabsDoc-DIBtl_uC.js +0 -42
  151. package/dist/assets/TeamSelectorDoc-B7OnCbL7.js +0 -10
  152. package/dist/assets/TermsOfUseDoc-Bb-pw08s.js +0 -16
  153. package/dist/assets/TextareaDoc-DGnqMqEC.js +0 -46
  154. package/dist/assets/ToastDoc-DjYyc7ae.js +0 -157
  155. package/dist/assets/ToggleDoc-C9ZOVjkY.js +0 -51
  156. package/dist/assets/TooltipDoc-BEx4l9-i.js +0 -58
  157. package/dist/assets/TruncatedCellDoc-BbV1bRSY.js +0 -12
  158. package/dist/assets/TypographyFoundationDoc-CUDYjRo9.js +0 -7
  159. package/dist/assets/UpdatesNotificationDoc-7nyjzLMJ.js +0 -29
  160. package/dist/assets/UsersGroupsSelectorDoc-C0KlTAL5.js +0 -18
  161. package/dist/assets/UtilitiesDoc-DGxaHVV1.js +0 -145
  162. package/dist/assets/ViewerDialogsDoc-CnTPTEz0.js +0 -1
  163. package/dist/assets/blocks-B6LrJeAM.js +0 -1
  164. package/dist/assets/building-DeVappnD.js +0 -1
  165. package/dist/assets/calendar-days-BQ0na5kM.js +0 -1
  166. package/dist/assets/check-check-C_-PJCJa.js +0 -1
  167. package/dist/assets/circle-plus-CpIcep-O.js +0 -1
  168. package/dist/assets/circle-x-jPpBPew0.js +0 -1
  169. package/dist/assets/clipboard-list-CXNPdciZ.js +0 -1
  170. package/dist/assets/cloud-upload-BEjzumjl.js +0 -1
  171. package/dist/assets/crown-CqNsQIsm.js +0 -1
  172. package/dist/assets/date-picker-BW3eGOe_.js +0 -1
  173. package/dist/assets/disabled-menu-item-C2YaMvSt.js +0 -1
  174. package/dist/assets/drawer-D5rflIcD.js +0 -3
  175. package/dist/assets/file-braces-DFb5X9so.js +0 -1
  176. package/dist/assets/file-pen-line-CyUGKkEN.js +0 -1
  177. package/dist/assets/git-branch-BcXv9mpp.js +0 -1
  178. package/dist/assets/globe-CpMIWAcv.js +0 -1
  179. package/dist/assets/hash-cQWdKjya.js +0 -1
  180. package/dist/assets/hourglass-BahQ3eDv.js +0 -1
  181. package/dist/assets/hover-card-R66N85sZ.js +0 -1
  182. package/dist/assets/iframe-dialog-V0mW5aBb.js +0 -1
  183. package/dist/assets/index-DkiftrvI.js +0 -352
  184. package/dist/assets/index-nmBjO9Th.css +0 -1
  185. package/dist/assets/life-buoy-ByXiPddz.js +0 -1
  186. package/dist/assets/loading-state-Cb5_t5uE.js +0 -1
  187. package/dist/assets/lucide-react-Cp3Yw3Zm.js +0 -1
  188. package/dist/assets/package-B3-pVvPM.js +0 -1
  189. package/dist/assets/pen-Bi_lmmKT.js +0 -1
  190. package/dist/assets/pin-DVsSl8QA.js +0 -1
  191. package/dist/assets/printer-BnJ8B6m-.js +0 -1
  192. package/dist/assets/radio-group-BHAaNGsm.js +0 -1
  193. package/dist/assets/server-CtzFTfKR.js +0 -1
  194. package/dist/assets/share-2-Dv8Do445.js +0 -1
  195. package/dist/assets/shield-check-CFXjOV_w.js +0 -1
  196. package/dist/assets/shield-x-DJTRfVux.js +0 -1
  197. package/dist/assets/slider-v9tXBSnB.js +0 -1
  198. package/dist/assets/smartphone-BSNR60L7.js +0 -1
  199. package/dist/assets/step-selector-ATTh_9Wa.js +0 -1
  200. package/dist/assets/text-align-start-qE-MbYYw.js +0 -1
  201. package/dist/assets/thumbs-up-D_XIW_uX.js +0 -1
  202. package/dist/assets/trash-DTWQwpwA.js +0 -1
  203. package/dist/assets/trending-up-jip5-leJ.js +0 -1
  204. package/dist/assets/useMockCrud-CN4vjyOZ.js +0 -1
  205. package/dist/assets/user-check-BlH3EDWK.js +0 -1
  206. package/dist/assets/user-plus-BqwXwD-c.js +0 -1
  207. package/dist/index.html +0 -33
@@ -0,0 +1,433 @@
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
+ - 🎨 **Padrão v2**: Tamanho
157
+ - usa
158
+ - (8px) para consistência com inputs e selects.
159
+
160
+ > Fonte: `src\design-system\docs\components\ButtonDoc.tsx`
161
+
162
+ ---
163
+
164
+ ### Button
165
+
166
+ Componente de botão com variantes semânticas, tamanhos e estados. Use para ações primárias, secundárias e destrutivas.
167
+
168
+ **Uso:**
169
+ ```tsx
170
+ import { Button } from "forlogic-core"
171
+
172
+ <Button>Click me</Button>
173
+ <Button variant="primary">Primary</Button>
174
+ <Button variant="destructive">Delete</Button>
175
+ ```
176
+
177
+ **Props:**
178
+ | Prop | Tipo | Padrão | Descrição |
179
+ |------|------|--------|-----------|
180
+ | `asChild` | `boolean` | false | Renderiza como elemento filho (ex: Link). |
181
+ | `disabled` | `boolean` | false | Estado desabilitado. |
182
+
183
+ **Exemplos:**
184
+ ```tsx
185
+ <Button variant=
186
+ ```
187
+ ```tsx
188
+ // ⚠️ DEPRECATED: Variantes mantidas para compatibilidade
189
+ // Use as variantes semânticas (primary, secondary, etc.)
190
+ <Button variant=
191
+ ```
192
+ ```tsx
193
+ <Button size=
194
+ ```
195
+ ```tsx
196
+ <Button size=
197
+ ```
198
+ ```tsx
199
+ <Button>Normal</Button>
200
+ <Button disabled>Disabled</Button>
201
+ <Button disabled>
202
+ <Loader2 className=
203
+ ```
204
+ ```tsx
205
+ <Button variant=
206
+ ```
207
+
208
+ **Acessibilidade:**
209
+ - Acessível via teclado (Tab, Enter, Space)
210
+ - Indicador de foco visível (focus-visible)
211
+ - Estado desabilitado comunicado a leitores de tela
212
+ - Botões de ícone devem ter aria-label
213
+ - Tamanho mínimo de toque de 44x44px no mobile
214
+
215
+ **Notas:**
216
+ - ✅ Use variant=
217
+ - para a ação principal da página
218
+ - ✅ Limite a um botão primário por seção
219
+ - ✅ Use variant=
220
+ - para ações destrutivas (consistente com Alert e Badge)
221
+ - ✅ Inclua estado de loading para ações assíncronas
222
+ - ❌ Não use múltiplos botões primários no mesmo contexto
223
+ - ❌ Não crie estilos customizados fora do design system
224
+ - 🎨 **Padrão v2**: Tamanho
225
+ - usa
226
+ - (8px) para consistência com inputs e selects.
227
+
228
+ > Fonte: `src\design-system\docs\components\ButtonDoc.tsx`
229
+
230
+ ---
231
+
232
+ ### Action Menu (ActionButton)
233
+
234
+ 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.
235
+
236
+ **Uso:**
237
+ ```tsx
238
+ import {
239
+ ActionButton, // ou: import { ActionMenu } from "forlogic-core"
240
+ DropdownMenu,
241
+ DropdownMenuTrigger,
242
+ DropdownMenuContent,
243
+ DropdownMenuItem
244
+ } from "forlogic-core"
245
+ import { Edit, Trash } from 'lucide-react'
246
+
247
+ // 💡 Alias disponível: ActionMenu = ActionButton
248
+
249
+ // ✅ CORRETO: Uso padrão em tabelas CRUD
250
+ <DropdownMenu>
251
+ <DropdownMenuTrigger asChild>
252
+ <ActionButton />
253
+ </DropdownMenuTrigger>
254
+ <DropdownMenuContent align="end">
255
+ <DropdownMenuItem onClick={() => handleEdit(item)}>
256
+ <Edit className="mr-2 h-4 w-4" />
257
+ Editar
258
+ </DropdownMenuItem>
259
+ <DropdownMenuItem onClick={() => handleDelete(item)}>
260
+ <Trash className="mr-2 h-4 w-4" />
261
+ Excluir
262
+ </DropdownMenuItem>
263
+ </DropdownMenuContent>
264
+ </DropdownMenu>
265
+
266
+ // ✅ CORRETO: Com ícone customizado
267
+ <ActionButton>
268
+ <Edit size={12} />
269
+ </ActionButton>
270
+ ```
271
+
272
+ **Props:**
273
+ | Prop | Tipo | Padrão | Descrição |
274
+ |------|------|--------|-----------|
275
+ | `children` | `ReactNode` | <EllipsisVertical /> | Conteúdo customizado (ícone padrão: três pontos verticais). |
276
+ | `className` | `string` | - | Classes CSS adicionais. |
277
+ | `onClick` | `() => void` | - | Handler de clique. |
278
+
279
+ **Exemplos:**
280
+ ```tsx
281
+ // ❌ NUNCA faça isso em tabelas CRUD
282
+ <Button variant=
283
+ ```
284
+ ```tsx
285
+ // ✅ SEMPRE use ActionButton em tabelas
286
+ <DropdownMenu>
287
+ <DropdownMenuTrigger asChild>
288
+ <ActionButton />
289
+ </DropdownMenuTrigger>
290
+ <DropdownMenuContent align=
291
+ ```
292
+
293
+ **Acessibilidade:**
294
+ - Tamanho compacto (height: 28px, padding: 8px)
295
+ - Ícone padrão: EllipsisVertical (três pontos verticais)
296
+ - variant=
297
+ - com estilo consistente do tema
298
+ - Perfeito para menus de ação em linhas de tabela
299
+
300
+ **Notas:**
301
+ - 💡 Alias: Também disponível como
302
+ - — import { ActionMenu } from
303
+ - ,
304
+
305
+ - ,
306
+
307
+ - ghost
308
+ - icon
309
+ - ,
310
+
311
+ - ,
312
+
313
+ - ,
314
+
315
+
316
+ > Fonte: `src\design-system\docs\components\ActionButtonDoc.tsx`
317
+
318
+ ---
319
+
320
+ ### Switch
321
+
322
+ Um controle que permite ao usuário alternar entre marcado e desmarcado.
323
+
324
+ **Uso:**
325
+ ```tsx
326
+ import { Switch, Label } from "forlogic-core"
327
+
328
+ <div className="flex items-center space-x-2">
329
+ <Switch id="airplane-mode" />
330
+ <Label htmlFor="airplane-mode">Modo Avião</Label>
331
+ </div>
332
+ ```
333
+
334
+ **Props:**
335
+ | Prop | Tipo | Padrão | Descrição |
336
+ |------|------|--------|-----------|
337
+ | `id` | `string` | - | Identificador único para associar com Label. |
338
+ | `checked` | `boolean` | - | Estado controlado do switch. |
339
+ | `defaultChecked` | `boolean` | false | Estado inicial não controlado. |
340
+ | `disabled` | `boolean` | false | Desabilita a interação. |
341
+ | `required` | `boolean` | false | Indica campo obrigatório em formulário. |
342
+ | `name` | `string` | - | Nome do campo para submissão de formulário. |
343
+ | `onCheckedChange` | `(checked: boolean) => void` | - | Callback quando o estado muda. |
344
+
345
+ **Exemplos:**
346
+ ```tsx
347
+ // Desligado
348
+ <Switch id=
349
+ ```
350
+ ```tsx
351
+ import { Switch, Label } from
352
+ ```
353
+ ```tsx
354
+ <div className=
355
+ ```
356
+ ```tsx
357
+ <div className=
358
+ ```
359
+
360
+ **Acessibilidade:**
361
+ - Role
362
+ - aplicado automaticamente (WAI-ARIA)
363
+ - Suporte completo de teclado (Espaço para alternar)
364
+ - Estados aria-checked comunicados para leitores de tela
365
+ - Associação com Label via htmlFor/id
366
+ - Indicadores visuais de foco visíveis
367
+ - Estado desabilitado comunicado via aria-disabled
368
+
369
+ > Fonte: `src\design-system\docs\components\SwitchDoc.tsx`
370
+
371
+ ---
372
+
373
+ ### Toggle
374
+
375
+ Botões de dois estados que podem estar ligados ou desligados, individualmente ou em grupo.
376
+
377
+ **Uso:**
378
+ ```tsx
379
+ import { Toggle, ToggleGroup, ToggleGroupItem } from "forlogic-core"
380
+ import { Bold, Italic } from "lucide-react"
381
+
382
+ // Toggle individual
383
+ <Toggle aria-label="Alternar negrito">
384
+ <Bold className="h-4 w-4" />
385
+ </Toggle>
386
+
387
+ // Toggle em grupo (seleção única)
388
+ <ToggleGroup type="single" defaultValue="center">
389
+ <ToggleGroupItem value="left" aria-label="Alinhar à esquerda">
390
+ <AlignLeft className="h-4 w-4" />
391
+ </ToggleGroupItem>
392
+ <ToggleGroupItem value="center" aria-label="Centralizar">
393
+ <AlignCenter className="h-4 w-4" />
394
+ </ToggleGroupItem>
395
+ </ToggleGroup>
396
+ ```
397
+
398
+ **Props:**
399
+ | Prop | Tipo | Padrão | Descrição |
400
+ |------|------|--------|-----------|
401
+ | `pressed` | `boolean` | - | Estado controlado do Toggle. |
402
+ | `defaultPressed` | `boolean` | false | Estado inicial não controlado do Toggle. |
403
+ | `onPressedChange` | `(pressed: boolean) => void` | - | Callback quando o estado do Toggle muda. |
404
+ | `disabled` | `boolean` | false | Desabilita a interação. |
405
+ | `aria-label` | `string` | - | Obrigatório para acessibilidade quando não há texto visível. |
406
+
407
+ **Exemplos:**
408
+ ```tsx
409
+ import { Toggle } from
410
+ ```
411
+ ```tsx
412
+ <Toggle aria-label=
413
+ ```
414
+ ```tsx
415
+ import { ToggleGroup, ToggleGroupItem } from
416
+ ```
417
+ ```tsx
418
+ import { ToggleGroup, ToggleGroupItem } from
419
+ ```
420
+
421
+ **Acessibilidade:**
422
+ - Role
423
+ - com aria-pressed aplicado automaticamente
424
+ - Suporte completo de teclado (Espaço/Enter para alternar)
425
+ - Navegação por setas entre itens do ToggleGroup
426
+ - aria-label obrigatório para toggles apenas com ícones
427
+ - Estados aria-pressed comunicados para leitores de tela
428
+ - Indicadores visuais de foco e estado ativo
429
+ - ToggleGroup implementa padrão roving tabindex
430
+
431
+ > Fonte: `src\design-system\docs\components\ToggleDoc.tsx`
432
+
433
+ ---