forlogic-core 1.11.3 → 1.11.5

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
@@ -210,15 +210,13 @@ CREATE INDEX idx_processes_title ON processes.processes(title);
210
210
 
211
211
  A biblioteca `forlogic-core` exporta configurações padronizadas de Vite e Tailwind para garantir consistência de segurança e estilo em todos os projetos.
212
212
 
213
- ### 📦 Instalação
214
-
215
- As configurações estão disponíveis via subpaths do pacote:
213
+ ### 📦 Imports Disponíveis
216
214
 
217
215
  ```typescript
218
- // Configurações Vite
216
+ // Configurações Vite (headers de segurança, CSP, CORS)
219
217
  import { createSecurityHeadersPlugin, createForlogicViteConfig } from 'forlogic-core/vite';
220
218
 
221
- // Preset Tailwind
219
+ // Preset Tailwind (cores, animações, gradientes)
222
220
  import { forlogicTailwindPreset, forlogicContentPaths } from 'forlogic-core/tailwind';
223
221
  ```
224
222
 
@@ -258,64 +256,54 @@ import { defineConfig } from 'vite';
258
256
  import react from '@vitejs/plugin-react-swc';
259
257
  import { createSecurityHeadersPlugin } from 'forlogic-core/vite';
260
258
 
261
- export default defineConfig(({ mode }) => {
262
- const isDev = mode === 'development';
263
-
264
- return {
265
- plugins: [
266
- react(),
267
- createSecurityHeadersPlugin(isDev, {
268
- // URLs do Supabase para permitir conexões
269
- supabaseUrls: [
270
- 'https://seu-projeto-dev.supabase.co',
271
- 'https://seu-projeto-prod.supabase.co',
272
- ],
273
-
274
- // Origens confiáveis adicionais para CORS
275
- trustedOrigins: [
276
- 'https://meu-app.com',
277
- 'https://admin.meu-app.com',
278
- ],
279
-
280
- // APIs externas para connect-src
281
- additionalConnectSrc: [
282
- 'https://api.exemplo.com',
283
- 'wss://websocket.exemplo.com',
284
- ],
285
-
286
- // CDNs de scripts adicionais
287
- additionalScriptSrc: [
288
- 'https://cdn.analytics.com',
289
- ],
290
-
291
- // CDNs de estilos adicionais
292
- additionalStyleSrc: [
293
- 'https://fonts.custom.com',
294
- ],
295
-
296
- // URI para reportar violações CSP
297
- cspReportUri: 'https://seu-projeto.supabase.co/functions/v1/csp-report',
298
-
299
- // Habilitar Trusted Types em produção (default: true)
300
- enableTrustedTypes: true,
301
-
302
- // Upgrade HTTP para HTTPS em produção (default: true)
303
- upgradeInsecureRequests: true,
304
- }),
305
- ],
306
- };
307
- });
259
+ export default defineConfig(({ mode }) => ({
260
+ plugins: [
261
+ react(),
262
+ createSecurityHeadersPlugin(mode === 'development', {
263
+ // URLs do Supabase para permitir conexões
264
+ supabaseUrls: [
265
+ 'https://seu-projeto-dev.supabase.co',
266
+ 'https://seu-projeto-prod.supabase.co',
267
+ ],
268
+
269
+ // Origens confiáveis adicionais para CORS
270
+ trustedOrigins: [
271
+ 'https://meu-app.com',
272
+ 'https://admin.meu-app.com',
273
+ ],
274
+
275
+ // APIs externas para connect-src
276
+ additionalConnectSrc: [
277
+ 'https://api.exemplo.com',
278
+ 'wss://websocket.exemplo.com',
279
+ ],
280
+
281
+ // CDNs de scripts/estilos/fontes adicionais
282
+ additionalScriptSrc: ['https://cdn.analytics.com'],
283
+ additionalStyleSrc: ['https://fonts.custom.com'],
284
+ additionalFontSrc: ['https://fonts.gstatic.com'],
285
+
286
+ // URI para reportar violações CSP
287
+ cspReportUri: 'https://seu-projeto.supabase.co/functions/v1/csp-report',
288
+
289
+ // Opções de produção (defaults: true)
290
+ enableTrustedTypes: true,
291
+ upgradeInsecureRequests: true,
292
+ }),
293
+ ],
294
+ }));
308
295
  ```
309
296
 
310
297
  #### Opções do Plugin
311
298
 
312
299
  | Opção | Tipo | Padrão | Descrição |
313
300
  |-------|------|--------|-----------|
314
- | `supabaseUrls` | `string[]` | `[]` | URLs do Supabase para permitir conexões |
301
+ | `supabaseUrls` | `string[]` | `[]` | URLs do Supabase permitidas |
315
302
  | `trustedOrigins` | `string[]` | `[]` | Origens confiáveis adicionais para CORS |
316
303
  | `additionalScriptSrc` | `string[]` | `[]` | Fontes de script adicionais para CSP |
317
304
  | `additionalStyleSrc` | `string[]` | `[]` | Fontes de estilo adicionais para CSP |
318
305
  | `additionalConnectSrc` | `string[]` | `[]` | APIs/WebSockets adicionais para CSP |
306
+ | `additionalFontSrc` | `string[]` | `[]` | Fontes de font adicionais para CSP |
319
307
  | `cspReportUri` | `string` | - | URI para relatório de violações CSP |
320
308
  | `enableTrustedTypes` | `boolean` | `true` | Habilitar Trusted Types em produção |
321
309
  | `upgradeInsecureRequests` | `boolean` | `true` | Upgrade HTTP→HTTPS em produção |
@@ -324,44 +312,135 @@ export default defineConfig(({ mode }) => {
324
312
 
325
313
  ### 🏗️ Factory de Configuração Vite (Opcional)
326
314
 
327
- Para projetos que desejam usar a configuração completa padronizada:
315
+ Para projetos que desejam usar a configuração padronizada com segurança:
328
316
 
329
317
  ```typescript
