diff --git a/apps/portal/src/app/layouts/PortalLayout.tsx b/apps/portal/src/app/layouts/PortalLayout.tsx index 81db3e988..075adda96 100644 --- a/apps/portal/src/app/layouts/PortalLayout.tsx +++ b/apps/portal/src/app/layouts/PortalLayout.tsx @@ -1,5 +1,5 @@ -import { AppShell } from '@mantine/core'; -import { useDisclosure } from '@mantine/hooks'; +import { AppShell } from "@mantine/core"; +import { useDisclosure } from "@mantine/hooks"; import { IconArrowsExchange, IconBell, @@ -17,62 +17,170 @@ import { IconTruck, IconUserCircle, IconUsers, -} from '@tabler/icons-react'; -import { Outlet, useLocation, useNavigate } from 'react-router-dom'; -import { useTranslation } from 'react-i18next'; -import { useDispatch } from 'react-redux'; -import { notify, AppHeader, AppSidebar } from '@ema-platform/ui'; -import type { NavItem } from '@ema-platform/ui'; -import { logout } from '@ema-platform/auth'; -import { SUPPORTED_LANGUAGES } from '../i18n/config'; -import { useAppSelector } from '../store/hooks'; + IconAnchor, +} from "@tabler/icons-react"; +import { Outlet, useLocation, useNavigate } from "react-router-dom"; +import { useTranslation } from "react-i18next"; +import { useDispatch } from "react-redux"; +import { notify, AppHeader, AppSidebar } from "@ema-platform/ui"; +import type { NavItem } from "@ema-platform/ui"; +import { logout } from "@ema-platform/auth"; +import { SUPPORTED_LANGUAGES } from "../i18n/config"; +import { useAppSelector } from "../store/hooks"; const NAV_ITEMS: (NavItem & { i18nKey: string })[] = [ - { to: '/dashboard', label: 'Dashboard', i18nKey: 'nav.dashboard', icon: IconHome2 }, - { to: '/seafarer-registry', label: 'Seafarer Registry', i18nKey: 'nav.seafarerRegistry', icon: IconList }, - { to: '/seaman-book', label: 'My Application', i18nKey: 'nav.myApplication', icon: IconSend }, - { to: '/vessel-registration-dashboard', label: 'Vessel Registration Dashboard', i18nKey: 'nav.vesselRegistrationDashboard', icon: IconGauge }, - { to: '/vessel-registration', label: 'Vessel Registration', i18nKey: 'nav.vesselRegistration', icon: IconShip }, - { to: '/vessel-registration/transfer', label: 'Ownership Transfer', i18nKey: 'nav.ownershipTransfer', icon: IconArrowsExchange }, - { to: '/logistics-dashboard', label: 'Logistics Licenses Dashboard', i18nKey: 'nav.logisticsDashboard', icon: IconGauge }, - { to: '/freight-forwarder-license', label: 'Freight Forwarder License', i18nKey: 'nav.freightForwarderLicense', icon: IconTruck }, - { to: '/shipping-agent-license', label: 'Shipping Agent License', i18nKey: 'nav.shippingAgentLicense', icon: IconShip }, - { to: '/combined-license', label: 'Combined License', i18nKey: 'nav.combinedLicense', icon: IconStack2 }, - { to: '/joint-investment-license', label: 'Joint Investment License', i18nKey: 'nav.jointInvestmentLicense', icon: IconUsers }, - { to: '/mto-license', label: 'MTO License', i18nKey: 'nav.mtoLicense', icon: IconTruck }, - { to: '/waiver', label: 'Waiver', i18nKey: 'nav.waiver', icon: IconShieldOff }, - { to: '/certificates', label: 'Certificates', i18nKey: 'nav.certificates', icon: IconShieldCheck }, - { to: '/endorsements', label: 'Endorsements', i18nKey: 'nav.endorsements', icon: IconRubberStamp }, - { to: '/vessel-registrations', label: 'Vessel Registration', i18nKey: 'nav.vesselRegistrations', icon: IconAnchor }, - { to: '/vessel-transfers', label: 'Vessel Transfers', i18nKey: 'nav.vesselTransfers', icon: IconShip }, - { to: '/documents', label: 'My Documents', i18nKey: 'nav.documents', icon: IconFolderOpen }, - { to: '/notifications',label: 'Notifications', i18nKey: 'nav.notifications', icon: IconBell }, - { to: '/profile', label: 'Profile', i18nKey: 'nav.profile', icon: IconUserCircle }, - { to: '/support', label: 'Help & Support', i18nKey: 'nav.support', icon: IconHeadset }, + { + to: "/dashboard", + label: "Dashboard", + i18nKey: "nav.dashboard", + icon: IconHome2, + }, + { + to: "/seafarer-registry", + label: "Seafarer Registry", + i18nKey: "nav.seafarerRegistry", + icon: IconList, + }, + { + to: "/seaman-book", + label: "My Application", + i18nKey: "nav.myApplication", + icon: IconSend, + }, + { + to: "/vessel-registration-dashboard", + label: "Vessel Registration Dashboard", + i18nKey: "nav.vesselRegistrationDashboard", + icon: IconGauge, + }, + { + to: "/vessel-registration", + label: "Vessel Registration", + i18nKey: "nav.vesselRegistration", + icon: IconShip, + }, + { + to: "/vessel-registration/transfer", + label: "Ownership Transfer", + i18nKey: "nav.ownershipTransfer", + icon: IconArrowsExchange, + }, + { + to: "/logistics-dashboard", + label: "Logistics Licenses Dashboard", + i18nKey: "nav.logisticsDashboard", + icon: IconGauge, + }, + { + to: "/freight-forwarder-license", + label: "Freight Forwarder License", + i18nKey: "nav.freightForwarderLicense", + icon: IconTruck, + }, + { + to: "/shipping-agent-license", + label: "Shipping Agent License", + i18nKey: "nav.shippingAgentLicense", + icon: IconShip, + }, + { + to: "/combined-license", + label: "Combined License", + i18nKey: "nav.combinedLicense", + icon: IconStack2, + }, + { + to: "/joint-investment-license", + label: "Joint Investment License", + i18nKey: "nav.jointInvestmentLicense", + icon: IconUsers, + }, + { + to: "/mto-license", + label: "MTO License", + i18nKey: "nav.mtoLicense", + icon: IconTruck, + }, + { + to: "/waiver", + label: "Waiver", + i18nKey: "nav.waiver", + icon: IconShieldOff, + }, + { + to: "/certificates", + label: "Certificates", + i18nKey: "nav.certificates", + icon: IconShieldCheck, + }, + { + to: "/endorsements", + label: "Endorsements", + i18nKey: "nav.endorsements", + icon: IconRubberStamp, + }, + { + to: "/vessel-registrations", + label: "Vessel Registration", + i18nKey: "nav.vesselRegistrations", + icon: IconAnchor, + }, + { + to: "/vessel-transfers", + label: "Vessel Transfers", + i18nKey: "nav.vesselTransfers", + icon: IconShip, + }, + { + to: "/documents", + label: "My Documents", + i18nKey: "nav.documents", + icon: IconFolderOpen, + }, + { + to: "/notifications", + label: "Notifications", + i18nKey: "nav.notifications", + icon: IconBell, + }, + { + to: "/profile", + label: "Profile", + i18nKey: "nav.profile", + icon: IconUserCircle, + }, + { + to: "/support", + label: "Help & Support", + i18nKey: "nav.support", + icon: IconHeadset, + }, ]; const PAGE_META: Record = { - '/dashboard': { i18nKey: 'nav.dashboard' }, - '/vessel-registration-dashboard': { i18nKey: 'nav.vesselRegistrationDashboard' }, - '/vessel-registration': { i18nKey: 'nav.vesselRegistration' }, - '/vessel-registration/transfer': { i18nKey: 'nav.ownershipTransfer' }, - '/logistics-dashboard': { i18nKey: 'nav.logisticsDashboard' }, - '/freight-forwarder-license': { i18nKey: 'nav.freightForwarderLicense' }, - '/shipping-agent-license': { i18nKey: 'nav.shippingAgentLicense' }, - '/combined-license': { i18nKey: 'nav.combinedLicense' }, - '/joint-investment-license': { i18nKey: 'nav.jointInvestmentLicense' }, - '/mto-license': { i18nKey: 'nav.mtoLicense' }, - '/waiver': { i18nKey: 'nav.waiver' }, - '/seafarer-registry': { i18nKey: 'nav.seafarerRegistry' }, - '/seaman-book': { i18nKey: 'nav.myApplication' }, - '/certificates': { i18nKey: 'nav.certificates' }, - '/endorsements': { i18nKey: 'nav.endorsements' }, - '/vessel-registrations': { i18nKey: 'nav.vesselRegistrations' }, - '/vessel-transfers': { i18nKey: 'nav.vesselTransfers' }, - '/documents': { i18nKey: 'nav.documents' }, - '/notifications':{ i18nKey: 'nav.notifications' }, - '/profile': { i18nKey: 'nav.profile' }, - '/support': { i18nKey: 'nav.support' }, + "/dashboard": { i18nKey: "nav.dashboard" }, + "/vessel-registration-dashboard": { + i18nKey: "nav.vesselRegistrationDashboard", + }, + "/vessel-registration": { i18nKey: "nav.vesselRegistration" }, + "/vessel-registration/transfer": { i18nKey: "nav.ownershipTransfer" }, + "/logistics-dashboard": { i18nKey: "nav.logisticsDashboard" }, + "/freight-forwarder-license": { i18nKey: "nav.freightForwarderLicense" }, + "/shipping-agent-license": { i18nKey: "nav.shippingAgentLicense" }, + "/combined-license": { i18nKey: "nav.combinedLicense" }, + "/joint-investment-license": { i18nKey: "nav.jointInvestmentLicense" }, + "/mto-license": { i18nKey: "nav.mtoLicense" }, + "/waiver": { i18nKey: "nav.waiver" }, + "/seafarer-registry": { i18nKey: "nav.seafarerRegistry" }, + "/seaman-book": { i18nKey: "nav.myApplication" }, + "/certificates": { i18nKey: "nav.certificates" }, + "/endorsements": { i18nKey: "nav.endorsements" }, + "/vessel-registrations": { i18nKey: "nav.vesselRegistrations" }, + "/vessel-transfers": { i18nKey: "nav.vesselTransfers" }, + "/documents": { i18nKey: "nav.documents" }, + "/notifications": { i18nKey: "nav.notifications" }, + "/profile": { i18nKey: "nav.profile" }, + "/support": { i18nKey: "nav.support" }, }; export function PortalLayout() { @@ -85,12 +193,12 @@ export function PortalLayout() { const [sidebarCollapsed, { toggle: toggleSidebar }] = useDisclosure(false); // Breadcrumb trail - const segments = location.pathname.split('/').filter(Boolean); + const segments = location.pathname.split("/").filter(Boolean); const crumbs = [ - { label: t('nav.dashboard'), path: '/dashboard' }, + { label: t("nav.dashboard"), path: "/dashboard" }, ...segments - .map((_, i) => '/' + segments.slice(0, i + 1).join('/')) - .filter((path) => PAGE_META[path] && path !== '/dashboard') + .map((_, i) => "/" + segments.slice(0, i + 1).join("/")) + .filter((path) => PAGE_META[path] && path !== "/dashboard") .map((path) => ({ label: t(PAGE_META[path].i18nKey), path })), ]; @@ -107,28 +215,33 @@ export function PortalLayout() { const handleLogout = () => { dispatch(logout()); - navigate('/login'); + navigate("/login"); }; - const displayName = user?.name?.en || user?.username || ''; + const displayName = user?.name?.en || user?.username || ""; const initials = displayName - ? displayName.split(/\s+/).map((s) => s[0]).join('').toUpperCase().slice(0, 2) - : '?'; + ? displayName + .split(/\s+/) + .map((s) => s[0]) + .join("") + .toUpperCase() + .slice(0, 2) + : "?"; return ( @@ -147,20 +260,23 @@ export function PortalLayout() { ({ ...rest, label: t(i18nKey) }))} + navItems={NAV_ITEMS.map(({ i18nKey, ...rest }) => ({ + ...rest, + label: t(i18nKey), + }))} collapsed={sidebarCollapsed} activePath={location.pathname} onToggleCollapse={toggleSidebar} onNavigate={go} - brandName={t('app.name')} - brandSubtitle={t('app.authority')} + brandName={t("app.name")} + brandSubtitle={t("app.authority")} /> diff --git a/apps/portal/src/app/router.tsx b/apps/portal/src/app/router.tsx index b3ae338fc..39575304d 100644 --- a/apps/portal/src/app/router.tsx +++ b/apps/portal/src/app/router.tsx @@ -1,89 +1,105 @@ -import { createBrowserRouter, Navigate } from 'react-router-dom'; -import { I18nextProvider } from 'react-i18next'; -import { i18n } from './i18n/config'; -import { PortalLayout } from './layouts/PortalLayout'; -import { ProtectedRoute } from './components/ProtectedRoute'; -import { ProfileGuard } from './components/ProfileGuard'; +import { createBrowserRouter, Navigate } from "react-router-dom"; +import { I18nextProvider } from "react-i18next"; +import { i18n } from "./i18n/config"; +import { PortalLayout } from "./layouts/PortalLayout"; +import { ProtectedRoute } from "./components/ProtectedRoute"; +import { ProfileGuard } from "./components/ProfileGuard"; // Auth (standalone pages, no portal chrome) -import { LoginPage, SignupPage, OTPVerificationPage, ForgotPasswordPage } from '@ema-platform/auth'; +import { + LoginPage, + SignupPage, + OTPVerificationPage, + ForgotPasswordPage, +} from "@ema-platform/auth"; // Profile setup -import { ProfileSetupPage } from './features/profile-setup/pages/ProfileSetupPage'; +import { ProfileSetupPage } from "./features/profile-setup/pages/ProfileSetupPage"; // Portal feature pages -import { DashboardPage } from './features/dashboard/pages/DashboardPage'; -import { ProfilePage } from './features/profile/pages/ProfilePage'; -import { SupportPage } from './features/support/pages/SupportPage'; -import { SeafarerRegistrationPage } from './features/seafarer/pages/SeafarerRegistrationPage'; -import { SeafarerRegistryPage } from './features/seafarer/pages/SeafarerRegistryPage'; -import { SeafarerProfilePage } from './features/seafarer/pages/SeafarerProfilePage'; +import { DashboardPage } from "./features/dashboard/pages/DashboardPage"; +import { ProfilePage } from "./features/profile/pages/ProfilePage"; +import { SupportPage } from "./features/support/pages/SupportPage"; +import { SeafarerRegistrationPage } from "./features/seafarer/pages/SeafarerRegistrationPage"; +import { SeafarerRegistryPage } from "./features/seafarer/pages/SeafarerRegistryPage"; +import { SeafarerProfilePage } from "./features/seafarer/pages/SeafarerProfilePage"; // Phase 1 pages -import { DocumentVaultPage } from './features/documents/pages/DocumentVaultPage'; -import { SeamanBookPage } from './features/seaman-book/pages/SeamanBookPage'; -import { SeamanBookApplicationPage } from './features/seaman-book/pages/SeamanBookApplicationPage'; -import { NotificationsPage } from './features/notifications/pages/NotificationsPage'; +import { DocumentVaultPage } from "./features/documents/pages/DocumentVaultPage"; +import { SeamanBookPage } from "./features/seaman-book/pages/SeamanBookPage"; +import { SeamanBookApplicationPage } from "./features/seaman-book/pages/SeamanBookApplicationPage"; +import { NotificationsPage } from "./features/notifications/pages/NotificationsPage"; // Phase 2 — CoC / CoP -import { CertificatesPage } from './features/certificates/pages/CertificatesPage'; -import { CoCApplicationPage } from './features/certificates/pages/CoCApplicationPage'; +import { CertificatesPage } from "./features/certificates/pages/CertificatesPage"; +import { CoCApplicationPage } from "./features/certificates/pages/CoCApplicationPage"; // Phase 3 — Endorsement -import { EndorsementPage } from './features/endorsement/pages/EndorsementPage'; -import { VesselRegistrationPage } from './features/vessel-registration/pages/VesselRegistrationPage'; -import { VesselRegistrationApplicationPage } from './features/vessel-registration/pages/VesselRegistrationApplicationPage'; -import { OwnershipTransferPage } from './features/vessel-registration/pages/OwnershipTransferPage'; -import { VesselRegistrationDashboardPage } from './features/vessel-registration-dashboard/pages/VesselRegistrationDashboardPage'; -import { VesselOwnerLayout } from './layouts/VesselOwnerLayout'; -import { VesselOwnerLoginPage } from './features/vessel-owner/pages/VesselOwnerLoginPage'; -import { VesselOwnerRegisterPage } from './features/vessel-owner/pages/VesselOwnerRegisterPage'; -import { VesselOwnerDashboardPage } from './features/vessel-owner/pages/VesselOwnerDashboardPage'; -import { LogisticsDashboardPage } from './features/logistics-dashboard/pages/LogisticsDashboardPage'; -import { FreightForwarderLicensePage } from './features/freight-forwarder-license/pages/FreightForwarderLicensePage'; -import { FreightForwarderLicenseApplicationPage } from './features/freight-forwarder-license/pages/FreightForwarderLicenseApplicationPage'; -import { FreightForwarderLicenseRenewalPage } from './features/freight-forwarder-license/pages/FreightForwarderLicenseRenewalPage'; -import { ShippingAgentLicensePage } from './features/shipping-agent-license/pages/ShippingAgentLicensePage'; -import { ShippingAgentLicenseApplicationPage } from './features/shipping-agent-license/pages/ShippingAgentLicenseApplicationPage'; -import { ShippingAgentLicenseRenewalPage } from './features/shipping-agent-license/pages/ShippingAgentLicenseRenewalPage'; -import { CombinedLicensePage } from './features/combined-license/pages/CombinedLicensePage'; -import { CombinedLicenseApplicationPage } from './features/combined-license/pages/CombinedLicenseApplicationPage'; -import { CombinedLicenseRenewalPage } from './features/combined-license/pages/CombinedLicenseRenewalPage'; -import { JointInvestmentLicensePage } from './features/joint-investment-license/pages/JointInvestmentLicensePage'; -import { JointInvestmentLicenseApplicationPage } from './features/joint-investment-license/pages/JointInvestmentLicenseApplicationPage'; -import { JointInvestmentLicenseRenewalPage } from './features/joint-investment-license/pages/JointInvestmentLicenseRenewalPage'; -import { MtoLicensePage } from './features/mto-license/pages/MtoLicensePage'; -import { MtoLicenseApplicationPage } from './features/mto-license/pages/MtoLicenseApplicationPage'; -import { MtoLicenseRenewalPage } from './features/mto-license/pages/MtoLicenseRenewalPage'; -import { WaiverPage } from './features/waiver/pages/WaiverPage'; -import { WaiverApplicationPage } from './features/waiver/pages/WaiverApplicationPage'; +import { EndorsementPage } from "./features/endorsement/pages/EndorsementPage"; +import { VesselRegistrationPage } from "./features/vessel-registration/pages/VesselRegistrationPage"; +import { VesselRegistrationApplicationPage } from "./features/vessel-registration/pages/VesselRegistrationApplicationPage"; +import { OwnershipTransferPage } from "./features/vessel-registration/pages/OwnershipTransferPage"; +import { VesselRegistrationDashboardPage } from "./features/vessel-registration-dashboard/pages/VesselRegistrationDashboardPage"; +import { VesselOwnerLayout } from "./layouts/VesselOwnerLayout"; +import { VesselOwnerLoginPage } from "./features/vessel-owner/pages/VesselOwnerLoginPage"; +import { VesselOwnerRegisterPage } from "./features/vessel-owner/pages/VesselOwnerRegisterPage"; +import { VesselOwnerDashboardPage } from "./features/vessel-owner/pages/VesselOwnerDashboardPage"; +import { LogisticsDashboardPage } from "./features/logistics-dashboard/pages/LogisticsDashboardPage"; +import { FreightForwarderLicensePage } from "./features/freight-forwarder-license/pages/FreightForwarderLicensePage"; +import { FreightForwarderLicenseApplicationPage } from "./features/freight-forwarder-license/pages/FreightForwarderLicenseApplicationPage"; +import { FreightForwarderLicenseRenewalPage } from "./features/freight-forwarder-license/pages/FreightForwarderLicenseRenewalPage"; +import { ShippingAgentLicensePage } from "./features/shipping-agent-license/pages/ShippingAgentLicensePage"; +import { ShippingAgentLicenseApplicationPage } from "./features/shipping-agent-license/pages/ShippingAgentLicenseApplicationPage"; +import { ShippingAgentLicenseRenewalPage } from "./features/shipping-agent-license/pages/ShippingAgentLicenseRenewalPage"; +import { CombinedLicensePage } from "./features/combined-license/pages/CombinedLicensePage"; +import { CombinedLicenseApplicationPage } from "./features/combined-license/pages/CombinedLicenseApplicationPage"; +import { CombinedLicenseRenewalPage } from "./features/combined-license/pages/CombinedLicenseRenewalPage"; +import { JointInvestmentLicensePage } from "./features/joint-investment-license/pages/JointInvestmentLicensePage"; +import { JointInvestmentLicenseApplicationPage } from "./features/joint-investment-license/pages/JointInvestmentLicenseApplicationPage"; +import { JointInvestmentLicenseRenewalPage } from "./features/joint-investment-license/pages/JointInvestmentLicenseRenewalPage"; +import { MtoLicensePage } from "./features/mto-license/pages/MtoLicensePage"; +import { MtoLicenseApplicationPage } from "./features/mto-license/pages/MtoLicenseApplicationPage"; +import { MtoLicenseRenewalPage } from "./features/mto-license/pages/MtoLicenseRenewalPage"; +import { WaiverPage } from "./features/waiver/pages/WaiverPage"; +import { WaiverApplicationPage } from "./features/waiver/pages/WaiverApplicationPage"; // Vessel Ownership Transfer -import { VesselTransferPage } from './features/vessel-transfer/pages/VesselTransferPage'; -import { VesselTransferApplicationPage } from './features/vessel-transfer/pages/VesselTransferApplicationPage'; +import { VesselTransferPage } from "./features/vessel-transfer/pages/VesselTransferPage"; +import { VesselTransferApplicationPage } from "./features/vessel-transfer/pages/VesselTransferApplicationPage"; // Vessel Registration -import { VesselRegistrationPage } from './features/vessel-registration/pages/VesselRegistrationPage'; -import { VesselRegistrationApplicationPage } from './features/vessel-registration/pages/VesselRegistrationApplicationPage'; -import { VesselRegistrationStatusPage } from './features/vessel-registration/pages/VesselRegistrationStatusPage'; + +import { VesselRegistrationStatusPage } from "./features/vessel-registration/pages/VesselRegistrationStatusPage"; export const router = createBrowserRouter([ // Public auth pages - { path: '/login', element: }, - { path: '/signup', element: }, + { path: "/login", element: }, + { path: "/signup", element: }, // Protected auth pages { - element: , - path: '/otp-verify', + element: ( + + + + ), + path: "/otp-verify", }, { - element: , - path: '/forgot-password', + element: ( + + + + ), + path: "/forgot-password", }, { - element: , - path: '/profile-setup', + element: ( + + + + ), + path: "/profile-setup", }, // Portal — protected @@ -98,66 +114,117 @@ export const router = createBrowserRouter([ ), children: [ - { path: '/', element: }, - { path: '/dashboard', element: }, + { path: "/", element: }, + { path: "/dashboard", element: }, // Seafarer - { path: '/seafarer-registration', element: }, - { path: '/seafarer-registry', element: }, - { path: '/seafarer-registry/:id', element: }, + { path: "/seafarer-registration", element: }, + { path: "/seafarer-registry", element: }, + { path: "/seafarer-registry/:id", element: }, // Phase 1 - { path: '/documents', element: }, - { path: '/seaman-book', element: }, - { path: '/seaman-book/apply', element: }, - { path: '/notifications', element: }, + { path: "/documents", element: }, + { path: "/seaman-book", element: }, + { path: "/seaman-book/apply", element: }, + { path: "/notifications", element: }, // Phase 2 — CoC / CoP - { path: '/certificates', element: }, - { path: '/certificates/apply', element: }, + { path: "/certificates", element: }, + { path: "/certificates/apply", element: }, // Phase 3 — Endorsement - { path: '/endorsements', element: }, - { path: '/vessel-registration-dashboard', element: }, - { path: '/vessel-registration', element: }, - { path: '/vessel-registration/apply', element: }, - { path: '/vessel-registration/transfer', element: }, - { path: '/logistics-dashboard', element: }, - { path: '/freight-forwarder-license', element: }, - { path: '/freight-forwarder-license/apply', element: }, - { path: '/freight-forwarder-license/:id/renew', element: }, - { path: '/shipping-agent-license', element: }, - { path: '/shipping-agent-license/apply', element: }, - { path: '/shipping-agent-license/:id/renew', element: }, - { path: '/combined-license', element: }, - { path: '/combined-license/apply', element: }, - { path: '/combined-license/:id/renew', element: }, - { path: '/joint-investment-license', element: }, - { path: '/joint-investment-license/apply', element: }, - { path: '/joint-investment-license/:id/renew', element: }, - { path: '/mto-license', element: }, - { path: '/mto-license/apply', element: }, - { path: '/mto-license/:id/renew', element: }, - { path: '/waiver', element: }, - { path: '/waiver/apply', element: }, + { path: "/endorsements", element: }, + { + path: "/vessel-registration-dashboard", + element: , + }, + { path: "/vessel-registration", element: }, + { + path: "/vessel-registration/apply", + element: , + }, + { + path: "/vessel-registration/transfer", + element: , + }, + { path: "/logistics-dashboard", element: }, + { + path: "/freight-forwarder-license", + element: , + }, + { + path: "/freight-forwarder-license/apply", + element: , + }, + { + path: "/freight-forwarder-license/:id/renew", + element: , + }, + { + path: "/shipping-agent-license", + element: , + }, + { + path: "/shipping-agent-license/apply", + element: , + }, + { + path: "/shipping-agent-license/:id/renew", + element: , + }, + { path: "/combined-license", element: }, + { + path: "/combined-license/apply", + element: , + }, + { + path: "/combined-license/:id/renew", + element: , + }, + { + path: "/joint-investment-license", + element: , + }, + { + path: "/joint-investment-license/apply", + element: , + }, + { + path: "/joint-investment-license/:id/renew", + element: , + }, + { path: "/mto-license", element: }, + { path: "/mto-license/apply", element: }, + { path: "/mto-license/:id/renew", element: }, + { path: "/waiver", element: }, + { path: "/waiver/apply", element: }, // Vessel Registration - { path: '/vessel-registrations', element: }, - { path: '/vessel-registrations/apply', element: }, - { path: '/vessel-registrations/:id', element: }, + { path: "/vessel-registrations", element: }, + { + path: "/vessel-registrations/apply", + element: , + }, + { + path: "/vessel-registrations/:id", + element: , + }, // Vessel Ownership Transfer - { path: '/vessel-transfers', element: }, - { path: '/vessel-transfers/apply', element: }, + { path: "/vessel-transfers", element: }, + { + path: "/vessel-transfers/apply", + element: , + }, // General - { path: '/profile', element: }, - { path: '/support', element: }, + { path: "/profile", element: }, + { path: "/support", element: }, ], }, - { path: '/vessel-owner/login', element: }, - { path: '/vessel-owner/register', element: }, + { path: "/vessel-owner/login", element: }, + { path: "/vessel-owner/register", element: }, { element: ( @@ -167,12 +234,24 @@ export const router = createBrowserRouter([ ), children: [ - { path: '/vessel-owner/dashboard', element: }, - { path: '/vessel-owner/registration', element: }, - { path: '/vessel-owner/registration/apply', element: }, - { path: '/vessel-owner/registration/transfer', element: }, + { + path: "/vessel-owner/dashboard", + element: , + }, + { + path: "/vessel-owner/registration", + element: , + }, + { + path: "/vessel-owner/registration/apply", + element: , + }, + { + path: "/vessel-owner/registration/transfer", + element: , + }, ], }, - { path: '*', element: }, + { path: "*", element: }, ]);