forlogic-core 1.11.7 → 1.12.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.
- package/README.md +164 -25
- package/dist/README.md +217 -78
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.esm.js +2 -2
- package/dist/index.js +2 -2
- package/dist/tailwind/index.esm.js +3 -0
- package/dist/tailwind/index.js +3 -0
- package/package.json +11 -8
package/README.md
CHANGED
|
@@ -836,6 +836,140 @@ Se você não fornecer um `queryClient`, o `CoreProviders` cria um com as seguin
|
|
|
836
836
|
|
|
837
837
|
---
|
|
838
838
|
|
|
839
|
+
## 🎯 Ações Principais de Módulo (SidebarActionTrigger)
|
|
840
|
+
|
|
841
|
+
O `SidebarActionTrigger` permite adicionar ações principais de módulo no sidebar, diferenciadas visualmente da navegação. São gatilhos de ação, não destinos de navegação.
|
|
842
|
+
|
|
843
|
+
### Conceito
|
|
844
|
+
|
|
845
|
+
| Característica | Descrição |
|
|
846
|
+
|----------------|-----------|
|
|
847
|
+
| **Ação de módulo** | Válida apenas dentro do contexto do módulo ao qual pertence |
|
|
848
|
+
| **Não global** | Não aplicável a todo o sistema |
|
|
849
|
+
| **Não contextual** | Não depende de seleção de item específico |
|
|
850
|
+
| **Destaque visual** | Exibida com aparência diferenciada da navegação |
|
|
851
|
+
|
|
852
|
+
### Uso Básico
|
|
853
|
+
|
|
854
|
+
```tsx
|
|
855
|
+
import { AppSidebar, SidebarConfig } from 'forlogic-core';
|
|
856
|
+
import { Plus, FileText, Folder } from 'lucide-react';
|
|
857
|
+
|
|
858
|
+
const sidebarConfig: SidebarConfig = {
|
|
859
|
+
appName: 'Meu Módulo',
|
|
860
|
+
|
|
861
|
+
// Ações principais do módulo
|
|
862
|
+
moduleActions: {
|
|
863
|
+
triggerLabel: 'Criar',
|
|
864
|
+
triggerIcon: Plus,
|
|
865
|
+
actions: [
|
|
866
|
+
{
|
|
867
|
+
id: 'create-item',
|
|
868
|
+
label: 'Novo Item',
|
|
869
|
+
icon: FileText,
|
|
870
|
+
onClick: () => openCreateDialog()
|
|
871
|
+
},
|
|
872
|
+
{
|
|
873
|
+
id: 'create-folder',
|
|
874
|
+
label: 'Nova Pasta',
|
|
875
|
+
icon: Folder,
|
|
876
|
+
onClick: () => openFolderDialog()
|
|
877
|
+
},
|
|
878
|
+
]
|
|
879
|
+
},
|
|
880
|
+
|
|
881
|
+
// Navegação
|
|
882
|
+
navigation: [
|
|
883
|
+
{ label: 'Visão Geral', path: '/', icon: Home },
|
|
884
|
+
{ label: 'Configurações', path: '/settings', icon: Settings },
|
|
885
|
+
]
|
|
886
|
+
};
|
|
887
|
+
|
|
888
|
+
<AppSidebar config={sidebarConfig} />
|
|
889
|
+
```
|
|
890
|
+
|
|
891
|
+
### Comportamento
|
|
892
|
+
|
|
893
|
+
| Cenário | Comportamento |
|
|
894
|
+
|---------|---------------|
|
|
895
|
+
| **Uma ação** | Clique executa a ação diretamente |
|
|
896
|
+
| **Múltiplas ações** | Clique exibe dropdown com opções |
|
|
897
|
+
| **Modal aberto** | Gatilho fica desabilitado |
|
|
898
|
+
| **Sidebar colapsada** | Exibe apenas ícone com tooltip |
|
|
899
|
+
|
|
900
|
+
### Props do SidebarActionTrigger
|
|
901
|
+
|
|
902
|
+
| Prop | Tipo | Obrigatório | Descrição |
|
|
903
|
+
|------|------|-------------|-----------|
|
|
904
|
+
| `config` | `SidebarActionsConfig` | ✅ | Configuração das ações |
|
|
905
|
+
| `isCollapsed` | `boolean` | ❌ | Se a sidebar está colapsada |
|
|
906
|
+
| `isDisabled` | `boolean` | ❌ | Desabilita o gatilho |
|
|
907
|
+
|
|
908
|
+
### Interface SidebarModuleAction
|
|
909
|
+
|
|
910
|
+
```typescript
|
|
911
|
+
interface SidebarModuleAction {
|
|
912
|
+
id: string; // Identificador único
|
|
913
|
+
label: string; // Texto do botão/opção
|
|
914
|
+
icon?: LucideIcon; // Ícone opcional
|
|
915
|
+
onClick: () => void; // Callback de execução
|
|
916
|
+
disabled?: boolean; // Estado desabilitado
|
|
917
|
+
permissionCheck?: () => Promise<boolean>;
|
|
918
|
+
}
|
|
919
|
+
```
|
|
920
|
+
|
|
921
|
+
### Interface SidebarActionsConfig
|
|
922
|
+
|
|
923
|
+
```typescript
|
|
924
|
+
interface SidebarActionsConfig {
|
|
925
|
+
triggerLabel?: string; // Rótulo do gatilho (padrão: 'Criar')
|
|
926
|
+
triggerIcon?: LucideIcon; // Ícone do gatilho (padrão: Plus)
|
|
927
|
+
actions: SidebarModuleAction[];
|
|
928
|
+
}
|
|
929
|
+
```
|
|
930
|
+
|
|
931
|
+
### Gerenciamento de Modais (Opcional)
|
|
932
|
+
|
|
933
|
+
Para desabilitar o gatilho quando há modais abertos, use o `ModalStateProvider`:
|
|
934
|
+
|
|
935
|
+
```tsx
|
|
936
|
+
import { CoreProviders, ModalStateProvider, useModalState } from 'forlogic-core';
|
|
937
|
+
|
|
938
|
+
// No App.tsx (opcional - CoreProviders não inclui por padrão)
|
|
939
|
+
<CoreProviders>
|
|
940
|
+
<ModalStateProvider>
|
|
941
|
+
<AppLayout />
|
|
942
|
+
</ModalStateProvider>
|
|
943
|
+
</CoreProviders>
|
|
944
|
+
|
|
945
|
+
// Em componentes com modal
|
|
946
|
+
function MeuDialog({ open, onOpenChange }) {
|
|
947
|
+
const { registerModal, unregisterModal } = useModalState();
|
|
948
|
+
|
|
949
|
+
useEffect(() => {
|
|
950
|
+
if (open) {
|
|
951
|
+
registerModal('meu-dialog');
|
|
952
|
+
} else {
|
|
953
|
+
unregisterModal('meu-dialog');
|
|
954
|
+
}
|
|
955
|
+
}, [open]);
|
|
956
|
+
|
|
957
|
+
return <Dialog open={open} onOpenChange={onOpenChange}>...</Dialog>;
|
|
958
|
+
}
|
|
959
|
+
```
|
|
960
|
+
|
|
961
|
+
### Diretriz para Uso via Prompt
|
|
962
|
+
|
|
963
|
+
#### ✅ Prompts corretos:
|
|
964
|
+
- "Adicione uma ação principal 'Criar Processo' no sidebar do módulo"
|
|
965
|
+
- "Configure o módulo para ter duas ações principais: 'Novo Item' e 'Nova Pasta'"
|
|
966
|
+
- "Adicione o botão de criar no topo do sidebar como ação de módulo"
|
|
967
|
+
|
|
968
|
+
#### ❌ Prompts ambíguos (evitar):
|
|
969
|
+
- "Coloque um botão de criar no menu" (ambíguo - qual menu?)
|
|
970
|
+
- "Adicione navegação para criar" (ação ≠ navegação)
|
|
971
|
+
- "Crie um link para nova entidade" (link = navegação, não ação)
|
|
972
|
+
|
|
839
973
|
## 🛠️ CLI: Sincronização de Documentação
|
|
840
974
|
|
|
841
975
|
O `forlogic-core` disponibiliza um comando CLI para sincronizar a documentação centralizada do banco de dados para projetos consumidores.
|
|
@@ -882,25 +1016,27 @@ O comando usa credenciais públicas do Supabase do forlogic-core e não requer c
|
|
|
882
1016
|
|
|
883
1017
|
### 📚 Estatísticas da Documentação
|
|
884
1018
|
|
|
885
|
-
**
|
|
1019
|
+
**50 Componentes UI** | **6 Tokens** | **5 Ferramentas CRUD**
|
|
886
1020
|
|
|
887
1021
|
---
|
|
888
1022
|
|
|
889
1023
|
### 🎨 Fundamentos (Tokens)
|
|
890
1024
|
|
|
891
1025
|
- [Colors Foundation](./docs/DESIGN_SYSTEM.md#colorsfoundation) - Sistema de cores completo com escalas neutras, de marca e funcionais.
|
|
1026
|
+
- [Ícones](./docs/DESIGN_SYSTEM.md#iconsfoundation) - Biblioteca completa de ícones usando Lucide React - uma biblioteca de ícones
|
|
1027
|
+
open-source com mais de 1400 ícones em SVG.
|
|
892
1028
|
- [Radius](./docs/DESIGN_SYSTEM.md#radius) - Sistema de arredondamento de bordas para consistência visual.
|
|
893
1029
|
- [Shadows](./docs/DESIGN_SYSTEM.md#shadows) - Sistema de sombras e elevação para criar profundidade e hierarquia.
|
|
894
1030
|
- [Spacing](./docs/DESIGN_SYSTEM.md#spacing) - Escala de espaçamento consistente baseada em uma unidade base de 4px.
|
|
895
|
-
- [Typography](./docs/DESIGN_SYSTEM.md#typographycomponent) - Componentes de tipografia para estilos de texto consistentes em toda a sua aplicação.
|
|
896
1031
|
- [Typography Foundation](./docs/DESIGN_SYSTEM.md#typographyfoundation) - Sistema tipográfico completo com Display, Headings, Body e mais.
|
|
897
1032
|
|
|
898
1033
|
### 🧩 Componentes UI
|
|
899
1034
|
|
|
900
|
-
- [Accordion](./docs/DESIGN_SYSTEM.md#accordion) -
|
|
1035
|
+
- [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.
|
|
901
1036
|
- [Action Button](./docs/DESIGN_SYSTEM.md#actionbutton) - Botão compacto otimizado para ações em linhas de tabela e menus dropdown.
|
|
902
1037
|
- [Alert](./docs/DESIGN_SYSTEM.md#alert) - Exibe uma mensagem de destaque para chamar a atenção do usuário.
|
|
903
|
-
- [
|
|
1038
|
+
- [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).
|
|
1039
|
+
- [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.
|
|
904
1040
|
- [Avatar](./docs/DESIGN_SYSTEM.md#avatar) - Um elemento de imagem com fallback para representar o usuário.
|
|
905
1041
|
- [Badge](./docs/DESIGN_SYSTEM.md#badge) - Exibe um badge ou um componente que se parece com um badge.
|
|
906
1042
|
- [Breadcrumb](./docs/DESIGN_SYSTEM.md#breadcrumb) - Exibe o caminho até o recurso atual usando uma hierarquia de links.
|
|
@@ -908,47 +1044,50 @@ O comando usa credenciais públicas do Supabase do forlogic-core e não requer c
|
|
|
908
1044
|
- [Button Group](./docs/DESIGN_SYSTEM.md#buttongroup) - Agrupa botões relacionados com espaçamento e bordas apropriados.
|
|
909
1045
|
- [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.
|
|
910
1046
|
- [Card](./docs/DESIGN_SYSTEM.md#card) - Exibe um card com cabeçalho, conteúdo e rodapé.
|
|
911
|
-
- [
|
|
1047
|
+
- [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.
|
|
912
1048
|
- [Checkbox](./docs/DESIGN_SYSTEM.md#checkbox) - Um controle que permite ao usuário alternar entre marcado e desmarcado.
|
|
913
|
-
- [Collapsible](./docs/DESIGN_SYSTEM.md#collapsible) - Um componente interativo que expande/colapsa um painel.
|
|
914
1049
|
- [Color Picker](./docs/DESIGN_SYSTEM.md#colorpicker) - Seletor de cores com paleta predefinida e seletor customizado.
|
|
915
|
-
- [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.
|
|
1050
|
+
- [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.
|
|
916
1051
|
- [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.
|
|
1052
|
+
- [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.
|
|
917
1053
|
- [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.
|
|
918
1054
|
- [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.
|
|
919
1055
|
- [Empty State](./docs/DESIGN_SYSTEM.md#emptystate) - Componente para exibir estados vazios com ícone, mensagem e ação opcional.
|
|
920
1056
|
- [Form](./docs/DESIGN_SYSTEM.md#form) - Construindo formulários com React Hook Form e Zod.
|
|
921
|
-
- [Grid](./docs/DESIGN_SYSTEM.md#grid) - Sistema de
|
|
1057
|
+
- [Grid & Stack](./docs/DESIGN_SYSTEM.md#grid) - Sistema de layout com Grid responsivo e Stack flexível para organização de conteúdo.
|
|
1058
|
+
- [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.
|
|
922
1059
|
- [Icon Picker](./docs/DESIGN_SYSTEM.md#iconpicker) - Seletor de ícones da biblioteca Lucide React com busca integrada.
|
|
923
|
-
- [Input](./docs/DESIGN_SYSTEM.md#input) -
|
|
924
|
-
- [
|
|
925
|
-
- [
|
|
926
|
-
- [
|
|
927
|
-
- [
|
|
928
|
-
- [
|
|
1060
|
+
- [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.
|
|
1061
|
+
- [Label](./docs/DESIGN_SYSTEM.md#label) - Renderiza uma label acessível associada a controles de formulário.
|
|
1062
|
+
- [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.
|
|
1063
|
+
- [Loading](./docs/DESIGN_SYSTEM.md#skeleton) - Componentes para estados de carregamento: Skeleton (placeholders), Spinner (indicador de loading), e LoadingState (gerenciamento declarativo).
|
|
1064
|
+
- [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.
|
|
1065
|
+
- [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.
|
|
1066
|
+
- [Navigation Menu](./docs/DESIGN_SYSTEM.md#navigationmenu) - Uma coleção de links para navegação em websites.
|
|
929
1067
|
- [Pagination](./docs/DESIGN_SYSTEM.md#pagination) - Barra de paginação completa com seletor de itens por página e controles de navegação.
|
|
1068
|
+
- [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.
|
|
1069
|
+
- [Popover](./docs/DESIGN_SYSTEM.md#popover) - Exibe conteúdo rico em um portal, acionado por um botão.
|
|
930
1070
|
- [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.
|
|
1071
|
+
- [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.
|
|
931
1072
|
- [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.
|
|
932
|
-
- [
|
|
933
|
-
- [Scroll Area](./docs/DESIGN_SYSTEM.md#scrollarea) - Aprimora a funcionalidade de rolagem nativa para estilização personalizada e cross-browser.
|
|
934
|
-
- [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.
|
|
1073
|
+
- [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.
|
|
935
1074
|
- [Select](./docs/DESIGN_SYSTEM.md#select) - Exibe uma lista de opções para o usuário escolher—acionada por um botão.
|
|
936
1075
|
- [Separator](./docs/DESIGN_SYSTEM.md#separator) - Separa visual ou semanticamente o conteúdo.
|
|
937
|
-
- [Sheet](./docs/DESIGN_SYSTEM.md#sheet) - Estende o componente Dialog para exibir conteúdo que complementa o conteúdo principal da tela.
|
|
938
|
-
- [Skeleton](./docs/DESIGN_SYSTEM.md#skeleton) - Componente de placeholder para estados de carregamento. Inclui variantes pré-configuradas para tabelas, cards, formulários e mais.
|
|
939
1076
|
- [Slider](./docs/DESIGN_SYSTEM.md#slider) - Um input onde o usuário seleciona um valor dentro de um intervalo determinado.
|
|
940
|
-
- [
|
|
941
|
-
- [Stack](./docs/DESIGN_SYSTEM.md#stack) - Layout de pilha flexível com controle de direção, espaçamento, alinhamento e justificação.
|
|
1077
|
+
- [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.
|
|
942
1078
|
- [Switch](./docs/DESIGN_SYSTEM.md#switch) - Um controle que permite ao usuário alternar entre marcado e desmarcado.
|
|
943
|
-
- [
|
|
944
|
-
- [
|
|
945
|
-
- [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.
|
|
1079
|
+
- [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.
|
|
1080
|
+
- [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.
|
|
946
1081
|
- [Textarea](./docs/DESIGN_SYSTEM.md#textarea) - Exibe um textarea de formulário ou um componente que se parece com um textarea.
|
|
947
|
-
- [Toast](./docs/DESIGN_SYSTEM.md#toast) - Componente de notificação toast usando Sonner.
|
|
1082
|
+
- [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.
|
|
948
1083
|
- [Toggle](./docs/DESIGN_SYSTEM.md#toggle) - Botões de dois estados que podem estar ligados ou desligados, individualmente ou em grupo.
|
|
1084
|
+
- [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.
|
|
949
1085
|
|
|
950
1086
|
### 🚀 Sistema CRUD
|
|
951
1087
|
|
|
1088
|
+
- [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.
|
|
1089
|
+
- [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.
|
|
1090
|
+
- [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.
|
|
952
1091
|
- [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.
|
|
953
1092
|
- [Wizard Form](./docs/DESIGN_SYSTEM.md#wizardform) - Formulário multi-etapas com validação, navegação entre seções e indicadores de progresso.
|
|
954
1093
|
|
package/dist/README.md
CHANGED
|
@@ -836,6 +836,140 @@ Se você não fornecer um `queryClient`, o `CoreProviders` cria um com as seguin
|
|
|
836
836
|
|
|
837
837
|
---
|
|
838
838
|
|
|
839
|
+
## 🎯 Ações Principais de Módulo (SidebarActionTrigger)
|
|
840
|
+
|
|
841
|
+
O `SidebarActionTrigger` permite adicionar ações principais de módulo no sidebar, diferenciadas visualmente da navegação. São gatilhos de ação, não destinos de navegação.
|
|
842
|
+
|
|
843
|
+
### Conceito
|
|
844
|
+
|
|
845
|
+
| Característica | Descrição |
|
|
846
|
+
|----------------|-----------|
|
|
847
|
+
| **Ação de módulo** | Válida apenas dentro do contexto do módulo ao qual pertence |
|
|
848
|
+
| **Não global** | Não aplicável a todo o sistema |
|
|
849
|
+
| **Não contextual** | Não depende de seleção de item específico |
|
|
850
|
+
| **Destaque visual** | Exibida com aparência diferenciada da navegação |
|
|
851
|
+
|
|
852
|
+
### Uso Básico
|
|
853
|
+
|
|
854
|
+
```tsx
|
|
855
|
+
import { AppSidebar, SidebarConfig } from 'forlogic-core';
|
|
856
|
+
import { Plus, FileText, Folder } from 'lucide-react';
|
|
857
|
+
|
|
858
|
+
const sidebarConfig: SidebarConfig = {
|
|
859
|
+
appName: 'Meu Módulo',
|
|
860
|
+
|
|
861
|
+
// Ações principais do módulo
|
|
862
|
+
moduleActions: {
|
|
863
|
+
triggerLabel: 'Criar',
|
|
864
|
+
triggerIcon: Plus,
|
|
865
|
+
actions: [
|
|
866
|
+
{
|
|
867
|
+
id: 'create-item',
|
|
868
|
+
label: 'Novo Item',
|
|
869
|
+
icon: FileText,
|
|
870
|
+
onClick: () => openCreateDialog()
|
|
871
|
+
},
|
|
872
|
+
{
|
|
873
|
+
id: 'create-folder',
|
|
874
|
+
label: 'Nova Pasta',
|
|
875
|
+
icon: Folder,
|
|
876
|
+
onClick: () => openFolderDialog()
|
|
877
|
+
},
|
|
878
|
+
]
|
|
879
|
+
},
|
|
880
|
+
|
|
881
|
+
// Navegação
|
|
882
|
+
navigation: [
|
|
883
|
+
{ label: 'Visão Geral', path: '/', icon: Home },
|
|
884
|
+
{ label: 'Configurações', path: '/settings', icon: Settings },
|
|
885
|
+
]
|
|
886
|
+
};
|
|
887
|
+
|
|
888
|
+
<AppSidebar config={sidebarConfig} />
|
|
889
|
+
```
|
|
890
|
+
|
|
891
|
+
### Comportamento
|
|
892
|
+
|
|
893
|
+
| Cenário | Comportamento |
|
|
894
|
+
|---------|---------------|
|
|
895
|
+
| **Uma ação** | Clique executa a ação diretamente |
|
|
896
|
+
| **Múltiplas ações** | Clique exibe dropdown com opções |
|
|
897
|
+
| **Modal aberto** | Gatilho fica desabilitado |
|
|
898
|
+
| **Sidebar colapsada** | Exibe apenas ícone com tooltip |
|
|
899
|
+
|
|
900
|
+
### Props do SidebarActionTrigger
|
|
901
|
+
|
|
902
|
+
| Prop | Tipo | Obrigatório | Descrição |
|
|
903
|
+
|------|------|-------------|-----------|
|
|
904
|
+
| `config` | `SidebarActionsConfig` | ✅ | Configuração das ações |
|
|
905
|
+
| `isCollapsed` | `boolean` | ❌ | Se a sidebar está colapsada |
|
|
906
|
+
| `isDisabled` | `boolean` | ❌ | Desabilita o gatilho |
|
|
907
|
+
|
|
908
|
+
### Interface SidebarModuleAction
|
|
909
|
+
|
|
910
|
+
```typescript
|
|
911
|
+
interface SidebarModuleAction {
|
|
912
|
+
id: string; // Identificador único
|
|
913
|
+
label: string; // Texto do botão/opção
|
|
914
|
+
icon?: LucideIcon; // Ícone opcional
|
|
915
|
+
onClick: () => void; // Callback de execução
|
|
916
|
+
disabled?: boolean; // Estado desabilitado
|
|
917
|
+
permissionCheck?: () => Promise<boolean>;
|
|
918
|
+
}
|
|
919
|
+
```
|
|
920
|
+
|
|
921
|
+
### Interface SidebarActionsConfig
|
|
922
|
+
|
|
923
|
+
```typescript
|
|
924
|
+
interface SidebarActionsConfig {
|
|
925
|
+
triggerLabel?: string; // Rótulo do gatilho (padrão: 'Criar')
|
|
926
|
+
triggerIcon?: LucideIcon; // Ícone do gatilho (padrão: Plus)
|
|
927
|
+
actions: SidebarModuleAction[];
|
|
928
|
+
}
|
|
929
|
+
```
|
|
930
|
+
|
|
931
|
+
### Gerenciamento de Modais (Opcional)
|
|
932
|
+
|
|
933
|
+
Para desabilitar o gatilho quando há modais abertos, use o `ModalStateProvider`:
|
|
934
|
+
|
|
935
|
+
```tsx
|
|
936
|
+
import { CoreProviders, ModalStateProvider, useModalState } from 'forlogic-core';
|
|
937
|
+
|
|
938
|
+
// No App.tsx (opcional - CoreProviders não inclui por padrão)
|
|
939
|
+
<CoreProviders>
|
|
940
|
+
<ModalStateProvider>
|
|
941
|
+
<AppLayout />
|
|
942
|
+
</ModalStateProvider>
|
|
943
|
+
</CoreProviders>
|
|
944
|
+
|
|
945
|
+
// Em componentes com modal
|
|
946
|
+
function MeuDialog({ open, onOpenChange }) {
|
|
947
|
+
const { registerModal, unregisterModal } = useModalState();
|
|
948
|
+
|
|
949
|
+
useEffect(() => {
|
|
950
|
+
if (open) {
|
|
951
|
+
registerModal('meu-dialog');
|
|
952
|
+
} else {
|
|
953
|
+
unregisterModal('meu-dialog');
|
|
954
|
+
}
|
|
955
|
+
}, [open]);
|
|
956
|
+
|
|
957
|
+
return <Dialog open={open} onOpenChange={onOpenChange}>...</Dialog>;
|
|
958
|
+
}
|
|
959
|
+
```
|
|
960
|
+
|
|
961
|
+
### Diretriz para Uso via Prompt
|
|
962
|
+
|
|
963
|
+
#### ✅ Prompts corretos:
|
|
964
|
+
- "Adicione uma ação principal 'Criar Processo' no sidebar do módulo"
|
|
965
|
+
- "Configure o módulo para ter duas ações principais: 'Novo Item' e 'Nova Pasta'"
|
|
966
|
+
- "Adicione o botão de criar no topo do sidebar como ação de módulo"
|
|
967
|
+
|
|
968
|
+
#### ❌ Prompts ambíguos (evitar):
|
|
969
|
+
- "Coloque um botão de criar no menu" (ambíguo - qual menu?)
|
|
970
|
+
- "Adicione navegação para criar" (ação ≠ navegação)
|
|
971
|
+
- "Crie um link para nova entidade" (link = navegação, não ação)
|
|
972
|
+
|
|
839
973
|
## 🛠️ CLI: Sincronização de Documentação
|
|
840
974
|
|
|
841
975
|
O `forlogic-core` disponibiliza um comando CLI para sincronizar a documentação centralizada do banco de dados para projetos consumidores.
|
|
@@ -878,82 +1012,87 @@ O comando usa credenciais públicas do Supabase do forlogic-core e não requer c
|
|
|
878
1012
|
|
|
879
1013
|
---
|
|
880
1014
|
|
|
881
|
-
<!-- AUTO_GENERATED_START -->
|
|
882
|
-
|
|
883
|
-
### 📚 Estatísticas da Documentação
|
|
884
|
-
|
|
885
|
-
**
|
|
886
|
-
|
|
887
|
-
---
|
|
888
|
-
|
|
889
|
-
### 🎨 Fundamentos (Tokens)
|
|
890
|
-
|
|
891
|
-
- [Colors Foundation](./docs/DESIGN_SYSTEM.md#colorsfoundation) - Sistema de cores completo com escalas neutras, de marca e funcionais.
|
|
892
|
-
- [
|
|
893
|
-
-
|
|
894
|
-
- [
|
|
895
|
-
- [
|
|
896
|
-
- [
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
- [
|
|
902
|
-
- [
|
|
903
|
-
- [
|
|
904
|
-
- [
|
|
905
|
-
- [
|
|
906
|
-
- [
|
|
907
|
-
- [
|
|
908
|
-
- [
|
|
909
|
-
- [
|
|
910
|
-
- [
|
|
911
|
-
- [
|
|
912
|
-
- [
|
|
913
|
-
- [
|
|
914
|
-
- [
|
|
915
|
-
- [
|
|
916
|
-
- [
|
|
917
|
-
- [
|
|
918
|
-
- [
|
|
919
|
-
- [
|
|
920
|
-
- [
|
|
921
|
-
- [
|
|
922
|
-
- [
|
|
923
|
-
- [
|
|
924
|
-
- [
|
|
925
|
-
- [
|
|
926
|
-
- [
|
|
927
|
-
- [
|
|
928
|
-
- [
|
|
929
|
-
- [
|
|
930
|
-
- [
|
|
931
|
-
- [
|
|
932
|
-
- [
|
|
933
|
-
- [
|
|
934
|
-
- [
|
|
935
|
-
- [
|
|
936
|
-
- [
|
|
937
|
-
- [
|
|
938
|
-
- [
|
|
939
|
-
- [
|
|
940
|
-
- [
|
|
941
|
-
- [
|
|
942
|
-
- [
|
|
943
|
-
- [
|
|
944
|
-
- [
|
|
945
|
-
- [
|
|
946
|
-
- [
|
|
947
|
-
- [
|
|
948
|
-
- [
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
1015
|
+
<!-- AUTO_GENERATED_START -->
|
|
1016
|
+
|
|
1017
|
+
### 📚 Estatísticas da Documentação
|
|
1018
|
+
|
|
1019
|
+
**50 Componentes UI** | **6 Tokens** | **5 Ferramentas CRUD**
|
|
1020
|
+
|
|
1021
|
+
---
|
|
1022
|
+
|
|
1023
|
+
### 🎨 Fundamentos (Tokens)
|
|
1024
|
+
|
|
1025
|
+
- [Colors Foundation](./docs/DESIGN_SYSTEM.md#colorsfoundation) - Sistema de cores completo com escalas neutras, de marca e funcionais.
|
|
1026
|
+
- [Ícones](./docs/DESIGN_SYSTEM.md#iconsfoundation) - Biblioteca completa de ícones usando Lucide React - uma biblioteca de ícones
|
|
1027
|
+
open-source com mais de 1400 ícones em SVG.
|
|
1028
|
+
- [Radius](./docs/DESIGN_SYSTEM.md#radius) - Sistema de arredondamento de bordas para consistência visual.
|
|
1029
|
+
- [Shadows](./docs/DESIGN_SYSTEM.md#shadows) - Sistema de sombras e elevação para criar profundidade e hierarquia.
|
|
1030
|
+
- [Spacing](./docs/DESIGN_SYSTEM.md#spacing) - Escala de espaçamento consistente baseada em uma unidade base de 4px.
|
|
1031
|
+
- [Typography Foundation](./docs/DESIGN_SYSTEM.md#typographyfoundation) - Sistema tipográfico completo com Display, Headings, Body e mais.
|
|
1032
|
+
|
|
1033
|
+
### 🧩 Componentes UI
|
|
1034
|
+
|
|
1035
|
+
- [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.
|
|
1036
|
+
- [Action Button](./docs/DESIGN_SYSTEM.md#actionbutton) - Botão compacto otimizado para ações em linhas de tabela e menus dropdown.
|
|
1037
|
+
- [Alert](./docs/DESIGN_SYSTEM.md#alert) - Exibe uma mensagem de destaque para chamar a atenção do usuário.
|
|
1038
|
+
- [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).
|
|
1039
|
+
- [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.
|
|
1040
|
+
- [Avatar](./docs/DESIGN_SYSTEM.md#avatar) - Um elemento de imagem com fallback para representar o usuário.
|
|
1041
|
+
- [Badge](./docs/DESIGN_SYSTEM.md#badge) - Exibe um badge ou um componente que se parece com um badge.
|
|
1042
|
+
- [Breadcrumb](./docs/DESIGN_SYSTEM.md#breadcrumb) - Exibe o caminho até o recurso atual usando uma hierarquia de links.
|
|
1043
|
+
- [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.
|
|
1044
|
+
- [Button Group](./docs/DESIGN_SYSTEM.md#buttongroup) - Agrupa botões relacionados com espaçamento e bordas apropriados.
|
|
1045
|
+
- [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.
|
|
1046
|
+
- [Card](./docs/DESIGN_SYSTEM.md#card) - Exibe um card com cabeçalho, conteúdo e rodapé.
|
|
1047
|
+
- [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.
|
|
1048
|
+
- [Checkbox](./docs/DESIGN_SYSTEM.md#checkbox) - Um controle que permite ao usuário alternar entre marcado e desmarcado.
|
|
1049
|
+
- [Color Picker](./docs/DESIGN_SYSTEM.md#colorpicker) - Seletor de cores com paleta predefinida e seletor customizado.
|
|
1050
|
+
- [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.
|
|
1051
|
+
- [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.
|
|
1052
|
+
- [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.
|
|
1053
|
+
- [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.
|
|
1054
|
+
- [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.
|
|
1055
|
+
- [Empty State](./docs/DESIGN_SYSTEM.md#emptystate) - Componente para exibir estados vazios com ícone, mensagem e ação opcional.
|
|
1056
|
+
- [Form](./docs/DESIGN_SYSTEM.md#form) - Construindo formulários com React Hook Form e Zod.
|
|
1057
|
+
- [Grid & Stack](./docs/DESIGN_SYSTEM.md#grid) - Sistema de layout com Grid responsivo e Stack flexível para organização de conteúdo.
|
|
1058
|
+
- [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.
|
|
1059
|
+
- [Icon Picker](./docs/DESIGN_SYSTEM.md#iconpicker) - Seletor de ícones da biblioteca Lucide React com busca integrada.
|
|
1060
|
+
- [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.
|
|
1061
|
+
- [Label](./docs/DESIGN_SYSTEM.md#label) - Renderiza uma label acessível associada a controles de formulário.
|
|
1062
|
+
- [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.
|
|
1063
|
+
- [Loading](./docs/DESIGN_SYSTEM.md#skeleton) - Componentes para estados de carregamento: Skeleton (placeholders), Spinner (indicador de loading), e LoadingState (gerenciamento declarativo).
|
|
1064
|
+
- [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.
|
|
1065
|
+
- [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.
|
|
1066
|
+
- [Navigation Menu](./docs/DESIGN_SYSTEM.md#navigationmenu) - Uma coleção de links para navegação em websites.
|
|
1067
|
+
- [Pagination](./docs/DESIGN_SYSTEM.md#pagination) - Barra de paginação completa com seletor de itens por página e controles de navegação.
|
|
1068
|
+
- [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.
|
|
1069
|
+
- [Popover](./docs/DESIGN_SYSTEM.md#popover) - Exibe conteúdo rico em um portal, acionado por um botão.
|
|
1070
|
+
- [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.
|
|
1071
|
+
- [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.
|
|
1072
|
+
- [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.
|
|
1073
|
+
- [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.
|
|
1074
|
+
- [Select](./docs/DESIGN_SYSTEM.md#select) - Exibe uma lista de opções para o usuário escolher—acionada por um botão.
|
|
1075
|
+
- [Separator](./docs/DESIGN_SYSTEM.md#separator) - Separa visual ou semanticamente o conteúdo.
|
|
1076
|
+
- [Slider](./docs/DESIGN_SYSTEM.md#slider) - Um input onde o usuário seleciona um valor dentro de um intervalo determinado.
|
|
1077
|
+
- [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.
|
|
1078
|
+
- [Switch](./docs/DESIGN_SYSTEM.md#switch) - Um controle que permite ao usuário alternar entre marcado e desmarcado.
|
|
1079
|
+
- [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.
|
|
1080
|
+
- [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.
|
|
1081
|
+
- [Textarea](./docs/DESIGN_SYSTEM.md#textarea) - Exibe um textarea de formulário ou um componente que se parece com um textarea.
|
|
1082
|
+
- [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.
|
|
1083
|
+
- [Toggle](./docs/DESIGN_SYSTEM.md#toggle) - Botões de dois estados que podem estar ligados ou desligados, individualmente ou em grupo.
|
|
1084
|
+
- [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.
|
|
1085
|
+
|
|
1086
|
+
### 🚀 Sistema CRUD
|
|
1087
|
+
|
|
1088
|
+
- [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.
|
|
1089
|
+
- [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.
|
|
1090
|
+
- [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.
|
|
1091
|
+
- [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.
|
|
1092
|
+
- [Wizard Form](./docs/DESIGN_SYSTEM.md#wizardform) - Formulário multi-etapas com validação, navegação entre seções e indicadores de progresso.
|
|
1093
|
+
|
|
1094
|
+
---
|
|
1095
|
+
|
|
1096
|
+
> 📘 **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).
|
|
1097
|
+
|
|
959
1098
|
<!-- AUTO_GENERATED_END -->
|