forlogic-core 1.16.3 → 1.16.4

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 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 | 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 |
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 | 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 |
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 | Tipo | Padrão | Descrição |
384
- |-------|------|--------|-----------|
385
- | `supabaseUrls` | `string[]` | `[]` | URLs do Supabase permitidas |
386
- | `trustedOrigins` | `string[]` | `[]` | Origens confiáveis adicionais para CORS |
387
- | `additionalScriptSrc` | `string[]` | `[]` | Fontes de script adicionais para CSP |
388
- | `additionalStyleSrc` | `string[]` | `[]` | Fontes de estilo adicionais para CSP |
389
- | `additionalConnectSrc` | `string[]` | `[]` | APIs/WebSockets adicionais para CSP |
390
- | `additionalFontSrc` | `string[]` | `[]` | Fontes de font adicionais para CSP |
391
- | `cspReportUri` | `string` | - | URI para relatório de violações CSP |
392
- | `enableTrustedTypes` | `boolean` | `true` | Habilitar Trusted Types em produção |
393
- | `upgradeInsecureRequests` | `boolean` | `true` | Upgrade HTTP→HTTPS em produção |
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 | Descrição | Valores | Padrão |
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` | Modo debug de internacionalização (mostra chaves ao invés de traduções) | `"true"` / `"false"` | `"false"` |
653
- | `VITE_IS_QUALIEX` | Define se usa logos Qualiex ou Forlogic | `"true"` / `"false"` | `"false"` |
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 | Descrição |
681
- |-----------|-----------|
682
- | `VITE_SUPABASE_URL` | URL do projeto Supabase (mesma instância que contém `common.translations`) |
683
- | `VITE_SUPABASE_PUBLISHABLE_KEY` | Chave pública (anon key) do Supabase |
684
- | `i18next` | Peer dependency instalada |
685
- | `react-i18next` | Peer dependency instalada |
686
- | Tabela `common.translations` | Deve existir no Supabase com RLS pública para SELECT |
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 | Solução |
776
- |-------|---------|
777
- | `main.tsx` não aguarda i18n | Adicionar verificação `i18n.isInitialized` conforme Passo 3 |
778
- | Peer dependencies faltando | Instalar `i18next` e `react-i18next` |
779
- | Variáveis de ambiente incorretas | Verificar `VITE_SUPABASE_URL` e `VITE_SUPABASE_PUBLISHABLE_KEY` |
780
- | Supabase diferente | Verificar se aponta para a mesma instância com `common.translations` |
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 | Descrição |
827
- |----------|-----------|
828
- | `ErrorBoundary` | Captura e trata erros de renderização React |
829
- | `I18nextProvider` | Sistema de internacionalização (i18n) |
830
- | `QueryClientProvider` | Cache e gerenciamento de queries (React Query) |
831
- | `AuthProvider` | Autenticação e gerenciamento de sessão |
832
- | `LocaleProvider` | Gerenciamento de locale (idioma, timezone, formato de data) |
833
- | `TranslationLoader` | Carregamento dinâmico de traduções do banco de dados |
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 | Tipo | Obrigatório | Descrição |
887
- |------|------|-------------|-----------|
888
- | `children` | `ReactNode` | ✅ | Componentes filhos a serem envolvidos |
889
- | `queryClient` | `QueryClient` | ❌ | Instância customizada do QueryClient. Se não fornecido, um default é criado |
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 | Descrição |
924
- |----------------|-----------|
925
- | **Ação de módulo** | Válida apenas dentro do contexto do módulo ao qual pertence |
926
- | **Não global** | Não aplicável a todo o sistema |
927
- | **Não contextual** | Não depende de seleção de item específico |
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 | Comportamento |
972
- |---------|---------------|
973
- | **Uma ação** | Clique executa a ação diretamente |
974
- | **Múltiplas ações** | Clique exibe dropdown com opções |
975
- | **Modal aberto** | Gatilho fica desabilitado |
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 | Tipo | Obrigatório | Descrição |
981
- |------|------|-------------|-----------|
982
- | `config` | `SidebarActionsConfig` | ✅ | Configuração das ações |
983
- | `isCollapsed` | `boolean` | ❌ | Se a sidebar está colapsada |
984
- | `isDisabled` | `boolean` | ❌ | Desabilita o gatilho |
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 | Descrição |
1075
- |---------|-----------|
1076
- | `docs/FORLOGIC_CORE_README.md` | README completo da biblioteca |
1077
- | `docs/DESIGN_SYSTEM.md` | Documentação do Design System |
1078
- | `docs/KNOWLEDGE.md` | Knowledge base para IA/Lovable |
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, organizado em abas (Qualiex, Clássicos) com separação entre módulos contratados e disponíveis, OnboardingDialog para descoberta e cards informativos no rodapé.
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
- - [Controle de Acesso a Módulos](./docs/DESIGN_SYSTEM.md#moduleaccess) - Sistema para verificar e bloquear automaticamente o acesso do usuário a módulos da plataforma Qualiex. Inclui proteção automática de rotas via CoreProviders e hook para verificações programáticas.
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 -->