import type { ModuleClientParams } from "@erp/core/client";
import { lazy } from "react";
import { Outlet, type RouteObject } from "react-router-dom";

const ProformaLayout = lazy(() =>
  import("./proformas/shared/ui").then((m) => ({ default: m.ProformaLayout }))
);

const ProformasListPage = lazy(() =>
  import("./proformas/list").then((m) => ({ default: m.ListProformasPage }))
);

/*const ProformasCreatePage = lazy(() =>
  import("./proformas/create").then((m) => ({ default: m.ProformaCreatePage }))
);*/

const ProformaUpdatePage = lazy(() =>
  import("./proformas/update").then((m) => ({ default: m.ProformaUpdatePage }))
);

const IssuedInvoicesLayout = lazy(() =>
  import("./issued-invoices/shared/ui").then((m) => ({ default: m.IssuedInvoicesLayout }))
);

const IssuedInvoiceListPage = lazy(() =>
  import("./issued-invoices/list").then((m) => ({ default: m.ListIssuedInvoicesPage }))
);

export const CustomerInvoiceRoutes = (params: ModuleClientParams): RouteObject[] => {
  return [
    {
      path: "proformas",
      element: (
        <ProformaLayout>
          <Outlet context={params} />
        </ProformaLayout>
      ),
      children: [
        { path: "", index: true, element: <ProformasListPage /> }, // index
        { path: "list", element: <ProformasListPage /> },
        //{ path: "create", element: <ProformaCreatePage /> },
        { path: ":id/edit", element: <ProformaUpdatePage /> },
      ],
    },
    {
      path: "customer-invoices",
      element: (
        <IssuedInvoicesLayout>
          <Outlet context={params} />
        </IssuedInvoicesLayout>
      ),
      children: [
        { path: "", index: true, element: <IssuedInvoiceListPage /> }, // index
        { path: "list", element: <IssuedInvoiceListPage /> },
        /*
        { path: "create", element: <CustomerInvoicesList /> },
        { path: ":id", element: <CustomerInvoicesList /> },
        
        { path: ":id/delete", element: <CustomerInvoicesList /> },
        { path: ":id/view", element: <CustomerInvoicesList /> },
        { path: ":id/print", element: <CustomerInvoicesList /> },
        { path: ":id/email", element: <CustomerInvoicesList /> },
        { path: ":id/download", element: <CustomerInvoicesList /> },
        { path: ":id/duplicate", element: <CustomerInvoicesList /> },
        { path: ":id/preview", element: <CustomerInvoicesList /> },
         */
      ],
    },
  ];
};
