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,243 @@
1
+ <!-- ⚠️ ARQUIVO GERADO AUTOMATICAMENTE — NÃO EDITAR MANUALMENTE -->
2
+ <!-- Fonte: src/design-system/docs/ | Regenerar: npx tsx scripts/generate-ds-docs.ts -->
3
+
4
+ # CRUD
5
+
6
+ Categoria: **CRUD** | 8 componentes
7
+
8
+ ### CRUD Overview
9
+
10
+ Visão geral da arquitetura CRUD do forlogic-core. Explica os 3 níveis de abstração: createCrudPage (alto nível), CrudTable/CrudGrid (médio nível) e Primitives (baixo nível).
11
+
12
+ **Uso:**
13
+ ```tsx
14
+ import { createSimpleService, createCrudPage } from 'forlogic-core';
15
+
16
+ const notesService = createSimpleService({
17
+ tableName: 'notes',
18
+ entityName: 'nota',
19
+ searchFields: ['title', 'content'],
20
+ });
21
+
22
+ const NotesPage = createCrudPage({
23
+ title: 'Notas',
24
+ service: notesService,
25
+ columns: [
26
+ { key: 'title', header: 'Título' },
27
+ { key: 'content', header: 'Conteúdo' },
28
+ ],
29
+ formSections: [{
30
+ id: 'main',
31
+ fields: [
32
+ { name: 'title', label: 'Título', type: 'text', required: true },
33
+ { name: 'content', label: 'Conteúdo', type: 'textarea' },
34
+ ],
35
+ }],
36
+ });
37
+ ```
38
+
39
+ **Notas:**
40
+ - Nível Alto: createCrudPage — página CRUD completa com 1 configuração
41
+ - Nível Médio: CrudTable/CrudGrid — componentes compostos para layouts customizados
42
+ - Nível Baixo: Primitives (DataTable, DataPagination, DataFilterBar) — controle total
43
+
44
+ > Fonte: `src\design-system\docs\components\crud\CrudOverviewDoc.tsx`
45
+
46
+ ---
47
+
48
+ ### createCrudPage
49
+
50
+ Factory de alto nível que gera uma página CRUD completa com ~15 linhas de configuração declarativa.
51
+
52
+ > Fonte: `src\design-system\docs\components\crud\CreateCrudPageDoc.tsx`
53
+
54
+ ---
55
+
56
+ ### CrudActionBar
57
+
58
+ Barra de ações unificada usada por todos os componentes CRUD (CrudTable, CrudGrid, createCrudPage) para garantir UX consistente.
59
+
60
+ > Fonte: `src\design-system\docs\components\crud\CrudActionBarDoc.tsx`
61
+
62
+ ---
63
+
64
+ ### CrudTable
65
+
66
+ Componente de tabela CRUD completo com ordenação, seleção, resize de colunas, ações em massa e paginação integrada com useCrud.
67
+
68
+ > Fonte: `src\design-system\docs\components\crud\CrudTableDoc.tsx`
69
+
70
+ ---
71
+
72
+ ### CrudGrid
73
+
74
+ Componente para exibir dados em formato de grade (cards) com todas as funcionalidades CRUD. Alternativa visual ao CrudTable para listagens com layout mais visual.
75
+
76
+ > Fonte: `src\design-system\docs\components\crud\CrudGridDoc.tsx`
77
+
78
+ ---
79
+
80
+ ### CRUD Primitives
81
+
82
+ Componentes de baixo nível para interfaces CRUD totalmente customizadas com controle total sobre layout e comportamento. Aliases disponíveis: DataTable, DataFilterBar, DataPagination.
83
+
84
+ > Fonte: `src\design-system\docs\components\crud\CrudPrimitivesDoc.tsx`
85
+
86
+ ---
87
+
88
+ ### Pagination
89
+
90
+ Barra de paginação completa com seletor de itens por página e controles de navegação.
91
+
92
+ **Uso:**
93
+ ```tsx
94
+ import { Pagination } from "forlogic-core/crud"
95
+
96
+ <Pagination
97
+ currentPage={1}
98
+ totalPages={10}
99
+ totalItems={100}
100
+ itemsPerPage={10}
101
+ onPageChange={(page) => setPage(page)}
102
+ onItemsPerPageChange={(limit) => setLimit(limit)}
103
+ variant="full"
104
+ />
105
+ ```
106
+
107
+ **Props:**
108
+ | Prop | Tipo | Padrão | Descrição |
109
+ |------|------|--------|-----------|
110
+ | `currentPage` | `number` | - | Página atual (1-indexed) |
111
+ | `totalPages` | `number` | - | Número total de páginas |
112
+ | `totalItems` | `number` | - | Número total de itens |
113
+ | `itemsPerPage` | `number` | - | Quantidade de itens por página |
114
+ | `onPageChange` | `(page: number) => void` | - | Callback ao mudar de página |
115
+ | `onItemsPerPageChange` | `(limit: number) => void` | - | Callback ao mudar itens por página |
116
+
117
+ **Exemplos:**
118
+ ```tsx
119
+ <Pagination
120
+ currentPage={1}
121
+ totalPages={2}
122
+ totalItems={15}
123
+ itemsPerPage={10}
124
+ onPageChange={setPage}
125
+ onItemsPerPageChange={setItemsPerPage}
126
+ variant=
127
+ ```
128
+ ```tsx
129
+ <Pagination
130
+ currentPage={3}
131
+ totalPages={25}
132
+ totalItems={250}
133
+ itemsPerPage={10}
134
+ onPageChange={setPage}
135
+ onItemsPerPageChange={setItemsPerPage}
136
+ variant=
137
+ ```
138
+
139
+ **Acessibilidade:**
140
+ - Navegável por teclado
141
+ - Labels ARIA apropriados
142
+ - Indicação visual da página atual
143
+ - Botões desabilitados quando não aplicável
144
+ - Amigável para leitores de tela
145
+
146
+ > Fonte: `src\design-system\docs\components\PaginationDoc.tsx`
147
+
148
+ ---
149
+
150
+ ### Form
151
+
152
+ Construindo formulários com React Hook Form e Zod.
153
+
154
+ **Uso:**
155
+ ```tsx
156
+ import { zodResolver } from "@hookform/resolvers/zod"
157
+ import { useForm } from "react-hook-form"
158
+ import * as z from "zod"
159
+ import {
160
+ Form,
161
+ FormControl,
162
+ FormDescription,
163
+ FormField,
164
+ FormItem,
165
+ FormLabel,
166
+ FormMessage,
167
+ } from "forlogic-core"
168
+
169
+ const formSchema = z.object({
170
+ username: z.string().min(2).max(50),
171
+ })
172
+
173
+ function MyForm() {
174
+ const form = useForm<z.infer<typeof formSchema>>({
175
+ resolver: zodResolver(formSchema),
176
+ })
177
+
178
+ function onSubmit(values: z.infer<typeof formSchema>) {
179
+ console.log(values)
180
+ }
181
+
182
+ return (
183
+ <Form {...form}>
184
+ <form onSubmit={form.handleSubmit(onSubmit)}>
185
+ <FormField
186
+ control={form.control}
187
+ name="username"
188
+ render={({ field }) => (
189
+ <FormItem>
190
+ <FormLabel>Username</FormLabel>
191
+ <FormControl>
192
+ <Input placeholder="shadcn" {...field} />
193
+ </FormControl>
194
+ <FormDescription>
195
+ This is your public display name.
196
+ </FormDescription>
197
+ <FormMessage />
198
+ </FormItem>
199
+ )}
200
+ />
201
+ <Button type="submit">Submit</Button>
202
+ </form>
203
+ </Form>
204
+ )
205
+ }
206
+ ```
207
+
208
+ **Props:**
209
+ | Prop | Tipo | Padrão | Descrição |
210
+ |------|------|--------|-----------|
211
+ | `Form` | `FormProvider props` | - | Wrapper que provê o contexto do formulário via React Hook Form |
212
+ | `FormField.control` | `Control` | - | Objeto control do useForm para gerenciar o campo |
213
+ | `FormField.name` | `string` | - | Nome do campo no schema do formulário |
214
+ | `FormField.render` | `(field) => ReactNode` | - | Função de renderização do campo com acesso ao field object |
215
+ | `FormItem` | `HTMLDivElement` | - | Container que agrupa label, controle, descrição e mensagem de erro |
216
+ | `FormLabel` | `LabelProps` | - | Label associado ao campo do formulário |
217
+ | `FormControl` | `SlotProps` | - | Wrapper que conecta o controle ao contexto do campo |
218
+ | `FormDescription` | `HTMLParagraphElement` | - | Texto de ajuda exibido abaixo do controle |
219
+ | `FormMessage` | `HTMLParagraphElement` | - | Exibe mensagens de erro de validação automaticamente |
220
+
221
+ **Exemplos:**
222
+ ```tsx
223
+ <FormField
224
+ control={form.control}
225
+ name=
226
+ ```
227
+ ```tsx
228
+ const formSchema = z.object({
229
+ username: z.string().min(3, {
230
+ message:
231
+ ```
232
+
233
+ **Acessibilidade:**
234
+ - Labels são automaticamente associados aos controles via aria-describedby
235
+ - Mensagens de erro são anunciadas por leitores de tela
236
+ - Suporta navegação por teclado nativa dos controles
237
+ - Estados de erro são indicados visualmente e semanticamente
238
+ - Usa React Hook Form para gerenciamento de estado de formulário
239
+ - Integra com Zod para validação de schema
240
+
241
+ > Fonte: `src\design-system\docs\components\FormDoc.tsx`
242
+
243
+ ---
@@ -0,0 +1,360 @@
1
+ <!-- ⚠️ ARQUIVO GERADO AUTOMATICAMENTE — NÃO EDITAR MANUALMENTE -->
2
+ <!-- Fonte: src/design-system/docs/ | Regenerar: npx tsx scripts/generate-ds-docs.ts -->
3
+
4
+ # Data Display
5
+
6
+ Categoria: **Data Display** | 8 componentes
7
+
8
+ ### Avatar
9
+
10
+ Um elemento de imagem com fallback para representar o usuário.
11
+
12
+ **Uso:**
13
+ ```tsx
14
+ import { Avatar, AvatarImage, AvatarFallback } from "forlogic-core"
15
+
16
+ <Avatar>
17
+ <AvatarImage src="https://github.com/shadcn.png" alt="@shadcn" />
18
+ <AvatarFallback>CN</AvatarFallback>
19
+ </Avatar>
20
+ ```
21
+
22
+ **Props:**
23
+ | Prop | Tipo | Padrão | Descrição |
24
+ |------|------|--------|-----------|
25
+ | `src` | `string` | - | A URL da fonte da imagem (AvatarImage). |
26
+ | `alt` | `string` | - | Texto alternativo para a imagem (AvatarImage). |
27
+
28
+ **Exemplos:**
29
+ ```tsx
30
+ <Avatar>
31
+ <AvatarImage src=
32
+ ```
33
+ ```tsx
34
+ <Avatar>
35
+ <AvatarFallback>JD</AvatarFallback>
36
+ </Avatar>
37
+ ```
38
+
39
+ **Acessibilidade:**
40
+ - Texto alternativo adequado para imagens
41
+ - Fallback garante que o conteúdo seja sempre exibido
42
+ - Estrutura HTML semântica
43
+
44
+ > Fonte: `src\design-system\docs\components\AvatarDoc.tsx`
45
+
46
+ ---
47
+
48
+ ### Badge
49
+
50
+ Exibe um badge ou um componente que se parece com um badge.
51
+
52
+ **Uso:**
53
+ ```tsx
54
+ import { Badge } from "forlogic-core"
55
+
56
+ <Badge>Badge</Badge>
57
+ <Badge variant="secondary">Secondary</Badge>
58
+ <Badge variant="info">Info</Badge>
59
+ <Badge variant="success">Success</Badge>
60
+ <Badge variant="warning">Warning</Badge>
61
+ <Badge variant="danger">Danger</Badge>
62
+ <Badge variant="outline">Outline</Badge>
63
+ <Badge variant="sharp">Sharp</Badge>
64
+ ```
65
+
66
+ **Exemplos:**
67
+ ```tsx
68
+ <Badge>Default</Badge>
69
+ <Badge variant=
70
+ ```
71
+ ```tsx
72
+ <Badge variant=
73
+ ```
74
+ ```tsx
75
+ <Badge variant=
76
+ ```
77
+ ```tsx
78
+ <div className=
79
+ ```
80
+ ```tsx
81
+ <Badge variant=
82
+ ```
83
+
84
+ **Acessibilidade:**
85
+ - HTML semântico com taxas de contraste adequadas
86
+ - Funciona com leitores de tela
87
+ - Pode ser tornado interativo com labels ARIA adequadas se necessário
88
+
89
+ > Fonte: `src\design-system\docs\components\BadgeDoc.tsx`
90
+
91
+ ---
92
+
93
+ ### Card
94
+
95
+ Exibe um card com cabeçalho, conteúdo e rodapé.
96
+
97
+ **Uso:**
98
+ ```tsx
99
+ import { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter } from "forlogic-core"
100
+
101
+ <Card>
102
+ <CardHeader>
103
+ <CardTitle>Card Title</CardTitle>
104
+ <CardDescription>Card Description</CardDescription>
105
+ </CardHeader>
106
+ <CardContent>
107
+ <p>Card Content</p>
108
+ </CardContent>
109
+ <CardFooter>
110
+ <p>Card Footer</p>
111
+ </CardFooter>
112
+ </Card>
113
+ ```
114
+
115
+ **Props:**
116
+ | Prop | Tipo | Padrão | Descrição |
117
+ |------|------|--------|-----------|
118
+ | `className` | `string` | - | Classes CSS adicionais para o card. |
119
+
120
+ **Acessibilidade:**
121
+ - Estrutura semântica com elementos apropriados
122
+ - Hierarquia de cabeçalhos adequada
123
+ - Contraste de cores acessível
124
+ - Funciona com leitores de tela
125
+
126
+ > Fonte: `src\design-system\docs\components\CardDoc.tsx`
127
+
128
+ ---
129
+
130
+ ### DataList
131
+
132
+ Sistema de lista de dados com composição de componentes. Ideal para exibir informações estruturadas em formato de cards.
133
+
134
+ **Uso:**
135
+ ```tsx
136
+ import { DataList, Badge } from "forlogic-core"
137
+
138
+ <DataList.Root>
139
+ <DataList.Item onClick={() => console.log('clicked')}>
140
+ <DataList.Field label="Nome" value="João Silva" />
141
+ <DataList.Field label="Email" value="joao@exemplo.com" />
142
+ <DataList.Field label="Status" value={<Badge>Ativo</Badge>} />
143
+ </DataList.Item>
144
+ <DataList.Item>
145
+ <DataList.Field label="Nome" value="Maria Santos" />
146
+ <DataList.Field label="Email" value="maria@exemplo.com" />
147
+ </DataList.Item>
148
+ </DataList.Root>
149
+ ```
150
+
151
+ **Props:**
152
+ | Prop | Tipo | Padrão | Descrição |
153
+ |------|------|--------|-----------|
154
+ | `DataList.Root` | `ReactNode` | - | Container principal com espaçamento vertical. |
155
+ | `DataList.Item` | `ReactNode` | - | Item individual renderizado como Card. |
156
+ | `DataList.Item.onClick` | `() => void` | - | Handler de clique (adiciona hover state). |
157
+ | `DataList.Field` | `{ label, value }` | - | Par label/value formatado horizontalmente. |
158
+ | `DataList.Field.value` | `ReactNode` | - | Valor pode ser texto ou componentes (Badge, etc.). |
159
+
160
+ **Acessibilidade:**
161
+ - Items clicáveis tem cursor pointer
162
+ - Hover state visual para feedback
163
+ - Estrutura semântica com Cards
164
+
165
+ **Notas:**
166
+ - 💡 Use para listas de dados estruturados
167
+ - 💡 Field.value aceita ReactNode - use Badge, Button, etc.
168
+ - 💡 onClick em Item adiciona hover state automaticamente
169
+
170
+ > Fonte: `src\design-system\docs\components\DataListDoc.tsx`
171
+
172
+ ---
173
+
174
+ ### Empty State
175
+
176
+ Componente para exibir estados vazios com ícone, mensagem e ação opcional.
177
+
178
+ **Uso:**
179
+ ```tsx
180
+ import { EmptyState } from "forlogic-core"
181
+
182
+ // Estado vazio padrão
183
+ <EmptyState
184
+ title="Nenhum item encontrado"
185
+ description="Adicione seu primeiro item para começar"
186
+ action={{
187
+ label: "Adicionar Item",
188
+ onClick: () => handleAddItem()
189
+ }}
190
+ />
191
+
192
+ // Sem resultados de busca
193
+ <EmptyState
194
+ variant="search"
195
+ title="Nenhum resultado encontrado"
196
+ description="Tente ajustar sua busca"
197
+ />
198
+
199
+ // Estado de erro
200
+ <EmptyState
201
+ variant="error"
202
+ title="Erro ao carregar dados"
203
+ description="Não foi possível carregar as informações"
204
+ action={{
205
+ label: "Tentar Novamente",
206
+ onClick: () => refetch()
207
+ }}
208
+ />
209
+
210
+ // Ícone customizado
211
+ <EmptyState
212
+ icon={<Package className="h-8 w-8" />}
213
+ title="Sem produtos"
214
+ />
215
+ ```
216
+
217
+ **Props:**
218
+ | Prop | Tipo | Padrão | Descrição |
219
+ |------|------|--------|-----------|
220
+ | `icon` | `ReactNode` | - | Ícone customizado (sobrescreve o variant). |
221
+ | `title` | `string` | - | Título principal. |
222
+ | `description` | `string` | - | Descrição opcional. |
223
+ | `action` | `{ label: string, onClick: () => void }` | - | Botão de ação opcional. |
224
+ | `className` | `string` | - | Classes CSS adicionais. |
225
+
226
+ **Acessibilidade:**
227
+ - Ícones pré-configurados por variant
228
+ - Botão de ação opcional
229
+ - Centralizado e responsivo
230
+ - Suporte a ícone customizado
231
+
232
+ > Fonte: `src\design-system\docs\components\EmptyStateDoc.tsx`
233
+
234
+ ---
235
+
236
+ ### Separator
237
+
238
+ Separa visual ou semanticamente o conteúdo.
239
+
240
+ **Uso:**
241
+ ```tsx
242
+ import { Separator } from "forlogic-core"
243
+
244
+ <Separator />
245
+ <Separator orientation="vertical" />
246
+ ```
247
+
248
+ **Props:**
249
+ | Prop | Tipo | Padrão | Descrição |
250
+ |------|------|--------|-----------|
251
+ | `decorative` | `boolean` | true | Se o separador é decorativo ou semântico. |
252
+
253
+ **Exemplos:**
254
+ ```tsx
255
+ <Separator />
256
+ ```
257
+ ```tsx
258
+ <Separator orientation=
259
+ ```
260
+
261
+ **Acessibilidade:**
262
+ - HTML semântico com role adequado
263
+ - Pode ser decorativo ou estrutural
264
+ - Atributos ARIA adequados
265
+
266
+ > Fonte: `src\design-system\docs\components\SeparatorDoc.tsx`
267
+
268
+ ---
269
+
270
+ ### Progress
271
+
272
+ Exibe um indicador mostrando o progresso de conclusão de uma tarefa, tipicamente exibido como uma barra de progresso.
273
+
274
+ **Uso:**
275
+ ```tsx
276
+ import { Progress } from "forlogic-core"
277
+
278
+ <Progress value={60} />
279
+ ```
280
+
281
+ **Props:**
282
+ | Prop | Tipo | Padrão | Descrição |
283
+ |------|------|--------|-----------|
284
+ | `value` | `number` | 0 | O valor de progresso (0-100). |
285
+ | `max` | `number` | 100 | O valor máximo de progresso. |
286
+ | `getValueLabel` | `(value: number, max: number) => string` | - | Função para gerar label acessível. |
287
+ | `className` | `string` | - | Classes CSS para estilização. |
288
+
289
+ **Acessibilidade:**
290
+ - Usa atributos ARIA apropriados (role=
291
+ - )
292
+ - Anuncia o progresso para leitores de tela via aria-valuenow
293
+ - aria-valuemin e aria-valuemax definidos automaticamente
294
+ - Use getValueLabel para descrições customizadas
295
+ - Indicador visual claro para estado de progresso
296
+
297
+ **Notas:**
298
+ - Use Progress para indicar conclusão de tarefas de longa duração
299
+ - Combine com textos descritivos para fornecer contexto adicional
300
+ - Prefira Spinner para loading de curta duração ou indeterminado
301
+ - Ajuste a altura via className (h-1, h-2, h-4) para diferentes contextos
302
+ - Para uploads, mostre tamanho atual e total junto com o percentual
303
+
304
+ > Fonte: `src\design-system\docs\components\ProgressDoc.tsx`
305
+
306
+ ---
307
+
308
+ ### Loading
309
+
310
+ Componentes para estados de carregamento: Skeleton (placeholders), Spinner (indicador de loading), e LoadingState (gerenciamento declarativo).
311
+
312
+ **Uso:**
313
+ ```tsx
314
+ import { Skeleton, Spinner, LoadingState } from "forlogic-core"
315
+
316
+ // Skeleton básico
317
+ <Skeleton className="h-4 w-[200px]" />
318
+
319
+ // Spinner
320
+ <Spinner size="md" />
321
+
322
+ // LoadingState declarativo
323
+ <LoadingState isLoading={isLoading} type="spinner">
324
+ <div>Conteúdo carregado</div>
325
+ </LoadingState>
326
+ ```
327
+
328
+ **Props:**
329
+ | Prop | Tipo | Padrão | Descrição |
330
+ |------|------|--------|-----------|
331
+ | `className` | `string` | - | Classes CSS para customizar dimensões e formato. |
332
+ | `rows` | `number` | 5 | Número de linhas (TableSkeleton). |
333
+ | `columns` | `number` | 4 | Número de colunas (TableSkeleton). |
334
+ | `count` | `number` | 3 | Número de cards (CardSkeleton). |
335
+ | `fields` | `number` | 4 | Número de campos (FormSkeleton). |
336
+ | `isLoading` | `boolean` | - | Estado de loading (LoadingState). |
337
+
338
+ **Acessibilidade:**
339
+ - Usa animação para indicar estado de carregamento
340
+ - Dimensionamento corresponde ao conteúdo esperado
341
+ - Não interfere com leitores de tela
342
+ - Animação respeita preferências de movimento reduzido
343
+ - LoadingState com overlay mantém contexto visual para usuários
344
+ - Spinner tem role=
345
+ - implícito para leitores de tela
346
+
347
+ **Notas:**
348
+ - **Skeleton**: Placeholder animado que imita o formato do conteúdo. Use para carregamentos iniciais.
349
+ - **Spinner**: Indicador circular de loading. Use em botões ou áreas pequenas.
350
+ - **LoadingState**: Componente declarativo que gerencia exibição de loading vs conteúdo.
351
+ - **type=
352
+ - **: Esconde children e mostra apenas o spinner centralizado.
353
+ - **type=
354
+ - **: Mantém children visíveis com um spinner sobreposto. Ideal para salvar.
355
+ - **type=
356
+ - **: Mostra um placeholder animado no lugar dos children.
357
+
358
+ > Fonte: `src\design-system\docs\components\SkeletonDoc.tsx`
359
+
360
+ ---