@burdenoff/microfe-store 2026.625.5 → 2026.626.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.
Files changed (189) hide show
  1. package/dist/StoreRoot.js +47 -90
  2. package/dist/StoreRoot.js.map +1 -1
  3. package/dist/StoreRoutes.js +93 -158
  4. package/dist/StoreRoutes.js.map +1 -1
  5. package/dist/components/AccessDenied.js +3 -3
  6. package/dist/components/AccessDenied.js.map +1 -1
  7. package/dist/components/InstallAppModal.js +175 -255
  8. package/dist/components/InstallAppModal.js.map +1 -1
  9. package/dist/components/cart/CartDrawer.js +10 -10
  10. package/dist/components/cart/CartDrawer.js.map +1 -1
  11. package/dist/hooks/useStoreGraphQL.js +107 -177
  12. package/dist/hooks/useStoreGraphQL.js.map +1 -1
  13. package/dist/index.js +3 -3
  14. package/dist/node_modules/{.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo → @apollo}/client/errors/CombinedGraphQLErrors.js +1 -1
  15. package/dist/node_modules/@apollo/client/errors/CombinedGraphQLErrors.js.map +1 -0
  16. package/dist/node_modules/{.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo → @apollo}/client/errors/utils.js +1 -1
  17. package/dist/node_modules/@apollo/client/errors/utils.js.map +1 -0
  18. package/dist/node_modules/{.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo → @apollo}/client/link/core/ApolloLink.js +2 -2
  19. package/dist/node_modules/@apollo/client/link/core/ApolloLink.js.map +1 -0
  20. package/dist/node_modules/{.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo → @apollo}/client/link/subscriptions/index.js +2 -2
  21. package/dist/node_modules/@apollo/client/link/subscriptions/index.js.map +1 -0
  22. package/dist/node_modules/{.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo → @apollo}/client/link/utils/createOperation.js +1 -1
  23. package/dist/node_modules/@apollo/client/link/utils/createOperation.js.map +1 -0
  24. package/dist/node_modules/@apollo/client/utilities/caching/sizes.js.map +1 -0
  25. package/dist/node_modules/{.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo → @apollo}/client/utilities/graphql/print.js +1 -1
  26. package/dist/node_modules/@apollo/client/utilities/graphql/print.js.map +1 -0
  27. package/dist/node_modules/{.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo → @apollo}/client/utilities/internal/caches.js +2 -2
  28. package/dist/node_modules/@apollo/client/utilities/internal/caches.js.map +1 -0
  29. package/dist/node_modules/{.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo → @apollo}/client/utilities/internal/checkDocument.js +1 -1
  30. package/dist/node_modules/@apollo/client/utilities/internal/checkDocument.js.map +1 -0
  31. package/dist/node_modules/{.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo → @apollo}/client/utilities/internal/getMainDefinition.js +1 -1
  32. package/dist/node_modules/@apollo/client/utilities/internal/getMainDefinition.js.map +1 -0
  33. package/dist/node_modules/@apollo/client/utilities/internal/getMemoryInternals.js +9 -0
  34. package/dist/node_modules/@apollo/client/utilities/internal/getMemoryInternals.js.map +1 -0
  35. package/dist/node_modules/{.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo → @apollo}/client/utilities/internal/getOperationDefinition.js +1 -1
  36. package/dist/node_modules/@apollo/client/utilities/internal/getOperationDefinition.js.map +1 -0
  37. package/dist/node_modules/@apollo/client/utilities/internal/getOperationName.js +8 -0
  38. package/dist/node_modules/@apollo/client/utilities/internal/getOperationName.js.map +1 -0
  39. package/dist/node_modules/{.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo → @apollo}/client/utilities/internal/globals/global.js +1 -1
  40. package/dist/node_modules/@apollo/client/utilities/internal/globals/global.js.map +1 -0
  41. package/dist/node_modules/@apollo/client/utilities/internal/globals/maybe.js +10 -0
  42. package/dist/node_modules/@apollo/client/utilities/internal/globals/maybe.js.map +1 -0
  43. package/dist/node_modules/@apollo/client/utilities/internal/isNonNullObject.js +8 -0
  44. package/dist/node_modules/@apollo/client/utilities/internal/isNonNullObject.js.map +1 -0
  45. package/dist/node_modules/{.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo → @apollo}/client/utilities/internal/makeUniqueId.js +1 -1
  46. package/dist/node_modules/@apollo/client/utilities/internal/makeUniqueId.js.map +1 -0
  47. package/dist/node_modules/{.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo → @apollo}/client/utilities/internal/memoize.js +2 -2
  48. package/dist/node_modules/@apollo/client/utilities/internal/memoize.js.map +1 -0
  49. package/dist/node_modules/{.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo → @apollo}/client/utilities/internal/stringifyForDisplay.js +1 -1
  50. package/dist/node_modules/@apollo/client/utilities/internal/stringifyForDisplay.js.map +1 -0
  51. package/dist/node_modules/{.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo → @apollo}/client/utilities/invariant/index.js +1 -1
  52. package/dist/node_modules/@apollo/client/utilities/invariant/index.js.map +1 -0
  53. package/dist/node_modules/@apollo/client/version.js +6 -0
  54. package/dist/node_modules/@apollo/client/version.js.map +1 -0
  55. package/dist/node_modules/{.bun/@wry_caches@1.0.1/node_modules/@wry → @wry}/caches/lib/weak.js +1 -1
  56. package/dist/node_modules/@wry/caches/lib/weak.js.map +1 -0
  57. package/dist/node_modules/{.bun/@wry_trie@0.5.0/node_modules/@wry → @wry}/trie/lib/index.js +1 -1
  58. package/dist/node_modules/@wry/trie/lib/index.js.map +1 -0
  59. package/dist/node_modules/{.bun/graphql-ws@6.0.8_796ebe57c2b0ffe0/node_modules/graphql-ws → graphql-ws}/dist/client.js +1 -1
  60. package/dist/node_modules/graphql-ws/dist/client.js.map +1 -0
  61. package/dist/node_modules/{.bun/graphql-ws@6.0.8_796ebe57c2b0ffe0/node_modules/graphql-ws → graphql-ws}/dist/common-CGW11Fyb.js +1 -1
  62. package/dist/node_modules/graphql-ws/dist/common-CGW11Fyb.js.map +1 -0
  63. package/dist/node_modules/{.bun/rxjs@7.8.2/node_modules/rxjs → rxjs}/dist/esm5/internal/NotificationFactories.js +1 -1
  64. package/dist/node_modules/rxjs/dist/esm5/internal/NotificationFactories.js.map +1 -0
  65. package/dist/node_modules/{.bun/rxjs@7.8.2/node_modules/rxjs → rxjs}/dist/esm5/internal/Observable.js +1 -1
  66. package/dist/node_modules/rxjs/dist/esm5/internal/Observable.js.map +1 -0
  67. package/dist/node_modules/{.bun/rxjs@7.8.2/node_modules/rxjs → rxjs}/dist/esm5/internal/Subscriber.js +2 -2
  68. package/dist/node_modules/rxjs/dist/esm5/internal/Subscriber.js.map +1 -0
  69. package/dist/node_modules/{.bun/rxjs@7.8.2/node_modules/rxjs → rxjs}/dist/esm5/internal/Subscription.js +2 -2
  70. package/dist/node_modules/rxjs/dist/esm5/internal/Subscription.js.map +1 -0
  71. package/dist/node_modules/{.bun/rxjs@7.8.2/node_modules/rxjs → rxjs}/dist/esm5/internal/config.js +1 -1
  72. package/dist/node_modules/rxjs/dist/esm5/internal/config.js.map +1 -0
  73. package/dist/node_modules/{.bun/rxjs@7.8.2/node_modules/rxjs → rxjs}/dist/esm5/internal/observable/empty.js +1 -1
  74. package/dist/node_modules/rxjs/dist/esm5/internal/observable/empty.js.map +1 -0
  75. package/dist/node_modules/{.bun/rxjs@7.8.2/node_modules/rxjs → rxjs}/dist/esm5/internal/scheduler/timeoutProvider.js +2 -2
  76. package/dist/node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js.map +1 -0
  77. package/dist/node_modules/{.bun/rxjs@7.8.2/node_modules/rxjs → rxjs}/dist/esm5/internal/symbol/observable.js +1 -1
  78. package/dist/node_modules/rxjs/dist/esm5/internal/symbol/observable.js.map +1 -0
  79. package/dist/node_modules/{.bun/rxjs@7.8.2/node_modules/rxjs → rxjs}/dist/esm5/internal/util/UnsubscriptionError.js +1 -1
  80. package/dist/node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js.map +1 -0
  81. package/dist/node_modules/rxjs/dist/esm5/internal/util/arrRemove.js +11 -0
  82. package/dist/node_modules/rxjs/dist/esm5/internal/util/arrRemove.js.map +1 -0
  83. package/dist/node_modules/{.bun/rxjs@7.8.2/node_modules/rxjs → rxjs}/dist/esm5/internal/util/createErrorClass.js +1 -1
  84. package/dist/node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js.map +1 -0
  85. package/dist/node_modules/{.bun/rxjs@7.8.2/node_modules/rxjs → rxjs}/dist/esm5/internal/util/errorContext.js +1 -1
  86. package/dist/node_modules/rxjs/dist/esm5/internal/util/errorContext.js.map +1 -0
  87. package/dist/node_modules/rxjs/dist/esm5/internal/util/identity.js +8 -0
  88. package/dist/node_modules/rxjs/dist/esm5/internal/util/identity.js.map +1 -0
  89. package/dist/node_modules/rxjs/dist/esm5/internal/util/isFunction.js +8 -0
  90. package/dist/node_modules/rxjs/dist/esm5/internal/util/isFunction.js.map +1 -0
  91. package/dist/node_modules/rxjs/dist/esm5/internal/util/noop.js +6 -0
  92. package/dist/node_modules/rxjs/dist/esm5/internal/util/noop.js.map +1 -0
  93. package/dist/node_modules/{.bun/rxjs@7.8.2/node_modules/rxjs → rxjs}/dist/esm5/internal/util/pipe.js +1 -1
  94. package/dist/node_modules/rxjs/dist/esm5/internal/util/pipe.js.map +1 -0
  95. package/dist/node_modules/{.bun/rxjs@7.8.2/node_modules/rxjs → rxjs}/dist/esm5/internal/util/reportUnhandledError.js +1 -1
  96. package/dist/node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js.map +1 -0
  97. package/dist/node_modules/{.bun/tslib@2.8.1 → rxjs}/node_modules/tslib/tslib.es6.js +1 -1
  98. package/dist/node_modules/rxjs/node_modules/tslib/tslib.es6.js.map +1 -0
  99. package/dist/pages/AdminDashboardPage.js +118 -91
  100. package/dist/pages/AdminDashboardPage.js.map +1 -1
  101. package/dist/pages/AdminReviewModerationPage.js +67 -61
  102. package/dist/pages/AdminReviewModerationPage.js.map +1 -1
  103. package/dist/pages/AdminStoresPage.js +424 -371
  104. package/dist/pages/AdminStoresPage.js.map +1 -1
  105. package/dist/pages/AdminSubmissionsQueuePage.js +303 -286
  106. package/dist/pages/AdminSubmissionsQueuePage.js.map +1 -1
  107. package/dist/pages/AppDetailPage.js +172 -135
  108. package/dist/pages/AppDetailPage.js.map +1 -1
  109. package/dist/pages/AppSettingsPage.js +83 -300
  110. package/dist/pages/AppSettingsPage.js.map +1 -1
  111. package/dist/pages/CartPage.js +71 -79
  112. package/dist/pages/CartPage.js.map +1 -1
  113. package/dist/pages/InstalledAppsPage.js +120 -337
  114. package/dist/pages/InstalledAppsPage.js.map +1 -1
  115. package/dist/pages/MarketplaceHomePage.js +196 -205
  116. package/dist/pages/MarketplaceHomePage.js.map +1 -1
  117. package/dist/pages/MyLicensesPage.js +70 -75
  118. package/dist/pages/MyLicensesPage.js.map +1 -1
  119. package/dist/pages/OrderConfirmationPage.js +70 -37
  120. package/dist/pages/OrderConfirmationPage.js.map +1 -1
  121. package/dist/pages/OrdersPage.js +60 -68
  122. package/dist/pages/OrdersPage.js.map +1 -1
  123. package/dist/pages/ProductDetailPage.js +794 -752
  124. package/dist/pages/ProductDetailPage.js.map +1 -1
  125. package/dist/providers/StoreProvider.js +3 -3
  126. package/package.json +2 -2
  127. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/errors/CombinedGraphQLErrors.js.map +0 -1
  128. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/errors/utils.js.map +0 -1
  129. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/link/core/ApolloLink.js.map +0 -1
  130. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/link/subscriptions/index.js.map +0 -1
  131. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/link/utils/createOperation.js.map +0 -1
  132. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/caching/sizes.js.map +0 -1
  133. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/graphql/print.js.map +0 -1
  134. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/caches.js.map +0 -1
  135. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/checkDocument.js.map +0 -1
  136. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/getMainDefinition.js.map +0 -1
  137. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/getMemoryInternals.js +0 -9
  138. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/getMemoryInternals.js.map +0 -1
  139. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/getOperationDefinition.js.map +0 -1
  140. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/getOperationName.js +0 -8
  141. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/getOperationName.js.map +0 -1
  142. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/globals/global.js.map +0 -1
  143. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/globals/maybe.js +0 -10
  144. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/globals/maybe.js.map +0 -1
  145. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/isNonNullObject.js +0 -8
  146. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/isNonNullObject.js.map +0 -1
  147. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/makeUniqueId.js.map +0 -1
  148. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/memoize.js.map +0 -1
  149. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/internal/stringifyForDisplay.js.map +0 -1
  150. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/utilities/invariant/index.js.map +0 -1
  151. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/version.js +0 -6
  152. package/dist/node_modules/.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo/client/version.js.map +0 -1
  153. package/dist/node_modules/.bun/@wry_caches@1.0.1/node_modules/@wry/caches/lib/weak.js.map +0 -1
  154. package/dist/node_modules/.bun/@wry_trie@0.5.0/node_modules/@wry/trie/lib/index.js.map +0 -1
  155. package/dist/node_modules/.bun/graphql-ws@6.0.8_796ebe57c2b0ffe0/node_modules/graphql-ws/dist/client.js.map +0 -1
  156. package/dist/node_modules/.bun/graphql-ws@6.0.8_796ebe57c2b0ffe0/node_modules/graphql-ws/dist/common-CGW11Fyb.js.map +0 -1
  157. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/NotificationFactories.js.map +0 -1
  158. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Observable.js.map +0 -1
  159. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subscriber.js.map +0 -1
  160. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subscription.js.map +0 -1
  161. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/config.js.map +0 -1
  162. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/empty.js.map +0 -1
  163. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js.map +0 -1
  164. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/symbol/observable.js.map +0 -1
  165. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js.map +0 -1
  166. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/arrRemove.js +0 -11
  167. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/arrRemove.js.map +0 -1
  168. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js.map +0 -1
  169. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/errorContext.js.map +0 -1
  170. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/identity.js +0 -8
  171. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/identity.js.map +0 -1
  172. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isFunction.js +0 -8
  173. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isFunction.js.map +0 -1
  174. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/noop.js +0 -6
  175. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/noop.js.map +0 -1
  176. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/pipe.js.map +0 -1
  177. package/dist/node_modules/.bun/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js.map +0 -1
  178. package/dist/node_modules/.bun/tslib@2.8.1/node_modules/tslib/tslib.es6.js.map +0 -1
  179. package/dist/pages/ProductReviewsPage.js +0 -87
  180. package/dist/pages/ProductReviewsPage.js.map +0 -1
  181. package/dist/pages/PublisherDashboardPage.js +0 -160
  182. package/dist/pages/PublisherDashboardPage.js.map +0 -1
  183. package/dist/pages/PublisherRevenuePage.js +0 -140
  184. package/dist/pages/PublisherRevenuePage.js.map +0 -1
  185. package/dist/pages/PublisherSubmissionsPage.js +0 -179
  186. package/dist/pages/PublisherSubmissionsPage.js.map +0 -1
  187. package/dist/pages/PublisherSubmitPage.js +0 -230
  188. package/dist/pages/PublisherSubmitPage.js.map +0 -1
  189. /package/dist/node_modules/{.bun/@apollo_client@4.1.9_e571b0b00fd00a97/node_modules/@apollo → @apollo}/client/utilities/caching/sizes.js +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"PublisherSubmissionsPage.js","names":[],"sources":["../../src/pages/PublisherSubmissionsPage.tsx"],"sourcesContent":["import type { FC } from 'react';\nimport { useMemo } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { ArrowLeft, FileCheck2, Clock3, CheckCircle2, XCircle, MessageSquare } from 'lucide-react';\nimport { useStore } from '../providers/StoreProvider';\nimport { useMyPublishedProducts } from '../hooks/useStoreGraphQL';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { useSubmissionStatusUpdatedSubscription } from '../generated/global-operations';\n\nconst statusClass = (status: string): string => {\n if (status === 'PUBLISHED' || status === 'APPROVED') {\n return 'bg-status-success-bg-subtle text-status-success-text';\n }\n if (status === 'REJECTED' || status === 'UNLISTED') {\n return 'bg-status-error-bg-subtle text-status-error-text';\n }\n if (status === 'PENDING' || status === 'SUBMITTED' || status === 'UNDER_REVIEW') {\n return 'bg-status-warning-bg-subtle text-status-warning-text';\n }\n return 'bg-bg-sunken text-text-muted';\n};\n\nexport const PublisherSubmissionsPage: FC = () => {\n const navigate = useNavigate();\n const { basePath, currentUser } = useStore();\n const { products, hasMore, loading, error, refetch, loadMore } = useMyPublishedProducts();\n const { t } = useI18n();\n\n const publisherId = currentUser?.id;\n useSubmissionStatusUpdatedSubscription({\n variables: { publisherId: publisherId ?? '' },\n skip: !publisherId,\n onData: () => {\n void refetch();\n },\n onError: (err) => {\n console.warn('SubmissionStatusUpdated subscription error:', err.message);\n },\n });\n\n const grouped = useMemo(() => {\n const approved = products.filter(\n (p) => p.status === 'PUBLISHED' || p.status === 'APPROVED'\n ).length;\n const rejected = products.filter(\n (p) => p.status === 'REJECTED' || p.status === 'UNLISTED'\n ).length;\n const pending = products.length - approved - rejected;\n return { approved, rejected, pending };\n }, [products]);\n\n return (\n <div className=\"flex h-full flex-col\">\n <header className=\"border-b border-border-default bg-bg-surface px-6 py-4\">\n <div className=\"mx-auto flex max-w-6xl items-center gap-3\">\n <button\n type=\"button\"\n onClick={() => navigate(-1)}\n aria-label=\"Go back\"\n className=\"cursor-pointer rounded-lg p-2 text-text-muted hover:bg-bg-sunken hover:text-text-primary\"\n >\n <ArrowLeft className=\"size-5\" />\n </button>\n <div>\n <h1 className=\"text-2xl font-bold text-text-primary\">\n {t('pages.publisherSubmissions.title', { defaultValue: 'Submissions' })}\n </h1>\n <p className=\"text-sm text-text-muted\">\n {t('pages.publisherSubmissions.subtitle', {\n defaultValue: 'Track approval status for your store products',\n })}\n </p>\n </div>\n </div>\n </header>\n\n <main className=\"flex-1 overflow-y-auto p-6\">\n <div className=\"mx-auto max-w-6xl space-y-6\">\n <div className=\"grid gap-4 sm:grid-cols-3\">\n <div className=\"rounded-xl border border-border-default bg-bg-surface p-4\">\n <div className=\"inline-flex items-center gap-2 text-xs uppercase tracking-wide text-text-muted\">\n <Clock3 className=\"size-4\" />{' '}\n {t('store.status.pending', { defaultValue: 'Pending' })}\n </div>\n <p className=\"mt-2 text-2xl font-bold text-text-primary\">{grouped.pending}</p>\n </div>\n <div className=\"rounded-xl border border-border-default bg-bg-surface p-4\">\n <div className=\"inline-flex items-center gap-2 text-xs uppercase tracking-wide text-text-muted\">\n <CheckCircle2 className=\"size-4\" />{' '}\n {t('store.status.approved', { defaultValue: 'Approved' })}\n </div>\n <p className=\"mt-2 text-2xl font-bold text-text-primary\">{grouped.approved}</p>\n </div>\n <div className=\"rounded-xl border border-border-default bg-bg-surface p-4\">\n <div className=\"inline-flex items-center gap-2 text-xs uppercase tracking-wide text-text-muted\">\n <XCircle className=\"size-4\" />{' '}\n {t('store.status.rejected', { defaultValue: 'Rejected' })}\n </div>\n <p className=\"mt-2 text-2xl font-bold text-text-primary\">{grouped.rejected}</p>\n </div>\n </div>\n\n <div className=\"rounded-xl border border-border-default bg-bg-surface p-5\">\n <div className=\"mb-4 flex items-center justify-between\">\n <h2 className=\"text-lg font-semibold text-text-primary\">\n {t('pages.publisherSubmissions.timeline', { defaultValue: 'Submission Timeline' })}\n </h2>\n <button\n type=\"button\"\n onClick={() => navigate(`${basePath}/publisher/submit`)}\n className=\"cursor-pointer rounded-lg bg-action-primary-bg px-3 py-1.5 text-sm font-semibold text-action-primary-text\"\n >\n {t('pages.publisherSubmissions.newSubmission', { defaultValue: 'New Submission' })}\n </button>\n </div>\n\n {loading ? (\n <p role=\"status\" className=\"text-sm text-text-muted\">\n Loading submissions…\n </p>\n ) : error ? (\n <div role=\"alert\" className=\"space-y-2\">\n <p className=\"text-sm text-status-error-text\">\n {t('pages.publisherSubmissions.failedToLoad', {\n defaultValue: 'Failed to load submissions.',\n })}\n </p>\n <button\n type=\"button\"\n onClick={() => refetch()}\n className=\"cursor-pointer rounded-lg bg-action-primary-bg px-3 py-1.5 text-xs font-semibold text-action-primary-text\"\n >\n Retry\n </button>\n </div>\n ) : products.length === 0 ? (\n <div className=\"rounded-lg border border-border-default bg-bg-sunken p-8 text-center\">\n <FileCheck2 className=\"mx-auto mb-2 size-10 text-text-muted\" />\n <p className=\"text-sm text-text-muted\">\n {t('pages.publisherSubmissions.emptyTitle', {\n defaultValue: 'No submissions found yet.',\n })}\n </p>\n </div>\n ) : (\n <ul className=\"space-y-3\">\n {products.map((product) => (\n <li\n key={product.id}\n className=\"flex items-center justify-between rounded-lg border border-border-default p-3 transition-colors hover:bg-bg-sunken\"\n >\n <button\n type=\"button\"\n onClick={() => navigate(`${basePath}/marketplace/product/${product.id}`)}\n className=\"flex flex-1 cursor-pointer items-center justify-between text-left\"\n >\n <div>\n <p className=\"font-medium text-text-primary\">{product.name}</p>\n <p className=\"text-xs text-text-muted\">Reviews: {product.reviewCount}</p>\n </div>\n <span\n className={`rounded-full px-2.5 py-1 text-xs font-semibold ${statusClass(product.status)}`}\n >\n {product.status}\n </span>\n </button>\n <button\n type=\"button\"\n onClick={() =>\n navigate(`${basePath}/publisher/product/${product.id}/reviews`)\n }\n className=\"ml-3 inline-flex cursor-pointer items-center gap-1 rounded-md px-2 py-1 text-xs font-medium text-text-link hover:bg-bg-sunken hover:underline\"\n title=\"View reviews\"\n >\n <MessageSquare className=\"size-3.5\" />\n Reviews\n </button>\n </li>\n ))}\n {hasMore && (\n <li className=\"flex justify-center pt-4 list-none\">\n <button\n type=\"button\"\n onClick={loadMore}\n disabled={loading}\n className=\"rounded-lg border border-border-default px-6 py-2.5 text-sm font-medium text-text-primary hover:bg-bg-subtle disabled:opacity-50\"\n >\n {loading ? 'Loading\\u2026' : 'Load more'}\n </button>\n </li>\n )}\n </ul>\n )}\n </div>\n </div>\n </main>\n </div>\n );\n};\n"],"mappings":"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"}
