@burdenoff/microfe-store 2026.625.3 → 2026.625.5

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 (184) hide show
  1. package/dist/StoreRoutes.js +3 -3
  2. package/dist/StoreRoutes.js.map +1 -1
  3. package/dist/components/AccessDenied.js +3 -3
  4. package/dist/components/AccessDenied.js.map +1 -1
  5. package/dist/components/InstallAppModal.js +255 -175
  6. package/dist/components/InstallAppModal.js.map +1 -1
  7. package/dist/components/cart/CartDrawer.js +10 -10
  8. package/dist/components/cart/CartDrawer.js.map +1 -1
  9. package/dist/node_modules/{@apollo → .bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo}/client/errors/CombinedGraphQLErrors.js +1 -1
  10. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/errors/CombinedGraphQLErrors.js.map +1 -0
  11. package/dist/node_modules/{@apollo → .bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo}/client/errors/utils.js +1 -1
  12. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/errors/utils.js.map +1 -0
  13. package/dist/node_modules/{@apollo → .bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo}/client/link/core/ApolloLink.js +2 -2
  14. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/link/core/ApolloLink.js.map +1 -0
  15. package/dist/node_modules/{@apollo → .bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo}/client/link/subscriptions/index.js +2 -2
  16. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/link/subscriptions/index.js.map +1 -0
  17. package/dist/node_modules/{@apollo → .bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo}/client/link/utils/createOperation.js +1 -1
  18. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/link/utils/createOperation.js.map +1 -0
  19. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/caching/sizes.js.map +1 -0
  20. package/dist/node_modules/{@apollo → .bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo}/client/utilities/graphql/print.js +1 -1
  21. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/graphql/print.js.map +1 -0
  22. package/dist/node_modules/{@apollo → .bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo}/client/utilities/internal/caches.js +2 -2
  23. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/caches.js.map +1 -0
  24. package/dist/node_modules/{@apollo → .bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo}/client/utilities/internal/checkDocument.js +1 -1
  25. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/checkDocument.js.map +1 -0
  26. package/dist/node_modules/{@apollo → .bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo}/client/utilities/internal/getMainDefinition.js +1 -1
  27. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/getMainDefinition.js.map +1 -0
  28. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/getMemoryInternals.js +9 -0
  29. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/getMemoryInternals.js.map +1 -0
  30. package/dist/node_modules/{@apollo → .bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo}/client/utilities/internal/getOperationDefinition.js +1 -1
  31. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/getOperationDefinition.js.map +1 -0
  32. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/getOperationName.js +8 -0
  33. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/getOperationName.js.map +1 -0
  34. package/dist/node_modules/{@apollo → .bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo}/client/utilities/internal/globals/global.js +1 -1
  35. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/globals/global.js.map +1 -0
  36. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/globals/maybe.js +10 -0
  37. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/globals/maybe.js.map +1 -0
  38. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/isNonNullObject.js +8 -0
  39. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/isNonNullObject.js.map +1 -0
  40. package/dist/node_modules/{@apollo → .bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo}/client/utilities/internal/makeUniqueId.js +1 -1
  41. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/makeUniqueId.js.map +1 -0
  42. package/dist/node_modules/{@apollo → .bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo}/client/utilities/internal/memoize.js +2 -2
  43. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/memoize.js.map +1 -0
  44. package/dist/node_modules/{@apollo → .bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo}/client/utilities/internal/stringifyForDisplay.js +1 -1
  45. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/stringifyForDisplay.js.map +1 -0
  46. package/dist/node_modules/{@apollo → .bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo}/client/utilities/invariant/index.js +1 -1
  47. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/invariant/index.js.map +1 -0
  48. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/version.js +6 -0
  49. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/version.js.map +1 -0
  50. package/dist/node_modules/{@wry → .bun/@wry_caches@1.0.1/node_modules/@wry}/caches/lib/weak.js +1 -1
  51. package/dist/node_modules/.bun/@wry_caches@1.0.1/node_modules/@wry/caches/lib/weak.js.map +1 -0
  52. package/dist/node_modules/{@wry → .bun/@wry_trie@0.5.0/node_modules/@wry}/trie/lib/index.js +1 -1
  53. package/dist/node_modules/.bun/@wry_trie@0.5.0/node_modules/@wry/trie/lib/index.js.map +1 -0
  54. package/dist/node_modules/{graphql-ws → .bun/graphql-ws@6.0.8_796ebe57c2b0ffe0/node_modules/graphql-ws}/dist/client.js +1 -1
  55. package/dist/node_modules/.bun/graphql-ws@6.0.8_796ebe57c2b0ffe0/node_modules/graphql-ws/dist/client.js.map +1 -0
  56. package/dist/node_modules/{graphql-ws → .bun/graphql-ws@6.0.8_796ebe57c2b0ffe0/node_modules/graphql-ws}/dist/common-CGW11Fyb.js +1 -1
  57. package/dist/node_modules/.bun/graphql-ws@6.0.8_796ebe57c2b0ffe0/node_modules/graphql-ws/dist/common-CGW11Fyb.js.map +1 -0
  58. package/dist/node_modules/{rxjs → .bun/rxjs@7.8.2/node_modules/rxjs}/dist/esm5/internal/NotificationFactories.js +1 -1
  59. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/NotificationFactories.js.map +1 -0
  60. package/dist/node_modules/{rxjs → .bun/rxjs@7.8.2/node_modules/rxjs}/dist/esm5/internal/Observable.js +1 -1
  61. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Observable.js.map +1 -0
  62. package/dist/node_modules/{rxjs → .bun/rxjs@7.8.2/node_modules/rxjs}/dist/esm5/internal/Subscriber.js +2 -2
  63. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subscriber.js.map +1 -0
  64. package/dist/node_modules/{rxjs → .bun/rxjs@7.8.2/node_modules/rxjs}/dist/esm5/internal/Subscription.js +2 -2
  65. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subscription.js.map +1 -0
  66. package/dist/node_modules/{rxjs → .bun/rxjs@7.8.2/node_modules/rxjs}/dist/esm5/internal/config.js +1 -1
  67. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/config.js.map +1 -0
  68. package/dist/node_modules/{rxjs → .bun/rxjs@7.8.2/node_modules/rxjs}/dist/esm5/internal/observable/empty.js +1 -1
  69. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/empty.js.map +1 -0
  70. package/dist/node_modules/{rxjs → .bun/rxjs@7.8.2/node_modules/rxjs}/dist/esm5/internal/scheduler/timeoutProvider.js +2 -2
  71. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js.map +1 -0
  72. package/dist/node_modules/{rxjs → .bun/rxjs@7.8.2/node_modules/rxjs}/dist/esm5/internal/symbol/observable.js +1 -1
  73. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/symbol/observable.js.map +1 -0
  74. package/dist/node_modules/{rxjs → .bun/rxjs@7.8.2/node_modules/rxjs}/dist/esm5/internal/util/UnsubscriptionError.js +1 -1
  75. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js.map +1 -0
  76. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/arrRemove.js +11 -0
  77. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/arrRemove.js.map +1 -0
  78. package/dist/node_modules/{rxjs → .bun/rxjs@7.8.2/node_modules/rxjs}/dist/esm5/internal/util/createErrorClass.js +1 -1
  79. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js.map +1 -0
  80. package/dist/node_modules/{rxjs → .bun/rxjs@7.8.2/node_modules/rxjs}/dist/esm5/internal/util/errorContext.js +1 -1
  81. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/errorContext.js.map +1 -0
  82. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/identity.js +8 -0
  83. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/identity.js.map +1 -0
  84. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isFunction.js +8 -0
  85. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isFunction.js.map +1 -0
  86. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/noop.js +6 -0
  87. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/noop.js.map +1 -0
  88. package/dist/node_modules/{rxjs → .bun/rxjs@7.8.2/node_modules/rxjs}/dist/esm5/internal/util/pipe.js +1 -1
  89. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/pipe.js.map +1 -0
  90. package/dist/node_modules/{rxjs → .bun/rxjs@7.8.2/node_modules/rxjs}/dist/esm5/internal/util/reportUnhandledError.js +1 -1
  91. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js.map +1 -0
  92. package/dist/node_modules/{rxjs → .bun/tslib@2.8.1}/node_modules/tslib/tslib.es6.js +1 -1
  93. package/dist/node_modules/.bun/tslib@2.8.1/node_modules/tslib/tslib.es6.js.map +1 -0
  94. package/dist/pages/AdminDashboardPage.js +89 -90
  95. package/dist/pages/AdminDashboardPage.js.map +1 -1
  96. package/dist/pages/AdminReviewModerationPage.js +56 -58
  97. package/dist/pages/AdminReviewModerationPage.js.map +1 -1
  98. package/dist/pages/AdminStoresPage.js +372 -391
  99. package/dist/pages/AdminStoresPage.js.map +1 -1
  100. package/dist/pages/AdminSubmissionsQueuePage.js +148 -134
  101. package/dist/pages/AdminSubmissionsQueuePage.js.map +1 -1
  102. package/dist/pages/AppDetailPage.js +120 -123
  103. package/dist/pages/AppDetailPage.js.map +1 -1
  104. package/dist/pages/AppSettingsPage.js +297 -70
  105. package/dist/pages/AppSettingsPage.js.map +1 -1
  106. package/dist/pages/CartPage.js +76 -65
  107. package/dist/pages/CartPage.js.map +1 -1
  108. package/dist/pages/InstalledAppsPage.js +315 -106
  109. package/dist/pages/InstalledAppsPage.js.map +1 -1
  110. package/dist/pages/MarketplaceHomePage.js +378 -368
  111. package/dist/pages/MarketplaceHomePage.js.map +1 -1
  112. package/dist/pages/MyLicensesPage.js +75 -67
  113. package/dist/pages/MyLicensesPage.js.map +1 -1
  114. package/dist/pages/OrderConfirmationPage.js +37 -38
  115. package/dist/pages/OrderConfirmationPage.js.map +1 -1
  116. package/dist/pages/OrdersPage.js +64 -53
  117. package/dist/pages/OrdersPage.js.map +1 -1
  118. package/dist/pages/ProductDetailPage.js +213 -215
  119. package/dist/pages/ProductDetailPage.js.map +1 -1
  120. package/dist/pages/ProductReviewsPage.js +2 -2
  121. package/dist/pages/ProductReviewsPage.js.map +1 -1
  122. package/dist/pages/PublisherDashboardPage.js +92 -93
  123. package/dist/pages/PublisherDashboardPage.js.map +1 -1
  124. package/dist/pages/PublisherRevenuePage.js +60 -61
  125. package/dist/pages/PublisherRevenuePage.js.map +1 -1
  126. package/dist/pages/PublisherSubmissionsPage.js +96 -97
  127. package/dist/pages/PublisherSubmissionsPage.js.map +1 -1
  128. package/dist/pages/PublisherSubmitPage.js +184 -189
  129. package/dist/pages/PublisherSubmitPage.js.map +1 -1
  130. package/dist/providers/StoreProvider.js +3 -3
  131. package/package.json +2 -2
  132. package/dist/node_modules/@apollo/client/errors/CombinedGraphQLErrors.js.map +0 -1
  133. package/dist/node_modules/@apollo/client/errors/utils.js.map +0 -1
  134. package/dist/node_modules/@apollo/client/link/core/ApolloLink.js.map +0 -1
  135. package/dist/node_modules/@apollo/client/link/subscriptions/index.js.map +0 -1
  136. package/dist/node_modules/@apollo/client/link/utils/createOperation.js.map +0 -1
  137. package/dist/node_modules/@apollo/client/utilities/caching/sizes.js.map +0 -1
  138. package/dist/node_modules/@apollo/client/utilities/graphql/print.js.map +0 -1
  139. package/dist/node_modules/@apollo/client/utilities/internal/caches.js.map +0 -1
  140. package/dist/node_modules/@apollo/client/utilities/internal/checkDocument.js.map +0 -1
  141. package/dist/node_modules/@apollo/client/utilities/internal/getMainDefinition.js.map +0 -1
  142. package/dist/node_modules/@apollo/client/utilities/internal/getMemoryInternals.js +0 -9
  143. package/dist/node_modules/@apollo/client/utilities/internal/getMemoryInternals.js.map +0 -1
  144. package/dist/node_modules/@apollo/client/utilities/internal/getOperationDefinition.js.map +0 -1
  145. package/dist/node_modules/@apollo/client/utilities/internal/getOperationName.js +0 -8
  146. package/dist/node_modules/@apollo/client/utilities/internal/getOperationName.js.map +0 -1
  147. package/dist/node_modules/@apollo/client/utilities/internal/globals/global.js.map +0 -1
  148. package/dist/node_modules/@apollo/client/utilities/internal/globals/maybe.js +0 -10
  149. package/dist/node_modules/@apollo/client/utilities/internal/globals/maybe.js.map +0 -1
  150. package/dist/node_modules/@apollo/client/utilities/internal/isNonNullObject.js +0 -8
  151. package/dist/node_modules/@apollo/client/utilities/internal/isNonNullObject.js.map +0 -1
  152. package/dist/node_modules/@apollo/client/utilities/internal/makeUniqueId.js.map +0 -1
  153. package/dist/node_modules/@apollo/client/utilities/internal/memoize.js.map +0 -1
  154. package/dist/node_modules/@apollo/client/utilities/internal/stringifyForDisplay.js.map +0 -1
  155. package/dist/node_modules/@apollo/client/utilities/invariant/index.js.map +0 -1
  156. package/dist/node_modules/@apollo/client/version.js +0 -6
  157. package/dist/node_modules/@apollo/client/version.js.map +0 -1
  158. package/dist/node_modules/@wry/caches/lib/weak.js.map +0 -1
  159. package/dist/node_modules/@wry/trie/lib/index.js.map +0 -1
  160. package/dist/node_modules/graphql-ws/dist/client.js.map +0 -1
  161. package/dist/node_modules/graphql-ws/dist/common-CGW11Fyb.js.map +0 -1
  162. package/dist/node_modules/rxjs/dist/esm5/internal/NotificationFactories.js.map +0 -1
  163. package/dist/node_modules/rxjs/dist/esm5/internal/Observable.js.map +0 -1
  164. package/dist/node_modules/rxjs/dist/esm5/internal/Subscriber.js.map +0 -1
  165. package/dist/node_modules/rxjs/dist/esm5/internal/Subscription.js.map +0 -1
  166. package/dist/node_modules/rxjs/dist/esm5/internal/config.js.map +0 -1
  167. package/dist/node_modules/rxjs/dist/esm5/internal/observable/empty.js.map +0 -1
  168. package/dist/node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js.map +0 -1
  169. package/dist/node_modules/rxjs/dist/esm5/internal/symbol/observable.js.map +0 -1
  170. package/dist/node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js.map +0 -1
  171. package/dist/node_modules/rxjs/dist/esm5/internal/util/arrRemove.js +0 -11
  172. package/dist/node_modules/rxjs/dist/esm5/internal/util/arrRemove.js.map +0 -1
  173. package/dist/node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js.map +0 -1
  174. package/dist/node_modules/rxjs/dist/esm5/internal/util/errorContext.js.map +0 -1
  175. package/dist/node_modules/rxjs/dist/esm5/internal/util/identity.js +0 -8
  176. package/dist/node_modules/rxjs/dist/esm5/internal/util/identity.js.map +0 -1
  177. package/dist/node_modules/rxjs/dist/esm5/internal/util/isFunction.js +0 -8
  178. package/dist/node_modules/rxjs/dist/esm5/internal/util/isFunction.js.map +0 -1
  179. package/dist/node_modules/rxjs/dist/esm5/internal/util/noop.js +0 -6
  180. package/dist/node_modules/rxjs/dist/esm5/internal/util/noop.js.map +0 -1
  181. package/dist/node_modules/rxjs/dist/esm5/internal/util/pipe.js.map +0 -1
  182. package/dist/node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js.map +0 -1
  183. package/dist/node_modules/rxjs/node_modules/tslib/tslib.es6.js.map +0 -1
  184. /package/dist/node_modules/{@apollo → .bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo}/client/utilities/caching/sizes.js +0 -0
