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:
@@ -59,7 +59,87 @@
|
||||
"warning": "Warnung",
|
||||
"info": "Information",
|
||||
"required": "Pflichtfeld",
|
||||
"optional": "Optional"
|
||||
"optional": "Optional",
|
||||
"back": "Zurück",
|
||||
"filter": "Filtern",
|
||||
"reset": "Zurücksetzen",
|
||||
"export": "Exportieren",
|
||||
"import": "Importieren",
|
||||
"name": "Name",
|
||||
"email": "E-Mail",
|
||||
"phone": "Telefon",
|
||||
"status": "Status",
|
||||
"role": "Rolle",
|
||||
"active": "Aktiv",
|
||||
"inactive": "Inaktiv"
|
||||
},
|
||||
"dashboard": {
|
||||
"welcome": "Willkommen zurück",
|
||||
"recentActivity": "Letzte Aktivitäten",
|
||||
"statCompanies": "Firmen",
|
||||
"statContacts": "Kontakte",
|
||||
"statTasks": "Offene Aufgaben",
|
||||
"statEmails": "E-Mails heute"
|
||||
},
|
||||
"companies": {
|
||||
"title": "Firmen",
|
||||
"create": "Firma erstellen",
|
||||
"edit": "Firma bearbeiten",
|
||||
"name": "Firmenname",
|
||||
"accountNumber": "Kontonummer",
|
||||
"industry": "Branche",
|
||||
"phone": "Telefon",
|
||||
"email": "E-Mail",
|
||||
"website": "Website",
|
||||
"description": "Beschreibung",
|
||||
"contacts": "Kontakte",
|
||||
"files": "Dateien",
|
||||
"activity": "Aktivität",
|
||||
"overview": "Übersicht",
|
||||
"export": "CSV exportieren",
|
||||
"import": "CSV importieren",
|
||||
"deleteConfirm": "Möchten Sie diese Firma wirklich löschen?",
|
||||
"deleteConfirmTitle": "Firma löschen",
|
||||
"emptyTitle": "Keine Firmen vorhanden",
|
||||
"emptyDescription": "Erstellen Sie Ihre erste Firma, um loszulegen.",
|
||||
"created": "Firma erfolgreich erstellt.",
|
||||
"updated": "Firma erfolgreich aktualisiert.",
|
||||
"deleted": "Firma erfolgreich gelöscht.",
|
||||
"createFailed": "Firma konnte nicht erstellt werden.",
|
||||
"updateFailed": "Firma konnte nicht aktualisiert werden.",
|
||||
"notFound": "Firma nicht gefunden.",
|
||||
"noContacts": "Diese Firma hat noch keine Kontakte.",
|
||||
"noFiles": "Keine Dateien vorhanden.",
|
||||
"noActivity": "Keine Aktivität vorhanden."
|
||||
},
|
||||
"contacts": {
|
||||
"title": "Kontakte",
|
||||
"create": "Kontakt erstellen",
|
||||
"edit": "Kontakt bearbeiten",
|
||||
"firstName": "Vorname",
|
||||
"lastName": "Nachname",
|
||||
"email": "E-Mail",
|
||||
"phone": "Telefon",
|
||||
"position": "Position",
|
||||
"companies": "Firmen",
|
||||
"files": "Dateien",
|
||||
"activity": "Aktivität",
|
||||
"overview": "Übersicht",
|
||||
"deleteConfirm": "Möchten Sie diesen Kontakt wirklich löschen?",
|
||||
"deleteConfirmTitle": "Kontakt löschen",
|
||||
"emptyTitle": "Keine Kontakte vorhanden",
|
||||
"emptyDescription": "Erstellen Sie Ihren ersten Kontakt, um loszulegen.",
|
||||
"created": "Kontakt erfolgreich erstellt.",
|
||||
"updated": "Kontakt erfolgreich aktualisiert.",
|
||||
"deleted": "Kontakt erfolgreich gelöscht.",
|
||||
"createFailed": "Kontakt konnte nicht erstellt werden.",
|
||||
"updateFailed": "Kontakt konnte nicht aktualisiert werden.",
|
||||
"notFound": "Kontakt nicht gefunden.",
|
||||
"assignCompanies": "Firmen zuweisen",
|
||||
"noCompanies": "Dieser Kontakt ist keiner Firma zugeordnet.",
|
||||
"noFiles": "Keine Dateien vorhanden.",
|
||||
"noActivity": "Keine Aktivität vorhanden.",
|
||||
"fullName": "Name"
|
||||
},
|
||||
"settings": {
|
||||
"title": "Einstellungen",
|
||||
@@ -70,7 +150,63 @@
|
||||
"system": "System",
|
||||
"profile": "Profil",
|
||||
"notifications": "Benachrichtigungen",
|
||||
"security": "Sicherheit"
|
||||
"security": "Sicherheit",
|
||||
"roles": "Rollen",
|
||||
"users": "Benutzer",
|
||||
"system": "System",
|
||||
"name": "Name",
|
||||
"firstName": "Vorname",
|
||||
"lastName": "Nachname",
|
||||
"email": "E-Mail",
|
||||
"avatar": "Profilbild",
|
||||
"currentPassword": "Aktuelles Passwort",
|
||||
"newPassword": "Neues Passwort",
|
||||
"confirmPassword": "Passwort bestätigen",
|
||||
"changePassword": "Passwort ändern",
|
||||
"profileSaved": "Profil erfolgreich gespeichert.",
|
||||
"passwordChanged": "Passwort erfolgreich geändert.",
|
||||
"roleName": "Rollenname",
|
||||
"permissions": "Berechtigungen",
|
||||
"createRole": "Rolle erstellen",
|
||||
"roleCreated": "Rolle erfolgreich erstellt.",
|
||||
"roleUpdated": "Rolle erfolgreich aktualisiert.",
|
||||
"noRoles": "Keine Rollen vorhanden.",
|
||||
"inviteUser": "Benutzer einladen",
|
||||
"deactivate": "Deaktivieren",
|
||||
"activate": "Aktivieren",
|
||||
"userInvited": "Benutzer erfolgreich eingeladen.",
|
||||
"userDeactivated": "Benutzer deaktiviert.",
|
||||
"userActivated": "Benutzer aktiviert.",
|
||||
"noUsers": "Keine Benutzer vorhanden.",
|
||||
"assignRole": "Rolle zuweisen",
|
||||
"inviteEmail": "E-Mail-Adresse",
|
||||
"inviteRole": "Rolle"
|
||||
},
|
||||
"auditLog": {
|
||||
"title": "Audit-Log",
|
||||
"user": "Benutzer",
|
||||
"action": "Aktion",
|
||||
"entity": "Entität",
|
||||
"dateFrom": "Datum von",
|
||||
"dateTo": "Datum bis",
|
||||
"details": "Details",
|
||||
"timestamp": "Zeitpunkt",
|
||||
"empty": "Keine Audit-Log-Einträge vorhanden.",
|
||||
"notAvailable": "Audit-Log ist aktuell nicht verfügbar.",
|
||||
"entityId": "Entität-ID"
|
||||
},
|
||||
"search": {
|
||||
"title": "Suchergebnisse",
|
||||
"filters": "Filter",
|
||||
"entityType": "Entitätstyp",
|
||||
"allTypes": "Alle Typen",
|
||||
"companies": "Firmen",
|
||||
"contacts": "Kontakte",
|
||||
"noResults": "Keine Ergebnisse für \"{{query}}\" gefunden.",
|
||||
"resultsFor": "Ergebnisse für \"{{query}}\"",
|
||||
"dateFrom": "Datum von",
|
||||
"dateTo": "Datum bis",
|
||||
"enterQuery": "Geben Sie einen Suchbegriff ein."
|
||||
},
|
||||
"topbar": {
|
||||
"tenant": "Mandant",
|
||||
@@ -120,6 +256,7 @@
|
||||
"required": "Dieses Feld ist erforderlich.",
|
||||
"email": "Bitte geben Sie eine gültige E-Mail-Adresse ein.",
|
||||
"minLength": "Mindestens {{count}} Zeichen erforderlich.",
|
||||
"maxLength": "Maximal {{count}} Zeichen erlaubt."
|
||||
"maxLength": "Maximal {{count}} Zeichen erlaubt.",
|
||||
"passwordMismatch": "Passwörter stimmen nicht überein."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,7 +59,87 @@
|
||||
"warning": "Warning",
|
||||
"info": "Information",
|
||||
"required": "Required",
|
||||
"optional": "Optional"
|
||||
"optional": "Optional",
|
||||
"back": "Back",
|
||||
"filter": "Filter",
|
||||
"reset": "Reset",
|
||||
"export": "Export",
|
||||
"import": "Import",
|
||||
"name": "Name",
|
||||
"email": "Email",
|
||||
"phone": "Phone",
|
||||
"status": "Status",
|
||||
"role": "Role",
|
||||
"active": "Active",
|
||||
"inactive": "Inactive"
|
||||
},
|
||||
"dashboard": {
|
||||
"welcome": "Welcome back",
|
||||
"recentActivity": "Recent Activity",
|
||||
"statCompanies": "Companies",
|
||||
"statContacts": "Contacts",
|
||||
"statTasks": "Open Tasks",
|
||||
"statEmails": "Emails Today"
|
||||
},
|
||||
"companies": {
|
||||
"title": "Companies",
|
||||
"create": "Create Company",
|
||||
"edit": "Edit Company",
|
||||
"name": "Company Name",
|
||||
"accountNumber": "Account Number",
|
||||
"industry": "Industry",
|
||||
"phone": "Phone",
|
||||
"email": "Email",
|
||||
"website": "Website",
|
||||
"description": "Description",
|
||||
"contacts": "Contacts",
|
||||
"files": "Files",
|
||||
"activity": "Activity",
|
||||
"overview": "Overview",
|
||||
"export": "Export CSV",
|
||||
"import": "Import CSV",
|
||||
"deleteConfirm": "Are you sure you want to delete this company?",
|
||||
"deleteConfirmTitle": "Delete Company",
|
||||
"emptyTitle": "No companies yet",
|
||||
"emptyDescription": "Create your first company to get started.",
|
||||
"created": "Company created successfully.",
|
||||
"updated": "Company updated successfully.",
|
||||
"deleted": "Company deleted successfully.",
|
||||
"createFailed": "Failed to create company.",
|
||||
"updateFailed": "Failed to update company.",
|
||||
"notFound": "Company not found.",
|
||||
"noContacts": "This company has no contacts yet.",
|
||||
"noFiles": "No files available.",
|
||||
"noActivity": "No activity available."
|
||||
},
|
||||
"contacts": {
|
||||
"title": "Contacts",
|
||||
"create": "Create Contact",
|
||||
"edit": "Edit Contact",
|
||||
"firstName": "First Name",
|
||||
"lastName": "Last Name",
|
||||
"email": "Email",
|
||||
"phone": "Phone",
|
||||
"position": "Position",
|
||||
"companies": "Companies",
|
||||
"files": "Files",
|
||||
"activity": "Activity",
|
||||
"overview": "Overview",
|
||||
"deleteConfirm": "Are you sure you want to delete this contact?",
|
||||
"deleteConfirmTitle": "Delete Contact",
|
||||
"emptyTitle": "No contacts yet",
|
||||
"emptyDescription": "Create your first contact to get started.",
|
||||
"created": "Contact created successfully.",
|
||||
"updated": "Contact updated successfully.",
|
||||
"deleted": "Contact deleted successfully.",
|
||||
"createFailed": "Failed to create contact.",
|
||||
"updateFailed": "Failed to update contact.",
|
||||
"notFound": "Contact not found.",
|
||||
"assignCompanies": "Assign Companies",
|
||||
"noCompanies": "This contact is not assigned to any company.",
|
||||
"noFiles": "No files available.",
|
||||
"noActivity": "No activity available.",
|
||||
"fullName": "Name"
|
||||
},
|
||||
"settings": {
|
||||
"title": "Settings",
|
||||
@@ -70,7 +150,63 @@
|
||||
"system": "System",
|
||||
"profile": "Profile",
|
||||
"notifications": "Notifications",
|
||||
"security": "Security"
|
||||
"security": "Security",
|
||||
"roles": "Roles",
|
||||
"users": "Users",
|
||||
"system": "System",
|
||||
"name": "Name",
|
||||
"firstName": "First Name",
|
||||
"lastName": "Last Name",
|
||||
"email": "Email",
|
||||
"avatar": "Avatar",
|
||||
"currentPassword": "Current Password",
|
||||
"newPassword": "New Password",
|
||||
"confirmPassword": "Confirm Password",
|
||||
"changePassword": "Change Password",
|
||||
"profileSaved": "Profile saved successfully.",
|
||||
"passwordChanged": "Password changed successfully.",
|
||||
"roleName": "Role Name",
|
||||
"permissions": "Permissions",
|
||||
"createRole": "Create Role",
|
||||
"roleCreated": "Role created successfully.",
|
||||
"roleUpdated": "Role updated successfully.",
|
||||
"noRoles": "No roles available.",
|
||||
"inviteUser": "Invite User",
|
||||
"deactivate": "Deactivate",
|
||||
"activate": "Activate",
|
||||
"userInvited": "User invited successfully.",
|
||||
"userDeactivated": "User deactivated.",
|
||||
"userActivated": "User activated.",
|
||||
"noUsers": "No users available.",
|
||||
"assignRole": "Assign Role",
|
||||
"inviteEmail": "Email Address",
|
||||
"inviteRole": "Role"
|
||||
},
|
||||
"auditLog": {
|
||||
"title": "Audit Log",
|
||||
"user": "User",
|
||||
"action": "Action",
|
||||
"entity": "Entity",
|
||||
"dateFrom": "Date From",
|
||||
"dateTo": "Date To",
|
||||
"details": "Details",
|
||||
"timestamp": "Timestamp",
|
||||
"empty": "No audit log entries available.",
|
||||
"notAvailable": "Audit log is currently not available.",
|
||||
"entityId": "Entity ID"
|
||||
},
|
||||
"search": {
|
||||
"title": "Search Results",
|
||||
"filters": "Filters",
|
||||
"entityType": "Entity Type",
|
||||
"allTypes": "All Types",
|
||||
"companies": "Companies",
|
||||
"contacts": "Contacts",
|
||||
"noResults": "No results found for \"{{query}}\".",
|
||||
"resultsFor": "Results for \"{{query}}\"",
|
||||
"dateFrom": "Date From",
|
||||
"dateTo": "Date To",
|
||||
"enterQuery": "Enter a search term."
|
||||
},
|
||||
"topbar": {
|
||||
"tenant": "Tenant",
|
||||
@@ -120,6 +256,7 @@
|
||||
"required": "This field is required.",
|
||||
"email": "Please enter a valid email address.",
|
||||
"minLength": "At least {{count}} characters required.",
|
||||
"maxLength": "At most {{count}} characters allowed."
|
||||
"maxLength": "At most {{count}} characters allowed.",
|
||||
"passwordMismatch": "Passwords do not match."
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user