@@ -1,230 +0,0 @@
1
- import { CreateProductForPublisherDocument as e } from "../generated/global-operations.js";
2
- import { useMemo as t, useState as n } from "react";
3
- import { useApolloClient as r } from "@apollo/client/react";
4
- import { jsx as i, jsxs as a } from "react/jsx-runtime";
5
- //#region src/pages/PublisherSubmitPage.tsx
6
- var o = JSON.stringify({
7
- schemaVersion: "1.0.0",
8
- itemType: "app",
9
- author: { name: "Publisher Team" },
10
- compatibility: {
11
- minVersion: "2026.1.0",
12
- products: ["workspaces"]
13
- },
14
- permissions: ["workspace:read"],
15
- dependencies: { integrations: [] }
16
- }, null, 2), s = () => {
17
- let s = r(), [c, l] = n(""), [u, d] = n(""), [f, p] = n(""), [m, h] = n("APP"), [g, _] = n("0"), [v, y] = n(o), [b, x] = n(!1), [S, C] = n(null), [w, T] = n(null), E = t(() => {
18
- try {
19
- return {
20
- value: JSON.parse(v),
21
- error: null
22
- };
23
- } catch {
24
- return {
25
- value: null,
26
- error: "Manifest JSON is invalid."
27
- };
28
- }
29
- }, [v]);
30
- return /* @__PURE__ */ a("main", {
31
- className: "mx-auto max-w-4xl p-6",
32
- children: [/* @__PURE__ */ a("header", {
33
- className: "mb-6",
34
- children: [/* @__PURE__ */ i("h1", {
35
- className: "text-2xl font-semibold text-text-primary",
36
- children: "Submit Product"
37
- }), /* @__PURE__ */ i("p", {
38
- className: "mt-1 text-sm text-text-muted",
39
- children: "Create a store product with manifest JSON (raw mode)."
40
- })]
41
- }), /* @__PURE__ */ a("form", {
42
- onSubmit: async (t) => {
43
- if (t.preventDefault(), C(null), T(null), !c.trim()) {
44
- C("Product name is required.");
45
- return;
46
- }
47
- if (!u.trim()) {
48
- C("Product slug is required.");
49
- return;
50
- }
51
- if (E.error || !E.value) {
52
- C(E.error || "Manifest JSON is required.");
53
- return;
54
- }
55
- let n = Number(g);
56
- if (!Number.isFinite(n) || n < 0) {
57
- C("Price must be a valid non-negative number.");
58
- return;
59
- }
60
- x(!0);
61
- try {
62
- let t = (await s.mutate({
63
- mutation: e,
64
- variables: { input: {
65
- name: c.trim(),
66
- slug: u.trim(),
67
- type: m,
68
- price: n,
69
- pricingModel: n === 0 ? "FREE" : "PAID_ONETIME",
70
- description: f.trim() || void 0,
71
- manifest: E.value
72
- } }
73
- })).data?.createProduct;
74
- if (!t) {
75
- C("Product creation failed: no product returned by API.");
76
- return;
77
- }
78
- T(`Created ${t.slug} (${t.status})`), l(""), d(""), p("");
79
- } catch (e) {
80
- C(e instanceof Error ? e.message : "Unknown error");
81
- } finally {
82
- x(!1);
83
- }
84
- },
85
- className: "space-y-4",
86
- "aria-label": "Submit Product",
87
- children: [
88
- /* @__PURE__ */ a("div", {
89
- className: "grid gap-4 md:grid-cols-2",
90
- children: [
91
- /* @__PURE__ */ a("label", {
92
- className: "space-y-1",
93
- children: [/* @__PURE__ */ i("span", {
94
- className: "text-sm text-text-secondary",
95
- children: "Product Name"
96
- }), /* @__PURE__ */ i("input", {
97
- "aria-label": "Product Name",
98
- value: c,
99
- onChange: (e) => l(e.target.value),
100
- required: !0,
101
- "aria-required": "true",
102
- className: "w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary",
103
- placeholder: "Acme Automation"
104
- })]
105
- }),
106
- /* @__PURE__ */ a("label", {
107
- className: "space-y-1",
108
- children: [/* @__PURE__ */ i("span", {
109
- className: "text-sm text-text-secondary",
110
- children: "Slug"
111
- }), /* @__PURE__ */ i("input", {
112
- "aria-label": "Slug",
113
- value: u,
114
- onChange: (e) => d(e.target.value),
115
- required: !0,
116
- "aria-required": "true",
117
- className: "w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary",
118
- placeholder: "acme-automation"
119
- })]
120
- }),
121
- /* @__PURE__ */ a("label", {
122
- className: "space-y-1",
123
- children: [/* @__PURE__ */ i("span", {
124
- className: "text-sm text-text-secondary",
125
- children: "Type"
126
- }), /* @__PURE__ */ a("select", {
127
- "aria-label": "Product type",
128
- value: m,
129
- onChange: (e) => h(e.target.value),
130
- className: "w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary",
131
- children: [
132
- /* @__PURE__ */ i("option", {
133
- value: "APP",
134
- children: "APP"
135
- }),
136
- /* @__PURE__ */ i("option", {
137
- value: "AGENT",
138
- children: "AGENT"
139
- }),
140
- /* @__PURE__ */ i("option", {
141
- value: "NODE",
142
- children: "NODE"
143
- }),
144
- /* @__PURE__ */ i("option", {
145
- value: "WIDGET",
146
- children: "WIDGET"
147
- }),
148
- /* @__PURE__ */ i("option", {
149
- value: "WORKFLOW",
150
- children: "WORKFLOW"
151
- })
152
- ]
153
- })]
154
- }),
155
- /* @__PURE__ */ a("label", {
156
- className: "space-y-1",
157
- children: [/* @__PURE__ */ i("span", {
158
- className: "text-sm text-text-secondary",
159
- children: "Price"
160
- }), /* @__PURE__ */ i("input", {
161
- type: "number",
162
- "aria-label": "Price",
163
- min: "0",
164
- step: "0.01",
165
- value: g,
166
- onChange: (e) => _(e.target.value),
167
- className: "w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary"
168
- })]
169
- })
170
- ]
171
- }),
172
- /* @__PURE__ */ a("label", {
173
- className: "block space-y-1",
174
- children: [/* @__PURE__ */ i("span", {
175
- className: "text-sm text-text-secondary",
176
- children: "Description"
177
- }), /* @__PURE__ */ i("textarea", {
178
- "aria-label": "Description",
179
- value: f,
180
- onChange: (e) => p(e.target.value),
181
- rows: 3,
182
- className: "w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary"
183
- })]
184
- }),
185
- /* @__PURE__ */ a("label", {
186
- className: "block space-y-1",
187
- children: [
188
- /* @__PURE__ */ i("span", {
189
- className: "text-sm text-text-secondary",
190
- children: "Manifest (JSON)"
191
- }),
192
- /* @__PURE__ */ i("textarea", {
193
- "aria-label": "Manifest JSON",
194
- value: v,
195
- onChange: (e) => y(e.target.value),
196
- rows: 16,
197
- required: !0,
198
- "aria-required": "true",
199
- className: "w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 font-mono text-xs text-text-primary"
200
- }),
201
- E.error && /* @__PURE__ */ i("p", {
202
- className: "text-xs text-status-error-text",
203
- children: E.error
204
- })
205
- ]
206
- }),
207
- S && /* @__PURE__ */ i("p", {
208
- role: "alert",
209
- className: "rounded-md bg-status-error-bg-subtle px-3 py-2 text-sm text-status-error-text",
210
- children: S
211
- }),
212
- w && /* @__PURE__ */ i("p", {
213
- role: "status",
214
- className: "rounded-md bg-status-success-bg-subtle px-3 py-2 text-sm text-status-success-text",
215
- children: w
216
- }),
217
- /* @__PURE__ */ i("button", {
218
- type: "submit",
219
- disabled: b,
220
- className: "rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text disabled:cursor-not-allowed disabled:opacity-60",
221
- children: b ? "Submitting..." : "Submit Product"
222
- })
223
- ]
224
- })]
225
- });
226
- };
227
- //#endregion
228
- export { s as PublisherSubmitPage };
229
-
230
- //# sourceMappingURL=PublisherSubmitPage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PublisherSubmitPage.js","names":[],"sources":["../../src/pages/PublisherSubmitPage.tsx"],"sourcesContent":["import { useApolloClient } from '@apollo/client/react';\nimport { useMemo, useState, type FC, type FormEvent } from 'react';\n\nimport { CreateProductForPublisherDocument } from '../generated/global-operations';\n\nconst DEFAULT_MANIFEST = JSON.stringify(\n {\n schemaVersion: '1.0.0',\n itemType: 'app',\n author: { name: 'Publisher Team' },\n compatibility: {\n minVersion: '2026.1.0',\n products: ['workspaces'],\n },\n permissions: ['workspace:read'],\n dependencies: {\n integrations: [],\n },\n },\n null,\n 2\n);\n\nexport const PublisherSubmitPage: FC = () => {\n const client = useApolloClient();\n\n const [name, setName] = useState('');\n const [slug, setSlug] = useState('');\n const [description, setDescription] = useState('');\n const [type, setType] = useState('APP');\n const [price, setPrice] = useState('0');\n const [manifestText, setManifestText] = useState(DEFAULT_MANIFEST);\n const [submitting, setSubmitting] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [success, setSuccess] = useState<string | null>(null);\n\n const parsedManifest = useMemo(() => {\n try {\n return { value: JSON.parse(manifestText), error: null as string | null };\n } catch {\n return { value: null, error: 'Manifest JSON is invalid.' };\n }\n }, [manifestText]);\n\n const submitProduct = async (event: FormEvent) => {\n event.preventDefault();\n setError(null);\n setSuccess(null);\n\n if (!name.trim()) {\n setError('Product name is required.');\n return;\n }\n if (!slug.trim()) {\n setError('Product slug is required.');\n return;\n }\n if (parsedManifest.error || !parsedManifest.value) {\n setError(parsedManifest.error || 'Manifest JSON is required.');\n return;\n }\n\n const numericPrice = Number(price);\n if (!Number.isFinite(numericPrice) || numericPrice < 0) {\n setError('Price must be a valid non-negative number.');\n return;\n }\n\n setSubmitting(true);\n try {\n const result = await client.mutate<{\n createProduct?: { id: string; slug: string; status: string };\n }>({\n mutation: CreateProductForPublisherDocument,\n variables: {\n input: {\n name: name.trim(),\n slug: slug.trim(),\n type,\n price: numericPrice,\n pricingModel: numericPrice === 0 ? 'FREE' : 'PAID_ONETIME',\n description: description.trim() || undefined,\n manifest: parsedManifest.value,\n },\n },\n });\n\n const created = result.data?.createProduct;\n if (!created) {\n setError('Product creation failed: no product returned by API.');\n return;\n }\n\n setSuccess(`Created ${created.slug} (${created.status})`);\n setName('');\n setSlug('');\n setDescription('');\n } catch (mutationError) {\n const message = mutationError instanceof Error ? mutationError.message : 'Unknown error';\n setError(message);\n } finally {\n setSubmitting(false);\n }\n };\n\n return (\n <main className=\"mx-auto max-w-4xl p-6\">\n <header className=\"mb-6\">\n <h1 className=\"text-2xl font-semibold text-text-primary\">Submit Product</h1>\n <p className=\"mt-1 text-sm text-text-muted\">\n Create a store product with manifest JSON (raw mode).\n </p>\n </header>\n\n <form onSubmit={submitProduct} className=\"space-y-4\" aria-label=\"Submit Product\">\n <div className=\"grid gap-4 md:grid-cols-2\">\n <label className=\"space-y-1\">\n <span className=\"text-sm text-text-secondary\">Product Name</span>\n <input\n aria-label=\"Product Name\"\n value={name}\n onChange={(event) => setName(event.target.value)}\n required\n aria-required=\"true\"\n className=\"w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n placeholder=\"Acme Automation\"\n />\n </label>\n\n <label className=\"space-y-1\">\n <span className=\"text-sm text-text-secondary\">Slug</span>\n <input\n aria-label=\"Slug\"\n value={slug}\n onChange={(event) => setSlug(event.target.value)}\n required\n aria-required=\"true\"\n className=\"w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n placeholder=\"acme-automation\"\n />\n </label>\n\n <label className=\"space-y-1\">\n <span className=\"text-sm text-text-secondary\">Type</span>\n <select\n aria-label=\"Product type\"\n value={type}\n onChange={(event) => setType(event.target.value)}\n className=\"w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n >\n <option value=\"APP\">APP</option>\n <option value=\"AGENT\">AGENT</option>\n <option value=\"NODE\">NODE</option>\n <option value=\"WIDGET\">WIDGET</option>\n <option value=\"WORKFLOW\">WORKFLOW</option>\n </select>\n </label>\n\n <label className=\"space-y-1\">\n <span className=\"text-sm text-text-secondary\">Price</span>\n <input\n type=\"number\"\n aria-label=\"Price\"\n min=\"0\"\n step=\"0.01\"\n value={price}\n onChange={(event) => setPrice(event.target.value)}\n className=\"w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n />\n </label>\n </div>\n\n <label className=\"block space-y-1\">\n <span className=\"text-sm text-text-secondary\">Description</span>\n <textarea\n aria-label=\"Description\"\n value={description}\n onChange={(event) => setDescription(event.target.value)}\n rows={3}\n className=\"w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n />\n </label>\n\n <label className=\"block space-y-1\">\n <span className=\"text-sm text-text-secondary\">Manifest (JSON)</span>\n <textarea\n aria-label=\"Manifest JSON\"\n value={manifestText}\n onChange={(event) => setManifestText(event.target.value)}\n rows={16}\n required\n aria-required=\"true\"\n className=\"w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 font-mono text-xs text-text-primary\"\n />\n {parsedManifest.error && (\n <p className=\"text-xs text-status-error-text\">{parsedManifest.error}</p>\n )}\n </label>\n\n {error && (\n <p\n role=\"alert\"\n className=\"rounded-md bg-status-error-bg-subtle px-3 py-2 text-sm text-status-error-text\"\n >\n {error}\n </p>\n )}\n {success && (\n <p\n role=\"status\"\n className=\"rounded-md bg-status-success-bg-subtle px-3 py-2 text-sm text-status-success-text\"\n >\n {success}\n </p>\n )}\n\n <button\n type=\"submit\"\n disabled={submitting}\n className=\"rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text disabled:cursor-not-allowed disabled:opacity-60\"\n >\n {submitting ? 'Submitting...' : 'Submit Product'}\n </button>\n </form>\n </main>\n );\n};\n"],"mappings":"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"}