import { HttpTypes } from "@medusajs/types"
import { t } from "i18next"
import { Outlet, RouteObject, UIMatch } from "react-router-dom"
import { ProtectedRoute } from "../../components/authentication/protected-route"
import { MainLayout } from "../../components/layout/main-layout"
import { PublicLayout } from "../../components/layout/public-layout"
import { SettingsLayout } from "../../components/layout/settings-layout"
import { ErrorBoundary } from "../../components/utilities/error-boundary"
import { TaxRegionDetailBreadcrumb } from "../../routes/tax-regions/tax-region-detail/breadcrumb"
import { taxRegionLoader } from "../../routes/tax-regions/tax-region-detail/loader"
export function getRouteMap({
settingsRoutes,
coreRoutes,
}: {
settingsRoutes: RouteObject[]
coreRoutes: RouteObject[]
}) {
return [
{
element: ,
errorElement: ,
children: [
{
element: ,
children: [
{
path: "/",
errorElement: ,
lazy: () => import("../../routes/home"),
},
{
path: "/products",
errorElement: ,
handle: {
breadcrumb: () => t("products.domain"),
},
children: [
{
path: "",
lazy: () => import("../../routes/products/product-list"),
children: [
{
path: "create",
lazy: () =>
import("../../routes/products/product-create"),
},
{
path: "import",
lazy: () =>
import("../../routes/products/product-import"),
},
{
path: "export",
lazy: () =>
import("../../routes/products/product-export"),
},
],
},
{
path: ":id",
errorElement: ,
lazy: async () => {
const { Breadcrumb, loader } = await import(
"../../routes/products/product-detail"
)
return {
Component: Outlet,
loader,
handle: {
breadcrumb: (
match: UIMatch
) => ,
},
}
},
children: [
{
path: "",
lazy: () =>
import("../../routes/products/product-detail"),
children: [
{
path: "edit",
lazy: () =>
import("../../routes/products/product-edit"),
},
{
path: "edit-variant",
lazy: () =>
import(
"../../routes/product-variants/product-variant-edit"
),
},
{
path: "sales-channels",
lazy: () =>
import(
"../../routes/products/product-sales-channels"
),
},
{
path: "attributes",
lazy: () =>
import("../../routes/products/product-attributes"),
},
{
path: "organization",
lazy: () =>
import(
"../../routes/products/product-organization"
),
},
{
path: "shipping-profile",
lazy: () =>
import(
"../../routes/products/product-shipping-profile"
),
},
{
path: "media",
lazy: () =>
import("../../routes/products/product-media"),
},
{
path: "images/:image_id/variants",
lazy: () =>
import(
"../../routes/products/product-image-variants-edit"
),
},
{
path: "prices",
lazy: () =>
import("../../routes/products/product-prices"),
},
{
path: "options/create",
lazy: () =>
import(
"../../routes/products/product-create-option"
),
},
{
path: "options/:option_id/edit",
lazy: () =>
import("../../routes/products/product-edit-option"),
},
{
path: "variants/create",
lazy: () =>
import(
"../../routes/products/product-create-variant"
),
},
{
path: "stock",
lazy: () =>
import("../../routes/products/product-stock"),
},
{
path: "metadata/edit",
lazy: () =>
import("../../routes/products/product-metadata"),
},
],
},
{
path: "variants/:variant_id",
lazy: async () => {
const { Component, Breadcrumb, loader } = await import(
"../../routes/product-variants/product-variant-detail"
)
return {
Component,
loader,
handle: {
breadcrumb: (
// eslint-disable-next-line max-len
match: UIMatch
) => ,
},
}
},
children: [
{
path: "edit",
lazy: () =>
import(
"../../routes/product-variants/product-variant-edit"
),
},
{
path: "prices",
lazy: () =>
import("../../routes/products/product-prices"),
},
{
path: "manage-items",
lazy: () =>
import(
"../../routes/product-variants/product-variant-manage-inventory-items"
),
},
{
path: "media",
lazy: () =>
import(
"../../routes/product-variants/product-variant-media"
),
},
{
path: "metadata/edit",
lazy: () =>
import(
"../../routes/product-variants/product-variant-metadata"
),
},
],
},
],
},
],
},
{
path: "/categories",
errorElement: ,
handle: {
breadcrumb: () => t("categories.domain"),
},
children: [
{
path: "",
lazy: () => import("../../routes/categories/category-list"),
children: [
{
path: "create",
lazy: () =>
import("../../routes/categories/category-create"),
},
{
path: "organize",
lazy: () =>
import("../../routes/categories/category-organize"),
},
],
},
{
path: ":id",
lazy: async () => {
const { Component, Breadcrumb, loader } = await import(
"../../routes/categories/category-detail"
)
return {
Component,
loader,
handle: {
breadcrumb: (
match: UIMatch
) => ,
},
}
},
children: [
{
path: "edit",
lazy: () =>
import("../../routes/categories/category-edit"),
},
{
path: "products",
lazy: () =>
import("../../routes/categories/category-products"),
},
{
path: "organize",
lazy: () =>
import("../../routes/categories/category-organize"),
},
{
path: "metadata/edit",
lazy: () =>
import("../../routes/categories/categories-metadata"),
},
],
},
],
},
{
path: "/orders",
errorElement: ,
handle: {
breadcrumb: () => t("orders.domain"),
},
children: [
{
path: "",
lazy: () => import("../../routes/orders/order-list"),
children: [
{
path: "export",
lazy: () => import("../../routes/orders/order-export"),
},
],
},
{
path: ":id",
lazy: async () => {
const { Component, Breadcrumb, loader } = await import(
"../../routes/orders/order-detail"
)
return {
Component,
loader,
handle: {
breadcrumb: (
match: UIMatch
) => ,
},
}
},
children: [
{
path: "fulfillment",
lazy: () =>
import("../../routes/orders/order-create-fulfillment"),
},
{
path: "returns/:return_id/receive",
lazy: () =>
import("../../routes/orders/order-receive-return"),
},
{
path: "allocate-items",
lazy: () =>
import("../../routes/orders/order-allocate-items"),
},
{
path: ":f_id/create-shipment",
lazy: () =>
import("../../routes/orders/order-create-shipment"),
},
{
path: "returns",
lazy: () =>
import("../../routes/orders/order-create-return"),
},
{
path: "claims",
lazy: () =>
import("../../routes/orders/order-create-claim"),
},
{
path: "exchanges",
lazy: () =>
import("../../routes/orders/order-create-exchange"),
},
{
path: "edits",
lazy: () =>
import("../../routes/orders/order-create-edit"),
},
{
path: "refund",
lazy: () =>
import("../../routes/orders/order-create-refund"),
},
{
path: "transfer",
lazy: () =>
import("../../routes/orders/order-request-transfer"),
},
{
path: "email",
lazy: () =>
import("../../routes/orders/order-edit-email"),
},
{
path: "shipping-address",
lazy: () =>
import(
"../../routes/orders/order-edit-shipping-address"
),
},
{
path: "billing-address",
lazy: () =>
import(
"../../routes/orders/order-edit-billing-address"
),
},
{
path: "metadata/edit",
lazy: () => import("../../routes/orders/order-metadata"),
},
],
},
],
},
{
path: "/promotions",
errorElement: ,
handle: {
breadcrumb: () => t("promotions.domain"),
},
children: [
{
path: "",
lazy: () => import("../../routes/promotions/promotion-list"),
},
{
path: "create",
lazy: () =>
import("../../routes/promotions/promotion-create"),
},
{
path: ":id",
lazy: async () => {
const { Component, Breadcrumb, loader } = await import(
"../../routes/promotions/promotion-detail"
)
return {
Component,
loader,
handle: {
breadcrumb: (
match: UIMatch
) => ,
},
}
},
children: [
{
path: "edit",
lazy: () =>
import(
"../../routes/promotions/promotion-edit-details"
),
},
{
path: "add-to-campaign",
lazy: () =>
import(
"../../routes/promotions/promotion-add-campaign"
),
},
{
path: ":ruleType/edit",
lazy: () =>
import("../../routes/promotions/common/edit-rules"),
},
],
},
],
},
{
path: "/campaigns",
errorElement: ,
handle: {
breadcrumb: () => t("campaigns.domain"),
},
children: [
{
path: "",
lazy: () => import("../../routes/campaigns/campaign-list"),
children: [],
},
{
path: "create",
lazy: () => import("../../routes/campaigns/campaign-create"),
},
{
path: ":id",
lazy: async () => {
const { Component, Breadcrumb, loader } = await import(
"../../routes/campaigns/campaign-detail"
)
return {
Component,
loader,
handle: {
breadcrumb: (
match: UIMatch
) => ,
},
}
},
children: [
{
path: "edit",
lazy: () =>
import("../../routes/campaigns/campaign-edit"),
},
{
path: "configuration",
lazy: () =>
import("../../routes/campaigns/campaign-configuration"),
},
{
path: "edit-budget",
lazy: () =>
import("../../routes/campaigns/campaign-budget-edit"),
},
{
path: "add-promotions",
lazy: () =>
import(
"../../routes/campaigns/add-campaign-promotions"
),
},
],
},
],
},
{
path: "/collections",
errorElement: ,
handle: {
breadcrumb: () => t("collections.domain"),
},
children: [
{
path: "",
lazy: () =>
import("../../routes/collections/collection-list"),
children: [
{
path: "create",
lazy: () =>
import("../../routes/collections/collection-create"),
},
],
},
{
path: ":id",
lazy: async () => {
const { Component, Breadcrumb, loader } = await import(
"../../routes/collections/collection-detail"
)
return {
Component,
loader,
handle: {
breadcrumb: (
match: UIMatch
) => ,
},
}
},
children: [
{
path: "edit",
lazy: () =>
import("../../routes/collections/collection-edit"),
},
{
path: "products",
lazy: () =>
import(
"../../routes/collections/collection-add-products"
),
},
{
path: "metadata/edit",
lazy: () =>
import("../../routes/collections/collection-metadata"),
},
],
},
],
},
{
path: "/price-lists",
errorElement: ,
handle: {
breadcrumb: () => t("priceLists.domain"),
},
children: [
{
path: "",
lazy: () =>
import("../../routes/price-lists/price-list-list"),
children: [
{
path: "create",
lazy: () =>
import("../../routes/price-lists/price-list-create"),
},
],
},
{
path: ":id",
lazy: async () => {
const { Component, Breadcrumb, loader } = await import(
"../../routes/price-lists/price-list-detail"
)
return {
Component,
loader,
handle: {
breadcrumb: (
match: UIMatch
) => ,
},
}
},
children: [
{
path: "edit",
lazy: () =>
import("../../routes/price-lists/price-list-edit"),
},
{
path: "configuration",
lazy: () =>
import(
"../../routes/price-lists/price-list-configuration"
),
},
{
path: "products/add",
lazy: () =>
import(
"../../routes/price-lists/price-list-prices-add"
),
},
{
path: "products/edit",
lazy: () =>
import(
"../../routes/price-lists/price-list-prices-edit"
),
},
{
path: "metadata/edit",
lazy: () =>
import(
"../../routes/price-lists/price-list-metadata"
),
},
],
},
],
},
{
path: "/customers",
errorElement: ,
handle: {
breadcrumb: () => t("customers.domain"),
},
children: [
{
path: "",
lazy: () => import("../../routes/customers/customer-list"),
children: [
{
path: "create",
lazy: () =>
import("../../routes/customers/customer-create"),
},
],
},
{
path: ":id",
lazy: async () => {
const { Component, Breadcrumb, loader } = await import(
"../../routes/customers/customer-detail"
)
return {
Component,
loader,
handle: {
breadcrumb: (
match: UIMatch
) => ,
},
}
},
children: [
{
path: "edit",
lazy: () =>
import("../../routes/customers/customer-edit"),
},
{
path: "create-address",
lazy: () =>
import(
"../../routes/customers/customer-create-address"
),
},
{
path: "add-customer-groups",
lazy: () =>
import(
"../../routes/customers/customers-add-customer-group"
),
},
{
path: ":order_id/transfer",
lazy: () =>
import("../../routes/orders/order-request-transfer"),
},
{
path: "metadata/edit",
lazy: () =>
import("../../routes/customers/customer-metadata"),
},
],
},
],
},
{
path: "/customer-groups",
errorElement: ,
handle: {
breadcrumb: () => t("customerGroups.domain"),
},
children: [
{
path: "",
lazy: () =>
import("../../routes/customer-groups/customer-group-list"),
children: [
{
path: "create",
lazy: () =>
import(
"../../routes/customer-groups/customer-group-create"
),
},
],
},
{
path: ":id",
lazy: async () => {
const { Component, Breadcrumb, loader } = await import(
"../../routes/customer-groups/customer-group-detail"
)
return {
Component,
loader,
handle: {
breadcrumb: (
match: UIMatch
) => ,
},
}
},
children: [
{
path: "edit",
lazy: () =>
import(
"../../routes/customer-groups/customer-group-edit"
),
},
{
path: "add-customers",
lazy: () =>
import(
"../../routes/customer-groups/customer-group-add-customers"
),
},
{
path: "metadata/edit",
lazy: () =>
import(
"../../routes/customer-groups/customer-group-metadata"
),
},
],
},
],
},
{
path: "/reservations",
errorElement: ,
handle: {
breadcrumb: () => t("reservations.domain"),
},
children: [
{
path: "",
lazy: () =>
import("../../routes/reservations/reservation-list"),
children: [
{
path: "create",
lazy: () =>
import("../../routes/reservations/reservation-create"),
},
],
},
{
path: ":id",
lazy: async () => {
const { Component, Breadcrumb, loader } = await import(
"../../routes/reservations/reservation-detail"
)
return {
Component,
loader,
handle: {
breadcrumb: (
match: UIMatch
) => ,
},
}
},
children: [
{
path: "edit",
lazy: () =>
import(
"../../routes/reservations/reservation-detail/components/edit-reservation"
),
},
{
path: "metadata/edit",
lazy: () =>
import(
"../../routes/reservations/reservation-metadata"
),
},
],
},
],
},
{
path: "/inventory",
errorElement: ,
handle: {
breadcrumb: () => t("inventory.domain"),
},
children: [
{
path: "",
lazy: () => import("../../routes/inventory/inventory-list"),
children: [
{
path: "create",
lazy: () =>
import("../../routes/inventory/inventory-create"),
},
{
path: "stock",
lazy: () =>
import("../../routes/inventory/inventory-stock"),
},
],
},
{
path: ":id",
lazy: async () => {
const { Component, Breadcrumb, loader } = await import(
"../../routes/inventory/inventory-detail"
)
return {
Component,
loader,
handle: {
breadcrumb: (
match: UIMatch
) => ,
},
}
},
children: [
{
path: "edit",
lazy: () =>
import(
"../../routes/inventory/inventory-detail/components/edit-inventory-item"
),
},
{
path: "attributes",
lazy: () =>
import(
"../../routes/inventory/inventory-detail/components/edit-inventory-item-attributes"
),
},
{
path: "metadata/edit",
lazy: () =>
import("../../routes/inventory/inventory-metadata"),
},
{
path: "locations",
lazy: () =>
import(
"../../routes/inventory/inventory-detail/components/manage-locations"
),
},
{
path: "locations/:location_id",
lazy: () =>
import(
"../../routes/inventory/inventory-detail/components/adjust-inventory"
),
},
],
},
],
},
...coreRoutes,
],
},
],
},
{
element: ,
errorElement: ,
children: [
{
path: "/settings",
handle: {
breadcrumb: () => t("app.nav.settings.header"),
},
element: ,
children: [
{
index: true,
errorElement: ,
lazy: () => import("../../routes/settings"),
},
{
path: "profile",
errorElement: ,
lazy: () => import("../../routes/profile/profile-detail"),
handle: {
breadcrumb: () => t("profile.domain"),
},
children: [
{
path: "edit",
lazy: () => import("../../routes/profile/profile-edit"),
},
],
},
{
path: "regions",
errorElement: ,
element: ,
handle: {
breadcrumb: () => t("regions.domain"),
},
children: [
{
path: "",
lazy: () => import("../../routes/regions/region-list"),
children: [
{
path: "create",
lazy: () => import("../../routes/regions/region-create"),
},
],
},
{
path: ":id",
lazy: async () => {
const { Component, Breadcrumb, loader } = await import(
"../../routes/regions/region-detail"
)
return {
Component,
loader,
handle: {
breadcrumb: (
match: UIMatch
) => ,
},
}
},
children: [
{
path: "edit",
lazy: () => import("../../routes/regions/region-edit"),
},
{
path: "countries/add",
lazy: () =>
import("../../routes/regions/region-add-countries"),
},
{
path: "metadata/edit",
lazy: () =>
import("../../routes/regions/region-metadata"),
},
],
},
],
},
{
path: "store",
errorElement: ,
lazy: () => import("../../routes/store/store-detail"),
handle: {
breadcrumb: () => t("store.domain"),
},
children: [
{
path: "edit",
lazy: () => import("../../routes/store/store-edit"),
},
{
path: "currencies",
lazy: () => import("../../routes/store/store-add-currencies"),
},
{
path: "locales",
lazy: () => import("../../routes/store/store-add-locales"),
},
{
path: "metadata/edit",
lazy: () => import("../../routes/store/store-metadata"),
},
],
},
{
path: "users",
errorElement: ,
element: ,
handle: {
breadcrumb: () => t("users.domain"),
},
children: [
{
path: "",
lazy: () => import("../../routes/users/user-list"),
children: [
{
path: "invite",
lazy: () => import("../../routes/users/user-invite"),
},
],
},
{
path: ":id",
lazy: async () => {
const { Component, Breadcrumb, loader } = await import(
"../../routes/users/user-detail"
)
return {
Component,
loader,
handle: {
breadcrumb: (
match: UIMatch
) => ,
},
}
},
children: [
{
path: "edit",
lazy: () => import("../../routes/users/user-edit"),
},
{
path: "metadata/edit",
lazy: () => import("../../routes/users/user-metadata"),
},
],
},
],
},
{
path: "sales-channels",
errorElement: ,
element: ,
handle: {
breadcrumb: () => t("salesChannels.domain"),
},
children: [
{
path: "",
lazy: () =>
import("../../routes/sales-channels/sales-channel-list"),
children: [
{
path: "create",
lazy: () =>
import(
"../../routes/sales-channels/sales-channel-create"
),
},
],
},
{
path: ":id",
lazy: async () => {
const { Component, Breadcrumb, loader } = await import(
"../../routes/sales-channels/sales-channel-detail"
)
return {
Component,
loader,
handle: {
breadcrumb: (
match: UIMatch
) => ,
},
}
},
children: [
{
path: "edit",
lazy: () =>
import(
"../../routes/sales-channels/sales-channel-edit"
),
},
{
path: "add-products",
lazy: () =>
import(
"../../routes/sales-channels/sales-channel-add-products"
),
},
{
path: "metadata/edit",
lazy: () =>
import(
"../../routes/sales-channels/sales-channel-metadata"
),
},
],
},
],
},
{
path: "locations",
errorElement: ,
element: ,
handle: {
breadcrumb: () => t("locations.domain"),
},
children: [
{
path: "",
lazy: () => import("../../routes/locations/location-list"),
},
{
path: "create",
lazy: () => import("../../routes/locations/location-create"),
},
{
path: "shipping-profiles",
element: ,
handle: {
breadcrumb: () => t("shippingProfile.domain"),
},
children: [
{
path: "",
lazy: () =>
import(
"../../routes/shipping-profiles/shipping-profiles-list"
),
children: [
{
path: "create",
lazy: () =>
import(
"../../routes/shipping-profiles/shipping-profile-create"
),
},
],
},
{
path: ":shipping_profile_id",
lazy: async () => {
const { Component, Breadcrumb, loader } = await import(
"../../routes/shipping-profiles/shipping-profile-detail"
)
return {
Component,
loader,
handle: {
breadcrumb: (
// eslint-disable-next-line max-len
match: UIMatch
) => ,
},
}
},
children: [
{
path: "metadata/edit",
lazy: () =>
import(
"../../routes/shipping-profiles/shipping-profile-metadata"
),
},
],
},
],
},
{
path: "shipping-option-types",
errorElement: ,
element: ,
handle: {
breadcrumb: () => t("shippingOptionTypes.domain"),
},
children: [
{
path: "",
lazy: () =>
import(
"../../routes/shipping-option-types/shipping-option-type-list"
),
children: [
{
path: "create",
lazy: () =>
import(
"../../routes/shipping-option-types/shipping-option-type-create"
),
},
],
},
{
path: ":id",
lazy: async () => {
const { Component, Breadcrumb, loader } = await import(
"../../routes/shipping-option-types/shipping-option-type-detail"
)
return {
Component,
loader,
handle: {
breadcrumb: (
// eslint-disable-next-line max-len
match: UIMatch
) => ,
},
}
},
children: [
{
path: "edit",
lazy: () =>
import(
"../../routes/shipping-option-types/shipping-option-type-edit"
),
},
],
},
],
},
{
path: ":location_id",
lazy: async () => {
const { Component, Breadcrumb, loader } = await import(
"../../routes/locations/location-detail"
)
return {
Component,
loader,
handle: {
breadcrumb: (
match: UIMatch
) => ,
},
}
},
children: [
{
path: "edit",
lazy: () =>
import("../../routes/locations/location-edit"),
},
{
path: "sales-channels",
lazy: () =>
import(
"../../routes/locations/location-sales-channels"
),
},
{
path: "fulfillment-providers",
lazy: () =>
import(
"../../routes/locations/location-fulfillment-providers"
),
},
{
path: "metadata/edit",
lazy: () =>
import("../../routes/locations/location-metadata"),
},
{
path: "fulfillment-set/:fset_id",
children: [
{
path: "service-zones/create",
lazy: () =>
import(
"../../routes/locations/location-service-zone-create"
),
},
{
path: "service-zone/:zone_id",
children: [
{
path: "edit",
lazy: () =>
import(
"../../routes/locations/location-service-zone-edit"
),
},
{
path: "areas",
lazy: () =>
import(
"../../routes/locations/location-service-zone-manage-areas"
),
},
{
path: "shipping-option",
children: [
{
path: "create",
lazy: () =>
import(
"../../routes/locations/location-service-zone-shipping-option-create"
),
},
{
path: ":so_id",
children: [
{
path: "edit",
lazy: () =>
import(
"../../routes/locations/location-service-zone-shipping-option-edit"
),
},
{
path: "pricing",
lazy: () =>
import(
"../../routes/locations/location-service-zone-shipping-option-pricing"
),
},
],
},
],
},
],
},
],
},
],
},
],
},
{
path: "product-tags",
errorElement: ,
element: ,
handle: {
breadcrumb: () => t("productTags.domain"),
},
children: [
{
path: "",
lazy: () =>
import("../../routes/product-tags/product-tag-list"),
children: [
{
path: "create",
lazy: () =>
import("../../routes/product-tags/product-tag-create"),
},
],
},
{
path: ":id",
lazy: async () => {
const { Component, Breadcrumb, loader } = await import(
"../../routes/product-tags/product-tag-detail"
)
return {
Component,
loader,
handle: {
breadcrumb: (
match: UIMatch
) => ,
},
}
},
children: [
{
path: "edit",
lazy: () =>
import("../../routes/product-tags/product-tag-edit"),
},
{
path: "metadata/edit",
lazy: () =>
import(
"../../routes/product-tags/product-tag-metadata"
),
},
],
},
],
},
{
path: "workflows",
errorElement: ,
element: ,
handle: {
breadcrumb: () => t("workflowExecutions.domain"),
},
children: [
{
path: "",
lazy: () =>
import(
"../../routes/workflow-executions/workflow-execution-list"
),
},
{
path: ":id",
lazy: async () => {
const { Component, Breadcrumb, loader } = await import(
"../../routes/workflow-executions/workflow-execution-detail"
)
return {
Component,
loader,
handle: {
breadcrumb: (
// eslint-disable-next-line max-len
match: UIMatch
) => ,
},
}
},
},
],
},
{
path: "product-types",
errorElement: ,
element: ,
handle: {
breadcrumb: () => t("productTypes.domain"),
},
children: [
{
path: "",
lazy: () =>
import("../../routes/product-types/product-type-list"),
children: [
{
path: "create",
lazy: () =>
import(
"../../routes/product-types/product-type-create"
),
},
],
},
{
path: ":id",
lazy: async () => {
const { Component, Breadcrumb, loader } = await import(
"../../routes/product-types/product-type-detail"
)
return {
Component,
loader,
handle: {
breadcrumb: (
match: UIMatch
) => ,
},
}
},
children: [
{
path: "edit",
lazy: () =>
import("../../routes/product-types/product-type-edit"),
},
{
path: "metadata/edit",
lazy: () =>
import(
"../../routes/product-types/product-type-metadata"
),
},
],
},
],
},
{
path: "publishable-api-keys",
element: ,
handle: {
breadcrumb: () => t("apiKeyManagement.domain.publishable"),
},
children: [
{
path: "",
element: ,
children: [
{
path: "",
lazy: () =>
import(
"../../routes/api-key-management/api-key-management-list"
),
children: [
{
path: "create",
lazy: () =>
import(
"../../routes/api-key-management/api-key-management-create"
),
},
],
},
],
},
{
path: ":id",
lazy: async () => {
const { Component, Breadcrumb, loader } = await import(
"../../routes/api-key-management/api-key-management-detail"
)
return {
Component,
loader,
handle: {
breadcrumb: (
match: UIMatch
) => ,
},
}
},
children: [
{
path: "edit",
lazy: () =>
import(
"../../routes/api-key-management/api-key-management-edit"
),
},
{
path: "sales-channels",
lazy: () =>
import(
"../../routes/api-key-management/api-key-management-sales-channels"
),
},
],
},
],
},
{
path: "secret-api-keys",
element: ,
handle: {
breadcrumb: () => t("apiKeyManagement.domain.secret"),
},
children: [
{
path: "",
element: ,
children: [
{
path: "",
lazy: () =>
import(
"../../routes/api-key-management/api-key-management-list"
),
children: [
{
path: "create",
lazy: () =>
import(
"../../routes/api-key-management/api-key-management-create"
),
},
],
},
],
},
{
path: ":id",
lazy: async () => {
const { Component, Breadcrumb, loader } = await import(
"../../routes/api-key-management/api-key-management-detail"
)
return {
Component,
loader,
handle: {
breadcrumb: (
match: UIMatch
) => ,
},
}
},
children: [
{
path: "edit",
lazy: () =>
import(
"../../routes/api-key-management/api-key-management-edit"
),
},
],
},
],
},
{
path: "tax-regions",
element: ,
handle: {
breadcrumb: () => t("taxRegions.domain"),
},
children: [
{
path: "",
lazy: () =>
import("../../routes/tax-regions/tax-region-list"),
children: [
{
path: "create",
lazy: () =>
import("../../routes/tax-regions/tax-region-create"),
},
],
},
{
path: ":id",
Component: Outlet,
loader: taxRegionLoader,
handle: {
breadcrumb: (
match: UIMatch
) => ,
},
children: [
{
path: "",
lazy: async () => {
const { Component } = await import(
"../../routes/tax-regions/tax-region-detail"
)
return {
Component,
}
},
children: [
{
path: "edit",
lazy: () =>
import("../../routes/tax-regions/tax-region-edit"),
},
{
path: "provinces/create",
lazy: () =>
import(
"../../routes/tax-regions/tax-region-province-create"
),
},
{
path: "overrides/create",
lazy: () =>
import(
"../../routes/tax-regions/tax-region-tax-override-create"
),
},
{
path: "overrides/:tax_rate_id/edit",
lazy: () =>
import(
"../../routes/tax-regions/tax-region-tax-override-edit"
),
},
{
path: "tax-rates/create",
lazy: () =>
import(
"../../routes/tax-regions/tax-region-tax-rate-create"
),
},
{
path: "tax-rates/:tax_rate_id/edit",
lazy: () =>
import(
"../../routes/tax-regions/tax-region-tax-rate-edit"
),
},
],
},
{
path: "provinces/:province_id",
lazy: async () => {
const { Component, Breadcrumb, loader } = await import(
"../../routes/tax-regions/tax-region-province-detail"
)
return {
Component,
loader,
handle: {
breadcrumb: (
match: UIMatch
) => ,
},
}
},
children: [
{
path: "tax-rates/create",
lazy: () =>
import(
"../../routes/tax-regions/tax-region-tax-rate-create"
),
},
{
path: "tax-rates/:tax_rate_id/edit",
lazy: () =>
import(
"../../routes/tax-regions/tax-region-tax-rate-edit"
),
},
{
path: "overrides/create",
lazy: () =>
import(
"../../routes/tax-regions/tax-region-tax-override-create"
),
},
{
path: "overrides/:tax_rate_id/edit",
lazy: () =>
import(
"../../routes/tax-regions/tax-region-tax-override-edit"
),
},
],
},
],
},
],
},
{
path: "return-reasons",
element: ,
handle: {
breadcrumb: () => t("returnReasons.domain"),
},
children: [
{
path: "",
lazy: () =>
import("../../routes/return-reasons/return-reason-list"),
children: [
{
path: "create",
lazy: () =>
import(
"../../routes/return-reasons/return-reason-create"
),
},
{
path: ":id",
children: [
{
path: "edit",
lazy: () =>
import(
"../../routes/return-reasons/return-reason-edit"
),
},
],
},
],
},
],
},
{
path: "refund-reasons",
element: ,
handle: {
breadcrumb: () => t("refundReasons.domain"),
},
children: [
{
path: "",
lazy: () =>
import("../../routes/refund-reasons/refund-reason-list"),
children: [
{
path: "create",
lazy: () =>
import(
"../../routes/refund-reasons/refund-reason-create"
),
},
{
path: ":id",
children: [
{
path: "edit",
lazy: () =>
import(
"../../routes/refund-reasons/refund-reason-edit"
),
},
],
},
],
},
],
},
{
path: "translations",
errorElement: ,
handle: {
breadcrumb: () => t("translations.domain"),
},
children: [
{
path: "",
lazy: () =>
import("../../routes/translations/translation-list"),
children: [
{
path: "settings",
lazy: () => import("../../routes/translations/settings"),
},
],
},
{
path: "edit",
lazy: () =>
import("../../routes/translations/translations-edit"),
},
{
path: "add-locales",
lazy: () => import("../../routes/translations/add-locales"),
},
],
},
...settingsRoutes.flatMap((r) => r?.children || []),
],
},
],
},
{
element: ,
children: [
{
errorElement: ,
children: [
{
path: "/login",
lazy: () => import("../../routes/login"),
},
{
path: "/reset-password",
lazy: () => import("../../routes/reset-password"),
},
{
path: "/invite",
lazy: () => import("../../routes/invite"),
},
{
path: "*",
lazy: () => import("../../routes/no-match"),
},
],
},
],
},
]
}