forlogic-core 2.0.7 → 2.0.8

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.
Files changed (51) hide show
  1. package/.note/memory/patterns/admin-i18n-policy.md +20 -0
  2. package/.note/memory/patterns/i18n-architecture.md +3 -0
  3. package/README.md +34 -269
  4. package/dist/action-plans/constants.d.ts +23 -3
  5. package/dist/audit-trail/utils.d.ts +5 -5
  6. package/dist/auth/components/EditProfileDialog.d.ts +12 -0
  7. package/dist/auth/contexts/AuthContext.d.ts +1 -1
  8. package/dist/auth/services/AuthService.d.ts +1 -1
  9. package/dist/components/dashboards/panels/panel-header.d.ts +1 -1
  10. package/dist/components/layout/SidebarActionTrigger.d.ts +3 -3
  11. package/dist/components/modules/ModuleAccessGuard.d.ts +1 -1
  12. package/dist/components/modules/icons/ModulesCardIcons.d.ts +2 -2
  13. package/dist/components/ui/color-picker.d.ts +2 -2
  14. package/dist/components/ui/combo-tree.d.ts +3 -1
  15. package/dist/components/ui/data-list.d.ts +2 -2
  16. package/dist/components/ui/dialog-wizard.d.ts +1 -1
  17. package/dist/components/ui/dialog.d.ts +1 -1
  18. package/dist/components/ui/disabled-menu-item.d.ts +1 -1
  19. package/dist/components/ui/empty-state.d.ts +9 -9
  20. package/dist/components/ui/onboarding-dialog.d.ts +1 -1
  21. package/dist/components/ui/popover.d.ts +1 -1
  22. package/dist/components/ui/split-button.d.ts +2 -2
  23. package/dist/components/ui/terms-of-use-dialog.d.ts +3 -3
  24. package/dist/config/index.d.ts +1 -1
  25. package/dist/contexts/PageMetadataContext.d.ts +2 -2
  26. package/dist/crud/components/CrudTable.d.ts +3 -1
  27. package/dist/crud/components/FilterBar.d.ts +2 -2
  28. package/dist/crud/primitives/Table.d.ts +2 -2
  29. package/dist/crud/primitives/types.d.ts +1 -1
  30. package/dist/i18n/index.d.ts +1 -10
  31. package/dist/i18n/utils.d.ts +14 -0
  32. package/dist/index.css +1 -1
  33. package/dist/index.css.map +1 -1
  34. package/dist/index.esm.js +1 -1
  35. package/dist/index.js +1 -1
  36. package/dist/leadership/components/LeadershipPage.d.ts +1 -1
  37. package/dist/media/components/ImageRenderer.d.ts +1 -1
  38. package/dist/media/components/VideoEditor.d.ts +0 -20
  39. package/dist/media/components/VideoRenderer.d.ts +0 -6
  40. package/dist/qualiex/components/QualiexUserField.d.ts +1 -1
  41. package/dist/types.d.ts +1 -0
  42. package/docs/WORKSPACE_KNOWLEDGE.md +254 -0
  43. package/docs/design-system/README.md +1 -1
  44. package/docs/design-system/patterns/feature-flags.md +1 -0
  45. package/docs/design-system/patterns/i18n-setup.md +76 -1
  46. package/package.json +1 -1
  47. package/docs/AUDIT_PROMPT.md +0 -74
  48. package/docs/KNOWLEDGE.md +0 -109
  49. package/docs/PROJECT_KNOWLEDGE_TEMPLATE.md +0 -120
  50. package/docs/PROMPT_TEMPLATE.md +0 -77
  51. package/docs/STARTER_TEMPLATE.md +0 -114
