forlogic-core 1.12.0 → 1.12.2

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
@@ -49,6 +49,110 @@ Isso garante que todos os componentes compartilhem a mesma instância do i18next
49
49
 
50
50
  ---
51
51
 
52
+ ## 📦 LIB-FIRST: Sempre Use Componentes da forlogic-core
53
+
54
+ > **⚠️ REGRA FUNDAMENTAL**: Antes de criar qualquer componente, serviço ou utilitário no projeto, VERIFIQUE se já existe na `forlogic-core`.
55
+
56
+ ### 🤔 Por Quê?
57
+
58
+ A `forlogic-core` é a **biblioteca central** de componentes, serviços e utilitários compartilhados entre todos os projetos. Quando você cria um componente local que já existe na lib:
59
+
60
+ 1. **❌ Drift de Design** - O componente local não acompanha evoluções futuras da lib
61
+ 2. **❌ Duplicação de Código** - Aumenta tamanho do bundle e manutenção
62
+ 3. **❌ Inconsistência** - UI/UX diferente entre projetos
63
+ 4. **❌ Retrabalho** - Correções de bugs precisam ser feitas em múltiplos lugares
64
+
65
+ ### 📋 Checklist OBRIGATÓRIO Antes de Criar Componentes
66
+
67
+ ```markdown
68
+ - [ ] Pesquisei se o componente existe na forlogic-core?
69
+ - [ ] Verifiquei a documentação do Design System (/design_system)?
70
+ - [ ] Confirmei que a funcionalidade não pode ser alcançada com props/variantes existentes?
71
+ - [ ] Se não existe, solicitei a inclusão na lib para beneficiar todos os projetos?
72
+ ```
73
+
74
+ ### ✅ CORRETO: Usar da Lib
75
+
76
+ ```typescript
77
+ // ✅ Sempre importe da forlogic-core
78
+ import {
79
+ Button,
80
+ Input,
81
+ Dialog,
82
+ Combobox,
83
+ SplitButton,
84
+ RichTextEditor,
85
+ createCrudPage,
86
+ cn,
87
+ formatDatetime
88
+ } from 'forlogic-core';
89
+ ```
90
+
91
+ ### ❌ PROIBIDO: Criar Localmente (se existe na lib)
92
+
93
+ ```typescript
94
+ // ❌ NUNCA crie pastas/arquivos que já existem na lib
95
+ src/components/ui/button.tsx // Existe na lib
96
+ src/components/ui/dialog.tsx // Existe na lib
97
+ src/lib/utils.ts // cn() existe na lib
98
+ src/components/SplitButton.tsx // Existe na lib (a partir de v1.12.2)
99
+ ```
100
+
101
+ ### 🔄 Processo Quando Precisa de Customização
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 |
109
+
110
+ ### 📖 Onde Verificar Componentes Disponíveis
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 forlogic-core-pull-docs` | Baixa documentação atualizada |
118
+ | `npx forlogic-core-validate` | **Valida regra Lib-First** |
119
+
120
+ ### 🔍 Validação Automática
121
+
122
+ Execute o script de validação para verificar se há componentes duplicados:
123
+
124
+ ```bash
125
+ npx forlogic-core-validate
126
+ ```
127
+
128
+ O script verifica:
129
+ - ✅ Componentes UI em `src/components/ui/` que já existem na lib
130
+ - ✅ Utilitários em `src/lib/` como `utils.ts` ou `cn.ts`
131
+ - ✅ Hooks duplicados em `src/hooks/`
132
+ - ✅ Configuração do shadcn que pode criar duplicados
133
+
134
+ **Adicione ao CI/CD** para garantir conformidade:
135
+
136
+ ```json
137
+ {
138
+ "scripts": {
139
+ "validate:lib-first": "forlogic-core-validate",
140
+ "prebuild": "forlogic-core-validate"
141
+ }
142
+ }
143
+ ```
144
+
145
+ ### ⚠️ Exceções (quando PODE criar localmente)
146
+
147
+ 1. **Componente específico de negócio** - Ex: `InvoiceCard`, `UserProfileWidget`
148
+ 2. **Composição de componentes da lib** - Ex: wrapper que combina Dialog + Form
149
+ 3. **Componente temporário** - Protótipo que será migrado para a lib depois
150
+ 4. **Funcionalidade não generalizável** - Algo tão específico que não faz sentido na lib
151
+
152
+ > **📝 Mesmo nas exceções, avalie se o componente poderia ser generalizado e incluído na lib para beneficiar outros projetos.**
153
+
154
+ ---
155
+
52
156
  ## 🤖 REGRAS CRÍTICAS
53
157
 
54
158
  > **📋 Schema Padrão**: Veja no **Custom Knowledge** do projeto (Settings → Manage Knowledge) qual é o schema padrão deste projeto específico.
@@ -1016,25 +1120,27 @@ O comando usa credenciais públicas do Supabase do forlogic-core e não requer c
1016
1120
 
1017
1121
  ### 📚 Estatísticas da Documentação
1018
1122
 
1019
- **47 Componentes UI** | **6 Tokens** | **6 Ferramentas CRUD**
1123
+ **50 Componentes UI** | **6 Tokens** | **4 Ferramentas CRUD**
1020
1124
 
1021
1125
  ---
1022
1126
 
1023
1127
  ### 🎨 Fundamentos (Tokens)
1024
1128
 
1025
1129
  - [Colors Foundation](./docs/DESIGN_SYSTEM.md#colorsfoundation) - Sistema de cores completo com escalas neutras, de marca e funcionais.
1130
+ - [Ícones](./docs/DESIGN_SYSTEM.md#iconsfoundation) - Biblioteca completa de ícones usando Lucide React - uma biblioteca de ícones
1131
+ open-source com mais de 1400 ícones em SVG.
1026
1132
  - [Radius](./docs/DESIGN_SYSTEM.md#radius) - Sistema de arredondamento de bordas para consistência visual.
1027
1133
  - [Shadows](./docs/DESIGN_SYSTEM.md#shadows) - Sistema de sombras e elevação para criar profundidade e hierarquia.
1028
1134
  - [Spacing](./docs/DESIGN_SYSTEM.md#spacing) - Escala de espaçamento consistente baseada em uma unidade base de 4px.
1029
- - [Typography](./docs/DESIGN_SYSTEM.md#typographycomponent) - Componentes de tipografia para estilos de texto consistentes em toda a sua aplicação.
1030
1135
  - [Typography Foundation](./docs/DESIGN_SYSTEM.md#typographyfoundation) - Sistema tipográfico completo com Display, Headings, Body e mais.
1031
1136
 
1032
1137
  ### 🧩 Componentes UI
1033
1138
 
1034
- - [Accordion](./docs/DESIGN_SYSTEM.md#accordion) - Um conjunto de cabeçalhos interativos empilhados verticalmente, onde cada um revela uma seção de conteúdo.
1139
+ - [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.
1035
1140
  - [Action Button](./docs/DESIGN_SYSTEM.md#actionbutton) - Botão compacto otimizado para ações em linhas de tabela e menus dropdown.
1036
- - [Alert](./docs/DESIGN_SYSTEM.md#alert) - Exibe uma mensagem de destaque para chamar a atenção do usuário.
1037
- - [Aspect Ratio](./docs/DESIGN_SYSTEM.md#aspectratio) - Exibe conteúdo dentro de uma proporção desejada.
1141
+ - [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.
1142
+ - [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).
1143
+ - [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.
1038
1144
  - [Avatar](./docs/DESIGN_SYSTEM.md#avatar) - Um elemento de imagem com fallback para representar o usuário.
1039
1145
  - [Badge](./docs/DESIGN_SYSTEM.md#badge) - Exibe um badge ou um componente que se parece com um badge.
1040
1146
  - [Breadcrumb](./docs/DESIGN_SYSTEM.md#breadcrumb) - Exibe o caminho até o recurso atual usando uma hierarquia de links.
@@ -1042,47 +1148,47 @@ O comando usa credenciais públicas do Supabase do forlogic-core e não requer c
1042
1148
  - [Button Group](./docs/DESIGN_SYSTEM.md#buttongroup) - Agrupa botões relacionados com espaçamento e bordas apropriados.
1043
1149
  - [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.
1044
1150
  - [Card](./docs/DESIGN_SYSTEM.md#card) - Exibe um card com cabeçalho, conteúdo e rodapé.
1045
- - [Carousel](./docs/DESIGN_SYSTEM.md#carousel) - Um componente de carrossel para alternar entre elementos. Nota: Este componente requer a biblioteca Embla Carousel que não está incluída no forlogic-core por padrão.
1151
+ - [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.
1046
1152
  - [Checkbox](./docs/DESIGN_SYSTEM.md#checkbox) - Um controle que permite ao usuário alternar entre marcado e desmarcado.
1047
- - [Collapsible](./docs/DESIGN_SYSTEM.md#collapsible) - Um componente interativo que expande/colapsa um painel.
1048
1153
  - [Color Picker](./docs/DESIGN_SYSTEM.md#colorpicker) - Seletor de cores com paleta predefinida e seletor customizado.
1049
- - [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.
1154
+ - [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.
1050
1155
  - [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.
1156
+ - [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.
1051
1157
  - [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.
1052
1158
  - [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.
1053
1159
  - [Empty State](./docs/DESIGN_SYSTEM.md#emptystate) - Componente para exibir estados vazios com ícone, mensagem e ação opcional.
1054
1160
  - [Form](./docs/DESIGN_SYSTEM.md#form) - Construindo formulários com React Hook Form e Zod.
1055
- - [Grid](./docs/DESIGN_SYSTEM.md#grid) - Sistema de grid responsivo com configuração simplificada de colunas e espaçamento.
1161
+ - [Grid & Stack](./docs/DESIGN_SYSTEM.md#grid) - Sistema de layout com Grid responsivo e Stack flexível para organização de conteúdo.
1162
+ - [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.
1056
1163
  - [Icon Picker](./docs/DESIGN_SYSTEM.md#iconpicker) - Seletor de ícones da biblioteca Lucide React com busca integrada.
1057
- - [Input](./docs/DESIGN_SYSTEM.md#input) - Exibe um campo de entrada de texto.
1058
- - [Input Group](./docs/DESIGN_SYSTEM.md#inputgroup) - Agrupe inputs com addons de prefixo, sufixo, ícones, botões, tooltips e dropdowns. Segue a API oficial do shadcn/ui.
1059
- - [Label](./docs/DESIGN_SYSTEM.md#label) - Renderiza uma label acessível associada a controles.
1060
- - [Loading State](./docs/DESIGN_SYSTEM.md#loadingstate) - Componente para gerenciar estados de loading de forma declarativa com dois tipos: spinner e overlay.
1164
+ - [Input](./docs/DESIGN_SYSTEM.md#input) - Campo de entrada de texto. Inclui InputGroup para agrupar inputs com addons de prefixo, sufixo, ícones e botões.
1165
+ - [Label](./docs/DESIGN_SYSTEM.md#label) - Renderiza uma label acessível associada a controles de formulário.
1166
+ - [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.
1167
+ - [Loading](./docs/DESIGN_SYSTEM.md#skeleton) - Componentes para estados de carregamento: Skeleton (placeholders), Spinner (indicador de loading), e LoadingState (gerenciamento declarativo).
1168
+ - [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.
1169
+ - [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.
1170
+ - [Navigation Menu](./docs/DESIGN_SYSTEM.md#navigationmenu) - Uma coleção de links para navegação em websites.
1061
1171
  - [Pagination](./docs/DESIGN_SYSTEM.md#pagination) - Barra de paginação completa com seletor de itens por página e controles de navegação.
1172
+ - [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.
1173
+ - [Popover](./docs/DESIGN_SYSTEM.md#popover) - Exibe conteúdo rico em um portal, acionado por um botão.
1062
1174
  - [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.
1175
+ - [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.
1063
1176
  - [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.
1064
- - [Resizable](./docs/DESIGN_SYSTEM.md#resizable) - Grupos de painéis redimensionáveis e layouts acessíveis com suporte a teclado. Construído sobre react-resizable-panels.
1065
- - [Scroll Area](./docs/DESIGN_SYSTEM.md#scrollarea) - Aprimora a funcionalidade de rolagem nativa para estilização personalizada e cross-browser.
1066
- - [Searchbar](./docs/DESIGN_SYSTEM.md#searchbar) - Campo de busca com ícone de pesquisa integrado e botão de limpar opcional. Otimizado para experiências de busca em toda a aplicação.
1177
+ - [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.
1067
1178
  - [Select](./docs/DESIGN_SYSTEM.md#select) - Exibe uma lista de opções para o usuário escolher—acionada por um botão.
1068
1179
  - [Separator](./docs/DESIGN_SYSTEM.md#separator) - Separa visual ou semanticamente o conteúdo.
1069
- - [Sheet](./docs/DESIGN_SYSTEM.md#sheet) - Estende o componente Dialog para exibir conteúdo que complementa o conteúdo principal da tela.
1070
- - [Skeleton](./docs/DESIGN_SYSTEM.md#skeleton) - Componente de placeholder para estados de carregamento. Inclui variantes pré-configuradas para tabelas, cards, formulários e mais.
1071
1180
  - [Slider](./docs/DESIGN_SYSTEM.md#slider) - Um input onde o usuário seleciona um valor dentro de um intervalo determinado.
1072
- - [Spinner](./docs/DESIGN_SYSTEM.md#spinner) - Um componente de spinner de carregamento para indicar estado de carregamento.
1073
- - [Stack](./docs/DESIGN_SYSTEM.md#stack) - Layout de pilha flexível com controle de direção, espaçamento, alinhamento e justificação.
1181
+ - [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.
1074
1182
  - [Switch](./docs/DESIGN_SYSTEM.md#switch) - Um controle que permite ao usuário alternar entre marcado e desmarcado.
1075
- - [Tab Page Layout](./docs/DESIGN_SYSTEM.md#tabpagelayout) - Layout padronizado para páginas dentro de tabs com header, descrição, ações e conteúdo scrollável.
1076
- - [Table](./docs/DESIGN_SYSTEM.md#table) - Uma tabela semântica para exibir dados tabulares.
1077
- - [Tabs](./docs/DESIGN_SYSTEM.md#tabs) - Um conjunto de seções de conteúdo em camadas—conhecidas como painéis de abas—que são exibidas uma de cada vez.
1183
+ - [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.
1184
+ - [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.
1078
1185
  - [Textarea](./docs/DESIGN_SYSTEM.md#textarea) - Exibe um textarea de formulário ou um componente que se parece com um textarea.
1079
1186
  - [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.
1080
1187
  - [Toggle](./docs/DESIGN_SYSTEM.md#toggle) - Botões de dois estados que podem estar ligados ou desligados, individualmente ou em grupo.
1188
+ - [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.
1081
1189
 
1082
1190
  ### 🚀 Sistema CRUD
1083
1191
 
1084
- - [CRUD Avançado](./docs/DESIGN_SYSTEM.md#crudadvanced) - Padrão de tabela CRUD com recursos avançados como avatar de produto, indicadores visuais de estoque, sistema de avaliação com estrelas, métricas de vendas e formatação de moeda. Inclui dialogs para todas as operações CRUD, exportação/importação e ações em massa.
1085
- - [CRUD Básico](./docs/DESIGN_SYSTEM.md#crudbasic) - Padrão de tabela CRUD simples com busca, filtros, ações por linha e paginação. Inclui dialogs interativos para visualização, criação, edição, duplicação, alteração de status e exclusão de itens.
1086
1192
  - [CRUD com Alternância de Visualização](./docs/DESIGN_SYSTEM.md#crudviewtoggle) - Padrão de CRUD que permite alternar entre visualização em lista (cards horizontais) e grade (cards em grid). Inclui todas as operações CRUD com dialogs, exportação/importação e ações em massa.
1087
1193
  - [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.
1088
1194
  - [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.
package/dist/README.md CHANGED
@@ -49,6 +49,110 @@ Isso garante que todos os componentes compartilhem a mesma instância do i18next
49
49
 
50
50
  ---
51
51
 
52
+ ## 📦 LIB-FIRST: Sempre Use Componentes da forlogic-core
53
+
54
+ > **⚠️ REGRA FUNDAMENTAL**: Antes de criar qualquer componente, serviço ou utilitário no projeto, VERIFIQUE se já existe na `forlogic-core`.
55
+
56
+ ### 🤔 Por Quê?
57
+
58
+ A `forlogic-core` é a **biblioteca central** de componentes, serviços e utilitários compartilhados entre todos os projetos. Quando você cria um componente local que já existe na lib:
59
+
60
+ 1. **❌ Drift de Design** - O componente local não acompanha evoluções futuras da lib
61
+ 2. **❌ Duplicação de Código** - Aumenta tamanho do bundle e manutenção
62
+ 3. **❌ Inconsistência** - UI/UX diferente entre projetos
63
+ 4. **❌ Retrabalho** - Correções de bugs precisam ser feitas em múltiplos lugares
64
+
65
+ ### 📋 Checklist OBRIGATÓRIO Antes de Criar Componentes
66
+
67
+ ```markdown
68
+ - [ ] Pesquisei se o componente existe na forlogic-core?
69
+ - [ ] Verifiquei a documentação do Design System (/design_system)?
70
+ - [ ] Confirmei que a funcionalidade não pode ser alcançada com props/variantes existentes?
71
+ - [ ] Se não existe, solicitei a inclusão na lib para beneficiar todos os projetos?
72
+ ```
73
+
74
+ ### ✅ CORRETO: Usar da Lib
75
+
76
+ ```typescript
77
+ // ✅ Sempre importe da forlogic-core
78
+ import {
79
+ Button,
80
+ Input,
81
+ Dialog,
82
+ Combobox,
83
+ SplitButton,
84
+ RichTextEditor,
85
+ createCrudPage,
86
+ cn,
87
+ formatDatetime
88
+ } from 'forlogic-core';
89
+ ```
90
+
91
+ ### ❌ PROIBIDO: Criar Localmente (se existe na lib)
92
+
93
+ ```typescript
94
+ // ❌ NUNCA crie pastas/arquivos que já existem na lib
95
+ src/components/ui/button.tsx // Existe na lib
96
+ src/components/ui/dialog.tsx // Existe na lib
97
+ src/lib/utils.ts // cn() existe na lib
98
+ src/components/SplitButton.tsx // Existe na lib (a partir de v1.12.2)
99
+ ```
100
+
101
+ ### 🔄 Processo Quando Precisa de Customização
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 |
109
+
110
+ ### 📖 Onde Verificar Componentes Disponíveis
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 forlogic-core-pull-docs` | Baixa documentação atualizada |
118
+ | `npx forlogic-core-validate` | **Valida regra Lib-First** |
119
+
120
+ ### 🔍 Validação Automática
121
+
122
+ Execute o script de validação para verificar se há componentes duplicados:
123
+
124
+ ```bash
125
+ npx forlogic-core-validate
126
+ ```
127
+
128
+ O script verifica:
129
+ - ✅ Componentes UI em `src/components/ui/` que já existem na lib
130
+ - ✅ Utilitários em `src/lib/` como `utils.ts` ou `cn.ts`
131
+ - ✅ Hooks duplicados em `src/hooks/`
132
+ - ✅ Configuração do shadcn que pode criar duplicados
133
+
134
+ **Adicione ao CI/CD** para garantir conformidade:
135
+
136
+ ```json
137
+ {
138
+ "scripts": {
139
+ "validate:lib-first": "forlogic-core-validate",
140
+ "prebuild": "forlogic-core-validate"
141
+ }
142
+ }
143
+ ```
144
+
145
+ ### ⚠️ Exceções (quando PODE criar localmente)
146
+
147
+ 1. **Componente específico de negócio** - Ex: `InvoiceCard`, `UserProfileWidget`
148
+ 2. **Composição de componentes da lib** - Ex: wrapper que combina Dialog + Form
149
+ 3. **Componente temporário** - Protótipo que será migrado para a lib depois
150
+ 4. **Funcionalidade não generalizável** - Algo tão específico que não faz sentido na lib
151
+
152
+ > **📝 Mesmo nas exceções, avalie se o componente poderia ser generalizado e incluído na lib para beneficiar outros projetos.**
153
+
154
+ ---
155
+
52
156
  ## 🤖 REGRAS CRÍTICAS