330
318
  // vite.config.ts
331
319
  import { defineConfig } from 'vite';
332
320
  import react from '@vitejs/plugin-react-swc';
321
+ import path from 'path';
333
322
  import { createForlogicViteConfig } from 'forlogic-core/vite';
334
323
 
335
- // Cria configuração com opções personalizadas
336
324
  const forlogicConfig = createForlogicViteConfig({
337
- srcAlias: '@', // Alias para ./src
338
- libAlias: 'forlogic-core', // Alias para ./lib (desenvolvimento local)
339
325
  security: {
340
326
  supabaseUrls: ['https://seu-projeto.supabase.co'],
341
327
  trustedOrigins: ['https://meu-app.com'],
342
328
  },
343
- server: {
344
- host: '::',
345
- port: 8080,
346
- },
347
- build: {
348
- chunkSizeWarningLimit: 4000,
349
- },
329
+ server: { host: '::', port: 8080 },
330
+ build: { chunkSizeWarningLimit: 4000 },
350
331
  });
351
332
 
352
333
  export default defineConfig(({ mode }) => {
353
- const config = forlogicConfig(mode === 'development');
334
+ const isDev = mode === 'development';
335
+ const baseConfig = forlogicConfig(isDev);
354
336
 
355
337
  return {
356
- ...config,
338
+ ...baseConfig,
339
+ plugins: [react(), ...baseConfig.plugins],
340
+ // IMPORTANTE: resolve.alias deve usar caminhos absolutos
341
+ resolve: {
342
+ alias: {
343
+ '@': path.resolve(__dirname, './src'),
344
+ },
345
+ },
346
+ };
347
+ });
348
+ ```
349
+
350
+ > **⚠️ IMPORTANTE**: A factory **não** configura `resolve.alias` porque caminhos relativos não funcionam corretamente no build. Cada projeto deve definir seus próprios aliases com `path.resolve(__dirname, './caminho')` para garantir caminhos absolutos.
351
+
352
+ ---
353
+
354
+ ### 📋 Template Completo para Projetos Consumidores
355
+
356
+ Copie e adapte este template para novos projetos:
357
+
358
+ ```typescript
359
+ // vite.config.ts
360
+ import { defineConfig } from 'vite';
361
+ import react from '@vitejs/plugin-react-swc';
362
+ import path from 'path';
363
+ import { createSecurityHeadersPlugin } from 'forlogic-core/vite';
364
+
365
+ export default defineConfig(({ mode }) => {
366
+ const isDev = mode === 'development';
367
+
368
+ return {
369
+ server: {
370
+ host: '::',
371
+ port: 8080,
372
+ },
373
+
374
+ // Força re-bundle quando atualizar forlogic-core
375
+ optimizeDeps: {
376
+ force: true,
377
+ },
378
+
357
379
  plugins: [
358
380
  react(),
359
- ...config.plugins,
381
+ // Headers de segurança (CSP, CORS, etc.)
382
+ createSecurityHeadersPlugin(isDev, {
383
+ supabaseUrls: [
384
+ 'https://SEU_PROJETO.supabase.co',
385
+ ],
386
+ additionalConnectSrc: [
387
+ 'https://*.qualiex.com',
388
+ ],
389
+ // Opcional: URI para relatório de violações CSP
390
+ cspReportUri: isDev
391
+ ? 'https://SEU_PROJETO_DEV.supabase.co/functions/v1/csp-report'
392
+ : 'https://SEU_PROJETO_PROD.supabase.co/functions/v1/csp-report',
393
+ }),
360
394
  ],
395
+
396
+ // CRÍTICO: Aliases devem usar caminhos absolutos
397
+ resolve: {
398
+ alias: {
399
+ '@': path.resolve(__dirname, './src'),
400
+ },
401
+ },
402
+
403
+ publicDir: false,
404
+
405
+ esbuild: {
406
+ sourcemap: true,
407
+ target: 'es2020',
408
+ },
409
+
410
+ build: {
411
+ chunkSizeWarningLimit: 4000,
412
+ },
361
413
  };
362
414
  });
