forlogic-core 1.16.0 → 1.16.1

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.
@@ -0,0 +1,18 @@
1
+ # Memory: features/import/attachment-strategy
2
+ Updated: now
3
+
4
+ O sistema de anexos usa upload direto ao Azure Blob Storage (sem staging). O .zip contém pastas nomeadas pelo código do registro (ex: `OC-001/foto.pdf`). Cada arquivo recebe um `id_file_revision` de 8 caracteres alfanuméricos (`crypto.randomUUID().slice(0,8)`) gerado no front-end. O arquivo é enviado ao container `un{id_company_padded_5}` com nome `{id_file_revision}.{ext}`. Esse mesmo ID é incluído no CSV como coluna `id_file_revision` para que a API grave no banco com a mesma referência. Metadados (nome, extensão, tamanho, usuário, revision) são injetados automaticamente nas linhas do CSV via campos `data_type: 'file'` e `'file_metadata'`. A Edge Function `azure-blob-upload` aceita campo `container` opcional no FormData.
5
+
6
+ ## Templates de anexo (attachment-only)
7
+
8
+ Quando todos os campos ativos do template são `data_type: 'file'` ou `'file_metadata'`, o sistema detecta automaticamente como "template de anexo". Nesse modo:
9
+ - O .zip **não precisa conter xlsx** — apenas pastas com arquivos
10
+ - O código do registro é extraído do **diretório pai imediato** do arquivo (último nível): `dir1/dir2/file.txt → "dir2"`
11
+ - As linhas do CSV são geradas automaticamente a partir dos metadados dos arquivos
12
+ - O botão "Baixar template" é substituído por "Gerenciar template"
13
+ - O dropzone aceita apenas `.zip`
14
+ - Não há fetch de lookups nem validação de colunas
15
+ - Função `executeAttachmentOnlyImport` no `importHelpers.ts` orquestra o fluxo completo
16
+ - Função `buildRowsFromAttachments` no `attachmentUploadService.ts` gera as linhas
17
+ - Função `extractZipAttachmentsOnly` no `zipExtractorService.ts` extrai sem exigir xlsx
18
+ - Detecção via `isAttachmentOnlyTemplate` no `attachmentUploadService.ts`
package/README.md CHANGED
@@ -1094,7 +1094,7 @@ O comando usa credenciais públicas do Supabase do forlogic-core e não requer c
1094
1094
 
1095
1095
  ### 📚 Estatísticas da Documentação
1096
1096
 
1097
- **61 Componentes UI** | **6 Tokens** | **9 Ferramentas CRUD** | **9 Core/Utilitários**
1097
+ **61 Componentes UI** | **6 Tokens** | **9 Ferramentas CRUD** | **10 Core/Utilitários**
1098
1098
 
1099
1099
  ---
1100
1100
 