53
157
 
54
158
  > **📋 Schema Padrão**: Veja no **Custom Knowledge** do projeto (Settings → Manage Knowledge) qual é o schema padrão deste projeto específico.
@@ -1016,25 +1120,27 @@ O comando usa credenciais públicas do Supabase do forlogic-core e não requer c
1016
1120
 
1017
1121
  ### 📚 Estatísticas da Documentação
1018
1122
 
1019
- **49 Componentes UI** | **6 Tokens** | **2 Ferramentas CRUD**
1123
+ **50 Componentes UI** | **6 Tokens** | **5 Ferramentas CRUD**
1020
1124
 
1021
1125
  ---
1022
1126
 
1023
1127
  ### 🎨 Fundamentos (Tokens)
1024
1128
 
1025
1129
  - [Colors Foundation](./docs/DESIGN_SYSTEM.md#colorsfoundation) - Sistema de cores completo com escalas neutras, de marca e funcionais.
1130
+ - [Ícones](./docs/DESIGN_SYSTEM.md#iconsfoundation) - Biblioteca completa de ícones usando Lucide React - uma biblioteca de ícones
1131
+ open-source com mais de 1400 ícones em SVG.
1026
1132
  - [Radius](./docs/DESIGN_SYSTEM.md#radius) - Sistema de arredondamento de bordas para consistência visual.
1027
1133
  - [Shadows](./docs/DESIGN_SYSTEM.md#shadows) - Sistema de sombras e elevação para criar profundidade e hierarquia.
1028
1134
  - [Spacing](./docs/DESIGN_SYSTEM.md#spacing) - Escala de espaçamento consistente baseada em uma unidade base de 4px.
1029
- - [Typography](./docs/DESIGN_SYSTEM.md#typographycomponent) - Componentes de tipografia para estilos de texto consistentes em toda a sua aplicação.
1030
1135
  - [Typography Foundation](./docs/DESIGN_SYSTEM.md#typographyfoundation) - Sistema tipográfico completo com Display, Headings, Body e mais.
1031
1136
 
1032
1137
  ### 🧩 Componentes UI
1033
1138
 
1034
- - [Accordion](./docs/DESIGN_SYSTEM.md#accordion) - Um conjunto de cabeçalhos interativos empilhados verticalmente, onde cada um revela uma seção de conteúdo.
1139
+ - [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.
1035
1140
  - [Action Button](./docs/DESIGN_SYSTEM.md#actionbutton) - Botão compacto otimizado para ações em linhas de tabela e menus dropdown.
1036
1141
  - [Alert](./docs/DESIGN_SYSTEM.md#alert) - Exibe uma mensagem de destaque para chamar a atenção do usuário.
1037
- - [Aspect Ratio](./docs/DESIGN_SYSTEM.md#aspectratio) - Exibe conteúdo dentro de uma proporção desejada.
1142
+ - [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).
1143
+ - [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.
1038
1144
  - [Avatar](./docs/DESIGN_SYSTEM.md#avatar) - Um elemento de imagem com fallback para representar o usuário.
1039
1145
  - [Badge](./docs/DESIGN_SYSTEM.md#badge) - Exibe um badge ou um componente que se parece com um badge.
1040
1146
  - [Breadcrumb](./docs/DESIGN_SYSTEM.md#breadcrumb) - Exibe o caminho até o recurso atual usando uma hierarquia de links.
@@ -1042,47 +1148,50 @@ O comando usa credenciais públicas do Supabase do forlogic-core e não requer c
1042
1148
  - [Button Group](./docs/DESIGN_SYSTEM.md#buttongroup) - Agrupa botões relacionados com espaçamento e bordas apropriados.
1043
1149
  - [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.
1044
1150
  - [Card](./docs/DESIGN_SYSTEM.md#card) - Exibe um card com cabeçalho, conteúdo e rodapé.
1045
- - [Carousel](./docs/DESIGN_SYSTEM.md#carousel) - Um componente de carrossel para alternar entre elementos. Nota: Este componente requer a biblioteca Embla Carousel que não está incluída no forlogic-core por padrão.
1151
+ - [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.
1046
1152
  - [Checkbox](./docs/DESIGN_SYSTEM.md#checkbox) - Um controle que permite ao usuário alternar entre marcado e desmarcado.
1047
- - [Collapsible](./docs/DESIGN_SYSTEM.md#collapsible) - Um componente interativo que expande/colapsa um painel.
1048
1153
  - [Color Picker](./docs/DESIGN_SYSTEM.md#colorpicker) - Seletor de cores com paleta predefinida e seletor customizado.
1049
- - [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.
1154
+ - [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.
1050
1155
  - [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.
1156
+ - [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.
1051
1157
  - [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.
1052
1158
  - [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.
1053
1159
  - [Empty State](./docs/DESIGN_SYSTEM.md#emptystate) - Componente para exibir estados vazios com ícone, mensagem e ação opcional.
1054
1160
  - [Form](./docs/DESIGN_SYSTEM.md#form) - Construindo formulários com React Hook Form e Zod.
1055
- - [Grid](./docs/DESIGN_SYSTEM.md#grid) - Sistema de grid responsivo com configuração simplificada de colunas e espaçamento.
1161
+ - [Grid & Stack](./docs/DESIGN_SYSTEM.md#grid) - Sistema de layout com Grid responsivo e Stack flexível para organização de conteúdo.
1162
+ - [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.
1056
1163
  - [Icon Picker](./docs/DESIGN_SYSTEM.md#iconpicker) - Seletor de ícones da biblioteca Lucide React com busca integrada.
1057
- - [Input](./docs/DESIGN_SYSTEM.md#input) - Exibe um campo de entrada de texto.
1058
- - [Input Group](./docs/DESIGN_SYSTEM.md#inputgroup) - Agrupe inputs com addons de prefixo, sufixo, ícones, botões, tooltips e dropdowns. Segue a API oficial do shadcn/ui.
1059
- - [Input OTP](./docs/DESIGN_SYSTEM.md#inputotp) - Accessible one-time password component with customizable number of inputs. Available in the UI library but not exported from forlogic-core.
1060
- - [Label](./docs/DESIGN_SYSTEM.md#label) - Renderiza uma label acessível associada a controles.
1061
- - [Loading State](./docs/DESIGN_SYSTEM.md#loadingstate) - Componente para gerenciar estados de loading de forma declarativa com dois tipos: spinner e overlay.
1062
- - [Native Select](./docs/DESIGN_SYSTEM.md#nativeselect) - Elemento select nativo do HTML com estilização.
1164
+ - [Input](./docs/DESIGN_SYSTEM.md#input) - Campo de entrada de texto. Inclui InputGroup para agrupar inputs com addons de prefixo, sufixo, ícones e botões.
1165
+ - [Label](./docs/DESIGN_SYSTEM.md#label) - Renderiza uma label acessível associada a controles de formulário.
1166
+ - [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.
1167
+ - [Loading](./docs/DESIGN_SYSTEM.md#skeleton) - Componentes para estados de carregamento: Skeleton (placeholders), Spinner (indicador de loading), e LoadingState (gerenciamento declarativo).
1168
+ - [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.
1169
+ - [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.
1170
+ - [Navigation Menu](./docs/DESIGN_SYSTEM.md#navigationmenu) - Uma coleção de links para navegação em websites.
1063
1171
  - [Pagination](./docs/DESIGN_SYSTEM.md#pagination) - Barra de paginação completa com seletor de itens por página e controles de navegação.
1172
+ - [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.
1173
+ - [Popover](./docs/DESIGN_SYSTEM.md#popover) - Exibe conteúdo rico em um portal, acionado por um botão.
1064
1174
  - [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.
1175
+ - [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.
1065
1176
  - [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.
1066
- - [Resizable](./docs/DESIGN_SYSTEM.md#resizable) - Grupos de painéis redimensionáveis e layouts acessíveis com suporte a teclado. Construído sobre react-resizable-panels.
1067
- - [Scroll Area](./docs/DESIGN_SYSTEM.md#scrollarea) - Aprimora a funcionalidade de rolagem nativa para estilização personalizada e cross-browser.
1068
- - [Searchbar](./docs/DESIGN_SYSTEM.md#searchbar) - Campo de busca com ícone de pesquisa integrado e botão de limpar opcional. Otimizado para experiências de busca em toda a aplicação.
1177
+ - [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.
1069
1178
  - [Select](./docs/DESIGN_SYSTEM.md#select) - Exibe uma lista de opções para o usuário escolher—acionada por um botão.
1070
1179
  - [Separator](./docs/DESIGN_SYSTEM.md#separator) - Separa visual ou semanticamente o conteúdo.
1071
- - [Sheet](./docs/DESIGN_SYSTEM.md#sheet) - Estende o componente Dialog para exibir conteúdo que complementa o conteúdo principal da tela.
1072
- - [Skeleton](./docs/DESIGN_SYSTEM.md#skeleton) - Componente de placeholder para estados de carregamento. Inclui variantes pré-configuradas para tabelas, cards, formulários e mais.
1073
1180
  - [Slider](./docs/DESIGN_SYSTEM.md#slider) - Um input onde o usuário seleciona um valor dentro de um intervalo determinado.
1074
- - [Spinner](./docs/DESIGN_SYSTEM.md#spinner) - Um componente de spinner de carregamento para indicar estado de carregamento.
1075
- - [Stack](./docs/DESIGN_SYSTEM.md#stack) - Layout de pilha flexível com controle de direção, espaçamento, alinhamento e justificação.
1181
+ - [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.
1076
1182
  - [Switch](./docs/DESIGN_SYSTEM.md#switch) - Um controle que permite ao usuário alternar entre marcado e desmarcado.
1077
- - [Tab Page Layout](./docs/DESIGN_SYSTEM.md#tabpagelayout) - Layout padronizado para páginas dentro de tabs com header, descrição, ações e conteúdo scrollável.
1078
- - [Table](./docs/DESIGN_SYSTEM.md#table) - Uma tabela semântica para exibir dados tabulares.
1079
- - [Tabs](./docs/DESIGN_SYSTEM.md#tabs) - Um conjunto de seções de conteúdo em camadas—conhecidas como painéis de abas—que são exibidas uma de cada vez.
1183
+ - [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.
1184
+ - [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.
1080
1185
  - [Textarea](./docs/DESIGN_SYSTEM.md#textarea) - Exibe um textarea de formulário ou um componente que se parece com um textarea.
1081
- - [Toast](./docs/DESIGN_SYSTEM.md#toast) - Componente de notificação toast usando Sonner. Exibe mensagens temporárias para feedback de ações do usuário.
1186
+ - [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.
1082
1187
  - [Toggle](./docs/DESIGN_SYSTEM.md#toggle) - Botões de dois estados que podem estar ligados ou desligados, individualmente ou em grupo.
1188
+ - [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.
1083
1189
 
1084
1190
  ### 🚀 Sistema CRUD
1085
1191
 
1192
+ - [CRUD Básico](./docs/DESIGN_SYSTEM.md#crudbasic) - Padrão de tabela CRUD simples com busca, filtros, ações por linha e paginação. Inclui dialogs interativos para visualização, criação, edição, duplicação, alteração de status e exclusão de itens.
1193
+ - [CRUD com Alternância de Visualização](./docs/DESIGN_SYSTEM.md#crudviewtoggle) - Padrão de CRUD que permite alternar entre visualização em lista (cards horizontais) e grade (cards em grid). Inclui todas as operações CRUD com dialogs, exportação/importação e ações em massa.
1194
+ - [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.
1086
1195
  - [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.
1087
1196
  - [Wizard Form](./docs/DESIGN_SYSTEM.md#wizardform) - Formulário multi-etapas com validação, navegação entre seções e indicadores de progresso.
1088
1197