forlogic-core 1.16.3 → 1.16.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/README.md +113 -109
- package/dist/README.md +113 -109
- package/dist/components/modules/AccessDeniedDialog.d.ts +41 -0
- package/dist/components/modules/ModuleAccessGuard.d.ts +3 -1
- package/dist/components/modules/ModuleOfferContent.d.ts +20 -0
- package/dist/components/modules/ModulesContent.d.ts +15 -0
- package/dist/components/modules/ModulesFooterCards.d.ts +6 -0
- package/dist/components/modules/index.d.ts +8 -0
- package/dist/components/modules/types.d.ts +2 -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/docs/DESIGN_SYSTEM.md +17 -32
- package/package.json +4 -2
- package/dist/assets/AccordionDoc-BnfxyOi9.js +0 -31
- package/dist/assets/ActionButtonDoc-b4F_J8gn.js +0 -47
- package/dist/assets/AlertDoc-PkiHguSJ.js +0 -37
- package/dist/assets/AppHeaderDoc-CsFMZGV0.js +0 -67
- package/dist/assets/AppSidebarDoc-Bg71N-zq.js +0 -196
- package/dist/assets/AuthDoc-DDm57y_J.js +0 -192
- package/dist/assets/AvatarDoc-C6wiZIZR.js +0 -11
- package/dist/assets/BadgeDoc-Bsg7cfm0.js +0 -36
- package/dist/assets/BaseFormDoc-DeIlV273.js +0 -169
- package/dist/assets/BodyContentDoc-Q3DGvyN9.js +0 -83
- package/dist/assets/BreadcrumbDoc-ChsVFjMF.js +0 -75
- package/dist/assets/ButtonDoc-C7Q31Bh3.js +0 -41
- package/dist/assets/ButtonGroupDoc-Bn5vhjBq.js +0 -7
- package/dist/assets/CalendarDoc-iVjNyxyr.js +0 -81
- package/dist/assets/CardDoc-D511dll7.js +0 -49
- package/dist/assets/ChartDoc-CQyYOEHL.js +0 -111
- package/dist/assets/CheckboxDoc-Cjsy4XAq.js +0 -55
- package/dist/assets/ColorPickerDoc-hnYJUWpF.js +0 -10
- package/dist/assets/ColorsFoundationDoc-B8Z4tAyZ.js +0 -13
- package/dist/assets/ComboTreeDoc-ChEbW4a3.js +0 -21
- package/dist/assets/ComboboxDoc-CHWeGE_F.js +0 -134
- package/dist/assets/ComponentDocTemplate-BtOCnlM2.js +0 -1
- package/dist/assets/ContextMenuDoc-C3mFO_Yx.js +0 -182
- package/dist/assets/ContextsDoc-ChEbQxom.js +0 -184
- package/dist/assets/CreateCrudPageDoc-C9tXisCF.js +0 -106
- package/dist/assets/CrudActionBarDoc-Cp1L4gpO.js +0 -112
- package/dist/assets/CrudGridDoc-D-kSFBAQ.js +0 -85
- package/dist/assets/CrudOverviewDoc-CeLBwg-B.js +0 -14
- package/dist/assets/CrudPrimitivesDoc-B2u1vZog.js +0 -164
- package/dist/assets/CrudTableDoc-CvV-II_X.js +0 -95
- package/dist/assets/DataListDoc-BLRii0jB.js +0 -13
- package/dist/assets/DesignSystemHome-TE0Ubaup.js +0 -1
- package/dist/assets/DialogDoc--LC5Jvat.js +0 -981
- package/dist/assets/DropdownMenuDoc-oPlEriRY.js +0 -175
- package/dist/assets/EmptyStateDoc-rNqfWKok.js +0 -35
- package/dist/assets/EnvironmentsDoc-CT7l5s2u.js +0 -96
- package/dist/assets/ErrorBoundaryDoc-rPHOUygA.js +0 -111
- package/dist/assets/ExampleCard-DfuMYM6E.js +0 -1
- package/dist/assets/FormDoc-B0L_QaCT.js +0 -81
- package/dist/assets/FoundationOverview-Dbb8rBsU.js +0 -1
- package/dist/assets/GridDoc-ifcGA2Yw.js +0 -28
- package/dist/assets/HooksDoc-CUOT_3Du.js +0 -665
- package/dist/assets/HoverCardDoc-CdTU2QkI.js +0 -31
- package/dist/assets/I18nDoc-CMEvFqsz.js +0 -232
- package/dist/assets/IconPickerDoc-DF9hEwnJ.js +0 -10
- package/dist/assets/IconsFoundationDoc-D4Y0wKbm.js +0 -33
- package/dist/assets/InputDoc-d_IL4dsq.js +0 -211
- package/dist/assets/LabelDoc-Dr64ISiJ.js +0 -42
- package/dist/assets/LeadershipDoc-BnrTuaeV.js +0 -416
- package/dist/assets/MediaDoc-CLuVprAr.js +0 -459
- package/dist/assets/MenubarDoc-CW7L4QJ4.js +0 -165
- package/dist/assets/ModulesDialogDoc-CUb_g4X-.js +0 -71
- package/dist/assets/NavigationMenuDoc-Csc0U6bV.js +0 -116
- package/dist/assets/OnboardingDialogDoc-3RtjNH1O.js +0 -55
- package/dist/assets/PaginationDoc-BGurD4xQ.js +0 -27
- package/dist/assets/PaginationDoc-DqFyou6O.js +0 -98
- package/dist/assets/PlacesDoc-Dyx8gsqb.js +0 -226
- package/dist/assets/PopoverDoc-DHF-ItUX.js +0 -64
- package/dist/assets/ProgressDoc-DXKV-fkI.js +0 -29
- package/dist/assets/QualiexUserFieldDoc-BbP7w-Pu.js +0 -149
- package/dist/assets/RadioGroupDoc-D845uweM.js +0 -57
- package/dist/assets/RadiusDoc-vN4tTsay.js +0 -7
- package/dist/assets/RequiredFieldsCounterDoc-TzR9r-U9.js +0 -58
- package/dist/assets/ResizableDoc-Bkfz_25O.js +0 -104
- package/dist/assets/RichTextEditorDoc-BUQrg7M8.js +0 -24
- package/dist/assets/ScrollAreaDoc-B6ODYHMX.js +0 -28
- package/dist/assets/SecurityDoc-Chbt6w1s.js +0 -204
- package/dist/assets/SelectDoc-BhcpBIAO.js +0 -80
- package/dist/assets/SeparatorDoc-C3fhatb0.js +0 -4
- package/dist/assets/ServicesDoc-_uao-HA_.js +0 -308
- package/dist/assets/ShadowsDoc-DpkO_TZQ.js +0 -9
- package/dist/assets/SignDoc-BJtnoT6I.js +0 -66
- package/dist/assets/SkeletonDoc-BZS07PJh.js +0 -54
- package/dist/assets/SliderDoc-D2ApV3XT.js +0 -41
- package/dist/assets/SpacingDoc-PNrU24B2.js +0 -12
- package/dist/assets/SplitButtonDoc-D5tUF2Ja.js +0 -53
- package/dist/assets/StepSelectorDoc-Cj0ALYar.js +0 -41
- package/dist/assets/SwitchDoc-DtsT8oh_.js +0 -56
- package/dist/assets/TableDoc-BC-jQnXu.js +0 -128
- package/dist/assets/TableOfContents-DBMJMbI4.js +0 -1
- package/dist/assets/TabsDoc-DtXJ0xY5.js +0 -42
- package/dist/assets/TextareaDoc-nuW5tqBQ.js +0 -46
- package/dist/assets/ToastDoc-D1aX5zda.js +0 -157
- package/dist/assets/ToggleDoc-ILass4CS.js +0 -51
- package/dist/assets/TooltipDoc-lPbdWe_9.js +0 -58
- package/dist/assets/TruncatedCellDoc-DOAzbF2F.js +0 -12
- package/dist/assets/TypographyFoundationDoc-3ZD-rQZw.js +0 -7
- package/dist/assets/UtilitiesDoc-D7lkYhuz.js +0 -145
- package/dist/assets/blocks-Jy49RoqJ.js +0 -1
- package/dist/assets/calendar-days-Cvf2zLJl.js +0 -1
- package/dist/assets/circle-plus-MnG9kjyq.js +0 -1
- package/dist/assets/circle-x-B9ouupla.js +0 -1
- package/dist/assets/crown-BweN5jpI.js +0 -1
- package/dist/assets/date-picker-ttyYeYvC.js +0 -1
- package/dist/assets/disabled-menu-item-WlpPOqxg.js +0 -1
- package/dist/assets/drawer-DvU6_eK5.js +0 -3
- package/dist/assets/file-pen-line-C0VV-QjF.js +0 -1
- package/dist/assets/git-branch-DCjGGwvF.js +0 -1
- package/dist/assets/globe-BdFDFP_k.js +0 -1
- package/dist/assets/grip-vertical-CgXp0oI-.js +0 -1
- package/dist/assets/hash-BAYi_wfk.js +0 -1
- package/dist/assets/index-BtX5DZqb.js +0 -310
- package/dist/assets/index-C1So5Sai.css +0 -1
- package/dist/assets/life-buoy-BydIgTyJ.js +0 -1
- package/dist/assets/lucide-react-ZIMhRYmb.js +0 -1
- package/dist/assets/monitor-B6txWJPg.js +0 -1
- package/dist/assets/package-DNe3FsCh.js +0 -1
- package/dist/assets/pen-CzTmQ16z.js +0 -1
- package/dist/assets/pin-CJJgLEBz.js +0 -1
- package/dist/assets/radio-group-Btv_BY60.js +0 -1
- package/dist/assets/server-XQDXtrjm.js +0 -1
- package/dist/assets/share-2-Dz_89MJb.js +0 -1
- package/dist/assets/step-selector-D0_Y1dow.js +0 -1
- package/dist/assets/text-align-start-WsHo7CNJ.js +0 -1
- package/dist/assets/trash-CeK-mWnM.js +0 -1
- package/dist/assets/useMockCrud-RV9z9n5x.js +0 -1
- package/dist/assets/user-check-CrbWcnPN.js +0 -1
- package/dist/assets/user-plus-Dce9DbqQ.js +0 -1
- package/dist/index.html +0 -35
package/README.md
CHANGED
|
@@ -75,16 +75,16 @@ A `forlogic-core` é a **biblioteca central** de componentes, serviços e utilit
|
|
|
75
75
|
|
|
76
76
|
```typescript
|
|
77
77
|
// ✅ Sempre importe da forlogic-core
|
|
78
|
-
import {
|
|
79
|
-
Button,
|
|
80
|
-
Input,
|
|
81
|
-
Dialog,
|
|
78
|
+
import {
|
|
79
|
+
Button,
|
|
80
|
+
Input,
|
|
81
|
+
Dialog,
|
|
82
82
|
Combobox,
|
|
83
83
|
SplitButton,
|
|
84
84
|
RichTextEditor,
|
|
85
85
|
createCrudPage,
|
|
86
86
|
cn,
|
|
87
|
-
formatDatetime
|
|
87
|
+
formatDatetime
|
|
88
88
|
} from 'forlogic-core';
|
|
89
89
|
```
|
|
90
90
|
|
|
@@ -100,21 +100,21 @@ src/components/SplitButton.tsx // Existe na lib (a partir de v1.12.2)
|
|
|
100
100
|
|
|
101
101
|
### 🔄 Processo Quando Precisa de Customização
|
|
102
102
|
|
|
103
|
-
| Cenário
|
|
104
|
-
|
|
105
|
-
| Componente não existe na lib
|
|
106
|
-
| Precisa de variante nova
|
|
107
|
-
| Precisa de comportamento específico | ✅ Usar composição/wrapper ao invés de recriar
|
|
108
|
-
| Bug no componente da lib
|
|
103
|
+
| Cenário | Ação Correta |
|
|
104
|
+
| ----------------------------------- | ---------------------------------------------------- |
|
|
105
|
+
| Componente não existe na lib | ✅ Criar localmente E solicitar inclusão na lib |
|
|
106
|
+
| Precisa de variante nova | ✅ Solicitar variante na lib (PR ou pedido) |
|
|
107
|
+
| Precisa de comportamento específico | ✅ Usar composição/wrapper ao invés de recriar |
|
|
108
|
+
| Bug no componente da lib | ✅ Reportar e corrigir na lib, não criar cópia local |
|
|
109
109
|
|
|
110
110
|
### 📖 Onde Verificar Componentes Disponíveis
|
|
111
111
|
|
|
112
|
-
| Recurso
|
|
113
|
-
|
|
114
|
-
| `/design_system`
|
|
115
|
-
| `forlogic-core/lib/exports/ui.ts` | Lista de exports de UI
|
|
116
|
-
| `forlogic-core/lib/index.ts`
|
|
117
|
-
| `npx lib-update`
|
|
112
|
+
| Recurso | Descrição |
|
|
113
|
+
| --------------------------------- | --------------------------------------------------- |
|
|
114
|
+
| `/design_system` | Design System com todos os componentes documentados |
|
|
115
|
+
| `forlogic-core/lib/exports/ui.ts` | Lista de exports de UI |
|
|
116
|
+
| `forlogic-core/lib/index.ts` | Index principal com todos os exports |
|
|
117
|
+
| `npx lib-update` | Baixa documentação atualizada |
|
|
118
118
|
|
|
119
119
|
### ⚠️ Exceções (quando PODE criar localmente)
|
|
120
120
|
|
|
@@ -309,6 +309,7 @@ import { forlogicTailwindPreset, forlogicContentPaths } from 'forlogic-core/tail
|
|
|
309
309
|
### 🔒 Plugin de Headers de Segurança (Vite)
|
|
310
310
|
|
|
311
311
|
O plugin configura automaticamente:
|
|
312
|
+
|
|
312
313
|
- **Content Security Policy (CSP)** - Proteção contra XSS e injeção de scripts
|
|
313
314
|
- **CORS seguro** - Origens confiáveis sem usar `*`
|
|
314
315
|
- **Headers OWASP** - HSTS, X-Content-Type-Options, X-Frame-Options, etc.
|
|
@@ -349,27 +350,27 @@ export default defineConfig(({ mode }) => ({
|
|
|
349
350
|
'https://seu-projeto-dev.supabase.co',
|
|
350
351
|
'https://seu-projeto-prod.supabase.co',
|
|
351
352
|
],
|
|
352
|
-
|
|
353
|
+
|
|
353
354
|
// Origens confiáveis adicionais para CORS
|
|
354
355
|
trustedOrigins: [
|
|
355
356
|
'https://meu-app.com',
|
|
356
357
|
'https://admin.meu-app.com',
|
|
357
358
|
],
|
|
358
|
-
|
|
359
|
+
|
|
359
360
|
// APIs externas para connect-src
|
|
360
361
|
additionalConnectSrc: [
|
|
361
362
|
'https://api.exemplo.com',
|
|
362
363
|
'wss://websocket.exemplo.com',
|
|
363
364
|
],
|
|
364
|
-
|
|
365
|
+
|
|
365
366
|
// CDNs de scripts/estilos/fontes adicionais
|
|
366
367
|
additionalScriptSrc: ['https://cdn.analytics.com'],
|
|
367
368
|
additionalStyleSrc: ['https://fonts.custom.com'],
|
|
368
369
|
additionalFontSrc: ['https://fonts.gstatic.com'],
|
|
369
|
-
|
|
370
|
+
|
|
370
371
|
// URI para reportar violações CSP
|
|
371
372
|
cspReportUri: 'https://seu-projeto.supabase.co/functions/v1/csp-report',
|
|
372
|
-
|
|
373
|
+
|
|
373
374
|
// Opções de produção (defaults: true)
|
|
374
375
|
enableTrustedTypes: true,
|
|
375
376
|
upgradeInsecureRequests: true,
|
|
@@ -380,17 +381,17 @@ export default defineConfig(({ mode }) => ({
|
|
|
380
381
|
|
|
381
382
|
#### Opções do Plugin
|
|
382
383
|
|
|
383
|
-
| Opção
|
|
384
|
-
|
|
385
|
-
| `supabaseUrls`
|
|
386
|
-
| `trustedOrigins`
|
|
387
|
-
| `additionalScriptSrc`
|
|
388
|
-
| `additionalStyleSrc`
|
|
389
|
-
| `additionalConnectSrc`
|
|
390
|
-
| `additionalFontSrc`
|
|
391
|
-
| `cspReportUri`
|
|
392
|
-
| `enableTrustedTypes`
|
|
393
|
-
| `upgradeInsecureRequests` | `boolean`
|
|
384
|
+
| Opção | Tipo | Padrão | Descrição |
|
|
385
|
+
| ------------------------- | ---------- | ------ | --------------------------------------- |
|
|
386
|
+
| `supabaseUrls` | `string[]` | `[]` | URLs do Supabase permitidas |
|
|
387
|
+
| `trustedOrigins` | `string[]` | `[]` | Origens confiáveis adicionais para CORS |
|
|
388
|
+
| `additionalScriptSrc` | `string[]` | `[]` | Fontes de script adicionais para CSP |
|
|
389
|
+
| `additionalStyleSrc` | `string[]` | `[]` | Fontes de estilo adicionais para CSP |
|
|
390
|
+
| `additionalConnectSrc` | `string[]` | `[]` | APIs/WebSockets adicionais para CSP |
|
|
391
|
+
| `additionalFontSrc` | `string[]` | `[]` | Fontes de font adicionais para CSP |
|
|
392
|
+
| `cspReportUri` | `string` | - | URI para relatório de violações CSP |
|
|
393
|
+
| `enableTrustedTypes` | `boolean` | `true` | Habilitar Trusted Types em produção |
|
|
394
|
+
| `upgradeInsecureRequests` | `boolean` | `true` | Upgrade HTTP→HTTPS em produção |
|
|
394
395
|
|
|
395
396
|
---
|
|
396
397
|
|
|
@@ -417,7 +418,7 @@ const forlogicConfig = createForlogicViteConfig({
|
|
|
417
418
|
export default defineConfig(({ mode }) => {
|
|
418
419
|
const isDev = mode === 'development';
|
|
419
420
|
const baseConfig = forlogicConfig(isDev);
|
|
420
|
-
|
|
421
|
+
|
|
421
422
|
return {
|
|
422
423
|
...baseConfig,
|
|
423
424
|
plugins: [react(), ...baseConfig.plugins],
|
|
@@ -454,12 +455,12 @@ export default defineConfig(({ mode }) => {
|
|
|
454
455
|
host: '::',
|
|
455
456
|
port: 8080,
|
|
456
457
|
},
|
|
457
|
-
|
|
458
|
+
|
|
458
459
|
// Força re-bundle quando atualizar forlogic-core
|
|
459
460
|
optimizeDeps: {
|
|
460
461
|
force: true,
|
|
461
462
|
},
|
|
462
|
-
|
|
463
|
+
|
|
463
464
|
plugins: [
|
|
464
465
|
react(),
|
|
465
466
|
// Headers de segurança (CSP, CORS, etc.)
|
|
@@ -476,21 +477,21 @@ export default defineConfig(({ mode }) => {
|
|
|
476
477
|
: 'https://SEU_PROJETO_PROD.supabase.co/functions/v1/csp-report',
|
|
477
478
|
}),
|
|
478
479
|
],
|
|
479
|
-
|
|
480
|
+
|
|
480
481
|
// CRÍTICO: Aliases devem usar caminhos absolutos
|
|
481
482
|
resolve: {
|
|
482
483
|
alias: {
|
|
483
484
|
'@': path.resolve(__dirname, './src'),
|
|
484
485
|
},
|
|
485
486
|
},
|
|
486
|
-
|
|
487
|
+
|
|
487
488
|
publicDir: false,
|
|
488
|
-
|
|
489
|
+
|
|
489
490
|
esbuild: {
|
|
490
491
|
sourcemap: true,
|
|
491
492
|
target: 'es2020',
|
|
492
493
|
},
|
|
493
|
-
|
|
494
|
+
|
|
494
495
|
build: {
|
|
495
496
|
chunkSizeWarningLimit: 4000,
|
|
496
497
|
},
|
|
@@ -530,6 +531,7 @@ export default defineConfig(({ mode }) => ({
|
|
|
530
531
|
### 🎨 Preset Tailwind CSS
|
|
531
532
|
|
|
532
533
|
O preset inclui:
|
|
534
|
+
|
|
533
535
|
- **Cores semânticas** - primary, secondary, destructive, success, warning, etc.
|
|
534
536
|
- **Border radius** - lg, md, sm padronizados
|
|
535
537
|
- **Animações** - accordion, fade, slide, scale
|
|
@@ -646,11 +648,11 @@ A biblioteca suporta feature flags para habilitar/desabilitar funcionalidades op
|
|
|
646
648
|
|
|
647
649
|
### Variáveis Disponíveis
|
|
648
650
|
|
|
649
|
-
| Variável
|
|
650
|
-
|
|
651
|
+
| Variável | Descrição | Valores | Padrão |
|
|
652
|
+
| ---------------------------- | ------------------------------------------------------------------------------------ | -------------------- | --------- |
|
|
651
653
|
| `VITE_SHOW_USER_PREFERENCES` | Exibe opção de "Preferências" no menu do usuário (idioma, timezone, formato de data) | `"true"` / `"false"` | Não exibe |
|
|
652
|
-
| `VITE_I18N_DEBUG_MODE`
|
|
653
|
-
| `VITE_IS_QUALIEX`
|
|
654
|
+
| `VITE_I18N_DEBUG_MODE` | Modo debug de internacionalização (mostra chaves ao invés de traduções) | `"true"` / `"false"` | `"false"` |
|
|
655
|
+
| `VITE_IS_QUALIEX` | Define se usa logos Qualiex ou Forlogic | `"true"` / `"false"` | `"false"` |
|
|
654
656
|
|
|
655
657
|
### Configuração
|
|
656
658
|
|
|
@@ -677,13 +679,13 @@ O sistema de internacionalização (i18n) do `forlogic-core` carrega traduções
|
|
|
677
679
|
|
|
678
680
|
### Requisitos
|
|
679
681
|
|
|
680
|
-
| Requisito
|
|
681
|
-
|
|
682
|
-
| `VITE_SUPABASE_URL`
|
|
683
|
-
| `VITE_SUPABASE_PUBLISHABLE_KEY` | Chave pública (anon key) do Supabase
|
|
684
|
-
| `i18next`
|
|
685
|
-
| `react-i18next`
|
|
686
|
-
| Tabela `common.translations`
|
|
682
|
+
| Requisito | Descrição |
|
|
683
|
+
| ------------------------------- | -------------------------------------------------------------------------- |
|
|
684
|
+
| `VITE_SUPABASE_URL` | URL do projeto Supabase (mesma instância que contém `common.translations`) |
|
|
685
|
+
| `VITE_SUPABASE_PUBLISHABLE_KEY` | Chave pública (anon key) do Supabase |
|
|
686
|
+
| `i18next` | Peer dependency instalada |
|
|
687
|
+
| `react-i18next` | Peer dependency instalada |
|
|
688
|
+
| Tabela `common.translations` | Deve existir no Supabase com RLS pública para SELECT |
|
|
687
689
|
|
|
688
690
|
### Passo 1: Instalar Peer Dependencies
|
|
689
691
|
|
|
@@ -772,13 +774,13 @@ function MeuComponente() {
|
|
|
772
774
|
|
|
773
775
|
#### Traduções mostram apenas as chaves (ex: `common.save` ao invés de "Salvar")
|
|
774
776
|
|
|
775
|
-
| Causa
|
|
776
|
-
|
|
777
|
-
| `main.tsx` não aguarda i18n
|
|
778
|
-
| Peer dependencies faltando
|
|
779
|
-
| Variáveis de ambiente incorretas | Verificar `VITE_SUPABASE_URL` e `VITE_SUPABASE_PUBLISHABLE_KEY`
|
|
780
|
-
| Supabase diferente
|
|
781
|
-
| Import de `react-i18next` direto | Usar import de `forlogic-core`
|
|
777
|
+
| Causa | Solução |
|
|
778
|
+
| -------------------------------- | -------------------------------------------------------------------- |
|
|
779
|
+
| `main.tsx` não aguarda i18n | Adicionar verificação `i18n.isInitialized` conforme Passo 3 |
|
|
780
|
+
| Peer dependencies faltando | Instalar `i18next` e `react-i18next` |
|
|
781
|
+
| Variáveis de ambiente incorretas | Verificar `VITE_SUPABASE_URL` e `VITE_SUPABASE_PUBLISHABLE_KEY` |
|
|
782
|
+
| Supabase diferente | Verificar se aponta para a mesma instância com `common.translations` |
|
|
783
|
+
| Import de `react-i18next` direto | Usar import de `forlogic-core` |
|
|
782
784
|
|
|
783
785
|
#### Debug: Verificar se traduções foram carregadas
|
|
784
786
|
|
|
@@ -823,14 +825,14 @@ O `CoreProviders` é um componente que encapsula todos os providers essenciais d
|
|
|
823
825
|
|
|
824
826
|
O `CoreProviders` encapsula automaticamente:
|
|
825
827
|
|
|
826
|
-
| Provider
|
|
827
|
-
|
|
828
|
-
| `ErrorBoundary`
|
|
829
|
-
| `I18nextProvider`
|
|
830
|
-
| `QueryClientProvider` | Cache e gerenciamento de queries (React Query)
|
|
831
|
-
| `AuthProvider`
|
|
832
|
-
| `LocaleProvider`
|
|
833
|
-
| `TranslationLoader`
|
|
828
|
+
| Provider | Descrição |
|
|
829
|
+
| --------------------- | ----------------------------------------------------------- |
|
|
830
|
+
| `ErrorBoundary` | Captura e trata erros de renderização React |
|
|
831
|
+
| `I18nextProvider` | Sistema de internacionalização (i18n) |
|
|
832
|
+
| `QueryClientProvider` | Cache e gerenciamento de queries (React Query) |
|
|
833
|
+
| `AuthProvider` | Autenticação e gerenciamento de sessão |
|
|
834
|
+
| `LocaleProvider` | Gerenciamento de locale (idioma, timezone, formato de data) |
|
|
835
|
+
| `TranslationLoader` | Carregamento dinâmico de traduções do banco de dados |
|
|
834
836
|
|
|
835
837
|
### Uso Básico
|
|
836
838
|
|
|
@@ -883,10 +885,10 @@ function App() {
|
|
|
883
885
|
|
|
884
886
|
### Props
|
|
885
887
|
|
|
886
|
-
| Prop
|
|
887
|
-
|
|
888
|
-
| `children`
|
|
889
|
-
| `queryClient` | `QueryClient` | ❌
|
|
888
|
+
| Prop | Tipo | Obrigatório | Descrição |
|
|
889
|
+
| ------------- | ------------- | ----------- | --------------------------------------------------------------------------- |
|
|
890
|
+
| `children` | `ReactNode` | ✅ | Componentes filhos a serem envolvidos |
|
|
891
|
+
| `queryClient` | `QueryClient` | ❌ | Instância customizada do QueryClient. Se não fornecido, um default é criado |
|
|
890
892
|
|
|
891
893
|
### QueryClient Default
|
|
892
894
|
|
|
@@ -920,12 +922,12 @@ O `SidebarActionTrigger` permite adicionar ações principais de módulo no side
|
|
|
920
922
|
|
|
921
923
|
### Conceito
|
|
922
924
|
|
|
923
|
-
| Característica
|
|
924
|
-
|
|
925
|
-
| **Ação de módulo**
|
|
926
|
-
| **Não global**
|
|
927
|
-
| **Não contextual**
|
|
928
|
-
| **Destaque visual** | Exibida com aparência diferenciada da navegação
|
|
925
|
+
| Característica | Descrição |
|
|
926
|
+
| ------------------- | ----------------------------------------------------------- |
|
|
927
|
+
| **Ação de módulo** | Válida apenas dentro do contexto do módulo ao qual pertence |
|
|
928
|
+
| **Não global** | Não aplicável a todo o sistema |
|
|
929
|
+
| **Não contextual** | Não depende de seleção de item específico |
|
|
930
|
+
| **Destaque visual** | Exibida com aparência diferenciada da navegação |
|
|
929
931
|
|
|
930
932
|
### Uso Básico
|
|
931
933
|
|
|
@@ -935,27 +937,27 @@ import { Plus, FileText, Folder } from 'lucide-react';
|
|
|
935
937
|
|
|
936
938
|
const sidebarConfig: SidebarConfig = {
|
|
937
939
|
appName: 'Meu Módulo',
|
|
938
|
-
|
|
940
|
+
|
|
939
941
|
// Ações principais do módulo
|
|
940
942
|
moduleActions: {
|
|
941
943
|
triggerLabel: 'Criar',
|
|
942
944
|
triggerIcon: Plus,
|
|
943
945
|
actions: [
|
|
944
|
-
{
|
|
945
|
-
id: 'create-item',
|
|
946
|
-
label: 'Novo Item',
|
|
947
|
-
icon: FileText,
|
|
948
|
-
onClick: () => openCreateDialog()
|
|
946
|
+
{
|
|
947
|
+
id: 'create-item',
|
|
948
|
+
label: 'Novo Item',
|
|
949
|
+
icon: FileText,
|
|
950
|
+
onClick: () => openCreateDialog()
|
|
949
951
|
},
|
|
950
|
-
{
|
|
951
|
-
id: 'create-folder',
|
|
952
|
-
label: 'Nova Pasta',
|
|
953
|
-
icon: Folder,
|
|
954
|
-
onClick: () => openFolderDialog()
|
|
952
|
+
{
|
|
953
|
+
id: 'create-folder',
|
|
954
|
+
label: 'Nova Pasta',
|
|
955
|
+
icon: Folder,
|
|
956
|
+
onClick: () => openFolderDialog()
|
|
955
957
|
},
|
|
956
958
|
]
|
|
957
959
|
},
|
|
958
|
-
|
|
960
|
+
|
|
959
961
|
// Navegação
|
|
960
962
|
navigation: [
|
|
961
963
|
{ label: 'Visão Geral', path: '/', icon: Home },
|
|
@@ -968,20 +970,20 @@ const sidebarConfig: SidebarConfig = {
|
|
|
968
970
|
|
|
969
971
|
### Comportamento
|
|
970
972
|
|
|
971
|
-
| Cenário
|
|
972
|
-
|
|
973
|
-
| **Uma ação**
|
|
974
|
-
| **Múltiplas ações**
|
|
975
|
-
| **Modal aberto**
|
|
976
|
-
| **Sidebar colapsada** | Exibe apenas ícone com tooltip
|
|
973
|
+
| Cenário | Comportamento |
|
|
974
|
+
| --------------------- | --------------------------------- |
|
|
975
|
+
| **Uma ação** | Clique executa a ação diretamente |
|
|
976
|
+
| **Múltiplas ações** | Clique exibe dropdown com opções |
|
|
977
|
+
| **Modal aberto** | Gatilho fica desabilitado |
|
|
978
|
+
| **Sidebar colapsada** | Exibe apenas ícone com tooltip |
|
|
977
979
|
|
|
978
980
|
### Props do SidebarActionTrigger
|
|
979
981
|
|
|
980
|
-
| Prop
|
|
981
|
-
|
|
982
|
-
| `config`
|
|
983
|
-
| `isCollapsed` | `boolean`
|
|
984
|
-
| `isDisabled`
|
|
982
|
+
| Prop | Tipo | Obrigatório | Descrição |
|
|
983
|
+
| ------------- | ---------------------- | ----------- | --------------------------- |
|
|
984
|
+
| `config` | `SidebarActionsConfig` | ✅ | Configuração das ações |
|
|
985
|
+
| `isCollapsed` | `boolean` | ❌ | Se a sidebar está colapsada |
|
|
986
|
+
| `isDisabled` | `boolean` | ❌ | Desabilita o gatilho |
|
|
985
987
|
|
|
986
988
|
### Interface SidebarModuleAction
|
|
987
989
|
|
|
@@ -1023,7 +1025,7 @@ import { CoreProviders, ModalStateProvider, useModalState } from 'forlogic-core'
|
|
|
1023
1025
|
// Em componentes com modal
|
|
1024
1026
|
function MeuDialog({ open, onOpenChange }) {
|
|
1025
1027
|
const { registerModal, unregisterModal } = useModalState();
|
|
1026
|
-
|
|
1028
|
+
|
|
1027
1029
|
useEffect(() => {
|
|
1028
1030
|
if (open) {
|
|
1029
1031
|
registerModal('meu-dialog');
|
|
@@ -1031,7 +1033,7 @@ function MeuDialog({ open, onOpenChange }) {
|
|
|
1031
1033
|
unregisterModal('meu-dialog');
|
|
1032
1034
|
}
|
|
1033
1035
|
}, [open]);
|
|
1034
|
-
|
|
1036
|
+
|
|
1035
1037
|
return <Dialog open={open} onOpenChange={onOpenChange}>...</Dialog>;
|
|
1036
1038
|
}
|
|
1037
1039
|
```
|
|
@@ -1039,11 +1041,13 @@ function MeuDialog({ open, onOpenChange }) {
|
|
|
1039
1041
|
### Diretriz para Uso via Prompt
|
|
1040
1042
|
|
|
1041
1043
|
#### ✅ Prompts corretos:
|
|
1044
|
+
|
|
1042
1045
|
- "Adicione uma ação principal 'Criar Processo' no sidebar do módulo"
|
|
1043
1046
|
- "Configure o módulo para ter duas ações principais: 'Novo Item' e 'Nova Pasta'"
|
|
1044
1047
|
- "Adicione o botão de criar no topo do sidebar como ação de módulo"
|
|
1045
1048
|
|
|
1046
1049
|
#### ❌ Prompts ambíguos (evitar):
|
|
1050
|
+
|
|
1047
1051
|
- "Coloque um botão de criar no menu" (ambíguo - qual menu?)
|
|
1048
1052
|
- "Adicione navegação para criar" (ação ≠ navegação)
|
|
1049
1053
|
- "Crie um link para nova entidade" (link = navegação, não ação)
|
|
@@ -1071,11 +1075,11 @@ npm run pull-docs
|
|
|
1071
1075
|
|
|
1072
1076
|
### O que é sincronizado
|
|
1073
1077
|
|
|
1074
|
-
| Arquivo
|
|
1075
|
-
|
|
1076
|
-
| `docs/FORLOGIC_CORE_README.md` | README completo da biblioteca
|
|
1077
|
-
| `docs/DESIGN_SYSTEM.md`
|
|
1078
|
-
| `docs/KNOWLEDGE.md`
|
|
1078
|
+
| Arquivo | Descrição |
|
|
1079
|
+
| ------------------------------ | ------------------------------ |
|
|
1080
|
+
| `docs/FORLOGIC_CORE_README.md` | README completo da biblioteca |
|
|
1081
|
+
| `docs/DESIGN_SYSTEM.md` | Documentação do Design System |
|
|
1082
|
+
| `docs/KNOWLEDGE.md` | Knowledge base para IA/Lovable |
|
|
1079
1083
|
|
|
1080
1084
|
### Benefícios
|
|
1081
1085
|
|
|
@@ -1149,7 +1153,7 @@ O comando usa credenciais públicas do Supabase do forlogic-core e não requer c
|
|
|
1149
1153
|
- [Loading](./docs/DESIGN_SYSTEM.md#skeleton) - Componentes para estados de carregamento: Skeleton (placeholders), Spinner (indicador de loading), e LoadingState (gerenciamento declarativo).
|
|
1150
1154
|
- [Media](./docs/DESIGN_SYSTEM.md#media) - Módulo completo para upload, edição e renderização de imagens e vídeos. Inclui editores interativos, renderizadores otimizados e hook genérico de upload.
|
|
1151
1155
|
- [Menubar](./docs/DESIGN_SYSTEM.md#menubar) - Barra de menu horizontal com submenus, checkboxes e radio items. Ideal para barras de navegação de aplicações desktop-like, seguindo padrões de aplicações nativas.
|
|
1152
|
-
- [ModulesDialog](./docs/DESIGN_SYSTEM.md#modulesdialog) - Dialog para navegação entre módulos do sistema
|
|
1156
|
+
- [ModulesDialog](./docs/DESIGN_SYSTEM.md#modulesdialog) - Dialog para navegação entre módulos do sistema.
|
|
1153
1157
|
- [Navigation Menu](./docs/DESIGN_SYSTEM.md#navigationmenu) - Uma coleção de links para navegação em websites.
|
|
1154
1158
|
- [Onboarding Dialog](./docs/DESIGN_SYSTEM.md#onboardingdialog) - Componente para fluxos de onboarding em múltiplos passos. Suporta imagens estáticas, GIFs, navegação entre steps e indicador de progresso com dropdown.
|
|
1155
1159
|
- [Pagination](./docs/DESIGN_SYSTEM.md#pagination) - Componente de paginação padronizado com layout de 3 colunas, seletor de itens por página e navegação completa.
|
|
@@ -1197,7 +1201,7 @@ O comando usa credenciais públicas do Supabase do forlogic-core e não requer c
|
|
|
1197
1201
|
- [ErrorBoundary](./docs/DESIGN_SYSTEM.md#errorboundary) - Componente de classe React que captura erros de renderização em componentes filhos, evitando que a aplicação inteira quebre.
|
|
1198
1202
|
- [Hooks](./docs/DESIGN_SYSTEM.md#hooks) - Hooks utilitários da biblioteca forlogic-core para otimização, dados, formatação e UI. Todos os hooks seguem padrões React e são compatíveis com React Query quando aplicável.
|
|
1199
1203
|
- [Internacionalização (i18n)](./docs/DESIGN_SYSTEM.md#i18n) - Sistema de internacionalização usando react-i18next com traduções carregadas de um arquivo JSON estático local (lib/i18n/translations.json). Suporta pt-BR, en-US e es-ES com gerenciamento de preferências do usuário.
|
|
1200
|
-
- [
|
|
1204
|
+
- [Acesso Módulo (ModuleAccess)](./docs/DESIGN_SYSTEM.md#moduleaccess) - Sistema de autorização para verificar e bloquear acesso a módulos da plataforma Qualiex. Proteção automática de rotas via CoreProviders e hook para verificações programáticas.
|
|
1201
1205
|
- [Segurança (Vite Config)](./docs/DESIGN_SYSTEM.md#security) - Plugin de segurança para Vite que aplica headers OWASP, CSP configurável, CORS seguro e proteções contra ataques comuns. Configuração centralizada para todos os projetos Forlogic.
|
|
1202
1206
|
- [Services](./docs/DESIGN_SYSTEM.md#services) - Serviços utilitários da biblioteca forlogic-core para operações CRUD, envio de emails, tratamento de erros e gerenciamento de traduções. Todos os serviços são singletons prontos para uso.
|
|
1203
1207
|
- [Utilities](./docs/DESIGN_SYSTEM.md#utilities) - Funções utilitárias essenciais exportadas pela biblioteca para manipulação de classes CSS, formatação de datas e valores monetários.
|
|
@@ -1206,4 +1210,4 @@ O comando usa credenciais públicas do Supabase do forlogic-core e não requer c
|
|
|
1206
1210
|
|
|
1207
1211
|
> 📘 **Documentação Completa**: Para ver detalhes de props, exemplos de uso e acessibilidade de cada componente, consulte o [Design System Completo](./docs/DESIGN_SYSTEM.md).
|
|
1208
1212
|
|
|
1209
|
-
<!-- AUTO_GENERATED_END -->
|
|
1213
|
+
<!-- AUTO_GENERATED_END -->
|