@mercurjs/admin 2.3.2-canary.1 → 2.3.2-canary.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/{add-campaign-promotions-NZ62V2LH.js → add-campaign-promotions-DAJLAYTG.js} +3 -3
  2. package/dist/{api-key-management-list-AHXOCLBO.js → api-key-management-list-P4FQQKIV.js} +1 -1
  3. package/dist/{attribute-list-6ELFWDHO.js → attribute-list-PVC4KUYQ.js} +1 -1
  4. package/dist/{campaign-detail-KZWQLIS5.js → campaign-detail-V6RISO2Y.js} +4 -4
  5. package/dist/{campaign-list-7L2DGBHW.js → campaign-list-WFFH3VPJ.js} +1 -1
  6. package/dist/{category-list-3IL2MERS.js → category-list-RBFOTJFJ.js} +1 -1
  7. package/dist/{chunk-CR7TRBEB.js → chunk-2YEBREEY.js} +2 -1
  8. package/dist/chunk-4F6SHS7A.js +83 -0
  9. package/dist/{chunk-EAZ6YM6D.js → chunk-5SDHNLEC.js} +2 -1
  10. package/dist/{chunk-ADI5XIXM.js → chunk-6DBL7KIL.js} +1 -1
  11. package/dist/{chunk-ZBRRK3Y6.js → chunk-AB34V74P.js} +3 -2
  12. package/dist/{chunk-AV6HBMRX.js → chunk-AMKTWSOZ.js} +1 -1
  13. package/dist/{chunk-3W4T2KGY.js → chunk-BNYVXSFC.js} +1 -1
  14. package/dist/{chunk-MIVPIACG.js → chunk-CGT2IRFI.js} +1 -1
  15. package/dist/{chunk-N3ZYLAGA.js → chunk-GQ45JPQR.js} +3 -2
  16. package/dist/{chunk-4KULFU3V.js → chunk-GVKW5SUK.js} +3 -2
  17. package/dist/{chunk-UGDC6FPU.js → chunk-JIVTFB67.js} +2 -1
  18. package/dist/{chunk-23KZGNNG.js → chunk-KHMHTJZG.js} +2 -1
  19. package/dist/{chunk-OQLWF43Y.js → chunk-MUSHUJHY.js} +51 -0
  20. package/dist/{chunk-LAIT7Y53.js → chunk-NO64DRH4.js} +25 -7
  21. package/dist/{chunk-AJNXQUOR.js → chunk-O56RWFFI.js} +3 -2
  22. package/dist/{chunk-OJQSOFYG.js → chunk-PC5GU4HP.js} +2 -1
  23. package/dist/{chunk-PNLDVYCP.js → chunk-R3E7BMQB.js} +1 -1
  24. package/dist/{chunk-IP5YNQ5R.js → chunk-RQCYGC2H.js} +3 -2
  25. package/dist/{chunk-EF23N7II.js → chunk-S4W3RVQV.js} +3 -2
  26. package/dist/{chunk-HBNQ3R3P.js → chunk-T36KFL5R.js} +2 -1
  27. package/dist/{chunk-CMBHUF6P.js → chunk-T3KB4DCM.js} +4 -1
  28. package/dist/{chunk-LIMG2EY2.js → chunk-VB4A2G7A.js} +3 -2
  29. package/dist/{chunk-PB24YMA4.js → chunk-VYD6M7TF.js} +2 -1
  30. package/dist/{chunk-73N66XQD.js → chunk-WCA5Z4MT.js} +2 -1
  31. package/dist/{chunk-43SWJ765.js → chunk-XBEI6JKV.js} +2 -1
  32. package/dist/{chunk-GYHF5XBU.js → chunk-XVBLVV7Y.js} +1 -1
  33. package/dist/{chunk-HFMAEJN2.js → chunk-Y5T5NATQ.js} +2 -1
  34. package/dist/{chunk-WYRUCSGW.js → chunk-YS6DRI7V.js} +2 -1
  35. package/dist/{collection-list-GMAYML6Z.js → collection-list-C2EQXJTN.js} +1 -1
  36. package/dist/{commissions-list-X54FEOEZ.js → commissions-list-VBQOQF2D.js} +1 -1
  37. package/dist/{customer-group-list-KBZBSGTQ.js → customer-group-list-NZ3D2ZAR.js} +1 -1
  38. package/dist/{customer-list-IJJEZDOZ.js → customer-list-DFONJE23.js} +1 -1
  39. package/dist/index.css +3 -0
  40. package/dist/index.d.ts +2 -0
  41. package/dist/index.js +1501 -1296
  42. package/dist/{order-edit-billing-address-QCVPGEL6.js → order-edit-billing-address-ZT7HAEXB.js} +1 -1
  43. package/dist/pages/index.d.ts +22 -22
  44. package/dist/pages/index.js +27 -27
  45. package/dist/{price-list-list-JC5EDBH6.js → price-list-list-UEEYIP5R.js} +1 -1
  46. package/dist/{product-create-QS5KIHET.js → product-create-LBKJTFOY.js} +3 -3
  47. package/dist/{product-list-2FOZLWYH.js → product-list-YHJ7DW6D.js} +1 -1
  48. package/dist/{product-media-UHDJ6RSG.js → product-media-NEAAG6IC.js} +2 -2
  49. package/dist/{product-organization-IX5XCZW4.js → product-organization-SVOLE5TG.js} +1 -1
  50. package/dist/{product-tag-list-3HOXFHMN.js → product-tag-list-GDIVZYEB.js} +1 -1
  51. package/dist/{product-type-list-NNNFCCWS.js → product-type-list-VSCQHI3D.js} +1 -1
  52. package/dist/{promotion-detail-ADTUSGD4.js → promotion-detail-HVQKXMJL.js} +3 -3
  53. package/dist/{promotion-list-MRNS47TP.js → promotion-list-KB2E4AEZ.js} +4 -4
  54. package/dist/{reservation-list-CRPRHIMT.js → reservation-list-APKRLKOF.js} +1 -1
  55. package/dist/{reset-password-N4LXTU3G.js → reset-password-BIAORJOF.js} +1 -1
  56. package/dist/{return-reason-list-AVCC44CH.js → return-reason-list-IQ2JGNEN.js} +1 -1
  57. package/dist/{shipping-option-type-list-R4JPQOAA.js → shipping-option-type-list-VQ5UVOUU.js} +1 -1
  58. package/dist/{shipping-profiles-list-UKD47NUF.js → shipping-profiles-list-AK6KXUGF.js} +1 -1
  59. package/dist/{store-edit-B54LFFLE.js → store-edit-LXGZTR3G.js} +2 -2
  60. package/dist/{store-list-3KZCD7UB.js → store-list-XXRF6JAZ.js} +1 -1
  61. package/dist/{tax-region-create-DVBIX7IX.js → tax-region-create-SFRD4AJB.js} +1 -1
  62. package/dist/{tax-region-list-JC4QYF5B.js → tax-region-list-TM23Q4HH.js} +1 -1
  63. package/dist/{user-invite-WHBNPT4I.js → user-invite-A7TBRKWI.js} +2 -2
  64. package/dist/{user-list-P7JCBIOR.js → user-list-ECF647TZ.js} +1 -1
  65. package/package.json +9 -8
  66. package/dist/chunk-PVEB24HU.js +0 -208
package/dist/index.js CHANGED
@@ -5,10 +5,9 @@ import {
5
5
  import "./chunk-QR3GYYX6.js";
6
6
  import {
7
7
  FeatureFlagProvider,
8
- PermissionsProvider,
9
8
  useFeatureFlag,
10
9
  useMePermissions
11
- } from "./chunk-PVEB24HU.js";
10
+ } from "./chunk-4F6SHS7A.js";
12
11
  import {
13
12
  isClientError
14
13
  } from "./chunk-C6SUTRP2.js";
@@ -30,7 +29,7 @@ import {
30
29
  } from "./chunk-KDE4HKH2.js";
31
30
  import {
32
31
  I18n
33
- } from "./chunk-OQLWF43Y.js";
32
+ } from "./chunk-MUSHUJHY.js";
34
33
  import {
35
34
  SwitchBox
36
35
  } from "./chunk-2EME4AWX.js";
@@ -1536,6 +1535,7 @@ import { Outlet as Outlet4 } from "react-router-dom";
1536
1535
  import { Spinner as Spinner2 } from "@medusajs/icons";
1537
1536
  import { useMemo as useMemo4 } from "react";
1538
1537
  import { Navigate, Outlet, useLocation as useLocation3 } from "react-router-dom";
1538
+ import { PermissionsProvider } from "@mercurjs/dashboard-shared";
1539
1539
  import { jsx as jsx6 } from "react/jsx-runtime";
