Files
hellojewellers/src/ManufacturerApp.tsx
priyanshuvish d58c08ce28 first commit
2025-10-14 12:07:18 +05:30

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>
</>
);
}