@@ -1197,6 +1197,7 @@ O comando usa credenciais públicas do Supabase do forlogic-core e não requer c
1197
1197
  - [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
1198
  - [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
1199
  - [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.
1200
1201
  - [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.
1201
1202
  - [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.
1202
1203
  - [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.
package/dist/README.md CHANGED
@@ -1090,116 +1090,119 @@ O comando usa credenciais públicas do Supabase do forlogic-core e não requer c
1090
1090
 
1091
1091
  ---
1092
1092
 
1093
- <!-- AUTO_GENERATED_START -->
1094
-
1095
- ### 📚 Estatísticas da Documentação
1096
-
1097
- **58 Componentes UI** | **6 Tokens** | **9 Ferramentas CRUD** | **8 Core/Utilitários**
1098
-
1099
- ---
1100
-
1101
- ### 🎨 Fundamentos (Tokens)
1102
-
1103
- - [Ícones](./docs/DESIGN_SYSTEM.md#iconsfoundation) - Biblioteca completa de ícones usando Lucide React - uma biblioteca de ícones
1104
- open-source com mais de 1400 ícones em SVG.
1105
- - [Sistema de Cores](./docs/DESIGN_SYSTEM.md#colorsfoundation) - Sistema de cores profissional completo com escala neutra (0-1000), escala de marca (50-900),
1106
- e cores funcionais (sucesso, aviso, perigo, sharp). Todas as cores garantem conformidade de contraste WCAG AA.
1107
- - [Sistema de Espaçamento](./docs/DESIGN_SYSTEM.md#spacing) - Escala de espaçamento consistente baseada em uma unidade base de 4px (0.25rem),
1108
- garantindo ritmo visual e alinhamento em todos os componentes.
1109
- - [Sistema de Raio de Borda](./docs/DESIGN_SYSTEM.md#radius) - Arredondamento de cantos consistente que cria harmonia visual e
1110
- define a personalidade da interface.
1111
- - [Sistema de Sombras e Elevação](./docs/DESIGN_SYSTEM.md#shadows) - Sombras criam profundidade e hierarquia, ajudando usuários a entender as relações
1112
- espaciais entre elementos e seus estados interativos.
1113
- - [Sistema Tipográfico](./docs/DESIGN_SYSTEM.md#typographyfoundation) - Sistema tipográfico profissional com Display (2 níveis), Headings (6 níveis), Subtitle (2 níveis),
1114
- Body (2 níveis), Label (2 níveis) e Monospace (Code). Todos os níveis incluem escalamento responsivo e conformidade de acessibilidade.
1115
-
1116
- ### 🧩 Componentes UI
1117
-
1118
- - [Accordion & Collapsible](./docs/DESIGN_SYSTEM.md#accordion) - Componentes de expansão/colapso para revelar conteúdo. Accordion para múltiplos itens, Collapsible para item único.
1119
- - [Action Button](./docs/DESIGN_SYSTEM.md#actionbutton) - Botão compacto otimizado para ações em linhas de tabela e menus dropdown. OBRIGATÓRIO para todas as ações em tabelas CRUD.
1120
- - [Alert](./docs/DESIGN_SYSTEM.md#alert) - Exibe uma mensagem de destaque para chamar a atenção do usuário. O componente inclui ícone automático baseado na variante.
1121
- - [AppHeader](./docs/DESIGN_SYSTEM.md#appheader) - Header principal da aplicação com título dinâmico, busca global integrada ao CRUD, ações customizáveis e informações do usuário. Altura fixa de 56px (h-14).
1122
- - [AppSidebar](./docs/DESIGN_SYSTEM.md#appsidebar) - Sidebar de navegação principal da aplicação com suporte a menu colapsável, permissões, redimensionamento e navegação hierárquica.
1123
- - [Assinatura Digital (Sign)](./docs/DESIGN_SYSTEM.md#sign) - Componente único multi-provider de assinatura digital com fluxo em 3 fases: Upload → Assinatura → Download. Suporta Clicksign (widget JavaScript embedded v2.1.0, API v3) e D4Sign (iframe embedded, API v1). O provedor é resolvido automaticamente pela configuração da unidade na tabela sign_configs.
1124
- - [Avatar](./docs/DESIGN_SYSTEM.md#avatar) - Um elemento de imagem com fallback para representar o usuário.
1125
- - [Badge](./docs/DESIGN_SYSTEM.md#badge) - Exibe um badge ou um componente que se parece com um badge.
1126
- - [BodyContent](./docs/DESIGN_SYSTEM.md#bodycontent) - Container principal de página com breadcrumb, background neutro e suporte a múltiplos containers de conteúdo.
1127
- - [Breadcrumb](./docs/DESIGN_SYSTEM.md#breadcrumb) - Exibe o caminho até o recurso atual usando uma hierarquia de links.
1128
- - [Button](./docs/DESIGN_SYSTEM.md#button) - Componente de botão com variantes semânticas, tamanhos e estados. Use para ações primárias, secundárias e destrutivas.
1129
- - [Button Group](./docs/DESIGN_SYSTEM.md#buttongroup) - Agrupa botões relacionados com espaçamento e bordas apropriados.
1130
- - [Calendar & Date Picker](./docs/DESIGN_SYSTEM.md#calendar) - Componentes para seleção de datas. O Calendar exibe um calendário interativo, enquanto o Date Picker combina um campo de input com o calendário em um popover.
1131
- - [Card](./docs/DESIGN_SYSTEM.md#card) - Exibe um card com cabeçalho, conteúdo e rodapé.
1132
- - [Chart](./docs/DESIGN_SYSTEM.md#chart) - Sistema de gráficos baseado em Recharts com suporte a temas e tooltips customizados. Inclui barras, linhas, áreas, pizza, radar e mais.
1133
- - [Checkbox](./docs/DESIGN_SYSTEM.md#checkbox) - Um controle que permite ao usuário alternar entre marcado e desmarcado.
1134
- - [Color Picker](./docs/DESIGN_SYSTEM.md#colorpicker) - Seletor de cores com paleta predefinida e seletor customizado.
1135
- - [Combobox](./docs/DESIGN_SYSTEM.md#combobox) - Componente versátil para seleção única ou múltipla com busca inteligente. Combina Popover e Command para autocomplete. O componente Command é usado internamente para fornecer funcionalidades de busca e navegação por teclado.
1136
- - [Context Menu](./docs/DESIGN_SYSTEM.md#contextmenu) - Exibe um menu ao usuário como um conjunto de ações ou funções acionado por um clique com o botão direito do mouse.
1137
- - [DataList](./docs/DESIGN_SYSTEM.md#datalist) - Sistema de lista de dados com composição de componentes. Ideal para exibir informações estruturadas em formato de cards.
1138
- - [Dialog](./docs/DESIGN_SYSTEM.md#dialog) - Uma janela sobreposta à janela principal ou a outra janela de diálogo, tornando o conteúdo abaixo inerte. Inclui variações para seleção, tabelas e formulários.
1139
- - [Dropdown Menu](./docs/DESIGN_SYSTEM.md#dropdownmenu) - Exibe um menu ao usuário como um conjunto de ações ou funções acionado por um botão ou elemento interativo.
1140
- - [Empty State](./docs/DESIGN_SYSTEM.md#emptystate) - Componente para exibir estados vazios com ícone, mensagem e ação opcional.
1141
- - [Form](./docs/DESIGN_SYSTEM.md#form) - Construindo formulários com React Hook Form e Zod.
1142
- - [Grid & Stack](./docs/DESIGN_SYSTEM.md#grid) - Sistema de layout com Grid responsivo e Stack flexível para organização de conteúdo.
1143
- - [Hover Card](./docs/DESIGN_SYSTEM.md#hovercard) - Para usuários com visão visualizarem conteúdo disponível por trás de um link. Exibe informações adicionais ao passar o mouse.
1144
- - [Icon Picker](./docs/DESIGN_SYSTEM.md#iconpicker) - Seletor de ícones da biblioteca Lucide React com busca integrada.
1145
- - [Input](./docs/DESIGN_SYSTEM.md#input) - Campo de entrada de texto com suporte a todos os tipos HTML. Inclui Label para rótulos acessíveis e InputGroup para agrupar inputs com addons de prefixo, sufixo, ícones e botões.
1146
- - [Label](./docs/DESIGN_SYSTEM.md#label) - Renderiza uma label acessível associada a controles de formulário.
1147
- - [Leadership](./docs/DESIGN_SYSTEM.md#leadership) - Módulo hierárquico de liderança para gerenciar relações de liderança entre usuários do Qualiex. Inclui componentes visuais, hooks de API e utilitários para construção de árvores hierárquicas.
1148
- - [Loading](./docs/DESIGN_SYSTEM.md#skeleton) - Componentes para estados de carregamento: Skeleton (placeholders), Spinner (indicador de loading), e LoadingState (gerenciamento declarativo).
1149
- - [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.
1150
- - [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.
1151
- - [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é.
1152
- - [Navigation Menu](./docs/DESIGN_SYSTEM.md#navigationmenu) - Uma coleção de links para navegação em websites.
1153
- - [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.
1154
- - [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.
1155
- - [Pagination](./docs/DESIGN_SYSTEM.md#pagination) - Barra de paginação completa com seletor de itens por página e controles de navegação.
1156
- - [Places](./docs/DESIGN_SYSTEM.md#places) - Módulo para gerenciar estruturas hierárquicas de locais integrado com a API Qualiex. Inclui visualização em árvore, gestão de acessos e componentes reutilizáveis.
1157
- - [Popover](./docs/DESIGN_SYSTEM.md#popover) - Exibe conteúdo rico em um portal, acionado por um botão.
1158
- - [Progress](./docs/DESIGN_SYSTEM.md#progress) - Exibe um indicador mostrando o progresso de conclusão de uma tarefa, tipicamente exibido como uma barra de progresso.
1159
- - [QualiexUserField](./docs/DESIGN_SYSTEM.md#qualiexuserfield) - Campo de seleção de usuários integrado com a API Qualiex. Suporta seleção única ou múltipla, display customizado, filtros e funciona perfeitamente dentro de Dialogs.
1160
- - [Radio Group](./docs/DESIGN_SYSTEM.md#radiogroup) - Um conjunto de botões marcáveis—conhecidos como botões de rádio—onde apenas um pode ser marcado por vez.
1161
- - [RequiredFieldsCounter](./docs/DESIGN_SYSTEM.md#requiredfieldscounter) - Indica o progresso de preenchimento de campos obrigatórios em formulários com feedback visual e tooltips informativos.
1162
- - [Resizable](./docs/DESIGN_SYSTEM.md#resizable) - Painéis redimensionáveis para criar layouts flexíveis e adaptáveis. Baseado em react-resizable-panels.
1163
- - [Rich Text Editor](./docs/DESIGN_SYSTEM.md#richtexteditor) - Editor de texto rico construído com Tiptap, suportando formatação visual, edição de código HTML e preview. Ideal para formulários que precisam de conteúdo formatado.
1164
- - [Select](./docs/DESIGN_SYSTEM.md#select) - Exibe uma lista de opções para o usuário escolher—acionada por um botão.
1165
- - [Separator](./docs/DESIGN_SYSTEM.md#separator) - Separa visual ou semanticamente o conteúdo.
1166
- - [Slider](./docs/DESIGN_SYSTEM.md#slider) - Um input onde o usuário seleciona um valor dentro de um intervalo determinado.
1167
- - [Split Button](./docs/DESIGN_SYSTEM.md#splitbutton) - Combina uma ação principal com ações secundárias em um menu dropdown. Ideal para destacar a ação prioritária enquanto mantém alternativas acessíveis.
1168
- - [Step Selector](./docs/DESIGN_SYSTEM.md#stepselector) - Componente de navegação para Wizards multi-etapas. Combina um DropdownMenu para seleção de etapas com uma barra de Progress para indicação visual do progresso.
1169
- - [Switch](./docs/DESIGN_SYSTEM.md#switch) - Um controle que permite ao usuário alternar entre marcado e desmarcado.
1170
- - [Table](./docs/DESIGN_SYSTEM.md#table) - Uma tabela semântica para exibir dados tabulares. Inclui TableResizeHandle para redimensionamento de colunas e TruncatedCell para texto truncado com tooltip automático.
1171
- - [Tabs & TabPageLayout](./docs/DESIGN_SYSTEM.md#tabs) - Componentes de navegação em abas. Tabs para conteúdo simples e TabPageLayout para páginas completas com header fixo e scroll.
1172
- - [Textarea](./docs/DESIGN_SYSTEM.md#textarea) - Exibe um textarea de formulário ou um componente que se parece com um textarea.
1173
- - [Toast](./docs/DESIGN_SYSTEM.md#toast) - Componente de notificação toast usando Sonner. Feedback temporário e não bloqueante que informa rapidamente o usuário sem competir visualmente com outros Toasts.
1174
- - [Toggle](./docs/DESIGN_SYSTEM.md#toggle) - Botões de dois estados que podem estar ligados ou desligados, individualmente ou em grupo.
1175
- - [Tooltip](./docs/DESIGN_SYSTEM.md#tooltip) - Um popup que exibe informações relacionadas a um elemento quando o elemento recebe foco do teclado ou o mouse passa sobre ele.
1176
-
1177
- ### 🚀 Sistema CRUD
1178
-
1179
- - [BaseForm](./docs/DESIGN_SYSTEM.md#baseform) - Formulário dinâmico baseado em configuração de seções e campos, suportando múltiplos tipos de campo, validação e layouts flexíveis.
1180
- - [createCrudPage](./docs/DESIGN_SYSTEM.md#createcrudpage) - Factory de alto nível que gera uma página CRUD completa com ~15 linhas de configuração declarativa.
1181
- - [CRUD de Fornecedores](./docs/DESIGN_SYSTEM.md#crudusers) - Padrão completo de CRUD para gestão de fornecedores com 16 campos, incluindo ordenação, filtros avançados, exportação/importação e ações em massa.
1182
- - [CRUD Primitives](./docs/DESIGN_SYSTEM.md#crudprimitives) - Componentes de baixo nível para interfaces CRUD totalmente customizadas com controle total sobre layout e comportamento.
1183
- - [CRUD System](./docs/DESIGN_SYSTEM.md#crudsystem) - Sistema completo para criação rápida de interfaces CRUD com validação, busca, paginação e muito mais.
1184
- - [CrudActionBar](./docs/DESIGN_SYSTEM.md#crudactionbar) - Barra de ações unificada usada por todos os componentes CRUD (CrudTable, CrudGrid, createCrudPage) para garantir UX consistente.
1185
- - [CrudGrid](./docs/DESIGN_SYSTEM.md#crudgrid) - Componente para exibir dados em formato de grade (cards) com todas as funcionalidades CRUD.
1186
- Alternativa visual ao CrudTable para listagens com layout mais visual.
1187
- - [CrudTable](./docs/DESIGN_SYSTEM.md#crudtable) - Componente de tabela CRUD completo com ordenação, seleção, resize de colunas, ações em massa e paginação integrada com useCrud.
1188
- - [Sistema CRUD](./docs/DESIGN_SYSTEM.md#crudoverview) - Componentes padronizados para operações Create, Read, Update e Delete com arquitetura em 3 níveis de abstração.
1189
-
1190
- ### 🔧 Core & Utilitários
1191
-
1192
- - [Autenticação (Auth)](./docs/DESIGN_SYSTEM.md#auth) - Sistema completo de autenticação OAuth integrado com Qualiex. Inclui gerenciamento de tokens, rotas protegidas, suporte multi-tenant e troca de unidades.
1193
- - [Contexts](./docs/DESIGN_SYSTEM.md#contexts) - Contexts globais da biblioteca forlogic-core para gerenciamento de estado da aplicação. Incluem LocaleContext para i18n, NavigationContext para navegação, PageMetadataContext para metadados de página e ModalStateContext para rastreamento de modais.
1194
- - [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.
1195
- - [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.
1196
- - [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.
1197
- - [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.
1198
- - [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.
1199
- - [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.
1200
-
1201
- ---
1202
-
1203
- > 📘 **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).
1204
-
1093
+ <!-- AUTO_GENERATED_START -->
1094
+
1095
+ ### 📚 Estatísticas da Documentação
1096
+
1097
+ **61 Componentes UI** | **6 Tokens** | **9 Ferramentas CRUD** | **9 Core/Utilitários**
1098
+
1099
+ ---
1100
+
1101
+ ### 🎨 Fundamentos (Tokens)
1102
+
1103
+ - [Ícones](./docs/DESIGN_SYSTEM.md#iconsfoundation) - Biblioteca completa de ícones usando Lucide React - uma biblioteca de ícones
1104
+ open-source com mais de 1400 ícones em SVG.
1105
+ - [Sistema de Cores](./docs/DESIGN_SYSTEM.md#colorsfoundation) - Sistema de cores profissional completo com escala neutra (0-1000), escala de marca (50-900),
1106
+ e cores funcionais (sucesso, aviso, perigo, sharp). Todas as cores garantem conformidade de contraste WCAG AA.
1107
+ - [Sistema de Espaçamento](./docs/DESIGN_SYSTEM.md#spacing) - Escala de espaçamento consistente baseada em uma unidade base de 4px (0.25rem),
1108
+ garantindo ritmo visual e alinhamento em todos os componentes.
1109
+ - [Sistema de Raio de Borda](./docs/DESIGN_SYSTEM.md#radius) - Arredondamento de cantos consistente que cria harmonia visual e
1110
+ define a personalidade da interface.
1111
+ - [Sistema de Sombras e Elevação](./docs/DESIGN_SYSTEM.md#shadows) - Sombras criam profundidade e hierarquia, ajudando usuários a entender as relações
1112
+ espaciais entre elementos e seus estados interativos.
1113
+ - [Sistema Tipográfico](./docs/DESIGN_SYSTEM.md#typographyfoundation) - Sistema tipográfico profissional com Display (2 níveis), Headings (6 níveis), Subtitle (2 níveis),
1114
+ Body (2 níveis), Label (2 níveis) e Monospace (Code). Todos os níveis incluem escalamento responsivo e conformidade de acessibilidade.
1115
+
1116
+ ### 🧩 Componentes UI
1117
+
1118
+ - [Accordion & Collapsible](./docs/DESIGN_SYSTEM.md#accordion) - Componentes de expansão/colapso para revelar conteúdo. Accordion para múltiplos itens, Collapsible para item único.
1119
+ - [Action Button](./docs/DESIGN_SYSTEM.md#actionbutton) - Botão compacto otimizado para ações em linhas de tabela e menus dropdown. OBRIGATÓRIO para todas as ações em tabelas CRUD.
1120
+ - [Alert](./docs/DESIGN_SYSTEM.md#alert) - Exibe uma mensagem de destaque para chamar a atenção do usuário. O componente inclui ícone automático baseado na variante.
1121
+ - [AppHeader](./docs/DESIGN_SYSTEM.md#appheader) - Header principal da aplicação com título dinâmico, busca global integrada ao CRUD, ações customizáveis e informações do usuário. Altura fixa de 56px (h-14).
1122
+ - [AppSidebar](./docs/DESIGN_SYSTEM.md#appsidebar) - Sidebar de navegação principal da aplicação com suporte a pin/unpin, permissões assíncronas, ações de módulo (SidebarActionTrigger), redimensionamento e navegação hierárquica.
1123
+ - [Assinatura Digital (Sign)](./docs/DESIGN_SYSTEM.md#sign) - Componente único multi-provider de assinatura digital com fluxo em 3 fases: Upload → Assinatura → Download. Suporta Clicksign (widget JavaScript embedded v2.1.0, API v3) e D4Sign (iframe embedded, API v1). O provedor é resolvido automaticamente pela configuração da unidade na tabela sign_configs.
1124
+ - [Avatar](./docs/DESIGN_SYSTEM.md#avatar) - Um elemento de imagem com fallback para representar o usuário.
1125
+ - [Badge](./docs/DESIGN_SYSTEM.md#badge) - Exibe um badge ou um componente que se parece com um badge.
1126
+ - [BodyContent](./docs/DESIGN_SYSTEM.md#bodycontent) - Container principal de página com breadcrumb, background neutro e suporte a múltiplos containers de conteúdo.
1127
+ - [Breadcrumb](./docs/DESIGN_SYSTEM.md#breadcrumb) - Exibe o caminho até o recurso atual usando uma hierarquia de links.
1128
+ - [Button](./docs/DESIGN_SYSTEM.md#button) - Componente de botão com variantes semânticas, tamanhos e estados. Use para ações primárias, secundárias e destrutivas.
1129
+ - [Button Group](./docs/DESIGN_SYSTEM.md#buttongroup) - Agrupa botões relacionados com espaçamento e bordas apropriados.
1130
+ - [Calendar & Date Picker](./docs/DESIGN_SYSTEM.md#calendar) - Componentes para seleção de datas. O Calendar exibe um calendário interativo, enquanto o Date Picker combina um campo de input com o calendário em um popover.
1131
+ - [Card](./docs/DESIGN_SYSTEM.md#card) - Exibe um card com cabeçalho, conteúdo e rodapé.
1132
+ - [Chart](./docs/DESIGN_SYSTEM.md#chart) - Sistema de gráficos baseado em Recharts com suporte a temas e tooltips customizados. Inclui barras, linhas, áreas, pizza, radar e mais.
1133
+ - [Checkbox](./docs/DESIGN_SYSTEM.md#checkbox) - Um controle que permite ao usuário alternar entre marcado e desmarcado.
1134
+ - [Color Picker](./docs/DESIGN_SYSTEM.md#colorpicker) - Seletor de cores com paleta predefinida e seletor customizado.
1135
+ - [Combobox](./docs/DESIGN_SYSTEM.md#combobox) - Componente versátil para seleção única ou múltipla com busca inteligente. Combina Popover e Command para autocomplete. O componente Command é usado internamente para fornecer funcionalidades de busca e navegação por teclado.
1136
+ - [ComboTree](./docs/DESIGN_SYSTEM.md#combotree) - Componente de seleção hierárquica (tree view) com busca recursiva, expansão por chevron e seleção por label.
1137
+ - [Context Menu](./docs/DESIGN_SYSTEM.md#contextmenu) - Exibe um menu ao usuário como um conjunto de ações ou funções acionado por um clique com o botão direito do mouse.
1138
+ - [DataList](./docs/DESIGN_SYSTEM.md#datalist) - Sistema de lista de dados com composição de componentes. Ideal para exibir informações estruturadas em formato de cards.
1139
+ - [Dialog](./docs/DESIGN_SYSTEM.md#dialog) - Uma janela sobreposta à janela principal ou a outra janela de diálogo, tornando o conteúdo abaixo inerte. Inclui variações para seleção, tabelas e formulários.
1140
+ - [Dropdown Menu](./docs/DESIGN_SYSTEM.md#dropdownmenu) - Exibe um menu ao usuário como um conjunto de ações ou funções — acionado por um botão ou elemento interativo.
1141
+ - [Empty State](./docs/DESIGN_SYSTEM.md#emptystate) - Componente para exibir estados vazios com ícone, mensagem e ação opcional.
1142
+ - [Form](./docs/DESIGN_SYSTEM.md#form) - Construindo formulários com React Hook Form e Zod.
1143
+ - [Grid & Stack](./docs/DESIGN_SYSTEM.md#grid) - Sistema de layout com Grid responsivo e Stack flexível para organização de conteúdo.
1144
+ - [Hover Card](./docs/DESIGN_SYSTEM.md#hovercard) - Para usuários com visão visualizarem conteúdo disponível por trás de um link. Exibe informações adicionais ao passar o mouse.
1145
+ - [Icon Picker](./docs/DESIGN_SYSTEM.md#iconpicker) - Seletor de ícones da biblioteca Lucide React com busca integrada.
1146
+ - [Input](./docs/DESIGN_SYSTEM.md#input) - Campo de entrada de texto com suporte a todos os tipos HTML. Inclui Label para rótulos acessíveis e InputGroup para agrupar inputs com addons de prefixo, sufixo, ícones e botões.
1147
+ - [Label](./docs/DESIGN_SYSTEM.md#label) - Renderiza uma label acessível associada a controles de formulário.
1148
+ - [Leadership](./docs/DESIGN_SYSTEM.md#leadership) - Módulo hierárquico de liderança para gerenciar relações de liderança entre usuários do Qualiex. Inclui componentes visuais, hooks de API e utilitários para construção de árvores hierárquicas.
1149
+ - [Loading](./docs/DESIGN_SYSTEM.md#skeleton) - Componentes para estados de carregamento: Skeleton (placeholders), Spinner (indicador de loading), e LoadingState (gerenciamento declarativo).
1150
+ - [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
+ - [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é.
1153
+ - [Navigation Menu](./docs/DESIGN_SYSTEM.md#navigationmenu) - Uma coleção de links para navegação em websites.
1154
+ - [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
+ - [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.
1156
+ - [Pagination](./docs/DESIGN_SYSTEM.md#pagination) - Barra de paginação completa com seletor de itens por página e controles de navegação.
1157
+ - [Places](./docs/DESIGN_SYSTEM.md#places) - Módulo para gerenciar estruturas hierárquicas de locais integrado com a API Qualiex. Inclui visualização em árvore, gestão de acessos e componentes reutilizáveis.
1158
+ - [Popover](./docs/DESIGN_SYSTEM.md#popover) - Exibe conteúdo rico em um portal, acionado por um botão.
1159
+ - [Progress](./docs/DESIGN_SYSTEM.md#progress) - Exibe um indicador mostrando o progresso de conclusão de uma tarefa, tipicamente exibido como uma barra de progresso.
1160
+ - [QualiexUserField](./docs/DESIGN_SYSTEM.md#qualiexuserfield) - Campo de seleção de usuários integrado com a API Qualiex. Suporta seleção única ou múltipla, display customizado, filtros e funciona perfeitamente dentro de Dialogs.
1161
+ - [Radio Group](./docs/DESIGN_SYSTEM.md#radiogroup) - Um conjunto de botões marcáveis—conhecidos como botões de rádio—onde apenas um pode ser marcado por vez.
1162
+ - [RequiredFieldsCounter](./docs/DESIGN_SYSTEM.md#requiredfieldscounter) - Indica o progresso de preenchimento de campos obrigatórios em formulários com feedback visual e tooltips informativos.
1163
+ - [Resizable](./docs/DESIGN_SYSTEM.md#resizable) - Painéis redimensionáveis para criar layouts flexíveis e adaptáveis. Baseado em react-resizable-panels.
1164
+ - [Rich Text Editor](./docs/DESIGN_SYSTEM.md#richtexteditor) - Editor de texto rico construído com Tiptap, suportando formatação visual, edição de código HTML e preview. Ideal para formulários que precisam de conteúdo formatado.
1165
+ - [ScrollArea](./docs/DESIGN_SYSTEM.md#scrollarea) - Área de rolagem customizada com scrollbars estilizadas, baseada no Radix UI ScrollArea.
1166
+ - [Select](./docs/DESIGN_SYSTEM.md#select) - Exibe uma lista de opções para o usuário escolher—acionada por um botão.
1167
+ - [Separator](./docs/DESIGN_SYSTEM.md#separator) - Separa visual ou semanticamente o conteúdo.
1168
+ - [Slider](./docs/DESIGN_SYSTEM.md#slider) - Um input onde o usuário seleciona um valor dentro de um intervalo determinado.
1169
+ - [Split Button](./docs/DESIGN_SYSTEM.md#splitbutton) - Combina uma ação principal com ações secundárias em um menu dropdown. Ideal para destacar a ação prioritária enquanto mantém alternativas acessíveis.
1170
+ - [Step Selector](./docs/DESIGN_SYSTEM.md#stepselector) - Componente de navegação para Wizards multi-etapas. Combina um DropdownMenu para seleção de etapas com uma barra de Progress para indicação visual do progresso.
1171
+ - [Switch](./docs/DESIGN_SYSTEM.md#switch) - Um controle que permite ao usuário alternar entre marcado e desmarcado.
1172
+ - [Table](./docs/DESIGN_SYSTEM.md#table) - Uma tabela semântica para exibir dados tabulares. Inclui TableResizeHandle para redimensionamento de colunas e TruncatedCell para texto truncado com tooltip automático.
1173
+ - [Tabs & TabPageLayout](./docs/DESIGN_SYSTEM.md#tabs) - Componentes de navegação em abas. Tabs para conteúdo simples e TabPageLayout para páginas completas com header fixo e scroll.
1174
+ - [Textarea](./docs/DESIGN_SYSTEM.md#textarea) - Exibe um textarea de formulário ou um componente que se parece com um textarea.
1175
+ - [Toast](./docs/DESIGN_SYSTEM.md#toast) - Componente de notificação toast usando Sonner. Feedback temporário e não bloqueante que informa rapidamente o usuário sem competir visualmente com outros Toasts.
1176
+ - [Toggle](./docs/DESIGN_SYSTEM.md#toggle) - Botões de dois estados que podem estar ligados ou desligados, individualmente ou em grupo.
1177
+ - [Tooltip](./docs/DESIGN_SYSTEM.md#tooltip) - Um popup que exibe informações relacionadas a um elemento quando o elemento recebe foco do teclado ou o mouse passa sobre ele.
1178
+ - [Truncated Cell](./docs/DESIGN_SYSTEM.md#truncatedcell) - Componente utilitário que trunca texto longo e exibe tooltip automático quando o conteúdo está cortado.
1179
+
1180
+ ### 🚀 Sistema CRUD
1181
+
1182
+ - [BaseForm](./docs/DESIGN_SYSTEM.md#baseform) - Formulário dinâmico baseado em configuração de seções e campos, suportando múltiplos tipos de campo, validação e layouts flexíveis.
1183
+ - [createCrudPage](./docs/DESIGN_SYSTEM.md#createcrudpage) - Factory de alto nível que gera uma página CRUD completa com ~15 linhas de configuração declarativa.
1184
+ - [CRUD de Fornecedores](./docs/DESIGN_SYSTEM.md#crudusers) - Padrão completo de CRUD para gestão de fornecedores com 16 campos, incluindo ordenação, filtros avançados, exportação/importação e ações em massa.
1185
+ - [CRUD Primitives](./docs/DESIGN_SYSTEM.md#crudprimitives) - Componentes de baixo nível para interfaces CRUD totalmente customizadas com controle total sobre layout e comportamento.
1186
+ - [CRUD System](./docs/DESIGN_SYSTEM.md#crudsystem) - Sistema completo para criação rápida de interfaces CRUD com validação, busca, paginação e muito mais.
1187
+ - [CrudActionBar](./docs/DESIGN_SYSTEM.md#crudactionbar) - Barra de ações unificada usada por todos os componentes CRUD (CrudTable, CrudGrid, createCrudPage) para garantir UX consistente.
1188
+ - [CrudGrid](./docs/DESIGN_SYSTEM.md#crudgrid) - Componente para exibir dados em formato de grade (cards) com todas as funcionalidades CRUD. Alternativa visual ao CrudTable para listagens com layout mais visual.
1189
+ - [CrudTable](./docs/DESIGN_SYSTEM.md#crudtable) - Componente de tabela CRUD completo com ordenação, seleção, resize de colunas, ações em massa e paginação integrada com useCrud.
1190
+ - [Sistema CRUD](./docs/DESIGN_SYSTEM.md#crudoverview) - Componentes padronizados para operações Create, Read, Update e Delete com arquitetura em 3 níveis de abstração.
1191
+
1192
+ ### 🔧 Core & Utilitários
1193
+
1194
+ - [Autenticação (Auth)](./docs/DESIGN_SYSTEM.md#auth) - Sistema completo de autenticação OAuth integrado com Qualiex. Inclui gerenciamento de tokens, rotas protegidas, suporte multi-tenant e troca de unidades.
1195
+ - [Contexts](./docs/DESIGN_SYSTEM.md#contexts) - Contexts globais da biblioteca forlogic-core para gerenciamento de estado da aplicação. Incluem LocaleContext para i18n, NavigationContext para navegação, PageMetadataContext para metadados de página e ModalStateContext para rastreamento de modais.
1196
+ - [Environments (Configuração por Project ID)](./docs/DESIGN_SYSTEM.md#environments) - Configurações de ambiente são extraídas automaticamente do arquivo auto-gerado pelo Lovable (src/integrations/supabase/client.ts) e injetadas pelo vite.config.ts. Não é necessário configurar variáveis Supabase no .env.
1197
+ - [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
+ - [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
+ - [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
+ - [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.
1201
+ - [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.
1202
+ - [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.
1203
+
1204
+ ---
1205
+
1206
+ > 📘 **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).
1207
+
1205
1208
  <!-- AUTO_GENERATED_END -->
@@ -41,6 +41,11 @@ export declare const TokenManager: {
41
41
  payload: import("./TokenService").JwtPayload;
42
42
  };
43
43
  getCompanyId: (alias?: string) => string | null;
44
+ /**
45
+ * Retorna o ID numérico da empresa (parts[1] do campo co*).
46
+ * Usado exclusivamente para nomear containers Azure Blob (ex: un4104).
47
+ */
48
+ getCompanyIdInt: (alias?: string) => string | null;
44
49
  getCurrentCompanyId: () => string | null;
45
50
  getAllCompaniesData: () => {
46
51
  id: string;
@@ -77,7 +77,7 @@ async function syncDocs() {
77
77
  const filesToCopy = [
78
78
  { src: path.join(pkgPath, "README.md"), dest: path.join(projectRoot, "README.md"), label: "README.md" },
79
79
  { src: path.join(pkgPath, "docs", "KNOWLEDGE.md"), dest: path.join(projectRoot, "docs", "KNOWLEDGE.md"), label: "docs/KNOWLEDGE.md" },
80
- { src: path.join(pkgPath, "DESIGN_SYSTEM.md"), dest: path.join(projectRoot, "docs", "DESIGN_SYSTEM.md"), label: "docs/DESIGN_SYSTEM.md" }
80
+ { src: path.join(pkgPath, "docs", "DESIGN_SYSTEM.md"), dest: path.join(projectRoot, "docs", "DESIGN_SYSTEM.md"), label: "docs/DESIGN_SYSTEM.md" }
81
81
  ];
82
82
  for (const file of filesToCopy) {
83
83
  if (copyFile(file.src, file.dest)) {
@@ -0,0 +1,16 @@
1
+ import { ReactNode } from "react";
2
+ import { Module } from "./types";
3
+ export interface ModuleAccessGuardProps {
4
+ children: ReactNode;
5
+ /** Lista de nomes de módulos contratados */
6
+ contractedModules?: string[];
7
+ /** Callback ao clicar em módulo no grid */
8
+ onModuleClick?: (module: Module) => void;
9
+ /** URL do Forlogic Educa */
10
+ educaUrl?: string;
11
+ /** URL do Saber Gestão */
12
+ saberGestaoUrl?: string;
13
+ /** URL da Wiki */
14
+ wikiUrl?: string;
15
+ }
16
+ export declare function ModuleAccessGuard({ children, contractedModules, onModuleClick, educaUrl, saberGestaoUrl, wikiUrl, }: ModuleAccessGuardProps): import("react/jsx-runtime").JSX.Element;
@@ -1,4 +1,6 @@
1
1
  export { ModulesDialog } from './ModulesDialog';
2
2
  export { ModuleGrid } from './ModuleGrid';
3
+ export { ModuleAccessGuard } from './ModuleAccessGuard';
3
4
  export { MODULES_DATA } from './modulesData';
4
5
  export type { ModulesDialogProps, Module, ModuleGroup } from './types';
6
+ export type { ModuleAccessGuardProps } from './ModuleAccessGuard';
@@ -0,0 +1,34 @@
1
+ import { ReactNode } from 'react';
2
+ interface ModuleContextType {
3
+ /** Alias do módulo configurado pelo projeto consumidor (ex: 'performance', 'suppliers') */
4
+ moduleAlias: string | null;
5
+ }
6
+ export interface ModuleProviderProps {
7
+ /** Alias do módulo do projeto consumidor */
8
+ moduleAlias?: string | null;
9
+ children: ReactNode;
10
+ }
11
+ /**
12
+ * Provider que armazena o alias do módulo configurado pelo projeto consumidor.
13
+ *
14
+ * Usado internamente pelo CoreProviders — normalmente não é necessário usar diretamente.
15
+ *
16
+ * @example
17
+ * ```tsx
18
+ * <ModuleProvider moduleAlias="performance">
19
+ * <App />
20
+ * </ModuleProvider>
21
+ * ```
22
+ */
23
+ export declare function ModuleProvider({ moduleAlias, children }: ModuleProviderProps): import("react/jsx-runtime").JSX.Element;
24
+ /**
25
+ * Hook para acessar o alias do módulo configurado pelo projeto consumidor.
26
+ *
27
+ * @example
28
+ * ```tsx
29
+ * const { moduleAlias } = useModuleConfig();
30
+ * // moduleAlias = 'performance' (conforme configurado no CoreProviders)
31
+ * ```
32
+ */
33
+ export declare function useModuleConfig(): ModuleContextType;
34
+ export {};
@@ -0,0 +1,60 @@
1
+ import type { ModuleAccessResult } from '../types';
2
+ /**
3
+ * Hook para verificar se o usuário logado tem acesso a um módulo específico.
4
+ *
5
+ * Busca a lista de softwares e as associações do usuário via API Qualiex,
6
+ * cruza os dados e retorna se o usuário tem acesso ao módulo configurado.
7
+ *
8
+ * **Pré-requisitos:**
9
+ * - O projeto deve configurar `moduleAlias` no `CoreProviders`
10
+ * - O usuário deve estar autenticado (via `useAuth`)
11
+ *
12
+ * **Cache:**
13
+ * - Softwares: cache de 30 minutos (raramente muda)
14
+ * - Associações: cache de 10 minutos (pode mudar com permissões)
15
+ * - Ambos são limpos automaticamente no `switchUnit`
16
+ *
17
+ * @param moduleAliasOverride - Alias opcional para verificar acesso a outro módulo
18
+ * (ignora o alias configurado no CoreProviders)
19
+ *
20
+ * @example
21
+ * ```tsx
22
+ * // Uso básico — verifica o módulo configurado no CoreProviders
23
+ * function Dashboard() {
24
+ * const { hasAccess, isLoading, role } = useModuleAccess();
25
+ *
26
+ * if (isLoading) return <LoadingState />;
27
+ * if (!hasAccess) return <AccessDenied />;
28
+ *
29
+ * return <DashboardContent />;
30
+ * }
31
+ * ```
32
+ *
33
+ * @example
34
+ * ```tsx
35
+ * // Verificar acesso a outro módulo
36
+ * function SupplierLink() {
37
+ * const { hasAccessTo } = useModuleAccess();
38
+ *
39
+ * if (!hasAccessTo('suppliers')) return null;
40
+ * return <Link to="/suppliers">Fornecedores</Link>;
41
+ * }
42
+ * ```
43
+ *
44
+ * @example
45
+ * ```tsx
46
+ * // Verificar acesso a múltiplos módulos
47
+ * function Navigation() {
48
+ * const { hasAccessTo } = useModuleAccess();
49
+ *
50
+ * return (
51
+ * <nav>
52
+ * {hasAccessTo('occurrences') && <Link to="/occurrences">Ocorrências</Link>}
53
+ * {hasAccessTo('audit') && <Link to="/audit">Auditorias</Link>}
54
+ * {hasAccessTo(['suppliers', 'suppliers-portal']) && <Link to="/suppliers">Fornecedores</Link>}
55
+ * </nav>
56
+ * );
57
+ * }
58
+ * ```
59
+ */
60
+ export declare function useModuleAccess(moduleAliasOverride?: string): ModuleAccessResult;