1540
1540
  var ProtectedRoute = () => {
1541
1541
  const location = useLocation3();
@@ -1586,6 +1586,7 @@ import {
1586
1586
  Users
1587
1587
  } from "@medusajs/icons";
1588
1588
  import { Avatar as Avatar2, Divider, DropdownMenu as DropdownMenu3, Text as Text7, clx as clx6 } from "@medusajs/ui";
1589
+ import { useMemo as useMemo5 } from "react";
1589
1590
  import { useTranslation as useTranslation9 } from "react-i18next";
1590
1591
  import { Link as Link3, useLocation as useLocation7, useNavigate as useNavigate4 } from "react-router-dom";
1591
1592
 
@@ -2709,7 +2710,8 @@ var UserItem = () => {
2709
2710
  import menuItemsModule from "virtual:mercur/menu-items";
2710
2711
  import {
2711
2712
  applyNavOverrides,
2712
- useExtension
2713
+ useExtension,
2714
+ usePermissions
2713
2715
  } from "@mercurjs/dashboard-shared";
2714
2716
 
2715
2717
  // src/components/utilities/error-boundary/error-boundary.tsx
@@ -2823,9 +2825,6 @@ var addRoute = (pathSegments, Component, currentLevel, loader, handle, parallelR
2823
2825
  const isComponentSegment = currentFullPath === componentPath;
2824
2826
  if (isComponentSegment || remainingSegments.length === 0) {
2825
2827
  route.children || (route.children = []);
2826
- if (handle) {
2827
- route.handle = handle;
2828
- }
2829
2828
  if (loader) {
2830
2829
  route.loader = loader;
2831
2830
  }
@@ -2834,7 +2833,7 @@ var addRoute = (pathSegments, Component, currentLevel, loader, handle, parallelR
2834
2833
  leaf.children = processParallelRoutes(parallelRoutes, currentFullPath);
2835
2834
  Object.assign(route, leaf);
2836
2835
  } else {
2837
- const leaf = createLeafRoute(Component, loader);
2836
+ const leaf = createLeafRoute(Component, loader, handle);
2838
2837
  leaf.children = processParallelRoutes(parallelRoutes, currentFullPath);
2839
2838
  route.children.push(leaf);
2840
2839
  }
@@ -2904,10 +2903,54 @@ var getMenuItemsByType = (menuItems, type) => {
2904
2903
  return !settingsRouteRegex.test(item.path);
2905
2904
  });
2906
2905
  };
2906
+ var filterMenuItemsByPermissions = (menuItems, { hasAnyPermission, hasAllPermissions }) => {
2907
+ return menuItems.filter((item) => {
2908
+ if (!item.permissions?.length) {
2909
+ return true;
2910
+ }
2911
+ return item.requireAll ? hasAllPermissions(item.permissions) : hasAnyPermission(item.permissions);
2912
+ });
2913
+ };
2907
2914
  var getNestedMenuItems = (menuItems, parentPath) => {
2908
2915
  return menuItems.filter((item) => item.nested === parentPath).sort((a, b) => (a.rank ?? 0) - (b.rank ?? 0));
2909
2916
  };
2910
2917
 
2918
+ // src/lib/permissions/route-permissions.ts
2919
+ var ROUTE_PERMISSIONS = {
2920
+ "/orders": "order:read",
2921
+ "/products": "product:read",
2922
+ "/offers": "offer:read",
2923
+ "/collections": "product_collection:read",
2924
+ "/categories": "product_category:read",
2925
+ "/inventory": "inventory_item:read",
2926
+ "/reservations": "reservation_item:read",
2927
+ "/customers": "customer:read",
2928
+ "/customer-groups": "customer_group:read",
2929
+ "/promotions": "promotion:read",
2930
+ "/campaigns": "campaign:read",
2931
+ "/price-lists": "price_list:read",
2932
+ "/stores": "seller:read",
2933
+ "/reviews": "review:read",
2934
+ "/payouts": "payout:read",
2935
+ "/settings/regions": "region:read",
2936
+ "/settings/marketplace": "store:read",
2937
+ "/settings/commissions": "commission_rate:read",
2938
+ "/settings/users": "user:read",
2939
+ "/settings/sales-channels": "sales_channel:read",
2940
+ "/settings/locations": "stock_location:read",
2941
+ "/settings/product-tags": "product_tag:read",
2942
+ "/settings/product-types": "product_type:read",
2943
+ "/settings/attributes": "product_attribute:read",
2944
+ "/settings/shipping-profiles": "shipping_profile:read",
2945
+ "/settings/shipping-option-types": "shipping_option_type:read",
2946
+ "/settings/return-reasons": "return_reason:read",
2947
+ "/settings/refund-reasons": "refund_reason:read",
2948
+ "/settings/tax-regions": "tax_region:read",
2949
+ "/settings/publishable-api-keys": "api_key:read",
2950
+ "/settings/secret-api-keys": "api_key:read"
2951
+ };
2952
+ var getRoutePermission = (path) => ROUTE_PERMISSIONS[path];
2953
+
2911
2954
  // src/components/layout/main-layout/main-layout.tsx
2912
2955
  import { jsx as jsx14, jsxs as jsxs9 } from "react/jsx-runtime";
2913
2956
  var navId = (to) => to.replace(/^\//, "");
@@ -2926,8 +2969,8 @@ var MainLayout = () => {
2926
2969
  return /* @__PURE__ */ jsx14(Shell, { children: /* @__PURE__ */ jsx14(MainSidebar, {}) });
2927
2970
  };
2928
2971
  var allMenuItems = menuItemsModule.menuItems ?? [];
2929
- var addNestedItems = (to, items) => {
2930
- const nestedItems = getNestedMenuItems(allMenuItems, to);
2972
+ var addNestedItems = (to, menuItems, items) => {
2973
+ const nestedItems = getNestedMenuItems(menuItems, to);
2931
2974
  if (nestedItems.length === 0) {
2932
2975
  return items;
2933
2976
  }
@@ -2941,20 +2984,34 @@ var addNestedItems = (to, items) => {
2941
2984
  var MainSidebar = () => {
2942
2985
  const coreRoutes = useCoreRoutes();
2943
2986
  const navOverrides = useExtension().getNavOverrides();
2944
- const customMenuItems = getMenuItemsByType(allMenuItems, "main");
2987
+ const { hasAnyPermission, hasAllPermissions, hasPermission } = usePermissions();
2988
+ const canReach = ({ to }) => {
2989
+ const permission = getRoutePermission(to);
2990
+ return !permission || hasPermission(permission);
2991
+ };
2992
+ const visibleMenuItems = useMemo5(
2993
+ () => filterMenuItemsByPermissions(allMenuItems, {
2994
+ hasAnyPermission,
2995
+ hasAllPermissions
2996
+ }),
2997
+ [hasAnyPermission, hasAllPermissions]
2998
+ );
2999
+ const customMenuItems = getMenuItemsByType(visibleMenuItems, "main");
2945
3000
  const routesWithNested = applyNavOverrides(
2946
3001
  coreRoutes.map(toCoreNavItem),
2947
3002
  navOverrides
2948
- ).map((route) => ({
3003
+ ).filter(canReach).map((route) => ({
2949
3004
  ...route,
2950
- items: addNestedItems(route.to, route.items)
3005
+ items: addNestedItems(route.to, visibleMenuItems, route.items)?.filter(
3006
+ canReach
3007
+ )
2951
3008
  }));
2952
3009
  const customRoutesWithNested = customMenuItems.sort((a, b) => (a.rank ?? 0) - (b.rank ?? 0)).map((item) => ({
2953
3010
  label: item.label,
2954
3011
  to: item.path,
2955
3012
  icon: item.icon ? /* @__PURE__ */ jsx14(item.icon, {}) : void 0,
2956
3013
  translationNs: item.translationNs,
2957
- items: addNestedItems(item.path)
3014
+ items: addNestedItems(item.path, visibleMenuItems)
2958
3015
  }));
2959
3016
  return /* @__PURE__ */ jsx14(
2960
3017
  "aside",
@@ -3297,27 +3354,40 @@ var PublicLayout = () => {
3297
3354
  };
3298
3355
 
3299
3356
  // src/components/layout/settings-layout/settings-layout.tsx
3300
- import { useEffect as useEffect10, useMemo as useMemo5, useState as useState12 } from "react";
3357
+ import { useEffect as useEffect10, useMemo as useMemo6, useState as useState12 } from "react";
3301
3358
  import { ArrowUturnLeft as ArrowUturnLeft2, MinusMini } from "@medusajs/icons";
3302
3359
  import { Divider as Divider2, IconButton as IconButton6, Text as Text8, clx as clx7 } from "@medusajs/ui";
3303
3360
  import { Collapsible as RadixCollapsible2 } from "radix-ui";
3304
3361
  import { useTranslation as useTranslation10 } from "react-i18next";
3305
3362
  import { Link as Link4, useLocation as useLocation8 } from "react-router-dom";
3306
3363
  import menuItemsModule2 from "virtual:mercur/menu-items";
3364
+ import { usePermissions as usePermissions2 } from "@mercurjs/dashboard-shared";
3307
3365
  import { jsx as jsx16, jsxs as jsxs10 } from "react/jsx-runtime";
3308
3366
  var SettingsLayout = () => {
3309
3367
  return /* @__PURE__ */ jsx16(Shell, { children: /* @__PURE__ */ jsx16(SettingsSidebar, {}) });
3310
3368
  };
3311
3369
  var allMenuItems2 = menuItemsModule2.menuItems ?? [];
3312
- var customSettingsItems = getMenuItemsByType(allMenuItems2, "settings");
3313
- var extensionNavItems = customSettingsItems.sort((a, b) => (a.rank ?? 0) - (b.rank ?? 0)).map((item) => ({
3314
- label: item.label,
3315
- to: item.path,
3316
- translationNs: item.translationNs
3317
- }));
3370
+ var useExtensionNavItems = () => {
3371
+ const { hasAnyPermission, hasAllPermissions } = usePermissions2();
3372
+ return useMemo6(
3373
+ () => getMenuItemsByType(
3374
+ filterMenuItemsByPermissions(allMenuItems2, {
3375
+ hasAnyPermission,
3376
+ hasAllPermissions
3377
+ }),
3378
+ "settings"
3379
+ ).sort((a, b) => (a.rank ?? 0) - (b.rank ?? 0)).map((item) => ({
3380
+ label: item.label,
3381
+ to: item.path,
3382
+ translationNs: item.translationNs
3383
+ })),
3384
+ [hasAnyPermission, hasAllPermissions]
3385
+ );
3386
+ };
3318
3387
  var useSettingRoutes = () => {
3319
3388
  const { t: t2 } = useTranslation10();
3320
- return useMemo5(
3389
+ const extensionNavItems = useExtensionNavItems();
3390
+ return useMemo6(
3321
3391
  () => [
3322
3392
  {
3323
3393
  label: t2("marketplace.domain"),
@@ -3369,12 +3439,12 @@ var useSettingRoutes = () => {
3369
3439
  },
3370
3440
  ...extensionNavItems
3371
3441
  ],
3372
- [t2]
3442
+ [t2, extensionNavItems]
3373
3443
  );
3374
3444
  };
3375
3445
  var useDeveloperRoutes = () => {
3376
3446
  const { t: t2 } = useTranslation10();
3377
- return useMemo5(
3447
+ return useMemo6(
3378
3448
  () => [
3379
3449
  {
3380
3450
  label: t2("apiKeyManagement.domain.publishable"),
@@ -3390,7 +3460,7 @@ var useDeveloperRoutes = () => {
3390
3460
  };
3391
3461
  var useMyAccountRoutes = () => {
3392
3462
  const { t: t2 } = useTranslation10();
3393
- return useMemo5(
3463
+ return useMemo6(
3394
3464
  () => [
3395
3465
  {
3396
3466
  label: t2("profile.domain"),
@@ -3407,8 +3477,13 @@ var getSafeFromValue = (from) => {
3407
3477
  return from;
3408
3478
  };
3409
3479
  var SettingsSidebar = () => {
3410
- const routes = useSettingRoutes();
3411
- const developerRoutes = useDeveloperRoutes();
3480
+ const { hasPermission } = usePermissions2();
3481
+ const canReach = ({ to }) => {
3482
+ const permission = getRoutePermission(to);
3483
+ return !permission || hasPermission(permission);
3484
+ };
3485
+ const routes = useSettingRoutes().filter(canReach);
3486
+ const developerRoutes = useDeveloperRoutes().filter(canReach);
3412
3487
  const myAccountRoutes = useMyAccountRoutes();
3413
3488
  const { t: t2 } = useTranslation10();
3414
3489
  return /* @__PURE__ */ jsxs10("aside", { className: "relative flex flex-1 flex-col justify-between overflow-y-auto", children: [
@@ -3492,6 +3567,7 @@ var UserSection2 = () => {
3492
3567
  };
3493
3568
 
3494
3569
  // src/get-route-map.tsx
3570
+ import { RoutePermissionGuard } from "@mercurjs/dashboard-shared";
3495
3571
  import { jsx as jsx17 } from "react/jsx-runtime";
3496
3572
  function mergeRoutes(baseRoutes, customRoutes2) {
3497
3573
  const result = baseRoutes.map((route) => ({ ...route }));
@@ -3502,10 +3578,15 @@ function mergeRoutes(baseRoutes, customRoutes2) {
3502
3578
  );
3503
3579
  if (existingIndex !== -1) {
3504
3580
  const { children: customChildren, ...customRest } = customRoute;
3581
+ const baseHandle = result[existingIndex].handle;
3582
+ const customHandle = customRest.handle;
3505
3583
  result[existingIndex] = {
3506
3584
  ...result[existingIndex],
3507
3585
  ...customRest,
3508
3586
  path: result[existingIndex].path,
3587
+ // Merge rather than replace, so a custom route declaring only
3588
+ // `permissions` doesn't drop the base route's `breadcrumb`.
3589
+ handle: baseHandle || customHandle ? { ...baseHandle, ...customHandle } : void 0,
3509
3590
  children: customChildren ? mergeRoutes(result[existingIndex].children ?? [], customChildren) : result[existingIndex].children
3510
3591
  };
3511
3592
  } else {
@@ -3526,106 +3607,47 @@ function getRouteMap({
3526
3607
  children: [
3527
3608
  {
3528
3609
  element: /* @__PURE__ */ jsx17(MainLayout, {}),
3529
- children: mergeRoutes(
3530
- [
3531
- {
3532
- path: "/",
3533
- errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
3534
- lazy: () => import("./home-I3OILW5Z.js")
3535
- },
3536
- {
3537
- path: "/products",
3538
- errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
3539
- handle: {
3540
- breadcrumb: () => t("products.domain")
3541
- },
3542
- children: [
3610
+ children: [
3611
+ {
3612
+ // Pathless wrapper so every route below — including extension
3613
+ // routes merged in from virtual:mercur/routes — is enforced
3614
+ // without each one wiring its own guard element.
3615
+ element: /* @__PURE__ */ jsx17(RoutePermissionGuard, {}),
3616
+ children: mergeRoutes(
3617
+ [
3543
3618
  {
3544
- path: "",
3545
- lazy: () => import("./product-list-2FOZLWYH.js"),
3546
- children: [
3547
- {
3548
- path: "create",
3549
- lazy: () => import("./product-create-QS5KIHET.js")
3550
- },
3551
- {
3552
- path: "bulk-edit",
3553
- lazy: () => import("./product-bulk-edit-AVQWRUJ4.js")
3554
- }
3555
- ]
3619
+ path: "/",
3620
+ errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
3621
+ lazy: () => import("./home-I3OILW5Z.js")
3556
3622
  },
3557
3623
  {
3558
- path: ":id",
3624
+ path: "/products",
3559
3625
  errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
3560
- lazy: async () => {
3561
- const { Breadcrumb, loader } = await import("./product-detail-3WEWR76I.js");
3562
- return {
3563
- Component: Outlet4,
3564
- loader,
3565
- handle: {
3566
- breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
3567
- }
3568
- };
3626
+ handle: {
3627
+ breadcrumb: () => t("products.domain"),
3628
+ permissions: "product:read"
3569
3629
  },
3570
3630
  children: [
3571
3631
  {
3572
3632
  path: "",
3573
- lazy: () => import("./product-detail-3WEWR76I.js"),
3633
+ lazy: () => import("./product-list-YHJ7DW6D.js"),
3574
3634
  children: [
3575
3635
  {
3576
- path: "edit",
3577
- lazy: () => import("./product-edit-2CMVTDWT.js")
3578
- },
3579
- {
3580
- path: "edit-variant",
3581
- lazy: () => import("./product-variant-edit-MI72DRYG.js")
3582
- },
3583
- {
3584
- path: "sales-channels",
3585
- lazy: () => import("./product-sales-channels-OGWCSG2W.js")
3586
- },
3587
- {
3588
- path: "attributes",
3589
- lazy: () => import("./product-attributes-PCOM3JRX.js")
3590
- },
3591
- {
3592
- path: "attributes/create",
3593
- lazy: () => import("./product-create-attribute-FC26KQN4.js")
3594
- },
3595
- {
3596
- path: "attributes/add",
3597
- lazy: () => import("./product-add-existing-attributes-ASJTRVI4.js")
3598
- },
3599
- {
3600
- path: "attributes/:attribute_id/edit",
3601
- lazy: () => import("./product-edit-attribute-W3AS47FM.js")
3602
- },
3603
- {
3604
- path: "organization",
3605
- lazy: () => import("./product-organization-IX5XCZW4.js")
3606
- },
3607
- {
3608
- path: "shipping-profile",
3609
- lazy: () => import("./product-shipping-profile-SWB5FK7S.js")
3610
- },
3611
- {
3612
- path: "media",
3613
- lazy: () => import("./product-media-UHDJ6RSG.js")
3614
- },
3615
- {
3616
- path: "variants/create",
3617
- lazy: () => import("./product-create-variant-FQL5KYM6.js")
3636
+ path: "create",
3637
+ handle: { permissions: "product:create" },
3638
+ lazy: () => import("./product-create-LBKJTFOY.js")
3618
3639
  },
3619
3640
  {
3620
- path: "metadata/edit",
3621
- lazy: () => import("./product-metadata-5CRGB7TR.js")
3641
+ path: "bulk-edit",
3642
+ lazy: () => import("./product-bulk-edit-AVQWRUJ4.js")
3622
3643
  }
3623
3644
  ]
3624
3645
  },
3625
3646
  {
3626
- path: "variants/:variant_id",
3647
+ path: ":id",
3648
+ errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
3627
3649
  lazy: async () => {
3628
- const { Breadcrumb, loader } = await import("./product-variant-detail-XHMS2UT5.js");
3650
+ const { Breadcrumb, loader } = await import("./product-detail-3WEWR76I.js");
3629
3651
  return {
3630
3652
  Component: Outlet4,
3631
3653
  loader,
@@ -3637,737 +3659,817 @@ function getRouteMap({
3637
3659
  children: [
3638
3660
  {
3639
3661
  path: "",
3640
- lazy: () => import("./product-variant-detail-XHMS2UT5.js"),
3662
+ lazy: () => import("./product-detail-3WEWR76I.js"),
3641
3663
  children: [
3642
3664
  {
3643
3665
  path: "edit",
3666
+ handle: { permissions: "product:update" },
3667
+ lazy: () => import("./product-edit-2CMVTDWT.js")
3668
+ },
3669
+ {
3670
+ path: "edit-variant",
3644
3671
  lazy: () => import("./product-variant-edit-MI72DRYG.js")
3645
3672
  },
3673
+ {
3674
+ path: "sales-channels",
3675
+ lazy: () => import("./product-sales-channels-OGWCSG2W.js")
3676
+ },
3677
+ {
3678
+ path: "attributes",
3679
+ lazy: () => import("./product-attributes-PCOM3JRX.js")
3680
+ },
3681
+ {
3682
+ path: "attributes/create",
3683
+ lazy: () => import("./product-create-attribute-FC26KQN4.js")
3684
+ },
3685
+ {
3686
+ path: "attributes/add",
3687
+ lazy: () => import("./product-add-existing-attributes-ASJTRVI4.js")
3688
+ },
3689
+ {
3690
+ path: "attributes/:attribute_id/edit",
3691
+ lazy: () => import("./product-edit-attribute-W3AS47FM.js")
3692
+ },
3693
+ {
3694
+ path: "organization",
3695
+ lazy: () => import("./product-organization-SVOLE5TG.js")
3696
+ },
3697
+ {
3698
+ path: "shipping-profile",
3699
+ lazy: () => import("./product-shipping-profile-SWB5FK7S.js")
3700
+ },
3701
+ {
3702
+ path: "media",
3703
+ lazy: () => import("./product-media-NEAAG6IC.js")
3704
+ },
3705
+ {
3706
+ path: "variants/create",
3707
+ lazy: () => import("./product-create-variant-FQL5KYM6.js")
3708
+ },
3646
3709
  {
3647
3710
  path: "metadata/edit",
3648
- lazy: () => import("./product-variant-metadata-ETVJBXSW.js")
3711
+ lazy: () => import("./product-metadata-5CRGB7TR.js")
3712
+ }
3713
+ ]
3714
+ },
3715
+ {
3716
+ path: "variants/:variant_id",
3717
+ lazy: async () => {
3718
+ const { Breadcrumb, loader } = await import("./product-variant-detail-XHMS2UT5.js");
3719
+ return {
3720
+ Component: Outlet4,
3721
+ loader,
3722
+ handle: {
3723
+ breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
3724
+ }
3725
+ };
3726
+ },
3727
+ children: [
3728
+ {
3729
+ path: "",
3730
+ lazy: () => import("./product-variant-detail-XHMS2UT5.js"),
3731
+ children: [
3732
+ {
3733
+ path: "edit",
3734
+ handle: { permissions: "product:update" },
3735
+ lazy: () => import("./product-variant-edit-MI72DRYG.js")
3736
+ },
3737
+ {
3738
+ path: "metadata/edit",
3739
+ lazy: () => import("./product-variant-metadata-ETVJBXSW.js")
3740
+ }
3741
+ ]
3649
3742
  }
3650
3743
  ]
3651
3744
  }
3652
3745
  ]
3653
3746
  }
3654
3747
  ]
3655
- }
3656
- ]
3657
- },
3658
- {
3659
- path: "/categories",
3660
- errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
3661
- handle: {
3662
- breadcrumb: () => t("categories.domain")
3663
- },
3664
- children: [
3665
- {
3666
- path: "",
3667
- lazy: () => import("./category-list-3IL2MERS.js"),
3668
- children: [
3669
- {
3670
- path: "create",
3671
- lazy: () => import("./category-create-7RFRKVKF.js")
3672
- },
3673
- {
3674
- path: "organize",
3675
- lazy: () => import("./category-organize-KQ7UWVAJ.js")
3676
- }
3677
- ]
3678
3748
  },
3679
3749
  {
3680
- path: ":id",
3681
- lazy: async () => {
3682
- const { Breadcrumb, loader } = await import("./category-detail-HAGGQS7A.js");
3683
- return {
3684
- Component: Outlet4,
3685
- loader,
3686
- handle: {
3687
- breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
3688
- }
3689
- };
3750
+ path: "/categories",
3751
+ errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
3752
+ handle: {
3753
+ breadcrumb: () => t("categories.domain"),
3754
+ permissions: "product_category:read"
3690
3755
  },
3691
3756
  children: [
3692
3757
  {
3693
3758
  path: "",
3694
- lazy: () => import("./category-detail-HAGGQS7A.js"),
3759
+ lazy: () => import("./category-list-RBFOTJFJ.js"),
3695
3760
  children: [
3696
3761
  {
3697
- path: "edit",
3698
- lazy: () => import("./category-edit-3KXRPXXJ.js")
3699
- },
3700
- {
3701
- path: "media",
3702
- lazy: () => import("./category-media-IOA2VNMI.js")
3703
- },
3704
- {
3705
- path: "icon/edit",
3706
- lazy: () => import("./category-icon-edit-KUCL7KEJ.js")
3707
- },
3708
- {
3709
- path: "products",
3710
- lazy: () => import("./category-products-SMV4WSYZ.js")
3762
+ path: "create",
3763
+ handle: { permissions: "product_category:create" },
3764
+ lazy: () => import("./category-create-7RFRKVKF.js")
3711
3765
  },
3712
3766
  {
3713
3767
  path: "organize",
3714
3768
  lazy: () => import("./category-organize-KQ7UWVAJ.js")
3715
- },
3716
- {
3717
- path: "metadata/edit",
3718
- lazy: () => import("./categories-metadata-MJAYSCTW.js")
3719
3769
  }
3720
3770
  ]
3721
- }
3722
- ]
3723
- }
3724
- ]
3725
- },
3726
- {
3727
- path: "/orders",
3728
- errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
3729
- handle: {
3730
- breadcrumb: () => t("orders.domain")
3731
- },
3732
- children: [
3733
- {
3734
- path: "",
3735
- lazy: () => import("./order-list-WGQC2X2L.js")
3736
- },
3737
- {
3738
- path: ":id",
3739
- lazy: async () => {
3740
- const { Breadcrumb, loader } = await import("./order-detail-QU4GQRJI.js");
3741
- return {
3742
- Component: Outlet4,
3743
- loader,
3744
- handle: {
3745
- breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
3746
- }
3747
- };
3748
- },
3749
- children: [
3771
+ },
3750
3772
  {
3751
- path: "",
3752
- lazy: () => import("./order-detail-QU4GQRJI.js"),
3773
+ path: ":id",
3774
+ lazy: async () => {
3775
+ const { Breadcrumb, loader } = await import("./category-detail-HAGGQS7A.js");
3776
+ return {
3777
+ Component: Outlet4,
3778
+ loader,
3779
+ handle: {
3780
+ breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
3781
+ }
3782
+ };
3783
+ },
3753
3784
  children: [
3754
3785
  {
3755
- path: "returns",
3756
- lazy: () => import("./order-create-return-NW7E2KL3.js")
3757
- },
3758
- {
3759
- path: "claims",
3760
- lazy: () => import("./order-create-claim-SCUH6IYB.js")
3761
- },
3762
- {
3763
- path: "exchanges",
3764
- lazy: () => import("./order-create-exchange-ONVRQAYR.js")
3765
- },
3766
- {
3767
- path: "edits",
3768
- lazy: () => import("./order-create-edit-52VT7JLO.js")
3769
- },
3770
- {
3771
- path: "refund",
3772
- lazy: () => import("./order-create-refund-FJLL4CUD.js")
3773
- },
3774
- {
3775
- path: "transfer",
3776
- lazy: () => import("./order-request-transfer-RYVK4WYW.js")
3777
- },
3778
- {
3779
- path: "email",
3780
- lazy: () => import("./order-edit-email-BREEW246.js")
3781
- },
3782
- {
3783
- path: "shipping-address",
3784
- lazy: () => import("./order-edit-shipping-address-XUG74AFY.js")
3785
- },
3786
- {
3787
- path: "billing-address",
3788
- lazy: () => import("./order-edit-billing-address-QCVPGEL6.js")
3789
- },
3790
- {
3791
- path: "metadata/edit",
3792
- lazy: () => import("./order-metadata-VIG5MGYV.js")
3786
+ path: "",
3787
+ lazy: () => import("./category-detail-HAGGQS7A.js"),
3788
+ children: [
3789
+ {
3790
+ path: "edit",
3791
+ handle: { permissions: "product_category:update" },
3792
+ lazy: () => import("./category-edit-3KXRPXXJ.js")
3793
+ },
3794
+ {
3795
+ path: "media",
3796
+ lazy: () => import("./category-media-IOA2VNMI.js")
3797
+ },
3798
+ {
3799
+ path: "icon/edit",
3800
+ lazy: () => import("./category-icon-edit-KUCL7KEJ.js")
3801
+ },
3802
+ {
3803
+ path: "products",
3804
+ lazy: () => import("./category-products-SMV4WSYZ.js")
3805
+ },
3806
+ {
3807
+ path: "organize",
3808
+ lazy: () => import("./category-organize-KQ7UWVAJ.js")
3809
+ },
3810
+ {
3811
+ path: "metadata/edit",
3812
+ lazy: () => import("./categories-metadata-MJAYSCTW.js")
3813
+ }
3814
+ ]
3793
3815
  }
3794
3816
  ]
3795
3817
  }
3796
3818
  ]
3797
- }
3798
- ]
3799
- },
3800
- {
3801
- path: "/promotions",
3802
- errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
3803
- handle: {
3804
- breadcrumb: () => t("promotions.domain")
3805
- },
3806
- children: [
3807
- {
3808
- path: "",
3809
- lazy: () => import("./promotion-list-MRNS47TP.js")
3810
3819
  },
3811
3820
  {
3812
- path: "create",
3813
- lazy: () => import("./promotion-create-7ZUJ4W2J.js")
3814
- },
3815
- {
3816
- path: ":id",
3817
- lazy: async () => {
3818
- const { Breadcrumb, loader } = await import("./promotion-detail-ADTUSGD4.js");
3819
- return {
3820
- Component: Outlet4,
3821
- loader,
3822
- handle: {
3823
- breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
3824
- }
3825
- };
3821
+ path: "/orders",
3822
+ errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
3823
+ handle: {
3824
+ breadcrumb: () => t("orders.domain"),
3825
+ permissions: "order:read"
3826
3826
  },
3827
3827
  children: [
3828
3828
  {
3829
3829
  path: "",
3830
- lazy: () => import("./promotion-detail-ADTUSGD4.js"),
3830
+ lazy: () => import("./order-list-WGQC2X2L.js")
3831
+ },
3832
+ {
3833
+ path: ":id",
3834
+ lazy: async () => {
3835
+ const { Breadcrumb, loader } = await import("./order-detail-QU4GQRJI.js");
3836
+ return {
3837
+ Component: Outlet4,
3838
+ loader,
3839
+ handle: {
3840
+ breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
3841
+ }
3842
+ };
3843
+ },
3831
3844
  children: [
3832
3845
  {
3833
- path: "edit",
3834
- lazy: () => import("./promotion-edit-details-7PHH756U.js")
3835
- },
3836
- {
3837
- path: "add-to-campaign",
3838
- lazy: () => import("./promotion-add-campaign-VAF3HTLK.js")
3839
- },
3840
- {
3841
- path: ":ruleType/edit",
3842
- lazy: () => import("./edit-rules-RJC3AYJN.js")
3846
+ path: "",
3847
+ lazy: () => import("./order-detail-QU4GQRJI.js"),
3848
+ children: [
3849
+ {
3850
+ path: "returns",
3851
+ lazy: () => import("./order-create-return-NW7E2KL3.js")
3852
+ },
3853
+ {
3854
+ path: "claims",
3855
+ lazy: () => import("./order-create-claim-SCUH6IYB.js")
3856
+ },
3857
+ {
3858
+ path: "exchanges",
3859
+ lazy: () => import("./order-create-exchange-ONVRQAYR.js")
3860
+ },
3861
+ {
3862
+ path: "edits",
3863
+ lazy: () => import("./order-create-edit-52VT7JLO.js")
3864
+ },
3865
+ {
3866
+ path: "refund",
3867
+ lazy: () => import("./order-create-refund-FJLL4CUD.js")
3868
+ },
3869
+ {
3870
+ path: "transfer",
3871
+ lazy: () => import("./order-request-transfer-RYVK4WYW.js")
3872
+ },
3873
+ {
3874
+ path: "email",
3875
+ lazy: () => import("./order-edit-email-BREEW246.js")
3876
+ },
3877
+ {
3878
+ path: "shipping-address",
3879
+ lazy: () => import("./order-edit-shipping-address-XUG74AFY.js")
3880
+ },
3881
+ {
3882
+ path: "billing-address",
3883
+ lazy: () => import("./order-edit-billing-address-ZT7HAEXB.js")
3884
+ },
3885
+ {
3886
+ path: "metadata/edit",
3887
+ lazy: () => import("./order-metadata-VIG5MGYV.js")
3888
+ }
3889
+ ]
3843
3890
  }
3844
3891
  ]
3845
3892
  }
3846
3893
  ]
3847
- }
3848
- ]
3849
- },
3850
- {
3851
- path: "/campaigns",
3852
- errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
3853
- handle: {
3854
- breadcrumb: () => t("campaigns.domain")
3855
- },
3856
- children: [
3857
- {
3858
- path: "",
3859
- lazy: () => import("./campaign-list-7L2DGBHW.js"),
3860
- children: []
3861
- },
3862
- {
3863
- path: "create",
3864
- lazy: () => import("./campaign-create-FEEKJCUE.js")
3865
3894
  },
3866
3895
  {
3867
- path: ":id",
3868
- lazy: async () => {
3869
- const { Breadcrumb, loader } = await import("./campaign-detail-KZWQLIS5.js");
3870
- return {
3871
- Component: Outlet4,
3872
- loader,
3873
- handle: {
3874
- breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
3875
- }
3876
- };
3896
+ path: "/promotions",
3897
+ errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
3898
+ handle: {
3899
+ breadcrumb: () => t("promotions.domain"),
3900
+ permissions: "promotion:read"
3877
3901
  },
3878
3902
  children: [
3879
3903
  {
3880
3904
  path: "",
3881
- lazy: () => import("./campaign-detail-KZWQLIS5.js"),
3882
- children: [
3883
- {
3884
- path: "edit",
3885
- lazy: () => import("./campaign-edit-2WJ7V2EY.js")
3886
- },
3887
- {
3888
- path: "configuration",
3889
- lazy: () => import("./campaign-configuration-H6SKZFDS.js")
3890
- },
3891
- {
3892
- path: "edit-budget",
3893
- lazy: () => import("./campaign-budget-edit-EBFDQ6OX.js")
3894
- },
3905
+ lazy: () => import("./promotion-list-KB2E4AEZ.js")
3906
+ },
3907
+ {
3908
+ path: "create",
3909
+ handle: { permissions: "promotion:create" },
3910
+ lazy: () => import("./promotion-create-7ZUJ4W2J.js")
3911
+ },
3912
+ {
3913
+ path: ":id",
3914
+ lazy: async () => {
3915
+ const { Breadcrumb, loader } = await import("./promotion-detail-HVQKXMJL.js");
3916
+ return {
3917
+ Component: Outlet4,
3918
+ loader,
3919
+ handle: {
3920
+ breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
3921
+ }
3922
+ };
3923
+ },
3924
+ children: [
3895
3925
  {
3896
- path: "add-promotions",
3897
- lazy: () => import("./add-campaign-promotions-NZ62V2LH.js")
3926
+ path: "",
3927
+ lazy: () => import("./promotion-detail-HVQKXMJL.js"),
3928
+ children: [
3929
+ {
3930
+ path: "edit",
3931
+ handle: { permissions: "promotion:update" },
3932
+ lazy: () => import("./promotion-edit-details-7PHH756U.js")
3933
+ },
3934
+ {
3935
+ path: "add-to-campaign",
3936
+ lazy: () => import("./promotion-add-campaign-VAF3HTLK.js")
3937
+ },
3938
+ {
3939
+ path: ":ruleType/edit",
3940
+ lazy: () => import("./edit-rules-RJC3AYJN.js")
3941
+ }
3942
+ ]
3898
3943
  }
3899
3944
  ]
3900
3945
  }
3901
3946
  ]
3902
- }
3903
- ]
3904
- },
3905
- {
3906
- path: "/reviews",
3907
- errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
3908
- handle: {
3909
- breadcrumb: () => t("reviews.domain")
3910
- },
3911
- children: [
3912
- {
3913
- path: "",
3914
- lazy: () => import("./review-list-BTBPA2HV.js"),
3915
- children: []
3916
3947
  },
3917
3948
  {
3918
- path: ":id",
3919
- lazy: async () => {
3920
- const { Breadcrumb, loader } = await import("./review-detail-K555FECH.js");
3921
- return {
3922
- Component: Outlet4,
3923
- loader,
3924
- handle: {
3925
- breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
3926
- }
3927
- };
3949
+ path: "/campaigns",
3950
+ errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
3951
+ handle: {
3952
+ breadcrumb: () => t("campaigns.domain"),
3953
+ permissions: "campaign:read"
3928
3954
  },
3929
3955
  children: [
3930
3956
  {
3931
3957
  path: "",
3932
- lazy: () => import("./review-detail-K555FECH.js"),
3958
+ lazy: () => import("./campaign-list-WFFH3VPJ.js"),
3959
+ children: []
3960
+ },
3961
+ {
3962
+ path: "create",
3963
+ handle: { permissions: "campaign:create" },
3964
+ lazy: () => import("./campaign-create-FEEKJCUE.js")
3965
+ },
3966
+ {
3967
+ path: ":id",
3968
+ lazy: async () => {
3969
+ const { Breadcrumb, loader } = await import("./campaign-detail-V6RISO2Y.js");
3970
+ return {
3971
+ Component: Outlet4,
3972
+ loader,
3973
+ handle: {
3974
+ breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
3975
+ }
3976
+ };
3977
+ },
3933
3978
  children: [
3934
3979
  {
3935
- path: "edit",
3936
- lazy: () => import("./review-edit-VD4JATST.js")
3937
- },
3938
- {
3939
- path: "respond",
3940
- lazy: () => import("./review-respond-N6JNU5HF.js")
3980
+ path: "",
3981
+ lazy: () => import("./campaign-detail-V6RISO2Y.js"),
3982
+ children: [
3983
+ {
3984
+ path: "edit",
3985
+ handle: { permissions: "campaign:update" },
3986
+ lazy: () => import("./campaign-edit-2WJ7V2EY.js")
3987
+ },
3988
+ {
3989
+ path: "configuration",
3990
+ lazy: () => import("./campaign-configuration-H6SKZFDS.js")
3991
+ },
3992
+ {
3993
+ path: "edit-budget",
3994
+ lazy: () => import("./campaign-budget-edit-EBFDQ6OX.js")
3995
+ },
3996
+ {
3997
+ path: "add-promotions",
3998
+ lazy: () => import("./add-campaign-promotions-DAJLAYTG.js")
3999
+ }
4000
+ ]
3941
4001
  }
3942
4002
  ]
3943
4003
  }
3944
4004
  ]
3945
- }
3946
- ]
3947
- },
3948
- {
3949
- path: "/collections",
3950
- errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
3951
- handle: {
3952
- breadcrumb: () => t("collections.domain")
3953
- },
3954
- children: [
3955
- {
3956
- path: "",
3957
- lazy: () => import("./collection-list-GMAYML6Z.js"),
3958
- children: [
3959
- {
3960
- path: "create",
3961
- lazy: () => import("./collection-create-W75VOWNN.js")
3962
- }
3963
- ]
3964
4005
  },
3965
4006
  {
3966
- path: ":id",
3967
- lazy: async () => {
3968
- const { Breadcrumb, loader } = await import("./collection-detail-JNAFJQXL.js");
3969
- return {
3970
- Component: Outlet4,
3971
- loader,
3972
- handle: {
3973
- breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
3974
- }
3975
- };
4007
+ path: "/reviews",
4008
+ errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4009
+ handle: {
4010
+ breadcrumb: () => t("reviews.domain"),
4011
+ permissions: "review:read"
3976
4012
  },
3977
4013
  children: [
3978
4014
  {
3979
4015
  path: "",
3980
- lazy: () => import("./collection-detail-JNAFJQXL.js"),
4016
+ lazy: () => import("./review-list-BTBPA2HV.js"),
4017
+ children: []
4018
+ },
4019
+ {
4020
+ path: ":id",
4021
+ lazy: async () => {
4022
+ const { Breadcrumb, loader } = await import("./review-detail-K555FECH.js");
4023
+ return {
4024
+ Component: Outlet4,
4025
+ loader,
4026
+ handle: {
4027
+ breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
4028
+ }
4029
+ };
4030
+ },
3981
4031
  children: [
3982
4032
  {
3983
- path: "edit",
3984
- lazy: () => import("./collection-edit-HMOZIS7Z.js")
3985
- },
3986
- {
3987
- path: "media",
3988
- lazy: () => import("./collection-media-PKTR7VDY.js")
3989
- },
3990
- {
3991
- path: "icon/edit",
3992
- lazy: () => import("./collection-icon-edit-L6VSK4DB.js")
3993
- },
3994
- {
3995
- path: "products",
3996
- lazy: () => import("./collection-add-products-VUXYBZUZ.js")
3997
- },
3998
- {
3999
- path: "metadata/edit",
4000
- lazy: () => import("./collection-metadata-XM2EBCWF.js")
4033
+ path: "",
4034
+ lazy: () => import("./review-detail-K555FECH.js"),
4035
+ children: [
4036
+ {
4037
+ path: "edit",
4038
+ handle: { permissions: "review:update" },
4039
+ lazy: () => import("./review-edit-VD4JATST.js")
4040
+ },
4041
+ {
4042
+ path: "respond",
4043
+ lazy: () => import("./review-respond-N6JNU5HF.js")
4044
+ }
4045
+ ]
4001
4046
  }
4002
4047
  ]
4003
4048
  }
4004
4049
  ]
4005
- }
4006
- ]
4007
- },
4008
- {
4009
- path: "/price-lists",
4010
- errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4011
- handle: {
4012
- breadcrumb: () => t("priceLists.domain")
4013
- },
4014
- children: [
4015
- {
4016
- path: "",
4017
- lazy: () => import("./price-list-list-JC5EDBH6.js"),
4018
- children: [
4019
- {
4020
- path: "create",
4021
- lazy: () => import("./price-list-create-6PKWU4YS.js")
4022
- }
4023
- ]
4024
4050
  },
4025
4051
  {
4026
- path: ":id",
4027
- lazy: async () => {
4028
- const { Breadcrumb, loader } = await import("./price-list-detail-OUWCRZFB.js");
4029
- return {
4030
- Component: Outlet4,
4031
- loader,
4032
- handle: {
4033
- breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
4034
- }
4035
- };
4052
+ path: "/collections",
4053
+ errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4054
+ handle: {
4055
+ breadcrumb: () => t("collections.domain"),
4056
+ permissions: "product_collection:read"
4036
4057
  },
4037
4058
  children: [
4038
4059
  {
4039
4060
  path: "",
4040
- lazy: () => import("./price-list-detail-OUWCRZFB.js"),
4061
+ lazy: () => import("./collection-list-C2EQXJTN.js"),
4041
4062
  children: [
4042
4063
  {
4043
- path: "edit",
4044
- lazy: () => import("./price-list-edit-ZVP6CCPE.js")
4045
- },
4046
- {
4047
- path: "configuration",
4048
- lazy: () => import("./price-list-configuration-4OTKSK5N.js")
4049
- },
4050
- {
4051
- path: "customer-availability",
4052
- lazy: () => import("./price-list-customer-availability-WU2OGO37.js")
4053
- },
4054
- {
4055
- path: "products/add",
4056
- lazy: () => import("./price-list-prices-add-OSHFP3DP.js")
4057
- },
4058
- {
4059
- path: "products/edit",
4060
- lazy: () => import("./price-list-prices-edit-QQUJPIUM.js")
4064
+ path: "create",
4065
+ handle: { permissions: "product_collection:create" },
4066
+ lazy: () => import("./collection-create-W75VOWNN.js")
4061
4067
  }
4062
4068
  ]
4063
- }
4064
- ]
4065
- }
4066
- ]
4067
- },
4068
- {
4069
- path: "/customers",
4070
- errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4071
- handle: {
4072
- breadcrumb: () => t("customers.domain")
4073
- },
4074
- children: [
4075
- {
4076
- path: "",
4077
- lazy: () => import("./customer-list-IJJEZDOZ.js"),
4078
- children: [
4069
+ },
4079
4070
  {
4080
- path: "create",
4081
- lazy: () => import("./customer-create-46H2N34Z.js")
4071
+ path: ":id",
4072
+ lazy: async () => {
4073
+ const { Breadcrumb, loader } = await import("./collection-detail-JNAFJQXL.js");
4074
+ return {
4075
+ Component: Outlet4,
4076
+ loader,
4077
+ handle: {
4078
+ breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
4079
+ }
4080
+ };
4081
+ },
4082
+ children: [
4083
+ {
4084
+ path: "",
4085
+ lazy: () => import("./collection-detail-JNAFJQXL.js"),
4086
+ children: [
4087
+ {
4088
+ path: "edit",
4089
+ handle: { permissions: "product_collection:update" },
4090
+ lazy: () => import("./collection-edit-HMOZIS7Z.js")
4091
+ },
4092
+ {
4093
+ path: "media",
4094
+ lazy: () => import("./collection-media-PKTR7VDY.js")
4095
+ },
4096
+ {
4097
+ path: "icon/edit",
4098
+ lazy: () => import("./collection-icon-edit-L6VSK4DB.js")
4099
+ },
4100
+ {
4101
+ path: "products",
4102
+ lazy: () => import("./collection-add-products-VUXYBZUZ.js")
4103
+ },
4104
+ {
4105
+ path: "metadata/edit",
4106
+ lazy: () => import("./collection-metadata-XM2EBCWF.js")
4107
+ }
4108
+ ]
4109
+ }
4110
+ ]
4082
4111
  }
4083
4112
  ]
4084
4113
  },
4085
4114
  {
4086
- path: ":id",
4087
- lazy: async () => {
4088
- const { Breadcrumb, loader } = await import("./customer-detail-GWF2DLBE.js");
4089
- return {
4090
- Component: Outlet4,
4091
- loader,
4092
- handle: {
4093
- breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
4094
- }
4095
- };
4115
+ path: "/price-lists",
4116
+ errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4117
+ handle: {
4118
+ breadcrumb: () => t("priceLists.domain"),
4119
+ permissions: "price_list:read"
4096
4120
  },
4097
4121
  children: [
4098
4122
  {
4099
4123
  path: "",
4100
- lazy: () => import("./customer-detail-GWF2DLBE.js"),
4124
+ lazy: () => import("./price-list-list-UEEYIP5R.js"),
4101
4125
  children: [
4102
4126
  {
4103
- path: "edit",
4104
- lazy: () => import("./customer-edit-5EH2AUGN.js")
4105
- },
4106
- {
4107
- path: "create-address",
4108
- lazy: () => import("./customer-create-address-OGWYC7BZ.js")
4109
- },
4110
- {
4111
- path: "edit-address/:address_id",
4112
- lazy: () => import("./customer-edit-address-PGWY42QU.js")
4113
- },
4114
- {
4115
- path: "add-customer-groups",
4116
- lazy: () => import("./customers-add-customer-group-OQBT7CUI.js")
4117
- },
4118
- {
4119
- path: ":order_id/transfer",
4120
- lazy: () => import("./order-request-transfer-RYVK4WYW.js")
4121
- },
4122
- {
4123
- path: "metadata/edit",
4124
- lazy: () => import("./customer-metadata-GWZC456X.js")
4127
+ path: "create",
4128
+ handle: { permissions: "price_list:create" },
4129
+ lazy: () => import("./price-list-create-6PKWU4YS.js")
4125
4130
  }
4126
4131
  ]
4127
- }
4128
- ]
4129
- }
4130
- ]
4131
- },
4132
- {
4133
- path: "/customer-groups",
4134
- errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4135
- handle: {
4136
- breadcrumb: () => t("customerGroups.domain")
4137
- },
4138
- children: [
4139
- {
4140
- path: "",
4141
- lazy: () => import("./customer-group-list-KBZBSGTQ.js"),
4142
- children: [
4132
+ },
4143
4133
  {
4144
- path: "create",
4145
- lazy: () => import("./customer-group-create-WER6DODC.js")
4134
+ path: ":id",
4135
+ lazy: async () => {
4136
+ const { Breadcrumb, loader } = await import("./price-list-detail-OUWCRZFB.js");
4137
+ return {
4138
+ Component: Outlet4,
4139
+ loader,
4140
+ handle: {
4141
+ breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
4142
+ }
4143
+ };
4144
+ },
4145
+ children: [
4146
+ {
4147
+ path: "",
4148
+ lazy: () => import("./price-list-detail-OUWCRZFB.js"),
4149
+ children: [
4150
+ {
4151
+ path: "edit",
4152
+ handle: { permissions: "price_list:update" },
4153
+ lazy: () => import("./price-list-edit-ZVP6CCPE.js")
4154
+ },
4155
+ {
4156
+ path: "configuration",
4157
+ lazy: () => import("./price-list-configuration-4OTKSK5N.js")
4158
+ },
4159
+ {
4160
+ path: "customer-availability",
4161
+ lazy: () => import("./price-list-customer-availability-WU2OGO37.js")
4162
+ },
4163
+ {
4164
+ path: "products/add",
4165
+ lazy: () => import("./price-list-prices-add-OSHFP3DP.js")
4166
+ },
4167
+ {
4168
+ path: "products/edit",
4169
+ lazy: () => import("./price-list-prices-edit-QQUJPIUM.js")
4170
+ }
4171
+ ]
4172
+ }
4173
+ ]
4146
4174
  }
4147
4175
  ]
4148
4176
  },
4149
4177
  {
4150
- path: ":id",
4151
- lazy: async () => {
4152
- const { Breadcrumb, loader } = await import("./customer-group-detail-FX3PNES4.js");
4153
- return {
4154
- Component: Outlet4,
4155
- loader,
4156
- handle: {
4157
- breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
4158
- }
4159
- };
4178
+ path: "/customers",
4179
+ errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4180
+ handle: {
4181
+ breadcrumb: () => t("customers.domain"),
4182
+ permissions: "customer:read"
4160
4183
  },
4161
4184
  children: [
4162
4185
  {
4163
4186
  path: "",
4164
- lazy: () => import("./customer-group-detail-FX3PNES4.js"),
4187
+ lazy: () => import("./customer-list-DFONJE23.js"),
4165
4188
  children: [
4166
4189
  {
4167
- path: "edit",
4168
- lazy: () => import("./customer-group-edit-ZQTBUZVR.js")
4169
- },
4170
- {
4171
- path: "add-customers",
4172
- lazy: () => import("./customer-group-add-customers-6HJMWGW2.js")
4173
- },
4190
+ path: "create",
4191
+ handle: { permissions: "customer:create" },
4192
+ lazy: () => import("./customer-create-46H2N34Z.js")
4193
+ }
4194
+ ]
4195
+ },
4196
+ {
4197
+ path: ":id",
4198
+ lazy: async () => {
4199
+ const { Breadcrumb, loader } = await import("./customer-detail-GWF2DLBE.js");
4200
+ return {
4201
+ Component: Outlet4,
4202
+ loader,
4203
+ handle: {
4204
+ breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
4205
+ }
4206
+ };
4207
+ },
4208
+ children: [
4174
4209
  {
4175
- path: "metadata/edit",
4176
- lazy: () => import("./customer-group-metadata-FUJFFWCO.js")
4210
+ path: "",
4211
+ lazy: () => import("./customer-detail-GWF2DLBE.js"),
4212
+ children: [
4213
+ {
4214
+ path: "edit",
4215
+ handle: { permissions: "customer:update" },
4216
+ lazy: () => import("./customer-edit-5EH2AUGN.js")
4217
+ },
4218
+ {
4219
+ path: "create-address",
4220
+ lazy: () => import("./customer-create-address-OGWYC7BZ.js")
4221
+ },
4222
+ {
4223
+ path: "edit-address/:address_id",
4224
+ lazy: () => import("./customer-edit-address-PGWY42QU.js")
4225
+ },
4226
+ {
4227
+ path: "add-customer-groups",
4228
+ lazy: () => import("./customers-add-customer-group-OQBT7CUI.js")
4229
+ },
4230
+ {
4231
+ path: ":order_id/transfer",
4232
+ lazy: () => import("./order-request-transfer-RYVK4WYW.js")
4233
+ },
4234
+ {
4235
+ path: "metadata/edit",
4236
+ lazy: () => import("./customer-metadata-GWZC456X.js")
4237
+ }
4238
+ ]
4177
4239
  }
4178
4240
  ]
4179
4241
  }
4180
4242
  ]
4181
- }
4182
- ]
4183
- },
4184
- {
4185
- path: "/stores",
4186
- errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4187
- handle: {
4188
- breadcrumb: () => t("stores.domain")
4189
- },
4190
- children: [
4243
+ },
4191
4244
  {
4192
- path: "",
4193
- lazy: () => import("./store-list-3KZCD7UB.js"),
4245
+ path: "/customer-groups",
4246
+ errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4247
+ handle: {
4248
+ breadcrumb: () => t("customerGroups.domain"),
4249
+ permissions: "customer_group:read"
4250
+ },
4194
4251
  children: [
4195
4252
  {
4196
- path: "create",
4197
- lazy: () => import("./store-create-J4SL6SY3.js")
4253
+ path: "",
4254
+ lazy: () => import("./customer-group-list-NZ3D2ZAR.js"),
4255
+ children: [
4256
+ {
4257
+ path: "create",
4258
+ handle: { permissions: "customer_group:create" },
4259
+ lazy: () => import("./customer-group-create-WER6DODC.js")
4260
+ }
4261
+ ]
4198
4262
  },
4199
4263
  {
4200
- path: "bulk-edit",
4201
- lazy: () => import("./store-bulk-edit-DX3U7HBE.js")
4264
+ path: ":id",
4265
+ lazy: async () => {
4266
+ const { Breadcrumb, loader } = await import("./customer-group-detail-FX3PNES4.js");
4267
+ return {
4268
+ Component: Outlet4,
4269
+ loader,
4270
+ handle: {
4271
+ breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
4272
+ }
4273
+ };
4274
+ },
4275
+ children: [
4276
+ {
4277
+ path: "",
4278
+ lazy: () => import("./customer-group-detail-FX3PNES4.js"),
4279
+ children: [
4280
+ {
4281
+ path: "edit",
4282
+ handle: { permissions: "customer_group:update" },
4283
+ lazy: () => import("./customer-group-edit-ZQTBUZVR.js")
4284
+ },
4285
+ {
4286
+ path: "add-customers",
4287
+ lazy: () => import("./customer-group-add-customers-6HJMWGW2.js")
4288
+ },
4289
+ {
4290
+ path: "metadata/edit",
4291
+ lazy: () => import("./customer-group-metadata-FUJFFWCO.js")
4292
+ }
4293
+ ]
4294
+ }
4295
+ ]
4202
4296
  }
4203
4297
  ]
4204
4298
  },
4205
4299
  {
4206
- path: ":id",
4207
- lazy: async () => {
4208
- const { Breadcrumb } = await import("./store-details-KI5D4VSI.js");
4209
- return {
4210
- Component: Outlet4,
4211
- handle: {
4212
- breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
4213
- }
4214
- };
4300
+ path: "/stores",
4301
+ errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4302
+ handle: {
4303
+ breadcrumb: () => t("stores.domain"),
4304
+ permissions: "seller:read"
4215
4305
  },
4216
4306
  children: [
4217
4307
  {
4218
4308
  path: "",
4219
- lazy: () => import("./store-details-KI5D4VSI.js"),
4309
+ lazy: () => import("./store-list-XXRF6JAZ.js"),
4310
+ children: [
4311
+ {
4312
+ path: "create",
4313
+ handle: { permissions: "seller:create" },
4314
+ lazy: () => import("./store-create-J4SL6SY3.js")
4315
+ },
4316
+ {
4317
+ path: "bulk-edit",
4318
+ lazy: () => import("./store-bulk-edit-DX3U7HBE.js")
4319
+ }
4320
+ ]
4321
+ },
4322
+ {
4323
+ path: ":id",
4324
+ lazy: async () => {
4325
+ const { Breadcrumb } = await import("./store-details-KI5D4VSI.js");
4326
+ return {
4327
+ Component: Outlet4,
4328
+ handle: {
4329
+ breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
4330
+ }
4331
+ };
4332
+ },
4220
4333
  children: [
4221
4334
  {
4222
- path: "edit",
4223
- lazy: () => import("./store-edit-B54LFFLE.js")
4224
- },
4225
- {
4226
- path: "edit-address",
4227
- lazy: () => import("./store-address-edit-VLYDLTHQ.js")
4228
- },
4229
- {
4230
- path: "professional-details",
4231
- lazy: () => import("./store-professional-details-edit-MXW6WBQF.js")
4232
- },
4233
- {
4234
- path: "payment-details",
4235
- lazy: () => import("./store-payment-details-edit-VCCSUXIV.js")
4236
- },
4237
- {
4238
- path: "store-closure",
4239
- lazy: () => import("./store-closure-edit-AT4DMZRF.js")
4240
- },
4241
- {
4242
- path: "invite",
4243
- lazy: () => import("./store-member-invite-5S64PDTE.js")
4335
+ path: "",
4336
+ lazy: () => import("./store-details-KI5D4VSI.js"),
4337
+ children: [
4338
+ {
4339
+ path: "edit",
4340
+ handle: { permissions: "seller:update" },
4341
+ lazy: () => import("./store-edit-LXGZTR3G.js")
4342
+ },
4343
+ {
4344
+ path: "edit-address",
4345
+ lazy: () => import("./store-address-edit-VLYDLTHQ.js")
4346
+ },
4347
+ {
4348
+ path: "professional-details",
4349
+ lazy: () => import("./store-professional-details-edit-MXW6WBQF.js")
4350
+ },
4351
+ {
4352
+ path: "payment-details",
4353
+ lazy: () => import("./store-payment-details-edit-VCCSUXIV.js")
4354
+ },
4355
+ {
4356
+ path: "store-closure",
4357
+ lazy: () => import("./store-closure-edit-AT4DMZRF.js")
4358
+ },
4359
+ {
4360
+ path: "invite",
4361
+ lazy: () => import("./store-member-invite-5S64PDTE.js")
4362
+ }
4363
+ ]
4244
4364
  }
4245
4365
  ]
4246
4366
  }
4247
4367
  ]
4248
- }
4249
- ]
4250
- },
4251
- {
4252
- path: "/payouts",
4253
- errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4254
- handle: {
4255
- breadcrumb: () => "Payouts"
4256
- },
4257
- children: [
4258
- {
4259
- path: "",
4260
- lazy: () => import("./payout-list-HRVCGZJS.js")
4261
4368
  },
4262
4369
  {
4263
- path: ":id",
4264
- lazy: async () => {
4265
- const { Breadcrumb, loader } = await import("./payout-detail-UTFO6U4H.js");
4266
- return {
4267
- Component: Outlet4,
4268
- loader,
4269
- handle: {
4270
- breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
4271
- }
4272
- };
4370
+ path: "/payouts",
4371
+ errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4372
+ handle: {
4373
+ breadcrumb: () => "Payouts",
4374
+ permissions: "payout:read"
4273
4375
  },
4274
4376
  children: [
4275
4377
  {
4276
4378
  path: "",
4277
- lazy: () => import("./payout-detail-UTFO6U4H.js")
4278
- }
4279
- ]
4280
- }
4281
- ]
4282
- },
4283
- {
4284
- path: "/reservations",
4285
- errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4286
- handle: {
4287
- breadcrumb: () => t("reservations.domain")
4288
- },
4289
- children: [
4290
- {
4291
- path: "",
4292
- lazy: () => import("./reservation-list-CRPRHIMT.js"),
4293
- children: [
4379
+ lazy: () => import("./payout-list-HRVCGZJS.js")
4380
+ },
4294
4381
  {
4295
- path: "create",
4296
- lazy: () => import("./reservation-create-H3T3AHTK.js")
4382
+ path: ":id",
4383
+ lazy: async () => {
4384
+ const { Breadcrumb, loader } = await import("./payout-detail-UTFO6U4H.js");
4385
+ return {
4386
+ Component: Outlet4,
4387
+ loader,
4388
+ handle: {
4389
+ breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
4390
+ }
4391
+ };
4392
+ },
4393
+ children: [
4394
+ {
4395
+ path: "",
4396
+ lazy: () => import("./payout-detail-UTFO6U4H.js")
4397
+ }
4398
+ ]
4297
4399
  }
4298
4400
  ]
4299
4401
  },
4300
4402
  {
4301
- path: ":id",
4302
- lazy: async () => {
4303
- const { Breadcrumb, loader } = await import("./reservation-detail-5GYGVM3M.js");
4304
- return {
4305
- Component: Outlet4,
4306
- loader,
4307
- handle: {
4308
- breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
4309
- }
4310
- };
4403
+ path: "/reservations",
4404
+ errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4405
+ handle: {
4406
+ breadcrumb: () => t("reservations.domain"),
4407
+ permissions: "reservation_item:read"
4311
4408
  },
4312
4409
  children: [
4313
4410
  {
4314
4411
  path: "",
4315
- lazy: () => import("./reservation-detail-5GYGVM3M.js"),
4412
+ lazy: () => import("./reservation-list-APKRLKOF.js"),
4316
4413
  children: [
4317
4414
  {
4318
- path: "edit",
4319
- lazy: () => import("./edit-reservation-W3THLKKK.js")
4320
- },
4415
+ path: "create",
4416
+ handle: { permissions: "reservation_item:create" },
4417
+ lazy: () => import("./reservation-create-H3T3AHTK.js")
4418
+ }
4419
+ ]
4420
+ },
4421
+ {
4422
+ path: ":id",
4423
+ lazy: async () => {
4424
+ const { Breadcrumb, loader } = await import("./reservation-detail-5GYGVM3M.js");
4425
+ return {
4426
+ Component: Outlet4,
4427
+ loader,
4428
+ handle: {
4429
+ breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
4430
+ }
4431
+ };
4432
+ },
4433
+ children: [
4321
4434
  {
4322
- path: "metadata/edit",
4323
- lazy: () => import("./reservation-metadata-P4G3JEDW.js")
4435
+ path: "",
4436
+ lazy: () => import("./reservation-detail-5GYGVM3M.js"),
4437
+ children: [
4438
+ {
4439
+ path: "edit",
4440
+ handle: { permissions: "reservation_item:update" },
4441
+ lazy: () => import("./edit-reservation-W3THLKKK.js")
4442
+ },
4443
+ {
4444
+ path: "metadata/edit",
4445
+ lazy: () => import("./reservation-metadata-P4G3JEDW.js")
4446
+ }
4447
+ ]
4324
4448
  }
4325
4449
  ]
4326
4450
  }
4327
4451
  ]
4328
- }
4329
- ]
4330
- },
4331
- {
4332
- path: "/offers",
4333
- errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4334
- handle: {
4335
- breadcrumb: () => t("offers.domain")
4336
- },
4337
- children: [
4338
- {
4339
- path: "",
4340
- lazy: async () => {
4341
- const { OfferListPage } = await import("./offers-HRSJXCBB.js");
4342
- return { Component: OfferListPage };
4343
- }
4344
4452
  },
4345
4453
  {
4346
- path: ":id",
4347
- lazy: async () => {
4348
- const { loader } = await import("./loader-3VTBJUA2.js");
4349
- const { Breadcrumb } = await import("./breadcrumb-KOE4ZWGU.js");
4350
- return {
4351
- Component: Outlet4,
4352
- loader,
4353
- handle: {
4354
- breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
4355
- }
4356
- };
4454
+ path: "/offers",
4455
+ errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4456
+ handle: {
4457
+ breadcrumb: () => t("offers.domain"),
4458
+ permissions: "offer:read"
4357
4459
  },
4358
4460
  children: [
4359
4461
  {
4360
4462
  path: "",
4361
4463
  lazy: async () => {
4362
- const { OfferDetailPage } = await import("./offer-detail-page-GLOI33TW.js");
4363
- return { Component: OfferDetailPage };
4464
+ const { OfferListPage } = await import("./offers-HRSJXCBB.js");
4465
+ return { Component: OfferListPage };
4364
4466
  }
4365
4467
  },
4366
4468
  {
4367
- path: "variants/:offer_id",
4469
+ path: ":id",
4368
4470
  lazy: async () => {
4369
- const { loader } = await import("./loader-G2ECT6LC.js");
4370
- const { Breadcrumb } = await import("./breadcrumb-TCQDZXGC.js");
4471
+ const { loader } = await import("./loader-3VTBJUA2.js");
4472
+ const { Breadcrumb } = await import("./breadcrumb-KOE4ZWGU.js");
4371
4473
  return {
4372
4474
  Component: Outlet4,
4373
4475
  loader,
@@ -4380,79 +4482,104 @@ function getRouteMap({
4380
4482
  {
4381
4483
  path: "",
4382
4484
  lazy: async () => {
4383
- const { OfferVariantDetailPage } = await import("./offer-variant-detail-page-5PLRLGNQ.js");
4384
- return { Component: OfferVariantDetailPage };
4485
+ const { OfferDetailPage } = await import("./offer-detail-page-GLOI33TW.js");
4486
+ return { Component: OfferDetailPage };
4385
4487
  }
4488
+ },
4489
+ {
4490
+ path: "variants/:offer_id",
4491
+ lazy: async () => {
4492
+ const { loader } = await import("./loader-G2ECT6LC.js");
4493
+ const { Breadcrumb } = await import("./breadcrumb-TCQDZXGC.js");
4494
+ return {
4495
+ Component: Outlet4,
4496
+ loader,
4497
+ handle: {
4498
+ breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
4499
+ }
4500
+ };
4501
+ },
4502
+ children: [
4503
+ {
4504
+ path: "",
4505
+ lazy: async () => {
4506
+ const { OfferVariantDetailPage } = await import("./offer-variant-detail-page-5PLRLGNQ.js");
4507
+ return { Component: OfferVariantDetailPage };
4508
+ }
4509
+ }
4510
+ ]
4386
4511
  }
4387
4512
  ]
4388
4513
  }
4389
4514
  ]
4390
- }
4391
- ]
4392
- },
4393
- {
4394
- path: "/inventory",
4395
- errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4396
- handle: {
4397
- breadcrumb: () => t("inventory.domain")
4398
- },
4399
- children: [
4400
- {
4401
- path: "",
4402
- lazy: () => import("./inventory-list-47UGRRO4.js"),
4403
- children: [
4404
- {
4405
- path: "stock",
4406
- lazy: () => import("./inventory-stock-ASIGAL2Z.js")
4407
- }
4408
- ]
4409
4515
  },
4410
4516
  {
4411
- path: ":id",
4412
- lazy: async () => {
4413
- const { Breadcrumb, loader } = await import("./inventory-detail-XVZC3EKF.js");
4414
- return {
4415
- Component: Outlet4,
4416
- loader,
4417
- handle: {
4418
- breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
4419
- }
4420
- };
4517
+ path: "/inventory",
4518
+ errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4519
+ handle: {
4520
+ breadcrumb: () => t("inventory.domain"),
4521
+ permissions: "inventory_item:read"
4421
4522
  },
4422
4523
  children: [
4423
4524
  {
4424
4525
  path: "",
4425
- lazy: () => import("./inventory-detail-XVZC3EKF.js"),
4526
+ lazy: () => import("./inventory-list-47UGRRO4.js"),
4426
4527
  children: [
4427
4528
  {
4428
- path: "edit",
4429
- lazy: () => import("./edit-inventory-item-ZSV4WF6G.js")
4430
- },
4431
- {
4432
- path: "attributes",
4433
- lazy: () => import("./edit-inventory-item-attributes-NWSAQMKX.js")
4434
- },
4435
- {
4436
- path: "metadata/edit",
4437
- lazy: () => import("./inventory-metadata-FGHOW3YG.js")
4438
- },
4439
- {
4440
- path: "locations",
4441
- lazy: () => import("./manage-locations-ZFIRHMNH.js")
4442
- },
4529
+ path: "stock",
4530
+ lazy: () => import("./inventory-stock-ASIGAL2Z.js")
4531
+ }
4532
+ ]
4533
+ },
4534
+ {
4535
+ path: ":id",
4536
+ lazy: async () => {
4537
+ const { Breadcrumb, loader } = await import("./inventory-detail-XVZC3EKF.js");
4538
+ return {
4539
+ Component: Outlet4,
4540
+ loader,
4541
+ handle: {
4542
+ breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
4543
+ }
4544
+ };
4545
+ },
4546
+ children: [
4443
4547
  {
4444
- path: "locations/:location_id",
4445
- lazy: () => import("./adjust-inventory-BBAU3NMM.js")
4548
+ path: "",
4549
+ lazy: () => import("./inventory-detail-XVZC3EKF.js"),
4550
+ children: [
4551
+ {
4552
+ path: "edit",
4553
+ handle: { permissions: "inventory_item:update" },
4554
+ lazy: () => import("./edit-inventory-item-ZSV4WF6G.js")
4555
+ },
4556
+ {
4557
+ path: "attributes",
4558
+ lazy: () => import("./edit-inventory-item-attributes-NWSAQMKX.js")
4559
+ },
4560
+ {
4561
+ path: "metadata/edit",
4562
+ lazy: () => import("./inventory-metadata-FGHOW3YG.js")
4563
+ },
4564
+ {
4565
+ path: "locations",
4566
+ lazy: () => import("./manage-locations-ZFIRHMNH.js")
4567
+ },
4568
+ {
4569
+ path: "locations/:location_id",
4570
+ lazy: () => import("./adjust-inventory-BBAU3NMM.js")
4571
+ }
4572
+ ]
4446
4573
  }
4447
4574
  ]
4448
4575
  }
4449
4576
  ]
4450
4577
  }
4451
- ]
4452
- }
4453
- ],
4454
- customMainRoutes
4455
- )
4578
+ ],
4579
+ customMainRoutes
4580
+ )
4581
+ }
4582
+ ]
4456
4583
  }
4457
4584
  ]
4458
4585
  },
@@ -4466,305 +4593,201 @@ function getRouteMap({
4466
4593
  breadcrumb: () => t("app.nav.settings.header")
4467
4594
  },
4468
4595
  element: /* @__PURE__ */ jsx17(SettingsLayout, {}),
4469
- children: mergeRoutes(
4470
- [
4471
- {
4472
- index: true,
4473
- errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4474
- lazy: () => import("./settings-AVE3VCCM.js")
4475
- },
4476
- {
4477
- path: "profile",
4478
- errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4479
- element: /* @__PURE__ */ jsx17(Outlet4, {}),
4480
- handle: {
4481
- breadcrumb: () => t("profile.domain")
4482
- },
4483
- children: [
4484
- {
4485
- path: "",
4486
- lazy: () => import("./profile-detail-3T7XIJIX.js"),
4487
- children: [
4488
- {
4489
- path: "edit",
4490
- lazy: () => import("./profile-edit-34K6IDKU.js")
4491
- }
4492
- ]
4493
- }
4494
- ]
4495
- },
4496
- {
4497
- path: "regions",
4498
- errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4499
- element: /* @__PURE__ */ jsx17(Outlet4, {}),
4500
- handle: {
4501
- breadcrumb: () => t("regions.domain")
4502
- },
4503
- children: [
4596
+ children: [
4597
+ {
4598
+ element: /* @__PURE__ */ jsx17(RoutePermissionGuard, {}),
4599
+ children: mergeRoutes(
4600
+ [
4504
4601
  {
4505
- path: "",
4506
- lazy: () => import("./region-list-XFQ3EQZ4.js"),
4507
- children: [
4508
- {
4509
- path: "create",
4510
- lazy: () => import("./region-create-UVMXMB2D.js")
4511
- }
4512
- ]
4602
+ index: true,
4603
+ errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4604
+ lazy: () => import("./settings-AVE3VCCM.js")
4513
4605
  },
4514
4606
  {
4515
- path: ":id",
4516
- lazy: async () => {
4517
- const { Breadcrumb, loader } = await import("./region-detail-7SHGTLWA.js");
4518
- return {
4519
- Component: Outlet4,
4520
- loader,
4521
- handle: {
4522
- breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
4523
- }
4524
- };
4607
+ path: "profile",
4608
+ errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4609
+ element: /* @__PURE__ */ jsx17(Outlet4, {}),
4610
+ handle: {
4611
+ breadcrumb: () => t("profile.domain")
4525
4612
  },
4526
4613
  children: [
4527
4614
  {
4528
4615
  path: "",
4529
- lazy: () => import("./region-detail-7SHGTLWA.js"),
4616
+ lazy: () => import("./profile-detail-3T7XIJIX.js"),
4530
4617
  children: [
4531
4618
  {
4532
4619
  path: "edit",
4533
- lazy: () => import("./region-edit-NUMG2V5L.js")
4534
- },
4535
- {
4536
- path: "countries/add",
4537
- lazy: () => import("./region-add-countries-TUPPVB4U.js")
4538
- },
4539
- {
4540
- path: "metadata/edit",
4541
- lazy: () => import("./region-metadata-Q6HEMCHD.js")
4620
+ lazy: () => import("./profile-edit-34K6IDKU.js")
4542
4621
  }
4543
4622
  ]
4544
4623
  }
4545
4624
  ]
4546
- }
4547
- ]
4548
- },
4549
- {
4550
- path: "marketplace",
4551
- errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4552
- element: /* @__PURE__ */ jsx17(Outlet4, {}),
4553
- handle: {
4554
- breadcrumb: () => t("marketplace.domain")
4555
- },
4556
- children: [
4557
- {
4558
- path: "",
4559
- lazy: () => import("./marketplace-detail-D2R5PFX2.js"),
4560
- children: [
4561
- {
4562
- path: "edit",
4563
- lazy: () => import("./marketplace-edit-G7YNGABC.js")
4564
- },
4565
- {
4566
- path: "currencies",
4567
- lazy: () => import("./marketplace-add-currencies-RWT3F2WT.js")
4568
- },
4569
- {
4570
- path: "metadata/edit",
4571
- lazy: () => import("./marketplace-metadata-EGDXYKCE.js")
4572
- }
4573
- ]
4574
- }
4575
- ]
4576
- },
4577
- {
4578
- path: "commissions",
4579
- errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4580
- element: /* @__PURE__ */ jsx17(Outlet4, {}),
4581
- handle: {
4582
- breadcrumb: () => t("commissions.domain")
4583
- },
4584
- children: [
4585
- {
4586
- path: "",
4587
- lazy: () => import("./commissions-list-X54FEOEZ.js"),
4588
- children: [
4589
- {
4590
- path: "create",
4591
- lazy: () => import("./commission-rule-create-CDLLQIY4.js")
4592
- },
4593
- {
4594
- path: "edit-global",
4595
- lazy: () => import("./global-commission-edit-JEBLF6CT.js")
4596
- }
4597
- ]
4598
4625
  },
4599
4626
  {
4600
- path: ":id",
4601
- lazy: async () => {
4602
- const { Breadcrumb } = await import("./commission-rule-detail-LFEZ5U6V.js");
4603
- return {
4604
- Component: Outlet4,
4605
- handle: {
4606
- breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
4607
- }
4608
- };
4627
+ path: "regions",
4628
+ errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4629
+ element: /* @__PURE__ */ jsx17(Outlet4, {}),
4630
+ handle: {
4631
+ breadcrumb: () => t("regions.domain"),
4632
+ permissions: "region:read"
4609
4633
  },
4610
4634
  children: [
4611
4635
  {
4612
4636
  path: "",
4613
- lazy: () => import("./commission-rule-detail-LFEZ5U6V.js"),
4637
+ lazy: () => import("./region-list-XFQ3EQZ4.js"),
4614
4638
  children: [
4615
4639
  {
4616
- path: "edit",
4617
- lazy: () => import("./commission-rule-edit-5CFKPI7U.js")
4618
- },
4640
+ path: "create",
4641
+ handle: { permissions: "region:create" },
4642
+ lazy: () => import("./region-create-UVMXMB2D.js")
4643
+ }
4644
+ ]
4645
+ },
4646
+ {
4647
+ path: ":id",
4648
+ lazy: async () => {
4649
+ const { Breadcrumb, loader } = await import("./region-detail-7SHGTLWA.js");
4650
+ return {
4651
+ Component: Outlet4,
4652
+ loader,
4653
+ handle: {
4654
+ breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
4655
+ }
4656
+ };
4657
+ },
4658
+ children: [
4619
4659
  {
4620
- path: "edit-commission",
4621
- lazy: () => import("./commission-rule-commission-edit-KLGYDUOC.js")
4660
+ path: "",
4661
+ lazy: () => import("./region-detail-7SHGTLWA.js"),
4662
+ children: [
4663
+ {
4664
+ path: "edit",
4665
+ handle: { permissions: "region:update" },
4666
+ lazy: () => import("./region-edit-NUMG2V5L.js")
4667
+ },
4668
+ {
4669
+ path: "countries/add",
4670
+ lazy: () => import("./region-add-countries-TUPPVB4U.js")
4671
+ },
4672
+ {
4673
+ path: "metadata/edit",
4674
+ lazy: () => import("./region-metadata-Q6HEMCHD.js")
4675
+ }
4676
+ ]
4622
4677
  }
4623
4678
  ]
4624
4679
  }
4625
4680
  ]
4626
- }
4627
- ]
4628
- },
4629
- {
4630
- path: "users",
4631
- errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4632
- element: /* @__PURE__ */ jsx17(Outlet4, {}),
4633
- handle: {
4634
- breadcrumb: () => t("users.domain")
4635
- },
4636
- children: [
4637
- {
4638
- path: "",
4639
- lazy: () => import("./user-list-P7JCBIOR.js"),
4640
- children: [
4641
- {
4642
- path: "invite",
4643
- lazy: () => import("./user-invite-WHBNPT4I.js")
4644
- }
4645
- ]
4646
4681
  },
4647
4682
  {
4648
- path: ":id",
4649
- lazy: async () => {
4650
- const { Breadcrumb, loader } = await import("./user-detail-5LOE6QGK.js");
4651
- return {
4652
- Component: Outlet4,
4653
- loader,
4654
- handle: {
4655
- breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
4656
- }
4657
- };
4683
+ path: "marketplace",
4684
+ errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4685
+ element: /* @__PURE__ */ jsx17(Outlet4, {}),
4686
+ handle: {
4687
+ breadcrumb: () => t("marketplace.domain"),
4688
+ permissions: "store:read"
4658
4689
  },
4659
4690
  children: [
4660
4691
  {
4661
4692
  path: "",
4662
- lazy: () => import("./user-detail-5LOE6QGK.js"),
4693
+ lazy: () => import("./marketplace-detail-D2R5PFX2.js"),
4663
4694
  children: [
4664
4695
  {
4665
4696
  path: "edit",
4666
- lazy: () => import("./user-edit-O2M5II52.js")
4697
+ handle: { permissions: "store:update" },
4698
+ lazy: () => import("./marketplace-edit-G7YNGABC.js")
4699
+ },
4700
+ {
4701
+ path: "currencies",
4702
+ lazy: () => import("./marketplace-add-currencies-RWT3F2WT.js")
4667
4703
  },
4668
4704
  {
4669
4705
  path: "metadata/edit",
4670
- lazy: () => import("./user-metadata-2PEU2IJE.js")
4706
+ lazy: () => import("./marketplace-metadata-EGDXYKCE.js")
4671
4707
  }
4672
4708
  ]
4673
4709
  }
4674
4710
  ]
4675
- }
4676
- ]
4677
- },
4678
- {
4679
- path: "sales-channels",
4680
- errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4681
- element: /* @__PURE__ */ jsx17(Outlet4, {}),
4682
- handle: {
4683
- breadcrumb: () => t("salesChannels.domain")
4684
- },
4685
- children: [
4686
- {
4687
- path: "",
4688
- lazy: () => import("./sales-channel-list-DUIEWTAO.js"),
4689
- children: [
4690
- {
4691
- path: "create",
4692
- lazy: () => import("./sales-channel-create-WEF7QXKI.js")
4693
- }
4694
- ]
4695
4711
  },
4696
4712
  {
4697
- path: ":id",
4698
- lazy: async () => {
4699
- const { Breadcrumb, loader } = await import("./sales-channel-detail-N5BPVLXT.js");
4700
- return {
4701
- Component: Outlet4,
4702
- loader,
4703
- handle: {
4704
- breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
4705
- }
4706
- };
4713
+ path: "commissions",
4714
+ errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4715
+ element: /* @__PURE__ */ jsx17(Outlet4, {}),
4716
+ handle: {
4717
+ breadcrumb: () => t("commissions.domain"),
4718
+ permissions: "commission_rate:read"
4707
4719
  },
4708
4720
  children: [
4709
4721
  {
4710
4722
  path: "",
4711
- lazy: () => import("./sales-channel-detail-N5BPVLXT.js"),
4723
+ lazy: () => import("./commissions-list-VBQOQF2D.js"),
4712
4724
  children: [
4713
4725
  {
4714
- path: "edit",
4715
- lazy: () => import("./sales-channel-edit-CO2V2VER.js")
4726
+ path: "create",
4727
+ handle: { permissions: "commission_rate:create" },
4728
+ lazy: () => import("./commission-rule-create-CDLLQIY4.js")
4716
4729
  },
4717
4730
  {
4718
- path: "add-products",
4719
- lazy: () => import("./sales-channel-add-products-R36XYWPI.js")
4720
- },
4731
+ path: "edit-global",
4732
+ lazy: () => import("./global-commission-edit-JEBLF6CT.js")
4733
+ }
4734
+ ]
4735
+ },
4736
+ {
4737
+ path: ":id",
4738
+ lazy: async () => {
4739
+ const { Breadcrumb } = await import("./commission-rule-detail-LFEZ5U6V.js");
4740
+ return {
4741
+ Component: Outlet4,
4742
+ handle: {
4743
+ breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
4744
+ }
4745
+ };
4746
+ },
4747
+ children: [
4721
4748
  {
4722
- path: "metadata/edit",
4723
- lazy: () => import("./sales-channel-metadata-NBWFH4QX.js")
4749
+ path: "",
4750
+ lazy: () => import("./commission-rule-detail-LFEZ5U6V.js"),
4751
+ children: [
4752
+ {
4753
+ path: "edit",
4754
+ handle: { permissions: "commission_rate:update" },
4755
+ lazy: () => import("./commission-rule-edit-5CFKPI7U.js")
4756
+ },
4757
+ {
4758
+ path: "edit-commission",
4759
+ lazy: () => import("./commission-rule-commission-edit-KLGYDUOC.js")
4760
+ }
4761
+ ]
4724
4762
  }
4725
4763
  ]
4726
4764
  }
4727
4765
  ]
4728
- }
4729
- ]
4730
- },
4731
- {
4732
- path: "locations",
4733
- errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4734
- element: /* @__PURE__ */ jsx17(Outlet4, {}),
4735
- handle: {
4736
- breadcrumb: () => t("locations.domain")
4737
- },
4738
- children: [
4739
- {
4740
- path: "",
4741
- lazy: () => import("./location-list-VIAP63HV.js")
4742
- },
4743
- {
4744
- path: "create",
4745
- lazy: () => import("./location-create-XCEPUY44.js")
4746
4766
  },
4747
4767
  {
4748
- path: "shipping-profiles",
4768
+ path: "users",
4769
+ errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4749
4770
  element: /* @__PURE__ */ jsx17(Outlet4, {}),
4750
4771
  handle: {
4751
- breadcrumb: () => t("shippingProfile.domain")
4772
+ breadcrumb: () => t("users.domain"),
4773
+ permissions: "user:read"
4752
4774
  },
4753
4775
  children: [
4754
4776
  {
4755
4777
  path: "",
4756
- lazy: () => import("./shipping-profiles-list-UKD47NUF.js"),
4778
+ lazy: () => import("./user-list-ECF647TZ.js"),
4757
4779
  children: [
4758
4780
  {
4759
- path: "create",
4760
- lazy: () => import("./shipping-profile-create-FT6KK2H5.js")
4781
+ path: "invite",
4782
+ handle: { permissions: "user:create" },
4783
+ lazy: () => import("./user-invite-A7TBRKWI.js")
4761
4784
  }
4762
4785
  ]
4763
4786
  },
4764
4787
  {
4765
- path: ":shipping_profile_id",
4788
+ path: ":id",
4766
4789
  lazy: async () => {
4767
- const { Breadcrumb, loader } = await import("./shipping-profile-detail-KPRFJE4V.js");
4790
+ const { Breadcrumb, loader } = await import("./user-detail-5LOE6QGK.js");
4768
4791
  return {
4769
4792
  Component: Outlet4,
4770
4793
  loader,
@@ -4776,11 +4799,16 @@ function getRouteMap({
4776
4799
  children: [
4777
4800
  {
4778
4801
  path: "",
4779
- lazy: () => import("./shipping-profile-detail-KPRFJE4V.js"),
4802
+ lazy: () => import("./user-detail-5LOE6QGK.js"),
4780
4803
  children: [
4804
+ {
4805
+ path: "edit",
4806
+ handle: { permissions: "user:update" },
4807
+ lazy: () => import("./user-edit-O2M5II52.js")
4808
+ },
4781
4809
  {
4782
4810
  path: "metadata/edit",
4783
- lazy: () => import("./shipping-profile-metadata-S7Z3IC6I.js")
4811
+ lazy: () => import("./user-metadata-2PEU2IJE.js")
4784
4812
  }
4785
4813
  ]
4786
4814
  }
@@ -4789,27 +4817,29 @@ function getRouteMap({
4789
4817
  ]
4790
4818
  },
4791
4819
  {
4792
- path: "shipping-option-types",
4820
+ path: "sales-channels",
4793
4821
  errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4794
4822
  element: /* @__PURE__ */ jsx17(Outlet4, {}),
4795
4823
  handle: {
4796
- breadcrumb: () => t("shippingOptionTypes.domain")
4824
+ breadcrumb: () => t("salesChannels.domain"),
4825
+ permissions: "sales_channel:read"
4797
4826
  },
4798
4827
  children: [
4799
4828
  {
4800
4829
  path: "",
4801
- lazy: () => import("./shipping-option-type-list-R4JPQOAA.js"),
4830
+ lazy: () => import("./sales-channel-list-DUIEWTAO.js"),
4802
4831
  children: [
4803
4832
  {
4804
4833
  path: "create",
4805
- lazy: () => import("./shipping-option-type-create-M23CI42D.js")
4834
+ handle: { permissions: "sales_channel:create" },
4835
+ lazy: () => import("./sales-channel-create-WEF7QXKI.js")
4806
4836
  }
4807
4837
  ]
4808
4838
  },
4809
4839
  {
4810
4840
  path: ":id",
4811
4841
  lazy: async () => {
4812
- const { Breadcrumb, loader } = await import("./shipping-option-type-detail-QIJZQ5WW.js");
4842
+ const { Breadcrumb, loader } = await import("./sales-channel-detail-N5BPVLXT.js");
4813
4843
  return {
4814
4844
  Component: Outlet4,
4815
4845
  loader,
@@ -4821,11 +4851,20 @@ function getRouteMap({
4821
4851
  children: [
4822
4852
  {
4823
4853
  path: "",
4824
- lazy: () => import("./shipping-option-type-detail-QIJZQ5WW.js"),
4854
+ lazy: () => import("./sales-channel-detail-N5BPVLXT.js"),
4825
4855
  children: [
4826
4856
  {
4827
4857
  path: "edit",
4828
- lazy: () => import("./shipping-option-type-edit-WXTEQM32.js")
4858
+ handle: { permissions: "sales_channel:update" },
4859
+ lazy: () => import("./sales-channel-edit-CO2V2VER.js")
4860
+ },
4861
+ {
4862
+ path: "add-products",
4863
+ lazy: () => import("./sales-channel-add-products-R36XYWPI.js")
4864
+ },
4865
+ {
4866
+ path: "metadata/edit",
4867
+ lazy: () => import("./sales-channel-metadata-NBWFH4QX.js")
4829
4868
  }
4830
4869
  ]
4831
4870
  }
@@ -4834,69 +4873,187 @@ function getRouteMap({
4834
4873
  ]
4835
4874
  },
4836
4875
  {
4837
- path: ":location_id",
4838
- lazy: async () => {
4839
- const { Breadcrumb, loader } = await import("./location-detail-TVHDXEV5.js");
4840
- return {
4841
- Component: Outlet4,
4842
- loader,
4843
- handle: {
4844
- breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
4845
- }
4846
- };
4876
+ path: "locations",
4877
+ errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4878
+ element: /* @__PURE__ */ jsx17(Outlet4, {}),
4879
+ handle: {
4880
+ breadcrumb: () => t("locations.domain"),
4881
+ permissions: "stock_location:read"
4847
4882
  },
4848
4883
  children: [
4849
4884
  {
4850
4885
  path: "",
4851
- lazy: () => import("./location-detail-TVHDXEV5.js"),
4886
+ lazy: () => import("./location-list-VIAP63HV.js")
4887
+ },
4888
+ {
4889
+ path: "create",
4890
+ handle: { permissions: "stock_location:create" },
4891
+ lazy: () => import("./location-create-XCEPUY44.js")
4892
+ },
4893
+ {
4894
+ path: "shipping-profiles",
4895
+ element: /* @__PURE__ */ jsx17(Outlet4, {}),
4896
+ handle: {
4897
+ breadcrumb: () => t("shippingProfile.domain"),
4898
+ permissions: "shipping_profile:read"
4899
+ },
4852
4900
  children: [
4853
4901
  {
4854
- path: "edit",
4855
- lazy: () => import("./location-edit-XRGRJCVB.js")
4902
+ path: "",
4903
+ lazy: () => import("./shipping-profiles-list-AK6KXUGF.js"),
4904
+ children: [
4905
+ {
4906
+ path: "create",
4907
+ handle: { permissions: "shipping_profile:create" },
4908
+ lazy: () => import("./shipping-profile-create-FT6KK2H5.js")
4909
+ }
4910
+ ]
4856
4911
  },
4857
4912
  {
4858
- path: "sales-channels",
4859
- lazy: () => import("./location-sales-channels-UCPVQLCE.js")
4860
- },
4913
+ path: ":shipping_profile_id",
4914
+ lazy: async () => {
4915
+ const { Breadcrumb, loader } = await import("./shipping-profile-detail-KPRFJE4V.js");
4916
+ return {
4917
+ Component: Outlet4,
4918
+ loader,
4919
+ handle: {
4920
+ breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
4921
+ }
4922
+ };
4923
+ },
4924
+ children: [
4925
+ {
4926
+ path: "",
4927
+ lazy: () => import("./shipping-profile-detail-KPRFJE4V.js"),
4928
+ children: [
4929
+ {
4930
+ path: "metadata/edit",
4931
+ lazy: () => import("./shipping-profile-metadata-S7Z3IC6I.js")
4932
+ }
4933
+ ]
4934
+ }
4935
+ ]
4936
+ }
4937
+ ]
4938
+ },
4939
+ {
4940
+ path: "shipping-option-types",
4941
+ errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4942
+ element: /* @__PURE__ */ jsx17(Outlet4, {}),
4943
+ handle: {
4944
+ breadcrumb: () => t("shippingOptionTypes.domain"),
4945
+ permissions: "shipping_option_type:read"
4946
+ },
4947
+ children: [
4861
4948
  {
4862
- path: "fulfillment-providers",
4863
- lazy: () => import("./location-fulfillment-providers-WBNKJN3G.js")
4949
+ path: "",
4950
+ lazy: () => import("./shipping-option-type-list-VQ5UVOUU.js"),
4951
+ children: [
4952
+ {
4953
+ path: "create",
4954
+ handle: { permissions: "shipping_option_type:create" },
4955
+ lazy: () => import("./shipping-option-type-create-M23CI42D.js")
4956
+ }
4957
+ ]
4864
4958
  },
4865
4959
  {
4866
- path: "fulfillment-set/:fset_id",
4960
+ path: ":id",
4961
+ lazy: async () => {
4962
+ const { Breadcrumb, loader } = await import("./shipping-option-type-detail-QIJZQ5WW.js");
4963
+ return {
4964
+ Component: Outlet4,
4965
+ loader,
4966
+ handle: {
4967
+ breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
4968
+ }
4969
+ };
4970
+ },
4867
4971
  children: [
4868
4972
  {
4869
- path: "service-zones/create",
4870
- lazy: () => import("./location-service-zone-create-MAN7KD4N.js")
4871
- },
4872
- {
4873
- path: "service-zone/:zone_id",
4973
+ path: "",
4974
+ lazy: () => import("./shipping-option-type-detail-QIJZQ5WW.js"),
4874
4975
  children: [
4875
4976
  {
4876
4977
  path: "edit",
4877
- lazy: () => import("./location-service-zone-edit-KFG52K4W.js")
4878
- },
4978
+ handle: { permissions: "shipping_option_type:update" },
4979
+ lazy: () => import("./shipping-option-type-edit-WXTEQM32.js")
4980
+ }
4981
+ ]
4982
+ }
4983
+ ]
4984
+ }
4985
+ ]
4986
+ },
4987
+ {
4988
+ path: ":location_id",
4989
+ lazy: async () => {
4990
+ const { Breadcrumb, loader } = await import("./location-detail-TVHDXEV5.js");
4991
+ return {
4992
+ Component: Outlet4,
4993
+ loader,
4994
+ handle: {
4995
+ breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
4996
+ }
4997
+ };
4998
+ },
4999
+ children: [
5000
+ {
5001
+ path: "",
5002
+ lazy: () => import("./location-detail-TVHDXEV5.js"),
5003
+ children: [
5004
+ {
5005
+ path: "edit",
5006
+ handle: { permissions: "stock_location:update" },
5007
+ lazy: () => import("./location-edit-XRGRJCVB.js")
5008
+ },
5009
+ {
5010
+ path: "sales-channels",
5011
+ lazy: () => import("./location-sales-channels-UCPVQLCE.js")
5012
+ },
5013
+ {
5014
+ path: "fulfillment-providers",
5015
+ lazy: () => import("./location-fulfillment-providers-WBNKJN3G.js")
5016
+ },
5017
+ {
5018
+ path: "fulfillment-set/:fset_id",
5019
+ children: [
4879
5020
  {
4880
- path: "areas",
4881
- lazy: () => import("./location-service-zone-manage-areas-EZS5PYJI.js")
5021
+ path: "service-zones/create",
5022
+ lazy: () => import("./location-service-zone-create-MAN7KD4N.js")
4882
5023
  },
4883
5024
  {
4884
- path: "shipping-option",
5025
+ path: "service-zone/:zone_id",
4885
5026
  children: [
4886
5027
  {
4887
- path: "create",
4888
- lazy: () => import("./location-service-zone-shipping-option-create-6O2JXV6I.js")
5028
+ path: "edit",
5029
+ handle: { permissions: "stock_location:update" },
5030
+ lazy: () => import("./location-service-zone-edit-KFG52K4W.js")
5031
+ },
5032
+ {
5033
+ path: "areas",
5034
+ lazy: () => import("./location-service-zone-manage-areas-EZS5PYJI.js")
4889
5035
  },
4890
5036
  {
4891
- path: ":so_id",
5037
+ path: "shipping-option",
4892
5038
  children: [
4893
5039
  {
4894
- path: "edit",
4895
- lazy: () => import("./location-service-zone-shipping-option-edit-UUIR7B5S.js")
5040
+ path: "create",
5041
+ handle: { permissions: "shipping_option:create" },
5042
+ lazy: () => import("./location-service-zone-shipping-option-create-6O2JXV6I.js")
4896
5043
  },
4897
5044
  {
4898
- path: "pricing",
4899
- lazy: () => import("./location-service-zone-shipping-option-pricing-Z5HCXRHG.js")
5045
+ path: ":so_id",
5046
+ children: [
5047
+ {
5048
+ path: "edit",
5049
+ handle: { permissions: "shipping_option:update" },
5050
+ lazy: () => import("./location-service-zone-shipping-option-edit-UUIR7B5S.js")
5051
+ },
5052
+ {
5053
+ path: "pricing",
5054
+ lazy: () => import("./location-service-zone-shipping-option-pricing-Z5HCXRHG.js")
5055
+ }
5056
+ ]
4900
5057
  }
4901
5058
  ]
4902
5059
  }
@@ -4909,356 +5066,325 @@ function getRouteMap({
4909
5066
  ]
4910
5067
  }
4911
5068
  ]
4912
- }
4913
- ]
4914
- },
4915
- {
4916
- path: "product-tags",
4917
- errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4918
- element: /* @__PURE__ */ jsx17(Outlet4, {}),
4919
- handle: {
4920
- breadcrumb: () => t("productTags.domain")
4921
- },
4922
- children: [
4923
- {
4924
- path: "",
4925
- lazy: () => import("./product-tag-list-3HOXFHMN.js"),
4926
- children: [
4927
- {
4928
- path: "create",
4929
- lazy: () => import("./product-tag-create-QORH6X2D.js")
4930
- }
4931
- ]
4932
5069
  },
4933
5070
  {
4934
- path: ":id",
4935
- lazy: async () => {
4936
- const { Breadcrumb, loader } = await import("./product-tag-detail-2YR6TXZI.js");
4937
- return {
4938
- Component: Outlet4,
4939
- loader,
4940
- handle: {
4941
- breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
4942
- }
4943
- };
5071
+ path: "product-tags",
5072
+ errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
5073
+ element: /* @__PURE__ */ jsx17(Outlet4, {}),
5074
+ handle: {
5075
+ breadcrumb: () => t("productTags.domain"),
5076
+ permissions: "product_tag:read"
4944
5077
  },
4945
5078
  children: [
4946
5079
  {
4947
5080
  path: "",
4948
- lazy: () => import("./product-tag-detail-2YR6TXZI.js"),
5081
+ lazy: () => import("./product-tag-list-GDIVZYEB.js"),
4949
5082
  children: [
4950
5083
  {
4951
- path: "edit",
4952
- lazy: () => import("./product-tag-edit-JWYVCPCC.js")
4953
- },
4954
- {
4955
- path: "metadata/edit",
4956
- lazy: () => import("./product-tag-metadata-BCUPIIJ5.js")
5084
+ path: "create",
5085
+ handle: { permissions: "product_tag:create" },
5086
+ lazy: () => import("./product-tag-create-QORH6X2D.js")
4957
5087
  }
4958
5088
  ]
4959
- }
4960
- ]
4961
- }
4962
- ]
4963
- },
4964
- {
4965
- path: "attributes",
4966
- errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
4967
- element: /* @__PURE__ */ jsx17(Outlet4, {}),
4968
- handle: {
4969
- breadcrumb: () => t("attributes.domain")
4970
- },
4971
- children: [
4972
- {
4973
- path: "",
4974
- lazy: () => import("./attribute-list-6ELFWDHO.js"),
4975
- children: [
5089
+ },
4976
5090
  {
4977
- path: "create",
4978
- lazy: () => import("./attribute-create-GDBDDPLP.js")
5091
+ path: ":id",
5092
+ lazy: async () => {
5093
+ const { Breadcrumb, loader } = await import("./product-tag-detail-2YR6TXZI.js");
5094
+ return {
5095
+ Component: Outlet4,
5096
+ loader,
5097
+ handle: {
5098
+ breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
5099
+ }
5100
+ };
5101
+ },
5102
+ children: [
5103
+ {
5104
+ path: "",
5105
+ lazy: () => import("./product-tag-detail-2YR6TXZI.js"),
5106
+ children: [
5107
+ {
5108
+ path: "edit",
5109
+ handle: { permissions: "product_tag:update" },
5110
+ lazy: () => import("./product-tag-edit-JWYVCPCC.js")
5111
+ },
5112
+ {
5113
+ path: "metadata/edit",
5114
+ lazy: () => import("./product-tag-metadata-BCUPIIJ5.js")
5115
+ }
5116
+ ]
5117
+ }
5118
+ ]
4979
5119
  }
4980
5120
  ]
4981
5121
  },
4982
5122
  {
4983
- path: ":id",
4984
- lazy: async () => {
4985
- const { Breadcrumb, loader } = await import("./attribute-detail-673FELNK.js");
4986
- return {
4987
- Component: Outlet4,
4988
- loader,
4989
- handle: {
4990
- breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
4991
- }
4992
- };
5123
+ path: "attributes",
5124
+ errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
5125
+ element: /* @__PURE__ */ jsx17(Outlet4, {}),
5126
+ handle: {
5127
+ breadcrumb: () => t("attributes.domain"),
5128
+ permissions: "product_attribute:read"
4993
5129
  },
4994
5130
  children: [
4995
5131
  {
4996
5132
  path: "",
4997
- lazy: () => import("./attribute-detail-673FELNK.js"),
5133
+ lazy: () => import("./attribute-list-PVC4KUYQ.js"),
4998
5134
  children: [
4999
5135
  {
5000
- path: "edit",
5001
- lazy: () => import("./attribute-edit-A2J25SIB.js")
5002
- },
5003
- {
5004
- path: "edit-possible-value",
5005
- lazy: () => import("./attribute-edit-possible-value-SIJS3OVE.js")
5006
- },
5007
- {
5008
- path: "create-possible-value",
5009
- lazy: () => import("./attribute-create-possible-value-OKGWRSNJ.js")
5010
- },
5136
+ path: "create",
5137
+ handle: { permissions: "product_attribute:create" },
5138
+ lazy: () => import("./attribute-create-GDBDDPLP.js")
5139
+ }
5140
+ ]
5141
+ },
5142
+ {
5143
+ path: ":id",
5144
+ lazy: async () => {
5145
+ const { Breadcrumb, loader } = await import("./attribute-detail-673FELNK.js");
5146
+ return {
5147
+ Component: Outlet4,
5148
+ loader,
5149
+ handle: {
5150
+ breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
5151
+ }
5152
+ };
5153
+ },
5154
+ children: [
5011
5155
  {
5012
- path: "edit-ranking",
5013
- lazy: () => import("./attribute-edit-ranking-SF7XSICV.js")
5156
+ path: "",
5157
+ lazy: () => import("./attribute-detail-673FELNK.js"),
5158
+ children: [
5159
+ {
5160
+ path: "edit",
5161
+ handle: { permissions: "product_attribute:update" },
5162
+ lazy: () => import("./attribute-edit-A2J25SIB.js")
5163
+ },
5164
+ {
5165
+ path: "edit-possible-value",
5166
+ lazy: () => import("./attribute-edit-possible-value-SIJS3OVE.js")
5167
+ },
5168
+ {
5169
+ path: "create-possible-value",
5170
+ lazy: () => import("./attribute-create-possible-value-OKGWRSNJ.js")
5171
+ },
5172
+ {
5173
+ path: "edit-ranking",
5174
+ lazy: () => import("./attribute-edit-ranking-SF7XSICV.js")
5175
+ }
5176
+ ]
5014
5177
  }
5015
5178
  ]
5016
5179
  }
5017
5180
  ]
5018
- }
5019
- ]
5020
- },
5021
- {
5022
- path: "product-types",
5023
- errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
5024
- element: /* @__PURE__ */ jsx17(Outlet4, {}),
5025
- handle: {
5026
- breadcrumb: () => t("productTypes.domain")
5027
- },
5028
- children: [
5029
- {
5030
- path: "",
5031
- lazy: () => import("./product-type-list-NNNFCCWS.js"),
5032
- children: [
5033
- {
5034
- path: "create",
5035
- lazy: () => import("./product-type-create-BJMYBP2R.js")
5036
- }
5037
- ]
5038
5181
  },
5039
5182
  {
5040
- path: ":id",
5041
- lazy: async () => {
5042
- const { Breadcrumb, loader } = await import("./product-type-detail-P7ZZFBV2.js");
5043
- return {
5044
- Component: Outlet4,
5045
- loader,
5046
- handle: {
5047
- breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
5048
- }
5049
- };
5183
+ path: "product-types",
5184
+ errorElement: /* @__PURE__ */ jsx17(ErrorBoundary, {}),
5185
+ element: /* @__PURE__ */ jsx17(Outlet4, {}),
5186
+ handle: {
5187
+ breadcrumb: () => t("productTypes.domain"),
5188
+ permissions: "product_type:read"
5050
5189
  },
5051
5190
  children: [
5052
5191
  {
5053
5192
  path: "",
5054
- lazy: () => import("./product-type-detail-P7ZZFBV2.js"),
5193
+ lazy: () => import("./product-type-list-VSCQHI3D.js"),
5055
5194
  children: [
5056
5195
  {
5057
- path: "edit",
5058
- lazy: () => import("./product-type-edit-X7VSBPUG.js")
5059
- },
5060
- {
5061
- path: "metadata/edit",
5062
- lazy: () => import("./product-type-metadata-DKBBQB6R.js")
5196
+ path: "create",
5197
+ handle: { permissions: "product_type:create" },
5198
+ lazy: () => import("./product-type-create-BJMYBP2R.js")
5063
5199
  }
5064
5200
  ]
5065
- }
5066
- ]
5067
- }
5068
- ]
5069
- },
5070
- {
5071
- path: "publishable-api-keys",
5072
- element: /* @__PURE__ */ jsx17(Outlet4, {}),
5073
- handle: {
5074
- breadcrumb: () => t("apiKeyManagement.domain.publishable")
5075
- },
5076
- children: [
5077
- {
5078
- path: "",
5079
- element: /* @__PURE__ */ jsx17(Outlet4, {}),
5080
- children: [
5201
+ },
5081
5202
  {
5082
- path: "",
5083
- lazy: () => import("./api-key-management-list-AHXOCLBO.js"),
5203
+ path: ":id",
5204
+ lazy: async () => {
5205
+ const { Breadcrumb, loader } = await import("./product-type-detail-P7ZZFBV2.js");
5206
+ return {
5207
+ Component: Outlet4,
5208
+ loader,
5209
+ handle: {
5210
+ breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
5211
+ }
5212
+ };
5213
+ },
5084
5214
  children: [
5085
5215
  {
5086
- path: "create",
5087
- lazy: () => import("./api-key-management-create-TFG4TLGM.js")
5216
+ path: "",
5217
+ lazy: () => import("./product-type-detail-P7ZZFBV2.js"),
5218
+ children: [
5219
+ {
5220
+ path: "edit",
5221
+ handle: { permissions: "product_type:update" },
5222
+ lazy: () => import("./product-type-edit-X7VSBPUG.js")
5223
+ },
5224
+ {
5225
+ path: "metadata/edit",
5226
+ lazy: () => import("./product-type-metadata-DKBBQB6R.js")
5227
+ }
5228
+ ]
5088
5229
  }
5089
5230
  ]
5090
5231
  }
5091
5232
  ]
5092
5233
  },
5093
5234
  {
5094
- path: ":id",
5095
- lazy: async () => {
5096
- const { Breadcrumb, loader } = await import("./api-key-management-detail-TTGN4LO7.js");
5097
- return {
5098
- Component: Outlet4,
5099
- loader,
5100
- handle: {
5101
- breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
5102
- }
5103
- };
5235
+ path: "publishable-api-keys",
5236
+ element: /* @__PURE__ */ jsx17(Outlet4, {}),
5237
+ handle: {
5238
+ breadcrumb: () => t("apiKeyManagement.domain.publishable"),
5239
+ permissions: "api_key:read"
5104
5240
  },
5105
5241
  children: [
5106
5242
  {
5107
5243
  path: "",
5108
- lazy: () => import("./api-key-management-detail-TTGN4LO7.js"),
5244
+ element: /* @__PURE__ */ jsx17(Outlet4, {}),
5109
5245
  children: [
5110
5246
  {
5111
- path: "edit",
5112
- lazy: () => import("./api-key-management-edit-XUZJEML7.js")
5113
- },
5114
- {
5115
- path: "sales-channels",
5116
- lazy: () => import("./api-key-management-sales-channels-FFY3HIOX.js")
5247
+ path: "",
5248
+ lazy: () => import("./api-key-management-list-P4FQQKIV.js"),
5249
+ children: [
5250
+ {
5251
+ path: "create",
5252
+ handle: { permissions: "api_key:create" },
5253
+ lazy: () => import("./api-key-management-create-TFG4TLGM.js")
5254
+ }
5255
+ ]
5117
5256
  }
5118
5257
  ]
5119
- }
5120
- ]
5121
- }
5122
- ]
5123
- },
5124
- {
5125
- path: "secret-api-keys",
5126
- element: /* @__PURE__ */ jsx17(Outlet4, {}),
5127
- handle: {
5128
- breadcrumb: () => t("apiKeyManagement.domain.secret")
5129
- },
5130
- children: [
5131
- {
5132
- path: "",
5133
- element: /* @__PURE__ */ jsx17(Outlet4, {}),
5134
- children: [
5258
+ },
5135
5259
  {
5136
- path: "",
5137
- lazy: () => import("./api-key-management-list-AHXOCLBO.js"),
5260
+ path: ":id",
5261
+ lazy: async () => {
5262
+ const { Breadcrumb, loader } = await import("./api-key-management-detail-TTGN4LO7.js");
5263
+ return {
5264
+ Component: Outlet4,
5265
+ loader,
5266
+ handle: {
5267
+ breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
5268
+ }
5269
+ };
5270
+ },
5138
5271
  children: [
5139
5272
  {
5140
- path: "create",
5141
- lazy: () => import("./api-key-management-create-TFG4TLGM.js")
5273
+ path: "",
5274
+ lazy: () => import("./api-key-management-detail-TTGN4LO7.js"),
5275
+ children: [
5276
+ {
5277
+ path: "edit",
5278
+ handle: { permissions: "api_key:update" },
5279
+ lazy: () => import("./api-key-management-edit-XUZJEML7.js")
5280
+ },
5281
+ {
5282
+ path: "sales-channels",
5283
+ lazy: () => import("./api-key-management-sales-channels-FFY3HIOX.js")
5284
+ }
5285
+ ]
5142
5286
  }
5143
5287
  ]
5144
5288
  }
5145
5289
  ]
5146
5290
  },
5147
5291
  {
5148
- path: ":id",
5149
- lazy: async () => {
5150
- const { Breadcrumb, loader } = await import("./api-key-management-detail-TTGN4LO7.js");
5151
- return {
5152
- Component: Outlet4,
5153
- loader,
5154
- handle: {
5155
- breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
5156
- }
5157
- };
5292
+ path: "secret-api-keys",
5293
+ element: /* @__PURE__ */ jsx17(Outlet4, {}),
5294
+ handle: {
5295
+ breadcrumb: () => t("apiKeyManagement.domain.secret"),
5296
+ permissions: "api_key:read"
5158
5297
  },
5159
5298
  children: [
5160
5299
  {
5161
5300
  path: "",
5162
- lazy: () => import("./api-key-management-detail-TTGN4LO7.js"),
5301
+ element: /* @__PURE__ */ jsx17(Outlet4, {}),
5163
5302
  children: [
5164
5303
  {
5165
- path: "edit",
5166
- lazy: () => import("./api-key-management-edit-XUZJEML7.js")
5304
+ path: "",
5305
+ lazy: () => import("./api-key-management-list-P4FQQKIV.js"),
5306
+ children: [
5307
+ {
5308
+ path: "create",
5309
+ handle: { permissions: "api_key:create" },
5310
+ lazy: () => import("./api-key-management-create-TFG4TLGM.js")
5311
+ }
5312
+ ]
5167
5313
  }
5168
5314
  ]
5169
- }
5170
- ]
5171
- }
5172
- ]
5173
- },
5174
- {
5175
- path: "tax-regions",
5176
- element: /* @__PURE__ */ jsx17(Outlet4, {}),
5177
- handle: {
5178
- breadcrumb: () => t("taxRegions.domain")
5179
- },
5180
- children: [
5181
- {
5182
- path: "",
5183
- lazy: () => import("./tax-region-list-JC4QYF5B.js"),
5184
- children: [
5315
+ },
5185
5316
  {
5186
- path: "create",
5187
- lazy: () => import("./tax-region-create-DVBIX7IX.js")
5317
+ path: ":id",
5318
+ lazy: async () => {
5319
+ const { Breadcrumb, loader } = await import("./api-key-management-detail-TTGN4LO7.js");
5320
+ return {
5321
+ Component: Outlet4,
5322
+ loader,
5323
+ handle: {
5324
+ breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
5325
+ }
5326
+ };
5327
+ },
5328
+ children: [
5329
+ {
5330
+ path: "",
5331
+ lazy: () => import("./api-key-management-detail-TTGN4LO7.js"),
5332
+ children: [
5333
+ {
5334
+ path: "edit",
5335
+ handle: { permissions: "api_key:update" },
5336
+ lazy: () => import("./api-key-management-edit-XUZJEML7.js")
5337
+ }
5338
+ ]
5339
+ }
5340
+ ]
5188
5341
  }
5189
5342
  ]
5190
5343
  },
5191
5344
  {
5192
- path: ":id",
5193
- Component: Outlet4,
5194
- loader: taxRegionLoader,
5345
+ path: "tax-regions",
5346
+ element: /* @__PURE__ */ jsx17(Outlet4, {}),
5195
5347
  handle: {
5196
- breadcrumb: (match) => /* @__PURE__ */ jsx17(TaxRegionDetailBreadcrumb, { ...match })
5348
+ breadcrumb: () => t("taxRegions.domain"),
5349
+ permissions: "tax_region:read"
5197
5350
  },
5198
5351
  children: [
5199
5352
  {
5200
5353
  path: "",
5201
- lazy: async () => {
5202
- const { Component } = await import("./tax-region-detail-NBRSCKTD.js");
5203
- return {
5204
- Component
5205
- };
5206
- },
5354
+ lazy: () => import("./tax-region-list-TM23Q4HH.js"),
5207
5355
  children: [
5208
5356
  {
5209
- path: "edit",
5210
- lazy: () => import("./tax-region-edit-I27QZZPB.js")
5211
- },
5212
- {
5213
- path: "provinces/create",
5214
- lazy: () => import("./tax-region-province-create-RYNRPGY5.js")
5215
- },
5216
- {
5217
- path: "overrides/create",
5218
- lazy: () => import("./tax-region-tax-override-create-XZ5BU2FP.js")
5219
- },
5220
- {
5221
- path: "overrides/:tax_rate_id/edit",
5222
- lazy: () => import("./tax-region-tax-override-edit-R4EGIUIZ.js")
5223
- },
5224
- {
5225
- path: "tax-rates/create",
5226
- lazy: () => import("./tax-region-tax-rate-create-DLLXVZPG.js")
5227
- },
5228
- {
5229
- path: "tax-rates/:tax_rate_id/edit",
5230
- lazy: () => import("./tax-region-tax-rate-edit-HN5VDJAZ.js")
5231
- },
5232
- {
5233
- path: "metadata/edit",
5234
- lazy: () => import("./tax-region-metadata-6YIZSRLO.js")
5357
+ path: "create",
5358
+ handle: { permissions: "tax_region:create" },
5359
+ lazy: () => import("./tax-region-create-SFRD4AJB.js")
5235
5360
  }
5236
5361
  ]
5237
5362
  },
5238
5363
  {
5239
- path: "provinces/:province_id",
5240
- lazy: async () => {
5241
- const { Breadcrumb, loader } = await import("./tax-region-province-detail-WU5GD7VW.js");
5242
- return {
5243
- Component: Outlet4,
5244
- loader,
5245
- handle: {
5246
- breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
5247
- }
5248
- };
5364
+ path: ":id",
5365
+ Component: Outlet4,
5366
+ loader: taxRegionLoader,
5367
+ handle: {
5368
+ breadcrumb: (match) => /* @__PURE__ */ jsx17(TaxRegionDetailBreadcrumb, { ...match })
5249
5369
  },
5250
5370
  children: [
5251
5371
  {
5252
5372
  path: "",
5253
- lazy: () => import("./tax-region-province-detail-WU5GD7VW.js"),
5373
+ lazy: async () => {
5374
+ const { Component } = await import("./tax-region-detail-NBRSCKTD.js");
5375
+ return {
5376
+ Component
5377
+ };
5378
+ },
5254
5379
  children: [
5255
5380
  {
5256
- path: "tax-rates/create",
5257
- lazy: () => import("./tax-region-tax-rate-create-DLLXVZPG.js")
5381
+ path: "edit",
5382
+ handle: { permissions: "tax_region:update" },
5383
+ lazy: () => import("./tax-region-edit-I27QZZPB.js")
5258
5384
  },
5259
5385
  {
5260
- path: "tax-rates/:tax_rate_id/edit",
5261
- lazy: () => import("./tax-region-tax-rate-edit-HN5VDJAZ.js")
5386
+ path: "provinces/create",
5387
+ lazy: () => import("./tax-region-province-create-RYNRPGY5.js")
5262
5388
  },
5263
5389
  {
5264
5390
  path: "overrides/create",
@@ -5267,74 +5393,129 @@ function getRouteMap({
5267
5393
  {
5268
5394
  path: "overrides/:tax_rate_id/edit",
5269
5395
  lazy: () => import("./tax-region-tax-override-edit-R4EGIUIZ.js")
5396
+ },
5397
+ {
5398
+ path: "tax-rates/create",
5399
+ lazy: () => import("./tax-region-tax-rate-create-DLLXVZPG.js")
5400
+ },
5401
+ {
5402
+ path: "tax-rates/:tax_rate_id/edit",
5403
+ lazy: () => import("./tax-region-tax-rate-edit-HN5VDJAZ.js")
5404
+ },
5405
+ {
5406
+ path: "metadata/edit",
5407
+ lazy: () => import("./tax-region-metadata-6YIZSRLO.js")
5408
+ }
5409
+ ]
5410
+ },
5411
+ {
5412
+ path: "provinces/:province_id",
5413
+ lazy: async () => {
5414
+ const { Breadcrumb, loader } = await import("./tax-region-province-detail-WU5GD7VW.js");
5415
+ return {
5416
+ Component: Outlet4,
5417
+ loader,
5418
+ handle: {
5419
+ breadcrumb: (match) => /* @__PURE__ */ jsx17(Breadcrumb, { ...match })
5420
+ }
5421
+ };
5422
+ },
5423
+ children: [
5424
+ {
5425
+ path: "",
5426
+ lazy: () => import("./tax-region-province-detail-WU5GD7VW.js"),
5427
+ children: [
5428
+ {
5429
+ path: "tax-rates/create",
5430
+ lazy: () => import("./tax-region-tax-rate-create-DLLXVZPG.js")
5431
+ },
5432
+ {
5433
+ path: "tax-rates/:tax_rate_id/edit",
5434
+ lazy: () => import("./tax-region-tax-rate-edit-HN5VDJAZ.js")
5435
+ },
5436
+ {
5437
+ path: "overrides/create",
5438
+ lazy: () => import("./tax-region-tax-override-create-XZ5BU2FP.js")
5439
+ },
5440
+ {
5441
+ path: "overrides/:tax_rate_id/edit",
5442
+ lazy: () => import("./tax-region-tax-override-edit-R4EGIUIZ.js")
5443
+ }
5444
+ ]
5270
5445
  }
5271
5446
  ]
5272
5447
  }
5273
5448
  ]
5274
5449
  }
5275
5450
  ]
5276
- }
5277
- ]
5278
- },
5279
- {
5280
- path: "return-reasons",
5281
- element: /* @__PURE__ */ jsx17(Outlet4, {}),
5282
- handle: {
5283
- breadcrumb: () => t("returnReasons.domain")
5284
- },
5285
- children: [
5451
+ },
5286
5452
  {
5287
- path: "",
5288
- lazy: () => import("./return-reason-list-AVCC44CH.js"),
5453
+ path: "return-reasons",
5454
+ element: /* @__PURE__ */ jsx17(Outlet4, {}),
5455
+ handle: {
5456
+ breadcrumb: () => t("returnReasons.domain"),
5457
+ permissions: "return_reason:read"
5458
+ },
5289
5459
  children: [
5290
5460
  {
5291
- path: "create",
5292
- lazy: () => import("./return-reason-create-GNUVNYS5.js")
5293
- },
5294
- {
5295
- path: ":id",
5461
+ path: "",
5462
+ lazy: () => import("./return-reason-list-IQ2JGNEN.js"),
5296
5463
  children: [
5297
5464
  {
5298
- path: "edit",
5299
- lazy: () => import("./return-reason-edit-5ZICBOB3.js")
5465
+ path: "create",
5466
+ handle: { permissions: "return_reason:create" },
5467
+ lazy: () => import("./return-reason-create-GNUVNYS5.js")
5468
+ },
5469
+ {
5470
+ path: ":id",
5471
+ children: [
5472
+ {
5473
+ path: "edit",
5474
+ handle: { permissions: "return_reason:update" },
5475
+ lazy: () => import("./return-reason-edit-5ZICBOB3.js")
5476
+ }
5477
+ ]
5300
5478
  }
5301
5479
  ]
5302
5480
  }
5303
5481
  ]
5304
- }
5305
- ]
5306
- },
5307
- {
5308
- path: "refund-reasons",
5309
- element: /* @__PURE__ */ jsx17(Outlet4, {}),
5310
- handle: {
5311
- breadcrumb: () => t("refundReasons.domain")
5312
- },
5313
- children: [
5482
+ },
5314
5483
  {
5315
- path: "",
5316
- lazy: () => import("./refund-reason-list-ODOF3ZLM.js"),
5484
+ path: "refund-reasons",
5485
+ element: /* @__PURE__ */ jsx17(Outlet4, {}),
5486
+ handle: {
5487
+ breadcrumb: () => t("refundReasons.domain"),
5488
+ permissions: "refund_reason:read"
5489
+ },
5317
5490
  children: [
5318
5491
  {
5319
- path: "create",
5320
- lazy: () => import("./refund-reason-create-P5FUFEGK.js")
5321
- },
5322
- {
5323
- path: ":id",
5492
+ path: "",
5493
+ lazy: () => import("./refund-reason-list-ODOF3ZLM.js"),
5324
5494
  children: [
5325
5495
  {
5326
- path: "edit",
5327
- lazy: () => import("./refund-reason-edit-AKOTWXCE.js")
5496
+ path: "create",
5497
+ handle: { permissions: "refund_reason:create" },
5498
+ lazy: () => import("./refund-reason-create-P5FUFEGK.js")
5499
+ },
5500
+ {
5501
+ path: ":id",
5502
+ children: [
5503
+ {
5504
+ path: "edit",
5505
+ handle: { permissions: "refund_reason:update" },
5506
+ lazy: () => import("./refund-reason-edit-AKOTWXCE.js")
5507
+ }
5508
+ ]
5328
5509
  }
5329
5510
  ]
5330
5511
  }
5331
5512
  ]
5332
5513
  }
5333
- ]
5334
- }
5335
- ],
5336
- customSettingsRoutes?.[0]?.children || []
5337
- )
5514
+ ],
5515
+ customSettingsRoutes?.[0]?.children || []
5516
+ )
5517
+ }
5518
+ ]
5338
5519
  }
5339
5520
  ]
5340
5521
  },
@@ -5350,7 +5531,7 @@ function getRouteMap({
5350
5531
  },
5351
5532
  {
5352
5533
  path: "/reset-password",
5353
- lazy: () => import("./reset-password-N4LXTU3G.js")
5534
+ lazy: () => import("./reset-password-BIAORJOF.js")
5354
5535
  },
5355
5536
  {
5356
5537
  path: "/invite",
@@ -5369,10 +5550,10 @@ function getRouteMap({
5369
5550
  }
5370
5551
 
5371
5552
  // src/app.tsx
5372
- import { useMemo as useMemo6 } from "react";
5553
+ import { useMemo as useMemo7 } from "react";
5373
5554
  import { jsx as jsx18, jsxs as jsxs11 } from "react/jsx-runtime";
5374
5555
  function App() {
5375
- const routes = useMemo6(() => {
5556
+ const routes = useMemo7(() => {
5376
5557
  return {
5377
5558
  settingsRoutes: createRouteMap(getRoutesByType(customRoutes, "settings")),
5378
5559
  mainRoutes: createRouteMap(getRoutesByType(customRoutes, "main")),
@@ -5400,6 +5581,20 @@ function App() {
5400
5581
  }
5401
5582
  ) }) }) }) }) });
5402
5583
  }
5584
+
5585
+ // src/index.ts
5586
+ import {
5587
+ PermissionGuard,
5588
+ PermissionsProvider as PermissionsProvider2,
5589
+ PermissionsRequirement,
5590
+ PermissionsRequirementsProvider,
5591
+ RequiredPermissionsSection,
5592
+ RoutePermissionGuard as RoutePermissionGuard2,
5593
+ usePermissions as usePermissions3,
5594
+ useRegisterPermissions,
5595
+ useRequiredPermissions,
5596
+ useResourcePermissions
5597
+ } from "@mercurjs/dashboard-shared";
5403
5598
  export {
5404
5599
  ActionMenu,
5405
5600
  ChipInput,
@@ -5409,11 +5604,21 @@ export {
5409
5604
  Notifications,
5410
5605
  PRODUCT_DETAIL_FIELDS,
5411
5606
  PRODUCT_DETAIL_QUERY,
5607
+ PermissionGuard,
5608
+ PermissionsProvider2 as PermissionsProvider,
5609
+ PermissionsRequirement,
5610
+ PermissionsRequirementsProvider,
5611
+ RequiredPermissionsSection,
5612
+ RoutePermissionGuard2 as RoutePermissionGuard,
5412
5613
  SingleColumnPage,
5413
5614
  SwitchBox,
5414
5615
  TabbedForm,
5415
5616
  App as default,
5416
5617
  defineTabMeta,
5417
5618
  useDataTable,
5619
+ usePermissions3 as usePermissions,
5620
+ useRegisterPermissions,
5621
+ useRequiredPermissions,
5622
+ useResourcePermissions,
5418
5623
  useTabbedForm
5419
5624
  };