@burdenoff/microfe-store 2026.625.1 → 2026.625.2
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.
- package/dist/StoreRoutes.js +3 -3
- package/dist/StoreRoutes.js.map +1 -1
- package/dist/components/AccessDenied.js +3 -3
- package/dist/components/AccessDenied.js.map +1 -1
- package/dist/components/InstallAppModal.js +120 -107
- package/dist/components/InstallAppModal.js.map +1 -1
- package/dist/components/cart/CartDrawer.js +10 -10
- package/dist/components/cart/CartDrawer.js.map +1 -1
- package/dist/node_modules/{@apollo → .bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo}/client/errors/CombinedGraphQLErrors.js +1 -1
- package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/errors/CombinedGraphQLErrors.js.map +1 -0
- package/dist/node_modules/{@apollo → .bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo}/client/errors/utils.js +1 -1
- package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/errors/utils.js.map +1 -0
- package/dist/node_modules/{@apollo → .bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo}/client/link/core/ApolloLink.js +2 -2
- package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/link/core/ApolloLink.js.map +1 -0
- package/dist/node_modules/{@apollo → .bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo}/client/link/subscriptions/index.js +2 -2
- package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/link/subscriptions/index.js.map +1 -0
- package/dist/node_modules/{@apollo → .bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo}/client/link/utils/createOperation.js +1 -1
- package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/link/utils/createOperation.js.map +1 -0
- package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/caching/sizes.js.map +1 -0
- package/dist/node_modules/{@apollo → .bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo}/client/utilities/graphql/print.js +1 -1
- package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/graphql/print.js.map +1 -0
- package/dist/node_modules/{@apollo → .bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo}/client/utilities/internal/caches.js +2 -2
- package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/caches.js.map +1 -0
- package/dist/node_modules/{@apollo → .bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo}/client/utilities/internal/checkDocument.js +1 -1
- package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/checkDocument.js.map +1 -0
- package/dist/node_modules/{@apollo → .bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo}/client/utilities/internal/getMainDefinition.js +1 -1
- package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/getMainDefinition.js.map +1 -0
- package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/getMemoryInternals.js +9 -0
- package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/getMemoryInternals.js.map +1 -0
- package/dist/node_modules/{@apollo → .bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo}/client/utilities/internal/getOperationDefinition.js +1 -1
- package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/getOperationDefinition.js.map +1 -0
- package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/getOperationName.js +8 -0
- package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/getOperationName.js.map +1 -0
- package/dist/node_modules/{@apollo → .bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo}/client/utilities/internal/globals/global.js +1 -1
- package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/globals/global.js.map +1 -0
- package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/globals/maybe.js +10 -0
- package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/globals/maybe.js.map +1 -0
- package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/isNonNullObject.js +8 -0
- package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/isNonNullObject.js.map +1 -0
- package/dist/node_modules/{@apollo → .bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo}/client/utilities/internal/makeUniqueId.js +1 -1
- package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/makeUniqueId.js.map +1 -0
- package/dist/node_modules/{@apollo → .bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo}/client/utilities/internal/memoize.js +2 -2
- package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/memoize.js.map +1 -0
- package/dist/node_modules/{@apollo → .bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo}/client/utilities/internal/stringifyForDisplay.js +1 -1
- package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/stringifyForDisplay.js.map +1 -0
- package/dist/node_modules/{@apollo → .bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo}/client/utilities/invariant/index.js +1 -1
- package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/invariant/index.js.map +1 -0
- package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/version.js +6 -0
- package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/version.js.map +1 -0
- package/dist/node_modules/{@wry → .bun/@wry_caches@1.0.1/node_modules/@wry}/caches/lib/weak.js +1 -1
- package/dist/node_modules/.bun/@wry_caches@1.0.1/node_modules/@wry/caches/lib/weak.js.map +1 -0
- package/dist/node_modules/{@wry → .bun/@wry_trie@0.5.0/node_modules/@wry}/trie/lib/index.js +1 -1
- package/dist/node_modules/.bun/@wry_trie@0.5.0/node_modules/@wry/trie/lib/index.js.map +1 -0
- package/dist/node_modules/{graphql-ws → .bun/graphql-ws@6.0.8_796ebe57c2b0ffe0/node_modules/graphql-ws}/dist/client.js +1 -1
- package/dist/node_modules/.bun/graphql-ws@6.0.8_796ebe57c2b0ffe0/node_modules/graphql-ws/dist/client.js.map +1 -0
- package/dist/node_modules/{graphql-ws → .bun/graphql-ws@6.0.8_796ebe57c2b0ffe0/node_modules/graphql-ws}/dist/common-CGW11Fyb.js +1 -1
- package/dist/node_modules/.bun/graphql-ws@6.0.8_796ebe57c2b0ffe0/node_modules/graphql-ws/dist/common-CGW11Fyb.js.map +1 -0
- package/dist/node_modules/{rxjs → .bun/rxjs@7.8.2/node_modules/rxjs}/dist/esm5/internal/NotificationFactories.js +1 -1
- package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/NotificationFactories.js.map +1 -0
- package/dist/node_modules/{rxjs → .bun/rxjs@7.8.2/node_modules/rxjs}/dist/esm5/internal/Observable.js +1 -1
- package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Observable.js.map +1 -0
- package/dist/node_modules/{rxjs → .bun/rxjs@7.8.2/node_modules/rxjs}/dist/esm5/internal/Subscriber.js +2 -2
- package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subscriber.js.map +1 -0
- package/dist/node_modules/{rxjs → .bun/rxjs@7.8.2/node_modules/rxjs}/dist/esm5/internal/Subscription.js +2 -2
- package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subscription.js.map +1 -0
- package/dist/node_modules/{rxjs → .bun/rxjs@7.8.2/node_modules/rxjs}/dist/esm5/internal/config.js +1 -1
- package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/config.js.map +1 -0
- package/dist/node_modules/{rxjs → .bun/rxjs@7.8.2/node_modules/rxjs}/dist/esm5/internal/observable/empty.js +1 -1
- package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/empty.js.map +1 -0
- package/dist/node_modules/{rxjs → .bun/rxjs@7.8.2/node_modules/rxjs}/dist/esm5/internal/scheduler/timeoutProvider.js +2 -2
- package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js.map +1 -0
- package/dist/node_modules/{rxjs → .bun/rxjs@7.8.2/node_modules/rxjs}/dist/esm5/internal/symbol/observable.js +1 -1
- package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/symbol/observable.js.map +1 -0
- package/dist/node_modules/{rxjs → .bun/rxjs@7.8.2/node_modules/rxjs}/dist/esm5/internal/util/UnsubscriptionError.js +1 -1
- package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js.map +1 -0
- package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/arrRemove.js +11 -0
- package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/arrRemove.js.map +1 -0
- package/dist/node_modules/{rxjs → .bun/rxjs@7.8.2/node_modules/rxjs}/dist/esm5/internal/util/createErrorClass.js +1 -1
- package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js.map +1 -0
- package/dist/node_modules/{rxjs → .bun/rxjs@7.8.2/node_modules/rxjs}/dist/esm5/internal/util/errorContext.js +1 -1
- package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/errorContext.js.map +1 -0
- package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/identity.js +8 -0
- package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/identity.js.map +1 -0
- package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isFunction.js +8 -0
- package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isFunction.js.map +1 -0
- package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/noop.js +6 -0
- package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/noop.js.map +1 -0
- package/dist/node_modules/{rxjs → .bun/rxjs@7.8.2/node_modules/rxjs}/dist/esm5/internal/util/pipe.js +1 -1
- package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/pipe.js.map +1 -0
- package/dist/node_modules/{rxjs → .bun/rxjs@7.8.2/node_modules/rxjs}/dist/esm5/internal/util/reportUnhandledError.js +1 -1
- package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js.map +1 -0
- package/dist/node_modules/{rxjs → .bun/tslib@2.8.1}/node_modules/tslib/tslib.es6.js +1 -1
- package/dist/node_modules/.bun/tslib@2.8.1/node_modules/tslib/tslib.es6.js.map +1 -0
- package/dist/pages/AdminDashboardPage.js +89 -90
- package/dist/pages/AdminDashboardPage.js.map +1 -1
- package/dist/pages/AdminReviewModerationPage.js +56 -58
- package/dist/pages/AdminReviewModerationPage.js.map +1 -1
- package/dist/pages/AdminStoresPage.js +372 -391
- package/dist/pages/AdminStoresPage.js.map +1 -1
- package/dist/pages/AdminSubmissionsQueuePage.js +148 -134
- package/dist/pages/AdminSubmissionsQueuePage.js.map +1 -1
- package/dist/pages/AppDetailPage.js +120 -123
- package/dist/pages/AppDetailPage.js.map +1 -1
- package/dist/pages/AppSettingsPage.js +297 -70
- package/dist/pages/AppSettingsPage.js.map +1 -1
- package/dist/pages/CartPage.js +59 -60
- package/dist/pages/CartPage.js.map +1 -1
- package/dist/pages/InstalledAppsPage.js +100 -71
- package/dist/pages/InstalledAppsPage.js.map +1 -1
- package/dist/pages/MarketplaceHomePage.js +175 -176
- package/dist/pages/MarketplaceHomePage.js.map +1 -1
- package/dist/pages/MyLicensesPage.js +33 -34
- package/dist/pages/MyLicensesPage.js.map +1 -1
- package/dist/pages/OrderConfirmationPage.js +37 -38
- package/dist/pages/OrderConfirmationPage.js.map +1 -1
- package/dist/pages/OrdersPage.js +19 -20
- package/dist/pages/OrdersPage.js.map +1 -1
- package/dist/pages/ProductDetailPage.js +98 -101
- package/dist/pages/ProductDetailPage.js.map +1 -1
- package/dist/pages/ProductReviewsPage.js +2 -2
- package/dist/pages/ProductReviewsPage.js.map +1 -1
- package/dist/pages/PublisherDashboardPage.js +92 -93
- package/dist/pages/PublisherDashboardPage.js.map +1 -1
- package/dist/pages/PublisherRevenuePage.js +60 -61
- package/dist/pages/PublisherRevenuePage.js.map +1 -1
- package/dist/pages/PublisherSubmissionsPage.js +96 -97
- package/dist/pages/PublisherSubmissionsPage.js.map +1 -1
- package/dist/pages/PublisherSubmitPage.js +184 -189
- package/dist/pages/PublisherSubmitPage.js.map +1 -1
- package/dist/providers/StoreProvider.js +3 -3
- package/package.json +2 -2
- package/dist/node_modules/@apollo/client/errors/CombinedGraphQLErrors.js.map +0 -1
- package/dist/node_modules/@apollo/client/errors/utils.js.map +0 -1
- package/dist/node_modules/@apollo/client/link/core/ApolloLink.js.map +0 -1
- package/dist/node_modules/@apollo/client/link/subscriptions/index.js.map +0 -1
- package/dist/node_modules/@apollo/client/link/utils/createOperation.js.map +0 -1
- package/dist/node_modules/@apollo/client/utilities/caching/sizes.js.map +0 -1
- package/dist/node_modules/@apollo/client/utilities/graphql/print.js.map +0 -1
- package/dist/node_modules/@apollo/client/utilities/internal/caches.js.map +0 -1
- package/dist/node_modules/@apollo/client/utilities/internal/checkDocument.js.map +0 -1
- package/dist/node_modules/@apollo/client/utilities/internal/getMainDefinition.js.map +0 -1
- package/dist/node_modules/@apollo/client/utilities/internal/getMemoryInternals.js +0 -9
- package/dist/node_modules/@apollo/client/utilities/internal/getMemoryInternals.js.map +0 -1
- package/dist/node_modules/@apollo/client/utilities/internal/getOperationDefinition.js.map +0 -1
- package/dist/node_modules/@apollo/client/utilities/internal/getOperationName.js +0 -8
- package/dist/node_modules/@apollo/client/utilities/internal/getOperationName.js.map +0 -1
- package/dist/node_modules/@apollo/client/utilities/internal/globals/global.js.map +0 -1
- package/dist/node_modules/@apollo/client/utilities/internal/globals/maybe.js +0 -10
- package/dist/node_modules/@apollo/client/utilities/internal/globals/maybe.js.map +0 -1
- package/dist/node_modules/@apollo/client/utilities/internal/isNonNullObject.js +0 -8
- package/dist/node_modules/@apollo/client/utilities/internal/isNonNullObject.js.map +0 -1
- package/dist/node_modules/@apollo/client/utilities/internal/makeUniqueId.js.map +0 -1
- package/dist/node_modules/@apollo/client/utilities/internal/memoize.js.map +0 -1
- package/dist/node_modules/@apollo/client/utilities/internal/stringifyForDisplay.js.map +0 -1
- package/dist/node_modules/@apollo/client/utilities/invariant/index.js.map +0 -1
- package/dist/node_modules/@apollo/client/version.js +0 -6
- package/dist/node_modules/@apollo/client/version.js.map +0 -1
- package/dist/node_modules/@wry/caches/lib/weak.js.map +0 -1
- package/dist/node_modules/@wry/trie/lib/index.js.map +0 -1
- package/dist/node_modules/graphql-ws/dist/client.js.map +0 -1
- package/dist/node_modules/graphql-ws/dist/common-CGW11Fyb.js.map +0 -1
- package/dist/node_modules/rxjs/dist/esm5/internal/NotificationFactories.js.map +0 -1
- package/dist/node_modules/rxjs/dist/esm5/internal/Observable.js.map +0 -1
- package/dist/node_modules/rxjs/dist/esm5/internal/Subscriber.js.map +0 -1
- package/dist/node_modules/rxjs/dist/esm5/internal/Subscription.js.map +0 -1
- package/dist/node_modules/rxjs/dist/esm5/internal/config.js.map +0 -1
- package/dist/node_modules/rxjs/dist/esm5/internal/observable/empty.js.map +0 -1
- package/dist/node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js.map +0 -1
- package/dist/node_modules/rxjs/dist/esm5/internal/symbol/observable.js.map +0 -1
- package/dist/node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js.map +0 -1
- package/dist/node_modules/rxjs/dist/esm5/internal/util/arrRemove.js +0 -11
- package/dist/node_modules/rxjs/dist/esm5/internal/util/arrRemove.js.map +0 -1
- package/dist/node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js.map +0 -1
- package/dist/node_modules/rxjs/dist/esm5/internal/util/errorContext.js.map +0 -1
- package/dist/node_modules/rxjs/dist/esm5/internal/util/identity.js +0 -8
- package/dist/node_modules/rxjs/dist/esm5/internal/util/identity.js.map +0 -1
- package/dist/node_modules/rxjs/dist/esm5/internal/util/isFunction.js +0 -8
- package/dist/node_modules/rxjs/dist/esm5/internal/util/isFunction.js.map +0 -1
- package/dist/node_modules/rxjs/dist/esm5/internal/util/noop.js +0 -6
- package/dist/node_modules/rxjs/dist/esm5/internal/util/noop.js.map +0 -1
- package/dist/node_modules/rxjs/dist/esm5/internal/util/pipe.js.map +0 -1
- package/dist/node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js.map +0 -1
- package/dist/node_modules/rxjs/node_modules/tslib/tslib.es6.js.map +0 -1
- /package/dist/node_modules/{@apollo → .bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo}/client/utilities/caching/sizes.js +0 -0
package/dist/StoreRoutes.js
CHANGED
|
@@ -12,12 +12,12 @@ function D({ title: e, featureFlag: t }) {
|
|
|
12
12
|
return /* @__PURE__ */ c("div", {
|
|
13
13
|
className: "flex min-h-[400px] items-center justify-center p-6",
|
|
14
14
|
children: /* @__PURE__ */ l("div", {
|
|
15
|
-
className: "max-w-md rounded-lg border border-border
|
|
15
|
+
className: "max-w-md rounded-lg border border-border bg-card p-6 text-center shadow-sm",
|
|
16
16
|
children: [/* @__PURE__ */ l("h2", {
|
|
17
|
-
className: "text-lg font-semibold text-
|
|
17
|
+
className: "text-lg font-semibold text-foreground",
|
|
18
18
|
children: [e, " is not enabled"]
|
|
19
19
|
}), /* @__PURE__ */ l("p", {
|
|
20
|
-
className: "mt-2 text-sm text-
|
|
20
|
+
className: "mt-2 text-sm text-muted-foreground",
|
|
21
21
|
children: [
|
|
22
22
|
"Ask an administrator to enable the ",
|
|
23
23
|
/* @__PURE__ */ c("span", {
|
package/dist/StoreRoutes.js.map
CHANGED
|
@@ -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-dom';\nimport { FeatureGate } from '@burdenoff/fe-libs/shared/feature-flags';\nimport { useStore } from './providers/StoreProvider';\nimport { useStorePermissions, STORE_PERMISSIONS } 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 PublisherSubmitPage = lazy(() =>\n import('./pages/PublisherSubmitPage').then((m) => ({ default: m.PublisherSubmitPage }))\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 PublisherDashboardPage = lazy(() =>\n import('./pages/PublisherDashboardPage').then((m) => ({ default: m.PublisherDashboardPage }))\n);\nconst PublisherSubmissionsPage = lazy(() =>\n import('./pages/PublisherSubmissionsPage').then((m) => ({ default: m.PublisherSubmissionsPage }))\n);\nconst PublisherRevenuePage = lazy(() =>\n import('./pages/PublisherRevenuePage').then((m) => ({ default: m.PublisherRevenuePage }))\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 ProductReviewsPage = lazy(() =>\n import('./pages/ProductReviewsPage').then((m) => ({ default: m.ProductReviewsPage }))\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, hasPermission, 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 {/* Publisher Portal */}\n <Route\n path=\"publisher\"\n element={\n <StoreRouteGate\n title=\"Publisher portal\"\n featureFlag=\"store.publisher-portal\"\n allowed={permissions.canPublish}\n isLoading={isLoading}\n >\n <Suspense fallback={<PageLoadingFallback />}>\n <PublisherDashboardPage />\n </Suspense>\n </StoreRouteGate>\n }\n />\n <Route\n path=\"publisher/submit\"\n element={\n <StoreRouteGate\n title=\"Publisher portal\"\n featureFlag=\"store.publisher-portal\"\n allowed={permissions.canPublish}\n isLoading={isLoading}\n >\n <Suspense fallback={<PageLoadingFallback />}>\n <PublisherSubmitPage />\n </Suspense>\n </StoreRouteGate>\n }\n />\n <Route\n path=\"publisher/submissions\"\n element={\n <StoreRouteGate\n title=\"Publisher portal\"\n featureFlag=\"store.publisher-portal\"\n allowed={permissions.canPublish}\n isLoading={isLoading}\n >\n <Suspense fallback={<PageLoadingFallback />}>\n <PublisherSubmissionsPage />\n </Suspense>\n </StoreRouteGate>\n }\n />\n <Route\n path=\"publisher/revenue\"\n element={\n <StoreRouteGate\n title=\"Publisher revenue\"\n featureFlag=\"store.publisher-portal.revenue\"\n allowed={hasPermission(STORE_PERMISSIONS.EARNINGS_READ)}\n isLoading={isLoading}\n >\n <Suspense fallback={<PageLoadingFallback />}>\n <PublisherRevenuePage />\n </Suspense>\n </StoreRouteGate>\n }\n />\n <Route\n path=\"publisher/product/:productId/reviews\"\n element={\n <StoreRouteGate\n title=\"Publisher portal\"\n featureFlag=\"store.publisher-portal\"\n allowed={permissions.canPublish}\n isLoading={isLoading}\n >\n <Suspense fallback={<PageLoadingFallback />}>\n <ProductReviewsPage />\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-dom';\nimport { FeatureGate } from '@burdenoff/fe-libs/shared/feature-flags';\nimport { useStore } from './providers/StoreProvider';\nimport { useStorePermissions, STORE_PERMISSIONS } 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 PublisherSubmitPage = lazy(() =>\n import('./pages/PublisherSubmitPage').then((m) => ({ default: m.PublisherSubmitPage }))\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 PublisherDashboardPage = lazy(() =>\n import('./pages/PublisherDashboardPage').then((m) => ({ default: m.PublisherDashboardPage }))\n);\nconst PublisherSubmissionsPage = lazy(() =>\n import('./pages/PublisherSubmissionsPage').then((m) => ({ default: m.PublisherSubmissionsPage }))\n);\nconst PublisherRevenuePage = lazy(() =>\n import('./pages/PublisherRevenuePage').then((m) => ({ default: m.PublisherRevenuePage }))\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 ProductReviewsPage = lazy(() =>\n import('./pages/ProductReviewsPage').then((m) => ({ default: m.ProductReviewsPage }))\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 bg-card p-6 text-center shadow-sm\">\n <h2 className=\"text-lg font-semibold text-foreground\">{title} is not enabled</h2>\n <p className=\"mt-2 text-sm text-muted-foreground\">\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, hasPermission, 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 {/* Publisher Portal */}\n <Route\n path=\"publisher\"\n element={\n <StoreRouteGate\n title=\"Publisher portal\"\n featureFlag=\"store.publisher-portal\"\n allowed={permissions.canPublish}\n isLoading={isLoading}\n >\n <Suspense fallback={<PageLoadingFallback />}>\n <PublisherDashboardPage />\n </Suspense>\n </StoreRouteGate>\n }\n />\n <Route\n path=\"publisher/submit\"\n element={\n <StoreRouteGate\n title=\"Publisher portal\"\n featureFlag=\"store.publisher-portal\"\n allowed={permissions.canPublish}\n isLoading={isLoading}\n >\n <Suspense fallback={<PageLoadingFallback />}>\n <PublisherSubmitPage />\n </Suspense>\n </StoreRouteGate>\n }\n />\n <Route\n path=\"publisher/submissions\"\n element={\n <StoreRouteGate\n title=\"Publisher portal\"\n featureFlag=\"store.publisher-portal\"\n allowed={permissions.canPublish}\n isLoading={isLoading}\n >\n <Suspense fallback={<PageLoadingFallback />}>\n <PublisherSubmissionsPage />\n </Suspense>\n </StoreRouteGate>\n }\n />\n <Route\n path=\"publisher/revenue\"\n element={\n <StoreRouteGate\n title=\"Publisher revenue\"\n featureFlag=\"store.publisher-portal.revenue\"\n allowed={hasPermission(STORE_PERMISSIONS.EARNINGS_READ)}\n isLoading={isLoading}\n >\n <Suspense fallback={<PageLoadingFallback />}>\n <PublisherRevenuePage />\n </Suspense>\n </StoreRouteGate>\n }\n />\n <Route\n path=\"publisher/product/:productId/reviews\"\n element={\n <StoreRouteGate\n title=\"Publisher portal\"\n featureFlag=\"store.publisher-portal\"\n allowed={permissions.canPublish}\n isLoading={isLoading}\n >\n <Suspense fallback={<PageLoadingFallback />}>\n <ProductReviewsPage />\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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"}
|
|
@@ -4,14 +4,14 @@ import { jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
|
4
4
|
var r = () => {
|
|
5
5
|
let { t: r } = e();
|
|
6
6
|
return /* @__PURE__ */ t("div", {
|
|
7
|
-
className: "flex items-center justify-center min-h-[400px] animate-in fade-in duration-
|
|
7
|
+
className: "flex items-center justify-center min-h-[400px] animate-in fade-in duration-300",
|
|
8
8
|
children: /* @__PURE__ */ n("div", {
|
|
9
9
|
className: "text-center",
|
|
10
10
|
children: [/* @__PURE__ */ t("h1", {
|
|
11
|
-
className: "text-2xl font-semibold text-
|
|
11
|
+
className: "text-2xl font-semibold text-foreground mb-2",
|
|
12
12
|
children: r("common.accessDenied", { defaultValue: "Access Denied" })
|
|
13
13
|
}), /* @__PURE__ */ t("p", {
|
|
14
|
-
className: "text-
|
|
14
|
+
className: "text-muted-foreground",
|
|
15
15
|
children: r("common.accessDeniedDescription", { defaultValue: "You do not have permission to access this section." })
|
|
16
16
|
})]
|
|
17
17
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessDenied.js","names":[],"sources":["../../src/components/AccessDenied.tsx"],"sourcesContent":["import type { FC } from 'react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\n\n/**\n * Access denied page shown when user lacks permission for a route\n */\nexport const AccessDenied: FC = () => {\n const { t } = useI18n();\n return (\n <div className=\"flex items-center justify-center min-h-[400px] animate-in fade-in duration-
|
|
1
|
+
{"version":3,"file":"AccessDenied.js","names":[],"sources":["../../src/components/AccessDenied.tsx"],"sourcesContent":["import type { FC } from 'react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\n\n/**\n * Access denied page shown when user lacks permission for a route\n */\nexport const AccessDenied: FC = () => {\n const { t } = useI18n();\n return (\n <div className=\"flex items-center justify-center min-h-[400px] animate-in fade-in duration-300\">\n <div className=\"text-center\">\n <h1 className=\"text-2xl font-semibold text-foreground mb-2\">\n {t('common.accessDenied', { defaultValue: 'Access Denied' })}\n </h1>\n <p className=\"text-muted-foreground\">\n {t('common.accessDeniedDescription', {\n defaultValue: 'You do not have permission to access this section.',\n })}\n </p>\n </div>\n </div>\n );\n};\n"],"mappings":";;;AAMA,IAAa,UAAyB;CACpC,IAAM,EAAE,SAAM,GAAS;AACvB,QACE,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,MAAD;IAAI,WAAU;cACX,EAAE,uBAAuB,EAAE,cAAc,iBAAiB,CAAC;IACzD,CAAA,EACL,kBAAC,KAAD;IAAG,WAAU;cACV,EAAE,kCAAkC,EACnC,cAAc,sDACf,CAAC;IACA,CAAA,CACA;;EACF,CAAA"}
|
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
import { useStore as e } from "../providers/StoreProvider.js";
|
|
2
2
|
import { useCallback as t, useEffect as n, useReducer as r, useState as i } from "react";
|
|
3
|
-
import { AlertCircle as a, Building2 as o, CheckCircle as s, Info as c, Loader2 as l } from "lucide-react";
|
|
4
|
-
import { Fragment as
|
|
5
|
-
import { graphqlFetch as
|
|
6
|
-
import { Dialog as m, DialogContent as h, DialogDescription as g, DialogFooter as _, DialogHeader as v, DialogTitle as y } from "@burdenoff/fe-libs/ui";
|
|
3
|
+
import { AlertCircle as a, Building2 as o, CheckCircle as s, Info as c, Loader2 as l, X as u } from "lucide-react";
|
|
4
|
+
import { Fragment as d, jsx as f, jsxs as p } from "react/jsx-runtime";
|
|
5
|
+
import { graphqlFetch as m } from "@burdenoff/fe-libs/shared/graphql";
|
|
7
6
|
//#region src/components/InstallAppModal.tsx
|
|
8
|
-
var
|
|
7
|
+
var h = "query MyWorkspaces { myWorkspaces { items { id name slug type status organizationId } total } }", g = "mutation InstallWorkspaceApps($workspaceIds: [ID!]!, $input: InstallWorkspaceAppInput!) { installWorkspaceApps(workspaceIds: $workspaceIds, input: $input) { successCount failedCount results { success workspaceId error } } }", _ = "mutation RecordAppInstallation($input: RecordAppInstallationInput!) { recordAppInstallation(input: $input) { id status workspaceId version } }", v = "mutation InstallPurchasedApp($orderId: ID, $productId: String!, $workspaceId: String!) { installPurchasedApp(orderId: $orderId, productId: $productId, workspaceId: $workspaceId) { success alreadyInstalled installation { id productId workspaceId status version } error message } }", y = "mutation CreateProductEntitlement($input: CreateProductEntitlementInput!) { createProductEntitlement(input: $input) { id status productId workspaceId } }", b = new Set([
|
|
9
8
|
"VIBEMODULE",
|
|
10
9
|
"NODE",
|
|
11
10
|
"CONSOLE",
|
|
12
11
|
"DASHBOARD",
|
|
13
12
|
"PARSER",
|
|
14
13
|
"DATASINK"
|
|
15
|
-
]),
|
|
14
|
+
]), x = {
|
|
16
15
|
ALREADY_INSTALLED: "This app is already installed in the selected workspace.",
|
|
17
16
|
QUOTA_EXCEEDED: "Installation limit reached. Please upgrade your plan or contact support.",
|
|
18
17
|
PERMISSION_DENIED: "You do not have permission to install apps in this workspace.",
|
|
@@ -21,19 +20,19 @@ var b = "query MyWorkspaces { myWorkspaces { items { id name slug type status or
|
|
|
21
20
|
ENTITLEMENT_EXPIRED: "Your license for this app has expired.",
|
|
22
21
|
UNSUPPORTED_TYPE: "This product type cannot be installed in the selected workspace."
|
|
23
22
|
};
|
|
24
|
-
function
|
|
25
|
-
for (let [t, n] of Object.entries(
|
|
23
|
+
function S(e) {
|
|
24
|
+
for (let [t, n] of Object.entries(x)) if (e.toUpperCase().includes(t)) return n;
|
|
26
25
|
return "Installation failed. Please try again or contact support.";
|
|
27
26
|
}
|
|
28
|
-
var
|
|
27
|
+
var C = {
|
|
29
28
|
selectedWorkspace: null,
|
|
30
29
|
installing: !1,
|
|
31
30
|
installError: null,
|
|
32
31
|
installInfo: null
|
|
33
32
|
};
|
|
34
|
-
function
|
|
33
|
+
function w(e, t) {
|
|
35
34
|
switch (t.type) {
|
|
36
|
-
case "reset": return
|
|
35
|
+
case "reset": return C;
|
|
37
36
|
case "selectWorkspace": return {
|
|
38
37
|
...e,
|
|
39
38
|
selectedWorkspace: t.workspaceId
|
|
@@ -59,14 +58,14 @@ function k(e, t) {
|
|
|
59
58
|
default: return e;
|
|
60
59
|
}
|
|
61
60
|
}
|
|
62
|
-
function
|
|
61
|
+
function T(r) {
|
|
63
62
|
let { authToken: a } = e(), [o, s] = i([]), [c, l] = i(!1), [u, d] = i(null), f = t(async () => {
|
|
64
63
|
if (!r) {
|
|
65
64
|
l(!0), d(null);
|
|
66
65
|
try {
|
|
67
|
-
let e = await
|
|
66
|
+
let e = await m({
|
|
68
67
|
gateway: "global",
|
|
69
|
-
query:
|
|
68
|
+
query: h,
|
|
70
69
|
authToken: a || void 0
|
|
71
70
|
});
|
|
72
71
|
if (e.errors?.length) throw Error(e.errors[0]?.message ?? "GraphQL error");
|
|
@@ -87,19 +86,19 @@ function A(r) {
|
|
|
87
86
|
refetch: f
|
|
88
87
|
};
|
|
89
88
|
}
|
|
90
|
-
var
|
|
91
|
-
let { authToken:
|
|
92
|
-
if (!
|
|
93
|
-
let e =
|
|
89
|
+
var E = ({ isOpen: t, onClose: n, app: i, orderId: h, purchaseState: x = "free", onInstallSuccess: E, onInstallError: D }) => {
|
|
90
|
+
let { authToken: O, user: k } = e(), [A, j] = r(w, C), { selectedWorkspace: M, installing: N, installError: P, installInfo: F } = A, { workspaces: I, loading: L, error: R } = T(!t), z = I.filter((e) => e.status === "ACTIVE"), B = async () => {
|
|
91
|
+
if (!M) return;
|
|
92
|
+
let e = z.find((e) => e.id === M);
|
|
94
93
|
if (!e) return;
|
|
95
|
-
let t =
|
|
96
|
-
|
|
94
|
+
let t = k?.id;
|
|
95
|
+
j({ type: "startInstall" });
|
|
97
96
|
try {
|
|
98
|
-
if (!
|
|
97
|
+
if (!h && x !== "purchased") {
|
|
99
98
|
if (!t) throw Error("Unable to identify the current user for license creation");
|
|
100
|
-
await
|
|
99
|
+
await m({
|
|
101
100
|
gateway: "global",
|
|
102
|
-
query:
|
|
101
|
+
query: y,
|
|
103
102
|
variables: { input: {
|
|
104
103
|
productId: i.id,
|
|
105
104
|
purchasedBy: t,
|
|
@@ -109,50 +108,50 @@ var j = ({ isOpen: t, onClose: n, app: i, orderId: b, purchaseState: E = "free",
|
|
|
109
108
|
productType: i.type
|
|
110
109
|
}
|
|
111
110
|
} },
|
|
112
|
-
authToken:
|
|
111
|
+
authToken: O || void 0
|
|
113
112
|
});
|
|
114
113
|
}
|
|
115
|
-
let r = await
|
|
114
|
+
let r = await m({
|
|
116
115
|
gateway: "global",
|
|
117
|
-
query:
|
|
116
|
+
query: v,
|
|
118
117
|
variables: {
|
|
119
|
-
orderId:
|
|
118
|
+
orderId: h ?? null,
|
|
120
119
|
productId: i.id,
|
|
121
120
|
workspaceId: e.id
|
|
122
121
|
},
|
|
123
|
-
authToken:
|
|
122
|
+
authToken: O || void 0
|
|
124
123
|
});
|
|
125
124
|
if (r.errors?.length) throw Error(r.errors[0]?.message ?? "Installation failed");
|
|
126
125
|
let a = r.data?.installPurchasedApp;
|
|
127
|
-
if (a?.success) a.alreadyInstalled ?
|
|
126
|
+
if (a?.success) a.alreadyInstalled ? j({
|
|
128
127
|
type: "setInfo",
|
|
129
128
|
info: a.message || "Already installed on this workspace"
|
|
130
|
-
}) : (
|
|
129
|
+
}) : (E?.(e.id, e.name), n());
|
|
131
130
|
else {
|
|
132
131
|
let e = a?.error || "Installation failed";
|
|
133
|
-
|
|
132
|
+
j({
|
|
134
133
|
type: "setError",
|
|
135
|
-
error:
|
|
136
|
-
}),
|
|
134
|
+
error: S(e)
|
|
135
|
+
}), D?.(Error(e));
|
|
137
136
|
}
|
|
138
137
|
} catch (e) {
|
|
139
138
|
let t = e instanceof Error ? e.message : "Installation failed";
|
|
140
|
-
|
|
139
|
+
j({
|
|
141
140
|
type: "setError",
|
|
142
|
-
error:
|
|
143
|
-
}),
|
|
141
|
+
error: S(t)
|
|
142
|
+
}), D?.(Error(t));
|
|
144
143
|
} finally {
|
|
145
|
-
|
|
144
|
+
j({ type: "finishInstall" });
|
|
146
145
|
}
|
|
147
|
-
},
|
|
148
|
-
if (!
|
|
149
|
-
let e =
|
|
146
|
+
}, V = async () => {
|
|
147
|
+
if (!M) return;
|
|
148
|
+
let e = z.find((e) => e.id === M);
|
|
150
149
|
if (e) {
|
|
151
|
-
|
|
150
|
+
j({ type: "startInstall" });
|
|
152
151
|
try {
|
|
153
|
-
let t = await
|
|
152
|
+
let t = await m({
|
|
154
153
|
gateway: "workspace",
|
|
155
|
-
query:
|
|
154
|
+
query: g,
|
|
156
155
|
variables: {
|
|
157
156
|
workspaceIds: [e.id],
|
|
158
157
|
input: {
|
|
@@ -166,7 +165,7 @@ var j = ({ isOpen: t, onClose: n, app: i, orderId: b, purchaseState: E = "free",
|
|
|
166
165
|
}
|
|
167
166
|
}
|
|
168
167
|
},
|
|
169
|
-
authToken:
|
|
168
|
+
authToken: O || void 0,
|
|
170
169
|
workspaceId: e.id,
|
|
171
170
|
workspaceToken: !0
|
|
172
171
|
});
|
|
@@ -174,9 +173,9 @@ var j = ({ isOpen: t, onClose: n, app: i, orderId: b, purchaseState: E = "free",
|
|
|
174
173
|
let r = t.data?.installWorkspaceApps;
|
|
175
174
|
if (r?.successCount && r.successCount > 0) {
|
|
176
175
|
try {
|
|
177
|
-
await
|
|
176
|
+
await m({
|
|
178
177
|
gateway: "global",
|
|
179
|
-
query:
|
|
178
|
+
query: _,
|
|
180
179
|
variables: { input: {
|
|
181
180
|
productId: i.id,
|
|
182
181
|
workspaceId: e.id,
|
|
@@ -191,150 +190,164 @@ var j = ({ isOpen: t, onClose: n, app: i, orderId: b, purchaseState: E = "free",
|
|
|
191
190
|
type: i.type
|
|
192
191
|
}
|
|
193
192
|
} },
|
|
194
|
-
authToken:
|
|
193
|
+
authToken: O || void 0
|
|
195
194
|
});
|
|
196
195
|
} catch {}
|
|
197
|
-
|
|
196
|
+
E?.(e.id, e.name), n();
|
|
198
197
|
} else {
|
|
199
198
|
let e = r?.results?.[0]?.error || "Installation failed";
|
|
200
|
-
|
|
199
|
+
j({
|
|
201
200
|
type: "setError",
|
|
202
|
-
error:
|
|
203
|
-
}),
|
|
201
|
+
error: S(e)
|
|
202
|
+
}), D?.(Error(e));
|
|
204
203
|
}
|
|
205
204
|
} catch (e) {
|
|
206
205
|
let t = e instanceof Error ? e.message : "Installation failed";
|
|
207
|
-
|
|
206
|
+
j({
|
|
208
207
|
type: "setError",
|
|
209
|
-
error:
|
|
210
|
-
}),
|
|
208
|
+
error: S(t)
|
|
209
|
+
}), D?.(Error(t));
|
|
211
210
|
} finally {
|
|
212
|
-
|
|
211
|
+
j({ type: "finishInstall" });
|
|
213
212
|
}
|
|
214
213
|
}
|
|
215
214
|
};
|
|
216
|
-
return /* @__PURE__ */
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
215
|
+
return t ? /* @__PURE__ */ p("div", {
|
|
216
|
+
className: "fixed inset-0 z-50 flex items-center justify-center",
|
|
217
|
+
children: [/* @__PURE__ */ f("button", {
|
|
218
|
+
type: "button",
|
|
219
|
+
"aria-label": "Close modal",
|
|
220
|
+
className: "absolute inset-0 bg-bg-overlay/50 backdrop-blur-sm",
|
|
221
|
+
onClick: n
|
|
222
|
+
}), /* @__PURE__ */ p("dialog", {
|
|
223
|
+
open: !0,
|
|
224
|
+
"aria-modal": "true",
|
|
225
|
+
"aria-labelledby": "install-app-modal-title",
|
|
226
|
+
className: "relative z-10 mx-4 w-full max-w-lg rounded-2xl border border-border-default bg-bg-surface shadow-2xl",
|
|
221
227
|
children: [
|
|
222
|
-
/* @__PURE__ */
|
|
223
|
-
className: "flex
|
|
224
|
-
children: /* @__PURE__ */
|
|
228
|
+
/* @__PURE__ */ p("div", {
|
|
229
|
+
className: "flex items-center justify-between border-b border-border-default px-6 py-4",
|
|
230
|
+
children: [/* @__PURE__ */ p("div", {
|
|
225
231
|
className: "flex items-center gap-3",
|
|
226
|
-
children: [i.icon ? /* @__PURE__ */
|
|
232
|
+
children: [i.icon ? /* @__PURE__ */ f("img", {
|
|
227
233
|
src: i.icon,
|
|
228
234
|
alt: i.name,
|
|
229
235
|
className: "size-10 rounded-lg object-cover"
|
|
230
|
-
}) : /* @__PURE__ */
|
|
236
|
+
}) : /* @__PURE__ */ f("div", {
|
|
231
237
|
className: "flex size-10 items-center justify-center rounded-lg bg-bg-sunken text-lg font-bold text-text-muted",
|
|
232
238
|
children: i.name.charAt(0)
|
|
233
|
-
}), /* @__PURE__ */
|
|
239
|
+
}), /* @__PURE__ */ p("div", { children: [/* @__PURE__ */ f("h2", {
|
|
240
|
+
id: "install-app-modal-title",
|
|
234
241
|
className: "text-lg font-semibold text-text-primary",
|
|
235
242
|
children: "Install App"
|
|
236
|
-
}), /* @__PURE__ */
|
|
243
|
+
}), /* @__PURE__ */ f("p", {
|
|
237
244
|
className: "text-sm text-text-muted",
|
|
238
245
|
children: i.name
|
|
239
246
|
})] })]
|
|
240
|
-
})
|
|
247
|
+
}), /* @__PURE__ */ f("button", {
|
|
248
|
+
type: "button",
|
|
249
|
+
onClick: n,
|
|
250
|
+
"aria-label": "Close install dialog",
|
|
251
|
+
className: "cursor-pointer rounded-lg p-2 text-text-muted transition-colors hover:bg-bg-sunken hover:text-text-primary",
|
|
252
|
+
children: /* @__PURE__ */ f(u, { className: "size-5" })
|
|
253
|
+
})]
|
|
241
254
|
}),
|
|
242
|
-
/* @__PURE__ */
|
|
255
|
+
/* @__PURE__ */ p("div", {
|
|
243
256
|
className: "px-6 py-4",
|
|
244
|
-
children: [/* @__PURE__ */
|
|
257
|
+
children: [/* @__PURE__ */ f("p", {
|
|
245
258
|
className: "mb-4 text-text-secondary",
|
|
246
259
|
children: "Select the workspace where you want to install this app:"
|
|
247
|
-
}), /* @__PURE__ */
|
|
248
|
-
className: "max-h-72 overflow-y-auto rounded-lg border border-border-
|
|
249
|
-
children:
|
|
260
|
+
}), /* @__PURE__ */ f("div", {
|
|
261
|
+
className: "max-h-72 overflow-y-auto rounded-lg border border-border-default",
|
|
262
|
+
children: L ? /* @__PURE__ */ f("div", {
|
|
250
263
|
className: "flex items-center justify-center py-12",
|
|
251
|
-
children: /* @__PURE__ */
|
|
252
|
-
}) :
|
|
264
|
+
children: /* @__PURE__ */ f(l, { className: "size-8 animate-spin text-text-muted" })
|
|
265
|
+
}) : R ? /* @__PURE__ */ p("div", {
|
|
253
266
|
className: "flex flex-col items-center justify-center py-12 text-center",
|
|
254
267
|
children: [
|
|
255
|
-
/* @__PURE__ */
|
|
256
|
-
/* @__PURE__ */
|
|
268
|
+
/* @__PURE__ */ f(a, { className: "mb-2 size-8 text-status-error-text" }),
|
|
269
|
+
/* @__PURE__ */ f("p", {
|
|
257
270
|
className: "text-sm text-status-error-text",
|
|
258
271
|
children: "Failed to load workspaces"
|
|
259
272
|
}),
|
|
260
|
-
/* @__PURE__ */
|
|
273
|
+
/* @__PURE__ */ f("p", {
|
|
261
274
|
className: "text-xs text-text-muted mt-1",
|
|
262
|
-
children:
|
|
275
|
+
children: R.message
|
|
263
276
|
})
|
|
264
277
|
]
|
|
265
|
-
}) :
|
|
278
|
+
}) : z.length === 0 ? /* @__PURE__ */ p("div", {
|
|
266
279
|
className: "flex flex-col items-center justify-center py-12 text-center",
|
|
267
|
-
children: [/* @__PURE__ */
|
|
280
|
+
children: [/* @__PURE__ */ f(o, { className: "mb-2 size-8 text-text-muted" }), /* @__PURE__ */ f("p", {
|
|
268
281
|
className: "text-sm text-text-muted",
|
|
269
282
|
children: "No workspaces available"
|
|
270
283
|
})]
|
|
271
|
-
}) : /* @__PURE__ */
|
|
284
|
+
}) : /* @__PURE__ */ f("div", {
|
|
272
285
|
className: "divide-y divide-border-default",
|
|
273
|
-
children:
|
|
286
|
+
children: z.map((e) => /* @__PURE__ */ p("button", {
|
|
274
287
|
type: "button",
|
|
275
|
-
onClick: () =>
|
|
288
|
+
onClick: () => j({
|
|
276
289
|
type: "selectWorkspace",
|
|
277
290
|
workspaceId: e.id
|
|
278
291
|
}),
|
|
279
|
-
className: `w-full cursor-pointer flex items-center gap-3 px-4 py-3 text-left transition-colors ${
|
|
292
|
+
className: `w-full cursor-pointer flex items-center gap-3 px-4 py-3 text-left transition-colors ${M === e.id ? "bg-action-primary-bg/10" : "transition-colors hover:bg-bg-sunken"}`,
|
|
280
293
|
children: [
|
|
281
|
-
/* @__PURE__ */
|
|
294
|
+
/* @__PURE__ */ f("div", {
|
|
282
295
|
className: "flex size-10 items-center justify-center rounded-lg bg-action-primary-bg/10 text-text-link",
|
|
283
|
-
children: /* @__PURE__ */
|
|
296
|
+
children: /* @__PURE__ */ f(o, { className: "size-5" })
|
|
284
297
|
}),
|
|
285
|
-
/* @__PURE__ */
|
|
298
|
+
/* @__PURE__ */ p("div", {
|
|
286
299
|
className: "flex-1 min-w-0",
|
|
287
|
-
children: [/* @__PURE__ */
|
|
300
|
+
children: [/* @__PURE__ */ f("p", {
|
|
288
301
|
className: "font-medium text-text-primary truncate",
|
|
289
302
|
children: e.name
|
|
290
|
-
}), e.slug ? /* @__PURE__ */
|
|
303
|
+
}), e.slug ? /* @__PURE__ */ p("p", {
|
|
291
304
|
className: "text-xs text-text-muted truncate",
|
|
292
305
|
children: ["/", e.slug]
|
|
293
306
|
}) : null]
|
|
294
307
|
}),
|
|
295
|
-
|
|
308
|
+
M === e.id && /* @__PURE__ */ f(s, { className: "size-5 flex-shrink-0 text-action-primary-bg" })
|
|
296
309
|
]
|
|
297
310
|
}, e.id))
|
|
298
311
|
})
|
|
299
312
|
})]
|
|
300
313
|
}),
|
|
301
|
-
/* @__PURE__ */
|
|
302
|
-
className: "
|
|
314
|
+
/* @__PURE__ */ p("div", {
|
|
315
|
+
className: "border-t border-border-default px-6 py-4",
|
|
303
316
|
children: [
|
|
304
|
-
|
|
317
|
+
F && /* @__PURE__ */ p("div", {
|
|
305
318
|
className: "mb-3 flex items-center gap-2 rounded-lg bg-status-info-bg-subtle px-3 py-2 text-sm text-status-info-text",
|
|
306
|
-
children: [/* @__PURE__ */
|
|
319
|
+
children: [/* @__PURE__ */ f(c, { className: "size-4 flex-shrink-0" }), /* @__PURE__ */ f("span", { children: F })]
|
|
307
320
|
}),
|
|
308
|
-
|
|
321
|
+
P && /* @__PURE__ */ p("div", {
|
|
309
322
|
className: "mb-3 flex items-center gap-2 rounded-lg bg-status-error-bg-subtle/10 px-3 py-2 text-sm text-status-error-text",
|
|
310
|
-
children: [/* @__PURE__ */
|
|
323
|
+
children: [/* @__PURE__ */ f(a, { className: "size-4 flex-shrink-0" }), /* @__PURE__ */ f("span", { children: P })]
|
|
311
324
|
}),
|
|
312
|
-
/* @__PURE__ */
|
|
325
|
+
/* @__PURE__ */ p("div", {
|
|
313
326
|
className: "flex items-center justify-end gap-3",
|
|
314
|
-
children: [/* @__PURE__ */
|
|
327
|
+
children: [/* @__PURE__ */ f("button", {
|
|
315
328
|
type: "button",
|
|
316
329
|
onClick: n,
|
|
317
|
-
disabled:
|
|
330
|
+
disabled: N,
|
|
318
331
|
className: "cursor-pointer rounded-lg border border-border-default px-4 py-2 text-sm font-medium text-text-primary transition-colors hover:bg-bg-sunken disabled:opacity-50",
|
|
319
332
|
children: "Cancel"
|
|
320
|
-
}), /* @__PURE__ */
|
|
333
|
+
}), /* @__PURE__ */ f("button", {
|
|
321
334
|
type: "button",
|
|
322
335
|
onClick: async () => {
|
|
323
336
|
let e = i.type?.toUpperCase() ?? "";
|
|
324
|
-
|
|
337
|
+
x === "purchased" || h || b.has(e) ? await B() : await V();
|
|
325
338
|
},
|
|
326
|
-
disabled: !
|
|
339
|
+
disabled: !M || N,
|
|
327
340
|
className: "cursor-pointer rounded-lg bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text transition-opacity hover:opacity-90 disabled:opacity-50 disabled:cursor-not-allowed inline-flex items-center gap-2",
|
|
328
|
-
children:
|
|
341
|
+
children: N ? /* @__PURE__ */ p(d, { children: [/* @__PURE__ */ f(l, { className: "size-4 animate-spin" }), "Installing…"] }) : "Install App"
|
|
329
342
|
})]
|
|
330
343
|
})
|
|
331
344
|
]
|
|
332
345
|
})
|
|
333
346
|
]
|
|
334
|
-
})
|
|
335
|
-
});
|
|
347
|
+
})]
|
|
348
|
+
}) : null;
|
|
336
349
|
};
|
|
337
350
|
//#endregion
|
|
338
|
-
export {
|
|
351
|
+
export { E as InstallAppModal };
|
|
339
352
|
|
|
340
353
|
//# sourceMappingURL=InstallAppModal.js.map
|