forlogic-core 1.11.6 → 1.12.0

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
@@ -27,6 +27,12 @@ npm install forlogic-core
27
27
 
28
28
  **Nota**: O npm/yarn irá alertar automaticamente se alguma peer dependency estiver faltando ou com versão incompatível.
29
29
 
30
+ ### Baixar documentação atualizada
31
+
32
+ ```bash
33
+ npx forlogic-core-pull-docs
34
+ ```
35
+
30
36
  ### ⚠️ IMPORTANTE: Imports de i18n
31
37
 
32
38
  **Sempre** importe hooks de internacionalização do `forlogic-core`, nunca diretamente de `react-i18next`:
@@ -830,6 +836,140 @@ Se você não fornecer um `queryClient`, o `CoreProviders` cria um com as seguin
830
836
 
831
837
  ---
832
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
+
833
973
  ## 🛠️ CLI: Sincronização de Documentação
834
974
 
835
975
  O `forlogic-core` disponibiliza um comando CLI para sincronizar a documentação centralizada do banco de dados para projetos consumidores.
@@ -876,7 +1016,7 @@ O comando usa credenciais públicas do Supabase do forlogic-core e não requer c
876
1016
 
877
1017
  ### 📚 Estatísticas da Documentação
878
1018
 
879
- **49 Componentes UI** | **6 Tokens** | **2 Ferramentas CRUD**
1019
+ **47 Componentes UI** | **6 Tokens** | **6 Ferramentas CRUD**
880
1020
 
881
1021
  ---
882
1022
 
