+
full-page.page.form
+
Form Type: {formPageType}
+
{t('fields.code')}
+
{t('fields.name')}
+
{t('fields.status')}
+
{t('fields.description')}
+
{t('validation:required')}
+
{t('common:save')}
+
+ );
+}
diff --git a/apps/web/src/apps/modules/example/full-page/presentation/pages/full-page.page.index.tsx b/apps/web/src/apps/modules/example/full-page/presentation/pages/full-page.page.index.tsx
new file mode 100644
index 0000000..480e528
--- /dev/null
+++ b/apps/web/src/apps/modules/example/full-page/presentation/pages/full-page.page.index.tsx
@@ -0,0 +1,102 @@
+import { Table, Box, Title, Paper } from '@repo/ui/components';
+import { PageActions } from '@repo/ui/components';
+import {
+ useEnterpriseModuleTranslationContext,
+ useEnterpriseModuleNavigationContext,
+} from '@repo/ui/foundations';
+import { FullPageEntity } from '../../domain/entities';
+import { Edit2, Eye, Copy, Trash2 } from 'lucide-react';
+import { useCallback } from 'react';
+
+// TODO: Replace this mock data with real API data loaded from DataService via useEnterpriseModuleDataServiceContext
+const MOCK_DATA: FullPageEntity[] = [
+ { id: '1', name: 'Dashboard Widget', code: 'WID-001', status: 'ACTIVE', description: 'Main dashboard widget' },
+ { id: '2', name: 'Report Generator', code: 'REP-002', status: 'INACTIVE', description: 'Generates monthly reports' },
+ {
+ id: '3',
+ name: 'User Management',
+ code: 'USR-003',
+ status: 'ACTIVE',
+ description: 'Manages user roles and permissions',
+ },
+];
+
+export default function FullPagePageIndex() {
+ // Translation is scoped to ['full-page', 'common'] — no prefix needed for module keys
+ const { t } = useEnterpriseModuleTranslationContext();
+
+ const { navigateToDetail, navigateToEdit, navigateToDuplicate } = useEnterpriseModuleNavigationContext();
+
+ const getRowActions = useCallback(
+ (row: FullPageEntity) => [
+ {
+ key: 'view',
+ label: t('common:view'),
+ icon: