108 lines
3.2 KiB
TypeScript
108 lines
3.2 KiB
TypeScript
import { useState } from "react";
|
|
import { ManufacturerShell } from "./components/manufacturer/ManufacturerShell";
|
|
import { DashboardPage } from "./components/manufacturer/pages/DashboardPage";
|
|
import { SharingPage } from "./components/manufacturer/pages/SharingPage";
|
|
import { InquiriesPage } from "./components/manufacturer/pages/InquiriesPage";
|
|
import { CustomOrdersPage } from "./components/manufacturer/pages/CustomOrdersPage";
|
|
import { AnalyticsPage } from "./components/manufacturer/pages/AnalyticsPage";
|
|
import { CompliancePage } from "./components/manufacturer/pages/CompliancePage";
|
|
import { SettingsPage } from "./components/manufacturer/pages/SettingsPage";
|
|
import { KYCPage } from "./components/manufacturer/pages/KYCPage";
|
|
import { Toaster } from "./components/ui/sonner";
|
|
|
|
export type ManufacturerPage =
|
|
| "dashboard"
|
|
| "sharing"
|
|
| "inquiries"
|
|
| "custom-orders"
|
|
| "analytics"
|
|
| "compliance"
|
|
| "settings"
|
|
| "kyc";
|
|
|
|
interface ManufacturerState {
|
|
company: {
|
|
name: string;
|
|
legalName: string;
|
|
logo: string | null;
|
|
} | null;
|
|
kycStatus: "pending" | "verified" | "rejected";
|
|
isSetupComplete: boolean;
|
|
}
|
|
|
|
export default function ManufacturerApp() {
|
|
const [currentPage, setCurrentPage] = useState<ManufacturerPage>("dashboard");
|
|
const [manufacturerState, setManufacturerState] = useState<ManufacturerState>({
|
|
company: {
|
|
name: "Auric Foundry",
|
|
legalName: "Auric Foundry Pvt Ltd",
|
|
logo: null,
|
|
},
|
|
kycStatus: "verified",
|
|
isSetupComplete: true,
|
|
});
|
|
|
|
const handleNavigate = (page: ManufacturerPage) => {
|
|
setCurrentPage(page);
|
|
};
|
|
|
|
const handleKYCComplete = (status: "verified" | "pending") => {
|
|
setManufacturerState({
|
|
...manufacturerState,
|
|
kycStatus: status,
|
|
isSetupComplete: true,
|
|
});
|
|
setCurrentPage("dashboard");
|
|
};
|
|
|
|
// If KYC not complete, show KYC wizard
|
|
if (!manufacturerState.isSetupComplete || manufacturerState.kycStatus === "pending") {
|
|
return (
|
|
<>
|
|
<Toaster />
|
|
<KYCPage
|
|
onComplete={handleKYCComplete}
|
|
currentStatus={manufacturerState.kycStatus}
|
|
/>
|
|
</>
|
|
);
|
|
}
|
|
|
|
const renderPage = () => {
|
|
switch (currentPage) {
|
|
case "dashboard":
|
|
return <DashboardPage onNavigate={handleNavigate} kycStatus={manufacturerState.kycStatus} />;
|
|
case "sharing":
|
|
return <SharingPage kycStatus={manufacturerState.kycStatus} />;
|
|
case "inquiries":
|
|
return <InquiriesPage />;
|
|
case "custom-orders":
|
|
return <CustomOrdersPage />;
|
|
case "analytics":
|
|
return <AnalyticsPage />;
|
|
case "compliance":
|
|
return <CompliancePage />;
|
|
case "settings":
|
|
return <SettingsPage />;
|
|
case "kyc":
|
|
return <KYCPage onComplete={handleKYCComplete} currentStatus={manufacturerState.kycStatus} />;
|
|
default:
|
|
return <DashboardPage onNavigate={handleNavigate} kycStatus={manufacturerState.kycStatus} />;
|
|
}
|
|
};
|
|
|
|
return (
|
|
<>
|
|
<Toaster />
|
|
<ManufacturerShell
|
|
currentPage={currentPage}
|
|
onNavigate={handleNavigate}
|
|
companyName={manufacturerState.company?.name || "Manufacturer"}
|
|
kycStatus={manufacturerState.kycStatus}
|
|
>
|
|
{renderPage()}
|
|
</ManufacturerShell>
|
|
</>
|
|
);
|
|
}
|