forlogic-core 2.0.6 → 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 (78) 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 +13 -1
  27. package/dist/crud/components/FilterBar.d.ts +2 -2
  28. package/dist/crud/primitives/Table.d.ts +3 -3
  29. package/dist/crud/primitives/types.d.ts +11 -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/README.md +53 -0
  45. package/{.note/memory/components/action-button-for-tables.md → docs/design-system/patterns/action-button.md} +1 -2
  46. package/{.note/memory/components/alertdialog-permanent-deletion.md → docs/design-system/patterns/alertdialog-deletion.md} +1 -2
  47. package/{.note/memory/components → docs/design-system/patterns}/baseform-custom-fields.md +2 -3
  48. package/{.note/memory/components → docs/design-system/patterns}/baseform-usage.md +1 -2
  49. package/{.note/memory/patterns/body-content-scroll-usage.md → docs/design-system/patterns/body-content-scroll.md} +1 -4
  50. package/{.note/memory/components → docs/design-system/patterns}/combo-tree.md +1 -2
  51. package/docs/design-system/patterns/components-registry.md +17 -0
  52. package/docs/design-system/patterns/crud-bulk-actions.md +12 -0
  53. package/docs/design-system/patterns/crud-config-props.md +16 -0
  54. package/docs/design-system/patterns/crud-defaults.md +17 -0
  55. package/{.note/memory/patterns/crud-toolbar-layout.md → docs/design-system/patterns/crud-toolbar.md} +8 -6
  56. package/{.note/memory/components/delete-confirmation-dialog.md → docs/design-system/patterns/delete-confirmation.md} +1 -9
  57. package/{.note/memory/patterns/dialog-body-scroll-pattern.md → docs/design-system/patterns/dialog-body-scroll.md} +3 -4
  58. package/{.note/memory/components/dialog-sizes-and-structure.md → docs/design-system/patterns/dialog-structure.md} +1 -2
  59. package/{.note/memory/components → docs/design-system/patterns}/dialog-variants.md +5 -8
  60. package/{.note/memory → docs/design-system}/patterns/feature-flags.md +1 -0
  61. package/{.note/memory/patterns/header-metadata-pattern.md → docs/design-system/patterns/header-metadata.md} +1 -6
  62. package/docs/design-system/patterns/i18n-setup.md +117 -0
  63. package/{.note/memory/components/pagination-usage.md → docs/design-system/patterns/pagination.md} +1 -2
  64. package/{.note/memory/patterns/single-scroll-pattern.md → docs/design-system/patterns/single-scroll.md} +1 -2
  65. package/{.note/memory → docs/design-system}/patterns/vite-tailwind-setup.md +1 -2
  66. package/package.json +1 -1
  67. package/.note/memory/features/crud-defaults-batteries-included.md +0 -14
  68. package/.note/memory/features/crud-standardized-config-props.md +0 -3
  69. package/.note/memory/patterns/components-registry.md +0 -18
  70. package/.note/memory/patterns/crud-action-bar-3-zone-layout.md +0 -3
  71. package/.note/memory/patterns/crud-bulk-actions-dropdown-standard.md +0 -3
  72. package/.note/memory/patterns/i18n-setup.md +0 -43
  73. package/docs/AUDIT_PROMPT.md +0 -74
  74. package/docs/KNOWLEDGE.md +0 -109
  75. package/docs/PROJECT_KNOWLEDGE_TEMPLATE.md +0 -117
  76. package/docs/PROMPT_TEMPLATE.md +0 -77
  77. package/docs/STARTER_TEMPLATE.md +0 -114
  78. /package/{.note/memory/patterns/core-providers-setup.md → docs/design-system/patterns/core-providers.md} +0 -0
@@ -58,8 +58,8 @@ export interface SplitButtonProps extends Omit<VariantProps<typeof buttonVariant
58
58
  * onClick={() => handleSave()}
59
59
  * icon={Save}
60
60
  * actions={[
61
- * { id: 'save-draft', label: 'Salvar como Rascunho', onClick: handleSaveDraft },
62
- * { id: 'save-template', label: 'Salvar como Modelo', onClick: handleSaveTemplate },
61
+ * { id: 'save-draft', label: t('save_as_draft'), onClick: handleSaveDraft },
62
+ * { id: 'save-template', label: t('save_as_template'), onClick: handleSaveTemplate },
63
63
  * ]}
64
64
  * />