@@ -1,120 +0,0 @@
1
- # KNOWLEDGE — [Nome do Módulo]
2
-
3
- > Copie este template para o Project Knowledge do seu projeto Lovable.
4
- > Preencha os placeholders `[...]` e remova comentários `<!-- -->`.
5
-
6
- ---
7
-
8
- ## 0. Schema
9
-
10
- > ⚠️ **SCHEMA_PADRAO = `[seu_schema]`**
11
-
12
- ```ts
13
- supabase.schema('[seu_schema]').from('tabela').select('*');
14
- ```
15
-
16
- ---
17
-
18
- ## 1. Regras do Módulo
19
-
20
- <!-- Liste regras específicas deste módulo que a IA precisa saber -->
21
-
22
- - [Regra 1: ex: Processos só podem ser inativados, nunca deletados]
23
- - [Regra 2: ex: Todo documento precisa de aprovação antes de publicar]
24
- - [Regra 3: ex: Usuários só veem dados do próprio alias/empresa]
25
-
26
- ---
27
-
28
- ## 2. Mapa de Telas
29
-
30
- <!-- Para cada tela, descreva: nome, tipo, tabela e componentes do DS -->
31
-
32
- ### [Nome da Tela 1: ex: Processos]
33
-
34
- - **Tipo**: CRUD listagem
35
- - **Tabela**: `[processes]`
36
- - **Componente DS**: `createCrudPage` ou `CrudTable`
37
- - **Colunas**: [title, status, responsible, updated_at]
38
- - **Ações de linha**: [Editar, Duplicar, Inativar]
39
- - **Filtros**: [status, responsible]
40
-
41
- ### [Nome da Tela 2: ex: Formulário de Processo]
42
-
43
- - **Tipo**: Formulário (Dialog ou página)
44
- - **Tabela**: `[processes]`
45
- - **Campos**:
46
- - `title` — text, obrigatório
47
- - `description` — textarea
48
- - `status` — Combobox (Ativo, Inativo, Rascunho)
49
- - `id_responsible` — Combobox (busca em users)
50
- - `due_date` — DatePicker
51
-
52
- <!-- Repita para cada tela do módulo -->
53
-
54
- ---
55
-
56
- ## 3. Tabelas e Relacionamentos
57
-
58
- <!-- Liste as tabelas do módulo com campos principais -->
59
-
60
- | Tabela | Campos principais | FKs |
61
- |--------|-------------------|-----|
62
- | `[processes]` | id, title, status, created_at, deleted_at | id_responsible → users |
63
- | `[documents]` | id, name, version, id_process | id_process → processes |
64
-
65
- ---
66
-
67
- ## 4. Enums e Status
68
-
69
- <!-- Liste valores possíveis para campos de status/tipo -->
70
-
71
- | Campo | Valores |
72
- |-------|---------|
73
- | `processes.status` | `active`, `inactive`, `draft` |
74
- | `documents.type` | `policy`, `procedure`, `instruction` |
75
-
76
- ---
77
-
78
- ## 5. Regras de Negócio por Tela
79
-
80
- <!-- Detalhe regras específicas que afetam a UI -->
81
-
82
- ### [Processos]
83
- - Ao inativar: confirmar com Dialog, definir `deleted_at = now()`
84
- - Coluna status: exibir com Badge colorido (active=green, inactive=red)
85
- - Busca: pesquisar em `title` e `description`
86
-
87
- ### [Formulário]
88
- - Campo `title`: mínimo 3 caracteres
89
- - Campo `id_responsible`: carregar de `users` filtrado por alias
90
- - Ao salvar: validar com Zod, exibir toast de sucesso
91
-
92
- ---
93
-
94
- ## 6. Imports Obrigatórios
95
-
96
- ```ts
97
- import {
98
- createCrudPage, CrudTable, CrudActionBar,
99
- Button, Dialog, Input, Combobox, ActionButton,
100
- BaseForm, EmptyState, LoadingState,
101
- cn, useTranslation, getSupabaseClient
102
- } from 'forlogic-core';
103
- ```
104
-
105
- ---
106
-
107
- ## 7. Fontes de Contexto (Cross-Project)
108
-
109
- Antes de criar qualquer componente, leia via cross-project (`@Admin`):
110
-
111
- | O que | Onde buscar |
112
- |-------|------------|
113
- | Padrões universais (componentes, CRUD, layout, scroll, setup) | `@Admin docs/design-system/patterns/` |
114
- | Índice dos padrões | `@Admin docs/design-system/patterns/README.md` |
115
- | Documentação MD do Design System | `@Admin docs/design-system/*.md` |
116
- | Código-fonte dos componentes | `@Admin lib/components/ui/` |
117
- | Implementação CRUD | `@Admin lib/crud/` |
118
- | Design System visual | Rota `/ds` no app Admin |
119
-
120
- Nunca crie componentes sem consultar esses arquivos primeiro.
@@ -1,77 +0,0 @@
1
- # Prompt Template — Criação de Telas com Design System
2
-
3
- > **Como usar**: Copie o bloco abaixo e cole como **primeiro prompt** ao iniciar uma conversa no Lovable para criar/migrar telas em projetos consumidores. Preencha os placeholders `[...]`.
4
-
5
- ---
6
-
7
- ## Prompt para copiar
8
-
9
- ```
10
- Antes de gerar qualquer código, leia OBRIGATORIAMENTE a documentação do Design System via cross-project:
11
-
12
- @Admin docs/design-system/crud.md — para telas de listagem (CRUD)
13
- @Admin docs/design-system/inputs.md — para campos de formulário
14
- @Admin docs/design-system/selectors.md — para selects, combos, multiselect
15
- @Admin docs/design-system/layout.md — para estrutura de página (AppSidebar, AppLayout)
16
- @Admin docs/design-system/dialogs.md — para modais e confirmações
17
- @Admin docs/design-system/buttons-actions.md — para botões e ações
18
- @Admin docs/design-system/data-display.md — para exibição de dados
19
- @Admin docs/design-system/tables-grids.md — para tabelas e grids
20
-
21
- Regras obrigatórias:
22
- 1. TODO import de componente visual DEVE vir de `forlogic-core` — nunca criar componente local se existir na lib
23
- 2. Usar `createCrudPage` para telas de listagem simples, `CrudTable` para customizadas
24
- 3. Usar `Combobox` para selects com busca (nunca Select nativo ou StatusSelect)
25
- 4. Usar `ActionButton` para ações de linha (nunca ícone MoreHorizontal solto)
26
- 5. Usar `Dialog` para confirmações (nunca DeleteConfirmationDialog)
27
- 6. Usar `.schema('SCHEMA_PADRAO')` em toda query Supabase
28
- 7. Usar `useTranslation` de `forlogic-core`, nunca de `react-i18next`
29
-
30
- ---
31
-
32
- Agora crie a seguinte tela:
33
-
34
- **Nome da tela**: [ex: Gestão de Processos]
35
- **Tipo**: [CRUD listagem | Formulário | Dashboard | Detalhe]
36
- **Schema Supabase**: [ex: quality]
37
- **Tabela principal**: [ex: processes]
38
-
39
- **Campos da listagem** (se CRUD):
40
- - [campo1]: [tipo] — [descrição]
41
- - [campo2]: [tipo] — [descrição]
42
-
43
- **Campos do formulário** (se tiver criação/edição):
44
- - [campo1]: [tipo, obrigatório?] — [descrição]
45
- - [campo2]: [tipo, obrigatório?] — [descrição]
46
-
47
- **Regras de negócio**:
48
- - [regra 1]
49
- - [regra 2]
50
-
51
- **Ações disponíveis**:
52
- - [ação 1: ex: Editar, Duplicar, Inativar]
53
- ```
54
-
55
- ---
56
-
57
- ## Mapeamento: Tipo de tela → Docs obrigatórios
58
-
59
- | Tipo de tela | Docs que a IA DEVE ler |
60
- |--------------|------------------------|
61
- | CRUD listagem | `crud.md`, `buttons-actions.md`, `tables-grids.md` |
62
- | Formulário | `inputs.md`, `selectors.md`, `dialogs.md` |
63
- | Dashboard | `charts-dashboards.md`, `data-display.md` |
64
- | Página com sidebar | `layout.md`, `navigation.md` |
65
- | Modal/Dialog | `dialogs.md`, `inputs.md` |
66
-
67
- ---
68
-
69
- ## Checklist de revisão pós-geração
70
-
71
- - [ ] Todos os imports vêm de `forlogic-core`?
72
- - [ ] Nenhum componente foi criado localmente quando existe na lib?
73
- - [ ] `Combobox` usado em vez de Select/StatusSelect?
74
- - [ ] `ActionButton` usado para ações de linha?
75
- - [ ] `CrudActionBar` com layout de 3 zonas?
76
- - [ ] `.schema('SCHEMA_PADRAO')` em toda query?
77
- - [ ] Soft delete em vez de DELETE físico?
@@ -1,114 +0,0 @@
1
- # Starter Template — Projeto Consumidor forlogic-core
2
-
3
- > **Como usar**: Ao criar um novo projeto no Lovable, cole este conteúdo como **primeiro prompt** para gerar a estrutura base completa.
4
-
5
- ---
6
-
7
- ## Prompt para criar projeto base
8
-
9
- ```
10
- Crie a estrutura base do projeto seguindo EXATAMENTE este boilerplate.
11
- Leia @Admin docs/design-system/layout.md antes de começar.
12
-
13
- ### 1. vite.config.ts
14
-
15
- import { defineConfig } from 'vite';
16
- import react from '@vitejs/plugin-react-swc';
17
- import path from 'path';
18
- import { createSecurityHeadersPlugin } from 'forlogic-core/vite';
19
-
20
- export default defineConfig(({ mode }) => ({
21
- plugins: [
22
- react(),
23
- createSecurityHeadersPlugin(mode === 'development', {
24
- supabaseUrls: ['https://SEU_PROJETO.supabase.co'],
25
- additionalConnectSrc: ['https://*.qualiex.com'],
26
- }),
27
- ],
28
- resolve: { alias: { '@': path.resolve(__dirname, './src') } },
29
- optimizeDeps: { force: true },
30
- }));
31
-
32
- ### 2. tailwind.config.ts
33
-
34
- import type { Config } from 'tailwindcss';
35
- import { forlogicTailwindPreset, forlogicContentPaths } from 'forlogic-core/tailwind';
36
-
37
- export default {
38
- presets: [forlogicTailwindPreset],
39
- content: ['./src/**/*.{ts,tsx}', ...forlogicContentPaths],
40
- } satisfies Config;
41
-
42
- ### 3. src/App.tsx
43
-
44
- import { BrowserRouter, Routes, Route, Navigate } from 'react-router-dom';
45
- import { CoreProviders, AppLayout } from 'forlogic-core';
46
- import { Home, FileText, Settings } from 'lucide-react';
47
- import ptBR from './i18n/pt-BR.json';
48
- import { HomePage } from './pages/HomePage';
49
-
50
- const sidebarConfig = {
51
- navigation: [
52
- { label: 'Início', path: '/', icon: Home },
53
- { label: 'Registros', path: '/registros', icon: FileText },
54
- { type: 'separator' as const, label: '', path: '' },
55
- { label: 'Configurações', path: '/config', icon: Settings },
56
- ],
57
- };
58
-
59
- function AppRoutes() {
60
- return (
61
- <AppLayout sidebarConfig={sidebarConfig}>
62
- <Routes>
63
- <Route path="/" element={<HomePage />} />
64
- <Route path="*" element={<Navigate to="/" replace />} />
65
- </Routes>
66
- </AppLayout>
67
- );
68
- }
69
-
70
- export default function App() {
71
- return (
72
- <CoreProviders moduleAlias="SEU_MODULO" appTranslations={{ 'pt-BR': ptBR }}>
73
- <BrowserRouter>
74
- <AppRoutes />
75
- </BrowserRouter>
76
- </CoreProviders>
77
- );
78
- }
79
-
80
- ### 4. src/pages/HomePage.tsx
81
-
82
- import { usePageMetadata } from 'forlogic-core';
83
-
84
- export function HomePage() {
85
- usePageMetadata({ title: 'Início', subtitle: 'Bem-vindo ao módulo' });
86
- return <div className="p-6">Conteúdo aqui</div>;
87
- }
88
-
89
- ### 5. src/i18n/pt-BR.json
90
-
91
- {
92
- "home": "Início",
93
- "records": "Registros",
94
- "settings": "Configurações"
95
- }
96
-
97
- Substitua:
98
- - SEU_PROJETO pelo ref do Supabase
99
- - SEU_MODULO pelo alias do módulo (ex: "performance", "suppliers")
100
- - Ajuste as rotas e sidebar conforme o módulo
101
- ```
102
-
103
- ---
104
-
105
- ## Checklist pós-criação
106
-
107
- - [ ] `forlogic-core` instalado como dependência
108
- - [ ] `vite.config.ts` usando `createSecurityHeadersPlugin`
109
- - [ ] `tailwind.config.ts` usando `forlogicTailwindPreset` + `forlogicContentPaths`
110
- - [ ] `App.tsx` usando `CoreProviders` + `AppLayout`
111
- - [ ] Sidebar com itens e separadores definidos
112
- - [ ] `usePageMetadata` em cada página
113
- - [ ] `.schema('SCHEMA_PADRAO')` em toda query Supabase
114
- - [ ] Arquivo `pt-BR.json` com traduções do módulo