363
415
  ```
364
416
 
417
+ #### Checklist de Configuração
418
+
419
+ ```markdown
420
+ - [ ] Substituiu `SEU_PROJETO` pelas URLs do Supabase
421
+ - [ ] Adicionou origens confiáveis em `additionalConnectSrc` se necessário
422
+ - [ ] Verificou que `resolve.alias` usa `path.resolve(__dirname, ...)`
423
+ - [ ] Reiniciou o servidor após modificar o arquivo
424
+ ```
425
+
426
+ ---
427
+
428
+ ### 🔄 Forçar Re-bundle de Dependências
429
+
430
+ Se você atualizar a `forlogic-core` e as mudanças não aparecerem no preview:
431
+
432
+ ```typescript
433
+ // vite.config.ts
434
+ export default defineConfig(({ mode }) => ({
435
+ optimizeDeps: {
436
+ force: true, // Força re-otimização a cada restart do dev server
437
+ },
438
+ // ...
439
+ }));
440
+ ```
441
+
442
+ > **⚠️ IMPORTANTE**: Após adicionar `force: true`, reinicie o servidor completamente (pare e inicie novamente).
443
+
365
444
  ---
366
445
 
367
446
  ### 🎨 Preset Tailwind CSS
@@ -751,6 +830,48 @@ Se você não fornecer um `queryClient`, o `CoreProviders` cria um com as seguin
751
830
 
752
831
  ---
753
832
 
833
+ ## 🛠️ CLI: Sincronização de Documentação
834
+
835
+ O `forlogic-core` disponibiliza um comando CLI para sincronizar a documentação centralizada do banco de dados para projetos consumidores.
836
+
837
+ ### Uso
838
+
839
+ ```bash
840
+ # Via npx (recomendado)
841
+ npx forlogic-core-pull-docs
842
+
843
+ # Ou adicione ao package.json do seu projeto:
844
+ {
845
+ "scripts": {
846
+ "pull-docs": "forlogic-core-pull-docs"
847
+ }
848
+ }
849
+
850
+ # E execute:
851
+ npm run pull-docs
852
+ ```
853
+
854
+ ### O que é sincronizado
855
+
856
+ | Arquivo | Descrição |
857
+ |---------|-----------|
858
+ | `docs/FORLOGIC_CORE_README.md` | README completo da biblioteca |
859
+ | `docs/DESIGN_SYSTEM.md` | Documentação do Design System |
860
+ | `docs/KNOWLEDGE.md` | Knowledge base para IA/Lovable |
861
+
862
+ ### Benefícios
863
+
864
+ - ✅ **Centralizado**: Documentação mantida em um único lugar (banco de dados)
865
+ - ✅ **Sempre atualizado**: Execute o comando para obter a versão mais recente
866
+ - ✅ **Sem cópia manual**: Não precisa copiar arquivos entre projetos
867
+ - ✅ **Ideal para Custom Knowledge**: Use os arquivos gerados no Lovable
868
+
869
+ ### Requisitos
870
+
871
+ O comando usa credenciais públicas do Supabase do forlogic-core e não requer configuração adicional.
872
+
873
+ ---
874
+
754
875
  <!-- AUTO_GENERATED_START -->
755
876
 
756
877
  ### 📚 Estatísticas da Documentação
package/dist/README.md CHANGED
@@ -210,15 +210,13 @@ CREATE INDEX idx_processes_title ON processes.processes(title);
210
210
 
211
211
  A biblioteca `forlogic-core` exporta configurações padronizadas de Vite e Tailwind para garantir consistência de segurança e estilo em todos os projetos.
212
212
 
213
- ### 📦 Instalação
214
-
215
- As configurações estão disponíveis via subpaths do pacote:
213
+ ### 📦 Imports Disponíveis
216
214
 
217
215
  ```typescript
218
- // Configurações Vite
216
+ // Configurações Vite (headers de segurança, CSP, CORS)
219
217
  import { createSecurityHeadersPlugin, createForlogicViteConfig } from 'forlogic-core/vite';
220
218
 
221
- // Preset Tailwind
219
+ // Preset Tailwind (cores, animações, gradientes)
222
220
  import { forlogicTailwindPreset, forlogicContentPaths } from 'forlogic-core/tailwind';
