forlogic-core 1.16.7 → 1.16.9
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/architecture/documentation-strategy.md +59 -0
- package/.note/memory/patterns/core-providers-setup.md +39 -0
- package/.note/memory/patterns/deprecated-patterns.md +14 -0
- package/.note/memory/patterns/feature-flags.md +19 -0
- package/.note/memory/patterns/header-metadata-pattern.md +62 -0
- package/.note/memory/patterns/i18n-setup.md +43 -0
- package/.note/memory/patterns/vite-tailwind-setup.md +49 -0
- package/.note/memory/rules/doc-sync-rule.md +32 -0
- package/.note/memory/rules/i18n-import-rule.md +29 -0
- package/.note/memory/rules/lib-first-rule.md +42 -0
- package/.note/memory/rules/no-auto-index-rule.md +37 -9
- package/.note/memory/rules/no-delete-policy-rule.md +41 -12
- package/.note/memory/rules/rls-syntax-rule.md +50 -0
- package/.note/memory/rules/sql-naming-rule.md +23 -0
- package/.note/memory/rules/supabase-import-rule.md +31 -0
- package/.note/memory/rules/supabase-schema-rule.md +5 -4
- package/.note/memory/ui/components/combo-tree.md +9 -1
- package/.note/memory/ui/design-system/documentation-standard.md +17 -0
- package/README.md +78 -212
- package/dist/README.md +78 -212
- package/dist/assets/AccordionDoc-BVPUJk8G.js +31 -0
- package/dist/assets/ActionButtonDoc-DLJ_K9ib.js +47 -0
- package/dist/assets/AlertDoc-CY1ybZeG.js +37 -0
- package/dist/assets/AppHeaderDoc-Crkw4dA9.js +67 -0
- package/dist/assets/AppSidebarDoc-ET-4j6wV.js +204 -0
- package/dist/assets/AuthDoc-B4v4Nci5.js +192 -0
- package/dist/assets/AvatarDoc-BLdMoyJd.js +11 -0
- package/dist/assets/BadgeDoc-CSNM1b6b.js +36 -0
- package/dist/assets/BaseFormDoc-DXiYuN6-.js +169 -0
- package/dist/assets/BodyContentDoc-Bp6YmUWX.js +83 -0
- package/dist/assets/BreadcrumbDoc-D7tqqTvo.js +75 -0
- package/dist/assets/ButtonDoc-C4JwIvU3.js +41 -0
- package/dist/assets/ButtonGroupDoc-QFfjC7Pm.js +7 -0
- package/dist/assets/CalendarDoc-COlEKqmv.js +81 -0
- package/dist/assets/CardDoc-BVhMoC2w.js +49 -0
- package/dist/assets/ChartDoc-BJ14EjI2.js +111 -0
- package/dist/assets/CheckboxDoc-Bcqpln9_.js +55 -0
- package/dist/assets/ColorPickerDoc-CcfmSwyC.js +10 -0
- package/dist/assets/ColorsFoundationDoc-uO6IiJbS.js +13 -0
- package/dist/assets/ComboTreeDoc-R4qE6XwB.js +46 -0
- package/dist/assets/ComboboxDoc-JIo_-gSN.js +134 -0
- package/dist/assets/ComponentDocTemplate-CRbRY-v5.js +1 -0
- package/dist/assets/ContextMenuDoc-C4-_0NLp.js +182 -0
- package/dist/assets/ContextsDoc-Cj9Aaoyo.js +184 -0
- package/dist/assets/CreateCrudPageDoc-D_SnMRJ2.js +106 -0
- package/dist/assets/CrudActionBarDoc-BYqtIabp.js +112 -0
- package/dist/assets/CrudGridDoc-DspxQrq5.js +85 -0
- package/dist/assets/CrudOverviewDoc-DLcOL_HZ.js +14 -0
- package/dist/assets/CrudPrimitivesDoc-BRS86nWg.js +164 -0
- package/dist/assets/CrudTableDoc-Daw8u2G_.js +113 -0
- package/dist/assets/DataListDoc-BrgVNhhR.js +13 -0
- package/dist/assets/DesignSystemHome-BFBNqq1J.js +1 -0
- package/dist/assets/DialogDoc-DCpRy4rg.js +981 -0
- package/dist/assets/DropdownMenuDoc-DT6LBa8Z.js +175 -0
- package/dist/assets/EmptyStateDoc-wydc09gG.js +35 -0
- package/dist/assets/EnvironmentsDoc-amIriwDD.js +96 -0
- package/dist/assets/ErrorBoundaryDoc-BEixy_Gl.js +111 -0
- package/dist/assets/FormDoc-DxoRt6p7.js +81 -0
- package/dist/assets/FoundationOverview-CxSbumIt.js +1 -0
- package/dist/assets/GridDoc-BpQqCMUE.js +28 -0
- package/dist/assets/HooksDoc-JNODhbaF.js +665 -0
- package/dist/assets/HoverCardDoc-CdqiYrIb.js +31 -0
- package/dist/assets/I18nDoc-B6LMXnE3.js +232 -0
- package/dist/assets/IconPickerDoc-BRdy58IC.js +10 -0
- package/dist/assets/IconsFoundationDoc-CrymfxTI.js +33 -0
- package/dist/assets/InputDoc-BK-SdpJ7.js +211 -0
- package/dist/assets/LabelDoc-DHvgzhaJ.js +42 -0
- package/dist/assets/LeadershipDoc-DRiB0spL.js +416 -0
- package/dist/assets/MediaDoc-B_vqnf72.js +459 -0
- package/dist/assets/MenubarDoc-Zvgczxe2.js +165 -0
- package/dist/assets/ModuleAccessDoc-Nuxb4S27.js +153 -0
- package/dist/assets/ModulesDialogDoc-iJWLkOZo.js +46 -0
- package/dist/assets/NavigationMenuDoc-CeWun1VF.js +116 -0
- package/dist/assets/OnboardingDialogDoc-xBL-rXeZ.js +55 -0
- package/dist/assets/PaginationDoc-CfvwxCMe.js +98 -0
- package/dist/assets/PaginationDoc-DqtRgXnF.js +27 -0
- package/dist/assets/PlacesDoc-nckioEzg.js +226 -0
- package/dist/assets/PopoverDoc-C3o2CZCT.js +64 -0
- package/dist/assets/ProgressDoc-BmWBNMPA.js +29 -0
- package/dist/assets/QualiexUserFieldDoc-CE1e4mx6.js +149 -0
- package/dist/assets/RadioGroupDoc-DMZH6NmR.js +57 -0
- package/dist/assets/RadiusDoc-BOZD3gPV.js +7 -0
- package/dist/assets/RequiredFieldsCounterDoc-CG-lmSSy.js +58 -0
- package/dist/assets/ResizableDoc-CqGkv6Cd.js +104 -0
- package/dist/assets/RichTextEditorDoc-m50ll-Od.js +24 -0
- package/dist/assets/ScrollAreaDoc-BzJ-APXo.js +28 -0
- package/dist/assets/SecurityDoc-B34gVeiV.js +204 -0
- package/dist/assets/SelectDoc-DXRv7QHK.js +80 -0
- package/dist/assets/SeparatorDoc-DcNh8k0P.js +4 -0
- package/dist/assets/ServicesDoc-8aXBd6yg.js +308 -0
- package/dist/assets/ShadowsDoc-Brl4hIDI.js +9 -0
- package/dist/assets/SignDoc-BdwerR-2.js +66 -0
- package/dist/assets/SkeletonDoc-BWgqgbDY.js +54 -0
- package/dist/assets/SliderDoc-E-NjbYVk.js +41 -0
- package/dist/assets/SpacingDoc-BzburM-r.js +12 -0
- package/dist/assets/SplitButtonDoc-BYUysmJp.js +53 -0
- package/dist/assets/StepSelectorDoc-PB1k4v7F.js +41 -0
- package/dist/assets/SwitchDoc-BLOG6kfj.js +56 -0
- package/dist/assets/TableDoc-Dwcs-lop.js +128 -0
- package/dist/assets/TabsDoc-Ovkh8ArV.js +42 -0
- package/dist/assets/TextareaDoc-DsBYxmbr.js +46 -0
- package/dist/assets/ToastDoc-BbZaFE_A.js +157 -0
- package/dist/assets/ToggleDoc-C28vbvhp.js +51 -0
- package/dist/assets/TooltipDoc-DL5cnLak.js +58 -0
- package/dist/assets/TruncatedCellDoc-BuDA8QcY.js +12 -0
- package/dist/assets/TypographyFoundationDoc-CPdH4PHa.js +7 -0
- package/dist/assets/UtilitiesDoc-CrQhyEfz.js +145 -0
- package/dist/assets/blocks-DO93nPjs.js +1 -0
- package/dist/assets/calendar-days-cMfwBSZx.js +1 -0
- package/dist/assets/circle-plus-D3NftMzS.js +1 -0
- package/dist/assets/circle-x-BVAVJ_oz.js +1 -0
- package/dist/assets/crown-B2MTZDnM.js +1 -0
- package/dist/assets/date-picker-zhJU-_kM.js +1 -0
- package/dist/assets/disabled-menu-item-C16xsaVs.js +1 -0
- package/dist/assets/drawer-oTqCOtsC.js +3 -0
- package/dist/assets/file-pen-line-CXv-Eye-.js +1 -0
- package/dist/assets/git-branch-V6-h6P9K.js +1 -0
- package/dist/assets/globe-CaUBIJU8.js +1 -0
- package/dist/assets/hash-B4MTXppl.js +1 -0
- package/dist/assets/hover-card-DEuucfxP.js +1 -0
- package/dist/assets/index-CE0k7Rdh.js +312 -0
- package/dist/assets/index-Cx3adT_u.css +1 -0
- package/dist/assets/life-buoy-BRndExxh.js +1 -0
- package/dist/assets/lucide-react-t7dCa4lv.js +1 -0
- package/dist/assets/monitor-Dg3HKTSE.js +1 -0
- package/dist/assets/package-3G45ARQh.js +1 -0
- package/dist/assets/pen-BYSSwjK4.js +1 -0
- package/dist/assets/pin-CMYagNhs.js +1 -0
- package/dist/assets/radio-group-BVun_Tmt.js +1 -0
- package/dist/assets/server-p0Sb0mKI.js +1 -0
- package/dist/assets/share-2-D-ZhCCq2.js +1 -0
- package/dist/assets/shield-x-Q7hAXWsG.js +1 -0
- package/dist/assets/step-selector-DHxgT2FL.js +1 -0
- package/dist/assets/text-align-start-6aYQqbX4.js +1 -0
- package/dist/assets/trash-DveAOiLF.js +1 -0
- package/dist/assets/useMockCrud-GY0KxHXr.js +1 -0
- package/dist/assets/user-check-CoGNBfIk.js +1 -0
- package/dist/assets/user-plus-Bad2xWIT.js +1 -0
- package/dist/bin/pull-docs.js +14 -13
- package/dist/components/modules/ModuleAccessGuard.d.ts +24 -2
- package/dist/components/ui/combo-tree.d.ts +2 -0
- package/dist/contexts/PageMetadataContext.d.ts +6 -1
- package/dist/crud/components/ColumnSettingsPopover.d.ts +17 -0
- package/dist/crud/components/CrudActionBar.d.ts +2 -1
- package/dist/crud/components/CrudTable.d.ts +5 -1
- package/dist/crud/components/GroupDropZone.d.ts +16 -0
- package/dist/crud/components/InlineRowActions.d.ts +15 -0
- package/dist/crud/hooks/useColumnDragReorder.d.ts +19 -0
- package/dist/crud/hooks/useColumnManager.d.ts +56 -0
- package/dist/crud/primitives/Table.d.ts +1 -1
- package/dist/crud/primitives/TreeTable.d.ts +2 -0
- package/dist/crud/primitives/index.d.ts +2 -1
- package/dist/crud/primitives/types.d.ts +33 -0
- package/dist/docs/KNOWLEDGE.md +68 -167
- package/dist/exports/crud.d.ts +2 -1
- package/dist/hooks/useDerivedContractedModules.d.ts +8 -0
- package/dist/i18n/config.d.ts +11 -0
- package/dist/i18n/index.d.ts +1 -1
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.html +35 -0
- package/dist/index.js +1 -1
- package/dist/providers/CoreProviders.d.ts +31 -34
- package/dist/types.d.ts +4 -0
- package/docs/KNOWLEDGE.md +68 -167
- package/package.json +2 -3
- package/docs/DESIGN_SYSTEM.md +0 -12174
package/dist/docs/KNOWLEDGE.md
CHANGED
|
@@ -1,206 +1,107 @@
|
|
|
1
1
|
# KNOWLEDGE — Regras Críticas do Projeto
|
|
2
2
|
|
|
3
|
-
>
|
|
4
|
-
>
|
|
3
|
+
> 🤖 **Para IA**: Detalhes de componentes, props e tipos → ler do projeto **Admin** via cross-project.
|
|
4
|
+
> Consulte `.note/memory/` para padrões de layout e componentes.
|
|
5
5
|
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
## 0.
|
|
8
|
+
## 0. Schema do Projeto
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
>
|
|
12
|
-
> Todos os exemplos abaixo usam `SCHEMA_PADRAO`. Em cada projeto, substitua pelo schema correto.
|
|
13
|
-
> **Neste projeto o schema é `common`.**
|
|
10
|
+
**SCHEMA = `common`**
|
|
14
11
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
Toda query Supabase **DEVE** usar `.schema('SCHEMA_PADRAO')`. O projeto **NÃO** usa o schema `public`.
|
|
12
|
+
☝️ Este é o **único local** onde o schema é definido. Toda query Supabase
|
|
13
|
+
**DEVE** usar `.schema('<valor acima>')`. Altere **apenas aqui** ao configurar
|
|
14
|
+
um novo projeto.
|
|
20
15
|
|
|
21
16
|
```ts
|
|
22
|
-
// ✅
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const { data } = await supabase.from('tabela').select('*');
|
|
17
|
+
// ✅ usar o schema definido acima
|
|
18
|
+
supabase.schema('common').from('tabela').select('*');
|
|
19
|
+
// ❌ vai falhar (sem schema)
|
|
20
|
+
supabase.from('tabela').select('*');
|
|
27
21
|
```
|
|
28
22
|
|
|
29
23
|
---
|
|
30
24
|
|
|
31
|
-
##
|
|
32
|
-
|
|
33
|
-
### Regras obrigatórias
|
|
34
|
-
- **NUNCA** criar policy `FOR DELETE` — usar soft delete (`deleted_at` + policy `FOR UPDATE`)
|
|
35
|
-
- **SEMPRE** usar `(SELECT auth.uid())` ou `(SELECT auth.jwt())` com parênteses — evita re-execução por linha
|
|
36
|
-
- Sintaxe: `SELECT` → `USING` | `INSERT` → `WITH CHECK` | `UPDATE` → `USING` + `WITH CHECK`
|
|
37
|
-
|
|
38
|
-
### Padrão JWT alias (multi-tenancy por alias)
|
|
39
|
-
|
|
40
|
-
```sql
|
|
41
|
-
-- SELECT
|
|
42
|
-
CREATE POLICY "table_select" ON SCHEMA_PADRAO.tabela
|
|
43
|
-
FOR SELECT USING (
|
|
44
|
-
((SELECT auth.jwt()) ->> 'alias'::text) = alias
|
|
45
|
-
);
|
|
46
|
-
|
|
47
|
-
-- INSERT
|
|
48
|
-
CREATE POLICY "table_insert" ON SCHEMA_PADRAO.tabela
|
|
49
|
-
FOR INSERT WITH CHECK (
|
|
50
|
-
((SELECT auth.jwt()) ->> 'alias'::text) = alias
|
|
51
|
-
);
|
|
52
|
-
|
|
53
|
-
-- UPDATE
|
|
54
|
-
CREATE POLICY "table_update" ON SCHEMA_PADRAO.tabela
|
|
55
|
-
FOR UPDATE
|
|
56
|
-
USING (((SELECT auth.jwt()) ->> 'alias'::text) = alias)
|
|
57
|
-
WITH CHECK (((SELECT auth.jwt()) ->> 'alias'::text) = alias);
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
### Alternativa: auth.uid() (quando tabela tem `id_user`)
|
|
61
|
-
|
|
62
|
-
```sql
|
|
63
|
-
CREATE POLICY "table_select" ON SCHEMA_PADRAO.tabela
|
|
64
|
-
FOR SELECT USING (auth.uid() = id_user);
|
|
65
|
-
|
|
66
|
-
CREATE POLICY "table_insert" ON SCHEMA_PADRAO.tabela
|
|
67
|
-
FOR INSERT WITH CHECK (auth.uid() = id_user);
|
|
68
|
-
|
|
69
|
-
CREATE POLICY "table_update" ON SCHEMA_PADRAO.tabela
|
|
70
|
-
FOR UPDATE
|
|
71
|
-
USING (auth.uid() = id_user)
|
|
72
|
-
WITH CHECK (auth.uid() = id_user);
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
### Padrão company_id (multi-tenancy por empresa)
|
|
25
|
+
## 1. Regras Invioláveis
|
|
76
26
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
### ❌ Erros comuns de RLS
|
|
88
|
-
|
|
89
|
-
```sql
|
|
90
|
-
-- ❌ WITH CHECK em SELECT (deve ser USING)
|
|
91
|
-
CREATE POLICY "x" ON SCHEMA_PADRAO.t FOR SELECT WITH CHECK (...);
|
|
92
|
-
|
|
93
|
-
-- ❌ USING em INSERT (deve ser WITH CHECK)
|
|
94
|
-
CREATE POLICY "x" ON SCHEMA_PADRAO.t FOR INSERT USING (...);
|
|
95
|
-
|
|
96
|
-
-- ❌ Parênteses extra no JWT
|
|
97
|
-
CREATE POLICY "x" ON SCHEMA_PADRAO.t FOR SELECT USING (
|
|
98
|
-
((SELECT (auth.jwt()) ->> 'alias'::text)) = alias
|
|
99
|
-
);
|
|
100
|
-
|
|
101
|
-
-- ❌ Política DELETE (usar soft delete)
|
|
102
|
-
CREATE POLICY "x" ON SCHEMA_PADRAO.t FOR DELETE USING (...);
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
### Soft delete (padrão obrigatório)
|
|
106
|
-
|
|
107
|
-
```sql
|
|
108
|
-
ALTER TABLE SCHEMA_PADRAO.tabela ADD COLUMN deleted_at TIMESTAMP WITH TIME ZONE;
|
|
109
|
-
|
|
110
|
-
-- Filtrar registros ativos
|
|
111
|
-
CREATE POLICY "table_select" ON SCHEMA_PADRAO.tabela
|
|
112
|
-
FOR SELECT USING (
|
|
113
|
-
deleted_at IS NULL
|
|
114
|
-
AND ((SELECT auth.jwt()) ->> 'alias'::text) = alias
|
|
115
|
-
);
|
|
116
|
-
```
|
|
27
|
+
| Regra | Detalhe |
|
|
28
|
+
|-------|---------|
|
|
29
|
+
| Schema obrigatório | `.schema()` com o schema do projeto (seção 0) em toda query |
|
|
30
|
+
| Sem DELETE físico | Soft delete com `deleted_at` + policy `FOR UPDATE` |
|
|
31
|
+
| Sem índices automáticos | Apenas com aprovação explícita |
|
|
32
|
+
| Sem modificar `.env` | Apenas com autorização do usuário |
|
|
33
|
+
| Sem hardcoded admin | Nunca localStorage/sessionStorage para roles |
|
|
34
|
+
| Lib-first | Usar `forlogic-core` antes de criar componente |
|
|
35
|
+
| Import do Supabase | Sempre `getSupabaseClient()` de `forlogic-core`, nunca `@/integrations/supabase/client` |
|
|
117
36
|
|
|
118
|
-
|
|
37
|
+
---
|
|
119
38
|
|
|
120
|
-
|
|
39
|
+
## 2. RLS — Resumo de Sintaxe
|
|
121
40
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
SELECT EXISTS (SELECT 1 FROM public.user_roles WHERE user_id = _user_id AND role = _role)
|
|
127
|
-
$$;
|
|
128
|
-
```
|
|
41
|
+
- `SELECT` → `USING` | `INSERT` → `WITH CHECK` | `UPDATE` → `USING` + `WITH CHECK`
|
|
42
|
+
- **Nunca** `FOR DELETE`
|
|
43
|
+
- **Sempre** `(SELECT auth.jwt())` com parênteses (evita re-execução por linha)
|
|
44
|
+
- Padrão multi-tenant: `((SELECT auth.jwt()) ->> 'alias'::text) = alias`
|
|
129
45
|
|
|
130
46
|
---
|
|
131
47
|
|
|
132
|
-
## 3. Convenções
|
|
48
|
+
## 3. Convenções SQL
|
|
133
49
|
|
|
134
50
|
| Tipo | Padrão | Exemplo |
|
|
135
51
|
|------|--------|---------|
|
|
136
|
-
| FK | `id_<
|
|
137
|
-
| Boolean | `is_`
|
|
52
|
+
| FK | `id_<singular>` | `id_process` |
|
|
53
|
+
| Boolean | `is_` / `has_` | `is_active` |
|
|
138
54
|
| Timestamps | `created_at`, `updated_at`, `deleted_at` | — |
|
|
139
|
-
| Tabelas | plural, snake_case | `processes
|
|
55
|
+
| Tabelas | plural, snake_case | `processes` |
|
|
140
56
|
|
|
141
57
|
---
|
|
142
58
|
|
|
143
|
-
## 4.
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
|
148
|
-
|
|
149
|
-
|
|
|
150
|
-
|
|
|
151
|
-
|
|
|
152
|
-
|
|
|
59
|
+
## 4. Mapa de Módulos (forlogic-core)
|
|
60
|
+
|
|
61
|
+
> Para props, tipos e implementação: ler do projeto **Admin** (forlogic-core) via cross-project.
|
|
62
|
+
|
|
63
|
+
| Módulo | Caminho | O que contém |
|
|
64
|
+
|--------|---------|--------------|
|
|
65
|
+
| **UI Components** | `lib/components/ui/` | Button, Dialog, Input, Select, Combobox, Badge, Tabs, etc. |
|
|
66
|
+
| **Layout** | `lib/components/layout/` | AppLayout, AppHeader, AppSidebar, BodyContent |
|
|
67
|
+
| **CRUD** | `lib/crud/` | createCrudPage, CrudTable, CrudGrid, BaseForm, ActionBar |
|
|
68
|
+
| **CRUD Primitives** | `lib/crud/primitives/` | Table, FilterBar, Pagination, ActionMenu, TreeTable |
|
|
69
|
+
| **Auth** | `lib/auth/` | AuthContext, ProtectedRoute, LoginPage, TokenManager |
|
|
70
|
+
| **Módulos** | `lib/components/modules/` | ModulesDialog, ModuleGrid, ModuleAccessGuard |
|
|
71
|
+
| **Places** | `lib/places/` | PlacesList, PlaceCard, ManageAccessModal |
|
|
72
|
+
| **Leadership** | `lib/leadership/` | LeadershipPage, LeadershipDialog |
|
|
73
|
+
| **Media** | `lib/media/` | ImageEditor, VideoEditor, useMediaUpload |
|
|
74
|
+
| **Sign** | `lib/sign/` | SignWidget, D4SignWidget, SignConfigForm |
|
|
75
|
+
| **Qualiex** | `lib/qualiex/` | QualiexUserField, useQualiexUsers |
|
|
76
|
+
| **i18n** | `lib/i18n/` | Namespaces core/app, JSONs por idioma, addAppTranslations, formatadores |
|
|
77
|
+
| **Config** | `lib/config/` | Environments, CRUD defaults, mensagens |
|
|
78
|
+
| **Services** | `lib/services/` | BaseService, EmailService, ErrorService |
|
|
79
|
+
| **Hooks** | `lib/hooks/` | useDebounce, useWizard, useModuleAccess, useColumnResize |
|
|
80
|
+
| **Providers** | `lib/providers/` | CoreProviders (setup simplificado) |
|
|
81
|
+
| **Vite** | `lib/vite/` | create-config, CSP, security headers |
|
|
82
|
+
| **Tailwind** | `lib/tailwind/` | Preset compartilhado |
|
|
153
83
|
|
|
154
84
|
---
|
|
155
85
|
|
|
156
|
-
## 5.
|
|
157
|
-
|
|
158
|
-
Antes de criar qualquer componente, verificar se já existe em `forlogic-core`:
|
|
159
|
-
|
|
160
|
-
- **UI**: Button, Dialog, Input, Select, Combobox, SplitButton, RichTextEditor, ColorPicker, IconPicker, etc.
|
|
161
|
-
- **Layout**: AppLayout, AppHeader, AppSidebar, BodyContent
|
|
162
|
-
- **CRUD**: createCrudPage, CrudTable, CrudGrid, CrudActionBar, BaseForm
|
|
163
|
-
- **Utilitários**: ActionButton, Pagination, FilterBar, EmptyState, LoadingState, StepSelector
|
|
164
|
-
- **Módulos**: Sign, Places, Leadership, Media, ModulesDialog
|
|
86
|
+
## 5. Padrões Deprecated
|
|
165
87
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
---
|
|
171
|
-
|
|
172
|
-
## 6. Padrões CRUD
|
|
173
|
-
|
|
174
|
-
- **Toolbar**: Layout 3 zonas — Esquerda (Botão Novo + Ações em lote), Centro (Busca), Direita (Filtros + Toggle view)
|
|
175
|
-
- **Paginação**: Sempre usar `CrudPrimitivePagination` com `variant="full"`
|
|
176
|
-
- **Ações em lote**: Dropdown "Ações em lote" no CrudActionBar (não criar BulkActionBar separado)
|
|
177
|
-
- **Ações de linha**: Sempre usar `ActionButton` da lib (nunca botão genérico com ícone MoreHorizontal)
|
|
178
|
-
|
|
179
|
-
---
|
|
180
|
-
|
|
181
|
-
## 7. Componentes/Padrões Deprecated
|
|
182
|
-
|
|
183
|
-
| Não usar | Usar em vez disso |
|
|
184
|
-
|----------|-------------------|
|
|
185
|
-
| `BulkActionBar` separado | Dropdown integrado no `CrudActionBar` |
|
|
186
|
-
| Botão genérico `<MoreHorizontal>` | `ActionButton` da lib |
|
|
88
|
+
| ❌ Não usar | ✅ Usar |
|
|
89
|
+
|------------|--------|
|
|
90
|
+
| `BulkActionBar` separado | Dropdown no `CrudActionBar` |
|
|
91
|
+
| `<MoreHorizontal>` genérico | `ActionButton` |
|
|
187
92
|
| Paginação manual | `CrudPrimitivePagination` |
|
|
188
|
-
| `public` schema | `.schema('SCHEMA_PADRAO')` |
|
|
189
93
|
| `StatusSelect` | `Combobox` |
|
|
190
94
|
| `DeleteConfirmationDialog` | `Dialog` |
|
|
191
95
|
| `Searchbar` | `Input` com ícone |
|
|
192
96
|
|
|
193
97
|
---
|
|
194
98
|
|
|
195
|
-
##
|
|
99
|
+
## 6. Fontes de Contexto
|
|
196
100
|
|
|
197
|
-
| Fonte | Caminho |
|
|
198
|
-
|
|
199
|
-
|
|
|
200
|
-
|
|
|
201
|
-
|
|
|
202
|
-
|
|
|
203
|
-
|
|
|
204
|
-
| **DESIGN_SYSTEM.md** | `docs/DESIGN_SYSTEM.md` | Documentação técnica do Design System |
|
|
205
|
-
|
|
206
|
-
> 📌 Ao implementar qualquer funcionalidade, consulte as fontes acima antes de criar código novo.
|
|
101
|
+
| Fonte | Caminho |
|
|
102
|
+
|-------|---------|
|
|
103
|
+
| Memory rules | `.note/memory/rules/` |
|
|
104
|
+
| Memory patterns | `.note/memory/patterns/` |
|
|
105
|
+
| Memory components | `.note/memory/components/` |
|
|
106
|
+
| Código-fonte da lib | Cross-project → projeto **Admin** (forlogic-core) |
|
|
107
|
+
| Design System (visual) | Rota `/ds` no app do projeto **Admin** |
|
package/dist/exports/crud.d.ts
CHANGED
|
@@ -17,5 +17,6 @@ export { Table as CrudPrimitiveTable } from '../crud/primitives/Table';
|
|
|
17
17
|
export { ActionMenu } from '../crud/primitives/ActionMenu';
|
|
18
18
|
export { Pagination as CrudPrimitivePagination } from '../crud/primitives/Pagination';
|
|
19
19
|
export { FilterBar as CrudPrimitiveFilterBar } from '../crud/primitives/FilterBar';
|
|
20
|
-
export
|
|
20
|
+
export { TreeTable } from '../crud/primitives/TreeTable';
|
|
21
|
+
export type { TableProps as CrudPrimitiveTableProps, TableColumn, ActionMenuProps, ActionItem, PaginationProps as CrudPrimitivePaginationProps, FilterBarProps as CrudPrimitiveFilterBarProps, TreeNode, TreeTableColumn, TreeTableProps, } from '../crud/primitives/types';
|
|
21
22
|
export * from '../crud/utils/routingHelpers';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook que deriva a lista de módulos contratados a partir das associações do usuário.
|
|
3
|
+
* Cruza `association.softwares` com `SOFTWARES_MAP` e `MODULES_DATA`.
|
|
4
|
+
*
|
|
5
|
+
* @param override - Se fornecido, retorna diretamente (bypass da derivação)
|
|
6
|
+
* @returns Lista de nomes de módulos contratados, ou `undefined` se dados indisponíveis
|
|
7
|
+
*/
|
|
8
|
+
export declare function useDerivedContractedModules(override?: string[]): string[] | undefined;
|
package/dist/i18n/config.d.ts
CHANGED
|
@@ -1,2 +1,13 @@
|
|
|
1
1
|
import i18n from 'i18next';
|
|
2
|
+
/**
|
|
3
|
+
* Injeta traduções do projeto consumidor no namespace 'app'.
|
|
4
|
+
* Chamado pelo CoreProviders ou manualmente no setup do projeto.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```ts
|
|
8
|
+
* import ptBR from './locales/pt-BR.json';
|
|
9
|
+
* addAppTranslations('pt-BR', ptBR);
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
export declare function addAppTranslations(lang: string, translations: Record<string, string>): void;
|
|
2
13
|
export default i18n;
|
package/dist/i18n/index.d.ts
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* }
|
|
15
15
|
* ```
|
|
16
16
|
*/
|
|
17
|
-
export { default as i18n } from './config';
|
|
17
|
+
export { default as i18n, addAppTranslations } from './config';
|
|
18
18
|
export { useTranslation } from 'react-i18next';
|
|
19
19
|
export { I18nextProvider } from 'react-i18next';
|
|
20
20
|
export * from './constants';
|