65
65
  * ```
@@ -15,17 +15,17 @@ export interface TermsOfUseDialogProps {
15
15
  term: TermOfUse;
16
16
  /** Whether the dialog is open */
17
17
  open: boolean;
18
- /** Called when the user clicks "See later" or closes */
18
+ /** Called when the user clicks t('terms_see_later') or closes */
19
19
  onClose: () => void;
20
20
  /** Called when the user agrees to the terms. Receives the term ID. */
21
21
  onAgree: (termId: string) => void;
22
22
  /** Override title */
23
23
  title?: string;
24
- /** Override "See later" button text */
24
+ /** Override t('terms_see_later') button text */
25
25
  seeLaterLabel?: string;
26
26
  /** Override "I have read and agree" button text */
27
27
  agreeLabel?: string;
28
- /** Override "View term" button text */
28
+ /** Override t('terms_view_short') button text */
29
29
  viewTermLabel?: string;
30
30
  }
31
31
  export interface TermsOfUseViewerProps {
@@ -57,7 +57,7 @@ export declare const MESSAGES: {
57
57
  };
58
58
  };
59
59
  /**
60
- * Creates translated MESSAGES using a t() function with PT fallbacks.
60
+ * Creates translated MESSAGES using a i18n.t() function with PT fallbacks.
61
61
  * Safe for projects without i18n — falls back to Portuguese defaults.
62
62
  */
63
63
  export declare const createTranslatedMessages: (t: (key: string, defaultValue: string) => string) => {
@@ -34,8 +34,8 @@ export declare function usePageMetadataContext(): PageMetadataContextType;
34
34
  *
35
35
  * function ImportFlowsPage() {
36
36
  * usePageMetadata({
37
- * title: 'Fluxos de Importação',
38
- * subtitle: 'Gerencie seus fluxos de importação'
37
+ * title: t('import_flows'),
38
+ * subtitle: t('import_manage')
39
39
  * });
40
40
  *
41
41
  * return <div>...</div>;
@@ -44,6 +44,18 @@ export interface CrudTableProps<T extends BaseEntity & {
44
44
  defaultHiddenColumns?: string[];
45
45
  /** Habilita agrupamento de colunas (GroupDropZone + opções de grupo no ColumnSettings). Default: false */
46
46
  enableGrouping?: boolean;
47
+ /** Habilita linhas expandíveis com conteúdo customizado */
48
+ enableExpandableRows?: boolean;
49
+ /** Renderiza o conteúdo expandido de cada linha */
50
+ renderExpandedContent?: (item: T) => React.ReactNode;
51
+ /** IDs das linhas expandidas (modo controlado) */
52
+ expandedRowIds?: string[];
53
+ /** Callback ao expandir/colapsar uma linha (modo controlado) */
54
+ onToggleExpand?: (id: string) => void;
55
+ /** Se todas as linhas iniciam expandidas (default: false) */
56
+ defaultExpandAll?: boolean;
57
+ /** Oculta a coluna de ações separada. Útil quando ações são renderizadas dentro de uma coluna customizada. */
58
+ hideActionsColumn?: boolean;
47
59
  }
48
- export declare const CrudTable: <T extends BaseEntity>({ manager, columns, onEdit, onView, onToggleStatus, onDelete, renderActions, customRowActions, enableBulkActions, rowActionsVariant, onNew, newButtonLabel, showNewButton, customActions, hideActionBar, showActionBar, showSearch, searchValue, onSearchChange, searchPlaceholder, bulkActions, onBulkDelete, filters, viewMode, onViewModeChange, showViewToggle, enableColumnResize, resizeStorageKey, enableColumnManager, columnManagerStorageKey, defaultHiddenColumns, enableGrouping, }: CrudTableProps<T>) => import("react/jsx-runtime").JSX.Element;
60
+ export declare const CrudTable: <T extends BaseEntity>({ manager, columns, onEdit, onView, onToggleStatus, onDelete, renderActions, customRowActions, enableBulkActions, rowActionsVariant, onNew, newButtonLabel, showNewButton, customActions, hideActionBar, showActionBar, showSearch, searchValue, onSearchChange, searchPlaceholder, bulkActions, onBulkDelete, filters, viewMode, onViewModeChange, showViewToggle, enableColumnResize, resizeStorageKey, enableColumnManager, columnManagerStorageKey, defaultHiddenColumns, enableGrouping, enableExpandableRows, renderExpandedContent, expandedRowIds: controlledExpandedIds, onToggleExpand: controlledToggleExpand, defaultExpandAll, hideActionsColumn, }: CrudTableProps<T>) => import("react/jsx-runtime").JSX.Element;
49
61
  export default CrudTable;
@@ -26,7 +26,7 @@ interface FilterBarProps<T extends CrudEntity> {
26
26
  * - `type: 'search'`: Campo de busca integrado com `manager.searchTerm`
27
27
  * - `type: 'custom'`: Componente React customizado (Select, Checkbox, etc)
28
28
  *
29
- * **Botão "Limpar Filtros":**
29
+ * **Botão t('clear_filters'):**
30
30
  * - Aparece quando `manager.searchTerm` tem valor
31
31
  * - Chama `manager.clearFilters()` ao clicar
32
32
  * - Para limpar filtros customizados, sobrescreva `clearFilters` no manager
@@ -94,7 +94,7 @@ interface FilterBarProps<T extends CrudEntity> {
94
94
  *
95
95
  * @example
96
96
  * ```typescript