223
221
  ```
224
222
 
@@ -258,64 +256,54 @@ import { defineConfig } from 'vite';
258
256
  import react from '@vitejs/plugin-react-swc';
259
257
  import { createSecurityHeadersPlugin } from 'forlogic-core/vite';
260
258
 
261
- export default defineConfig(({ mode }) => {
262
- const isDev = mode === 'development';
263
-
264
- return {
265
- plugins: [
266
- react(),
267
- createSecurityHeadersPlugin(isDev, {
268
- // URLs do Supabase para permitir conexões
269
- supabaseUrls: [
270
- 'https://seu-projeto-dev.supabase.co',
271
- 'https://seu-projeto-prod.supabase.co',
272
- ],
273
-
274
- // Origens confiáveis adicionais para CORS
275
- trustedOrigins: [
276
- 'https://meu-app.com',
277
- 'https://admin.meu-app.com',
278
- ],
279
-
280
- // APIs externas para connect-src
281
- additionalConnectSrc: [
282
- 'https://api.exemplo.com',
283
- 'wss://websocket.exemplo.com',
284
- ],
285
-
286
- // CDNs de scripts adicionais
287
- additionalScriptSrc: [
288
- 'https://cdn.analytics.com',
289
- ],
290
-
291
- // CDNs de estilos adicionais
292
- additionalStyleSrc: [
293
- 'https://fonts.custom.com',
294
- ],
295
-
296
- // URI para reportar violações CSP
297
- cspReportUri: 'https://seu-projeto.supabase.co/functions/v1/csp-report',
298
-
299
- // Habilitar Trusted Types em produção (default: true)
300
- enableTrustedTypes: true,
301
-
302
- // Upgrade HTTP para HTTPS em produção (default: true)
303
- upgradeInsecureRequests: true,
304
- }),
305
- ],
306
- };
307
- });
259
+ export default defineConfig(({ mode }) => ({
260
+ plugins: [
261
+ react(),
262
+ createSecurityHeadersPlugin(mode === 'development', {
263
+ // URLs do Supabase para permitir conexões
264
+ supabaseUrls: [
265
+ 'https://seu-projeto-dev.supabase.co',
266
+ 'https://seu-projeto-prod.supabase.co',
267
+ ],
268
+
269
+ // Origens confiáveis adicionais para CORS
270
+ trustedOrigins: [
271
+ 'https://meu-app.com',
272
+ 'https://admin.meu-app.com',
273
+ ],
274
+
275
+ // APIs externas para connect-src
276
+ additionalConnectSrc: [
277
+ 'https://api.exemplo.com',
278
+ 'wss://websocket.exemplo.com',
279
+ ],
280
+
281
+ // CDNs de scripts/estilos/fontes adicionais
282
+ additionalScriptSrc: ['https://cdn.analytics.com'],
283
+ additionalStyleSrc: ['https://fonts.custom.com'],
284
+ additionalFontSrc: ['https://fonts.gstatic.com'],
285
+
286
+ // URI para reportar violações CSP
287
+ cspReportUri: 'https://seu-projeto.supabase.co/functions/v1/csp-report',
288
+
289
+ // Opções de produção (defaults: true)
290
+ enableTrustedTypes: true,
291
+ upgradeInsecureRequests: true,
292
+ }),
293
+ ],
294
+ }));
308
295
  ```
309
296
 
310
297
  #### Opções do Plugin
311
298
 
312
299
  | Opção | Tipo | Padrão | Descrição |
313
300
  |-------|------|--------|-----------|
314
- | `supabaseUrls` | `string[]` | `[]` | URLs do Supabase para permitir conexões |
301
+ | `supabaseUrls` | `string[]` | `[]` | URLs do Supabase permitidas |
315
302
  | `trustedOrigins` | `string[]` | `[]` | Origens confiáveis adicionais para CORS |
316
303
  | `additionalScriptSrc` | `string[]` | `[]` | Fontes de script adicionais para CSP |
317
304
  | `additionalStyleSrc` | `string[]` | `[]` | Fontes de estilo adicionais para CSP |
318
305
  | `additionalConnectSrc` | `string[]` | `[]` | APIs/WebSockets adicionais para CSP |
306
+ | `additionalFontSrc` | `string[]` | `[]` | Fontes de font adicionais para CSP |
319
307
  | `cspReportUri` | `string` | - | URI para relatório de violações CSP |
320
308
  | `enableTrustedTypes` | `boolean` | `true` | Habilitar Trusted Types em produção |
321
309
  | `upgradeInsecureRequests` | `boolean` | `true` | Upgrade HTTP→HTTPS em produção |