@@ -2,14 +2,156 @@ import { useStore as e } from "../providers/StoreProvider.js";
2
2
  import { useInstallationStatusUpdatedSubscription as t } from "../generated/global-operations.js";
3
3
  import { useInstallations as n } from "../hooks/useInstallations.js";
4
4
  import { StoreInstallationStatus as r } from "../generated/global-types.js";
5
- import { useMemo as i, useState as a } from "react";
6
- import { useI18n as o } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
7
- import { AlertCircle as s, Loader2 as c, Package as l, Plus as u, RefreshCw as d, Trash2 as f } from "lucide-react";
8
- import { Fragment as p, jsx as m, jsxs as h } from "react/jsx-runtime";
9
- import { useNavigate as g } from "react-router-dom";
10
- import { AlertDialog as _, AlertDialogAction as v, AlertDialogCancel as y, AlertDialogContent as b, AlertDialogDescription as x, AlertDialogFooter as S, AlertDialogHeader as C, AlertDialogTitle as w } from "@burdenoff/fe-libs/ui";
5
+ import { useCallback as i, useEffect as a, useMemo as o, useRef as s, useState as c } from "react";
6
+ import { useI18n as l } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
7
+ import { AlertCircle as u, ArrowUpCircle as d, CheckCircle as f, Loader2 as p, Package as m, Plus as h, RefreshCw as g, Settings2 as _, ShieldCheck as v, Trash2 as y, X as b } from "lucide-react";
8
+ import { Fragment as x, jsx as S, jsxs as C } from "react/jsx-runtime";
9
+ import { useNavigate as w } from "react-router-dom";
10
+ import { graphqlFetch as T } from "@burdenoff/fe-libs/shared/graphql";
11
11
  //#region src/pages/InstalledAppsPage.tsx