97
- * // Implementar "Limpar Filtros" customizado
97
+ * // Implementar t('clear_filters') customizado
98
98
  * function ProcessesPage() {
99
99
  * const baseManager = useProcessCrud();
100
100
  * const [statusFilter, setStatusFilter] = useState('all');
@@ -10,17 +10,17 @@
10
10
  * <Table
11
11
  * data={users}
12
12
  * columns={[
13
- * { key: 'name', header: 'Nome', sortable: true },
13
+ * { key: 'name', header: t('ap_name'), sortable: true },
14
14
  * { key: 'email', header: 'Email' }
15
15
  * ]}
16
16
  * sortField="name"
17
17
  * sortDirection="asc"
18
18
  * onSort={(field) => console.log('Sort by:', field)}
19
- * renderActions={(user) => <button>Editar</button>}
19
+ * renderActions={(user) => <button>{t('edit')}</button>}
20
20
  * />
21
21
  * ```
22
22
  */
23
23
  import type { TableProps } from './types';
24
24
  export declare function Table<T extends {
25
25
  id: string;
26
- }>({ data, columns, sortField, sortDirection, onSort, onRowClick, renderActions, isLoading, emptyMessage, className, enableSelection, selectedIds, onSelectItem, onSelectAll, isAllSelected, enableColumnResize, onColumnResize, enableColumnReorder, onReorderColumns, storageKey }: TableProps<T>): import("react/jsx-runtime").JSX.Element;
26
+ }>({ data, columns, sortField, sortDirection, onSort, onRowClick, renderActions, isLoading, emptyMessage, className, enableSelection, selectedIds, onSelectItem, onSelectAll, isAllSelected, enableColumnResize, onColumnResize, enableColumnReorder, onReorderColumns, storageKey, enableExpandableRows, renderExpandedContent, expandedRowIds: controlledExpandedIds, onToggleExpand: controlledToggleExpand, defaultExpandAll, }: TableProps<T>): import("react/jsx-runtime").JSX.Element;
@@ -33,6 +33,16 @@ export interface TableProps<T> {
33
33
  enableColumnReorder?: boolean;
34
34
  onReorderColumns?: (fromIndex: number, toIndex: number) => void;
35
35
  storageKey?: string;
36
+ /** Habilita linhas expandíveis com conteúdo customizado */
37
+ enableExpandableRows?: boolean;
38
+ /** Renderiza o conteúdo expandido de cada linha */
39
+ renderExpandedContent?: (item: T) => React.ReactNode;
40
+ /** IDs das linhas expandidas (modo controlado) */
41
+ expandedRowIds?: string[];
42
+ /** Callback ao expandir/colapsar uma linha (modo controlado) */
43
+ onToggleExpand?: (id: string) => void;
44
+ /** Se todas as linhas iniciam expandidas (default: false) */
45
+ defaultExpandAll?: boolean;
36
46
  }
37
47
  export interface ActionItem {
38
48
  label: string;
@@ -109,7 +119,7 @@ export interface TreeTableProps<T extends TreeNode = TreeNode> {
109
119
  onMoveNode?: (draggedId: string, targetId: string | null) => void;
110
120
  /** Callback ao mover múltiplos nós (seleção em lote): targetId=null significa tornar raiz */
111
121
  onMoveNodes?: (draggedIds: string[], targetId: string | null) => void;
112
- /** Texto exibido na zona de drop para tornar item raiz (default: "Tornar Raiz") */
122
+ /** Texto exibido na zona de drop para tornar item raiz (default: t('leadership_make_root_short')) */
113
123
  rootDropLabel?: string;
114
124
  /** Largura da coluna de ações em px (default: 20) */
115
125
  actionsWidth?: number;
@@ -3,18 +3,9 @@
3
3
  *
4
4
  * Centralized exports for i18n configuration and hooks.
5
5
  * Import this instead of importing directly from react-i18next.
6
- *
7
- * @example
8
- * ```tsx
9
- * import { useTranslation } from 'forlogic-core/i18n';
10
- *
11
- * function MyComponent() {
12
- * const { t } = useTranslation();
13
- * return <Button>{t('save')}</Button>;
14
- * }
15
- * ```
16
6
  */
17
7
  export { default as i18n, addAppTranslations } from './config';
18
8
  export { useTranslation } from 'react-i18next';
19
9
  export { I18nextProvider } from 'react-i18next';
10
+ export { mergeTranslationFiles } from './utils';
20
11
  export * from './constants';
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Mescla múltiplos arquivos de tradução flat em um único objeto.
3
+ * Útil para projetos consumidores que dividem traduções por feature.
4
+ *
5
+ * @example
6
+ * ```ts
7
+ * import { mergeTranslationFiles } from 'forlogic-core/i18n';
8
+ * import common from './pt-BR/common.json';
9
+ * import matrices from './pt-BR/matrices.json';
10
+ *
11
+ * const ptBR = mergeTranslationFiles(common, matrices);
12
+ * ```
13
+ */
14
+ export declare function mergeTranslationFiles(...files: Record<string, string>[]): Record<string, string>;