@@ -324,44 +312,135 @@ export default defineConfig(({ mode }) => {
324
312
 
325
313
  ### 🏗️ Factory de Configuração Vite (Opcional)
326
314
 
327
- Para projetos que desejam usar a configuração completa padronizada:
315
+ Para projetos que desejam usar a configuração padronizada com segurança:
328
316
 
329
317
  ```typescript
330
318
  // vite.config.ts
331
319
  import { defineConfig } from 'vite';
332
320
  import react from '@vitejs/plugin-react-swc';
321
+ import path from 'path';
333
322
  import { createForlogicViteConfig } from 'forlogic-core/vite';
334
323
 
335
- // Cria configuração com opções personalizadas
336
324
  const forlogicConfig = createForlogicViteConfig({
337
- srcAlias: '@', // Alias para ./src
338
- libAlias: 'forlogic-core', // Alias para ./lib (desenvolvimento local)
339
325
  security: {
340
326
  supabaseUrls: ['https://seu-projeto.supabase.co'],
341
327
  trustedOrigins: ['https://meu-app.com'],
342
328
  },
343
- server: {
344
- host: '::',
345
- port: 8080,
346
- },
347
- build: {
348
- chunkSizeWarningLimit: 4000,
349
- },
329
+ server: { host: '::', port: 8080 },
330
+ build: { chunkSizeWarningLimit: 4000 },
350
331
  });
351
332
 
352
333
  export default defineConfig(({ mode }) => {
353
- const config = forlogicConfig(mode === 'development');
334
+ const isDev = mode === 'development';
335
+ const baseConfig = forlogicConfig(isDev);
354
336
 
355
337
  return {
356
- ...config,
338
+ ...baseConfig,
339
+ plugins: [react(), ...baseConfig.plugins],
340
+ // IMPORTANTE: resolve.alias deve usar caminhos absolutos
341
+ resolve: {
342
+ alias: {
343
+ '@': path.resolve(__dirname, './src'),
344
+ },
345
+ },
346
+ };
347
+ });
348
+ ```
349
+
350
+ > **⚠️ IMPORTANTE**: A factory **não** configura `resolve.alias` porque caminhos relativos não funcionam corretamente no build. Cada projeto deve definir seus próprios aliases com `path.resolve(__dirname, './caminho')` para garantir caminhos absolutos.
351
+
352
+ ---
353
+
354
+ ### 📋 Template Completo para Projetos Consumidores
355
+
356
+ Copie e adapte este template para novos projetos:
357
+
358
+ ```typescript
359
+ // vite.config.ts
360
+ import { defineConfig } from 'vite';
361
+ import react from '@vitejs/plugin-react-swc';
362
+ import path from 'path';
363
+ import { createSecurityHeadersPlugin } from 'forlogic-core/vite';
364
+
365
+ export default defineConfig(({ mode }) => {
366
+ const isDev = mode === 'development';
367
+
368
+ return {
369
+ server: {
370
+ host: '::',
371
+ port: 8080,
372
+ },
373
+
374
+ // Força re-bundle quando atualizar forlogic-core
375
+ optimizeDeps: {
376
+ force: true,
377
+ },
378
+
357
379
  plugins: [
358
380
  react(),
359
- ...config.plugins,
381
+ // Headers de segurança (CSP, CORS, etc.)
382
+ createSecurityHeadersPlugin(isDev, {
383
+ supabaseUrls: [
384
+ 'https://SEU_PROJETO.supabase.co',
385
+ ],
386
+ additionalConnectSrc: [
387
+ 'https://*.qualiex.com',
388
+ ],
389
+ // Opcional: URI para relatório de violações CSP
390
+ cspReportUri: isDev
391
+ ? 'https://SEU_PROJETO_DEV.supabase.co/functions/v1/csp-report'
392
+ : 'https://SEU_PROJETO_PROD.supabase.co/functions/v1/csp-report',
393
+ }),
360
394
  ],
395
+
396
+ // CRÍTICO: Aliases devem usar caminhos absolutos
397
+ resolve: {
398
+ alias: {
399
+ '@': path.resolve(__dirname, './src'),
400
+ },
401
+ },
402
+
403
+ publicDir: false,
404
+
405
+ esbuild: {
406
+ sourcemap: true,
407
+ target: 'es2020',
408
+ },
409
+
410
+ build: {
411
+ chunkSizeWarningLimit: 4000,
412
+ },
361
413
  };
362
414
  });
363
415
  ```
364
416
 
417
+ #### Checklist de Configuração
418
+
419
+ ```markdown
420
+ - [ ] Substituiu `SEU_PROJETO` pelas URLs do Supabase
421
+ - [ ] Adicionou origens confiáveis em `additionalConnectSrc` se necessário
422
+ - [ ] Verificou que `resolve.alias` usa `path.resolve(__dirname, ...)`
423
+ - [ ] Reiniciou o servidor após modificar o arquivo
424
+ ```
425
+
426
+ ---
427
+
428
+ ### 🔄 Forçar Re-bundle de Dependências
429
+
430
+ Se você atualizar a `forlogic-core` e as mudanças não aparecerem no preview:
431
+
432
+ ```typescript
433
+ // vite.config.ts
434
+ export default defineConfig(({ mode }) => ({
435
+ optimizeDeps: {
436
+ force: true, // Força re-otimização a cada restart do dev server
437
+ },
438
+ // ...
439
+ }));
440
+ ```
441
+
442
+ > **⚠️ IMPORTANTE**: Após adicionar `force: true`, reinicie o servidor completamente (pare e inicie novamente).
443
+
365
444
  ---
366
445
 
367
446
  ### 🎨 Preset Tailwind CSS
@@ -751,82 +830,124 @@ Se você não fornecer um `queryClient`, o `CoreProviders` cria um com as seguin
751
830
 
752
831
  ---
753
832
 
754
- <!-- AUTO_GENERATED_START -->
755
-
756
- ### 📚 Estatísticas da Documentação
757
-
758
- **49 Componentes UI** | **6 Tokens** | **2 Ferramentas CRUD**
759
-
760
- ---
761
-
762
- ### 🎨 Fundamentos (Tokens)
763
-
764
- - [Colors Foundation](./docs/DESIGN_SYSTEM.md#colorsfoundation) - Sistema de cores completo com escalas neutras, de marca e funcionais.
765
- - [Radius](./docs/DESIGN_SYSTEM.md#radius) - Sistema de arredondamento de bordas para consistência visual.
766
- - [Shadows](./docs/DESIGN_SYSTEM.md#shadows) - Sistema de sombras e elevação para criar profundidade e hierarquia.
767
- - [Spacing](./docs/DESIGN_SYSTEM.md#spacing) - Escala de espaçamento consistente baseada em uma unidade base de 4px.
768
- - [Typography](./docs/DESIGN_SYSTEM.md#typographycomponent) - Componentes de tipografia para estilos de texto consistentes em toda a sua aplicação.
769
- - [Typography Foundation](./docs/DESIGN_SYSTEM.md#typographyfoundation) - Sistema tipográfico completo com Display, Headings, Body e mais.
770
-
771
- ### 🧩 Componentes UI
772
-
773
- - [Accordion](./docs/DESIGN_SYSTEM.md#accordion) - Um conjunto de cabeçalhos interativos empilhados verticalmente, onde cada um revela uma seção de conteúdo.
774
- - [Action Button](./docs/DESIGN_SYSTEM.md#actionbutton) - Botão compacto otimizado para ações em linhas de tabela e menus dropdown.
775
- - [Alert](./docs/DESIGN_SYSTEM.md#alert) - Exibe uma mensagem de destaque para chamar a atenção do usuário.
776
- - [Aspect Ratio](./docs/DESIGN_SYSTEM.md#aspectratio) - Exibe conteúdo dentro de uma proporção desejada.
777
- - [Avatar](./docs/DESIGN_SYSTEM.md#avatar) - Um elemento de imagem com fallback para representar o usuário.
778
- - [Badge](./docs/DESIGN_SYSTEM.md#badge) - Exibe um badge ou um componente que se parece com um badge.
779
- - [Breadcrumb](./docs/DESIGN_SYSTEM.md#breadcrumb) - Exibe o caminho até o recurso atual usando uma hierarquia de links.
780
- - [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.
781
- - [Button Group](./docs/DESIGN_SYSTEM.md#buttongroup) - Agrupa botões relacionados com espaçamento e bordas apropriados.
782
- - [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.
783
- - [Card](./docs/DESIGN_SYSTEM.md#card) - Exibe um card com cabeçalho, conteúdo e rodapé.
784
- - [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.
785
- - [Checkbox](./docs/DESIGN_SYSTEM.md#checkbox) - Um controle que permite ao usuário alternar entre marcado e desmarcado.
786
- - [Collapsible](./docs/DESIGN_SYSTEM.md#collapsible) - Um componente interativo que expande/colapsa um painel.
787
- - [Color Picker](./docs/DESIGN_SYSTEM.md#colorpicker) - Seletor de cores com paleta predefinida e seletor customizado.
788
- - [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.
789
- - [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.
790
- - [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.
791
- - [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.
792
- - [Empty State](./docs/DESIGN_SYSTEM.md#emptystate) - Componente para exibir estados vazios com ícone, mensagem e ação opcional.
793
- - [Form](./docs/DESIGN_SYSTEM.md#form) - Construindo formulários com React Hook Form e Zod.
794
- - [Grid](./docs/DESIGN_SYSTEM.md#grid) - Sistema de grid responsivo com configuração simplificada de colunas e espaçamento.
795
- - [Icon Picker](./docs/DESIGN_SYSTEM.md#iconpicker) - Seletor de ícones da biblioteca Lucide React com busca integrada.
796
- - [Input](./docs/DESIGN_SYSTEM.md#input) - Exibe um campo de entrada de texto.
797
- - [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.
798
- - [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.
799
- - [Label](./docs/DESIGN_SYSTEM.md#label) - Renderiza uma label acessível associada a controles.
800
- - [Loading State](./docs/DESIGN_SYSTEM.md#loadingstate) - Componente para gerenciar estados de loading de forma declarativa com dois tipos: spinner e overlay.
801
- - [Native Select](./docs/DESIGN_SYSTEM.md#nativeselect) - Elemento select nativo do HTML com estilização.
802
- - [Pagination](./docs/DESIGN_SYSTEM.md#pagination) - Barra de paginação completa com seletor de itens por página e controles de navegação.
803
- - [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.
804
- - [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.
805
- - [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.
806
- - [Scroll Area](./docs/DESIGN_SYSTEM.md#scrollarea) - Aprimora a funcionalidade de rolagem nativa para estilização personalizada e cross-browser.
807
- - [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.
808
- - [Select](./docs/DESIGN_SYSTEM.md#select) - Exibe uma lista de opções para o usuário escolher—acionada por um botão.
809
- - [Separator](./docs/DESIGN_SYSTEM.md#separator) - Separa visual ou semanticamente o conteúdo.
810
- - [Sheet](./docs/DESIGN_SYSTEM.md#sheet) - Estende o componente Dialog para exibir conteúdo que complementa o conteúdo principal da tela.
811
- - [Skeleton](./docs/DESIGN_SYSTEM.md#skeleton) - Componente de placeholder para estados de carregamento. Inclui variantes pré-configuradas para tabelas, cards, formulários e mais.
812
- - [Slider](./docs/DESIGN_SYSTEM.md#slider) - Um input onde o usuário seleciona um valor dentro de um intervalo determinado.
813
- - [Spinner](./docs/DESIGN_SYSTEM.md#spinner) - Um componente de spinner de carregamento para indicar estado de carregamento.
814
- - [Stack](./docs/DESIGN_SYSTEM.md#stack) - Layout de pilha flexível com controle de direção, espaçamento, alinhamento e justificação.
815
- - [Switch](./docs/DESIGN_SYSTEM.md#switch) - Um controle que permite ao usuário alternar entre marcado e desmarcado.
816
- - [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.
817
- - [Table](./docs/DESIGN_SYSTEM.md#table) - Uma tabela semântica para exibir dados tabulares.
818
- - [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.
819
- - [Textarea](./docs/DESIGN_SYSTEM.md#textarea) - Exibe um textarea de formulário ou um componente que se parece com um textarea.
820
- - [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.
821
- - [Toggle](./docs/DESIGN_SYSTEM.md#toggle) - Botões de dois estados que podem estar ligados ou desligados, individualmente ou em grupo.
822
-
823
- ### 🚀 Sistema CRUD
824
-
825
- - [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.
826
- - [Wizard Form](./docs/DESIGN_SYSTEM.md#wizardform) - Formulário multi-etapas com validação, navegação entre seções e indicadores de progresso.
827
-
828
- ---
829
-
830
- > 📘 **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).
831
-
833
+ ## 🛠️ CLI: Sincronização de Documentação
834
+
835
+ O `forlogic-core` disponibiliza um comando CLI para sincronizar a documentação centralizada do banco de dados para projetos consumidores.
836
+
837
+ ### Uso
838
+
839
+ ```bash
840
+ # Via npx (recomendado)
841
+ npx forlogic-core-pull-docs
842
+
843
+ # Ou adicione ao package.json do seu projeto:
844
+ {
845
+ "scripts": {
846
+ "pull-docs": "forlogic-core-pull-docs"
847
+ }
848
+ }
849
+
850
+ # E execute:
851
+ npm run pull-docs
852
+ ```
853
+
854
+ ### O que é sincronizado
855
+
856
+ | Arquivo | Descrição |
857
+ |---------|-----------|
858
+ | `docs/FORLOGIC_CORE_README.md` | README completo da biblioteca |
859
+ | `docs/DESIGN_SYSTEM.md` | Documentação do Design System |
860
+ | `docs/KNOWLEDGE.md` | Knowledge base para IA/Lovable |
861
+
862
+ ### Benefícios
863
+
864
+ - **Centralizado**: Documentação mantida em um único lugar (banco de dados)
865
+ - **Sempre atualizado**: Execute o comando para obter a versão mais recente
866
+ - **Sem cópia manual**: Não precisa copiar arquivos entre projetos
867
+ - **Ideal para Custom Knowledge**: Use os arquivos gerados no Lovable
868
+
869
+ ### Requisitos
870
+
871
+ O comando usa credenciais públicas do Supabase do forlogic-core e não requer configuração adicional.
872
+
873
+ ---
874
+
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
+
832
953
  <!-- AUTO_GENERATED_END -->
@@ -0,0 +1,61 @@
1
+ #!/usr/bin/env node
2
+ #!/usr/bin/env node
3
+ import * as fs from 'fs';
4
+ import * as path from 'path';
5
+ import { createClient } from '@supabase/supabase-js';
6
+
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
+ );
13
+ const DOCS_TO_SYNC = [
14
+ { type: "readme", outputFile: "docs/FORLOGIC_CORE_README.md" },
15
+ { type: "design_system", outputFile: "docs/DESIGN_SYSTEM.md" },
16
+ { type: "knowledge", outputFile: "docs/KNOWLEDGE.md" }
17
+ ];
18
+ async function pullDocs() {
19
+ console.log("\u{1F4E5} Puxando documenta\xE7\xE3o do forlogic-core...\n");
20
+ let successCount = 0;
21
+ let errorCount = 0;
22
+ for (const doc of DOCS_TO_SYNC) {
23
+ try {
24
+ const { data, error } = await supabase.schema("common").from("documentation").select("content, updated_at").eq("type", doc.type).single();
25
+ if (error) {
26
+ console.error(`\u274C Erro ao buscar ${doc.type}:`, error.message);
27
+ errorCount++;
28
+ continue;
29
+ }
30
+ if (!data) {
31
+ console.warn(`\u26A0\uFE0F Documento '${doc.type}' n\xE3o encontrado no banco`);
32
+ errorCount++;
33
+ continue;
34
+ }
35
+ const outputPath = path.join(process.cwd(), doc.outputFile);
36
+ const outputDir = path.dirname(outputPath);
37
+ if (!fs.existsSync(outputDir)) {
38
+ fs.mkdirSync(outputDir, { recursive: true });
39
+ }
40
+ fs.writeFileSync(outputPath, data.content, "utf-8");
41
+ console.log(`\u2705 ${doc.type} \u2192 ${doc.outputFile}`);
42
+ console.log(` \u{1F4CA} Tamanho: ${(data.content.length / 1024).toFixed(2)} KB`);
43
+ console.log(` \u{1F550} \xDAltima atualiza\xE7\xE3o: ${data.updated_at}
44
+ `);
45
+ successCount++;
46
+ } catch (err) {
47
+ console.error(`\u274C Erro ao processar ${doc.type}:`, err.message);
48
+ errorCount++;
49
+ }
50
+ }
51
+ console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501");
52
+ console.log(`\u{1F389} Sincroniza\xE7\xE3o conclu\xEDda!`);
53
+ console.log(` \u2705 Sucesso: ${successCount}`);
54
+ console.log(` \u274C Erros: ${errorCount}
55
+ `);
56
+ if (successCount > 0) {
57
+ console.log("\u{1F4A1} Arquivos sincronizados em docs/");
58
+ console.log(" Use no Custom Knowledge do Lovable ou como refer\xEAncia.\n");
59
+ }
60
+ }
61
+ pullDocs();
@@ -162,8 +162,6 @@ function createSecurityHeadersPlugin(isDev, options = {}) {
162
162
 
163
163
  function createForlogicViteConfig(options = {}) {
164
164
  const {
165
- srcAlias = "@",
166
- libAlias = "forlogic-core",
167
165
  security = {},
168
166
  server = {},
169
167
  build = {},
@@ -180,13 +178,6 @@ function createForlogicViteConfig(options = {}) {
180
178
  host: server.host ?? "::",
181
179
  port: server.port ?? 8080
182
180
  },
183
- resolve: {
184
- alias: {
185
- [srcAlias]: "./src",
186
- [libAlias]: "./lib",
187
- "/assets": "./lib/assets"
188
- }
189
- },
190
181
  publicDir: false,
191
182
  esbuild: {
192
183
  sourcemap: build.sourcemap ?? true,
@@ -164,8 +164,6 @@ function createSecurityHeadersPlugin(isDev, options = {}) {
164
164
 
165
165
  function createForlogicViteConfig(options = {}) {
166
166
  const {
167
- srcAlias = "@",
168
- libAlias = "forlogic-core",
169
167
  security = {},
170
168
  server = {},
171
169
  build = {},
@@ -182,13 +180,6 @@ function createForlogicViteConfig(options = {}) {
182
180
  host: server.host ?? "::",
183
181
  port: server.port ?? 8080
184
182
  },
185
- resolve: {
186
- alias: {
187
- [srcAlias]: "./src",
188
- [libAlias]: "./lib",
189
- "/assets": "./lib/assets"
190
- }
191
- },
192
183
  publicDir: false,
193
184
  esbuild: {
194
185
  sourcemap: build.sourcemap ?? true,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "forlogic-core",
3
- "version": "1.11.3",
3
+ "version": "1.11.5",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.esm.js",
@@ -12,7 +12,17 @@
12
12
  "types": "./dist/index.d.ts"
13
13
  },
14
14
  "./index.css": "./dist/index.css",
15
- "./tokens": "./dist/tokens/index.js"
15
+ "./tokens": "./dist/tokens/index.js",
16
+ "./vite": {
17
+ "import": "./dist/vite/index.esm.js",
18
+ "require": "./dist/vite/index.js",
19
+ "types": "./dist/vite/index.d.ts"
20
+ },
21
+ "./tailwind": {
22
+ "import": "./dist/tailwind/index.esm.js",
23
+ "require": "./dist/tailwind/index.js",
24
+ "types": "./dist/tailwind/index.d.ts"
25
+ }
16
26
  },
17
27
  "files": [
18
28
  "dist",