@burdenoff/microfe-store 2026.801.1 → 2026.819.1

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 (69) hide show
  1. package/dist/StoreAdminRoutes.js +27 -27
  2. package/dist/StoreRoot.js +78 -45
  3. package/dist/StoreRoot.js.map +1 -1
  4. package/dist/StoreRoutes.js +163 -85
  5. package/dist/StoreRoutes.js.map +1 -1
  6. package/dist/components/InstallAppModal.js +211 -137
  7. package/dist/components/InstallAppModal.js.map +1 -1
  8. package/dist/components/sourcing/SourcingConfirmationDialog.d.ts +15 -0
  9. package/dist/components/sourcing/SourcingConfirmationDialog.js +61 -0
  10. package/dist/components/sourcing/SourcingConfirmationDialog.js.map +1 -0
  11. package/dist/components/sourcing/SourcingUi.d.ts +51 -0
  12. package/dist/components/sourcing/SourcingUi.js +176 -0
  13. package/dist/components/sourcing/SourcingUi.js.map +1 -0
  14. package/dist/generated/global-operations.d.ts +713 -0
  15. package/dist/generated/global-operations.js +557 -175
  16. package/dist/generated/global-operations.js.map +1 -1
  17. package/dist/generated/global-types.d.ts +2158 -2159
  18. package/dist/generated/global-types.js +8 -2
  19. package/dist/generated/global-types.js.map +1 -1
  20. package/dist/hooks/useBackendCart.js +17 -17
  21. package/dist/hooks/useInstallations.js +32 -32
  22. package/dist/hooks/useOrders.js +7 -7
  23. package/dist/hooks/useSourcing.d.ts +319 -0
  24. package/dist/hooks/useSourcing.js +87 -0
  25. package/dist/hooks/useSourcing.js.map +1 -0
  26. package/dist/hooks/useStoreGraphQL.js +163 -163
  27. package/dist/index.js +12 -12
  28. package/dist/pages/AdminDashboardPage.js +132 -132
  29. package/dist/pages/AdminReviewModerationPage.js +55 -55
  30. package/dist/pages/AdminStoresPage.js +95 -95
  31. package/dist/pages/AdminSubmissionsQueuePage.js +297 -297
  32. package/dist/pages/AdminSubmissionsQueuePage.js.map +1 -1
  33. package/dist/pages/AppDetailPage.js +65 -65
  34. package/dist/pages/AppSettingsPage.js +32 -32
  35. package/dist/pages/CartPage.js +66 -66
  36. package/dist/pages/CreateSourcingRequestPage.d.ts +3 -0
  37. package/dist/pages/CreateSourcingRequestPage.js +439 -0
  38. package/dist/pages/CreateSourcingRequestPage.js.map +1 -0
  39. package/dist/pages/InstalledAppsPage.js +15 -15
  40. package/dist/pages/InstalledAppsPage.js.map +1 -1
  41. package/dist/pages/MarketplaceHomePage.js +384 -384
  42. package/dist/pages/MarketplaceHomePage.js.map +1 -1
  43. package/dist/pages/MyLicensesPage.js +39 -39
  44. package/dist/pages/OrderConfirmationPage.js +57 -57
  45. package/dist/pages/OrdersPage.js +3 -3
  46. package/dist/pages/OrdersPage.js.map +1 -1
  47. package/dist/pages/ProductDetailPage.js +6 -6
  48. package/dist/pages/SellerSourcingOffersPage.d.ts +3 -0
  49. package/dist/pages/SellerSourcingOffersPage.js +284 -0
  50. package/dist/pages/SellerSourcingOffersPage.js.map +1 -0
  51. package/dist/pages/SellerSourcingOpportunitiesPage.d.ts +3 -0
  52. package/dist/pages/SellerSourcingOpportunitiesPage.js +272 -0
  53. package/dist/pages/SellerSourcingOpportunitiesPage.js.map +1 -0
  54. package/dist/pages/SellerSourcingOpportunityDetailPage.d.ts +3 -0
  55. package/dist/pages/SellerSourcingOpportunityDetailPage.js +465 -0
  56. package/dist/pages/SellerSourcingOpportunityDetailPage.js.map +1 -0
  57. package/dist/pages/SourcingRequestDetailPage.d.ts +3 -0
  58. package/dist/pages/SourcingRequestDetailPage.js +447 -0
  59. package/dist/pages/SourcingRequestDetailPage.js.map +1 -0
  60. package/dist/pages/SourcingRequestsPage.d.ts +3 -0
  61. package/dist/pages/SourcingRequestsPage.js +272 -0
  62. package/dist/pages/SourcingRequestsPage.js.map +1 -0
  63. package/dist/providers/SourcingAccessProvider.d.ts +21 -0
  64. package/dist/providers/SourcingAccessProvider.js +95 -0
  65. package/dist/providers/SourcingAccessProvider.js.map +1 -0
  66. package/dist/translations/en.d.ts +3 -0
  67. package/dist/translations/en.js +3 -0
  68. package/dist/translations/en.js.map +1 -1
  69. package/package.json +2 -2
@@ -3,24 +3,24 @@ import { useStorePermissions as t } from "./hooks/useStorePermissions.js";
3
3
  import { AccessDenied as n } from "./components/AccessDenied.js";
4
4
  import { PageLoadingFallback as r } from "./components/RouteGuards.js";