12
- var T = [
12
+ var E = "\n query GetProductVersion($id: ID!) {\n product(id: $id) {\n id\n manifestVersion\n requiredPermissions\n }\n }\n", D = "mutation RecordAppInstallation($input: RecordAppInstallationInput!) { recordAppInstallation(input: $input) { id status workspaceId version } }";
13
+ function O(e, t) {
14
+ let [n, r] = c({}), [o, l] = c(!1), u = s(e);
15
+ u.current = e;
16
+ let d = i(async (e) => {
17
+ if (e.length !== 0) {
18
+ l(!0);
19
+ try {
20
+ let n = await Promise.all(e.map((e) => T({
21
+ gateway: "global",
22
+ query: E,
23
+ variables: { id: e },
24
+ authToken: t || void 0
25
+ }).then((e) => e.data?.product ?? null).catch(() => null))), i = {};
26
+ for (let e of n) e && (i[e.id] = {
27
+ manifestVersion: e.manifestVersion,
28
+ requiredPermissions: e.requiredPermissions
29
+ });
30
+ r(i);
31
+ } finally {
32
+ l(!1);
33
+ }
34
+ }
35
+ }, [t]);
36
+ return a(() => {
37
+ e.length > 0 && d(e);
38
+ }, [e.join(",")]), {
39
+ metaMap: n,
40
+ metaLoading: o,
41
+ refetchMeta: () => d(u.current)
42
+ };
43
+ }
44
+ var k = ({ installation: e, product: t, onClose: n, onAccept: r }) => {
45
+ let [i, a] = c(!1), [o, s] = c("permissions");
46
+ return /* @__PURE__ */ C("div", {
47
+ className: "fixed inset-0 z-50 flex items-center justify-center p-4",
48
+ children: [/* @__PURE__ */ S("button", {
49
+ type: "button",
50
+ "aria-label": "Close",
51
+ className: "absolute inset-0 bg-bg-overlay/50 backdrop-blur-sm",
52
+ onClick: n
53
+ }), /* @__PURE__ */ C("dialog", {
54
+ open: !0,
55
+ "aria-modal": "true",
56
+ className: "relative z-10 w-full max-w-md rounded-2xl border border-border-default bg-bg-surface shadow-2xl",
57
+ children: [
58
+ /* @__PURE__ */ C("div", {
59
+ className: "flex items-center justify-between border-b border-border-default px-6 py-4",
60
+ children: [/* @__PURE__ */ C("div", { children: [/* @__PURE__ */ S("h2", {
61
+ className: "text-lg font-semibold text-text-primary",
62
+ children: o === "permissions" ? "Review Updated Permissions" : "Confirm Update"
63
+ }), /* @__PURE__ */ S("p", {
64
+ className: "text-sm text-text-muted",
65
+ children: e.workspaceName ?? e.workspaceId
66
+ })] }), /* @__PURE__ */ S("button", {
67
+ type: "button",
68
+ onClick: n,
69
+ className: "cursor-pointer rounded-lg p-2 text-text-muted hover:bg-bg-sunken",
70
+ children: /* @__PURE__ */ S(b, { className: "size-5" })
71
+ })]
72
+ }),
73
+ o === "permissions" && /* @__PURE__ */ C(x, { children: [/* @__PURE__ */ C("div", {
74
+ className: "px-6 py-4",
75
+ children: [
76
+ /* @__PURE__ */ C("div", {
77
+ 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",
78
+ children: [/* @__PURE__ */ S(d, { className: "size-4 flex-shrink-0" }), /* @__PURE__ */ C("span", { children: ["Update available: v", t.manifestVersion] })]
79
+ }),
80
+ /* @__PURE__ */ S("p", {
81
+ className: "mb-4 text-sm text-text-secondary",
82
+ children: "This update requires the following permissions. Review and accept to continue."
83
+ }),
84
+ t.requiredPermissions.length > 0 ? /* @__PURE__ */ S("div", {
85
+ className: "max-h-56 overflow-y-auto space-y-2",
86
+ children: t.requiredPermissions.map((e) => /* @__PURE__ */ C("div", {
87
+ className: "flex items-center gap-3 rounded-lg bg-bg-sunken px-4 py-3",
88
+ children: [/* @__PURE__ */ S(v, { className: "size-5 flex-shrink-0 text-status-success-text" }), /* @__PURE__ */ S("span", {
89
+ className: "text-sm text-text-primary",
90
+ children: e
91
+ })]
92
+ }, e))
93
+ }) : /* @__PURE__ */ S("p", {
94
+ className: "text-sm text-text-muted",
95
+ children: "No permissions required by this version."
96
+ })
97
+ ]
98
+ }), /* @__PURE__ */ C("div", {
99
+ className: "border-t border-border-default px-6 py-4 flex justify-end gap-3",
100
+ children: [/* @__PURE__ */ S("button", {
101
+ type: "button",
102
+ onClick: n,
103
+ className: "cursor-pointer rounded-lg border border-border-default px-4 py-2 text-sm font-medium text-text-primary hover:bg-bg-sunken",
104
+ children: "Cancel"
105
+ }), /* @__PURE__ */ C("button", {
106
+ type: "button",
107
+ onClick: () => s("confirm"),
108
+ className: "cursor-pointer rounded-lg bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:opacity-90 inline-flex items-center gap-2",
109
+ children: [/* @__PURE__ */ S(f, { className: "size-4" }), "Accept & Update"]
110
+ })]
111
+ })] }),
112
+ o === "confirm" && /* @__PURE__ */ C(x, { children: [/* @__PURE__ */ S("div", {
113
+ className: "px-6 py-4",
114
+ children: /* @__PURE__ */ C("div", {
115
+ className: "rounded-lg bg-status-success-bg-subtle p-4 text-center",
116
+ children: [
117
+ /* @__PURE__ */ S(f, { className: "mx-auto mb-2 size-8 text-status-success-text" }),
118
+ /* @__PURE__ */ S("p", {
119
+ className: "text-sm font-medium text-text-primary",
120
+ children: "Permissions accepted"
121
+ }),
122
+ /* @__PURE__ */ C("p", {
123
+ className: "mt-1 text-xs text-text-muted",
124
+ children: ["Ready to update to v", t.manifestVersion]
125
+ })
126
+ ]
127
+ })
128
+ }), /* @__PURE__ */ C("div", {
129
+ className: "border-t border-border-default px-6 py-4 flex justify-end gap-3",
130
+ children: [/* @__PURE__ */ S("button", {
131
+ type: "button",
132
+ onClick: () => s("permissions"),
133
+ disabled: i,
134
+ className: "cursor-pointer rounded-lg border border-border-default px-4 py-2 text-sm font-medium text-text-primary hover:bg-bg-sunken disabled:opacity-50",
135
+ children: "Back"
136
+ }), /* @__PURE__ */ S("button", {
137
+ type: "button",
138
+ onClick: async () => {
139
+ a(!0);
140
+ try {
141
+ await r(), n();
142
+ } finally {
143
+ a(!1);
144
+ }
145
+ },
146
+ disabled: i,
147
+ className: "cursor-pointer rounded-lg bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:opacity-90 disabled:opacity-50 inline-flex items-center gap-2",
148
+ children: i ? /* @__PURE__ */ C(x, { children: [/* @__PURE__ */ S(p, { className: "size-4 animate-spin" }), " Updating…"] }) : "Confirm Update"
149
+ })]
150
+ })] })
151
+ ]
152
+ })]
153
+ });
154
+ }, A = [
13
155
  {
14
156
  label: "All",
15
157
  value: "all"
@@ -38,11 +180,11 @@ var T = [
38
180
  label: "Uninstalled",
39
181
  value: r.Uninstalled
40
182
  }
41
- ], E = (e) => e === r.Active ? "bg-status-success-bg-subtle text-status-success-text" : e === r.Pending || e === r.Installing || e === r.Inactive ? "bg-status-warning-bg-subtle text-status-warning-text" : e === r.Failed ? "bg-status-error-bg-subtle text-status-error-text" : "bg-bg-sunken text-text-muted", D = () => {
42
- let D = g(), { basePath: O, workspaceId: k } = e(), { t: A } = o(), [j, M] = a("all"), [N, P] = a(null), [F, I] = a(null), { installations: L, totalCount: R, hasMore: z, loading: B, error: V, uninstall: H, uninstallingIds: U, refetch: W, loadMore: G } = n({ filter: i(() => j === "all" ? void 0 : { status: j }, [j]) });
183
+ ], j = (e) => e === r.Active ? "bg-status-success-bg-subtle text-status-success-text" : e === r.Pending || e === r.Installing || e === r.Inactive ? "bg-status-warning-bg-subtle text-status-warning-text" : e === r.Failed ? "bg-status-error-bg-subtle text-status-error-text" : "bg-bg-sunken text-text-muted", M = () => {
184
+ let i = w(), { basePath: a, workspaceId: s, authToken: f } = e(), { t: v } = l(), [b, x] = c("all"), [E, M] = c(null), [N, P] = c(null), [F, I] = c(null), { installations: L, totalCount: R, hasMore: z, loading: B, error: V, uninstall: H, uninstallingIds: U, refetch: W, loadMore: G } = n({ filter: o(() => b === "all" ? void 0 : { status: b }, [b]) });
43
185
  t({
44
- variables: { workspaceId: k ?? "" },
45
- skip: !k,
186
+ variables: { workspaceId: s ?? "" },
187
+ skip: !s,
46
188
  onData: () => {
47
189
  W();
48
190
  },
@@ -50,109 +192,128 @@ var T = [
50
192
  console.warn("InstallationStatusUpdated subscription error:", e.message);
51
193
  }
52
194
  });
53
- let K = i(() => [...L].sort((e, t) => t.installedAt.localeCompare(e.installedAt)), [L]), q = () => {
54
- D(`${O}/marketplace`);
55
- }, J = async (e) => {
56
- P(null), await H(e, "User requested uninstall from store UI") || P("Could not uninstall. Try again."), I(null);
195
+ let K = o(() => [...L].sort((e, t) => t.installedAt.localeCompare(e.installedAt)), [L]), { metaMap: q, refetchMeta: J } = O(o(() => [...new Set(L.map((e) => e.productId))], [L]), f), Y = () => {
196
+ i(`${a}/marketplace`);
197
+ }, X = async (e) => {
198
+ M(null), await H(e, "User requested uninstall from store UI") || M("Could not uninstall. Try again."), P(null);
199
+ }, Z = async (e) => {
200
+ let t = q[e.productId];
201
+ if (t?.manifestVersion) try {
202
+ await T({
203
+ gateway: "global",
204
+ query: D,
205
+ variables: { input: {
206
+ productId: e.productId,
207
+ workspaceId: e.workspaceId,
208
+ workspaceName: e.workspaceName,
209
+ workspaceType: e.workspaceType,
210
+ organizationId: e.organizationId,
211
+ version: t.manifestVersion
212
+ } },
213
+ authToken: f || void 0
214
+ }), await W(), J();
215
+ } catch {
216
+ M("Update failed. Please try again.");
217
+ }
57
218
  };
58
- return /* @__PURE__ */ h("div", {
219
+ return /* @__PURE__ */ C("div", {
59
220
  className: "flex h-full flex-col",
60
221
  children: [
61
- /* @__PURE__ */ m("header", {
62
- className: "border-b border-border-seam bg-bg-surface px-6 py-4",
63
- children: /* @__PURE__ */ h("div", {
222
+ /* @__PURE__ */ S("header", {
223
+ className: "border-b border-border-default bg-bg-surface px-6 py-4",
224
+ children: /* @__PURE__ */ C("div", {
64
225
  className: "flex items-center justify-between",
65
- children: [/* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("h1", {
226
+ children: [/* @__PURE__ */ C("div", { children: [/* @__PURE__ */ S("h1", {
66
227
  className: "text-2xl font-bold text-text-primary",
67
- children: A("pages.installed.title", { defaultValue: "Installed Apps" })
68
- }), /* @__PURE__ */ m("p", {
228
+ children: v("pages.installed.title", { defaultValue: "Installed Apps" })
229
+ }), /* @__PURE__ */ S("p", {
69
230
  className: "text-sm text-text-muted",
70
231
  children: "Manage your installed applications"
71
- })] }), /* @__PURE__ */ h("button", {
232
+ })] }), /* @__PURE__ */ C("button", {
72
233
  type: "button",
73
- onClick: q,
234
+ onClick: Y,
74
235
  className: "flex cursor-pointer items-center gap-2 rounded-lg bg-action-primary-bg px-4 py-2 font-semibold text-action-primary-text transition-colors hover:opacity-90",
75
- children: [/* @__PURE__ */ m(u, { className: "size-5" }), /* @__PURE__ */ m("span", { children: A("pages.installed.installNew", { defaultValue: "Install New App" }) })]
236
+ children: [/* @__PURE__ */ S(h, { className: "size-5" }), /* @__PURE__ */ S("span", { children: v("pages.installed.installNew", { defaultValue: "Install New App" }) })]
76
237
  })]
77
238
  })
78
239
  }),
79
- /* @__PURE__ */ m("main", {
240
+ /* @__PURE__ */ S("main", {
80
241
  className: "flex-1 overflow-y-auto p-6",
81
- children: /* @__PURE__ */ h("div", {
242
+ children: /* @__PURE__ */ C("div", {
82
243
  className: "mx-auto max-w-6xl",
83
244
  children: [
84
- /* @__PURE__ */ h("div", {
245
+ /* @__PURE__ */ C("div", {
85
246
  className: "mb-4 flex flex-wrap items-center gap-2",
86
- children: [T.map((e) => /* @__PURE__ */ m("button", {
247
+ children: [A.map((e) => /* @__PURE__ */ S("button", {
87
248
  type: "button",
88
- onClick: () => M(e.value),
89
- className: `cursor-pointer rounded-full px-3 py-1.5 text-sm font-medium transition-colors ${j === e.value ? "bg-action-primary-bg text-action-primary-text" : "bg-bg-sunken text-text-primary hover:bg-bg-surface"}`,
249
+ onClick: () => x(e.value),
250
+ className: `cursor-pointer rounded-full px-3 py-1.5 text-sm font-medium transition-colors ${b === e.value ? "bg-action-primary-bg text-action-primary-text" : "bg-bg-sunken text-text-primary hover:bg-bg-surface"}`,
90
251
  children: e.label
91
- }, e.label)), /* @__PURE__ */ h("button", {
252
+ }, e.label)), /* @__PURE__ */ C("button", {
92
253
  type: "button",
93
254
  onClick: () => W(),
94
255
  className: "ml-auto cursor-pointer inline-flex items-center gap-2 rounded-lg border border-border-default bg-bg-surface px-3 py-2 text-sm font-medium text-text-primary hover:bg-bg-sunken",
95
- children: [/* @__PURE__ */ m(d, { className: "size-4" }), "Refresh"]
256
+ children: [/* @__PURE__ */ S(g, { className: "size-4" }), "Refresh"]
96
257
  })]
97
258
  }),
98
- N && /* @__PURE__ */ m("div", {
259
+ E && /* @__PURE__ */ S("div", {
99
260
  role: "alert",
100
261
  className: "mb-4 rounded-lg border border-status-error-border bg-status-error-bg-subtle px-4 py-3 text-sm text-status-error-text",
101
- children: N
262
+ children: E
102
263
  }),
103
- B ? /* @__PURE__ */ m("output", {
264
+ B ? /* @__PURE__ */ S("output", {
104
265
  "aria-label": "Loading installed apps",
105
266
  className: "flex items-center justify-center py-16",
106
- children: /* @__PURE__ */ m(c, {
267
+ children: /* @__PURE__ */ S(p, {
107
268
  className: "size-8 animate-spin text-text-muted",
108
269
  "aria-hidden": "true"
109
270
  })
110
- }) : V ? /* @__PURE__ */ h("div", {
271
+ }) : V ? /* @__PURE__ */ C("div", {
111
272
  role: "alert",
112
273
  className: "flex flex-col items-center justify-center rounded-xl border border-status-error-border bg-status-error-bg-subtle py-16 text-center",
113
274
  children: [
114
- /* @__PURE__ */ m(s, { className: "mb-3 size-10 text-status-error-text" }),
115
- /* @__PURE__ */ m("h3", {
275
+ /* @__PURE__ */ S(u, { className: "mb-3 size-10 text-status-error-text" }),
276
+ /* @__PURE__ */ S("h3", {
116
277
  className: "text-lg font-semibold text-status-error-text",
117
278
  children: "Failed to load installations"
118
279
  }),
119
- /* @__PURE__ */ m("p", {
280
+ /* @__PURE__ */ S("p", {
120
281
  className: "mt-2 text-sm text-text-muted",
121
282
  children: V.message
122
283
  }),
123
- /* @__PURE__ */ m("button", {
284
+ /* @__PURE__ */ S("button", {
124
285
  type: "button",
125
286
  onClick: () => W(),
126
287
  className: "mt-4 cursor-pointer rounded-lg bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text",
127
288
  children: "Try Again"
128
289
  })
129
290
  ]
130
- }) : K.length === 0 ? /* @__PURE__ */ m("div", {
291
+ }) : K.length === 0 ? /* @__PURE__ */ S("div", {
131
292
  className: "flex items-center justify-center py-16",
132
- children: /* @__PURE__ */ h("div", {
293
+ children: /* @__PURE__ */ C("div", {
133
294
  className: "text-center",
134
295
  children: [
135
- /* @__PURE__ */ m(l, { className: "mx-auto mb-4 size-16 text-text-muted" }),
136
- /* @__PURE__ */ m("h3", {
296
+ /* @__PURE__ */ S(m, { className: "mx-auto mb-4 size-16 text-text-muted" }),
297
+ /* @__PURE__ */ S("h3", {
137
298
  className: "mb-2 text-lg font-semibold text-text-primary",
138
299
  children: "No apps installed"
139
300
  }),
140
- /* @__PURE__ */ m("p", {
301
+ /* @__PURE__ */ S("p", {
141
302
  className: "mb-4 text-sm text-text-muted",
142
303
  children: "Browse the marketplace to install your first app"
143
304
  }),
144
- /* @__PURE__ */ m("button", {
305
+ /* @__PURE__ */ S("button", {
145
306
  type: "button",
146
- onClick: q,
307
+ onClick: Y,
147
308
  className: "rounded-lg bg-action-primary-bg px-4 py-2 font-semibold text-action-primary-text transition-colors hover:opacity-90",
148
309
  children: "Browse Marketplace"
149
310
  })
150
311
  ]
151
312
  })
152
- }) : /* @__PURE__ */ h("div", {
313
+ }) : /* @__PURE__ */ C("div", {
153
314
  className: "flex flex-col gap-y-4",
154
315
  children: [
155
- /* @__PURE__ */ h("p", {
316
+ /* @__PURE__ */ C("p", {
156
317
  "aria-live": "polite",
157
318
  className: "text-sm text-text-muted",
158
319
  children: [
@@ -162,71 +323,89 @@ var T = [
162
323
  " found"
163
324
  ]
164
325
  }),
165
- /* @__PURE__ */ m("ul", {
326
+ /* @__PURE__ */ S("ul", {
166
327
  className: "flex flex-col gap-y-4",
167
328
  children: K.map((e) => {
168
- let t = U.has(`${e.workspaceId}:${e.productId}`);
169
- return /* @__PURE__ */ m("li", {
170
- className: "rounded-xl border border-border-seam bg-bg-surface p-4 transition-[box-shadow,border-color] hover:border-border-strong hover:shadow-[var(--shadow-pop)]",
171
- children: /* @__PURE__ */ h("div", {
329
+ let t = U.has(`${e.workspaceId}:${e.productId}`), n = q[e.productId], o = n?.manifestVersion && e.version && n.manifestVersion !== e.version;
330
+ return /* @__PURE__ */ C("li", {
331
+ className: `rounded-xl border bg-bg-surface p-4 ${o ? "border-status-info-border" : "border-border-default"}`,
332
+ children: [o && /* @__PURE__ */ C("div", {
333
+ 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",
334
+ children: [
335
+ /* @__PURE__ */ S(d, { className: "size-4 flex-shrink-0" }),
336
+ /* @__PURE__ */ C("span", { children: ["Update available: v", n?.manifestVersion] }),
337
+ /* @__PURE__ */ S("button", {
338
+ type: "button",
339
+ onClick: () => I(e),
340
+ className: "ml-auto cursor-pointer rounded-md bg-action-primary-bg px-3 py-1 text-xs font-medium text-action-primary-text hover:opacity-90",
341
+ children: "Update"
342
+ })
343
+ ]
344
+ }), /* @__PURE__ */ C("div", {
172
345
  className: "flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",
173
- children: [/* @__PURE__ */ h("div", {
346
+ children: [/* @__PURE__ */ C("div", {
174
347
  className: "flex items-start gap-3",
175
- children: [/* @__PURE__ */ m("div", {
348
+ children: [/* @__PURE__ */ S("div", {
176
349
  className: "flex size-12 items-center justify-center rounded-lg bg-bg-sunken text-lg font-semibold text-text-muted",
177
- children: /* @__PURE__ */ m(l, { className: "size-6" })
178
- }), /* @__PURE__ */ h("div", { children: [
179
- /* @__PURE__ */ m("h3", {
350
+ children: /* @__PURE__ */ S(m, { className: "size-6" })
351
+ }), /* @__PURE__ */ C("div", { children: [
352
+ /* @__PURE__ */ S("h3", {
180
353
  className: "font-semibold text-text-primary",
181
354
  children: e.workspaceName ?? e.workspaceId
182
355
  }),
183
- /* @__PURE__ */ h("p", {
356
+ /* @__PURE__ */ C("p", {
184
357
  className: "text-sm text-text-muted",
185
358
  children: ["Product: ", e.productId]
186
359
  }),
187
- /* @__PURE__ */ h("div", {
360
+ /* @__PURE__ */ C("div", {
188
361
  className: "mt-2 flex flex-wrap items-center gap-2 text-xs text-text-muted",
189
362
  children: [
190
- /* @__PURE__ */ m("span", {
191
- className: `rounded-full px-2 py-1 font-medium ${E(e.status)}`,
363
+ /* @__PURE__ */ S("span", {
364
+ className: `rounded-full px-2 py-1 font-medium ${j(e.status)}`,
192
365
  children: e.status
193
366
  }),
194
- e.version && /* @__PURE__ */ h("span", { children: ["v", e.version] }),
195
- e.workspaceType && /* @__PURE__ */ m("span", { children: e.workspaceType })
367
+ e.version && /* @__PURE__ */ C("span", { children: ["v", e.version] }),
368
+ e.workspaceType && /* @__PURE__ */ S("span", { children: e.workspaceType })
196
369
  ]
197
370
  })
198
371
  ] })]
199
- }), /* @__PURE__ */ h("div", {
372
+ }), /* @__PURE__ */ C("div", {
200
373
  className: "flex items-center gap-2",
201
374
  children: [
202
- /* @__PURE__ */ m("button", {
375
+ /* @__PURE__ */ S("button", {
203
376
  type: "button",
204
- onClick: () => D(`${O}/installed/${e.id}`),
377
+ onClick: () => i(`${a}/installed/${e.id}`),
205
378
  className: "cursor-pointer rounded-lg border border-border-default px-3 py-2 text-sm font-medium text-text-primary hover:bg-bg-sunken",
206
379
  children: "Details"
207
380
  }),
208
- /* @__PURE__ */ m("button", {
381
+ /* @__PURE__ */ C("button", {
209
382
  type: "button",
210
- onClick: () => D(`${O}/marketplace/product/${e.productId}`),
383
+ onClick: () => i(`${a}/installed/${e.id}/settings`),
384
+ className: "cursor-pointer inline-flex items-center gap-1.5 rounded-lg border border-border-default px-3 py-2 text-sm font-medium text-text-primary hover:bg-bg-sunken",
385
+ children: [/* @__PURE__ */ S(_, { className: "size-4" }), "Configure"]
386
+ }),
387
+ /* @__PURE__ */ S("button", {
388
+ type: "button",
389
+ onClick: () => i(`${a}/marketplace/product/${e.productId}`),
211
390
  className: "cursor-pointer rounded-lg border border-border-default px-3 py-2 text-sm font-medium text-text-primary hover:bg-bg-sunken",
212
391
  children: "View Product"
213
392
  }),
214
- e.status !== r.Uninstalled && /* @__PURE__ */ h("button", {
393
+ e.status !== r.Uninstalled && /* @__PURE__ */ C("button", {
215
394
  type: "button",
216
- onClick: () => I(e),
395
+ onClick: () => P(e),
217
396
  disabled: t,
218
397
  className: "cursor-pointer inline-flex items-center gap-1.5 rounded-lg border border-status-error-border px-3 py-2 text-sm font-medium text-status-error-text hover:bg-status-error-bg-subtle disabled:opacity-60",
219
- children: [t ? /* @__PURE__ */ m(c, { className: "size-4 animate-spin" }) : /* @__PURE__ */ m(f, { className: "size-4" }), "Uninstall"]
398
+ children: [t ? /* @__PURE__ */ S(p, { className: "size-4 animate-spin" }) : /* @__PURE__ */ S(y, { className: "size-4" }), "Uninstall"]
220
399
  })
221
400
  ]
222
401
  })]
223
- })
402
+ })]
224
403
  }, e.id);
225
404
  })
226
405
  }),
227
- z && /* @__PURE__ */ m("div", {
406
+ z && /* @__PURE__ */ S("div", {
228
407
  className: "flex justify-center pt-6",
229
- children: /* @__PURE__ */ m("button", {
408
+ children: /* @__PURE__ */ S("button", {
230
409
  type: "button",
231
410
  onClick: G,
232
411
  disabled: B,
@@ -239,40 +418,70 @@ var T = [
239
418
  ]
240
419
  })
241
420
  }),
242
- /* @__PURE__ */ m(_, {
243
- open: F !== null,
244
- onOpenChange: (e) => !e && I(null),
245
- children: /* @__PURE__ */ h(b, {
246
- className: "max-w-md",
247
- children: [/* @__PURE__ */ h(C, { children: [/* @__PURE__ */ m(w, { children: "Uninstall app" }), /* @__PURE__ */ m(x, { children: F && /* @__PURE__ */ h(p, { children: [
248
- "Remove product",
249
- " ",
250
- /* @__PURE__ */ m("span", {
251
- className: "font-medium text-text-primary",
252
- children: F.productId
421
+ F && q[F.productId] && /* @__PURE__ */ S(k, {
422
+ installation: F,
423
+ product: q[F.productId],
424
+ onClose: () => I(null),
425
+ onAccept: () => Z(F)
426
+ }),
427
+ N && /* @__PURE__ */ C("div", {
428
+ className: "fixed inset-0 z-50 flex items-center justify-center p-4",
429
+ children: [/* @__PURE__ */ S("button", {
430
+ type: "button",
431
+ "aria-label": "Cancel uninstall",
432
+ className: "absolute inset-0 bg-bg-overlay/50",
433
+ onClick: () => P(null)
434
+ }), /* @__PURE__ */ C("dialog", {
435
+ open: !0,
436
+ "aria-modal": "true",
437
+ "aria-labelledby": "installed-apps-uninstall-title",
438
+ className: "relative z-10 w-full max-w-md rounded-2xl border border-border-default bg-bg-surface p-6 shadow-2xl",
439
+ children: [
440
+ /* @__PURE__ */ S("h2", {
441
+ id: "installed-apps-uninstall-title",
442
+ className: "text-lg font-semibold text-text-primary",
443
+ children: "Uninstall app"
253
444
  }),
254
- " ",
255
- "from workspace",
256
- " ",
257
- /* @__PURE__ */ m("span", {
258
- className: "font-medium text-text-primary",
259
- children: F.workspaceName ?? F.workspaceId
445
+ /* @__PURE__ */ C("p", {
446
+ className: "mt-2 text-sm text-text-muted",
447
+ children: [
448
+ "Remove product",
449
+ " ",
450
+ /* @__PURE__ */ S("span", {
451
+ className: "font-medium text-text-primary",
452
+ children: N.productId
453
+ }),
454
+ " ",
455
+ "from workspace",
456
+ " ",
457
+ /* @__PURE__ */ S("span", {
458
+ className: "font-medium text-text-primary",
459
+ children: N.workspaceName ?? N.workspaceId
460
+ }),
461
+ "?"
462
+ ]
260
463
  }),
261
- "?"
262
- ] }) })] }), /* @__PURE__ */ h(S, { children: [/* @__PURE__ */ m(y, {
263
- onClick: () => I(null),
264
- children: "Cancel"
265
- }), /* @__PURE__ */ m(v, {
266
- className: "bg-status-error-bg text-status-error-text hover:bg-status-error-bg-emphasis",
267
- onClick: () => F && J(F),
268
- children: "Uninstall"
269
- })] })]
270
- })
464
+ /* @__PURE__ */ C("div", {
465
+ className: "mt-6 flex flex-wrap justify-end gap-3",
466
+ children: [/* @__PURE__ */ S("button", {
467
+ type: "button",
468
+ onClick: () => P(null),
469
+ className: "cursor-pointer rounded-lg border border-border-default px-4 py-2 text-sm font-medium text-text-primary hover:bg-bg-sunken",
470
+ children: "Cancel"
471
+ }), /* @__PURE__ */ S("button", {
472
+ type: "button",
473
+ onClick: () => X(N),
474
+ className: "cursor-pointer rounded-lg bg-status-error-bg px-4 py-2 text-sm font-medium text-status-error-text hover:bg-status-error-bg-emphasis",
475
+ children: "Uninstall"
476
+ })]
477
+ })
478
+ ]
479
+ })]
271
480
  })
272
481
  ]
273
482
  });
274
483
  };
275
484
  //#endregion
276
- export { D as InstalledAppsPage };
485
+ export { M as InstalledAppsPage };
277
486
 
278
487
  //# sourceMappingURL=InstalledAppsPage.js.map