T07b: frontend feature pages — companies + contacts + settings + audit + dashboard + search

- 11 new feature pages (CompaniesList/Detail/Form, ContactsList/Detail/Form,
  SettingsProfile/Roles/Users, AuditLog, GlobalSearchResults)
- 3 page updates (Dashboard with StatCard+ActivityFeed, Settings with tree nav+Outlet,
  TopBar with SearchDropdown)
- 13 new routes in routes/index.tsx
- i18n updates (de.json + en.json) with companies/contacts/settings/audit/search keys
- 12 new test files + 2 existing test fixes (TopBar, AppShell)
- 7 shared components (DataGrid, Tabs, SearchDropdown, CsvImportDialog, StatCard,
  ActivityFeed, UnsavedChangesGuard)
- 16 new API hooks in hooks.ts
- Verification: 141 tests pass, build succeeds, tsc --noEmit clean
This commit is contained in:
leocrm-bot
2026-06-29 11:01:39 +02:00
parent 22976abe92
commit 700b7a71ad
47 changed files with 4089 additions and 157 deletions
+31 -2
View File
@@ -6,7 +6,18 @@ import { LoginPage } from '@/pages/Login';
import { PasswordResetRequestPage } from '@/pages/PasswordResetRequest';
import { PasswordResetConfirmPage } from '@/pages/PasswordResetConfirm';
import { DashboardPage } from '@/pages/Dashboard';
import { CompaniesListPage } from '@/pages/CompaniesList';
import { CompanyDetailPage } from '@/pages/CompanyDetail';
import { CompanyFormPage } from '@/pages/CompanyForm';
import { ContactsListPage } from '@/pages/ContactsList';
import { ContactDetailPage } from '@/pages/ContactDetail';
import { ContactFormPage } from '@/pages/ContactForm';
import { AuditLogPage } from '@/pages/AuditLog';
import { GlobalSearchResultsPage } from '@/pages/GlobalSearchResults';
import { SettingsPage } from '@/pages/Settings';
import { SettingsProfilePage } from '@/pages/SettingsProfile';
import { SettingsRolesPage } from '@/pages/SettingsRoles';
import { SettingsUsersPage } from '@/pages/SettingsUsers';
const router = createBrowserRouter([
{
@@ -28,9 +39,27 @@ const router = createBrowserRouter([
</ProtectedRoute>
),
children: [
{ path: '/dashboard', element: <DashboardPage /> },
{ path: '/settings', element: <SettingsPage /> },
{ path: '/', element: <DashboardPage /> },
{ path: '/dashboard', element: <DashboardPage /> },
{ path: '/companies', element: <CompaniesListPage /> },
{ path: '/companies/new', element: <CompanyFormPage /> },
{ path: '/companies/:id', element: <CompanyDetailPage /> },
{ path: '/companies/:id/edit', element: <CompanyFormPage /> },
{ path: '/contacts', element: <ContactsListPage /> },
{ path: '/contacts/new', element: <ContactFormPage /> },
{ path: '/contacts/:id', element: <ContactDetailPage /> },
{ path: '/contacts/:id/edit', element: <ContactFormPage /> },
{ path: '/audit-log', element: <AuditLogPage /> },
{ path: '/search', element: <GlobalSearchResultsPage /> },
{
path: '/settings',
element: <SettingsPage />,
children: [
{ path: 'profile', element: <SettingsProfilePage /> },
{ path: 'roles', element: <SettingsRolesPage /> },
{ path: 'users', element: <SettingsUsersPage /> },
],
},
],
},
]);