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. + + + + + + + ); }