diff --git a/apps/edr-freight-web/portal/src/pages/ProfilePage.tsx b/apps/edr-freight-web/portal/src/pages/ProfilePage.tsx
index 9c4354723..ef5c89bb6 100644
--- a/apps/edr-freight-web/portal/src/pages/ProfilePage.tsx
+++ b/apps/edr-freight-web/portal/src/pages/ProfilePage.tsx
@@ -1,17 +1,110 @@
-import { User, Building2, Phone, Mail, MapPin, ShieldCheck, Briefcase, UserCheck, Fingerprint, FileCheck, Globe, Building } from "lucide-react";
-import { useQuery } from "@tanstack/react-query";
import { api } from "@/services/api";
-import { Card, CardHeader, CardTitle, CardDescription, CardContent, Badge, Separator } from "@edr/ui-common";
+import {
+ Badge,
+ Box,
+ Button,
+ Card,
+ Center,
+ Container,
+ Divider,
+ Grid,
+ Group,
+ Loader,
+ SimpleGrid,
+ Stack,
+ Text,
+ ThemeIcon,
+ Title,
+} from "@mantine/core";
+import { useQuery } from "@tanstack/react-query";
+import {
+ Briefcase,
+ Building,
+ Building2,
+ FileCheck,
+ Globe,
+ Mail,
+ MapPin,
+ Phone,
+ ShieldCheck,
+ User,
+ UserCheck,
+} from "lucide-react";
+import { Link } from "react-router-dom";
-function InfoItem({ icon, label, value }: { icon?: React.ReactNode; label: string; value?: string | null }) {
+function InfoItem({
+ icon,
+ label,
+ value,
+}: {
+ icon?: React.ReactNode;
+ label: string;
+ value?: string | null;
+}) {
return (
-
- {icon &&
{icon}
}
-
-
{label}
-
{value || "—"}
-
-
+
+ {icon && (
+
+ {icon}
+
+ )}
+
+
+ {label}
+
+
+ {value || "—"}
+
+
+
+ );
+}
+
+function CardHeading({
+ icon,
+ title,
+ description,
+}: {
+ icon: React.ReactNode;
+ title: string;
+ description: string;
+}) {
+ return (
+
+
+ {icon}
+
+ {title}
+
+
+
+ {description}
+
+
+ );
+}
+
+function PersonnelGroup({
+ color,
+ title,
+ children,
+}: {
+ color: string;
+ title: string;
+ children: React.ReactNode;
+}) {
+ return (
+
+
+
+
+ {title}
+
+
+
+ {children}
+
+
);
}
@@ -22,163 +115,142 @@ export default function ProfilePage() {
if (isPending) {
return (
-
+
+
+
);
}
if (!profile) {
return (
-
-
No company profile found.
-
+
+ No company profile found.
+
);
}
return (
-
-
-
- {/* Header */}
-
-
-
-
-
-
-
- {profile.companyName}
-
-
- Verified
-
-
-
-
- {profile.companyName}
-
-
-
+
+ {/* Header */}
+
+
+
+
+
+
+
+ {profile.companyName}
+
+
+ Verified
+
+
+
+
+
+ {profile.companyType}
+
+
+
+
-
+
-
- {/* Left Column */}
-
-
- {/* Company Details */}
-
-
-
-
- Company Details
-
- Business registration information
-
-
- } label="Location" value={profile.companyLocation} />
- } label="Address" value={profile.companyAddress} />
- } label="TIN Number" value={profile.tinNumber} />
- } label="FAN Number" value={profile.fanNumber} />
- } label="Email" value={profile.companyEmail} />
- } label="Phone" value={profile.companyPhone} />
-
-
+
+ {/* Left Column */}
+
+
+ {/* Company Details */}
+
+ }
+ title="Company Details"
+ description="Business registration information"
+ />
+
+ } label="Location" value={profile.companyLocation} />
+ } label="Address" value={profile.companyAddress} />
+ } label="TIN Number" value={profile.tinNumber} />
+ } label="FAN Number" value={profile.fanNumber} />
+ } label="Email" value={profile.companyEmail} />
+ } label="Phone" value={profile.companyPhone} />
+
+
- {/* Personal Details (from ExternalProfile) */}
-
-
-
-
- Profile Details
-
- Your linked user profile
-
-
- } label="Profile" value="Primary Contact" />
-
-
-
+ {/* Key Personnel */}
+
+ }
+ title="Key Personnel"
+ description="Management and contact persons"
+ />
+
+
+
+
+
+
+
+
+
+
+
+
- {/* Personnel Card */}
-
-
-
-
- Key Personnel
-
- Management and contact persons
-
-
-
-
- Contact Person
-
-
-
-
-
-
-
-
- General Manager
-
-
-
-
-
-
-
-
+ {/* Power of Attorney */}
+ {profile.poaName && (
+
+ }
+ title="Power of Attorney"
+ description="Authorized representative details"
+ />
+
+
+
+
+
+
+ )}
+
+
- {/* Power of Attorney */}
- {profile.poaName && (
-
-
-
-
- Power of Attorney
-
- Authorized representative details
-
-
-
-
-
-
-
-
- )}
-
-
- {/* Right Column */}
-
-
-
-
-
-
- Secure Account
-
- Your information is protected by enterprise-grade security.
- Contact support for verified information updates.
-
-
-
-
-
-
-
-
-
+ {/* Right Column */}
+
+
+
+
+
+
+
+ Secure Account
+
+
+ Your information is protected by enterprise-grade security. Contact
+ support for verified information updates.
+
+
+
+
+
+
+
);
}