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.
- package/.note/memory/features/crud-defaults-batteries-included.md +1 -1
- package/README.md +187 -917
- package/dist/components/ui/dialog-wizard.d.ts +82 -0
- package/dist/components/ui/input-group.d.ts +1 -1
- package/dist/components/ui/input.d.ts +5 -23
- package/dist/components/ui/resizable.d.ts +1 -1
- package/dist/components/ui/sidebar.d.ts +1 -1
- package/dist/components/ui/step-selector.d.ts +11 -9
- package/dist/components/ui/textarea.d.ts +1 -0
- package/dist/crud/components/CrudTable.d.ts +3 -1
- package/dist/crud/createCrudPage.d.ts +2 -0
- package/dist/crud/hooks/useColumnManager.d.ts +3 -1
- package/dist/exports/ui.d.ts +1 -0
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1 -1
- package/dist/types/sidebar.d.ts +2 -1
- package/dist/types.d.ts +3 -0
- package/docs/AUDIT_PROMPT.md +74 -0
- package/docs/PROJECT_KNOWLEDGE_TEMPLATE.md +117 -0
- package/docs/PROMPT_TEMPLATE.md +77 -0
- package/docs/STARTER_TEMPLATE.md +114 -0
- package/docs/design-system/README.md +45 -0
- package/docs/design-system/buttons-actions.md +433 -0
- package/docs/design-system/charts-dashboards.md +547 -0
- package/docs/design-system/crud.md +243 -0
- package/docs/design-system/data-display.md +360 -0
- package/docs/design-system/dialogs.md +588 -0
- package/docs/design-system/domain.md +661 -0
- package/docs/design-system/examples.md +275 -0
- package/docs/design-system/foundation.md +82 -0
- package/docs/design-system/infra-utils.md +36 -0
- package/docs/design-system/inputs.md +556 -0
- package/docs/design-system/layout.md +351 -0
- package/docs/design-system/navigation.md +604 -0
- package/docs/design-system/notifications-feedback.md +139 -0
- package/docs/design-system/platform.md +95 -0
- package/docs/design-system/selectors.md +424 -0
- package/docs/design-system/tables-grids.md +114 -0
- package/package.json +2 -2
- package/dist/assets/AccordionDoc-CGNlubG3.js +0 -31
- package/dist/assets/ActionButtonDoc-CYtkXR0k.js +0 -47
- package/dist/assets/ActionPlanDoc-BSuPRftQ.js +0 -65
- package/dist/assets/AlertDoc-Cpvxneqg.js +0 -37
- package/dist/assets/AliasUrlDoc-DIpUWf4Y.js +0 -189
- package/dist/assets/AppHeaderDoc-DNQErj_t.js +0 -74
- package/dist/assets/AppSidebarDoc-DkeQarDu.js +0 -221
- package/dist/assets/ApprovalFlowDoc-8YgXbhKJ.js +0 -31
- package/dist/assets/AuditLogDoc-BBvNcHIo.js +0 -67
- package/dist/assets/AuditTrailDoc-DgFHO-uo.js +0 -17
- package/dist/assets/AuthDoc-WIA_Aetl.js +0 -200
- package/dist/assets/AvatarDoc-B6go1C1T.js +0 -11
- package/dist/assets/BadgeDoc-BONhfqB_.js +0 -36
- package/dist/assets/BaseFormDoc-CuyUArcj.js +0 -169
- package/dist/assets/BodyContentDoc-CterHC1E.js +0 -83
- package/dist/assets/BreadcrumbDoc-Dwn9nLeO.js +0 -75
- package/dist/assets/ButtonDoc-BOjRseZT.js +0 -41
- package/dist/assets/ButtonGroupDoc-8IS6PPh4.js +0 -7
- package/dist/assets/CalendarDoc-CMwIEqgT.js +0 -81
- package/dist/assets/CardDoc-BZz1CVg2.js +0 -49
- package/dist/assets/ChartDoc-B5vZVtqD.js +0 -76
- package/dist/assets/CheckboxDoc-lAbYO9I5.js +0 -55
- package/dist/assets/ColorPickerDoc-Dpsprp4N.js +0 -10
- package/dist/assets/ColorsFoundationDoc-CCHeSL3p.js +0 -13
- package/dist/assets/ComboTreeDoc-D4dTkIt-.js +0 -46
- package/dist/assets/ComboboxDoc-CqqZPvZq.js +0 -134
- package/dist/assets/ComponentDocTemplate-CQbBhfvZ.js +0 -1
- package/dist/assets/ContextMenuDoc-D3jC-MVA.js +0 -182
- package/dist/assets/ContextsDoc-XFH0-JdS.js +0 -211
- package/dist/assets/CreateCrudPageDoc-CpuiWI-g.js +0 -106
- package/dist/assets/CrudActionBarDoc-wuBGXD9Y.js +0 -112
- package/dist/assets/CrudGridDoc-BYWqSXBH.js +0 -85
- package/dist/assets/CrudOverviewDoc-B_bk2a2t.js +0 -14
- package/dist/assets/CrudPrimitivesDoc-CxaTB94A.js +0 -164
- package/dist/assets/CrudTableDoc-Dga1VgCu.js +0 -113
- package/dist/assets/CustomFormFieldsDoc-C1hwwSl3.js +0 -33
- package/dist/assets/DashboardFormDoc-BUDCmrMl.js +0 -49
- package/dist/assets/DashboardGeneralViewDoc-Cyg1SIiG.js +0 -71
- package/dist/assets/DashboardGridDoc-BavePiRF.js +0 -49
- package/dist/assets/DashboardListDoc-CLyMA6UK.js +0 -37
- package/dist/assets/DashboardOverviewDoc-DRVvNIF1.js +0 -35
- package/dist/assets/DashboardPanelRendererDoc--mfwb8Nc.js +0 -60
- package/dist/assets/DashboardPanelsBasicDoc-BQ2V_52D.js +0 -62
- package/dist/assets/DashboardPanelsCartesianDoc-sy-hcVQY.js +0 -75
- package/dist/assets/DashboardPanelsSpecialDoc-DsIUCRRP.js +0 -83
- package/dist/assets/DashboardViewDoc-CtlCNlEF.js +0 -45
- package/dist/assets/DataListDoc-DUy88lCQ.js +0 -13
- package/dist/assets/DesignSystemHome-DHl9YtbH.js +0 -1
- package/dist/assets/DialogDoc-CMQqnTV-.js +0 -981
- package/dist/assets/DropdownMenuDoc-S7X9csGt.js +0 -175
- package/dist/assets/ElectronicSignatureDialogDoc-BfithaL_.js +0 -57
- package/dist/assets/EmptyStateDoc-CHGCiGIk.js +0 -35
- package/dist/assets/EnvironmentsDoc-DZHJZ2nm.js +0 -96
- package/dist/assets/ErrorBoundaryDoc-DoaAg68p.js +0 -111
- package/dist/assets/ExampleActionPlanPage-C0fIMZCD.js +0 -1
- package/dist/assets/ExampleAppDoc-DzIU81Fn.js +0 -1
- package/dist/assets/ExampleCard-DuLrb3t-.js +0 -1
- package/dist/assets/ExampleCrudReportsPage-M0pz6tdM.js +0 -1
- package/dist/assets/ExampleDashboardPage-CRG5r3Vw.js +0 -1
- package/dist/assets/ExampleIdeasPage-I84ZMLY4.js +0 -1
- package/dist/assets/ExampleImportWizardPage-h4YqrrSe.js +0 -1
- package/dist/assets/ExampleSettingsPage-CwdWqoaP.js +0 -1
- package/dist/assets/FileUploadDoc-9-UujFNX.js +0 -34
- package/dist/assets/FilterBar-DDTqqUfZ.js +0 -1
- package/dist/assets/FormDoc-CVES6n3d.js +0 -81
- package/dist/assets/FoundationOverview-DT0u11Gz.js +0 -1
- package/dist/assets/GridDoc-CbHFSILF.js +0 -28
- package/dist/assets/HooksDoc-Ctxdk6Wq.js +0 -665
- package/dist/assets/HoverCardDoc-8Wkaafdj.js +0 -31
- package/dist/assets/I18nDoc-D3Q2m7ik.js +0 -167
- package/dist/assets/IconPickerDoc-DZ26Gdpg.js +0 -10
- package/dist/assets/IconsFoundationDoc-xOxtC7CW.js +0 -33
- package/dist/assets/InputDoc-BhztAiuJ.js +0 -211
- package/dist/assets/LabelDoc-A4hmTRRV.js +0 -42
- package/dist/assets/LeadershipDoc-CqOSfWsP.js +0 -452
- package/dist/assets/MediaDoc-C78gvC8p.js +0 -459
- package/dist/assets/MenubarDoc-DCnmd2tO.js +0 -165
- package/dist/assets/ModuleAccessDoc-CmD5nHDp.js +0 -153
- package/dist/assets/ModulesDialogDoc-DVit1CA-.js +0 -46
- package/dist/assets/MultiselectPermissionsDoc-tlJMs04L.js +0 -34
- package/dist/assets/NavigationMenuDoc-q1fbc89j.js +0 -116
- package/dist/assets/OnboardingDialogDoc-3A3eBYrq.js +0 -55
- package/dist/assets/PaginationDoc-B8-bMz5J.js +0 -27
- package/dist/assets/PaginationDoc-BkGdxHL3.js +0 -98
- package/dist/assets/PlacesDoc-CKPO6ATs.js +0 -226
- package/dist/assets/PopoverDoc-CJPU4Ags.js +0 -64
- package/dist/assets/ProgressDoc-CpjbTL4o.js +0 -29
- package/dist/assets/QualiexUserFieldDoc-DDwumlRw.js +0 -149
- package/dist/assets/RadioGroupDoc-D6tSZz8G.js +0 -57
- package/dist/assets/RadiusDoc-B4xSnajw.js +0 -7
- package/dist/assets/ReportRequestListDoc-C0LIaU8P.js +0 -15
- package/dist/assets/RequiredFieldsCounterDoc-COesoSdx.js +0 -58
- package/dist/assets/ResizableDoc-CW0-XQuB.js +0 -104
- package/dist/assets/RichTextEditorDoc-C8c_XA9P.js +0 -24
- package/dist/assets/ScrollAreaDoc-BxtoAPaZ.js +0 -28
- package/dist/assets/SecurityDoc-wOVqpg2F.js +0 -204
- package/dist/assets/SelectDoc-C75gtY9D.js +0 -80
- package/dist/assets/SeparatorDoc-BjQBPB1P.js +0 -4
- package/dist/assets/ServicesDoc-CXTctwBl.js +0 -308
- package/dist/assets/ShadowsDoc-C6Lw8_x2.js +0 -9
- package/dist/assets/SignDoc-Bh5ZUg5x.js +0 -66
- package/dist/assets/SkeletonDoc-rTLGK5VE.js +0 -54
- package/dist/assets/SliderDoc-JMAMDub7.js +0 -41
- package/dist/assets/SpacingDoc-RljOrpwA.js +0 -12
- package/dist/assets/SplitButtonDoc-CvShUW3w.js +0 -53
- package/dist/assets/StepSelectorDoc-C-nAap9H.js +0 -41
- package/dist/assets/SwitchDoc-DLnqmkPr.js +0 -56
- package/dist/assets/TableDoc-B8EpWLVg.js +0 -128
- package/dist/assets/TabsDoc-DIBtl_uC.js +0 -42
- package/dist/assets/TeamSelectorDoc-B7OnCbL7.js +0 -10
- package/dist/assets/TermsOfUseDoc-Bb-pw08s.js +0 -16
- package/dist/assets/TextareaDoc-DGnqMqEC.js +0 -46
- package/dist/assets/ToastDoc-DjYyc7ae.js +0 -157
- package/dist/assets/ToggleDoc-C9ZOVjkY.js +0 -51
- package/dist/assets/TooltipDoc-BEx4l9-i.js +0 -58
- package/dist/assets/TruncatedCellDoc-BbV1bRSY.js +0 -12
- package/dist/assets/TypographyFoundationDoc-CUDYjRo9.js +0 -7
- package/dist/assets/UpdatesNotificationDoc-7nyjzLMJ.js +0 -29
- package/dist/assets/UsersGroupsSelectorDoc-C0KlTAL5.js +0 -18
- package/dist/assets/UtilitiesDoc-DGxaHVV1.js +0 -145
- package/dist/assets/ViewerDialogsDoc-CnTPTEz0.js +0 -1
- package/dist/assets/blocks-B6LrJeAM.js +0 -1
- package/dist/assets/building-DeVappnD.js +0 -1
- package/dist/assets/calendar-days-BQ0na5kM.js +0 -1
- package/dist/assets/check-check-C_-PJCJa.js +0 -1
- package/dist/assets/circle-plus-CpIcep-O.js +0 -1
- package/dist/assets/circle-x-jPpBPew0.js +0 -1
- package/dist/assets/clipboard-list-CXNPdciZ.js +0 -1
- package/dist/assets/cloud-upload-BEjzumjl.js +0 -1
- package/dist/assets/crown-CqNsQIsm.js +0 -1
- package/dist/assets/date-picker-BW3eGOe_.js +0 -1
- package/dist/assets/disabled-menu-item-C2YaMvSt.js +0 -1
- package/dist/assets/drawer-D5rflIcD.js +0 -3
- package/dist/assets/file-braces-DFb5X9so.js +0 -1
- package/dist/assets/file-pen-line-CyUGKkEN.js +0 -1
- package/dist/assets/git-branch-BcXv9mpp.js +0 -1
- package/dist/assets/globe-CpMIWAcv.js +0 -1
- package/dist/assets/hash-cQWdKjya.js +0 -1
- package/dist/assets/hourglass-BahQ3eDv.js +0 -1
- package/dist/assets/hover-card-R66N85sZ.js +0 -1
- package/dist/assets/iframe-dialog-V0mW5aBb.js +0 -1
- package/dist/assets/index-DkiftrvI.js +0 -352
- package/dist/assets/index-nmBjO9Th.css +0 -1
- package/dist/assets/life-buoy-ByXiPddz.js +0 -1
- package/dist/assets/loading-state-Cb5_t5uE.js +0 -1
- package/dist/assets/lucide-react-Cp3Yw3Zm.js +0 -1
- package/dist/assets/package-B3-pVvPM.js +0 -1
- package/dist/assets/pen-Bi_lmmKT.js +0 -1
- package/dist/assets/pin-DVsSl8QA.js +0 -1
- package/dist/assets/printer-BnJ8B6m-.js +0 -1
- package/dist/assets/radio-group-BHAaNGsm.js +0 -1
- package/dist/assets/server-CtzFTfKR.js +0 -1
- package/dist/assets/share-2-Dv8Do445.js +0 -1
- package/dist/assets/shield-check-CFXjOV_w.js +0 -1
- package/dist/assets/shield-x-DJTRfVux.js +0 -1
- package/dist/assets/slider-v9tXBSnB.js +0 -1
- package/dist/assets/smartphone-BSNR60L7.js +0 -1
- package/dist/assets/step-selector-ATTh_9Wa.js +0 -1
- package/dist/assets/text-align-start-qE-MbYYw.js +0 -1
- package/dist/assets/thumbs-up-D_XIW_uX.js +0 -1
- package/dist/assets/trash-DTWQwpwA.js +0 -1
- package/dist/assets/trending-up-jip5-leJ.js +0 -1
- package/dist/assets/useMockCrud-CN4vjyOZ.js +0 -1
- package/dist/assets/user-check-BlH3EDWK.js +0 -1
- package/dist/assets/user-plus-BqwXwD-c.js +0 -1
- package/dist/index.html +0 -33
package/dist/types/sidebar.d.ts
CHANGED
|
@@ -38,10 +38,11 @@ export interface SidebarActionsConfig {
|
|
|
38
38
|
export interface SidebarNavigationItem {
|
|
39
39
|
label: string;
|
|
40
40
|
path: string;
|
|
41
|
-
icon
|
|
41
|
+
icon?: LucideIcon;
|
|
42
42
|
complementaryText?: string;
|
|
43
43
|
permissionCheck?: () => Promise<boolean>;
|
|
44
44
|
children?: SidebarNavigationItem[];
|
|
45
|
+
type?: 'separator';
|
|
45
46
|
}
|
|
46
47
|
export interface SidebarConfig {
|
|
47
48
|
appName?: string;
|
package/dist/types.d.ts
CHANGED
|
@@ -75,6 +75,7 @@ export interface CrudColumn<T = any> {
|
|
|
75
75
|
label?: string;
|
|
76
76
|
type?: 'text' | 'number' | 'date' | 'boolean' | 'select' | 'textarea' | 'email' | 'tel';
|
|
77
77
|
required?: boolean;
|
|
78
|
+
/** Coluna é ordenável. Default: true. Use `false` para desabilitar. */
|
|
78
79
|
sortable?: boolean;
|
|
79
80
|
filterable?: boolean;
|
|
80
81
|
searchable?: boolean;
|
|
@@ -287,6 +288,8 @@ export interface CrudPageConfig<T extends CrudEntity> {
|
|
|
287
288
|
onClick: () => void;
|
|
288
289
|
}>;
|
|
289
290
|
customListView?: (items: T[], manager?: CrudManager<T>) => React.ReactNode;
|
|
291
|
+
/** Colunas ocultas por padrão (antes de qualquer interação do usuário). */
|
|
292
|
+
defaultHiddenColumns?: string[];
|
|
290
293
|
}
|
|
291
294
|
export interface EntityWithId {
|
|
292
295
|
id: string | number;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Prompt de Auditoria — Design System
|
|
2
|
+
|
|
3
|
+
> **Como usar**: Cole este prompt em uma conversa do Lovable no projeto consumidor para auditar e corrigir violações do Design System.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Prompt para copiar
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
Audite TODOS os arquivos .tsx do projeto em busca de violações do Design System do forlogic-core.
|
|
11
|
+
|
|
12
|
+
Antes de começar, leia obrigatoriamente via cross-project:
|
|
13
|
+
@Admin docs/design-system/crud.md
|
|
14
|
+
@Admin docs/design-system/inputs.md
|
|
15
|
+
@Admin docs/design-system/selectors.md
|
|
16
|
+
@Admin docs/design-system/layout.md
|
|
17
|
+
@Admin docs/design-system/dialogs.md
|
|
18
|
+
@Admin docs/design-system/buttons-actions.md
|
|
19
|
+
|
|
20
|
+
Verifique CADA arquivo .tsx contra estas regras:
|
|
21
|
+
|
|
22
|
+
### Imports inválidos
|
|
23
|
+
- [ ] Import de componente UI que NÃO vem de `forlogic-core` (Button, Dialog, Input, Select, Table, etc.)
|
|
24
|
+
- [ ] Import de `react-i18next` em vez de `useTranslation` de `forlogic-core`
|
|
25
|
+
- [ ] Import de `@/integrations/supabase/client` em vez de `getSupabaseClient()` de `forlogic-core`
|
|
26
|
+
|
|
27
|
+
### Componentes proibidos
|
|
28
|
+
- [ ] `<Select>` ou `<StatusSelect>` → deve ser `<Combobox>`
|
|
29
|
+
- [ ] `<MoreHorizontal>` genérico como menu de ações → deve ser `<ActionButton>`
|
|
30
|
+
- [ ] `<DeleteConfirmationDialog>` → deve ser `<Dialog>`
|
|
31
|
+
- [ ] `<Searchbar>` → deve ser `<Input>` com ícone de busca
|
|
32
|
+
- [ ] `BulkActionBar` separado → deve ser dropdown no `CrudActionBar`
|
|
33
|
+
- [ ] Paginação manual → deve ser `CrudPrimitivePagination`
|
|
34
|
+
|
|
35
|
+
### Supabase
|
|
36
|
+
- [ ] Query sem `.schema('SCHEMA_PADRAO')` (qualquer `supabase.from(` direto)
|
|
37
|
+
- [ ] DELETE físico (deve ser soft delete com `deleted_at`)
|
|
38
|
+
- [ ] `supabase` importado diretamente do client em vez de `getSupabaseClient()`
|
|
39
|
+
|
|
40
|
+
### Layout
|
|
41
|
+
- [ ] Página sem `usePageMetadata` (título/subtítulo)
|
|
42
|
+
- [ ] Layout sem `AppLayout` + `AppSidebar`
|
|
43
|
+
- [ ] Componente criado localmente quando existe equivalente na lib
|
|
44
|
+
|
|
45
|
+
### Formulários
|
|
46
|
+
- [ ] Formulário sem `BaseForm` ou `react-hook-form` + `zod`
|
|
47
|
+
- [ ] Select nativo HTML em vez de `Combobox`
|
|
48
|
+
|
|
49
|
+
Para cada violação encontrada, gere um relatório no formato:
|
|
50
|
+
|
|
51
|
+
| Arquivo | Linha | Violação | Correção |
|
|
52
|
+
|---------|-------|----------|----------|
|
|
53
|
+
| src/pages/X.tsx | 15 | Import de Button local | Usar `import { Button } from 'forlogic-core'` |
|
|
54
|
+
|
|
55
|
+
Depois do relatório, pergunte se devo corrigir automaticamente.
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Variações
|
|
61
|
+
|
|
62
|
+
### Auditoria rápida (apenas imports)
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
Busque em TODOS os arquivos .tsx do projeto por imports que NÃO vêm de 'forlogic-core'.
|
|
66
|
+
Liste: arquivo, linha, import atual, e o import correto de forlogic-core.
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Auditoria de Supabase
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
Busque em TODOS os arquivos .ts/.tsx por chamadas a `supabase.from(` sem `.schema('SCHEMA_PADRAO')`.
|
|
73
|
+
Liste: arquivo, linha, query atual, e a correção com .schema().
|
|
74
|
+
```
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# KNOWLEDGE — [Nome do Módulo]
|
|
2
|
+
|
|
3
|
+
> Copie este template para o Project Knowledge do seu projeto Lovable.
|
|
4
|
+
> Preencha os placeholders `[...]` e remova comentários `<!-- -->`.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 0. Schema
|
|
9
|
+
|
|
10
|
+
> ⚠️ **SCHEMA_PADRAO = `[seu_schema]`**
|
|
11
|
+
|
|
12
|
+
```ts
|
|
13
|
+
supabase.schema('[seu_schema]').from('tabela').select('*');
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 1. Regras do Módulo
|
|
19
|
+
|
|
20
|
+
<!-- Liste regras específicas deste módulo que a IA precisa saber -->
|
|
21
|
+
|
|
22
|
+
- [Regra 1: ex: Processos só podem ser inativados, nunca deletados]
|
|
23
|
+
- [Regra 2: ex: Todo documento precisa de aprovação antes de publicar]
|
|
24
|
+
- [Regra 3: ex: Usuários só veem dados do próprio alias/empresa]
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 2. Mapa de Telas
|
|
29
|
+
|
|
30
|
+
<!-- Para cada tela, descreva: nome, tipo, tabela e componentes do DS -->
|
|
31
|
+
|
|
32
|
+
### [Nome da Tela 1: ex: Processos]
|
|
33
|
+
|
|
34
|
+
- **Tipo**: CRUD listagem
|
|
35
|
+
- **Tabela**: `[processes]`
|
|
36
|
+
- **Componente DS**: `createCrudPage` ou `CrudTable`
|
|
37
|
+
- **Colunas**: [title, status, responsible, updated_at]
|
|
38
|
+
- **Ações de linha**: [Editar, Duplicar, Inativar]
|
|
39
|
+
- **Filtros**: [status, responsible]
|
|
40
|
+
|
|
41
|
+
### [Nome da Tela 2: ex: Formulário de Processo]
|
|
42
|
+
|
|
43
|
+
- **Tipo**: Formulário (Dialog ou página)
|
|
44
|
+
- **Tabela**: `[processes]`
|
|
45
|
+
- **Campos**:
|
|
46
|
+
- `title` — text, obrigatório
|
|
47
|
+
- `description` — textarea
|
|
48
|
+
- `status` — Combobox (Ativo, Inativo, Rascunho)
|
|
49
|
+
- `id_responsible` — Combobox (busca em users)
|
|
50
|
+
- `due_date` — DatePicker
|
|
51
|
+
|
|
52
|
+
<!-- Repita para cada tela do módulo -->
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 3. Tabelas e Relacionamentos
|
|
57
|
+
|
|
58
|
+
<!-- Liste as tabelas do módulo com campos principais -->
|
|
59
|
+
|
|
60
|
+
| Tabela | Campos principais | FKs |
|
|
61
|
+
|--------|-------------------|-----|
|
|
62
|
+
| `[processes]` | id, title, status, created_at, deleted_at | id_responsible → users |
|
|
63
|
+
| `[documents]` | id, name, version, id_process | id_process → processes |
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## 4. Enums e Status
|
|
68
|
+
|
|
69
|
+
<!-- Liste valores possíveis para campos de status/tipo -->
|
|
70
|
+
|
|
71
|
+
| Campo | Valores |
|
|
72
|
+
|-------|---------|
|
|
73
|
+
| `processes.status` | `active`, `inactive`, `draft` |
|
|
74
|
+
| `documents.type` | `policy`, `procedure`, `instruction` |
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## 5. Regras de Negócio por Tela
|
|
79
|
+
|
|
80
|
+
<!-- Detalhe regras específicas que afetam a UI -->
|
|
81
|
+
|
|
82
|
+
### [Processos]
|
|
83
|
+
- Ao inativar: confirmar com Dialog, definir `deleted_at = now()`
|
|
84
|
+
- Coluna status: exibir com Badge colorido (active=green, inactive=red)
|
|
85
|
+
- Busca: pesquisar em `title` e `description`
|
|
86
|
+
|
|
87
|
+
### [Formulário]
|
|
88
|
+
- Campo `title`: mínimo 3 caracteres
|
|
89
|
+
- Campo `id_responsible`: carregar de `users` filtrado por alias
|
|
90
|
+
- Ao salvar: validar com Zod, exibir toast de sucesso
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## 6. Imports Obrigatórios
|
|
95
|
+
|
|
96
|
+
```ts
|
|
97
|
+
import {
|
|
98
|
+
createCrudPage, CrudTable, CrudActionBar,
|
|
99
|
+
Button, Dialog, Input, Combobox, ActionButton,
|
|
100
|
+
BaseForm, EmptyState, LoadingState,
|
|
101
|
+
cn, useTranslation, getSupabaseClient
|
|
102
|
+
} from 'forlogic-core';
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## 7. Instrução para IA
|
|
108
|
+
|
|
109
|
+
Antes de criar qualquer componente, leia via cross-project:
|
|
110
|
+
|
|
111
|
+
- `@Admin docs/design-system/crud.md` — listagens
|
|
112
|
+
- `@Admin docs/design-system/inputs.md` — formulários
|
|
113
|
+
- `@Admin docs/design-system/selectors.md` — selects/combos
|
|
114
|
+
- `@Admin docs/design-system/layout.md` — estrutura de página
|
|
115
|
+
- `@Admin docs/design-system/dialogs.md` — modais
|
|
116
|
+
|
|
117
|
+
Nunca crie componentes sem consultar esses arquivos primeiro.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Prompt Template — Criação de Telas com Design System
|
|
2
|
+
|
|
3
|
+
> **Como usar**: Copie o bloco abaixo e cole como **primeiro prompt** ao iniciar uma conversa no Lovable para criar/migrar telas em projetos consumidores. Preencha os placeholders `[...]`.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Prompt para copiar
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
Antes de gerar qualquer código, leia OBRIGATORIAMENTE a documentação do Design System via cross-project:
|
|
11
|
+
|
|
12
|
+
@Admin docs/design-system/crud.md — para telas de listagem (CRUD)
|
|
13
|
+
@Admin docs/design-system/inputs.md — para campos de formulário
|
|
14
|
+
@Admin docs/design-system/selectors.md — para selects, combos, multiselect
|
|
15
|
+
@Admin docs/design-system/layout.md — para estrutura de página (AppSidebar, AppLayout)
|
|
16
|
+
@Admin docs/design-system/dialogs.md — para modais e confirmações
|
|
17
|
+
@Admin docs/design-system/buttons-actions.md — para botões e ações
|
|
18
|
+
@Admin docs/design-system/data-display.md — para exibição de dados
|
|
19
|
+
@Admin docs/design-system/tables-grids.md — para tabelas e grids
|
|
20
|
+
|
|
21
|
+
Regras obrigatórias:
|
|
22
|
+
1. TODO import de componente visual DEVE vir de `forlogic-core` — nunca criar componente local se existir na lib
|
|
23
|
+
2. Usar `createCrudPage` para telas de listagem simples, `CrudTable` para customizadas
|
|
24
|
+
3. Usar `Combobox` para selects com busca (nunca Select nativo ou StatusSelect)
|
|
25
|
+
4. Usar `ActionButton` para ações de linha (nunca ícone MoreHorizontal solto)
|
|
26
|
+
5. Usar `Dialog` para confirmações (nunca DeleteConfirmationDialog)
|
|
27
|
+
6. Usar `.schema('SCHEMA_PADRAO')` em toda query Supabase
|
|
28
|
+
7. Usar `useTranslation` de `forlogic-core`, nunca de `react-i18next`
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
Agora crie a seguinte tela:
|
|
33
|
+
|
|
34
|
+
**Nome da tela**: [ex: Gestão de Processos]
|
|
35
|
+
**Tipo**: [CRUD listagem | Formulário | Dashboard | Detalhe]
|
|
36
|
+
**Schema Supabase**: [ex: quality]
|
|
37
|
+
**Tabela principal**: [ex: processes]
|
|
38
|
+
|
|
39
|
+
**Campos da listagem** (se CRUD):
|
|
40
|
+
- [campo1]: [tipo] — [descrição]
|
|
41
|
+
- [campo2]: [tipo] — [descrição]
|
|
42
|
+
|
|
43
|
+
**Campos do formulário** (se tiver criação/edição):
|
|
44
|
+
- [campo1]: [tipo, obrigatório?] — [descrição]
|
|
45
|
+
- [campo2]: [tipo, obrigatório?] — [descrição]
|
|
46
|
+
|
|
47
|
+
**Regras de negócio**:
|
|
48
|
+
- [regra 1]
|
|
49
|
+
- [regra 2]
|
|
50
|
+
|
|
51
|
+
**Ações disponíveis**:
|
|
52
|
+
- [ação 1: ex: Editar, Duplicar, Inativar]
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Mapeamento: Tipo de tela → Docs obrigatórios
|
|
58
|
+
|
|
59
|
+
| Tipo de tela | Docs que a IA DEVE ler |
|
|
60
|
+
|--------------|------------------------|
|
|
61
|
+
| CRUD listagem | `crud.md`, `buttons-actions.md`, `tables-grids.md` |
|
|
62
|
+
| Formulário | `inputs.md`, `selectors.md`, `dialogs.md` |
|
|
63
|
+
| Dashboard | `charts-dashboards.md`, `data-display.md` |
|
|
64
|
+
| Página com sidebar | `layout.md`, `navigation.md` |
|
|
65
|
+
| Modal/Dialog | `dialogs.md`, `inputs.md` |
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Checklist de revisão pós-geração
|
|
70
|
+
|
|
71
|
+
- [ ] Todos os imports vêm de `forlogic-core`?
|
|
72
|
+
- [ ] Nenhum componente foi criado localmente quando existe na lib?
|
|
73
|
+
- [ ] `Combobox` usado em vez de Select/StatusSelect?
|
|
74
|
+
- [ ] `ActionButton` usado para ações de linha?
|
|
75
|
+
- [ ] `CrudActionBar` com layout de 3 zonas?
|
|
76
|
+
- [ ] `.schema('SCHEMA_PADRAO')` em toda query?
|
|
77
|
+
- [ ] Soft delete em vez de DELETE físico?
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# Starter Template — Projeto Consumidor forlogic-core
|
|
2
|
+
|
|
3
|
+
> **Como usar**: Ao criar um novo projeto no Lovable, cole este conteúdo como **primeiro prompt** para gerar a estrutura base completa.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Prompt para criar projeto base
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
Crie a estrutura base do projeto seguindo EXATAMENTE este boilerplate.
|
|
11
|
+
Leia @Admin docs/design-system/layout.md antes de começar.
|
|
12
|
+
|
|
13
|
+
### 1. vite.config.ts
|
|
14
|
+
|
|
15
|
+
import { defineConfig } from 'vite';
|
|
16
|
+
import react from '@vitejs/plugin-react-swc';
|
|
17
|
+
import path from 'path';
|
|
18
|
+
import { createSecurityHeadersPlugin } from 'forlogic-core/vite';
|
|
19
|
+
|
|
20
|
+
export default defineConfig(({ mode }) => ({
|
|
21
|
+
plugins: [
|
|
22
|
+
react(),
|
|
23
|
+
createSecurityHeadersPlugin(mode === 'development', {
|
|
24
|
+
supabaseUrls: ['https://SEU_PROJETO.supabase.co'],
|
|
25
|
+
additionalConnectSrc: ['https://*.qualiex.com'],
|
|
26
|
+
}),
|
|
27
|
+
],
|
|
28
|
+
resolve: { alias: { '@': path.resolve(__dirname, './src') } },
|
|
29
|
+
optimizeDeps: { force: true },
|
|
30
|
+
}));
|
|
31
|
+
|
|
32
|
+
### 2. tailwind.config.ts
|
|
33
|
+
|
|
34
|
+
import type { Config } from 'tailwindcss';
|
|
35
|
+
import { forlogicTailwindPreset, forlogicContentPaths } from 'forlogic-core/tailwind';
|
|
36
|
+
|
|
37
|
+
export default {
|
|
38
|
+
presets: [forlogicTailwindPreset],
|
|
39
|
+
content: ['./src/**/*.{ts,tsx}', ...forlogicContentPaths],
|
|
40
|
+
} satisfies Config;
|
|
41
|
+
|
|
42
|
+
### 3. src/App.tsx
|
|
43
|
+
|
|
44
|
+
import { BrowserRouter, Routes, Route, Navigate } from 'react-router-dom';
|
|
45
|
+
import { CoreProviders, AppLayout } from 'forlogic-core';
|
|
46
|
+
import { Home, FileText, Settings } from 'lucide-react';
|
|
47
|
+
import ptBR from './i18n/pt-BR.json';
|
|
48
|
+
import { HomePage } from './pages/HomePage';
|
|
49
|
+
|
|
50
|
+
const sidebarConfig = {
|
|
51
|
+
navigation: [
|
|
52
|
+
{ label: 'Início', path: '/', icon: Home },
|
|
53
|
+
{ label: 'Registros', path: '/registros', icon: FileText },
|
|
54
|
+
{ type: 'separator' as const, label: '', path: '' },
|
|
55
|
+
{ label: 'Configurações', path: '/config', icon: Settings },
|
|
56
|
+
],
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
function AppRoutes() {
|
|
60
|
+
return (
|
|
61
|
+
<AppLayout sidebarConfig={sidebarConfig}>
|
|
62
|
+
<Routes>
|
|
63
|
+
<Route path="/" element={<HomePage />} />
|
|
64
|
+
<Route path="*" element={<Navigate to="/" replace />} />
|
|
65
|
+
</Routes>
|
|
66
|
+
</AppLayout>
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export default function App() {
|
|
71
|
+
return (
|
|
72
|
+
<CoreProviders moduleAlias="SEU_MODULO" appTranslations={{ 'pt-BR': ptBR }}>
|
|
73
|
+
<BrowserRouter>
|
|
74
|
+
<AppRoutes />
|
|
75
|
+
</BrowserRouter>
|
|
76
|
+
</CoreProviders>
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
### 4. src/pages/HomePage.tsx
|
|
81
|
+
|
|
82
|
+
import { usePageMetadata } from 'forlogic-core';
|
|
83
|
+
|
|
84
|
+
export function HomePage() {
|
|
85
|
+
usePageMetadata({ title: 'Início', subtitle: 'Bem-vindo ao módulo' });
|
|
86
|
+
return <div className="p-6">Conteúdo aqui</div>;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
### 5. src/i18n/pt-BR.json
|
|
90
|
+
|
|
91
|
+
{
|
|
92
|
+
"home": "Início",
|
|
93
|
+
"records": "Registros",
|
|
94
|
+
"settings": "Configurações"
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
Substitua:
|
|
98
|
+
- SEU_PROJETO pelo ref do Supabase
|
|
99
|
+
- SEU_MODULO pelo alias do módulo (ex: "performance", "suppliers")
|
|
100
|
+
- Ajuste as rotas e sidebar conforme o módulo
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Checklist pós-criação
|
|
106
|
+
|
|
107
|
+
- [ ] `forlogic-core` instalado como dependência
|
|
108
|
+
- [ ] `vite.config.ts` usando `createSecurityHeadersPlugin`
|
|
109
|
+
- [ ] `tailwind.config.ts` usando `forlogicTailwindPreset` + `forlogicContentPaths`
|
|
110
|
+
- [ ] `App.tsx` usando `CoreProviders` + `AppLayout`
|
|
111
|
+
- [ ] Sidebar com itens e separadores definidos
|
|
112
|
+
- [ ] `usePageMetadata` em cada página
|
|
113
|
+
- [ ] `.schema('SCHEMA_PADRAO')` em toda query Supabase
|
|
114
|
+
- [ ] Arquivo `pt-BR.json` com traduções do módulo
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<!-- ⚠️ ARQUIVO GERADO AUTOMATICAMENTE — NÃO EDITAR MANUALMENTE -->
|
|
2
|
+
<!-- Fonte: src/design-system/docs/ | Regenerar: npx tsx scripts/generate-ds-docs.ts -->
|
|
3
|
+
|
|
4
|
+
# Design System — forlogic-core
|
|
5
|
+
|
|
6
|
+
> Gerado automaticamente em 2026-04-06
|
|
7
|
+
> Total: 92 componentes documentados em 15 categorias
|
|
8
|
+
|
|
9
|
+
## Categorias
|
|
10
|
+
|
|
11
|
+
- [Fundação](./foundation.md) (7 componentes)
|
|
12
|
+
- [Botões & Ações](./buttons-actions.md) (6 componentes)
|
|
13
|
+
- [Inputs](./inputs.md) (10 componentes)
|
|
14
|
+
- [Seletores](./selectors.md) (7 componentes)
|
|
15
|
+
- [Data Display](./data-display.md) (8 componentes)
|
|
16
|
+
- [Data Grid](./tables-grids.md) (3 componentes)
|
|
17
|
+
- [Gráficos & Dashboards](./charts-dashboards.md) (11 componentes)
|
|
18
|
+
- [Navegação](./navigation.md) (8 componentes)
|
|
19
|
+
- [Dialogs](./dialogs.md) (11 componentes)
|
|
20
|
+
- [Notifications & Feedback](./notifications-feedback.md) (4 componentes)
|
|
21
|
+
- [Layout](./layout.md) (6 componentes)
|
|
22
|
+
- [CRUD](./crud.md) (8 componentes)
|
|
23
|
+
- [Plataforma](./platform.md) (6 componentes)
|
|
24
|
+
- [Business Components](./domain.md) (12 componentes)
|
|
25
|
+
- [Developer Tools](./infra-utils.md) (5 componentes)
|
|
26
|
+
|
|
27
|
+
## Imports
|
|
28
|
+
|
|
29
|
+
Todos os componentes são importados de `forlogic-core`:
|
|
30
|
+
```tsx
|
|
31
|
+
import { Button, Dialog, Input, Combobox, createCrudPage } from "forlogic-core";
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Aliases Disponíveis
|
|
35
|
+
|
|
36
|
+
| Nome Atual | Alias | Import |
|
|
37
|
+
|------------|-------|--------|
|
|
38
|
+
| ComboTree | TreeSelect | `import { TreeSelect } from "forlogic-core"` |
|
|
39
|
+
| Combobox | AutoComplete | `import { AutoComplete } from "forlogic-core"` |
|
|
40
|
+
| StepSelector | Stepper | `import { Stepper } from "forlogic-core"` |
|
|
41
|
+
| ActionButton | RowActions | `import { RowActions } from "forlogic-core"` |
|
|
42
|
+
| TruncatedCell | EllipsisText | `import { EllipsisText } from "forlogic-core"` |
|
|
43
|
+
| CrudPrimitiveTable | DataTable | `import { DataTable } from "forlogic-core"` |
|
|
44
|
+
| CrudPrimitivePagination | DataPagination | `import { DataPagination } from "forlogic-core"` |
|
|
45
|
+
| CrudPrimitiveFilterBar | DataFilterBar | `import { DataFilterBar } from "forlogic-core"` |
|