forlogic-core 1.14.8 → 1.15.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 +9 -33
- package/dist/README.md +7 -30
- package/dist/assets/{index-BgJLUH54.js → index-YMQXWoDk.js} +1 -1
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.html +1 -1
- package/dist/index.js +1 -1
- package/dist/vite/index.esm.js +10 -3
- package/dist/vite/index.js +10 -3
- package/package.json +4 -1
- package/dist/bin/validate-lib-first.js +0 -238
package/README.md
CHANGED
|
@@ -30,7 +30,7 @@ npm install forlogic-core
|
|
|
30
30
|
### Baixar documentação atualizada
|
|
31
31
|
|
|
32
32
|
```bash
|
|
33
|
-
npx
|
|
33
|
+
npx lib-update
|
|
34
34
|
```
|
|
35
35
|
|
|
36
36
|
### ⚠️ IMPORTANTE: Imports de i18n
|
|
@@ -114,33 +114,7 @@ src/components/SplitButton.tsx // Existe na lib (a partir de v1.12.2)
|
|
|
114
114
|
| `/design_system` | Design System com todos os componentes documentados |
|
|
115
115
|
| `forlogic-core/lib/exports/ui.ts` | Lista de exports de UI |
|
|
116
116
|
| `forlogic-core/lib/index.ts` | Index principal com todos os exports |
|
|
117
|
-
| `npx
|
|
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
|
-
```
|
|
117
|
+
| `npx lib-update` | Baixa documentação atualizada |
|
|
144
118
|
|
|
145
119
|
### ⚠️ Exceções (quando PODE criar localmente)
|
|
146
120
|
|
|
@@ -1120,7 +1094,7 @@ O comando usa credenciais públicas do Supabase do forlogic-core e não requer c
|
|
|
1120
1094
|
|
|
1121
1095
|
### 📚 Estatísticas da Documentação
|
|
1122
1096
|
|
|
1123
|
-
**
|
|
1097
|
+
**58 Componentes UI** | **6 Tokens** | **9 Ferramentas CRUD** | **8 Core/Utilitários**
|
|
1124
1098
|
|
|
1125
1099
|
---
|
|
1126
1100
|
|
|
@@ -1146,11 +1120,11 @@ O comando usa credenciais públicas do Supabase do forlogic-core e não requer c
|
|
|
1146
1120
|
- [Alert](./docs/DESIGN_SYSTEM.md#alert) - Exibe uma mensagem de destaque para chamar a atenção do usuário. O componente inclui ícone automático baseado na variante.
|
|
1147
1121
|
- [AppHeader](./docs/DESIGN_SYSTEM.md#appheader) - Header principal da aplicação com título dinâmico, busca global integrada ao CRUD, ações customizáveis e informações do usuário. Altura fixa de 56px (h-14).
|
|
1148
1122
|
- [AppSidebar](./docs/DESIGN_SYSTEM.md#appsidebar) - Sidebar de navegação principal da aplicação com suporte a menu colapsável, permissões, redimensionamento e navegação hierárquica.
|
|
1123
|
+
- [Assinatura Digital (Sign)](./docs/DESIGN_SYSTEM.md#sign) - Componente único multi-provider de assinatura digital com fluxo em 3 fases: Upload → Assinatura → Download. Suporta Clicksign (widget JavaScript embedded v2.1.0, API v3) e D4Sign (iframe embedded, API v1). O provedor é resolvido automaticamente pela configuração da unidade na tabela sign_configs.
|
|
1149
1124
|
- [Avatar](./docs/DESIGN_SYSTEM.md#avatar) - Um elemento de imagem com fallback para representar o usuário.
|
|
1150
1125
|
- [Badge](./docs/DESIGN_SYSTEM.md#badge) - Exibe um badge ou um componente que se parece com um badge.
|
|
1151
1126
|
- [BodyContent](./docs/DESIGN_SYSTEM.md#bodycontent) - Container principal de página com breadcrumb, background neutro e suporte a múltiplos containers de conteúdo.
|
|
1152
1127
|
- [Breadcrumb](./docs/DESIGN_SYSTEM.md#breadcrumb) - Exibe o caminho até o recurso atual usando uma hierarquia de links.
|
|
1153
|
-
- [BulkActionBar](./docs/DESIGN_SYSTEM.md#bulkactionbar) - Barra de ações em massa para operações com múltiplos itens selecionados. Suporta ações customizadas, estados de loading e tooltips para ações desabilitadas.
|
|
1154
1128
|
- [Button](./docs/DESIGN_SYSTEM.md#button) - Componente de botão com variantes semânticas, tamanhos e estados. Use para ações primárias, secundárias e destrutivas.
|
|
1155
1129
|
- [Button Group](./docs/DESIGN_SYSTEM.md#buttongroup) - Agrupa botões relacionados com espaçamento e bordas apropriados.
|
|
1156
1130
|
- [Calendar & Date Picker](./docs/DESIGN_SYSTEM.md#calendar) - Componentes para seleção de datas. O Calendar exibe um calendário interativo, enquanto o Date Picker combina um campo de input com o calendário em um popover.
|
|
@@ -1174,7 +1148,7 @@ O comando usa credenciais públicas do Supabase do forlogic-core e não requer c
|
|
|
1174
1148
|
- [Loading](./docs/DESIGN_SYSTEM.md#skeleton) - Componentes para estados de carregamento: Skeleton (placeholders), Spinner (indicador de loading), e LoadingState (gerenciamento declarativo).
|
|
1175
1149
|
- [Media](./docs/DESIGN_SYSTEM.md#media) - Módulo completo para upload, edição e renderização de imagens e vídeos. Inclui editores interativos, renderizadores otimizados e hook genérico de upload.
|
|
1176
1150
|
- [Menubar](./docs/DESIGN_SYSTEM.md#menubar) - Barra de menu horizontal com submenus, checkboxes e radio items. Ideal para barras de navegação de aplicações desktop-like, seguindo padrões de aplicações nativas.
|
|
1177
|
-
- [ModulesDialog](./docs/DESIGN_SYSTEM.md#modulesdialog) - Dialog para navegação entre módulos do sistema, organizado em abas
|
|
1151
|
+
- [ModulesDialog](./docs/DESIGN_SYSTEM.md#modulesdialog) - Dialog para navegação entre módulos do sistema, organizado em abas (Qualiex, Clássicos) com separação entre módulos contratados e disponíveis, OnboardingDialog para descoberta e cards informativos no rodapé.
|
|
1178
1152
|
- [Navigation Menu](./docs/DESIGN_SYSTEM.md#navigationmenu) - Uma coleção de links para navegação em websites.
|
|
1179
1153
|
- [Onboarding Dialog](./docs/DESIGN_SYSTEM.md#onboardingdialog) - Componente para fluxos de onboarding em múltiplos passos. Suporta imagens estáticas, GIFs, navegação entre steps e indicador de progresso com dropdown.
|
|
1180
1154
|
- [Pagination](./docs/DESIGN_SYSTEM.md#pagination) - Componente de paginação padronizado com layout de 3 colunas, seletor de itens por página e navegação completa.
|
|
@@ -1191,6 +1165,7 @@ O comando usa credenciais públicas do Supabase do forlogic-core e não requer c
|
|
|
1191
1165
|
- [Separator](./docs/DESIGN_SYSTEM.md#separator) - Separa visual ou semanticamente o conteúdo.
|
|
1192
1166
|
- [Slider](./docs/DESIGN_SYSTEM.md#slider) - Um input onde o usuário seleciona um valor dentro de um intervalo determinado.
|
|
1193
1167
|
- [Split Button](./docs/DESIGN_SYSTEM.md#splitbutton) - Combina uma ação principal com ações secundárias em um menu dropdown. Ideal para destacar a ação prioritária enquanto mantém alternativas acessíveis.
|
|
1168
|
+
- [Step Selector](./docs/DESIGN_SYSTEM.md#stepselector) - Componente de navegação para Wizards multi-etapas. Combina um DropdownMenu para seleção de etapas com uma barra de Progress para indicação visual do progresso.
|
|
1194
1169
|
- [Switch](./docs/DESIGN_SYSTEM.md#switch) - Um controle que permite ao usuário alternar entre marcado e desmarcado.
|
|
1195
1170
|
- [Table](./docs/DESIGN_SYSTEM.md#table) - Uma tabela semântica para exibir dados tabulares. Inclui TableResizeHandle para redimensionamento de colunas e TruncatedCell para texto truncado com tooltip automático.
|
|
1196
1171
|
- [Tabs & TabPageLayout](./docs/DESIGN_SYSTEM.md#tabs) - Componentes de navegação em abas. Tabs para conteúdo simples e TabPageLayout para páginas completas com header fixo e scroll.
|
|
@@ -1202,10 +1177,11 @@ O comando usa credenciais públicas do Supabase do forlogic-core e não requer c
|
|
|
1202
1177
|
### 🚀 Sistema CRUD
|
|
1203
1178
|
|
|
1204
1179
|
- [BaseForm](./docs/DESIGN_SYSTEM.md#baseform) - Formulário dinâmico baseado em configuração de seções e campos, suportando múltiplos tipos de campo, validação e layouts flexíveis.
|
|
1205
|
-
- [createCrudPage](./docs/DESIGN_SYSTEM.md#createcrudpage) -
|
|
1180
|
+
- [createCrudPage](./docs/DESIGN_SYSTEM.md#createcrudpage) - Factory de alto nível que gera uma página CRUD completa com ~15 linhas de configuração declarativa.
|
|
1206
1181
|
- [CRUD de Fornecedores](./docs/DESIGN_SYSTEM.md#crudusers) - Padrão completo de CRUD para gestão de fornecedores com 16 campos, incluindo ordenação, filtros avançados, exportação/importação e ações em massa.
|
|
1207
1182
|
- [CRUD Primitives](./docs/DESIGN_SYSTEM.md#crudprimitives) - Componentes de baixo nível para interfaces CRUD totalmente customizadas com controle total sobre layout e comportamento.
|
|
1208
1183
|
- [CRUD System](./docs/DESIGN_SYSTEM.md#crudsystem) - Sistema completo para criação rápida de interfaces CRUD com validação, busca, paginação e muito mais.
|
|
1184
|
+
- [CrudActionBar](./docs/DESIGN_SYSTEM.md#crudactionbar) - Barra de ações unificada usada por todos os componentes CRUD (CrudTable, CrudGrid, createCrudPage) para garantir UX consistente.
|
|
1209
1185
|
- [CrudGrid](./docs/DESIGN_SYSTEM.md#crudgrid) - Componente para exibir dados em formato de grade (cards) com todas as funcionalidades CRUD.
|
|
1210
1186
|
Alternativa visual ao CrudTable para listagens com layout mais visual.
|
|
1211
1187
|
- [CrudTable](./docs/DESIGN_SYSTEM.md#crudtable) - Componente de tabela CRUD completo com ordenação, seleção, resize de colunas, ações em massa e paginação integrada com useCrud.
|
|
@@ -1217,7 +1193,7 @@ O comando usa credenciais públicas do Supabase do forlogic-core e não requer c
|
|
|
1217
1193
|
- [Contexts](./docs/DESIGN_SYSTEM.md#contexts) - Contexts globais da biblioteca forlogic-core para gerenciamento de estado da aplicação. Incluem LocaleContext para i18n, NavigationContext para navegação, PageMetadataContext para metadados de página e ModalStateContext para rastreamento de modais.
|
|
1218
1194
|
- [ErrorBoundary](./docs/DESIGN_SYSTEM.md#errorboundary) - Componente de classe React que captura erros de renderização em componentes filhos, evitando que a aplicação inteira quebre.
|
|
1219
1195
|
- [Hooks](./docs/DESIGN_SYSTEM.md#hooks) - Hooks utilitários da biblioteca forlogic-core para otimização, dados, formatação e UI. Todos os hooks seguem padrões React e são compatíveis com React Query quando aplicável.
|
|
1220
|
-
- [Internacionalização (i18n)](./docs/DESIGN_SYSTEM.md#i18n) - Sistema
|
|
1196
|
+
- [Internacionalização (i18n)](./docs/DESIGN_SYSTEM.md#i18n) - Sistema de internacionalização usando react-i18next com traduções carregadas de um arquivo JSON estático local (lib/i18n/translations.json). Suporta pt-BR, en-US e es-ES com gerenciamento de preferências do usuário.
|
|
1221
1197
|
- [Segurança (Vite Config)](./docs/DESIGN_SYSTEM.md#security) - Plugin de segurança para Vite que aplica headers OWASP, CSP configurável, CORS seguro e proteções contra ataques comuns. Configuração centralizada para todos os projetos Forlogic.
|
|
1222
1198
|
- [Services](./docs/DESIGN_SYSTEM.md#services) - Serviços utilitários da biblioteca forlogic-core para operações CRUD, envio de emails, tratamento de erros e gerenciamento de traduções. Todos os serviços são singletons prontos para uso.
|
|
1223
1199
|
- [Utilities](./docs/DESIGN_SYSTEM.md#utilities) - Funções utilitárias essenciais exportadas pela biblioteca para manipulação de classes CSS, formatação de datas e valores monetários.
|
package/dist/README.md
CHANGED
|
@@ -30,7 +30,7 @@ npm install forlogic-core
|
|
|
30
30
|
### Baixar documentação atualizada
|
|
31
31
|
|
|
32
32
|
```bash
|
|
33
|
-
npx
|
|
33
|
+
npx lib-update
|
|
34
34
|
```
|
|
35
35
|
|
|
36
36
|
### ⚠️ IMPORTANTE: Imports de i18n
|
|
@@ -114,33 +114,7 @@ src/components/SplitButton.tsx // Existe na lib (a partir de v1.12.2)
|
|
|
114
114
|
| `/design_system` | Design System com todos os componentes documentados |
|
|
115
115
|
| `forlogic-core/lib/exports/ui.ts` | Lista de exports de UI |
|
|
116
116
|
| `forlogic-core/lib/index.ts` | Index principal com todos os exports |
|
|
117
|
-
| `npx
|
|
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
|
-
```
|
|
117
|
+
| `npx lib-update` | Baixa documentação atualizada |
|
|
144
118
|
|
|
145
119
|
### ⚠️ Exceções (quando PODE criar localmente)
|
|
146
120
|
|
|
@@ -1120,7 +1094,7 @@ O comando usa credenciais públicas do Supabase do forlogic-core e não requer c
|
|
|
1120
1094
|
|
|
1121
1095
|
### 📚 Estatísticas da Documentação
|
|
1122
1096
|
|
|
1123
|
-
**
|
|
1097
|
+
**58 Componentes UI** | **6 Tokens** | **8 Ferramentas CRUD** | **8 Core/Utilitários**
|
|
1124
1098
|
|
|
1125
1099
|
---
|
|
1126
1100
|
|
|
@@ -1142,7 +1116,7 @@ O comando usa credenciais públicas do Supabase do forlogic-core e não requer c
|
|
|
1142
1116
|
### 🧩 Componentes UI
|
|
1143
1117
|
|
|
1144
1118
|
- [Accordion & Collapsible](./docs/DESIGN_SYSTEM.md#accordion) - Componentes de expansão/colapso para revelar conteúdo. Accordion para múltiplos itens, Collapsible para item único.
|
|
1145
|
-
- [Action Button](./docs/DESIGN_SYSTEM.md#actionbutton) - Botão compacto otimizado para ações em linhas de tabela e menus dropdown.
|
|
1119
|
+
- [Action Button](./docs/DESIGN_SYSTEM.md#actionbutton) - Botão compacto otimizado para ações em linhas de tabela e menus dropdown. OBRIGATÓRIO para todas as ações em tabelas CRUD.
|
|
1146
1120
|
- [Alert](./docs/DESIGN_SYSTEM.md#alert) - Exibe uma mensagem de destaque para chamar a atenção do usuário. O componente inclui ícone automático baseado na variante.
|
|
1147
1121
|
- [AppHeader](./docs/DESIGN_SYSTEM.md#appheader) - Header principal da aplicação com título dinâmico, busca global integrada ao CRUD, ações customizáveis e informações do usuário. Altura fixa de 56px (h-14).
|
|
1148
1122
|
- [AppSidebar](./docs/DESIGN_SYSTEM.md#appsidebar) - Sidebar de navegação principal da aplicação com suporte a menu colapsável, permissões, redimensionamento e navegação hierárquica.
|
|
@@ -1150,6 +1124,7 @@ O comando usa credenciais públicas do Supabase do forlogic-core e não requer c
|
|
|
1150
1124
|
- [Badge](./docs/DESIGN_SYSTEM.md#badge) - Exibe um badge ou um componente que se parece com um badge.
|
|
1151
1125
|
- [BodyContent](./docs/DESIGN_SYSTEM.md#bodycontent) - Container principal de página com breadcrumb, background neutro e suporte a múltiplos containers de conteúdo.
|
|
1152
1126
|
- [Breadcrumb](./docs/DESIGN_SYSTEM.md#breadcrumb) - Exibe o caminho até o recurso atual usando uma hierarquia de links.
|
|
1127
|
+
- [BulkActionBar](./docs/DESIGN_SYSTEM.md#bulkactionbar) - Barra de ações em massa para operações com múltiplos itens selecionados. Suporta ações customizadas, estados de loading e tooltips para ações desabilitadas.
|
|
1153
1128
|
- [Button](./docs/DESIGN_SYSTEM.md#button) - Componente de botão com variantes semânticas, tamanhos e estados. Use para ações primárias, secundárias e destrutivas.
|
|
1154
1129
|
- [Button Group](./docs/DESIGN_SYSTEM.md#buttongroup) - Agrupa botões relacionados com espaçamento e bordas apropriados.
|
|
1155
1130
|
- [Calendar & Date Picker](./docs/DESIGN_SYSTEM.md#calendar) - Componentes para seleção de datas. O Calendar exibe um calendário interativo, enquanto o Date Picker combina um campo de input com o calendário em um popover.
|
|
@@ -1176,6 +1151,7 @@ O comando usa credenciais públicas do Supabase do forlogic-core e não requer c
|
|
|
1176
1151
|
- [ModulesDialog](./docs/DESIGN_SYSTEM.md#modulesdialog) - Dialog para navegação entre módulos do sistema, organizado em abas por grupo (Qualiex, Saber Gestão, Clássicos) com cards informativos e links de ajuda.
|
|
1177
1152
|
- [Navigation Menu](./docs/DESIGN_SYSTEM.md#navigationmenu) - Uma coleção de links para navegação em websites.
|
|
1178
1153
|
- [Onboarding Dialog](./docs/DESIGN_SYSTEM.md#onboardingdialog) - Componente para fluxos de onboarding em múltiplos passos. Suporta imagens estáticas, GIFs, navegação entre steps e indicador de progresso com dropdown.
|
|
1154
|
+
- [Pagination](./docs/DESIGN_SYSTEM.md#pagination) - Componente de paginação padronizado com layout de 3 colunas, seletor de itens por página e navegação completa.
|
|
1179
1155
|
- [Pagination](./docs/DESIGN_SYSTEM.md#pagination) - Barra de paginação completa com seletor de itens por página e controles de navegação.
|
|
1180
1156
|
- [Places](./docs/DESIGN_SYSTEM.md#places) - Módulo para gerenciar estruturas hierárquicas de locais integrado com a API Qualiex. Inclui visualização em árvore, gestão de acessos e componentes reutilizáveis.
|
|
1181
1157
|
- [Popover](./docs/DESIGN_SYSTEM.md#popover) - Exibe conteúdo rico em um portal, acionado por um botão.
|
|
@@ -1189,6 +1165,7 @@ O comando usa credenciais públicas do Supabase do forlogic-core e não requer c
|
|
|
1189
1165
|
- [Separator](./docs/DESIGN_SYSTEM.md#separator) - Separa visual ou semanticamente o conteúdo.
|
|
1190
1166
|
- [Slider](./docs/DESIGN_SYSTEM.md#slider) - Um input onde o usuário seleciona um valor dentro de um intervalo determinado.
|
|
1191
1167
|
- [Split Button](./docs/DESIGN_SYSTEM.md#splitbutton) - Combina uma ação principal com ações secundárias em um menu dropdown. Ideal para destacar a ação prioritária enquanto mantém alternativas acessíveis.
|
|
1168
|
+
- [Step Selector](./docs/DESIGN_SYSTEM.md#stepselector) - Componente de navegação para Wizards multi-etapas. Combina um DropdownMenu para seleção de etapas com uma barra de Progress para indicação visual do progresso.
|
|
1192
1169
|
- [Switch](./docs/DESIGN_SYSTEM.md#switch) - Um controle que permite ao usuário alternar entre marcado e desmarcado.
|
|
1193
1170
|
- [Table](./docs/DESIGN_SYSTEM.md#table) - Uma tabela semântica para exibir dados tabulares. Inclui TableResizeHandle para redimensionamento de colunas e TruncatedCell para texto truncado com tooltip automático.
|
|
1194
1171
|
- [Tabs & TabPageLayout](./docs/DESIGN_SYSTEM.md#tabs) - Componentes de navegação em abas. Tabs para conteúdo simples e TabPageLayout para páginas completas com header fixo e scroll.
|
|
@@ -403,7 +403,7 @@ use chrome, FireFox or Internet Explorer 11`)}var c=r("safe-buffer"),d=r("random
|
|
|
403
403
|
`,children:g.label}),v<Hxe.length-1&&a.jsx("div",{className:`
|
|
404
404
|
w-8 h-0.5 mx-2
|
|
405
405
|
${v<i.step?"bg-primary":"bg-muted"}
|
|
406
|
-
`})]},g.id))})]}),a.jsx("div",{className:"flex-1 overflow-y-auto py-4 px-1",children:h()}),!y&&a.jsxs("div",{className:"flex-shrink-0 flex items-center justify-between pt-4 border-t",children:[a.jsx("div",{children:f&&a.jsxs(ce,{variant:"outline",onClick:c,className:"gap-2",children:[a.jsx(Cd,{className:"h-4 w-4"}),"Voltar"]})}),a.jsx("div",{children:p&&a.jsxs(ce,{onClick:l,disabled:!i.canProceed(),className:"gap-2",children:["Próximo",a.jsx(Ya,{className:"h-4 w-4"})]})})]})]})})}const esr=()=>{const{t}=Zr("admin"),[e,r]=k.useState({step:"select-alias"}),[n,s]=k.useState(""),[i,o]=k.useState(!1),l=()=>{n.trim()&&r({step:"select-module",alias:n.trim()})},c=m=>{e.step==="select-module"&&r({step:"select-type",alias:e.alias,module:m})},d=m=>{e.step==="select-type"&&(r({step:"wizard",alias:e.alias,module:e.module,type:m}),o(!0))},u=()=>{switch(e.step){case"select-module":r({step:"select-alias"});break;case"select-type":r({step:"select-module",alias:e.alias});break;case"wizard":r({step:"select-type",alias:e.alias,module:e.module});break}},h=()=>{r({step:"select-alias"}),s(""),o(!1)},f=()=>{o(!1),h()},p=e.step==="select-type"||e.step==="wizard"?kae.find(m=>m.schema===e.module):null;return a.jsxs("div",{className:"space-y-6",children:[a.jsx(kar,{}),a.jsx(Qn,{}),e.step==="select-alias"&&a.jsxs(pe,{children:[a.jsx(Oe,{children:a.jsxs("div",{className:"flex items-center gap-3",children:[a.jsx("div",{className:"p-2 rounded-lg bg-primary/10",children:a.jsx($v,{className:"h-5 w-5 text-primary"})}),a.jsxs("div",{children:[a.jsx(Le,{children:"Nova Migração de Dados"}),a.jsx(Tt,{children:"Importe dados históricos de clientes para o sistema"})]})]})}),a.jsxs(Ee,{className:"space-y-6",children:[a.jsx("div",{className:"max-w-md",children:a.jsx(Ear,{value:n,onChange:s,label:"Cliente de Destino",required:!0})}),a.jsx(ce,{onClick:l,disabled:!n.trim(),className:"w-full sm:w-auto",children:"Continuar"})]})]}),e.step==="select-module"&&a.jsxs("div",{className:"space-y-4",children:[a.jsxs("div",{className:"flex items-center gap-4",children:[a.jsxs(ce,{variant:"ghost",size:"sm",onClick:u,children:[a.jsx(Cd,{className:"h-4 w-4 mr-2"}),"Voltar"]}),a.jsxs("div",{children:[a.jsx("h3",{className:"text-lg font-medium",children:"Selecione o Módulo"}),a.jsxs("p",{className:"text-sm text-muted-foreground",children:["Migrando dados para: ",a.jsx("strong",{children:e.alias})]})]})]}),a.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:kae.map(m=>a.jsx(Car,{module:m,onClick:c},m.schema))})]}),e.step==="select-type"&&p&&a.jsxs("div",{className:"space-y-4",children:[a.jsxs("div",{className:"flex items-center gap-4",children:[a.jsxs(ce,{variant:"ghost",size:"sm",onClick:u,children:[a.jsx(Cd,{className:"h-4 w-4 mr-2"}),"Voltar"]}),a.jsxs("div",{children:[a.jsxs("h3",{className:"text-lg font-medium",children:[p.label,": Selecione o Tipo de Dados"]}),a.jsxs("p",{className:"text-sm text-muted-foreground",children:["Migrando para: ",a.jsx("strong",{children:e.alias})]})]})]}),a.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:p.types.map(m=>a.jsxs(pe,{className:"cursor-pointer hover:border-primary hover:shadow-md transition-all",onClick:()=>d(m.type),children:[a.jsxs(Oe,{children:[a.jsx(Le,{className:"text-base",children:m.label}),a.jsx(Tt,{children:m.description})]}),a.jsx(Ee,{children:a.jsxs("div",{className:"text-xs text-muted-foreground",children:[a.jsx("span",{className:"font-medium",children:"Campos obrigatórios:"})," ",m.requiredFields.join(", ")]})})]},m.type))})]}),e.step==="wizard"&&a.jsx(Jar,{open:i,onClose:f,targetAlias:e.alias,moduleSchema:e.module,migrationType:e.type}),a.jsx(Qn,{}),a.jsx(Mar,{})]})};function tsr(){return a.jsx(esr,{})}const rsr="1.14.7",nsr={version:rsr},Vxe="ds-sidebar-expanded-sections",Uxe=[{id:"foundation",title:"Fundação",icon:fd,items:[{id:"overview",label:"Visão Geral"},{id:"colors",label:"Cores"},{id:"spacing",label:"Espaçamento"},{id:"icons",label:"Ícones"},{id:"radius",label:"Raio"},{id:"shadows",label:"Sombras"},{id:"typography",label:"Tipografia"}]},{id:"actions",title:"Actions",icon:Tk,items:[{id:"action-button",label:"Action Button"},{id:"button",label:"Button"},{id:"button-group",label:"Button Group"},{id:"split-button",label:"Split Button"},{id:"switch",label:"Switch"},{id:"toggle",label:"Toggle & Group"}]},{id:"data-display",title:"Data Display",icon:Sd,items:[{id:"accordion",label:"Accordion & Collapsible"},{id:"avatar",label:"Avatar"},{id:"badge",label:"Badge"},{id:"card",label:"Card"},{id:"chart",label:"Chart"},{id:"data-list",label:"Data List"},{id:"empty-state",label:"Empty State"},{id:"progress",label:"Progress"},{id:"separator",label:"Separator"},{id:"table",label:"Table"}]},{id:"feedback",title:"Feedback",icon:Af,items:[{id:"alert",label:"Alert"},{id:"error-boundary",label:"ErrorBoundary"},{id:"loading",label:"Loading"},{id:"toast",label:"Toast"}]},{id:"form-inputs",title:"Form & Inputs",icon:Li,items:[{id:"calendar",label:"Calendar & Date Picker"},{id:"checkbox",label:"Checkbox"},{id:"color-picker",label:"Color Picker"},{id:"combobox",label:"Combobox"},{id:"form",label:"Form"},{id:"icon-picker",label:"Icon Picker"},{id:"input",label:"Input & InputGroup"},{id:"label",label:"Label"},{id:"radio-group",label:"Radio Group"},{id:"required-fields-counter",label:"Required Fields Counter"},{id:"rich-text-editor",label:"Rich Text Editor"},{id:"select",label:"Select"},{id:"slider",label:"Slider"},{id:"textarea",label:"Textarea"}]},{id:"menus-navigation",title:"Menus & Navigation",icon:Ek,items:[{id:"breadcrumb",label:"Breadcrumb"},{id:"context-menu",label:"Context Menu"},{id:"dropdown-menu",label:"Dropdown Menu"},{id:"menubar",label:"Menubar"},{id:"navigation-menu",label:"Navigation Menu"},{id:"pagination",label:"Pagination"},{id:"tabs",label:"Tabs & TabPageLayout"}]},{id:"overlay",title:"Overlay",icon:Wv,items:[{id:"dialog",label:"Dialog"},{id:"hover-card",label:"Hover Card"},{id:"modules-dialog",label:"Modules Dialog"},{id:"onboarding-dialog",label:"Onboarding Dialog"},{id:"popover",label:"Popover"},{id:"tooltip",label:"Tooltip"}]},{id:"layout",title:"Layout",icon:Sd,items:[{id:"app-header",label:"AppHeader"},{id:"app-sidebar",label:"AppSidebar"},{id:"body-content",label:"BodyContent"},{id:"grid",label:"Grid & Stack"},{id:"resizable",label:"Resizable"}]},{id:"crud",title:"CRUD",icon:yy,items:[{id:"crud-overview",label:"Visão Geral"},{id:"crud-create-page",label:"createCrudPage"},{id:"crud-table",label:"CrudTable"},{id:"crud-grid",label:"CrudGrid"},{id:"crud-primitives",label:"Primitives (Table, Filter)"},{id:"crud-pagination",label:"Pagination"},{id:"crud-bulk-action-bar",label:"BulkActionBar"},{id:"crud-baseform",label:"BaseForm"}]},{id:"integrations",title:"Integrações",icon:Bn,items:[{id:"auth",label:"Autenticação (Auth)"},{id:"contexts",label:"Contexts"},{id:"hooks",label:"Hooks"},{id:"i18n",label:"Internacionalização (i18n)"},{id:"leadership",label:"Leadership"},{id:"media",label:"Media (Imagens/Vídeos)"},{id:"places",label:"Places"},{id:"qualiex-user-field",label:"QualiexUserField"},{id:"security",label:"Segurança (Vite Config)"},{id:"services",label:"Services"},{id:"utilities",label:"Utilities"}]}];function asr({activeSection:t,onSectionChange:e}){const r=c2(),n=Uxe.map(f=>f.id),[s,i]=k.useState(()=>{try{const f=localStorage.getItem(Vxe);if(f){const p=JSON.parse(f);if(Array.isArray(p))return p}}catch{}return n}),[o,l]=k.useState("");k.useEffect(()=>{try{localStorage.setItem(Vxe,JSON.stringify(s))}catch{}},[s]);const c=k.useCallback(f=>{i(p=>p.includes(f)?p.filter(m=>m!==f):[...p,f])},[]),d=k.useCallback(()=>{s.length===n.length?i([]):i(n)},[s.length,n]),u=k.useCallback(f=>{r(`/ds/${f}`,{replace:!0}),e(f)},[r,e]),h=Uxe.map(f=>({...f,items:f.items.filter(p=>p.label.toLowerCase().includes(o.toLowerCase()))})).filter(f=>f.items.length>0);return a.jsxs("div",{className:"w-64 border-r bg-background flex flex-col h-full",children:[a.jsxs("div",{className:"p-4 border-b space-y-3",children:[a.jsxs("div",{className:"flex items-center justify-between gap-2",children:[a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx(Xo,{className:"h-5 w-5 text-primary"}),a.jsxs("div",{children:[a.jsx("h2",{className:"font-bold text-sm",children:"Design System"}),a.jsxs("p",{className:"text-xs text-muted-foreground",children:["v",nsr.version]})]})]}),a.jsx(ce,{variant:"ghost",size:"sm",onClick:()=>r("/"),className:"h-8 w-8 p-0",title:"Voltar para Configurações",children:a.jsx(Bn,{className:"h-4 w-4"})})]}),a.jsxs("div",{className:"relative",children:[a.jsx(qe,{type:"text",placeholder:"Buscar componente...",value:o,onChange:f=>l(f.target.value),className:"h-9 pr-8"}),o&&a.jsx("button",{type:"button",onClick:()=>l(""),className:"absolute right-2 top-1/2 -translate-y-1/2 p-0.5 rounded-sm text-muted-foreground hover:text-foreground hover:bg-accent transition-colors","aria-label":"Limpar busca",children:a.jsx(qn,{className:"h-4 w-4"})})]}),a.jsx(ce,{variant:"outline",size:"sm",onClick:d,className:"w-full h-8 text-xs",children:s.length===n.length?a.jsxs(a.Fragment,{children:[a.jsx(lk,{className:"h-3.5 w-3.5 mr-2"}),"Recolher Todos"]}):a.jsxs(a.Fragment,{children:[a.jsx(dy,{className:"h-3.5 w-3.5 mr-2"}),"Expandir Todos"]})})]}),a.jsx(pl,{className:"flex-1",children:a.jsx("div",{className:"p-2",children:h.map(f=>{const p=s.includes(f.id),m=f.icon;return a.jsxs("div",{className:"mb-1",children:[a.jsxs("button",{onClick:()=>c(f.id),className:"flex items-center justify-between w-full px-3 py-2 text-sm font-medium rounded-md hover:bg-accent transition-colors",children:[a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx(m,{className:"h-4 w-4"}),a.jsx("span",{children:f.title})]}),p?a.jsx(Yr,{className:"h-4 w-4"}):a.jsx(Jr,{className:"h-4 w-4"})]}),p&&a.jsx("div",{className:"ml-2 mt-1 space-y-0.5",children:f.items.map(y=>{const g=t===y.id;return a.jsx("button",{onClick:()=>u(y.id),className:`w-full px-3 py-1.5 text-sm rounded-md transition-colors text-left ${g?"bg-accent text-accent-foreground font-medium":"hover:bg-accent/50 text-muted-foreground hover:text-foreground"}`,children:y.label},y.id)})})]},f.id)})})})]})}function ssr(){const t=[{name:"0",value:"0px",class:"p-0"},{name:"0.5",value:"2px",class:"p-0.5"},{name:"1",value:"4px",class:"p-1"},{name:"1.5",value:"6px",class:"p-1.5"},{name:"2",value:"8px",class:"p-2"},{name:"2.5",value:"10px",class:"p-2.5"},{name:"3",value:"12px",class:"p-3"},{name:"3.5",value:"14px",class:"p-3.5"},{name:"4",value:"16px",class:"p-4"},{name:"5",value:"20px",class:"p-5"},{name:"6",value:"24px",class:"p-6"},{name:"7",value:"28px",class:"p-7"},{name:"8",value:"32px",class:"p-8"},{name:"9",value:"36px",class:"p-9"},{name:"10",value:"40px",class:"p-10"},{name:"11",value:"44px",class:"p-11"},{name:"12",value:"48px",class:"p-12"},{name:"14",value:"56px",class:"p-14"},{name:"16",value:"64px",class:"p-16"},{name:"20",value:"80px",class:"p-20"},{name:"24",value:"96px",class:"p-24"}];return a.jsxs("div",{className:"space-y-8",children:[a.jsxs("div",{className:"space-y-2",children:[a.jsx("h1",{className:"text-4xl font-bold tracking-tight",children:"Sistema de Espaçamento"}),a.jsx("p",{className:"text-lg text-muted-foreground",children:"Escala de espaçamento consistente baseada em uma unidade base de 4px (0.25rem), garantindo ritmo visual e alinhamento em todos os componentes."})]}),a.jsxs(pe,{children:[a.jsxs(Oe,{children:[a.jsx(Le,{children:"Escala de Espaçamento"}),a.jsx(Tt,{children:"Escala base-4 de 0px a 96px"})]}),a.jsx(Ee,{children:a.jsx("div",{className:"space-y-4",children:t.map(e=>a.jsxs("div",{className:"flex items-center gap-4",children:[a.jsx("div",{className:"w-16 text-sm font-mono text-muted-foreground",children:e.name}),a.jsx("div",{className:"w-20 text-sm font-mono text-muted-foreground",children:e.value}),a.jsx("div",{className:"flex-1 bg-muted rounded-lg overflow-hidden",children:a.jsx("div",{className:"bg-primary h-8",style:{width:e.value}})}),a.jsx("code",{className:"text-xs text-muted-foreground w-16",children:e.class.replace("p-","")})]},e.name))})})]}),a.jsxs(pe,{children:[a.jsxs(Oe,{children:[a.jsx(Le,{children:"Espaçamento Semântico"}),a.jsx(Tt,{children:"Padrões comuns de espaçamento com nomes semânticos"})]}),a.jsxs(Ee,{className:"space-y-6",children:[a.jsxs("div",{children:[a.jsx("h3",{className:"text-sm font-semibold mb-3",children:"Espaçamento de Componentes"}),a.jsxs("div",{className:"space-y-3",children:[a.jsx(uv,{label:"Compacto (gap-2)",description:"Espaçamento apertado para itens relacionados",className:"gap-2"}),a.jsx(uv,{label:"Padrão (gap-4)",description:"Espaçamento padrão entre elementos",className:"gap-4"}),a.jsx(uv,{label:"Confortável (gap-6)",description:"Espaçamento generoso para respiro",className:"gap-6"})]})]}),a.jsxs("div",{children:[a.jsx("h3",{className:"text-sm font-semibold mb-3",children:"Espaçamento de Seções"}),a.jsxs("div",{className:"space-y-3",children:[a.jsx(uv,{label:"Pequeno (space-y-4)",description:"Seções pequenas ou conteúdo aninhado",className:"gap-4"}),a.jsx(uv,{label:"Médio (space-y-8)",description:"Espaçamento padrão de seção",className:"gap-8"}),a.jsx(uv,{label:"Grande (space-y-12)",description:"Seções principais ou divisões de página",className:"gap-12"})]})]})]})]}),a.jsxs(pe,{children:[a.jsxs(Oe,{children:[a.jsx(Le,{children:"Exemplos de Padding"}),a.jsx(Tt,{children:"Padrões comuns de padding para componentes"})]}),a.jsx(Ee,{className:"space-y-4",children:a.jsxs("div",{className:"space-y-3",children:[a.jsxs("div",{children:[a.jsx("p",{className:"text-sm text-muted-foreground mb-2",children:"Button (px-4 py-2)"}),a.jsx("div",{className:"inline-flex px-4 py-2 bg-primary text-primary-foreground rounded-md",children:"Button Text"})]}),a.jsxs("div",{children:[a.jsx("p",{className:"text-sm text-muted-foreground mb-2",children:"Card (p-6)"}),a.jsx("div",{className:"p-6 bg-card border rounded-lg",children:"Card content with standard padding"})]}),a.jsxs("div",{children:[a.jsx("p",{className:"text-sm text-muted-foreground mb-2",children:"Input (px-3 py-2)"}),a.jsx("div",{className:"px-3 py-2 bg-background border rounded-md",children:"Input field padding"})]})]})})]}),a.jsxs(pe,{children:[a.jsx(Oe,{children:a.jsx(Le,{children:"Diretrizes de Espaçamento"})}),a.jsxs(Ee,{className:"prose prose-slate dark:prose-invert max-w-none",children:[a.jsx("h3",{children:"Princípios"}),a.jsxs("ul",{children:[a.jsxs("li",{children:[a.jsx("strong",{children:"Consistência"}),": Use tokens de espaçamento de forma consistente em toda a aplicação"]}),a.jsxs("li",{children:[a.jsx("strong",{children:"Ritmo"}),": Mantenha ritmo visual usando múltiplos de 4px"]}),a.jsxs("li",{children:[a.jsx("strong",{children:"Respiro"}),": Garanta espaçamento suficiente para leitura e interação confortáveis"]}),a.jsxs("li",{children:[a.jsx("strong",{children:"Agrupamento"}),": Use espaçamento para criar relações visuais entre elementos"]})]}),a.jsx("h3",{children:"Padrões Comuns"}),a.jsxs("ul",{children:[a.jsxs("li",{children:[a.jsx("strong",{children:"Itens relacionados"}),": gap-2 ou gap-3 (8-12px)"]}),a.jsxs("li",{children:[a.jsx("strong",{children:"Componentes"}),": gap-4 ou gap-6 (16-24px)"]}),a.jsxs("li",{children:[a.jsx("strong",{children:"Seções"}),": space-y-8 ou space-y-12 (32-48px)"]}),a.jsxs("li",{children:[a.jsx("strong",{children:"Margens de página"}),": p-6 ou p-8 (24-32px)"]})]}),a.jsx("h3",{children:"Melhores Práticas"}),a.jsxs("ul",{children:[a.jsx("li",{children:"Use utilitários gap para layouts flex/grid ao invés de margins"}),a.jsx("li",{children:"Prefira space-y/space-x para espaçamento consistente entre filhos"}),a.jsxs("li",{children:["Use espaçamento responsivo (ex: ",a.jsx("code",{children:"p-4 md:p-6 lg:p-8"}),") para melhor experiência mobile"]}),a.jsx("li",{children:"Evite valores arbitrários - mantenha-se na escala de espaçamento"})]}),a.jsx("h4",{className:"font-semibold mb-3 mt-6",children:"Exemplos de Código"}),a.jsxs("div",{className:"space-y-4 not-prose",children:[a.jsxs("div",{children:[a.jsx("div",{className:"text-sm font-medium mb-2 text-green-600 dark:text-green-400",children:"✅ Correto"}),a.jsx("pre",{className:"bg-muted p-3 rounded-md text-xs overflow-x-auto",children:a.jsx("code",{children:`<div className="space-y-6">
|
|
406
|
+
`})]},g.id))})]}),a.jsx("div",{className:"flex-1 overflow-y-auto py-4 px-1",children:h()}),!y&&a.jsxs("div",{className:"flex-shrink-0 flex items-center justify-between pt-4 border-t",children:[a.jsx("div",{children:f&&a.jsxs(ce,{variant:"outline",onClick:c,className:"gap-2",children:[a.jsx(Cd,{className:"h-4 w-4"}),"Voltar"]})}),a.jsx("div",{children:p&&a.jsxs(ce,{onClick:l,disabled:!i.canProceed(),className:"gap-2",children:["Próximo",a.jsx(Ya,{className:"h-4 w-4"})]})})]})]})})}const esr=()=>{const{t}=Zr("admin"),[e,r]=k.useState({step:"select-alias"}),[n,s]=k.useState(""),[i,o]=k.useState(!1),l=()=>{n.trim()&&r({step:"select-module",alias:n.trim()})},c=m=>{e.step==="select-module"&&r({step:"select-type",alias:e.alias,module:m})},d=m=>{e.step==="select-type"&&(r({step:"wizard",alias:e.alias,module:e.module,type:m}),o(!0))},u=()=>{switch(e.step){case"select-module":r({step:"select-alias"});break;case"select-type":r({step:"select-module",alias:e.alias});break;case"wizard":r({step:"select-type",alias:e.alias,module:e.module});break}},h=()=>{r({step:"select-alias"}),s(""),o(!1)},f=()=>{o(!1),h()},p=e.step==="select-type"||e.step==="wizard"?kae.find(m=>m.schema===e.module):null;return a.jsxs("div",{className:"space-y-6",children:[a.jsx(kar,{}),a.jsx(Qn,{}),e.step==="select-alias"&&a.jsxs(pe,{children:[a.jsx(Oe,{children:a.jsxs("div",{className:"flex items-center gap-3",children:[a.jsx("div",{className:"p-2 rounded-lg bg-primary/10",children:a.jsx($v,{className:"h-5 w-5 text-primary"})}),a.jsxs("div",{children:[a.jsx(Le,{children:"Nova Migração de Dados"}),a.jsx(Tt,{children:"Importe dados históricos de clientes para o sistema"})]})]})}),a.jsxs(Ee,{className:"space-y-6",children:[a.jsx("div",{className:"max-w-md",children:a.jsx(Ear,{value:n,onChange:s,label:"Cliente de Destino",required:!0})}),a.jsx(ce,{onClick:l,disabled:!n.trim(),className:"w-full sm:w-auto",children:"Continuar"})]})]}),e.step==="select-module"&&a.jsxs("div",{className:"space-y-4",children:[a.jsxs("div",{className:"flex items-center gap-4",children:[a.jsxs(ce,{variant:"ghost",size:"sm",onClick:u,children:[a.jsx(Cd,{className:"h-4 w-4 mr-2"}),"Voltar"]}),a.jsxs("div",{children:[a.jsx("h3",{className:"text-lg font-medium",children:"Selecione o Módulo"}),a.jsxs("p",{className:"text-sm text-muted-foreground",children:["Migrando dados para: ",a.jsx("strong",{children:e.alias})]})]})]}),a.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:kae.map(m=>a.jsx(Car,{module:m,onClick:c},m.schema))})]}),e.step==="select-type"&&p&&a.jsxs("div",{className:"space-y-4",children:[a.jsxs("div",{className:"flex items-center gap-4",children:[a.jsxs(ce,{variant:"ghost",size:"sm",onClick:u,children:[a.jsx(Cd,{className:"h-4 w-4 mr-2"}),"Voltar"]}),a.jsxs("div",{children:[a.jsxs("h3",{className:"text-lg font-medium",children:[p.label,": Selecione o Tipo de Dados"]}),a.jsxs("p",{className:"text-sm text-muted-foreground",children:["Migrando para: ",a.jsx("strong",{children:e.alias})]})]})]}),a.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:p.types.map(m=>a.jsxs(pe,{className:"cursor-pointer hover:border-primary hover:shadow-md transition-all",onClick:()=>d(m.type),children:[a.jsxs(Oe,{children:[a.jsx(Le,{className:"text-base",children:m.label}),a.jsx(Tt,{children:m.description})]}),a.jsx(Ee,{children:a.jsxs("div",{className:"text-xs text-muted-foreground",children:[a.jsx("span",{className:"font-medium",children:"Campos obrigatórios:"})," ",m.requiredFields.join(", ")]})})]},m.type))})]}),e.step==="wizard"&&a.jsx(Jar,{open:i,onClose:f,targetAlias:e.alias,moduleSchema:e.module,migrationType:e.type}),a.jsx(Qn,{}),a.jsx(Mar,{})]})};function tsr(){return a.jsx(esr,{})}const rsr="1.14.8",nsr={version:rsr},Vxe="ds-sidebar-expanded-sections",Uxe=[{id:"foundation",title:"Fundação",icon:fd,items:[{id:"overview",label:"Visão Geral"},{id:"colors",label:"Cores"},{id:"spacing",label:"Espaçamento"},{id:"icons",label:"Ícones"},{id:"radius",label:"Raio"},{id:"shadows",label:"Sombras"},{id:"typography",label:"Tipografia"}]},{id:"actions",title:"Actions",icon:Tk,items:[{id:"action-button",label:"Action Button"},{id:"button",label:"Button"},{id:"button-group",label:"Button Group"},{id:"split-button",label:"Split Button"},{id:"switch",label:"Switch"},{id:"toggle",label:"Toggle & Group"}]},{id:"data-display",title:"Data Display",icon:Sd,items:[{id:"accordion",label:"Accordion & Collapsible"},{id:"avatar",label:"Avatar"},{id:"badge",label:"Badge"},{id:"card",label:"Card"},{id:"chart",label:"Chart"},{id:"data-list",label:"Data List"},{id:"empty-state",label:"Empty State"},{id:"progress",label:"Progress"},{id:"separator",label:"Separator"},{id:"table",label:"Table"}]},{id:"feedback",title:"Feedback",icon:Af,items:[{id:"alert",label:"Alert"},{id:"error-boundary",label:"ErrorBoundary"},{id:"loading",label:"Loading"},{id:"toast",label:"Toast"}]},{id:"form-inputs",title:"Form & Inputs",icon:Li,items:[{id:"calendar",label:"Calendar & Date Picker"},{id:"checkbox",label:"Checkbox"},{id:"color-picker",label:"Color Picker"},{id:"combobox",label:"Combobox"},{id:"form",label:"Form"},{id:"icon-picker",label:"Icon Picker"},{id:"input",label:"Input & InputGroup"},{id:"label",label:"Label"},{id:"radio-group",label:"Radio Group"},{id:"required-fields-counter",label:"Required Fields Counter"},{id:"rich-text-editor",label:"Rich Text Editor"},{id:"select",label:"Select"},{id:"slider",label:"Slider"},{id:"textarea",label:"Textarea"}]},{id:"menus-navigation",title:"Menus & Navigation",icon:Ek,items:[{id:"breadcrumb",label:"Breadcrumb"},{id:"context-menu",label:"Context Menu"},{id:"dropdown-menu",label:"Dropdown Menu"},{id:"menubar",label:"Menubar"},{id:"navigation-menu",label:"Navigation Menu"},{id:"pagination",label:"Pagination"},{id:"tabs",label:"Tabs & TabPageLayout"}]},{id:"overlay",title:"Overlay",icon:Wv,items:[{id:"dialog",label:"Dialog"},{id:"hover-card",label:"Hover Card"},{id:"modules-dialog",label:"Modules Dialog"},{id:"onboarding-dialog",label:"Onboarding Dialog"},{id:"popover",label:"Popover"},{id:"tooltip",label:"Tooltip"}]},{id:"layout",title:"Layout",icon:Sd,items:[{id:"app-header",label:"AppHeader"},{id:"app-sidebar",label:"AppSidebar"},{id:"body-content",label:"BodyContent"},{id:"grid",label:"Grid & Stack"},{id:"resizable",label:"Resizable"}]},{id:"crud",title:"CRUD",icon:yy,items:[{id:"crud-overview",label:"Visão Geral"},{id:"crud-create-page",label:"createCrudPage"},{id:"crud-table",label:"CrudTable"},{id:"crud-grid",label:"CrudGrid"},{id:"crud-primitives",label:"Primitives (Table, Filter)"},{id:"crud-pagination",label:"Pagination"},{id:"crud-bulk-action-bar",label:"BulkActionBar"},{id:"crud-baseform",label:"BaseForm"}]},{id:"integrations",title:"Integrações",icon:Bn,items:[{id:"auth",label:"Autenticação (Auth)"},{id:"contexts",label:"Contexts"},{id:"hooks",label:"Hooks"},{id:"i18n",label:"Internacionalização (i18n)"},{id:"leadership",label:"Leadership"},{id:"media",label:"Media (Imagens/Vídeos)"},{id:"places",label:"Places"},{id:"qualiex-user-field",label:"QualiexUserField"},{id:"security",label:"Segurança (Vite Config)"},{id:"services",label:"Services"},{id:"utilities",label:"Utilities"}]}];function asr({activeSection:t,onSectionChange:e}){const r=c2(),n=Uxe.map(f=>f.id),[s,i]=k.useState(()=>{try{const f=localStorage.getItem(Vxe);if(f){const p=JSON.parse(f);if(Array.isArray(p))return p}}catch{}return n}),[o,l]=k.useState("");k.useEffect(()=>{try{localStorage.setItem(Vxe,JSON.stringify(s))}catch{}},[s]);const c=k.useCallback(f=>{i(p=>p.includes(f)?p.filter(m=>m!==f):[...p,f])},[]),d=k.useCallback(()=>{s.length===n.length?i([]):i(n)},[s.length,n]),u=k.useCallback(f=>{r(`/ds/${f}`,{replace:!0}),e(f)},[r,e]),h=Uxe.map(f=>({...f,items:f.items.filter(p=>p.label.toLowerCase().includes(o.toLowerCase()))})).filter(f=>f.items.length>0);return a.jsxs("div",{className:"w-64 border-r bg-background flex flex-col h-full",children:[a.jsxs("div",{className:"p-4 border-b space-y-3",children:[a.jsxs("div",{className:"flex items-center justify-between gap-2",children:[a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx(Xo,{className:"h-5 w-5 text-primary"}),a.jsxs("div",{children:[a.jsx("h2",{className:"font-bold text-sm",children:"Design System"}),a.jsxs("p",{className:"text-xs text-muted-foreground",children:["v",nsr.version]})]})]}),a.jsx(ce,{variant:"ghost",size:"sm",onClick:()=>r("/"),className:"h-8 w-8 p-0",title:"Voltar para Configurações",children:a.jsx(Bn,{className:"h-4 w-4"})})]}),a.jsxs("div",{className:"relative",children:[a.jsx(qe,{type:"text",placeholder:"Buscar componente...",value:o,onChange:f=>l(f.target.value),className:"h-9 pr-8"}),o&&a.jsx("button",{type:"button",onClick:()=>l(""),className:"absolute right-2 top-1/2 -translate-y-1/2 p-0.5 rounded-sm text-muted-foreground hover:text-foreground hover:bg-accent transition-colors","aria-label":"Limpar busca",children:a.jsx(qn,{className:"h-4 w-4"})})]}),a.jsx(ce,{variant:"outline",size:"sm",onClick:d,className:"w-full h-8 text-xs",children:s.length===n.length?a.jsxs(a.Fragment,{children:[a.jsx(lk,{className:"h-3.5 w-3.5 mr-2"}),"Recolher Todos"]}):a.jsxs(a.Fragment,{children:[a.jsx(dy,{className:"h-3.5 w-3.5 mr-2"}),"Expandir Todos"]})})]}),a.jsx(pl,{className:"flex-1",children:a.jsx("div",{className:"p-2",children:h.map(f=>{const p=s.includes(f.id),m=f.icon;return a.jsxs("div",{className:"mb-1",children:[a.jsxs("button",{onClick:()=>c(f.id),className:"flex items-center justify-between w-full px-3 py-2 text-sm font-medium rounded-md hover:bg-accent transition-colors",children:[a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx(m,{className:"h-4 w-4"}),a.jsx("span",{children:f.title})]}),p?a.jsx(Yr,{className:"h-4 w-4"}):a.jsx(Jr,{className:"h-4 w-4"})]}),p&&a.jsx("div",{className:"ml-2 mt-1 space-y-0.5",children:f.items.map(y=>{const g=t===y.id;return a.jsx("button",{onClick:()=>u(y.id),className:`w-full px-3 py-1.5 text-sm rounded-md transition-colors text-left ${g?"bg-accent text-accent-foreground font-medium":"hover:bg-accent/50 text-muted-foreground hover:text-foreground"}`,children:y.label},y.id)})})]},f.id)})})})]})}function ssr(){const t=[{name:"0",value:"0px",class:"p-0"},{name:"0.5",value:"2px",class:"p-0.5"},{name:"1",value:"4px",class:"p-1"},{name:"1.5",value:"6px",class:"p-1.5"},{name:"2",value:"8px",class:"p-2"},{name:"2.5",value:"10px",class:"p-2.5"},{name:"3",value:"12px",class:"p-3"},{name:"3.5",value:"14px",class:"p-3.5"},{name:"4",value:"16px",class:"p-4"},{name:"5",value:"20px",class:"p-5"},{name:"6",value:"24px",class:"p-6"},{name:"7",value:"28px",class:"p-7"},{name:"8",value:"32px",class:"p-8"},{name:"9",value:"36px",class:"p-9"},{name:"10",value:"40px",class:"p-10"},{name:"11",value:"44px",class:"p-11"},{name:"12",value:"48px",class:"p-12"},{name:"14",value:"56px",class:"p-14"},{name:"16",value:"64px",class:"p-16"},{name:"20",value:"80px",class:"p-20"},{name:"24",value:"96px",class:"p-24"}];return a.jsxs("div",{className:"space-y-8",children:[a.jsxs("div",{className:"space-y-2",children:[a.jsx("h1",{className:"text-4xl font-bold tracking-tight",children:"Sistema de Espaçamento"}),a.jsx("p",{className:"text-lg text-muted-foreground",children:"Escala de espaçamento consistente baseada em uma unidade base de 4px (0.25rem), garantindo ritmo visual e alinhamento em todos os componentes."})]}),a.jsxs(pe,{children:[a.jsxs(Oe,{children:[a.jsx(Le,{children:"Escala de Espaçamento"}),a.jsx(Tt,{children:"Escala base-4 de 0px a 96px"})]}),a.jsx(Ee,{children:a.jsx("div",{className:"space-y-4",children:t.map(e=>a.jsxs("div",{className:"flex items-center gap-4",children:[a.jsx("div",{className:"w-16 text-sm font-mono text-muted-foreground",children:e.name}),a.jsx("div",{className:"w-20 text-sm font-mono text-muted-foreground",children:e.value}),a.jsx("div",{className:"flex-1 bg-muted rounded-lg overflow-hidden",children:a.jsx("div",{className:"bg-primary h-8",style:{width:e.value}})}),a.jsx("code",{className:"text-xs text-muted-foreground w-16",children:e.class.replace("p-","")})]},e.name))})})]}),a.jsxs(pe,{children:[a.jsxs(Oe,{children:[a.jsx(Le,{children:"Espaçamento Semântico"}),a.jsx(Tt,{children:"Padrões comuns de espaçamento com nomes semânticos"})]}),a.jsxs(Ee,{className:"space-y-6",children:[a.jsxs("div",{children:[a.jsx("h3",{className:"text-sm font-semibold mb-3",children:"Espaçamento de Componentes"}),a.jsxs("div",{className:"space-y-3",children:[a.jsx(uv,{label:"Compacto (gap-2)",description:"Espaçamento apertado para itens relacionados",className:"gap-2"}),a.jsx(uv,{label:"Padrão (gap-4)",description:"Espaçamento padrão entre elementos",className:"gap-4"}),a.jsx(uv,{label:"Confortável (gap-6)",description:"Espaçamento generoso para respiro",className:"gap-6"})]})]}),a.jsxs("div",{children:[a.jsx("h3",{className:"text-sm font-semibold mb-3",children:"Espaçamento de Seções"}),a.jsxs("div",{className:"space-y-3",children:[a.jsx(uv,{label:"Pequeno (space-y-4)",description:"Seções pequenas ou conteúdo aninhado",className:"gap-4"}),a.jsx(uv,{label:"Médio (space-y-8)",description:"Espaçamento padrão de seção",className:"gap-8"}),a.jsx(uv,{label:"Grande (space-y-12)",description:"Seções principais ou divisões de página",className:"gap-12"})]})]})]})]}),a.jsxs(pe,{children:[a.jsxs(Oe,{children:[a.jsx(Le,{children:"Exemplos de Padding"}),a.jsx(Tt,{children:"Padrões comuns de padding para componentes"})]}),a.jsx(Ee,{className:"space-y-4",children:a.jsxs("div",{className:"space-y-3",children:[a.jsxs("div",{children:[a.jsx("p",{className:"text-sm text-muted-foreground mb-2",children:"Button (px-4 py-2)"}),a.jsx("div",{className:"inline-flex px-4 py-2 bg-primary text-primary-foreground rounded-md",children:"Button Text"})]}),a.jsxs("div",{children:[a.jsx("p",{className:"text-sm text-muted-foreground mb-2",children:"Card (p-6)"}),a.jsx("div",{className:"p-6 bg-card border rounded-lg",children:"Card content with standard padding"})]}),a.jsxs("div",{children:[a.jsx("p",{className:"text-sm text-muted-foreground mb-2",children:"Input (px-3 py-2)"}),a.jsx("div",{className:"px-3 py-2 bg-background border rounded-md",children:"Input field padding"})]})]})})]}),a.jsxs(pe,{children:[a.jsx(Oe,{children:a.jsx(Le,{children:"Diretrizes de Espaçamento"})}),a.jsxs(Ee,{className:"prose prose-slate dark:prose-invert max-w-none",children:[a.jsx("h3",{children:"Princípios"}),a.jsxs("ul",{children:[a.jsxs("li",{children:[a.jsx("strong",{children:"Consistência"}),": Use tokens de espaçamento de forma consistente em toda a aplicação"]}),a.jsxs("li",{children:[a.jsx("strong",{children:"Ritmo"}),": Mantenha ritmo visual usando múltiplos de 4px"]}),a.jsxs("li",{children:[a.jsx("strong",{children:"Respiro"}),": Garanta espaçamento suficiente para leitura e interação confortáveis"]}),a.jsxs("li",{children:[a.jsx("strong",{children:"Agrupamento"}),": Use espaçamento para criar relações visuais entre elementos"]})]}),a.jsx("h3",{children:"Padrões Comuns"}),a.jsxs("ul",{children:[a.jsxs("li",{children:[a.jsx("strong",{children:"Itens relacionados"}),": gap-2 ou gap-3 (8-12px)"]}),a.jsxs("li",{children:[a.jsx("strong",{children:"Componentes"}),": gap-4 ou gap-6 (16-24px)"]}),a.jsxs("li",{children:[a.jsx("strong",{children:"Seções"}),": space-y-8 ou space-y-12 (32-48px)"]}),a.jsxs("li",{children:[a.jsx("strong",{children:"Margens de página"}),": p-6 ou p-8 (24-32px)"]})]}),a.jsx("h3",{children:"Melhores Práticas"}),a.jsxs("ul",{children:[a.jsx("li",{children:"Use utilitários gap para layouts flex/grid ao invés de margins"}),a.jsx("li",{children:"Prefira space-y/space-x para espaçamento consistente entre filhos"}),a.jsxs("li",{children:["Use espaçamento responsivo (ex: ",a.jsx("code",{children:"p-4 md:p-6 lg:p-8"}),") para melhor experiência mobile"]}),a.jsx("li",{children:"Evite valores arbitrários - mantenha-se na escala de espaçamento"})]}),a.jsx("h4",{className:"font-semibold mb-3 mt-6",children:"Exemplos de Código"}),a.jsxs("div",{className:"space-y-4 not-prose",children:[a.jsxs("div",{children:[a.jsx("div",{className:"text-sm font-medium mb-2 text-green-600 dark:text-green-400",children:"✅ Correto"}),a.jsx("pre",{className:"bg-muted p-3 rounded-md text-xs overflow-x-auto",children:a.jsx("code",{children:`<div className="space-y-6">
|
|
407
407
|
<Card className="p-6">
|
|
408
408
|
<div className="flex gap-4">
|
|
409
409
|
<Button>Ação</Button>
|