5
5
  import { Suspense as i, lazy as a } from "react";
6
- import { FeatureGate as o } from "@burdenoff/fe-libs/shared/feature-flags";
7
- import { jsx as s, jsxs as c } from "react/jsx-runtime";
8
- import { Navigate as l, Route as u, Routes as d } from "react-router";
6
+ import { Navigate as o, Route as s, Routes as c } from "react-router";
7
+ import { FeatureGate as l } from "@burdenoff/fe-libs/shared/feature-flags";
8
+ import { jsx as u, jsxs as d } from "react/jsx-runtime";
9
9
  //#region src/StoreRoutes.tsx
10
- var f = a(() => import("./pages/MarketplaceHomePage.js").then((e) => ({ default: e.MarketplaceHomePage }))), p = a(() => import("./pages/InstalledAppsPage.js").then((e) => ({ default: e.InstalledAppsPage }))), m = a(() => import("./pages/ProductDetailPage.js").then((e) => ({ default: e.ProductDetailPage }))), h = a(() => import("./pages/CartPage.js").then((e) => ({ default: e.CartPage }))), g = a(() => import("./pages/OrdersPage.js").then((e) => ({ default: e.OrdersPage }))), _ = a(() => import("./pages/MyLicensesPage.js").then((e) => ({ default: e.MyLicensesPage }))), v = a(() => import("./pages/OrderConfirmationPage.js").then((e) => ({ default: e.OrderConfirmationPage }))), y = a(() => import("./pages/AppDetailPage.js").then((e) => ({ default: e.AppDetailPage }))), b = a(() => import("./pages/AppSettingsPage.js").then((e) => ({ default: e.AppSettingsPage })));
11
- function x({ title: e, featureFlag: t }) {
12
- return /* @__PURE__ */ s("div", {
10
+ var f = a(() => import("./pages/MarketplaceHomePage.js").then((e) => ({ default: e.MarketplaceHomePage }))), p = a(() => import("./pages/InstalledAppsPage.js").then((e) => ({ default: e.InstalledAppsPage }))), m = a(() => import("./pages/ProductDetailPage.js").then((e) => ({ default: e.ProductDetailPage }))), h = a(() => import("./pages/CartPage.js").then((e) => ({ default: e.CartPage }))), g = a(() => import("./pages/OrdersPage.js").then((e) => ({ default: e.OrdersPage }))), _ = a(() => import("./pages/MyLicensesPage.js").then((e) => ({ default: e.MyLicensesPage }))), v = a(() => import("./pages/OrderConfirmationPage.js").then((e) => ({ default: e.OrderConfirmationPage }))), y = a(() => import("./pages/AppDetailPage.js").then((e) => ({ default: e.AppDetailPage }))), b = a(() => import("./pages/AppSettingsPage.js").then((e) => ({ default: e.AppSettingsPage }))), x = a(() => import("./pages/SourcingRequestsPage.js").then((e) => ({ default: e.SourcingRequestsPage }))), S = a(() => import("./pages/CreateSourcingRequestPage.js").then((e) => ({ default: e.CreateSourcingRequestPage }))), C = a(() => import("./pages/SourcingRequestDetailPage.js").then((e) => ({ default: e.SourcingRequestDetailPage }))), w = a(() => import("./pages/SellerSourcingOpportunitiesPage.js").then((e) => ({ default: e.SellerSourcingOpportunitiesPage }))), T = a(() => import("./pages/SellerSourcingOpportunityDetailPage.js").then((e) => ({ default: e.SellerSourcingOpportunityDetailPage }))), E = a(() => import("./pages/SellerSourcingOffersPage.js").then((e) => ({ default: e.SellerSourcingOffersPage })));
11
+ function D({ title: e, featureFlag: t }) {
12
+ return /* @__PURE__ */ u("div", {
13
13
  className: "flex min-h-[400px] items-center justify-center p-6",
14
- children: /* @__PURE__ */ c("div", {
14
+ children: /* @__PURE__ */ d("div", {
15
15
  className: "max-w-md rounded-lg border border-border-subtle bg-bg-surface p-6 text-center shadow-sm",
16
- children: [/* @__PURE__ */ c("h2", {
16
+ children: [/* @__PURE__ */ d("h2", {
17
17
  className: "text-lg font-semibold text-text-primary",
18
18
  children: [e, " is not enabled"]
19
- }), /* @__PURE__ */ c("p", {
19
+ }), /* @__PURE__ */ d("p", {
20
20
  className: "mt-2 text-sm text-text-secondary",
21
21
  children: [
22
22
  "Ask an administrator to enable the ",
23
- /* @__PURE__ */ s("span", {
23
+ /* @__PURE__ */ u("span", {
24
24
  className: "font-mono",
25
25
  children: t
26
26
  }),
@@ -31,147 +31,225 @@ function x({ title: e, featureFlag: t }) {
31
31
  })
32
32
  });
33
33
  }
34
- function S({ title: e, featureFlag: t, allowed: i, isLoading: a, children: c }) {
35
- return a ? /* @__PURE__ */ s(r, {}) : /* @__PURE__ */ s(o, {
34
+ function O({ title: e, featureFlag: t, allowed: i, isLoading: a, children: o }) {
35
+ return a ? /* @__PURE__ */ u(r, {}) : /* @__PURE__ */ u(l, {
36
36
  flag: t,
37
37
  defaultValue: !0,
38
- fallback: /* @__PURE__ */ s(x, {
38
+ fallback: /* @__PURE__ */ u(D, {
39
39
  title: e,
40
40
  featureFlag: t
41
41
  }),
42
- children: i ? c : /* @__PURE__ */ s(n, {})
42
+ children: i ? o : /* @__PURE__ */ u(n, {})
43
43
  });
44
44
  }
45
- var C = () => {
46
- let { basePath: n } = e(), { permissions: a, isLoading: o } = t();
47
- return /* @__PURE__ */ c(d, { children: [
48
- /* @__PURE__ */ s(u, {
45
+ var k = () => {
46
+ let { basePath: n, user: a, authToken: l } = e(), { permissions: D, isLoading: k } = t(), A = !!(a?.id || l);
47
+ return /* @__PURE__ */ d(c, { children: [
48
+ /* @__PURE__ */ u(s, {
49
49
  index: !0,
50
- element: /* @__PURE__ */ s(l, {
50
+ element: /* @__PURE__ */ u(o, {
51
51
  to: "marketplace",
52
52
  replace: !0
53
53
  })
54
54
  }),
55
- /* @__PURE__ */ s(u, {
55
+ /* @__PURE__ */ u(s, {
56
56
  path: "marketplace",
57
- element: /* @__PURE__ */ s(S, {
57
+ element: /* @__PURE__ */ u(O, {
58
58
  title: "Marketplace",
59
59
  featureFlag: "store.marketplace",
60
- allowed: a.canBrowse,
61
- isLoading: o,
62
- children: /* @__PURE__ */ s(i, {
63
- fallback: /* @__PURE__ */ s(r, {}),
64
- children: /* @__PURE__ */ s(f, {})
60
+ allowed: D.canBrowse,
61
+ isLoading: k,
62
+ children: /* @__PURE__ */ u(i, {
63
+ fallback: /* @__PURE__ */ u(r, {}),
64
+ children: /* @__PURE__ */ u(f, {})
65
65
  })
66
66
  })
67
67
  }),
68
- /* @__PURE__ */ s(u, {
68
+ /* @__PURE__ */ u(s, {
69
69
  path: "marketplace/product/:productId",
70
- element: /* @__PURE__ */ s(S, {
70
+ element: /* @__PURE__ */ u(O, {
71
71
  title: "Marketplace",
72
72
  featureFlag: "store.marketplace",
73
- allowed: a.canBrowse,
74
- isLoading: o,
75
- children: /* @__PURE__ */ s(i, {
76
- fallback: /* @__PURE__ */ s(r, {}),
77
- children: /* @__PURE__ */ s(m, {})
73
+ allowed: D.canBrowse,
74
+ isLoading: k,
75
+ children: /* @__PURE__ */ u(i, {
76
+ fallback: /* @__PURE__ */ u(r, {}),
77
+ children: /* @__PURE__ */ u(m, {})
78
78
  })
79
79
  })
80
80
  }),
81
- /* @__PURE__ */ s(u, {
81
+ /* @__PURE__ */ u(s, {
82
82
  path: "cart",
83
- element: /* @__PURE__ */ s(S, {
83
+ element: /* @__PURE__ */ u(O, {
84
84
  title: "Cart",
85
85
  featureFlag: "store.cart",
86
- allowed: a.canPurchase,
87
- isLoading: o,
88
- children: /* @__PURE__ */ s(i, {
89
- fallback: /* @__PURE__ */ s(r, {}),
90
- children: /* @__PURE__ */ s(h, {})
86
+ allowed: D.canPurchase,
87
+ isLoading: k,
88
+ children: /* @__PURE__ */ u(i, {
89
+ fallback: /* @__PURE__ */ u(r, {}),
90
+ children: /* @__PURE__ */ u(h, {})
91
91
  })
92
92
  })
93
93
  }),
94
- /* @__PURE__ */ s(u, {
94
+ /* @__PURE__ */ u(s, {
95
95
  path: "orders/:orderId/confirmation",
96
- element: /* @__PURE__ */ s(S, {
96
+ element: /* @__PURE__ */ u(O, {
97
97
  title: "Order confirmation",
98
98
  featureFlag: "store.orders",
99
- allowed: a.canPurchase,
100
- isLoading: o,
101
- children: /* @__PURE__ */ s(i, {
102
- fallback: /* @__PURE__ */ s(r, {}),
103
- children: /* @__PURE__ */ s(v, {})
99
+ allowed: D.canPurchase,
100
+ isLoading: k,
101
+ children: /* @__PURE__ */ u(i, {
102
+ fallback: /* @__PURE__ */ u(r, {}),
103
+ children: /* @__PURE__ */ u(v, {})
104
104
  })
105
105
  })
106
106
  }),
107
- /* @__PURE__ */ s(u, {
107
+ /* @__PURE__ */ u(s, {
108
108
  path: "orders",
109
- element: /* @__PURE__ */ s(S, {
109
+ element: /* @__PURE__ */ u(O, {
110
110
  title: "Orders",
111
111
  featureFlag: "store.orders",
112
- allowed: a.canPurchase,
113
- isLoading: o,
114
- children: /* @__PURE__ */ s(i, {
115
- fallback: /* @__PURE__ */ s(r, {}),
116
- children: /* @__PURE__ */ s(g, {})
112
+ allowed: D.canPurchase,
113
+ isLoading: k,
114
+ children: /* @__PURE__ */ u(i, {
115
+ fallback: /* @__PURE__ */ u(r, {}),
116
+ children: /* @__PURE__ */ u(g, {})
117
117
  })
118
118
  })
119
119
  }),
120
- /* @__PURE__ */ s(u, {
120
+ /* @__PURE__ */ u(s, {
121
121
  path: "installed",
122
- element: /* @__PURE__ */ s(S, {
122
+ element: /* @__PURE__ */ u(O, {
123
123
  title: "Installed apps",
124
124
  featureFlag: "store.installed",
125
- allowed: a.canInstall,
126
- isLoading: o,
127
- children: /* @__PURE__ */ s(i, {
128
- fallback: /* @__PURE__ */ s(r, {}),
129
- children: /* @__PURE__ */ s(p, {})
125
+ allowed: D.canInstall,
126
+ isLoading: k,
127
+ children: /* @__PURE__ */ u(i, {
128
+ fallback: /* @__PURE__ */ u(r, {}),
129
+ children: /* @__PURE__ */ u(p, {})
130
130
  })
131
131
  })
132
132
  }),
133
- /* @__PURE__ */ s(u, {
133
+ /* @__PURE__ */ u(s, {
134
134
  path: "installed/:installationId",
135
- element: /* @__PURE__ */ s(S, {
135
+ element: /* @__PURE__ */ u(O, {
136
136
  title: "Installed apps",
137
137
  featureFlag: "store.installed",
138
- allowed: a.canInstall,
139
- isLoading: o,
140
- children: /* @__PURE__ */ s(i, {
141
- fallback: /* @__PURE__ */ s(r, {}),
142
- children: /* @__PURE__ */ s(y, {})
138
+ allowed: D.canInstall,
139
+ isLoading: k,
140
+ children: /* @__PURE__ */ u(i, {
141
+ fallback: /* @__PURE__ */ u(r, {}),
142
+ children: /* @__PURE__ */ u(y, {})
143
143
  })
144
144
  })
145
145
  }),
146
- /* @__PURE__ */ s(u, {
146
+ /* @__PURE__ */ u(s, {
147
147
  path: "installed/:installationId/settings",
148
- element: /* @__PURE__ */ s(S, {
148
+ element: /* @__PURE__ */ u(O, {
149
149
  title: "Installed apps",
150
150
  featureFlag: "store.installed",
151
- allowed: a.canInstall,
152
- isLoading: o,
153
- children: /* @__PURE__ */ s(i, {
154
- fallback: /* @__PURE__ */ s(r, {}),
155
- children: /* @__PURE__ */ s(b, {})
151
+ allowed: D.canInstall,
152
+ isLoading: k,
153
+ children: /* @__PURE__ */ u(i, {
154
+ fallback: /* @__PURE__ */ u(r, {}),
155
+ children: /* @__PURE__ */ u(b, {})
156
156
  })
157
157
  })
158
158
  }),
159
- /* @__PURE__ */ s(u, {
159
+ /* @__PURE__ */ u(s, {
160
160
  path: "licenses",
161
- element: /* @__PURE__ */ s(S, {
161
+ element: /* @__PURE__ */ u(O, {
162
162
  title: "Licenses",
163
163
  featureFlag: "store.licenses",
164
- allowed: a.canManageLicenses,
165
- isLoading: o,
166
- children: /* @__PURE__ */ s(i, {
167
- fallback: /* @__PURE__ */ s(r, {}),
168
- children: /* @__PURE__ */ s(_, {})
164
+ allowed: D.canManageLicenses,
165
+ isLoading: k,
166
+ children: /* @__PURE__ */ u(i, {
167
+ fallback: /* @__PURE__ */ u(r, {}),
168
+ children: /* @__PURE__ */ u(_, {})
169
169
  })
170
170
  })
171
171
  }),
172
- /* @__PURE__ */ s(u, {
172
+ /* @__PURE__ */ u(s, {
173
+ path: "sourcing/requests",
174
+ element: /* @__PURE__ */ u(O, {
175
+ title: "Sourcing",
176
+ featureFlag: "store.sourcing",
177
+ allowed: A,
178
+ isLoading: !1,
179
+ children: /* @__PURE__ */ u(i, {
180
+ fallback: /* @__PURE__ */ u(r, {}),
181
+ children: /* @__PURE__ */ u(x, {})
182
+ })
183
+ })
184
+ }),
185
+ /* @__PURE__ */ u(s, {
186
+ path: "sourcing/requests/new",
187
+ element: /* @__PURE__ */ u(O, {
188
+ title: "Sourcing",
189
+ featureFlag: "store.sourcing",
190
+ allowed: A,
191
+ isLoading: !1,
192
+ children: /* @__PURE__ */ u(i, {
193
+ fallback: /* @__PURE__ */ u(r, {}),
194
+ children: /* @__PURE__ */ u(S, {})
195
+ })
196
+ })
197
+ }),
198
+ /* @__PURE__ */ u(s, {
199
+ path: "sourcing/requests/:requestId",
200
+ element: /* @__PURE__ */ u(O, {
201
+ title: "Sourcing",
202
+ featureFlag: "store.sourcing",
203
+ allowed: A,
204
+ isLoading: !1,
205
+ children: /* @__PURE__ */ u(i, {
206
+ fallback: /* @__PURE__ */ u(r, {}),
207
+ children: /* @__PURE__ */ u(C, {})
208
+ })
209
+ })
210
+ }),
211
+ /* @__PURE__ */ u(s, {
212
+ path: "publisher/sourcing/opportunities",
213
+ element: /* @__PURE__ */ u(O, {
214
+ title: "Seller sourcing",
215
+ featureFlag: "store.sourcing",
216
+ allowed: A,
217
+ isLoading: !1,
218
+ children: /* @__PURE__ */ u(i, {
219
+ fallback: /* @__PURE__ */ u(r, {}),
220
+ children: /* @__PURE__ */ u(w, {})
221
+ })
222
+ })
223
+ }),
224
+ /* @__PURE__ */ u(s, {
225
+ path: "publisher/sourcing/opportunities/:requestId",
226
+ element: /* @__PURE__ */ u(O, {
227
+ title: "Seller sourcing",
228
+ featureFlag: "store.sourcing",
229
+ allowed: A,
230
+ isLoading: !1,
231
+ children: /* @__PURE__ */ u(i, {
232
+ fallback: /* @__PURE__ */ u(r, {}),
233
+ children: /* @__PURE__ */ u(T, {})
234
+ })
235
+ })
236
+ }),
237
+ /* @__PURE__ */ u(s, {
238
+ path: "publisher/sourcing/offers",
239
+ element: /* @__PURE__ */ u(O, {
240
+ title: "Seller sourcing",
241
+ featureFlag: "store.sourcing",
242
+ allowed: A,
243
+ isLoading: !1,
244
+ children: /* @__PURE__ */ u(i, {
245
+ fallback: /* @__PURE__ */ u(r, {}),
246
+ children: /* @__PURE__ */ u(E, {})
247
+ })
248
+ })
249
+ }),
250
+ /* @__PURE__ */ u(s, {
173
251
  path: "*",
174
- element: /* @__PURE__ */ s(l, {
252
+ element: /* @__PURE__ */ u(o, {
175
253
  to: `${n}/marketplace`,
176
254
  replace: !0
177
255
  })
@@ -179,6 +257,6 @@ var C = () => {
179
257
  ] });
180
258
  };
181
259
  //#endregion
182
- export { C as StoreRoutes };
260
+ export { k as StoreRoutes };
183
261
 
184
262
  //# sourceMappingURL=StoreRoutes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StoreRoutes.js","names":[],"sources":["../src/StoreRoutes.tsx"],"sourcesContent":["import { lazy, Suspense, type FC, type ReactNode } from 'react';\nimport { Routes, Route, Navigate } from 'react-router';\nimport { FeatureGate } from '@burdenoff/fe-libs/shared/feature-flags';\nimport { useStore } from './providers/StoreProvider';\nimport { useStorePermissions } from './hooks/useStorePermissions';\nimport { AccessDenied, PageLoadingFallback } from './components/RouteGuards';\n\n// Lazy loaded pages\nconst MarketplaceHomePage = lazy(() =>\n import('./pages/MarketplaceHomePage').then((m) => ({ default: m.MarketplaceHomePage }))\n);\nconst InstalledAppsPage = lazy(() =>\n import('./pages/InstalledAppsPage').then((m) => ({ default: m.InstalledAppsPage }))\n);\nconst ProductDetailPage = lazy(() =>\n import('./pages/ProductDetailPage').then((m) => ({ default: m.ProductDetailPage }))\n);\nconst CartPage = lazy(() => import('./pages/CartPage').then((m) => ({ default: m.CartPage })));\nconst OrdersPage = lazy(() =>\n import('./pages/OrdersPage').then((m) => ({ default: m.OrdersPage }))\n);\nconst MyLicensesPage = lazy(() =>\n import('./pages/MyLicensesPage').then((m) => ({ default: m.MyLicensesPage }))\n);\nconst OrderConfirmationPage = lazy(() =>\n import('./pages/OrderConfirmationPage').then((m) => ({ default: m.OrderConfirmationPage }))\n);\nconst AppDetailPage = lazy(() =>\n import('./pages/AppDetailPage').then((m) => ({ default: m.AppDetailPage }))\n);\nconst AppSettingsPage = lazy(() =>\n import('./pages/AppSettingsPage').then((m) => ({ default: m.AppSettingsPage }))\n);\n\nfunction FeatureDisabled({ title, featureFlag }: { title: string; featureFlag: string }) {\n return (\n <div className=\"flex min-h-[400px] items-center justify-center p-6\">\n <div className=\"max-w-md rounded-lg border border-border-subtle bg-bg-surface p-6 text-center shadow-sm\">\n <h2 className=\"text-lg font-semibold text-text-primary\">{title} is not enabled</h2>\n <p className=\"mt-2 text-sm text-text-secondary\">\n Ask an administrator to enable the <span className=\"font-mono\">{featureFlag}</span>{' '}\n feature flag for this organization.\n </p>\n </div>\n </div>\n );\n}\n\ninterface StoreRouteGateProps {\n title: string;\n featureFlag: string;\n allowed: boolean;\n isLoading: boolean;\n children: ReactNode;\n}\n\nfunction StoreRouteGate({ title, featureFlag, allowed, isLoading, children }: StoreRouteGateProps) {\n if (isLoading) {\n return <PageLoadingFallback />;\n }\n return (\n <FeatureGate\n flag={featureFlag}\n defaultValue\n fallback={<FeatureDisabled title={title} featureFlag={featureFlag} />}\n >\n {allowed ? children : <AccessDenied />}\n </FeatureGate>\n );\n}\n\n/**\n * StoreRoutes component\n *\n * Internal routing for the Store microfrontend. Every route is gated by both\n * a live feature flag (via FeatureGate) and an RBAC permission check so that\n * features can be toggled per-org without a deployment.\n *\n * Flag namespace: store.*\n */\nexport const StoreRoutes: FC = () => {\n const { basePath } = useStore();\n const { permissions, isLoading } = useStorePermissions();\n\n return (\n <Routes>\n {/* Default redirect */}\n <Route index element={<Navigate to=\"marketplace\" replace />} />\n\n {/* Marketplace */}\n <Route\n path=\"marketplace\"\n element={\n <StoreRouteGate\n title=\"Marketplace\"\n featureFlag=\"store.marketplace\"\n allowed={permissions.canBrowse}\n isLoading={isLoading}\n >\n <Suspense fallback={<PageLoadingFallback />}>\n <MarketplaceHomePage />\n </Suspense>\n </StoreRouteGate>\n }\n />\n <Route\n path=\"marketplace/product/:productId\"\n element={\n <StoreRouteGate\n title=\"Marketplace\"\n featureFlag=\"store.marketplace\"\n allowed={permissions.canBrowse}\n isLoading={isLoading}\n >\n <Suspense fallback={<PageLoadingFallback />}>\n <ProductDetailPage />\n </Suspense>\n </StoreRouteGate>\n }\n />\n\n {/* Cart */}\n <Route\n path=\"cart\"\n element={\n <StoreRouteGate\n title=\"Cart\"\n featureFlag=\"store.cart\"\n allowed={permissions.canPurchase}\n isLoading={isLoading}\n >\n <Suspense fallback={<PageLoadingFallback />}>\n <CartPage />\n </Suspense>\n </StoreRouteGate>\n }\n />\n\n {/* Orders */}\n <Route\n path=\"orders/:orderId/confirmation\"\n element={\n <StoreRouteGate\n title=\"Order confirmation\"\n featureFlag=\"store.orders\"\n allowed={permissions.canPurchase}\n isLoading={isLoading}\n >\n <Suspense fallback={<PageLoadingFallback />}>\n <OrderConfirmationPage />\n </Suspense>\n </StoreRouteGate>\n }\n />\n <Route\n path=\"orders\"\n element={\n <StoreRouteGate\n title=\"Orders\"\n featureFlag=\"store.orders\"\n allowed={permissions.canPurchase}\n isLoading={isLoading}\n >\n <Suspense fallback={<PageLoadingFallback />}>\n <OrdersPage />\n </Suspense>\n </StoreRouteGate>\n }\n />\n\n {/* Installed Apps */}\n <Route\n path=\"installed\"\n element={\n <StoreRouteGate\n title=\"Installed apps\"\n featureFlag=\"store.installed\"\n allowed={permissions.canInstall}\n isLoading={isLoading}\n >\n <Suspense fallback={<PageLoadingFallback />}>\n <InstalledAppsPage />\n </Suspense>\n </StoreRouteGate>\n }\n />\n <Route\n path=\"installed/:installationId\"\n element={\n <StoreRouteGate\n title=\"Installed apps\"\n featureFlag=\"store.installed\"\n allowed={permissions.canInstall}\n isLoading={isLoading}\n >\n <Suspense fallback={<PageLoadingFallback />}>\n <AppDetailPage />\n </Suspense>\n </StoreRouteGate>\n }\n />\n <Route\n path=\"installed/:installationId/settings\"\n element={\n <StoreRouteGate\n title=\"Installed apps\"\n featureFlag=\"store.installed\"\n allowed={permissions.canInstall}\n isLoading={isLoading}\n >\n <Suspense fallback={<PageLoadingFallback />}>\n <AppSettingsPage />\n </Suspense>\n </StoreRouteGate>\n }\n />\n\n {/* Licenses */}\n <Route\n path=\"licenses\"\n element={\n <StoreRouteGate\n title=\"Licenses\"\n featureFlag=\"store.licenses\"\n allowed={permissions.canManageLicenses}\n isLoading={isLoading}\n >\n <Suspense fallback={<PageLoadingFallback />}>\n <MyLicensesPage />\n </Suspense>\n </StoreRouteGate>\n }\n />\n\n {/* Catch-all redirect */}\n <Route path=\"*\" element={<Navigate to={`${basePath}/marketplace`} replace />} />\n </Routes>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"StoreRoutes.js","names":[],"sources":["../src/StoreRoutes.tsx"],"sourcesContent":["import { lazy, Suspense, type FC, type ReactNode } from 'react';\nimport { Routes, Route, Navigate } from 'react-router';\nimport { FeatureGate } from '@burdenoff/fe-libs/shared/feature-flags';\nimport { useStore } from './providers/StoreProvider';\nimport { useStorePermissions } from './hooks/useStorePermissions';\nimport { AccessDenied, PageLoadingFallback } from './components/RouteGuards';\n\n// Lazy loaded pages\nconst MarketplaceHomePage = lazy(() =>\n import('./pages/MarketplaceHomePage').then((m) => ({ default: m.MarketplaceHomePage }))\n);\nconst InstalledAppsPage = lazy(() =>\n import('./pages/InstalledAppsPage').then((m) => ({ default: m.InstalledAppsPage }))\n);\nconst ProductDetailPage = lazy(() =>\n import('./pages/ProductDetailPage').then((m) => ({ default: m.ProductDetailPage }))\n);\nconst CartPage = lazy(() => import('./pages/CartPage').then((m) => ({ default: m.CartPage })));\nconst OrdersPage = lazy(() =>\n import('./pages/OrdersPage').then((m) => ({ default: m.OrdersPage }))\n);\nconst MyLicensesPage = lazy(() =>\n import('./pages/MyLicensesPage').then((m) => ({ default: m.MyLicensesPage }))\n);\nconst OrderConfirmationPage = lazy(() =>\n import('./pages/OrderConfirmationPage').then((m) => ({ default: m.OrderConfirmationPage }))\n);\nconst AppDetailPage = lazy(() =>\n import('./pages/AppDetailPage').then((m) => ({ default: m.AppDetailPage }))\n);\nconst AppSettingsPage = lazy(() =>\n import('./pages/AppSettingsPage').then((m) => ({ default: m.AppSettingsPage }))\n);\nconst SourcingRequestsPage = lazy(() =>\n import('./pages/SourcingRequestsPage').then((m) => ({ default: m.SourcingRequestsPage }))\n);\nconst CreateSourcingRequestPage = lazy(() =>\n import('./pages/CreateSourcingRequestPage').then((m) => ({\n default: m.CreateSourcingRequestPage,\n }))\n);\nconst SourcingRequestDetailPage = lazy(() =>\n import('./pages/SourcingRequestDetailPage').then((m) => ({\n default: m.SourcingRequestDetailPage,\n }))\n);\nconst SellerSourcingOpportunitiesPage = lazy(() =>\n import('./pages/SellerSourcingOpportunitiesPage').then((m) => ({\n default: m.SellerSourcingOpportunitiesPage,\n }))\n);\nconst SellerSourcingOpportunityDetailPage = lazy(() =>\n import('./pages/SellerSourcingOpportunityDetailPage').then((m) => ({\n default: m.SellerSourcingOpportunityDetailPage,\n }))\n);\nconst SellerSourcingOffersPage = lazy(() =>\n import('./pages/SellerSourcingOffersPage').then((m) => ({\n default: m.SellerSourcingOffersPage,\n }))\n);\n\nfunction FeatureDisabled({ title, featureFlag }: { title: string; featureFlag: string }) {\n return (\n <div className=\"flex min-h-[400px] items-center justify-center p-6\">\n <div className=\"max-w-md rounded-lg border border-border-subtle bg-bg-surface p-6 text-center shadow-sm\">\n <h2 className=\"text-lg font-semibold text-text-primary\">{title} is not enabled</h2>\n <p className=\"mt-2 text-sm text-text-secondary\">\n Ask an administrator to enable the <span className=\"font-mono\">{featureFlag}</span>{' '}\n feature flag for this organization.\n </p>\n </div>\n </div>\n );\n}\n\ninterface StoreRouteGateProps {\n title: string;\n featureFlag: string;\n allowed: boolean;\n isLoading: boolean;\n children: ReactNode;\n}\n\nfunction StoreRouteGate({ title, featureFlag, allowed, isLoading, children }: StoreRouteGateProps) {\n if (isLoading) {\n return <PageLoadingFallback />;\n }\n return (\n <FeatureGate\n flag={featureFlag}\n defaultValue\n fallback={<FeatureDisabled title={title} featureFlag={featureFlag} />}\n >\n {allowed ? children : <AccessDenied />}\n </FeatureGate>\n );\n}\n\n/**\n * StoreRoutes component\n *\n * Internal routing for the Store microfrontend. Every route is gated by both\n * a live feature flag (via FeatureGate) and an RBAC permission check so that\n * features can be toggled per-org without a deployment.\n *\n * Flag namespace: store.*\n */\nexport const StoreRoutes: FC = () => {\n const { basePath, user, authToken } = useStore();\n const { permissions, isLoading } = useStorePermissions();\n const hasSelfActor = Boolean(user?.id || authToken);\n\n return (\n <Routes>\n {/* Default redirect */}\n <Route index element={<Navigate to=\"marketplace\" replace />} />\n\n {/* Marketplace */}\n <Route\n path=\"marketplace\"\n element={\n <StoreRouteGate\n title=\"Marketplace\"\n featureFlag=\"store.marketplace\"\n allowed={permissions.canBrowse}\n isLoading={isLoading}\n >\n <Suspense fallback={<PageLoadingFallback />}>\n <MarketplaceHomePage />\n </Suspense>\n </StoreRouteGate>\n }\n />\n <Route\n path=\"marketplace/product/:productId\"\n element={\n <StoreRouteGate\n title=\"Marketplace\"\n featureFlag=\"store.marketplace\"\n allowed={permissions.canBrowse}\n isLoading={isLoading}\n >\n <Suspense fallback={<PageLoadingFallback />}>\n <ProductDetailPage />\n </Suspense>\n </StoreRouteGate>\n }\n />\n\n {/* Cart */}\n <Route\n path=\"cart\"\n element={\n <StoreRouteGate\n title=\"Cart\"\n featureFlag=\"store.cart\"\n allowed={permissions.canPurchase}\n isLoading={isLoading}\n >\n <Suspense fallback={<PageLoadingFallback />}>\n <CartPage />\n </Suspense>\n </StoreRouteGate>\n }\n />\n\n {/* Orders */}\n <Route\n path=\"orders/:orderId/confirmation\"\n element={\n <StoreRouteGate\n title=\"Order confirmation\"\n featureFlag=\"store.orders\"\n allowed={permissions.canPurchase}\n isLoading={isLoading}\n >\n <Suspense fallback={<PageLoadingFallback />}>\n <OrderConfirmationPage />\n </Suspense>\n </StoreRouteGate>\n }\n />\n <Route\n path=\"orders\"\n element={\n <StoreRouteGate\n title=\"Orders\"\n featureFlag=\"store.orders\"\n allowed={permissions.canPurchase}\n isLoading={isLoading}\n >\n <Suspense fallback={<PageLoadingFallback />}>\n <OrdersPage />\n </Suspense>\n </StoreRouteGate>\n }\n />\n\n {/* Installed Apps */}\n <Route\n path=\"installed\"\n element={\n <StoreRouteGate\n title=\"Installed apps\"\n featureFlag=\"store.installed\"\n allowed={permissions.canInstall}\n isLoading={isLoading}\n >\n <Suspense fallback={<PageLoadingFallback />}>\n <InstalledAppsPage />\n </Suspense>\n </StoreRouteGate>\n }\n />\n <Route\n path=\"installed/:installationId\"\n element={\n <StoreRouteGate\n title=\"Installed apps\"\n featureFlag=\"store.installed\"\n allowed={permissions.canInstall}\n isLoading={isLoading}\n >\n <Suspense fallback={<PageLoadingFallback />}>\n <AppDetailPage />\n </Suspense>\n </StoreRouteGate>\n }\n />\n <Route\n path=\"installed/:installationId/settings\"\n element={\n <StoreRouteGate\n title=\"Installed apps\"\n featureFlag=\"store.installed\"\n allowed={permissions.canInstall}\n isLoading={isLoading}\n >\n <Suspense fallback={<PageLoadingFallback />}>\n <AppSettingsPage />\n </Suspense>\n </StoreRouteGate>\n }\n />\n\n {/* Licenses */}\n <Route\n path=\"licenses\"\n element={\n <StoreRouteGate\n title=\"Licenses\"\n featureFlag=\"store.licenses\"\n allowed={permissions.canManageLicenses}\n isLoading={isLoading}\n >\n <Suspense fallback={<PageLoadingFallback />}>\n <MyLicensesPage />\n </Suspense>\n </StoreRouteGate>\n }\n />\n\n {/* Sourcing — actor self-scoped; no workspace or product-publishing permission required. */}\n <Route\n path=\"sourcing/requests\"\n element={\n <StoreRouteGate\n title=\"Sourcing\"\n featureFlag=\"store.sourcing\"\n allowed={hasSelfActor}\n isLoading={false}\n >\n <Suspense fallback={<PageLoadingFallback />}>\n <SourcingRequestsPage />\n </Suspense>\n </StoreRouteGate>\n }\n />\n <Route\n path=\"sourcing/requests/new\"\n element={\n <StoreRouteGate\n title=\"Sourcing\"\n featureFlag=\"store.sourcing\"\n allowed={hasSelfActor}\n isLoading={false}\n >\n <Suspense fallback={<PageLoadingFallback />}>\n <CreateSourcingRequestPage />\n </Suspense>\n </StoreRouteGate>\n }\n />\n <Route\n path=\"sourcing/requests/:requestId\"\n element={\n <StoreRouteGate\n title=\"Sourcing\"\n featureFlag=\"store.sourcing\"\n allowed={hasSelfActor}\n isLoading={false}\n >\n <Suspense fallback={<PageLoadingFallback />}>\n <SourcingRequestDetailPage />\n </Suspense>\n </StoreRouteGate>\n }\n />\n <Route\n path=\"publisher/sourcing/opportunities\"\n element={\n <StoreRouteGate\n title=\"Seller sourcing\"\n featureFlag=\"store.sourcing\"\n allowed={hasSelfActor}\n isLoading={false}\n >\n <Suspense fallback={<PageLoadingFallback />}>\n <SellerSourcingOpportunitiesPage />\n </Suspense>\n </StoreRouteGate>\n }\n />\n <Route\n path=\"publisher/sourcing/opportunities/:requestId\"\n element={\n <StoreRouteGate\n title=\"Seller sourcing\"\n featureFlag=\"store.sourcing\"\n allowed={hasSelfActor}\n isLoading={false}\n >\n <Suspense fallback={<PageLoadingFallback />}>\n <SellerSourcingOpportunityDetailPage />\n </Suspense>\n </StoreRouteGate>\n }\n />\n <Route\n path=\"publisher/sourcing/offers\"\n element={\n <StoreRouteGate\n title=\"Seller sourcing\"\n featureFlag=\"store.sourcing\"\n allowed={hasSelfActor}\n isLoading={false}\n >\n <Suspense fallback={<PageLoadingFallback />}>\n <SellerSourcingOffersPage />\n </Suspense>\n </StoreRouteGate>\n }\n />\n\n {/* Catch-all redirect */}\n <Route path=\"*\" element={<Navigate to={`${basePath}/marketplace`} replace />} />\n </Routes>\n );\n};\n"],"mappings":"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"}