@@ -916,10 +1056,8 @@ O comando usa credenciais públicas do Supabase do forlogic-core e não requer c
916
1056
  - [Icon Picker](./docs/DESIGN_SYSTEM.md#iconpicker) - Seletor de ícones da biblioteca Lucide React com busca integrada.
917
1057
  - [Input](./docs/DESIGN_SYSTEM.md#input) - Exibe um campo de entrada de texto.
918
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.
919
- - [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.
920
1059
  - [Label](./docs/DESIGN_SYSTEM.md#label) - Renderiza uma label acessível associada a controles.
921
1060
  - [Loading State](./docs/DESIGN_SYSTEM.md#loadingstate) - Componente para gerenciar estados de loading de forma declarativa com dois tipos: spinner e overlay.
922
- - [Native Select](./docs/DESIGN_SYSTEM.md#nativeselect) - Elemento select nativo do HTML com estilização.
923
1061
  - [Pagination](./docs/DESIGN_SYSTEM.md#pagination) - Barra de paginação completa com seletor de itens por página e controles de navegação.
924
1062
  - [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.
925
1063
  - [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.
@@ -938,11 +1076,15 @@ O comando usa credenciais públicas do Supabase do forlogic-core e não requer c
938
1076
  - [Table](./docs/DESIGN_SYSTEM.md#table) - Uma tabela semântica para exibir dados tabulares.
939
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.
940
1078
  - [Textarea](./docs/DESIGN_SYSTEM.md#textarea) - Exibe um textarea de formulário ou um componente que se parece com um textarea.
941
- - [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.
1079
+ - [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.
942
1080
  - [Toggle](./docs/DESIGN_SYSTEM.md#toggle) - Botões de dois estados que podem estar ligados ou desligados, individualmente ou em grupo.
943
1081
 
944
1082
  ### 🚀 Sistema CRUD
945
1083
 
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
+ - [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
+ - [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.
946
1088
  - [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.
947
1089
  - [Wizard Form](./docs/DESIGN_SYSTEM.md#wizardform) - Formulário multi-etapas com validação, navegação entre seções e indicadores de progresso.
948
1090
 
package/dist/README.md CHANGED
@@ -27,6 +27,12 @@ npm install forlogic-core
27
27
 
28
28
  **Nota**: O npm/yarn irá alertar automaticamente se alguma peer dependency estiver faltando ou com versão incompatível.
29
29
 
30
+ ### Baixar documentação atualizada
31
+
32
+ ```bash
33
+ npx forlogic-core-pull-docs
34
+ ```
35
+
30
36
  ### ⚠️ IMPORTANTE: Imports de i18n
31
37
 
32
38
  **Sempre** importe hooks de internacionalização do `forlogic-core`, nunca diretamente de `react-i18next`:
@@ -830,6 +836,140 @@ Se você não fornecer um `queryClient`, o `CoreProviders` cria um com as seguin
830
836
 
831
837
  ---
832
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
+
833
973
  ## 🛠️ CLI: Sincronização de Documentação
834
974
 
835
975
  O `forlogic-core` disponibiliza um comando CLI para sincronizar a documentação centralizada do banco de dados para projetos consumidores.
@@ -872,82 +1012,82 @@ O comando usa credenciais públicas do Supabase do forlogic-core e não requer c
872
1012
 
873
1013
  ---
874
1014
 
875
- <!-- AUTO_GENERATED_START -->
876
-
877
- ### 📚 Estatísticas da Documentação
878
-
879
- **49 Componentes UI** | **6 Tokens** | **2 Ferramentas CRUD**
880
-
881
- ---
882
-
883
- ### 🎨 Fundamentos (Tokens)
884
-
885
- - [Colors Foundation](./docs/DESIGN_SYSTEM.md#colorsfoundation) - Sistema de cores completo com escalas neutras, de marca e funcionais.
886
- - [Radius](./docs/DESIGN_SYSTEM.md#radius) - Sistema de arredondamento de bordas para consistência visual.
887
- - [Shadows](./docs/DESIGN_SYSTEM.md#shadows) - Sistema de sombras e elevação para criar profundidade e hierarquia.
888
- - [Spacing](./docs/DESIGN_SYSTEM.md#spacing) - Escala de espaçamento consistente baseada em uma unidade base de 4px.
889
- - [Typography](./docs/DESIGN_SYSTEM.md#typographycomponent) - Componentes de tipografia para estilos de texto consistentes em toda a sua aplicação.
890
- - [Typography Foundation](./docs/DESIGN_SYSTEM.md#typographyfoundation) - Sistema tipográfico completo com Display, Headings, Body e mais.
891
-
892
- ### 🧩 Componentes UI
893
-
894
- - [Accordion](./docs/DESIGN_SYSTEM.md#accordion) - Um conjunto de cabeçalhos interativos empilhados verticalmente, onde cada um revela uma seção de conteúdo.
895
- - [Action Button](./docs/DESIGN_SYSTEM.md#actionbutton) - Botão compacto otimizado para ações em linhas de tabela e menus dropdown.
896
- - [Alert](./docs/DESIGN_SYSTEM.md#alert) - Exibe uma mensagem de destaque para chamar a atenção do usuário.
897
- - [Aspect Ratio](./docs/DESIGN_SYSTEM.md#aspectratio) - Exibe conteúdo dentro de uma proporção desejada.
898
- - [Avatar](./docs/DESIGN_SYSTEM.md#avatar) - Um elemento de imagem com fallback para representar o usuário.
899
- - [Badge](./docs/DESIGN_SYSTEM.md#badge) - Exibe um badge ou um componente que se parece com um badge.
900
- - [Breadcrumb](./docs/DESIGN_SYSTEM.md#breadcrumb) - Exibe o caminho até o recurso atual usando uma hierarquia de links.
901
- - [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.
902
- - [Button Group](./docs/DESIGN_SYSTEM.md#buttongroup) - Agrupa botões relacionados com espaçamento e bordas apropriados.
903
- - [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.
904
- - [Card](./docs/DESIGN_SYSTEM.md#card) - Exibe um card com cabeçalho, conteúdo e rodapé.
905
- - [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.
906
- - [Checkbox](./docs/DESIGN_SYSTEM.md#checkbox) - Um controle que permite ao usuário alternar entre marcado e desmarcado.
907
- - [Collapsible](./docs/DESIGN_SYSTEM.md#collapsible) - Um componente interativo que expande/colapsa um painel.
908
- - [Color Picker](./docs/DESIGN_SYSTEM.md#colorpicker) - Seletor de cores com paleta predefinida e seletor customizado.
909
- - [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.
910
- - [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.
911
- - [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.
912
- - [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.
913
- - [Empty State](./docs/DESIGN_SYSTEM.md#emptystate) - Componente para exibir estados vazios com ícone, mensagem e ação opcional.
914
- - [Form](./docs/DESIGN_SYSTEM.md#form) - Construindo formulários com React Hook Form e Zod.
915
- - [Grid](./docs/DESIGN_SYSTEM.md#grid) - Sistema de grid responsivo com configuração simplificada de colunas e espaçamento.
916
- - [Icon Picker](./docs/DESIGN_SYSTEM.md#iconpicker) - Seletor de ícones da biblioteca Lucide React com busca integrada.
917
- - [Input](./docs/DESIGN_SYSTEM.md#input) - Exibe um campo de entrada de texto.
918
- - [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.
919
- - [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.
920
- - [Label](./docs/DESIGN_SYSTEM.md#label) - Renderiza uma label acessível associada a controles.
921
- - [Loading State](./docs/DESIGN_SYSTEM.md#loadingstate) - Componente para gerenciar estados de loading de forma declarativa com dois tipos: spinner e overlay.
922
- - [Native Select](./docs/DESIGN_SYSTEM.md#nativeselect) - Elemento select nativo do HTML com estilização.
923
- - [Pagination](./docs/DESIGN_SYSTEM.md#pagination) - Barra de paginação completa com seletor de itens por página e controles de navegação.
924
- - [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.
925
- - [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.
926
- - [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.
927
- - [Scroll Area](./docs/DESIGN_SYSTEM.md#scrollarea) - Aprimora a funcionalidade de rolagem nativa para estilização personalizada e cross-browser.
928
- - [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.
929
- - [Select](./docs/DESIGN_SYSTEM.md#select) - Exibe uma lista de opções para o usuário escolher—acionada por um botão.
930
- - [Separator](./docs/DESIGN_SYSTEM.md#separator) - Separa visual ou semanticamente o conteúdo.
931
- - [Sheet](./docs/DESIGN_SYSTEM.md#sheet) - Estende o componente Dialog para exibir conteúdo que complementa o conteúdo principal da tela.
932
- - [Skeleton](./docs/DESIGN_SYSTEM.md#skeleton) - Componente de placeholder para estados de carregamento. Inclui variantes pré-configuradas para tabelas, cards, formulários e mais.
933
- - [Slider](./docs/DESIGN_SYSTEM.md#slider) - Um input onde o usuário seleciona um valor dentro de um intervalo determinado.
934
- - [Spinner](./docs/DESIGN_SYSTEM.md#spinner) - Um componente de spinner de carregamento para indicar estado de carregamento.
935
- - [Stack](./docs/DESIGN_SYSTEM.md#stack) - Layout de pilha flexível com controle de direção, espaçamento, alinhamento e justificação.
936
- - [Switch](./docs/DESIGN_SYSTEM.md#switch) - Um controle que permite ao usuário alternar entre marcado e desmarcado.
937
- - [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.
938
- - [Table](./docs/DESIGN_SYSTEM.md#table) - Uma tabela semântica para exibir dados tabulares.
939
- - [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.
940
- - [Textarea](./docs/DESIGN_SYSTEM.md#textarea) - Exibe um textarea de formulário ou um componente que se parece com um textarea.
941
- - [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.
942
- - [Toggle](./docs/DESIGN_SYSTEM.md#toggle) - Botões de dois estados que podem estar ligados ou desligados, individualmente ou em grupo.
943
-
944
- ### 🚀 Sistema CRUD
945
-
946
- - [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.
947
- - [Wizard Form](./docs/DESIGN_SYSTEM.md#wizardform) - Formulário multi-etapas com validação, navegação entre seções e indicadores de progresso.
948
-
949
- ---
950
-
951
- > 📘 **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).
952
-
1015
+ <!-- AUTO_GENERATED_START -->
1016
+
1017
+ ### 📚 Estatísticas da Documentação
1018
+
1019
+ **49 Componentes UI** | **6 Tokens** | **2 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
+ - [Radius](./docs/DESIGN_SYSTEM.md#radius) - Sistema de arredondamento de bordas para consistência visual.
1027
+ - [Shadows](./docs/DESIGN_SYSTEM.md#shadows) - Sistema de sombras e elevação para criar profundidade e hierarquia.
1028
+ - [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
+ - [Typography Foundation](./docs/DESIGN_SYSTEM.md#typographyfoundation) - Sistema tipográfico completo com Display, Headings, Body e mais.
1031
+
1032
+ ### 🧩 Componentes UI
1033
+
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.
1035
+ - [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.
1038
+ - [Avatar](./docs/DESIGN_SYSTEM.md#avatar) - Um elemento de imagem com fallback para representar o usuário.
1039
+ - [Badge](./docs/DESIGN_SYSTEM.md#badge) - Exibe um badge ou um componente que se parece com um badge.
1040
+ - [Breadcrumb](./docs/DESIGN_SYSTEM.md#breadcrumb) - Exibe o caminho até o recurso atual usando uma hierarquia de links.
1041
+ - [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.
1042
+ - [Button Group](./docs/DESIGN_SYSTEM.md#buttongroup) - Agrupa botões relacionados com espaçamento e bordas apropriados.
1043
+ - [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
+ - [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.
1046
+ - [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
+ - [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.
1050
+ - [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.
1051
+ - [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
+ - [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
+ - [Empty State](./docs/DESIGN_SYSTEM.md#emptystate) - Componente para exibir estados vazios com ícone, mensagem e ação opcional.
1054
+ - [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.
1056
+ - [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.
1063
+ - [Pagination](./docs/DESIGN_SYSTEM.md#pagination) - Barra de paginação completa com seletor de itens por página e controles de navegação.
1064
+ - [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.
1065
+ - [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.
1069
+ - [Select](./docs/DESIGN_SYSTEM.md#select) - Exibe uma lista de opções para o usuário escolher—acionada por um botão.
1070
+ - [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
+ - [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.
1076
+ - [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.
1080
+ - [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.
1082
+ - [Toggle](./docs/DESIGN_SYSTEM.md#toggle) - Botões de dois estados que podem estar ligados ou desligados, individualmente ou em grupo.
1083
+
1084
+ ### 🚀 Sistema CRUD
1085
+
1086
+ - [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
+ - [Wizard Form](./docs/DESIGN_SYSTEM.md#wizardform) - Formulário multi-etapas com validação, navegação entre seções e indicadores de progresso.
1088
+
1089
+ ---
1090
+
1091
+ > 📘 **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).
1092
+
953
1093
  <!-- AUTO_GENERATED_END -->
@@ -1,22 +1,45 @@
1
1
  #!/usr/bin/env node
2
- #!/usr/bin/env node
3
2
  import * as fs from 'fs';
4
3
  import * as path from 'path';
5
4
  import { createClient } from '@supabase/supabase-js';
6
5
 
7
- const FORLOGIC_CORE_SUPABASE_URL = "https://ccjfvpnndclajkleyqkc.supabase.co";
8
- const FORLOGIC_CORE_ANON_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImNjamZ2cG5uZGNsYWprbGV5cWtjIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTA5NTQ1OTksImV4cCI6MjA2NjUzMDU5OX0.j7ASp7OYaR5oXfnVmK77VGNH-5hDa9JpzbAYJBUpfa8";
9
- const supabase = createClient(
10
- FORLOGIC_CORE_SUPABASE_URL,
11
- FORLOGIC_CORE_ANON_KEY
12
- );
6
+ function loadEnvFile() {
7
+ const envPath = path.join(process.cwd(), ".env");
8
+ if (fs.existsSync(envPath)) {
9
+ const envContent = fs.readFileSync(envPath, "utf-8");
10
+ envContent.split("\n").forEach((line) => {
11
+ const trimmed = line.trim();
12
+ if (trimmed && !trimmed.startsWith("#")) {
13
+ const [key, ...valueParts] = trimmed.split("=");
14
+ const value = valueParts.join("=").replace(/^["']|["']$/g, "");
15
+ if (key && value && !process.env[key]) {
16
+ process.env[key] = value;
17
+ }
18
+ }
19
+ });
20
+ }
21
+ }
22
+ loadEnvFile();
23
+ const SUPABASE_URL = process.env.VITE_SUPABASE_URL;
24
+ const SUPABASE_ANON_KEY = process.env.VITE_SUPABASE_PUBLISHABLE_KEY;
25
+ if (!SUPABASE_URL || !SUPABASE_ANON_KEY) {
26
+ console.error("\u274C Erro: Vari\xE1veis de ambiente n\xE3o configuradas.\n");
27
+ console.error("Configure no arquivo .env do seu projeto:");
28
+ console.error(" VITE_SUPABASE_URL=https://seu-projeto.supabase.co");
29
+ console.error(" VITE_SUPABASE_PUBLISHABLE_KEY=sua-chave-anon\n");
30
+ console.error("Ou defina como vari\xE1veis de ambiente do sistema.");
31
+ process.exit(1);
32
+ }
33
+ const supabase = createClient(SUPABASE_URL, SUPABASE_ANON_KEY);
13
34
  const DOCS_TO_SYNC = [
14
- { type: "readme", outputFile: "docs/FORLOGIC_CORE_README.md" },
35
+ { type: "readme", outputFile: "README.md" },
15
36
  { type: "design_system", outputFile: "docs/DESIGN_SYSTEM.md" },
16
37
  { type: "knowledge", outputFile: "docs/KNOWLEDGE.md" }
17
38
  ];
18
39
  async function pullDocs() {
19
40
  console.log("\u{1F4E5} Puxando documenta\xE7\xE3o do forlogic-core...\n");
41
+ console.log(`\u{1F4E1} Conectando a: ${SUPABASE_URL}
42
+ `);
20
43
  let successCount = 0;
21
44
  let errorCount = 0;
22
45
  for (const doc of DOCS_TO_SYNC) {