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,275 @@
1
+ # Golden Snippets — Exemplos Completos do Design System
2
+
3
+ > Implementações de referência para a IA copiar e adaptar.
4
+ > Cada snippet é funcional e segue 100% dos padrões do DS.
5
+
6
+ ---
7
+
8
+ ## 1. CRUD Completo com createCrudPage
9
+
10
+ ```tsx
11
+ // src/pages/ProcessesPage.tsx
12
+ import { createSimpleService, createCrudPage, usePageMetadata } from 'forlogic-core';
13
+
14
+ const processService = createSimpleService({
15
+ tableName: 'processes',
16
+ schema: 'quality',
17
+ entityName: 'processo',
18
+ searchFields: ['title', 'description'],
19
+ });
20
+
21
+ const ProcessesPage = createCrudPage({
22
+ title: 'Processos',
23
+ service: processService,
24
+ columns: [
25
+ { key: 'title', header: 'Título' },
26
+ { key: 'status', header: 'Status' },
27
+ { key: 'responsible', header: 'Responsável' },
28
+ { key: 'updated_at', header: 'Atualizado em', format: 'datetime' },
29
+ ],
30
+ formSections: [{
31
+ id: 'main',
32
+ fields: [
33
+ { name: 'title', label: 'Título', type: 'text', required: true },
34
+ { name: 'description', label: 'Descrição', type: 'textarea' },
35
+ { name: 'status', label: 'Status', type: 'combobox', options: [
36
+ { value: 'active', label: 'Ativo' },
37
+ { value: 'inactive', label: 'Inativo' },
38
+ ]},
39
+ { name: 'id_responsible', label: 'Responsável', type: 'combobox', entity: 'users' },
40
+ ],
41
+ }],
42
+ actions: [
43
+ { label: 'Editar', action: 'edit' },
44
+ { label: 'Inativar', action: 'toggle-status', confirm: true },
45
+ ],
46
+ });
47
+
48
+ export default ProcessesPage;
49
+ ```
50
+
51
+ ---
52
+
53
+ ## 2. CrudTable Customizado com ActionButton
54
+
55
+ ```tsx
56
+ // src/pages/DocumentsPage.tsx
57
+ import {
58
+ CrudTable, CrudActionBar, ActionButton, Badge,
59
+ usePageMetadata, useTranslation, getSupabaseClient,
60
+ } from 'forlogic-core';
61
+
62
+ export function DocumentsPage() {
63
+ const { t } = useTranslation();
64
+ usePageMetadata({ title: t('documents'), subtitle: t('documents_subtitle') });
65
+
66
+ const columns = [
67
+ { key: 'name', header: 'Nome' },
68
+ {
69
+ key: 'status',
70
+ header: 'Status',
71
+ cell: (row) => (
72
+ <Badge variant={row.status === 'approved' ? 'default' : 'secondary'}>
73
+ {row.status}
74
+ </Badge>
75
+ ),
76
+ },
77
+ { key: 'version', header: 'Versão' },
78
+ {
79
+ key: 'actions',
80
+ header: '',
81
+ cell: (row) => (
82
+ <ActionButton
83
+ actions={[
84
+ { label: 'Editar', onClick: () => handleEdit(row) },
85
+ { label: 'Duplicar', onClick: () => handleDuplicate(row) },
86
+ { label: 'Inativar', onClick: () => handleDeactivate(row), variant: 'destructive' },
87
+ ]}
88
+ />
89
+ ),
90
+ },
91
+ ];
92
+
93
+ return (
94
+ <div className="p-6 space-y-4">
95
+ <CrudActionBar
96
+ onAdd={() => setDialogOpen(true)}
97
+ addLabel="Novo Documento"
98
+ showSearch
99
+ />
100
+ <CrudTable columns={columns} data={documents} />
101
+ </div>
102
+ );
103
+ }
104
+ ```
105
+
106
+ ---
107
+
108
+ ## 3. Layout com AppLayout + Sidebar + Separador
109
+
110
+ ```tsx
111
+ // src/App.tsx
112
+ import { BrowserRouter, Routes, Route } from 'react-router-dom';
113
+ import { CoreProviders, AppLayout } from 'forlogic-core';
114
+ import { Home, FileText, Settings, BarChart3 } from 'lucide-react';
115
+ import ptBR from './i18n/pt-BR.json';
116
+
117
+ const sidebarConfig = {
118
+ navigation: [
119
+ { label: 'Início', path: '/', icon: Home },
120
+ { label: 'Documentos', path: '/documents', icon: FileText },
121
+ { label: 'Relatórios', path: '/reports', icon: BarChart3 },
122
+ { type: 'separator' as const, label: '', path: '' },
123
+ { label: 'Configurações', path: '/settings', icon: Settings },
124
+ ],
125
+ };
126
+
127
+ export default function App() {
128
+ return (
129
+ <CoreProviders moduleAlias="quality" appTranslations={{ 'pt-BR': ptBR }}>
130
+ <BrowserRouter>
131
+ <AppLayout sidebarConfig={sidebarConfig}>
132
+ <Routes>
133
+ <Route path="/" element={<HomePage />} />
134
+ <Route path="/documents" element={<DocumentsPage />} />
135
+ </Routes>
136
+ </AppLayout>
137
+ </BrowserRouter>
138
+ </CoreProviders>
139
+ );
140
+ }
141
+ ```
142
+
143
+ ---
144
+
145
+ ## 4. Formulário com Dialog + BaseForm + Combobox
146
+
147
+ ```tsx
148
+ // src/components/ProcessForm.tsx
149
+ import {
150
+ Dialog, DialogContent, DialogHeader, DialogTitle,
151
+ Input, Label, Combobox, Button,
152
+ useTranslation,
153
+ } from 'forlogic-core';
154
+ import { useForm } from 'react-hook-form';
155
+ import { zodResolver } from '@hookform/resolvers/zod';
156
+ import { z } from 'zod';
157
+
158
+ const schema = z.object({
159
+ title: z.string().min(3, 'Mínimo 3 caracteres'),
160
+ status: z.string(),
161
+ id_responsible: z.string().uuid(),
162
+ });
163
+
164
+ type FormData = z.infer<typeof schema>;
165
+
166
+ interface ProcessFormProps {
167
+ open: boolean;
168
+ onOpenChange: (open: boolean) => void;
169
+ onSubmit: (data: FormData) => void;
170
+ defaultValues?: Partial<FormData>;
171
+ }
172
+
173
+ export function ProcessForm({ open, onOpenChange, onSubmit, defaultValues }: ProcessFormProps) {
174
+ const { t } = useTranslation();
175
+ const form = useForm<FormData>({
176
+ resolver: zodResolver(schema),
177
+ defaultValues,
178
+ });
179
+
180
+ return (
181
+ <Dialog open={open} onOpenChange={onOpenChange}>
182
+ <DialogContent>
183
+ <DialogHeader>
184
+ <DialogTitle>{defaultValues ? t('edit') : t('create')}</DialogTitle>
185
+ </DialogHeader>
186
+ <form onSubmit={form.handleSubmit(onSubmit)} className="space-y-4">
187
+ <div className="space-y-2">
188
+ <Label htmlFor="title">{t('title')}</Label>
189
+ <Input id="title" {...form.register('title')} />
190
+ </div>
191
+ <div className="space-y-2">
192
+ <Label>{t('status')}</Label>
193
+ <Combobox
194
+ options={[
195
+ { value: 'active', label: 'Ativo' },
196
+ { value: 'inactive', label: 'Inativo' },
197
+ ]}
198
+ value={form.watch('status')}
199
+ onValueChange={(v) => form.setValue('status', v)}
200
+ />
201
+ </div>
202
+ <div className="flex justify-end gap-2">
203
+ <Button variant="outline" onClick={() => onOpenChange(false)}>{t('cancel')}</Button>
204
+ <Button type="submit">{t('save')}</Button>
205
+ </div>
206
+ </form>
207
+ </DialogContent>
208
+ </Dialog>
209
+ );
210
+ }
211
+ ```
212
+
213
+ ---
214
+
215
+ ## 5. Supabase com Schema Correto
216
+
217
+ ```tsx
218
+ // src/services/processService.ts
219
+ import { getSupabaseClient } from 'forlogic-core';
220
+
221
+ const SCHEMA = 'quality';
222
+
223
+ export async function fetchProcesses() {
224
+ const supabase = getSupabaseClient();
225
+ const { data, error } = await supabase
226
+ .schema(SCHEMA)
227
+ .from('processes')
228
+ .select('*')
229
+ .is('deleted_at', null)
230
+ .order('created_at', { ascending: false });
231
+
232
+ if (error) throw error;
233
+ return data;
234
+ }
235
+
236
+ export async function softDeleteProcess(id: string) {
237
+ const supabase = getSupabaseClient();
238
+ const { error } = await supabase
239
+ .schema(SCHEMA)
240
+ .from('processes')
241
+ .update({ deleted_at: new Date().toISOString() })
242
+ .eq('id', id);
243
+
244
+ if (error) throw error;
245
+ }
246
+ ```
247
+
248
+ ---
249
+
250
+ ## 6. Página com usePageMetadata + Breadcrumbs
251
+
252
+ ```tsx
253
+ // src/pages/ProcessDetailPage.tsx
254
+ import { usePageMetadata } from 'forlogic-core';
255
+ import { useParams } from 'react-router-dom';
256
+
257
+ export function ProcessDetailPage() {
258
+ const { id } = useParams();
259
+
260
+ usePageMetadata({
261
+ title: 'Detalhes do Processo',
262
+ subtitle: 'Visualize e edite os dados do processo',
263
+ breadcrumbs: [
264
+ { label: 'Processos', href: '/processes' },
265
+ { label: 'Detalhes' },
266
+ ],
267
+ });
268
+
269
+ return (
270
+ <div className="p-6">
271
+ {/* conteúdo da página */}
272
+ </div>
273
+ );
274
+ }
275
+ ```
@@ -0,0 +1,82 @@
1
+ <!-- ⚠️ ARQUIVO GERADO AUTOMATICAMENTE — NÃO EDITAR MANUALMENTE -->
2
+ <!-- Fonte: src/design-system/docs/ | Regenerar: npx tsx scripts/generate-ds-docs.ts -->
3
+
4
+ # Fundação
5
+
6
+ Categoria: **Fundação** | 7 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
+ ### Cores
49
+
50
+ *Documentação não extraída automaticamente. Consulte o Design System interativo em `/ds`.*
51
+
52
+ ---
53
+
54
+ ### Espaçamento
55
+
56
+ *Documentação não extraída automaticamente. Consulte o Design System interativo em `/ds`.*
57
+
58
+ ---
59
+
60
+ ### Ícones
61
+
62
+ *Documentação não extraída automaticamente. Consulte o Design System interativo em `/ds`.*
63
+
64
+ ---
65
+
66
+ ### Raio
67
+
68
+ *Documentação não extraída automaticamente. Consulte o Design System interativo em `/ds`.*
69
+
70
+ ---
71
+
72
+ ### Sombras
73
+
74
+ *Documentação não extraída automaticamente. Consulte o Design System interativo em `/ds`.*
75
+
76
+ ---
77
+
78
+ ### Tipografia
79
+
80
+ *Documentação não extraída automaticamente. Consulte o Design System interativo em `/ds`.*
81
+
82
+ ---
@@ -0,0 +1,36 @@
1
+ <!-- ⚠️ ARQUIVO GERADO AUTOMATICAMENTE — NÃO EDITAR MANUALMENTE -->
2
+ <!-- Fonte: src/design-system/docs/ | Regenerar: npx tsx scripts/generate-ds-docs.ts -->
3
+
4
+ # Developer Tools
5
+
6
+ Categoria: **Developer Tools** | 5 componentes
7
+
8
+ ### Audit Log (Elasticsearch)
9
+
10
+ *Documentação não extraída automaticamente. Consulte o Design System interativo em `/ds`.*
11
+
12
+ ---
13
+
14
+ ### Contexts
15
+
16
+ *Documentação não extraída automaticamente. Consulte o Design System interativo em `/ds`.*
17
+
18
+ ---
19
+
20
+ ### Hooks
21
+
22
+ *Documentação não extraída automaticamente. Consulte o Design System interativo em `/ds`.*
23
+
24
+ ---
25
+
26
+ ### Services
27
+
28
+ *Documentação não extraída automaticamente. Consulte o Design System interativo em `/ds`.*
29
+
30
+ ---
31
+
32
+ ### Utilities
33
+
34
+ *Documentação não extraída automaticamente. Consulte o Design System interativo em `/ds`.*
35
+
36
+ ---