@burdenoff/microfe-devportal 2026.1108.1 → 2026.1109.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1408) hide show
  1. package/dist/__tests__/utils/renderWithProviders.d.ts +0 -2
  2. package/dist/_virtual/_rolldown/runtime.js +4 -5
  3. package/dist/dev/main.d.ts +0 -1
  4. package/dist/devportal/AdminDevportalRoot.d.ts +0 -2
  5. package/dist/devportal/AdminDevportalRoot.js +9 -6
  6. package/dist/devportal/AdminDevportalRoot.js.map +1 -1
  7. package/dist/devportal/AdminDevportalRoutes.d.ts +1 -2
  8. package/dist/devportal/AdminDevportalRoutes.js +1 -2
  9. package/dist/devportal/AdminDevportalRoutes.js.map +1 -1
  10. package/dist/devportal/DevportalRoot.d.ts +0 -2
  11. package/dist/devportal/DevportalRoot.js +75 -65
  12. package/dist/devportal/DevportalRoot.js.map +1 -1
  13. package/dist/devportal/DevportalRoutes.d.ts +1 -2
  14. package/dist/devportal/DevportalRoutes.js +149 -143
  15. package/dist/devportal/DevportalRoutes.js.map +1 -1
  16. package/dist/devportal/components/AppCard.d.ts +0 -2
  17. package/dist/devportal/components/AppCard.js +21 -22
  18. package/dist/devportal/components/AppCard.js.map +1 -1
  19. package/dist/devportal/components/ConfirmDialog.d.ts +0 -2
  20. package/dist/devportal/components/ConfirmDialog.js +9 -10
  21. package/dist/devportal/components/ConfirmDialog.js.map +1 -1
  22. package/dist/devportal/components/DataTable.d.ts +1 -3
  23. package/dist/devportal/components/DataTable.js +20 -21
  24. package/dist/devportal/components/DataTable.js.map +1 -1
  25. package/dist/devportal/components/EmptyState.d.ts +0 -2
  26. package/dist/devportal/components/EmptyState.js +1 -2
  27. package/dist/devportal/components/EmptyState.js.map +1 -1
  28. package/dist/devportal/components/FeatureFlaggedRoute.d.ts +0 -2
  29. package/dist/devportal/components/FeatureFlaggedRoute.js +1 -2
  30. package/dist/devportal/components/FeatureFlaggedRoute.js.map +1 -1
  31. package/dist/devportal/components/FormField.d.ts +0 -2
  32. package/dist/devportal/components/FormField.js +23 -24
  33. package/dist/devportal/components/FormField.js.map +1 -1
  34. package/dist/devportal/components/GrantDelegationModal.d.ts +0 -2
  35. package/dist/devportal/components/GrantDelegationModal.js +1 -2
  36. package/dist/devportal/components/GrantDelegationModal.js.map +1 -1
  37. package/dist/devportal/components/ImageUploadField.d.ts +0 -2
  38. package/dist/devportal/components/ImageUploadField.js +1 -2
  39. package/dist/devportal/components/ImageUploadField.js.map +1 -1
  40. package/dist/devportal/components/LoadingState.d.ts +0 -2
  41. package/dist/devportal/components/LoadingState.js +6 -7
  42. package/dist/devportal/components/LoadingState.js.map +1 -1
  43. package/dist/devportal/components/ManifestViewer.d.ts +0 -2
  44. package/dist/devportal/components/ManifestViewer.js +1 -2
  45. package/dist/devportal/components/ManifestViewer.js.map +1 -1
  46. package/dist/devportal/components/MarkdownEditor.d.ts +0 -2
  47. package/dist/devportal/components/MarkdownEditor.js +1 -2
  48. package/dist/devportal/components/MarkdownEditor.js.map +1 -1
  49. package/dist/devportal/components/MultiSelectCombobox.d.ts +1 -2
  50. package/dist/devportal/components/MultiSelectCombobox.js +1 -2
  51. package/dist/devportal/components/MultiSelectCombobox.js.map +1 -1
  52. package/dist/devportal/components/NodeSmokePanel.d.ts +0 -2
  53. package/dist/devportal/components/NodeSmokePanel.js +17 -18
  54. package/dist/devportal/components/NodeSmokePanel.js.map +1 -1
  55. package/dist/devportal/components/OnboardingChecklist.d.ts +0 -2
  56. package/dist/devportal/components/OnboardingChecklist.js +15 -16
  57. package/dist/devportal/components/OnboardingChecklist.js.map +1 -1
  58. package/dist/devportal/components/PackageValidationPanel.d.ts +0 -2
  59. package/dist/devportal/components/PackageValidationPanel.js +12 -13
  60. package/dist/devportal/components/PackageValidationPanel.js.map +1 -1
  61. package/dist/devportal/components/PageLayout.d.ts +0 -2
  62. package/dist/devportal/components/PageLayout.js +16 -17
  63. package/dist/devportal/components/PageLayout.js.map +1 -1
  64. package/dist/devportal/components/PermissionGuard.d.ts +0 -2
  65. package/dist/devportal/components/PermissionGuard.js +5 -6
  66. package/dist/devportal/components/PermissionGuard.js.map +1 -1
  67. package/dist/devportal/components/RegisterPickupLocationModal.d.ts +0 -2
  68. package/dist/devportal/components/RegisterPickupLocationModal.js +13 -14
  69. package/dist/devportal/components/RegisterPickupLocationModal.js.map +1 -1
  70. package/dist/devportal/components/ReportOrderIssueModal.d.ts +0 -2
  71. package/dist/devportal/components/ReportOrderIssueModal.js +1 -2
  72. package/dist/devportal/components/ReportOrderIssueModal.js.map +1 -1
  73. package/dist/devportal/components/SecretDisplay.d.ts +0 -2
  74. package/dist/devportal/components/SecretDisplay.js +8 -9
  75. package/dist/devportal/components/SecretDisplay.js.map +1 -1
  76. package/dist/devportal/components/SectionNav.d.ts +0 -2
  77. package/dist/devportal/components/SectionNav.js +11 -12
  78. package/dist/devportal/components/SectionNav.js.map +1 -1
  79. package/dist/devportal/components/SelectionCheckbox.d.ts +1 -2
  80. package/dist/devportal/components/SelectionCheckbox.js +1 -2
  81. package/dist/devportal/components/SelectionCheckbox.js.map +1 -1
  82. package/dist/devportal/components/StatCard.d.ts +0 -2
  83. package/dist/devportal/components/StatCard.js +1 -2
  84. package/dist/devportal/components/StatCard.js.map +1 -1
  85. package/dist/devportal/components/StatusBadge.d.ts +0 -2
  86. package/dist/devportal/components/StatusBadge.js +18 -19
  87. package/dist/devportal/components/StatusBadge.js.map +1 -1
  88. package/dist/devportal/components/TelemetryErrorBoundary.d.ts +0 -2
  89. package/dist/devportal/components/TelemetryErrorBoundary.js +1 -2
  90. package/dist/devportal/components/TelemetryErrorBoundary.js.map +1 -1
  91. package/dist/devportal/components/index.d.ts +0 -1
  92. package/dist/devportal/components/index.js +22 -21
  93. package/dist/devportal/constants/appCategories.d.ts +0 -1
  94. package/dist/devportal/constants/appCategories.js +1 -2
  95. package/dist/devportal/constants/appCategories.js.map +1 -1
  96. package/dist/devportal/constants/developerLinks.d.ts +0 -1
  97. package/dist/devportal/constants/developerLinks.js +23 -23
  98. package/dist/devportal/constants/developerLinks.js.map +1 -1
  99. package/dist/devportal/constants/permissions.d.ts +0 -1
  100. package/dist/devportal/constants/permissions.js +1 -2
  101. package/dist/devportal/constants/permissions.js.map +1 -1
  102. package/dist/devportal/events/index.d.ts +0 -1
  103. package/dist/devportal/events/index.js +1 -2
  104. package/dist/devportal/events/index.js.map +1 -1
  105. package/dist/devportal/hooks/DevPortalProvider.d.ts +1 -3
  106. package/dist/devportal/hooks/DevPortalProvider.js +2 -3
  107. package/dist/devportal/hooks/DevPortalProvider.js.map +1 -1
  108. package/dist/devportal/hooks/index.d.ts +0 -1
  109. package/dist/devportal/hooks/index.js +6 -5
  110. package/dist/devportal/hooks/useCarrierPickupLocations.d.ts +0 -1
  111. package/dist/devportal/hooks/useCarrierPickupLocations.js +1 -2
  112. package/dist/devportal/hooks/useCarrierPickupLocations.js.map +1 -1
  113. package/dist/devportal/hooks/useGraphQL.d.ts +0 -2
  114. package/dist/devportal/hooks/useGraphQL.js +42 -53
  115. package/dist/devportal/hooks/useGraphQL.js.map +1 -1
  116. package/dist/devportal/hooks/useIsSellerSection.d.ts +0 -1
  117. package/dist/devportal/hooks/useIsSellerSection.js +1 -2
  118. package/dist/devportal/hooks/useIsSellerSection.js.map +1 -1
  119. package/dist/devportal/hooks/useOrganizationPickupAddresses.d.ts +0 -1
  120. package/dist/devportal/hooks/useOrganizationPickupAddresses.js +3 -8
  121. package/dist/devportal/hooks/useOrganizationPickupAddresses.js.map +1 -1
  122. package/dist/devportal/hooks/usePackageUpload.d.ts +0 -1
  123. package/dist/devportal/hooks/usePackageUpload.js +4 -4
  124. package/dist/devportal/hooks/usePackageUpload.js.map +1 -1
  125. package/dist/devportal/hooks/usePermission.d.ts +0 -2
  126. package/dist/devportal/hooks/usePermission.js +2 -3
  127. package/dist/devportal/hooks/usePermission.js.map +1 -1
  128. package/dist/devportal/hooks/useProducts.d.ts +0 -1
  129. package/dist/devportal/hooks/useProducts.js +1 -2
  130. package/dist/devportal/hooks/useProducts.js.map +1 -1
  131. package/dist/devportal/hooks/useSellerOrganization.d.ts +0 -1
  132. package/dist/devportal/hooks/useSellerOrganization.js +1 -2
  133. package/dist/devportal/hooks/useSellerOrganization.js.map +1 -1
  134. package/dist/devportal/index.d.ts +0 -1
  135. package/dist/devportal/index.js +13 -12
  136. package/dist/devportal/pages/AdminOrganizationVerificationPage.d.ts +0 -2
  137. package/dist/devportal/pages/AdminOrganizationVerificationPage.js +13 -13
  138. package/dist/devportal/pages/AdminOrganizationVerificationPage.js.map +1 -1
  139. package/dist/devportal/pages/AdminReviewPage.d.ts +0 -2
  140. package/dist/devportal/pages/AdminReviewPage.js +134 -135
  141. package/dist/devportal/pages/AdminReviewPage.js.map +1 -1
  142. package/dist/devportal/pages/AnalyticsDashboardPage.d.ts +0 -2
  143. package/dist/devportal/pages/AnalyticsDashboardPage.js +66 -67
  144. package/dist/devportal/pages/AnalyticsDashboardPage.js.map +1 -1
  145. package/dist/devportal/pages/ApiKeysPage.d.ts +0 -2
  146. package/dist/devportal/pages/ApiKeysPage.js +127 -128
  147. package/dist/devportal/pages/ApiKeysPage.js.map +1 -1
  148. package/dist/devportal/pages/AppLogsPage.d.ts +0 -2
  149. package/dist/devportal/pages/AppLogsPage.js +18 -19
  150. package/dist/devportal/pages/AppLogsPage.js.map +1 -1
  151. package/dist/devportal/pages/ApplicationDetailPage.d.ts +0 -2
  152. package/dist/devportal/pages/ApplicationDetailPage.js +779 -778
  153. package/dist/devportal/pages/ApplicationDetailPage.js.map +1 -1
  154. package/dist/devportal/pages/ApplicationVersionsPage.d.ts +0 -2
  155. package/dist/devportal/pages/ApplicationVersionsPage.js +482 -483
  156. package/dist/devportal/pages/ApplicationVersionsPage.js.map +1 -1
  157. package/dist/devportal/pages/ApplicationsPage.d.ts +0 -2
  158. package/dist/devportal/pages/ApplicationsPage.js +35 -36
  159. package/dist/devportal/pages/ApplicationsPage.js.map +1 -1
  160. package/dist/devportal/pages/CreateApiKeyPage.d.ts +0 -2
  161. package/dist/devportal/pages/CreateApiKeyPage.js +39 -39
  162. package/dist/devportal/pages/CreateApiKeyPage.js.map +1 -1
  163. package/dist/devportal/pages/CreateApplicationPage.d.ts +0 -2
  164. package/dist/devportal/pages/CreateApplicationPage.js +136 -137
  165. package/dist/devportal/pages/CreateApplicationPage.js.map +1 -1
  166. package/dist/devportal/pages/CreateOAuthClientPage.d.ts +0 -2
  167. package/dist/devportal/pages/CreateOAuthClientPage.js +25 -24
  168. package/dist/devportal/pages/CreateOAuthClientPage.js.map +1 -1
  169. package/dist/devportal/pages/CreateOrganizationPage.d.ts +0 -2
  170. package/dist/devportal/pages/CreateOrganizationPage.js +32 -39
  171. package/dist/devportal/pages/CreateOrganizationPage.js.map +1 -1
  172. package/dist/devportal/pages/CreatePhysicalItemPage.d.ts +0 -2
  173. package/dist/devportal/pages/CreatePhysicalItemPage.js +102 -103
  174. package/dist/devportal/pages/CreatePhysicalItemPage.js.map +1 -1
  175. package/dist/devportal/pages/CreateWebhookPage.d.ts +0 -2
  176. package/dist/devportal/pages/CreateWebhookPage.js +31 -32
  177. package/dist/devportal/pages/CreateWebhookPage.js.map +1 -1
  178. package/dist/devportal/pages/DashboardPage.d.ts +0 -2
  179. package/dist/devportal/pages/DashboardPage.js +21 -22
  180. package/dist/devportal/pages/DashboardPage.js.map +1 -1
  181. package/dist/devportal/pages/DelegationsPage.d.ts +0 -2
  182. package/dist/devportal/pages/DelegationsPage.js +83 -84
  183. package/dist/devportal/pages/DelegationsPage.js.map +1 -1
  184. package/dist/devportal/pages/DocumentationPage.d.ts +0 -2
  185. package/dist/devportal/pages/DocumentationPage.js +1 -2
  186. package/dist/devportal/pages/DocumentationPage.js.map +1 -1
  187. package/dist/devportal/pages/EditApplicationPage.d.ts +0 -2
  188. package/dist/devportal/pages/EditApplicationPage.js +69 -70
  189. package/dist/devportal/pages/EditApplicationPage.js.map +1 -1
  190. package/dist/devportal/pages/EditPhysicalItemPage.d.ts +0 -2
  191. package/dist/devportal/pages/EditPhysicalItemPage.js +334 -335
  192. package/dist/devportal/pages/EditPhysicalItemPage.js.map +1 -1
  193. package/dist/devportal/pages/InvitationDecisionPage.d.ts +0 -2
  194. package/dist/devportal/pages/InvitationDecisionPage.js +16 -17
  195. package/dist/devportal/pages/InvitationDecisionPage.js.map +1 -1
  196. package/dist/devportal/pages/ListingPreviewPage.d.ts +0 -2
  197. package/dist/devportal/pages/ListingPreviewPage.js +14 -15
  198. package/dist/devportal/pages/ListingPreviewPage.js.map +1 -1
  199. package/dist/devportal/pages/NodeLifecyclePage.d.ts +0 -2
  200. package/dist/devportal/pages/NodeLifecyclePage.js +216 -221
  201. package/dist/devportal/pages/NodeLifecyclePage.js.map +1 -1
  202. package/dist/devportal/pages/OAuthCallbackPage.d.ts +0 -2
  203. package/dist/devportal/pages/OAuthCallbackPage.js +4 -5
  204. package/dist/devportal/pages/OAuthCallbackPage.js.map +1 -1
  205. package/dist/devportal/pages/OAuthClientDetailPage.d.ts +0 -2
  206. package/dist/devportal/pages/OAuthClientDetailPage.js +17 -16
  207. package/dist/devportal/pages/OAuthClientDetailPage.js.map +1 -1
  208. package/dist/devportal/pages/OAuthClientsPage.d.ts +0 -2
  209. package/dist/devportal/pages/OAuthClientsPage.js +18 -19
  210. package/dist/devportal/pages/OAuthClientsPage.js.map +1 -1
  211. package/dist/devportal/pages/OrganizationDetailPage.d.ts +0 -2
  212. package/dist/devportal/pages/OrganizationDetailPage.js +444 -450
  213. package/dist/devportal/pages/OrganizationDetailPage.js.map +1 -1
  214. package/dist/devportal/pages/OrganizationMembersPage.d.ts +0 -2
  215. package/dist/devportal/pages/OrganizationMembersPage.js +240 -241
  216. package/dist/devportal/pages/OrganizationMembersPage.js.map +1 -1
  217. package/dist/devportal/pages/OrganizationsPage.d.ts +0 -2
  218. package/dist/devportal/pages/OrganizationsPage.js +34 -35
  219. package/dist/devportal/pages/OrganizationsPage.js.map +1 -1
  220. package/dist/devportal/pages/PublishPage.d.ts +0 -2
  221. package/dist/devportal/pages/PublishPage.js +90 -91
  222. package/dist/devportal/pages/PublishPage.js.map +1 -1
  223. package/dist/devportal/pages/PublisherPayoutsPage.d.ts +0 -2
  224. package/dist/devportal/pages/PublisherPayoutsPage.js +251 -258
  225. package/dist/devportal/pages/PublisherPayoutsPage.js.map +1 -1
  226. package/dist/devportal/pages/PublisherProfilePage.d.ts +0 -2
  227. package/dist/devportal/pages/PublisherProfilePage.js +26 -27
  228. package/dist/devportal/pages/PublisherProfilePage.js.map +1 -1
  229. package/dist/devportal/pages/ResourcesPage.d.ts +0 -2
  230. package/dist/devportal/pages/ResourcesPage.js +17 -18
  231. package/dist/devportal/pages/ResourcesPage.js.map +1 -1
  232. package/dist/devportal/pages/RevenueDashboardPage.d.ts +0 -2
  233. package/dist/devportal/pages/RevenueDashboardPage.js +308 -308
  234. package/dist/devportal/pages/RevenueDashboardPage.js.map +1 -1
  235. package/dist/devportal/pages/RevenueRedirectPage.d.ts +0 -2
  236. package/dist/devportal/pages/SellerDashboardPage.d.ts +0 -2
  237. package/dist/devportal/pages/SellerDashboardPage.js +14 -15
  238. package/dist/devportal/pages/SellerDashboardPage.js.map +1 -1
  239. package/dist/devportal/pages/SellerItemsPage.d.ts +0 -2
  240. package/dist/devportal/pages/SellerItemsPage.js +8 -9
  241. package/dist/devportal/pages/SellerItemsPage.js.map +1 -1
  242. package/dist/devportal/pages/SellerOrdersPage.d.ts +0 -2
  243. package/dist/devportal/pages/SellerOrdersPage.js +10 -14
  244. package/dist/devportal/pages/SellerOrdersPage.js.map +1 -1
  245. package/dist/devportal/pages/SettingsPage.d.ts +0 -2
  246. package/dist/devportal/pages/SettingsPage.js +20 -21
  247. package/dist/devportal/pages/SettingsPage.js.map +1 -1
  248. package/dist/devportal/pages/SetupPage.d.ts +0 -2
  249. package/dist/devportal/pages/SetupPage.js +276 -277
  250. package/dist/devportal/pages/SetupPage.js.map +1 -1
  251. package/dist/devportal/pages/StoreSubmissionPage.d.ts +0 -2
  252. package/dist/devportal/pages/StoreSubmissionPage.js +4 -5
  253. package/dist/devportal/pages/StoreSubmissionPage.js.map +1 -1
  254. package/dist/devportal/pages/TimeCampusAppletsPage.d.ts +2 -0
  255. package/dist/devportal/pages/TimeCampusAppletsPage.js +490 -0
  256. package/dist/devportal/pages/TimeCampusAppletsPage.js.map +1 -0
  257. package/dist/devportal/pages/WebhookDetailPage.d.ts +0 -2
  258. package/dist/devportal/pages/WebhookDetailPage.js +62 -67
  259. package/dist/devportal/pages/WebhookDetailPage.js.map +1 -1
  260. package/dist/devportal/pages/WebhooksPage.d.ts +0 -2
  261. package/dist/devportal/pages/WebhooksPage.js +130 -131
  262. package/dist/devportal/pages/WebhooksPage.js.map +1 -1
  263. package/dist/devportal/providers/DevportalProvider.d.ts +0 -2
  264. package/dist/devportal/providers/DevportalProvider.js +2 -3
  265. package/dist/devportal/providers/DevportalProvider.js.map +1 -1
  266. package/dist/devportal/store/devportalStore.d.ts +0 -2
  267. package/dist/devportal/store/devportalStore.js +1 -2
  268. package/dist/devportal/store/devportalStore.js.map +1 -1
  269. package/dist/devportal/types/index.d.ts +0 -2
  270. package/dist/devportal/types/index.js +1 -2
  271. package/dist/devportal/types/index.js.map +1 -1
  272. package/dist/devportal/utils/cn.d.ts +0 -2
  273. package/dist/devportal/utils/cn.js +2 -3
  274. package/dist/devportal/utils/cn.js.map +1 -1
  275. package/dist/devportal/utils/constants.d.ts +0 -1
  276. package/dist/devportal/utils/constants.js +6 -3
  277. package/dist/devportal/utils/constants.js.map +1 -1
  278. package/dist/devportal/utils/currency.d.ts +0 -1
  279. package/dist/devportal/utils/currency.js +1 -2
  280. package/dist/devportal/utils/currency.js.map +1 -1
  281. package/dist/devportal/utils/developerOnboarding.d.ts +0 -1
  282. package/dist/devportal/utils/developerOnboarding.js +4 -5
  283. package/dist/devportal/utils/developerOnboarding.js.map +1 -1
  284. package/dist/devportal/utils/graphqlEndpoint.d.ts +0 -1
  285. package/dist/devportal/utils/graphqlEndpoint.js +1 -2
  286. package/dist/devportal/utils/graphqlEndpoint.js.map +1 -1
  287. package/dist/devportal/utils/i18n.d.ts +0 -1
  288. package/dist/devportal/utils/i18n.js +1 -2
  289. package/dist/devportal/utils/i18n.js.map +1 -1
  290. package/dist/devportal/utils/nodeLifecycle.d.ts +0 -2
  291. package/dist/devportal/utils/nodeLifecycle.js +6 -7
  292. package/dist/devportal/utils/nodeLifecycle.js.map +1 -1
  293. package/dist/devportal/utils/publisherPayouts.d.ts +0 -1
  294. package/dist/devportal/utils/publisherPayouts.js +14 -15
  295. package/dist/devportal/utils/publisherPayouts.js.map +1 -1
  296. package/dist/devportal/utils/recaptcha.d.ts +0 -1
  297. package/dist/devportal/utils/recaptcha.js +1 -2
  298. package/dist/devportal/utils/recaptcha.js.map +1 -1
  299. package/dist/devportal/utils/submitForReview.d.ts +0 -1
  300. package/dist/devportal/utils/submitForReview.js +15 -14
  301. package/dist/devportal/utils/submitForReview.js.map +1 -1
  302. package/dist/devportal/utils/timecampusApplets.d.ts +98 -0
  303. package/dist/devportal/utils/timecampusApplets.js +130 -0
  304. package/dist/devportal/utils/timecampusApplets.js.map +1 -0
  305. package/dist/devportal/utils/uploadErrors.d.ts +0 -1
  306. package/dist/devportal/utils/uploadErrors.js +30 -30
  307. package/dist/devportal/utils/uploadErrors.js.map +1 -1
  308. package/dist/generated/global-operations.d.ts +2399 -2423
  309. package/dist/generated/global-operations.js +6 -5
  310. package/dist/generated/global-operations.js.map +1 -1
  311. package/dist/generated/global-types.d.ts +3881 -660
  312. package/dist/generated/global-types.js +1 -2
  313. package/dist/generated/global-types.js.map +1 -1
  314. package/dist/generated/wspace-operations.d.ts +707 -8
  315. package/dist/generated/wspace-operations.js +204 -6
  316. package/dist/generated/wspace-operations.js.map +1 -1
  317. package/dist/generated/wspace-types.d.ts +166630 -35166
  318. package/dist/index.d.ts +0 -1
  319. package/dist/index.js +1 -1
  320. package/dist/node_modules/@apollo/client/errors/CombinedGraphQLErrors.js +1 -2
  321. package/dist/node_modules/@apollo/client/errors/CombinedGraphQLErrors.js.map +1 -1
  322. package/dist/node_modules/@apollo/client/errors/ServerError.js +1 -2
  323. package/dist/node_modules/@apollo/client/errors/ServerError.js.map +1 -1
  324. package/dist/node_modules/@apollo/client/errors/utils.js +1 -2
  325. package/dist/node_modules/@apollo/client/errors/utils.js.map +1 -1
  326. package/dist/node_modules/@apollo/client/link/core/ApolloLink.js +7 -8
  327. package/dist/node_modules/@apollo/client/link/core/ApolloLink.js.map +1 -1
  328. package/dist/node_modules/@apollo/client/link/subscriptions/index.js +16 -17
  329. package/dist/node_modules/@apollo/client/link/subscriptions/index.js.map +1 -1
  330. package/dist/node_modules/@apollo/client/link/utils/createOperation.js +5 -6
  331. package/dist/node_modules/@apollo/client/link/utils/createOperation.js.map +1 -1
  332. package/dist/node_modules/@apollo/client/utilities/caching/sizes.js +0 -1
  333. package/dist/node_modules/@apollo/client/utilities/caching/sizes.js.map +1 -1
  334. package/dist/node_modules/@apollo/client/utilities/graphql/print.js +4 -5
  335. package/dist/node_modules/@apollo/client/utilities/graphql/print.js.map +1 -1
  336. package/dist/node_modules/@apollo/client/utilities/internal/caches.js +1 -2
  337. package/dist/node_modules/@apollo/client/utilities/internal/caches.js.map +1 -1
  338. package/dist/node_modules/@apollo/client/utilities/internal/checkDocument.js +1 -2
  339. package/dist/node_modules/@apollo/client/utilities/internal/checkDocument.js.map +1 -1
  340. package/dist/node_modules/@apollo/client/utilities/internal/getMainDefinition.js +2 -3
  341. package/dist/node_modules/@apollo/client/utilities/internal/getMainDefinition.js.map +1 -1
  342. package/dist/node_modules/@apollo/client/utilities/internal/getMemoryInternals.js +1 -2
  343. package/dist/node_modules/@apollo/client/utilities/internal/getMemoryInternals.js.map +1 -1
  344. package/dist/node_modules/@apollo/client/utilities/internal/getOperationDefinition.js +1 -2
  345. package/dist/node_modules/@apollo/client/utilities/internal/getOperationDefinition.js.map +1 -1
  346. package/dist/node_modules/@apollo/client/utilities/internal/getOperationName.js +1 -2
  347. package/dist/node_modules/@apollo/client/utilities/internal/getOperationName.js.map +1 -1
  348. package/dist/node_modules/@apollo/client/utilities/internal/globals/global.js +1 -2
  349. package/dist/node_modules/@apollo/client/utilities/internal/globals/global.js.map +1 -1
  350. package/dist/node_modules/@apollo/client/utilities/internal/globals/maybe.js +1 -2
  351. package/dist/node_modules/@apollo/client/utilities/internal/globals/maybe.js.map +1 -1
  352. package/dist/node_modules/@apollo/client/utilities/internal/isNonNullObject.js +1 -2
  353. package/dist/node_modules/@apollo/client/utilities/internal/isNonNullObject.js.map +1 -1
  354. package/dist/node_modules/@apollo/client/utilities/internal/makeUniqueId.js +1 -2
  355. package/dist/node_modules/@apollo/client/utilities/internal/makeUniqueId.js.map +1 -1
  356. package/dist/node_modules/@apollo/client/utilities/internal/memoize.js +1 -2
  357. package/dist/node_modules/@apollo/client/utilities/internal/memoize.js.map +1 -1
  358. package/dist/node_modules/@apollo/client/utilities/internal/stringifyForDisplay.js +1 -2
  359. package/dist/node_modules/@apollo/client/utilities/internal/stringifyForDisplay.js.map +1 -1
  360. package/dist/node_modules/@apollo/client/utilities/invariant/index.js +2 -3
  361. package/dist/node_modules/@apollo/client/utilities/invariant/index.js.map +1 -1
  362. package/dist/node_modules/@apollo/client/version.js +2 -3
  363. package/dist/node_modules/@apollo/client/version.js.map +1 -1
  364. package/dist/node_modules/@wry/caches/lib/weak.js +1 -2
  365. package/dist/node_modules/@wry/caches/lib/weak.js.map +1 -1
  366. package/dist/node_modules/@wry/trie/lib/index.js +2 -3
  367. package/dist/node_modules/@wry/trie/lib/index.js.map +1 -1
  368. package/dist/node_modules/clsx/dist/clsx.js +8 -7
  369. package/dist/node_modules/clsx/dist/clsx.js.map +1 -1
  370. package/dist/node_modules/d3-array/dist/d3-array.js +204 -0
  371. package/dist/node_modules/d3-array/dist/d3-array.js.map +1 -0
  372. package/dist/node_modules/d3-color/dist/d3-color.js +388 -0
  373. package/dist/node_modules/d3-color/dist/d3-color.js.map +1 -0
  374. package/dist/node_modules/d3-format/dist/d3-format.js +186 -0
  375. package/dist/node_modules/d3-format/dist/d3-format.js.map +1 -0
  376. package/dist/node_modules/d3-interpolate/dist/d3-interpolate.js +185 -0
  377. package/dist/node_modules/d3-interpolate/dist/d3-interpolate.js.map +1 -0
  378. package/dist/node_modules/d3-path/{src/path.js → dist/d3-path.js} +39 -14
  379. package/dist/node_modules/d3-path/dist/d3-path.js.map +1 -0
  380. package/dist/node_modules/d3-scale/dist/d3-scale.js +622 -0
  381. package/dist/node_modules/d3-scale/dist/d3-scale.js.map +1 -0
  382. package/dist/node_modules/d3-shape/dist/d3-shape.js +901 -0
  383. package/dist/node_modules/d3-shape/dist/d3-shape.js.map +1 -0
  384. package/dist/node_modules/d3-time/dist/d3-time.js +241 -0
  385. package/dist/node_modules/d3-time/dist/d3-time.js.map +1 -0
  386. package/dist/node_modules/d3-time-format/{src/locale.js → dist/d3-time-format.js} +229 -174
  387. package/dist/node_modules/d3-time-format/dist/d3-time-format.js.map +1 -0
  388. package/dist/node_modules/date-fns/_lib/addLeadingZeros.js +1 -2
  389. package/dist/node_modules/date-fns/_lib/addLeadingZeros.js.map +1 -1
  390. package/dist/node_modules/date-fns/_lib/defaultOptions.js +1 -2
  391. package/dist/node_modules/date-fns/_lib/defaultOptions.js.map +1 -1
  392. package/dist/node_modules/date-fns/_lib/format/formatters.js +29 -22
  393. package/dist/node_modules/date-fns/_lib/format/formatters.js.map +1 -1
  394. package/dist/node_modules/date-fns/_lib/format/lightFormatters.js +3 -4
  395. package/dist/node_modules/date-fns/_lib/format/lightFormatters.js.map +1 -1
  396. package/dist/node_modules/date-fns/_lib/format/longFormatters.js +2 -5
  397. package/dist/node_modules/date-fns/_lib/format/longFormatters.js.map +1 -1
  398. package/dist/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js +2 -3
  399. package/dist/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js.map +1 -1
  400. package/dist/node_modules/date-fns/_lib/protectedTokens.js +1 -2
  401. package/dist/node_modules/date-fns/_lib/protectedTokens.js.map +1 -1
  402. package/dist/node_modules/date-fns/constants.js +5 -5
  403. package/dist/node_modules/date-fns/constants.js.map +1 -1
  404. package/dist/node_modules/date-fns/constructFrom.js +2 -3
  405. package/dist/node_modules/date-fns/constructFrom.js.map +1 -1
  406. package/dist/node_modules/date-fns/differenceInCalendarDays.js +2 -3
  407. package/dist/node_modules/date-fns/differenceInCalendarDays.js.map +1 -1
  408. package/dist/node_modules/date-fns/format.js +15 -16
  409. package/dist/node_modules/date-fns/format.js.map +1 -1
  410. package/dist/node_modules/date-fns/getDayOfYear.js +7 -8
  411. package/dist/node_modules/date-fns/getDayOfYear.js.map +1 -1
  412. package/dist/node_modules/date-fns/getISOWeek.js +8 -9
  413. package/dist/node_modules/date-fns/getISOWeek.js.map +1 -1
  414. package/dist/node_modules/date-fns/getISOWeekYear.js +8 -9
  415. package/dist/node_modules/date-fns/getISOWeekYear.js.map +1 -1
  416. package/dist/node_modules/date-fns/getWeek.js +8 -9
  417. package/dist/node_modules/date-fns/getWeek.js.map +1 -1
  418. package/dist/node_modules/date-fns/getWeekYear.js +9 -10
  419. package/dist/node_modules/date-fns/getWeekYear.js.map +1 -1
  420. package/dist/node_modules/date-fns/isDate.js +2 -3
  421. package/dist/node_modules/date-fns/isDate.js.map +1 -1
  422. package/dist/node_modules/date-fns/isValid.js +6 -7
  423. package/dist/node_modules/date-fns/isValid.js.map +1 -1
  424. package/dist/node_modules/date-fns/locale/_lib/buildFormatLongFn.js +1 -2
  425. package/dist/node_modules/date-fns/locale/_lib/buildFormatLongFn.js.map +1 -1
  426. package/dist/node_modules/date-fns/locale/_lib/buildLocalizeFn.js +1 -2
  427. package/dist/node_modules/date-fns/locale/_lib/buildLocalizeFn.js.map +1 -1
  428. package/dist/node_modules/date-fns/locale/_lib/buildMatchFn.js +1 -2
  429. package/dist/node_modules/date-fns/locale/_lib/buildMatchFn.js.map +1 -1
  430. package/dist/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js +1 -2
  431. package/dist/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js.map +1 -1
  432. package/dist/node_modules/date-fns/locale/en-US/_lib/formatDistance.js +1 -2
  433. package/dist/node_modules/date-fns/locale/en-US/_lib/formatDistance.js.map +1 -1
  434. package/dist/node_modules/date-fns/locale/en-US/_lib/formatLong.js +0 -1
  435. package/dist/node_modules/date-fns/locale/en-US/_lib/formatLong.js.map +1 -1
  436. package/dist/node_modules/date-fns/locale/en-US/_lib/formatRelative.js +1 -2
  437. package/dist/node_modules/date-fns/locale/en-US/_lib/formatRelative.js.map +1 -1
  438. package/dist/node_modules/date-fns/locale/en-US/_lib/localize.js +0 -1
  439. package/dist/node_modules/date-fns/locale/en-US/_lib/localize.js.map +1 -1
  440. package/dist/node_modules/date-fns/locale/en-US/_lib/match.js +0 -1
  441. package/dist/node_modules/date-fns/locale/en-US/_lib/match.js.map +1 -1
  442. package/dist/node_modules/date-fns/locale/en-US.js +2 -3
  443. package/dist/node_modules/date-fns/locale/en-US.js.map +1 -1
  444. package/dist/node_modules/date-fns/startOfDay.js +2 -3
  445. package/dist/node_modules/date-fns/startOfDay.js.map +1 -1
  446. package/dist/node_modules/date-fns/startOfISOWeek.js +2 -3
  447. package/dist/node_modules/date-fns/startOfISOWeek.js.map +1 -1
  448. package/dist/node_modules/date-fns/startOfISOWeekYear.js +5 -6
  449. package/dist/node_modules/date-fns/startOfISOWeekYear.js.map +1 -1
  450. package/dist/node_modules/date-fns/startOfWeek.js +2 -3
  451. package/dist/node_modules/date-fns/startOfWeek.js.map +1 -1
  452. package/dist/node_modules/date-fns/startOfWeekYear.js +6 -7
  453. package/dist/node_modules/date-fns/startOfWeekYear.js.map +1 -1
  454. package/dist/node_modules/date-fns/startOfYear.js +3 -4
  455. package/dist/node_modules/date-fns/startOfYear.js.map +1 -1
  456. package/dist/node_modules/date-fns/toDate.js +2 -3
  457. package/dist/node_modules/date-fns/toDate.js.map +1 -1
  458. package/dist/node_modules/decimal.js-light/decimal.js +33 -30
  459. package/dist/node_modules/decimal.js-light/decimal.js.map +1 -1
  460. package/dist/node_modules/eventemitter3/index.js +2 -3
  461. package/dist/node_modules/eventemitter3/index.js.map +1 -1
  462. package/dist/node_modules/fast-equals/dist/es/index.js +109 -79
  463. package/dist/node_modules/fast-equals/dist/es/index.js.map +1 -1
  464. package/dist/node_modules/graphql-ws/dist/client.js +76 -69
  465. package/dist/node_modules/graphql-ws/dist/client.js.map +1 -1
  466. package/dist/node_modules/graphql-ws/dist/common-CGW11Fyb.js +2 -3
  467. package/dist/node_modules/graphql-ws/dist/common-CGW11Fyb.js.map +1 -1
  468. package/dist/node_modules/lodash/_DataView.js +4 -5
  469. package/dist/node_modules/lodash/_DataView.js.map +1 -1
  470. package/dist/node_modules/lodash/_Hash.js +1 -2
  471. package/dist/node_modules/lodash/_Hash.js.map +1 -1
  472. package/dist/node_modules/lodash/_ListCache.js +1 -2
  473. package/dist/node_modules/lodash/_ListCache.js.map +1 -1
  474. package/dist/node_modules/lodash/_Map.js +4 -5
  475. package/dist/node_modules/lodash/_Map.js.map +1 -1
  476. package/dist/node_modules/lodash/_MapCache.js +1 -2
  477. package/dist/node_modules/lodash/_MapCache.js.map +1 -1
  478. package/dist/node_modules/lodash/_Promise.js +4 -5
  479. package/dist/node_modules/lodash/_Promise.js.map +1 -1
  480. package/dist/node_modules/lodash/_Set.js +4 -5
  481. package/dist/node_modules/lodash/_Set.js.map +1 -1
  482. package/dist/node_modules/lodash/_SetCache.js +1 -2
  483. package/dist/node_modules/lodash/_SetCache.js.map +1 -1
  484. package/dist/node_modules/lodash/_Stack.js +3 -3
  485. package/dist/node_modules/lodash/_Stack.js.map +1 -1
  486. package/dist/node_modules/lodash/_Symbol.js +1 -2
  487. package/dist/node_modules/lodash/_Symbol.js.map +1 -1
  488. package/dist/node_modules/lodash/_Uint8Array.js +1 -2
  489. package/dist/node_modules/lodash/_Uint8Array.js.map +1 -1
  490. package/dist/node_modules/lodash/_WeakMap.js +4 -5
  491. package/dist/node_modules/lodash/_WeakMap.js.map +1 -1
  492. package/dist/node_modules/lodash/_apply.js +1 -2
  493. package/dist/node_modules/lodash/_apply.js.map +1 -1
  494. package/dist/node_modules/lodash/_arrayEvery.js +1 -2
  495. package/dist/node_modules/lodash/_arrayEvery.js.map +1 -1
  496. package/dist/node_modules/lodash/_arrayFilter.js +1 -2
  497. package/dist/node_modules/lodash/_arrayFilter.js.map +1 -1
  498. package/dist/node_modules/lodash/_arrayIncludes.js +1 -2
  499. package/dist/node_modules/lodash/_arrayIncludes.js.map +1 -1
  500. package/dist/node_modules/lodash/_arrayIncludesWith.js +1 -2
  501. package/dist/node_modules/lodash/_arrayIncludesWith.js.map +1 -1
  502. package/dist/node_modules/lodash/_arrayLikeKeys.js +5 -6
  503. package/dist/node_modules/lodash/_arrayLikeKeys.js.map +1 -1
  504. package/dist/node_modules/lodash/_arrayMap.js +1 -2
  505. package/dist/node_modules/lodash/_arrayMap.js.map +1 -1
  506. package/dist/node_modules/lodash/_arrayPush.js +1 -2
  507. package/dist/node_modules/lodash/_arrayPush.js.map +1 -1
  508. package/dist/node_modules/lodash/_arraySome.js +1 -2
  509. package/dist/node_modules/lodash/_arraySome.js.map +1 -1
  510. package/dist/node_modules/lodash/_asciiToArray.js +1 -2
  511. package/dist/node_modules/lodash/_asciiToArray.js.map +1 -1
  512. package/dist/node_modules/lodash/_assocIndexOf.js +1 -2
  513. package/dist/node_modules/lodash/_assocIndexOf.js.map +1 -1
  514. package/dist/node_modules/lodash/_baseAssignValue.js +1 -2
  515. package/dist/node_modules/lodash/_baseAssignValue.js.map +1 -1
  516. package/dist/node_modules/lodash/_baseEach.js +1 -2
  517. package/dist/node_modules/lodash/_baseEach.js.map +1 -1
  518. package/dist/node_modules/lodash/_baseEvery.js +1 -2
  519. package/dist/node_modules/lodash/_baseEvery.js.map +1 -1
  520. package/dist/node_modules/lodash/_baseExtremum.js +1 -2
  521. package/dist/node_modules/lodash/_baseExtremum.js.map +1 -1
  522. package/dist/node_modules/lodash/_baseFindIndex.js +1 -2
  523. package/dist/node_modules/lodash/_baseFindIndex.js.map +1 -1
  524. package/dist/node_modules/lodash/_baseFlatten.js +1 -2
  525. package/dist/node_modules/lodash/_baseFlatten.js.map +1 -1
  526. package/dist/node_modules/lodash/_baseFor.js +1 -2
  527. package/dist/node_modules/lodash/_baseFor.js.map +1 -1
  528. package/dist/node_modules/lodash/_baseForOwn.js +4 -5
  529. package/dist/node_modules/lodash/_baseForOwn.js.map +1 -1
  530. package/dist/node_modules/lodash/_baseGet.js +1 -2
  531. package/dist/node_modules/lodash/_baseGet.js.map +1 -1
  532. package/dist/node_modules/lodash/_baseGetAllKeys.js +4 -5
  533. package/dist/node_modules/lodash/_baseGetAllKeys.js.map +1 -1
  534. package/dist/node_modules/lodash/_baseGetTag.js +1 -2
  535. package/dist/node_modules/lodash/_baseGetTag.js.map +1 -1
  536. package/dist/node_modules/lodash/_baseGt.js +1 -2
  537. package/dist/node_modules/lodash/_baseGt.js.map +1 -1
  538. package/dist/node_modules/lodash/_baseHasIn.js +1 -2
  539. package/dist/node_modules/lodash/_baseHasIn.js.map +1 -1
  540. package/dist/node_modules/lodash/_baseIndexOf.js +1 -2
  541. package/dist/node_modules/lodash/_baseIndexOf.js.map +1 -1
  542. package/dist/node_modules/lodash/_baseIsArguments.js +1 -2
  543. package/dist/node_modules/lodash/_baseIsArguments.js.map +1 -1
  544. package/dist/node_modules/lodash/_baseIsEqual.js +4 -5
  545. package/dist/node_modules/lodash/_baseIsEqual.js.map +1 -1
  546. package/dist/node_modules/lodash/_baseIsEqualDeep.js +10 -11
  547. package/dist/node_modules/lodash/_baseIsEqualDeep.js.map +1 -1
  548. package/dist/node_modules/lodash/_baseIsMatch.js +1 -2
  549. package/dist/node_modules/lodash/_baseIsMatch.js.map +1 -1
  550. package/dist/node_modules/lodash/_baseIsNaN.js +1 -2
  551. package/dist/node_modules/lodash/_baseIsNaN.js.map +1 -1
  552. package/dist/node_modules/lodash/_baseIsNative.js +5 -6
  553. package/dist/node_modules/lodash/_baseIsNative.js.map +1 -1
  554. package/dist/node_modules/lodash/_baseIsTypedArray.js +4 -5
  555. package/dist/node_modules/lodash/_baseIsTypedArray.js.map +1 -1
  556. package/dist/node_modules/lodash/_baseIteratee.js +6 -7
  557. package/dist/node_modules/lodash/_baseIteratee.js.map +1 -1
  558. package/dist/node_modules/lodash/_baseKeys.js +1 -2
  559. package/dist/node_modules/lodash/_baseKeys.js.map +1 -1
  560. package/dist/node_modules/lodash/_baseLt.js +1 -2
  561. package/dist/node_modules/lodash/_baseLt.js.map +1 -1
  562. package/dist/node_modules/lodash/_baseMap.js +4 -5
  563. package/dist/node_modules/lodash/_baseMap.js.map +1 -1
  564. package/dist/node_modules/lodash/_baseMatches.js +1 -2
  565. package/dist/node_modules/lodash/_baseMatches.js.map +1 -1
  566. package/dist/node_modules/lodash/_baseMatchesProperty.js +7 -8
  567. package/dist/node_modules/lodash/_baseMatchesProperty.js.map +1 -1
  568. package/dist/node_modules/lodash/_baseOrderBy.js +11 -12
  569. package/dist/node_modules/lodash/_baseOrderBy.js.map +1 -1
  570. package/dist/node_modules/lodash/_baseProperty.js +1 -2
  571. package/dist/node_modules/lodash/_baseProperty.js.map +1 -1
  572. package/dist/node_modules/lodash/_basePropertyDeep.js +1 -2
  573. package/dist/node_modules/lodash/_basePropertyDeep.js.map +1 -1
  574. package/dist/node_modules/lodash/_baseRange.js +1 -2
  575. package/dist/node_modules/lodash/_baseRange.js.map +1 -1
  576. package/dist/node_modules/lodash/_baseRest.js +1 -2
  577. package/dist/node_modules/lodash/_baseRest.js.map +1 -1
  578. package/dist/node_modules/lodash/_baseSetToString.js +5 -6
  579. package/dist/node_modules/lodash/_baseSetToString.js.map +1 -1
  580. package/dist/node_modules/lodash/_baseSlice.js +1 -2
  581. package/dist/node_modules/lodash/_baseSlice.js.map +1 -1
  582. package/dist/node_modules/lodash/_baseSome.js +1 -2
  583. package/dist/node_modules/lodash/_baseSome.js.map +1 -1
  584. package/dist/node_modules/lodash/_baseSortBy.js +1 -2
  585. package/dist/node_modules/lodash/_baseSortBy.js.map +1 -1
  586. package/dist/node_modules/lodash/_baseTimes.js +1 -2
  587. package/dist/node_modules/lodash/_baseTimes.js.map +1 -1
  588. package/dist/node_modules/lodash/_baseToString.js +6 -7
  589. package/dist/node_modules/lodash/_baseToString.js.map +1 -1
  590. package/dist/node_modules/lodash/_baseTrim.js +1 -2
  591. package/dist/node_modules/lodash/_baseTrim.js.map +1 -1
  592. package/dist/node_modules/lodash/_baseUnary.js +1 -2
  593. package/dist/node_modules/lodash/_baseUnary.js.map +1 -1
  594. package/dist/node_modules/lodash/_baseUniq.js +7 -8
  595. package/dist/node_modules/lodash/_baseUniq.js.map +1 -1
  596. package/dist/node_modules/lodash/_cacheHas.js +1 -2
  597. package/dist/node_modules/lodash/_cacheHas.js.map +1 -1
  598. package/dist/node_modules/lodash/_castPath.js +1 -2
  599. package/dist/node_modules/lodash/_castPath.js.map +1 -1
  600. package/dist/node_modules/lodash/_castSlice.js +1 -2
  601. package/dist/node_modules/lodash/_castSlice.js.map +1 -1
  602. package/dist/node_modules/lodash/_compareAscending.js +1 -2
  603. package/dist/node_modules/lodash/_compareAscending.js.map +1 -1
  604. package/dist/node_modules/lodash/_compareMultiple.js +1 -2
  605. package/dist/node_modules/lodash/_compareMultiple.js.map +1 -1
  606. package/dist/node_modules/lodash/_coreJsData.js +1 -2
  607. package/dist/node_modules/lodash/_coreJsData.js.map +1 -1
  608. package/dist/node_modules/lodash/_createBaseEach.js +1 -2
  609. package/dist/node_modules/lodash/_createBaseEach.js.map +1 -1
  610. package/dist/node_modules/lodash/_createBaseFor.js +1 -2
  611. package/dist/node_modules/lodash/_createBaseFor.js.map +1 -1
  612. package/dist/node_modules/lodash/_createCaseFirst.js +6 -7
  613. package/dist/node_modules/lodash/_createCaseFirst.js.map +1 -1
  614. package/dist/node_modules/lodash/_createFind.js +5 -6
  615. package/dist/node_modules/lodash/_createFind.js.map +1 -1
  616. package/dist/node_modules/lodash/_createRange.js +4 -5
  617. package/dist/node_modules/lodash/_createRange.js.map +1 -1
  618. package/dist/node_modules/lodash/_createSet.js +6 -7
  619. package/dist/node_modules/lodash/_createSet.js.map +1 -1
  620. package/dist/node_modules/lodash/_defineProperty.js +1 -2
  621. package/dist/node_modules/lodash/_defineProperty.js.map +1 -1
  622. package/dist/node_modules/lodash/_equalArrays.js +1 -2
  623. package/dist/node_modules/lodash/_equalArrays.js.map +1 -1
  624. package/dist/node_modules/lodash/_equalByTag.js +5 -6
  625. package/dist/node_modules/lodash/_equalByTag.js.map +1 -1
  626. package/dist/node_modules/lodash/_equalObjects.js +1 -2
  627. package/dist/node_modules/lodash/_equalObjects.js.map +1 -1
  628. package/dist/node_modules/lodash/_freeGlobal.js +1 -2
  629. package/dist/node_modules/lodash/_freeGlobal.js.map +1 -1
  630. package/dist/node_modules/lodash/_getAllKeys.js +1 -2
  631. package/dist/node_modules/lodash/_getAllKeys.js.map +1 -1
  632. package/dist/node_modules/lodash/_getMapData.js +1 -2
  633. package/dist/node_modules/lodash/_getMapData.js.map +1 -1
  634. package/dist/node_modules/lodash/_getMatchData.js +4 -5
  635. package/dist/node_modules/lodash/_getMatchData.js.map +1 -1
  636. package/dist/node_modules/lodash/_getNative.js +1 -2
  637. package/dist/node_modules/lodash/_getNative.js.map +1 -1
  638. package/dist/node_modules/lodash/_getPrototype.js +1 -2
  639. package/dist/node_modules/lodash/_getPrototype.js.map +1 -1
  640. package/dist/node_modules/lodash/_getRawTag.js +1 -2
  641. package/dist/node_modules/lodash/_getRawTag.js.map +1 -1
  642. package/dist/node_modules/lodash/_getSymbols.js +1 -2
  643. package/dist/node_modules/lodash/_getSymbols.js.map +1 -1
  644. package/dist/node_modules/lodash/_getTag.js +9 -10
  645. package/dist/node_modules/lodash/_getTag.js.map +1 -1
  646. package/dist/node_modules/lodash/_getValue.js +1 -2
  647. package/dist/node_modules/lodash/_getValue.js.map +1 -1
  648. package/dist/node_modules/lodash/_hasPath.js +8 -9
  649. package/dist/node_modules/lodash/_hasPath.js.map +1 -1
  650. package/dist/node_modules/lodash/_hasUnicode.js +1 -2
  651. package/dist/node_modules/lodash/_hasUnicode.js.map +1 -1
  652. package/dist/node_modules/lodash/_hashClear.js +1 -2
  653. package/dist/node_modules/lodash/_hashClear.js.map +1 -1
  654. package/dist/node_modules/lodash/_hashDelete.js +1 -2
  655. package/dist/node_modules/lodash/_hashDelete.js.map +1 -1
  656. package/dist/node_modules/lodash/_hashGet.js +1 -2
  657. package/dist/node_modules/lodash/_hashGet.js.map +1 -1
  658. package/dist/node_modules/lodash/_hashHas.js +1 -2
  659. package/dist/node_modules/lodash/_hashHas.js.map +1 -1
  660. package/dist/node_modules/lodash/_hashSet.js +1 -2
  661. package/dist/node_modules/lodash/_hashSet.js.map +1 -1
  662. package/dist/node_modules/lodash/_isFlattenable.js +5 -6
  663. package/dist/node_modules/lodash/_isFlattenable.js.map +1 -1
  664. package/dist/node_modules/lodash/_isIndex.js +6 -7
  665. package/dist/node_modules/lodash/_isIndex.js.map +1 -1
  666. package/dist/node_modules/lodash/_isIterateeCall.js +5 -6
  667. package/dist/node_modules/lodash/_isIterateeCall.js.map +1 -1
  668. package/dist/node_modules/lodash/_isKey.js +1 -2
  669. package/dist/node_modules/lodash/_isKey.js.map +1 -1
  670. package/dist/node_modules/lodash/_isKeyable.js +1 -2
  671. package/dist/node_modules/lodash/_isKeyable.js.map +1 -1
  672. package/dist/node_modules/lodash/_isMasked.js +1 -2
  673. package/dist/node_modules/lodash/_isMasked.js.map +1 -1
  674. package/dist/node_modules/lodash/_isPrototype.js +1 -2
  675. package/dist/node_modules/lodash/_isPrototype.js.map +1 -1
  676. package/dist/node_modules/lodash/_isStrictComparable.js +1 -2
  677. package/dist/node_modules/lodash/_isStrictComparable.js.map +1 -1
  678. package/dist/node_modules/lodash/_listCacheClear.js +1 -2
  679. package/dist/node_modules/lodash/_listCacheClear.js.map +1 -1
  680. package/dist/node_modules/lodash/_listCacheDelete.js +1 -2
  681. package/dist/node_modules/lodash/_listCacheDelete.js.map +1 -1
  682. package/dist/node_modules/lodash/_listCacheGet.js +1 -2
  683. package/dist/node_modules/lodash/_listCacheGet.js.map +1 -1
  684. package/dist/node_modules/lodash/_listCacheHas.js +1 -2
  685. package/dist/node_modules/lodash/_listCacheHas.js.map +1 -1
  686. package/dist/node_modules/lodash/_listCacheSet.js +1 -2
  687. package/dist/node_modules/lodash/_listCacheSet.js.map +1 -1
  688. package/dist/node_modules/lodash/_mapCacheClear.js +1 -2
  689. package/dist/node_modules/lodash/_mapCacheClear.js.map +1 -1
  690. package/dist/node_modules/lodash/_mapCacheDelete.js +1 -2
  691. package/dist/node_modules/lodash/_mapCacheDelete.js.map +1 -1
  692. package/dist/node_modules/lodash/_mapCacheGet.js +1 -2
  693. package/dist/node_modules/lodash/_mapCacheGet.js.map +1 -1
  694. package/dist/node_modules/lodash/_mapCacheHas.js +1 -2
  695. package/dist/node_modules/lodash/_mapCacheHas.js.map +1 -1
  696. package/dist/node_modules/lodash/_mapCacheSet.js +1 -2
  697. package/dist/node_modules/lodash/_mapCacheSet.js.map +1 -1
  698. package/dist/node_modules/lodash/_mapToArray.js +1 -2
  699. package/dist/node_modules/lodash/_mapToArray.js.map +1 -1
  700. package/dist/node_modules/lodash/_matchesStrictComparable.js +2 -3
  701. package/dist/node_modules/lodash/_matchesStrictComparable.js.map +1 -1
  702. package/dist/node_modules/lodash/_memoizeCapped.js +1 -2
  703. package/dist/node_modules/lodash/_memoizeCapped.js.map +1 -1
  704. package/dist/node_modules/lodash/_nativeCreate.js +1 -2
  705. package/dist/node_modules/lodash/_nativeCreate.js.map +1 -1
  706. package/dist/node_modules/lodash/_nativeKeys.js +1 -2
  707. package/dist/node_modules/lodash/_nativeKeys.js.map +1 -1
  708. package/dist/node_modules/lodash/_nodeUtil.js +1 -2
  709. package/dist/node_modules/lodash/_nodeUtil.js.map +1 -1
  710. package/dist/node_modules/lodash/_objectToString.js +1 -2
  711. package/dist/node_modules/lodash/_objectToString.js.map +1 -1
  712. package/dist/node_modules/lodash/_overArg.js +1 -2
  713. package/dist/node_modules/lodash/_overArg.js.map +1 -1
  714. package/dist/node_modules/lodash/_overRest.js +1 -2
  715. package/dist/node_modules/lodash/_overRest.js.map +1 -1
  716. package/dist/node_modules/lodash/_root.js +1 -2
  717. package/dist/node_modules/lodash/_root.js.map +1 -1
  718. package/dist/node_modules/lodash/_setCacheAdd.js +4 -6
  719. package/dist/node_modules/lodash/_setCacheAdd.js.map +1 -1
  720. package/dist/node_modules/lodash/_setCacheHas.js +1 -2
  721. package/dist/node_modules/lodash/_setCacheHas.js.map +1 -1
  722. package/dist/node_modules/lodash/_setToArray.js +1 -2
  723. package/dist/node_modules/lodash/_setToArray.js.map +1 -1
  724. package/dist/node_modules/lodash/_setToString.js +1 -2
  725. package/dist/node_modules/lodash/_setToString.js.map +1 -1
  726. package/dist/node_modules/lodash/_shortOut.js +8 -9
  727. package/dist/node_modules/lodash/_shortOut.js.map +1 -1
  728. package/dist/node_modules/lodash/_stackClear.js +1 -2
  729. package/dist/node_modules/lodash/_stackClear.js.map +1 -1
  730. package/dist/node_modules/lodash/_stackDelete.js +1 -2
  731. package/dist/node_modules/lodash/_stackDelete.js.map +1 -1
  732. package/dist/node_modules/lodash/_stackGet.js +1 -2
  733. package/dist/node_modules/lodash/_stackGet.js.map +1 -1
  734. package/dist/node_modules/lodash/_stackHas.js +1 -2
  735. package/dist/node_modules/lodash/_stackHas.js.map +1 -1
  736. package/dist/node_modules/lodash/_stackSet.js +1 -2
  737. package/dist/node_modules/lodash/_stackSet.js.map +1 -1
  738. package/dist/node_modules/lodash/_strictIndexOf.js +1 -2
  739. package/dist/node_modules/lodash/_strictIndexOf.js.map +1 -1
  740. package/dist/node_modules/lodash/_stringToArray.js +4 -5
  741. package/dist/node_modules/lodash/_stringToArray.js.map +1 -1
  742. package/dist/node_modules/lodash/_stringToPath.js +1 -2
  743. package/dist/node_modules/lodash/_stringToPath.js.map +1 -1
  744. package/dist/node_modules/lodash/_toKey.js +2 -3
  745. package/dist/node_modules/lodash/_toKey.js.map +1 -1
  746. package/dist/node_modules/lodash/_toSource.js +1 -2
  747. package/dist/node_modules/lodash/_toSource.js.map +1 -1
  748. package/dist/node_modules/lodash/_trimmedEndIndex.js +1 -2
  749. package/dist/node_modules/lodash/_trimmedEndIndex.js.map +1 -1
  750. package/dist/node_modules/lodash/_unicodeToArray.js +1 -2
  751. package/dist/node_modules/lodash/_unicodeToArray.js.map +1 -1
  752. package/dist/node_modules/lodash/constant.js +1 -2
  753. package/dist/node_modules/lodash/constant.js.map +1 -1
  754. package/dist/node_modules/lodash/debounce.js +1 -2
  755. package/dist/node_modules/lodash/debounce.js.map +1 -1
  756. package/dist/node_modules/lodash/eq.js +1 -2
  757. package/dist/node_modules/lodash/eq.js.map +1 -1
  758. package/dist/node_modules/lodash/every.js +7 -8
  759. package/dist/node_modules/lodash/every.js.map +1 -1
  760. package/dist/node_modules/lodash/find.js +1 -2
  761. package/dist/node_modules/lodash/find.js.map +1 -1
  762. package/dist/node_modules/lodash/findIndex.js +4 -5
  763. package/dist/node_modules/lodash/findIndex.js.map +1 -1
  764. package/dist/node_modules/lodash/flatMap.js +1 -2
  765. package/dist/node_modules/lodash/flatMap.js.map +1 -1
  766. package/dist/node_modules/lodash/get.js +1 -2
  767. package/dist/node_modules/lodash/get.js.map +1 -1
  768. package/dist/node_modules/lodash/hasIn.js +1 -2
  769. package/dist/node_modules/lodash/hasIn.js.map +1 -1
  770. package/dist/node_modules/lodash/identity.js +1 -2
  771. package/dist/node_modules/lodash/identity.js.map +1 -1
  772. package/dist/node_modules/lodash/isArguments.js +4 -5
  773. package/dist/node_modules/lodash/isArguments.js.map +1 -1
  774. package/dist/node_modules/lodash/isArray.js +1 -2
  775. package/dist/node_modules/lodash/isArray.js.map +1 -1
  776. package/dist/node_modules/lodash/isArrayLike.js +1 -2
  777. package/dist/node_modules/lodash/isArrayLike.js.map +1 -1
  778. package/dist/node_modules/lodash/isBoolean.js +1 -2
  779. package/dist/node_modules/lodash/isBoolean.js.map +1 -1
  780. package/dist/node_modules/lodash/isBuffer.js +1 -2
  781. package/dist/node_modules/lodash/isBuffer.js.map +1 -1
  782. package/dist/node_modules/lodash/isEqual.js +1 -2
  783. package/dist/node_modules/lodash/isEqual.js.map +1 -1
  784. package/dist/node_modules/lodash/isFunction.js +1 -2
  785. package/dist/node_modules/lodash/isFunction.js.map +1 -1
  786. package/dist/node_modules/lodash/isLength.js +4 -6
  787. package/dist/node_modules/lodash/isLength.js.map +1 -1
  788. package/dist/node_modules/lodash/isNaN.js +1 -2
  789. package/dist/node_modules/lodash/isNaN.js.map +1 -1
  790. package/dist/node_modules/lodash/isNil.js +1 -2
  791. package/dist/node_modules/lodash/isNil.js.map +1 -1
  792. package/dist/node_modules/lodash/isNumber.js +1 -2
  793. package/dist/node_modules/lodash/isNumber.js.map +1 -1
  794. package/dist/node_modules/lodash/isObject.js +1 -2
  795. package/dist/node_modules/lodash/isObject.js.map +1 -1
  796. package/dist/node_modules/lodash/isObjectLike.js +1 -2
  797. package/dist/node_modules/lodash/isObjectLike.js.map +1 -1
  798. package/dist/node_modules/lodash/isPlainObject.js +4 -5
  799. package/dist/node_modules/lodash/isPlainObject.js.map +1 -1
  800. package/dist/node_modules/lodash/isString.js +4 -5
  801. package/dist/node_modules/lodash/isString.js.map +1 -1
  802. package/dist/node_modules/lodash/isSymbol.js +1 -2
  803. package/dist/node_modules/lodash/isSymbol.js.map +1 -1
  804. package/dist/node_modules/lodash/isTypedArray.js +1 -2
  805. package/dist/node_modules/lodash/isTypedArray.js.map +1 -1
  806. package/dist/node_modules/lodash/keys.js +1 -2
  807. package/dist/node_modules/lodash/keys.js.map +1 -1
  808. package/dist/node_modules/lodash/last.js +1 -2
  809. package/dist/node_modules/lodash/last.js.map +1 -1
  810. package/dist/node_modules/lodash/map.js +6 -7
  811. package/dist/node_modules/lodash/map.js.map +1 -1
  812. package/dist/node_modules/lodash/mapValues.js +4 -5
  813. package/dist/node_modules/lodash/mapValues.js.map +1 -1
  814. package/dist/node_modules/lodash/max.js +5 -6
  815. package/dist/node_modules/lodash/max.js.map +1 -1
  816. package/dist/node_modules/lodash/memoize.js +1 -2
  817. package/dist/node_modules/lodash/memoize.js.map +1 -1
  818. package/dist/node_modules/lodash/min.js +5 -6
  819. package/dist/node_modules/lodash/min.js.map +1 -1
  820. package/dist/node_modules/lodash/noop.js +1 -2
  821. package/dist/node_modules/lodash/noop.js.map +1 -1
  822. package/dist/node_modules/lodash/now.js +1 -2
  823. package/dist/node_modules/lodash/now.js.map +1 -1
  824. package/dist/node_modules/lodash/property.js +6 -7
  825. package/dist/node_modules/lodash/property.js.map +1 -1
  826. package/dist/node_modules/lodash/range.js +1 -2
  827. package/dist/node_modules/lodash/range.js.map +1 -1
  828. package/dist/node_modules/lodash/some.js +7 -8
  829. package/dist/node_modules/lodash/some.js.map +1 -1
  830. package/dist/node_modules/lodash/sortBy.js +1 -2
  831. package/dist/node_modules/lodash/sortBy.js.map +1 -1
  832. package/dist/node_modules/lodash/stubArray.js +1 -2
  833. package/dist/node_modules/lodash/stubArray.js.map +1 -1
  834. package/dist/node_modules/lodash/stubFalse.js +1 -2
  835. package/dist/node_modules/lodash/stubFalse.js.map +1 -1
  836. package/dist/node_modules/lodash/throttle.js +4 -5
  837. package/dist/node_modules/lodash/throttle.js.map +1 -1
  838. package/dist/node_modules/lodash/toFinite.js +2 -3
  839. package/dist/node_modules/lodash/toFinite.js.map +1 -1
  840. package/dist/node_modules/lodash/toInteger.js +1 -2
  841. package/dist/node_modules/lodash/toInteger.js.map +1 -1
  842. package/dist/node_modules/lodash/toNumber.js +4 -5
  843. package/dist/node_modules/lodash/toNumber.js.map +1 -1
  844. package/dist/node_modules/lodash/toString.js +1 -2
  845. package/dist/node_modules/lodash/toString.js.map +1 -1
  846. package/dist/node_modules/lodash/uniqBy.js +1 -2
  847. package/dist/node_modules/lodash/uniqBy.js.map +1 -1
  848. package/dist/node_modules/lodash/upperFirst.js +1 -2
  849. package/dist/node_modules/lodash/upperFirst.js.map +1 -1
  850. package/dist/node_modules/object-assign/index.js +1 -2
  851. package/dist/node_modules/object-assign/index.js.map +1 -1
  852. package/dist/node_modules/prop-types/checkPropTypes.js +1 -2
  853. package/dist/node_modules/prop-types/checkPropTypes.js.map +1 -1
  854. package/dist/node_modules/prop-types/factoryWithThrowingShims.js +1 -2
  855. package/dist/node_modules/prop-types/factoryWithThrowingShims.js.map +1 -1
  856. package/dist/node_modules/prop-types/factoryWithTypeCheckers.js +3 -3
  857. package/dist/node_modules/prop-types/factoryWithTypeCheckers.js.map +1 -1
  858. package/dist/node_modules/prop-types/index.js +1 -2
  859. package/dist/node_modules/prop-types/index.js.map +1 -1
  860. package/dist/node_modules/prop-types/lib/ReactPropTypesSecret.js +1 -2
  861. package/dist/node_modules/prop-types/lib/ReactPropTypesSecret.js.map +1 -1
  862. package/dist/node_modules/prop-types/lib/has.js +1 -2
  863. package/dist/node_modules/prop-types/lib/has.js.map +1 -1
  864. package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js +1 -2
  865. package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js.map +1 -1
  866. package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js +1 -2
  867. package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js.map +1 -1
  868. package/dist/node_modules/prop-types/node_modules/react-is/index.js +2 -3
  869. package/dist/node_modules/prop-types/node_modules/react-is/index.js.map +1 -1
  870. package/dist/node_modules/react-is/cjs/react-is.development.js +31 -32
  871. package/dist/node_modules/react-is/cjs/react-is.development.js.map +1 -1
  872. package/dist/node_modules/react-is/cjs/react-is.production.min.js +1 -2
  873. package/dist/node_modules/react-is/cjs/react-is.production.min.js.map +1 -1
  874. package/dist/node_modules/react-is/index.js +2 -3
  875. package/dist/node_modules/react-is/index.js.map +1 -1
  876. package/dist/node_modules/react-smooth/es6/Animate.js +33 -41
  877. package/dist/node_modules/react-smooth/es6/Animate.js.map +1 -1
  878. package/dist/node_modules/react-smooth/es6/AnimateManager.js +2 -5
  879. package/dist/node_modules/react-smooth/es6/AnimateManager.js.map +1 -1
  880. package/dist/node_modules/react-smooth/es6/configUpdate.js +1 -2
  881. package/dist/node_modules/react-smooth/es6/configUpdate.js.map +1 -1
  882. package/dist/node_modules/react-smooth/es6/easing.js +1 -2
  883. package/dist/node_modules/react-smooth/es6/easing.js.map +1 -1
  884. package/dist/node_modules/react-smooth/es6/index.js +1 -2
  885. package/dist/node_modules/react-smooth/es6/index.js.map +1 -1
  886. package/dist/node_modules/react-smooth/es6/setRafTimeout.js +1 -2
  887. package/dist/node_modules/react-smooth/es6/setRafTimeout.js.map +1 -1
  888. package/dist/node_modules/react-smooth/es6/util.js +17 -16
  889. package/dist/node_modules/react-smooth/es6/util.js.map +1 -1
  890. package/dist/node_modules/recharts/es6/cartesian/Bar.js +103 -104
  891. package/dist/node_modules/recharts/es6/cartesian/Bar.js.map +1 -1
  892. package/dist/node_modules/recharts/es6/cartesian/Brush.js +35 -36
  893. package/dist/node_modules/recharts/es6/cartesian/Brush.js.map +1 -1
  894. package/dist/node_modules/recharts/es6/cartesian/CartesianAxis.js +60 -67
  895. package/dist/node_modules/recharts/es6/cartesian/CartesianAxis.js.map +1 -1
  896. package/dist/node_modules/recharts/es6/cartesian/CartesianGrid.js +45 -46
  897. package/dist/node_modules/recharts/es6/cartesian/CartesianGrid.js.map +1 -1
  898. package/dist/node_modules/recharts/es6/cartesian/ErrorBar.js +20 -21
  899. package/dist/node_modules/recharts/es6/cartesian/ErrorBar.js.map +1 -1
  900. package/dist/node_modules/recharts/es6/cartesian/Line.js +79 -80
  901. package/dist/node_modules/recharts/es6/cartesian/Line.js.map +1 -1
  902. package/dist/node_modules/recharts/es6/cartesian/ReferenceArea.js +29 -30
  903. package/dist/node_modules/recharts/es6/cartesian/ReferenceArea.js.map +1 -1
  904. package/dist/node_modules/recharts/es6/cartesian/ReferenceDot.js +23 -24
  905. package/dist/node_modules/recharts/es6/cartesian/ReferenceDot.js.map +1 -1
  906. package/dist/node_modules/recharts/es6/cartesian/ReferenceLine.js +31 -32
  907. package/dist/node_modules/recharts/es6/cartesian/ReferenceLine.js.map +1 -1
  908. package/dist/node_modules/recharts/es6/cartesian/XAxis.js +10 -11
  909. package/dist/node_modules/recharts/es6/cartesian/XAxis.js.map +1 -1
  910. package/dist/node_modules/recharts/es6/cartesian/YAxis.js +10 -11
  911. package/dist/node_modules/recharts/es6/cartesian/YAxis.js.map +1 -1
  912. package/dist/node_modules/recharts/es6/cartesian/getEquidistantTicks.js +5 -6
  913. package/dist/node_modules/recharts/es6/cartesian/getEquidistantTicks.js.map +1 -1
  914. package/dist/node_modules/recharts/es6/cartesian/getTicks.js +7 -8
  915. package/dist/node_modules/recharts/es6/cartesian/getTicks.js.map +1 -1
  916. package/dist/node_modules/recharts/es6/chart/AccessibilityManager.js +2 -5
  917. package/dist/node_modules/recharts/es6/chart/AccessibilityManager.js.map +1 -1
  918. package/dist/node_modules/recharts/es6/chart/BarChart.js +7 -8
  919. package/dist/node_modules/recharts/es6/chart/BarChart.js.map +1 -1
  920. package/dist/node_modules/recharts/es6/chart/LineChart.js +5 -6
  921. package/dist/node_modules/recharts/es6/chart/LineChart.js.map +1 -1
  922. package/dist/node_modules/recharts/es6/chart/generateCategoricalChart.js +534 -533
  923. package/dist/node_modules/recharts/es6/chart/generateCategoricalChart.js.map +1 -1
  924. package/dist/node_modules/recharts/es6/component/Cell.js +1 -2
  925. package/dist/node_modules/recharts/es6/component/Cell.js.map +1 -1
  926. package/dist/node_modules/recharts/es6/component/Cursor.js +17 -18
  927. package/dist/node_modules/recharts/es6/component/Cursor.js.map +1 -1
  928. package/dist/node_modules/recharts/es6/component/DefaultLegendContent.js +35 -36
  929. package/dist/node_modules/recharts/es6/component/DefaultLegendContent.js.map +1 -1
  930. package/dist/node_modules/recharts/es6/component/DefaultTooltipContent.js +16 -17
  931. package/dist/node_modules/recharts/es6/component/DefaultTooltipContent.js.map +1 -1
  932. package/dist/node_modules/recharts/es6/component/Label.js +85 -86
  933. package/dist/node_modules/recharts/es6/component/Label.js.map +1 -1
  934. package/dist/node_modules/recharts/es6/component/LabelList.js +20 -21
  935. package/dist/node_modules/recharts/es6/component/LabelList.js.map +1 -1
  936. package/dist/node_modules/recharts/es6/component/Legend.js +26 -23
  937. package/dist/node_modules/recharts/es6/component/Legend.js.map +1 -1
  938. package/dist/node_modules/recharts/es6/component/ResponsiveContainer.js +16 -17
  939. package/dist/node_modules/recharts/es6/component/ResponsiveContainer.js.map +1 -1
  940. package/dist/node_modules/recharts/es6/component/Text.js +18 -21
  941. package/dist/node_modules/recharts/es6/component/Text.js.map +1 -1
  942. package/dist/node_modules/recharts/es6/component/Tooltip.js +16 -17
  943. package/dist/node_modules/recharts/es6/component/Tooltip.js.map +1 -1
  944. package/dist/node_modules/recharts/es6/component/TooltipBoundingBox.js +3 -4
  945. package/dist/node_modules/recharts/es6/component/TooltipBoundingBox.js.map +1 -1
  946. package/dist/node_modules/recharts/es6/container/Layer.js +5 -6
  947. package/dist/node_modules/recharts/es6/container/Layer.js.map +1 -1
  948. package/dist/node_modules/recharts/es6/container/Surface.js +5 -6
  949. package/dist/node_modules/recharts/es6/container/Surface.js.map +1 -1
  950. package/dist/node_modules/recharts/es6/context/chartLayoutContext.js +21 -21
  951. package/dist/node_modules/recharts/es6/context/chartLayoutContext.js.map +1 -1
  952. package/dist/node_modules/recharts/es6/shape/Cross.js +4 -5
  953. package/dist/node_modules/recharts/es6/shape/Cross.js.map +1 -1
  954. package/dist/node_modules/recharts/es6/shape/Curve.js +38 -49
  955. package/dist/node_modules/recharts/es6/shape/Curve.js.map +1 -1
  956. package/dist/node_modules/recharts/es6/shape/Dot.js +3 -4
  957. package/dist/node_modules/recharts/es6/shape/Dot.js.map +1 -1
  958. package/dist/node_modules/recharts/es6/shape/Rectangle.js +8 -9
  959. package/dist/node_modules/recharts/es6/shape/Rectangle.js.map +1 -1
  960. package/dist/node_modules/recharts/es6/shape/Sector.js +33 -34
  961. package/dist/node_modules/recharts/es6/shape/Sector.js.map +1 -1
  962. package/dist/node_modules/recharts/es6/shape/Symbols.js +26 -34
  963. package/dist/node_modules/recharts/es6/shape/Symbols.js.map +1 -1
  964. package/dist/node_modules/recharts/es6/shape/Trapezoid.js +8 -9
  965. package/dist/node_modules/recharts/es6/shape/Trapezoid.js.map +1 -1
  966. package/dist/node_modules/recharts/es6/util/ActiveShapeUtils.js +24 -25
  967. package/dist/node_modules/recharts/es6/util/ActiveShapeUtils.js.map +1 -1
  968. package/dist/node_modules/recharts/es6/util/BarUtils.js +10 -11
  969. package/dist/node_modules/recharts/es6/util/BarUtils.js.map +1 -1
  970. package/dist/node_modules/recharts/es6/util/CartesianUtils.js +33 -34
  971. package/dist/node_modules/recharts/es6/util/CartesianUtils.js.map +1 -1
  972. package/dist/node_modules/recharts/es6/util/ChartUtils.js +231 -236
  973. package/dist/node_modules/recharts/es6/util/ChartUtils.js.map +1 -1
  974. package/dist/node_modules/recharts/es6/util/CssPrefixUtils.js +1 -2
  975. package/dist/node_modules/recharts/es6/util/CssPrefixUtils.js.map +1 -1
  976. package/dist/node_modules/recharts/es6/util/DOMUtils.js +1 -2
  977. package/dist/node_modules/recharts/es6/util/DOMUtils.js.map +1 -1
  978. package/dist/node_modules/recharts/es6/util/DataUtils.js +7 -8
  979. package/dist/node_modules/recharts/es6/util/DataUtils.js.map +1 -1
  980. package/dist/node_modules/recharts/es6/util/DetectReferenceElementsDomain.js +20 -21
  981. package/dist/node_modules/recharts/es6/util/DetectReferenceElementsDomain.js.map +1 -1
  982. package/dist/node_modules/recharts/es6/util/Events.js +0 -1
  983. package/dist/node_modules/recharts/es6/util/Events.js.map +1 -1
  984. package/dist/node_modules/recharts/es6/util/Global.js +0 -1
  985. package/dist/node_modules/recharts/es6/util/Global.js.map +1 -1
  986. package/dist/node_modules/recharts/es6/util/IfOverflowMatches.js +1 -2
  987. package/dist/node_modules/recharts/es6/util/IfOverflowMatches.js.map +1 -1
  988. package/dist/node_modules/recharts/es6/util/LogUtils.js +9 -8
  989. package/dist/node_modules/recharts/es6/util/LogUtils.js.map +1 -1
  990. package/dist/node_modules/recharts/es6/util/PolarUtils.js +4 -5
  991. package/dist/node_modules/recharts/es6/util/PolarUtils.js.map +1 -1
  992. package/dist/node_modules/recharts/es6/util/ReactUtils.js +11 -12
  993. package/dist/node_modules/recharts/es6/util/ReactUtils.js.map +1 -1
  994. package/dist/node_modules/recharts/es6/util/ReduceCSSCalc.js +5 -6
  995. package/dist/node_modules/recharts/es6/util/ReduceCSSCalc.js.map +1 -1
  996. package/dist/node_modules/recharts/es6/util/ShallowEqual.js +1 -2
  997. package/dist/node_modules/recharts/es6/util/ShallowEqual.js.map +1 -1
  998. package/dist/node_modules/recharts/es6/util/TickUtils.js +4 -4
  999. package/dist/node_modules/recharts/es6/util/TickUtils.js.map +1 -1
  1000. package/dist/node_modules/recharts/es6/util/calculateViewBox.js +0 -1
  1001. package/dist/node_modules/recharts/es6/util/calculateViewBox.js.map +1 -1
  1002. package/dist/node_modules/recharts/es6/util/cursor/getCursorPoints.js +7 -6
  1003. package/dist/node_modules/recharts/es6/util/cursor/getCursorPoints.js.map +1 -1
  1004. package/dist/node_modules/recharts/es6/util/cursor/getCursorRectangle.js +1 -2
  1005. package/dist/node_modules/recharts/es6/util/cursor/getCursorRectangle.js.map +1 -1
  1006. package/dist/node_modules/recharts/es6/util/cursor/getRadialCursorPoints.js +1 -2
  1007. package/dist/node_modules/recharts/es6/util/cursor/getRadialCursorPoints.js.map +1 -1
  1008. package/dist/node_modules/recharts/es6/util/getEveryNthWithCondition.js +1 -2
  1009. package/dist/node_modules/recharts/es6/util/getEveryNthWithCondition.js.map +1 -1
  1010. package/dist/node_modules/recharts/es6/util/getLegendProps.js +9 -10
  1011. package/dist/node_modules/recharts/es6/util/getLegendProps.js.map +1 -1
  1012. package/dist/node_modules/recharts/es6/util/isDomainSpecifiedByUser.js +1 -2
  1013. package/dist/node_modules/recharts/es6/util/isDomainSpecifiedByUser.js.map +1 -1
  1014. package/dist/node_modules/recharts/es6/util/payload/getUniqPayload.js +4 -5
  1015. package/dist/node_modules/recharts/es6/util/payload/getUniqPayload.js.map +1 -1
  1016. package/dist/node_modules/recharts/es6/util/tooltip/translate.js +3 -4
  1017. package/dist/node_modules/recharts/es6/util/tooltip/translate.js.map +1 -1
  1018. package/dist/node_modules/recharts/es6/util/types.js +2 -3
  1019. package/dist/node_modules/recharts/es6/util/types.js.map +1 -1
  1020. package/dist/node_modules/recharts-scale/es6/getNiceTickValues.js +2 -3
  1021. package/dist/node_modules/recharts-scale/es6/getNiceTickValues.js.map +1 -1
  1022. package/dist/node_modules/recharts-scale/es6/index.js +1 -1
  1023. package/dist/node_modules/recharts-scale/es6/util/arithmetic.js +1 -2
  1024. package/dist/node_modules/recharts-scale/es6/util/arithmetic.js.map +1 -1
  1025. package/dist/node_modules/recharts-scale/es6/util/utils.js +3 -4
  1026. package/dist/node_modules/recharts-scale/es6/util/utils.js.map +1 -1
  1027. package/dist/node_modules/rxjs/dist/esm5/internal/NotificationFactories.js +2 -3
  1028. package/dist/node_modules/rxjs/dist/esm5/internal/NotificationFactories.js.map +1 -1
  1029. package/dist/node_modules/rxjs/dist/esm5/internal/Observable.js +41 -42
  1030. package/dist/node_modules/rxjs/dist/esm5/internal/Observable.js.map +1 -1
  1031. package/dist/node_modules/rxjs/dist/esm5/internal/Subscriber.js +14 -15
  1032. package/dist/node_modules/rxjs/dist/esm5/internal/Subscriber.js.map +1 -1
  1033. package/dist/node_modules/rxjs/dist/esm5/internal/Subscription.js +21 -18
  1034. package/dist/node_modules/rxjs/dist/esm5/internal/Subscription.js.map +1 -1
  1035. package/dist/node_modules/rxjs/dist/esm5/internal/config.js +1 -2
  1036. package/dist/node_modules/rxjs/dist/esm5/internal/config.js.map +1 -1
  1037. package/dist/node_modules/rxjs/dist/esm5/internal/observable/empty.js +1 -2
  1038. package/dist/node_modules/rxjs/dist/esm5/internal/observable/empty.js.map +1 -1
  1039. package/dist/node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js +2 -3
  1040. package/dist/node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js.map +1 -1
  1041. package/dist/node_modules/rxjs/dist/esm5/internal/symbol/observable.js +1 -2
  1042. package/dist/node_modules/rxjs/dist/esm5/internal/symbol/observable.js.map +1 -1
  1043. package/dist/node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js +1 -2
  1044. package/dist/node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js.map +1 -1
  1045. package/dist/node_modules/rxjs/dist/esm5/internal/util/arrRemove.js +1 -2
  1046. package/dist/node_modules/rxjs/dist/esm5/internal/util/arrRemove.js.map +1 -1
  1047. package/dist/node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js +1 -2
  1048. package/dist/node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js.map +1 -1
  1049. package/dist/node_modules/rxjs/dist/esm5/internal/util/errorContext.js +1 -2
  1050. package/dist/node_modules/rxjs/dist/esm5/internal/util/errorContext.js.map +1 -1
  1051. package/dist/node_modules/rxjs/dist/esm5/internal/util/identity.js +1 -2
  1052. package/dist/node_modules/rxjs/dist/esm5/internal/util/identity.js.map +1 -1
  1053. package/dist/node_modules/rxjs/dist/esm5/internal/util/isFunction.js +1 -2
  1054. package/dist/node_modules/rxjs/dist/esm5/internal/util/isFunction.js.map +1 -1
  1055. package/dist/node_modules/rxjs/dist/esm5/internal/util/noop.js +1 -2
  1056. package/dist/node_modules/rxjs/dist/esm5/internal/util/noop.js.map +1 -1
  1057. package/dist/node_modules/rxjs/dist/esm5/internal/util/pipe.js +1 -2
  1058. package/dist/node_modules/rxjs/dist/esm5/internal/util/pipe.js.map +1 -1
  1059. package/dist/node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js +1 -2
  1060. package/dist/node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js.map +1 -1
  1061. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js +229 -167
  1062. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js.map +1 -1
  1063. package/dist/node_modules/tiny-invariant/dist/esm/tiny-invariant.js +2 -3
  1064. package/dist/node_modules/tiny-invariant/dist/esm/tiny-invariant.js.map +1 -1
  1065. package/dist/node_modules/{rxjs/node_modules/tslib → tslib}/tslib.es6.js +1 -2
  1066. package/dist/node_modules/tslib/tslib.es6.js.map +1 -0
  1067. package/dist/node_modules/victory-vendor/es/d3-scale.js +28 -45
  1068. package/dist/node_modules/victory-vendor/es/d3-scale.js.map +1 -1
  1069. package/dist/test/happydom.d.ts +1 -0
  1070. package/dist/translations/en.d.ts +46 -1
  1071. package/dist/translations/en.js +48 -3
  1072. package/dist/translations/en.js.map +1 -1
  1073. package/dist/utils/nativeBridge.d.ts +0 -1
  1074. package/dist/utils/nativeBridge.js +1 -2
  1075. package/package.json +76 -60
  1076. package/dist/__tests__/setup.d.ts +0 -2
  1077. package/dist/__tests__/setup.d.ts.map +0 -1
  1078. package/dist/__tests__/utils/renderWithProviders.d.ts.map +0 -1
  1079. package/dist/dev/main.d.ts.map +0 -1
  1080. package/dist/devportal/AdminDevportalRoot.d.ts.map +0 -1
  1081. package/dist/devportal/AdminDevportalRoutes.d.ts.map +0 -1
  1082. package/dist/devportal/DevportalRoot.d.ts.map +0 -1
  1083. package/dist/devportal/DevportalRoutes.d.ts.map +0 -1
  1084. package/dist/devportal/components/AppCard.d.ts.map +0 -1
  1085. package/dist/devportal/components/ConfirmDialog.d.ts.map +0 -1
  1086. package/dist/devportal/components/DataTable.d.ts.map +0 -1
  1087. package/dist/devportal/components/EmptyState.d.ts.map +0 -1
  1088. package/dist/devportal/components/FeatureFlaggedRoute.d.ts.map +0 -1
  1089. package/dist/devportal/components/FormField.d.ts.map +0 -1
  1090. package/dist/devportal/components/GrantDelegationModal.d.ts.map +0 -1
  1091. package/dist/devportal/components/ImageUploadField.d.ts.map +0 -1
  1092. package/dist/devportal/components/LoadingState.d.ts.map +0 -1
  1093. package/dist/devportal/components/ManifestViewer.d.ts.map +0 -1
  1094. package/dist/devportal/components/MarkdownEditor.d.ts.map +0 -1
  1095. package/dist/devportal/components/MultiSelectCombobox.d.ts.map +0 -1
  1096. package/dist/devportal/components/NodeSmokePanel.d.ts.map +0 -1
  1097. package/dist/devportal/components/OnboardingChecklist.d.ts.map +0 -1
  1098. package/dist/devportal/components/PackageValidationPanel.d.ts.map +0 -1
  1099. package/dist/devportal/components/PageLayout.d.ts.map +0 -1
  1100. package/dist/devportal/components/PermissionGuard.d.ts.map +0 -1
  1101. package/dist/devportal/components/RegisterPickupLocationModal.d.ts.map +0 -1
  1102. package/dist/devportal/components/ReportOrderIssueModal.d.ts.map +0 -1
  1103. package/dist/devportal/components/SecretDisplay.d.ts.map +0 -1
  1104. package/dist/devportal/components/SectionNav.d.ts.map +0 -1
  1105. package/dist/devportal/components/SelectionCheckbox.d.ts.map +0 -1
  1106. package/dist/devportal/components/StatCard.d.ts.map +0 -1
  1107. package/dist/devportal/components/StatusBadge.d.ts.map +0 -1
  1108. package/dist/devportal/components/TelemetryErrorBoundary.d.ts.map +0 -1
  1109. package/dist/devportal/components/index.d.ts.map +0 -1
  1110. package/dist/devportal/constants/appCategories.d.ts.map +0 -1
  1111. package/dist/devportal/constants/developerLinks.d.ts.map +0 -1
  1112. package/dist/devportal/constants/permissions.d.ts.map +0 -1
  1113. package/dist/devportal/events/index.d.ts.map +0 -1
  1114. package/dist/devportal/hooks/DevPortalProvider.d.ts.map +0 -1
  1115. package/dist/devportal/hooks/index.d.ts.map +0 -1
  1116. package/dist/devportal/hooks/useCarrierPickupLocations.d.ts.map +0 -1
  1117. package/dist/devportal/hooks/useGraphQL.d.ts.map +0 -1
  1118. package/dist/devportal/hooks/useIsSellerSection.d.ts.map +0 -1
  1119. package/dist/devportal/hooks/useOrganizationPickupAddresses.d.ts.map +0 -1
  1120. package/dist/devportal/hooks/usePackageUpload.d.ts.map +0 -1
  1121. package/dist/devportal/hooks/usePermission.d.ts.map +0 -1
  1122. package/dist/devportal/hooks/useProducts.d.ts.map +0 -1
  1123. package/dist/devportal/hooks/useSellerOrganization.d.ts.map +0 -1
  1124. package/dist/devportal/index.d.ts.map +0 -1
  1125. package/dist/devportal/pages/AdminOrganizationVerificationPage.d.ts.map +0 -1
  1126. package/dist/devportal/pages/AdminReviewPage.d.ts.map +0 -1
  1127. package/dist/devportal/pages/AnalyticsDashboardPage.d.ts.map +0 -1
  1128. package/dist/devportal/pages/ApiKeysPage.d.ts.map +0 -1
  1129. package/dist/devportal/pages/AppLogsPage.d.ts.map +0 -1
  1130. package/dist/devportal/pages/ApplicationDetailPage.d.ts.map +0 -1
  1131. package/dist/devportal/pages/ApplicationVersionsPage.d.ts.map +0 -1
  1132. package/dist/devportal/pages/ApplicationsPage.d.ts.map +0 -1
  1133. package/dist/devportal/pages/CreateApiKeyPage.d.ts.map +0 -1
  1134. package/dist/devportal/pages/CreateApplicationPage.d.ts.map +0 -1
  1135. package/dist/devportal/pages/CreateOAuthClientPage.d.ts.map +0 -1
  1136. package/dist/devportal/pages/CreateOrganizationPage.d.ts.map +0 -1
  1137. package/dist/devportal/pages/CreatePhysicalItemPage.d.ts.map +0 -1
  1138. package/dist/devportal/pages/CreateWebhookPage.d.ts.map +0 -1
  1139. package/dist/devportal/pages/DashboardPage.d.ts.map +0 -1
  1140. package/dist/devportal/pages/DelegationsPage.d.ts.map +0 -1
  1141. package/dist/devportal/pages/DocumentationPage.d.ts.map +0 -1
  1142. package/dist/devportal/pages/EditApplicationPage.d.ts.map +0 -1
  1143. package/dist/devportal/pages/EditPhysicalItemPage.d.ts.map +0 -1
  1144. package/dist/devportal/pages/InvitationDecisionPage.d.ts.map +0 -1
  1145. package/dist/devportal/pages/ListingPreviewPage.d.ts.map +0 -1
  1146. package/dist/devportal/pages/NodeLifecyclePage.d.ts.map +0 -1
  1147. package/dist/devportal/pages/OAuthCallbackPage.d.ts.map +0 -1
  1148. package/dist/devportal/pages/OAuthClientDetailPage.d.ts.map +0 -1
  1149. package/dist/devportal/pages/OAuthClientsPage.d.ts.map +0 -1
  1150. package/dist/devportal/pages/OrganizationDetailPage.d.ts.map +0 -1
  1151. package/dist/devportal/pages/OrganizationMembersPage.d.ts.map +0 -1
  1152. package/dist/devportal/pages/OrganizationsPage.d.ts.map +0 -1
  1153. package/dist/devportal/pages/PublishPage.d.ts.map +0 -1
  1154. package/dist/devportal/pages/PublisherPayoutsPage.d.ts.map +0 -1
  1155. package/dist/devportal/pages/PublisherProfilePage.d.ts.map +0 -1
  1156. package/dist/devportal/pages/ResourcesPage.d.ts.map +0 -1
  1157. package/dist/devportal/pages/RevenueDashboardPage.d.ts.map +0 -1
  1158. package/dist/devportal/pages/RevenueRedirectPage.d.ts.map +0 -1
  1159. package/dist/devportal/pages/SellerDashboardPage.d.ts.map +0 -1
  1160. package/dist/devportal/pages/SellerItemsPage.d.ts.map +0 -1
  1161. package/dist/devportal/pages/SellerOrdersPage.d.ts.map +0 -1
  1162. package/dist/devportal/pages/SettingsPage.d.ts.map +0 -1
  1163. package/dist/devportal/pages/SetupPage.d.ts.map +0 -1
  1164. package/dist/devportal/pages/StoreSubmissionPage.d.ts.map +0 -1
  1165. package/dist/devportal/pages/WebhookDetailPage.d.ts.map +0 -1
  1166. package/dist/devportal/pages/WebhooksPage.d.ts.map +0 -1
  1167. package/dist/devportal/providers/DevportalProvider.d.ts.map +0 -1
  1168. package/dist/devportal/store/devportalStore.d.ts.map +0 -1
  1169. package/dist/devportal/types/index.d.ts.map +0 -1
  1170. package/dist/devportal/utils/cn.d.ts.map +0 -1
  1171. package/dist/devportal/utils/constants.d.ts.map +0 -1
  1172. package/dist/devportal/utils/currency.d.ts.map +0 -1
  1173. package/dist/devportal/utils/developerOnboarding.d.ts.map +0 -1
  1174. package/dist/devportal/utils/graphqlEndpoint.d.ts.map +0 -1
  1175. package/dist/devportal/utils/i18n.d.ts.map +0 -1
  1176. package/dist/devportal/utils/nodeLifecycle.d.ts.map +0 -1
  1177. package/dist/devportal/utils/publisherPayouts.d.ts.map +0 -1
  1178. package/dist/devportal/utils/recaptcha.d.ts.map +0 -1
  1179. package/dist/devportal/utils/submitForReview.d.ts.map +0 -1
  1180. package/dist/devportal/utils/uploadErrors.d.ts.map +0 -1
  1181. package/dist/generated/global-operations.d.ts.map +0 -1
  1182. package/dist/generated/global-types.d.ts.map +0 -1
  1183. package/dist/generated/wspace-operations.d.ts.map +0 -1
  1184. package/dist/generated/wspace-types.d.ts.map +0 -1
  1185. package/dist/index.d.ts.map +0 -1
  1186. package/dist/node_modules/d3-array/src/ascending.js +0 -8
  1187. package/dist/node_modules/d3-array/src/ascending.js.map +0 -1
  1188. package/dist/node_modules/d3-array/src/bisect.js +0 -10
  1189. package/dist/node_modules/d3-array/src/bisect.js.map +0 -1
  1190. package/dist/node_modules/d3-array/src/bisector.js +0 -43
  1191. package/dist/node_modules/d3-array/src/bisector.js.map +0 -1
  1192. package/dist/node_modules/d3-array/src/descending.js +0 -8
  1193. package/dist/node_modules/d3-array/src/descending.js.map +0 -1
  1194. package/dist/node_modules/d3-array/src/max.js +0 -14
  1195. package/dist/node_modules/d3-array/src/max.js.map +0 -1
  1196. package/dist/node_modules/d3-array/src/min.js +0 -14
  1197. package/dist/node_modules/d3-array/src/min.js.map +0 -1
  1198. package/dist/node_modules/d3-array/src/number.js +0 -15
  1199. package/dist/node_modules/d3-array/src/number.js.map +0 -1
  1200. package/dist/node_modules/d3-array/src/quantile.js +0 -25
  1201. package/dist/node_modules/d3-array/src/quantile.js.map +0 -1
  1202. package/dist/node_modules/d3-array/src/quickselect.js +0 -26
  1203. package/dist/node_modules/d3-array/src/quickselect.js.map +0 -1
  1204. package/dist/node_modules/d3-array/src/range.js +0 -10
  1205. package/dist/node_modules/d3-array/src/range.js.map +0 -1
  1206. package/dist/node_modules/d3-array/src/sort.js +0 -17
  1207. package/dist/node_modules/d3-array/src/sort.js.map +0 -1
  1208. package/dist/node_modules/d3-array/src/ticks.js +0 -34
  1209. package/dist/node_modules/d3-array/src/ticks.js.map +0 -1
  1210. package/dist/node_modules/d3-color/src/color.js +0 -291
  1211. package/dist/node_modules/d3-color/src/color.js.map +0 -1
  1212. package/dist/node_modules/d3-color/src/define.js +0 -13
  1213. package/dist/node_modules/d3-color/src/define.js.map +0 -1
  1214. package/dist/node_modules/d3-format/src/defaultLocale.js +0 -15
  1215. package/dist/node_modules/d3-format/src/defaultLocale.js.map +0 -1
  1216. package/dist/node_modules/d3-format/src/exponent.js +0 -9
  1217. package/dist/node_modules/d3-format/src/exponent.js.map +0 -1
  1218. package/dist/node_modules/d3-format/src/formatDecimal.js +0 -13
  1219. package/dist/node_modules/d3-format/src/formatDecimal.js.map +0 -1
  1220. package/dist/node_modules/d3-format/src/formatGroup.js +0 -11
  1221. package/dist/node_modules/d3-format/src/formatGroup.js.map +0 -1
  1222. package/dist/node_modules/d3-format/src/formatNumerals.js +0 -12
  1223. package/dist/node_modules/d3-format/src/formatNumerals.js.map +0 -1
  1224. package/dist/node_modules/d3-format/src/formatPrefixAuto.js +0 -13
  1225. package/dist/node_modules/d3-format/src/formatPrefixAuto.js.map +0 -1
  1226. package/dist/node_modules/d3-format/src/formatRounded.js +0 -12
  1227. package/dist/node_modules/d3-format/src/formatRounded.js.map +0 -1
  1228. package/dist/node_modules/d3-format/src/formatSpecifier.js +0 -29
  1229. package/dist/node_modules/d3-format/src/formatSpecifier.js.map +0 -1
  1230. package/dist/node_modules/d3-format/src/formatTrim.js +0 -20
  1231. package/dist/node_modules/d3-format/src/formatTrim.js.map +0 -1
  1232. package/dist/node_modules/d3-format/src/formatTypes.js +0 -23
  1233. package/dist/node_modules/d3-format/src/formatTypes.js.map +0 -1
  1234. package/dist/node_modules/d3-format/src/identity.js +0 -8
  1235. package/dist/node_modules/d3-format/src/identity.js.map +0 -1
  1236. package/dist/node_modules/d3-format/src/locale.js +0 -86
  1237. package/dist/node_modules/d3-format/src/locale.js.map +0 -1
  1238. package/dist/node_modules/d3-format/src/precisionFixed.js +0 -9
  1239. package/dist/node_modules/d3-format/src/precisionFixed.js.map +0 -1
  1240. package/dist/node_modules/d3-format/src/precisionPrefix.js +0 -9
  1241. package/dist/node_modules/d3-format/src/precisionPrefix.js.map +0 -1
  1242. package/dist/node_modules/d3-format/src/precisionRound.js +0 -9
  1243. package/dist/node_modules/d3-format/src/precisionRound.js.map +0 -1
  1244. package/dist/node_modules/d3-interpolate/src/array.js +0 -15
  1245. package/dist/node_modules/d3-interpolate/src/array.js.map +0 -1
  1246. package/dist/node_modules/d3-interpolate/src/basis.js +0 -16
  1247. package/dist/node_modules/d3-interpolate/src/basis.js.map +0 -1
  1248. package/dist/node_modules/d3-interpolate/src/basisClosed.js +0 -13
  1249. package/dist/node_modules/d3-interpolate/src/basisClosed.js.map +0 -1
  1250. package/dist/node_modules/d3-interpolate/src/color.js +0 -25
  1251. package/dist/node_modules/d3-interpolate/src/color.js.map +0 -1
  1252. package/dist/node_modules/d3-interpolate/src/constant.js +0 -6
  1253. package/dist/node_modules/d3-interpolate/src/constant.js.map +0 -1
  1254. package/dist/node_modules/d3-interpolate/src/date.js +0 -11
  1255. package/dist/node_modules/d3-interpolate/src/date.js.map +0 -1
  1256. package/dist/node_modules/d3-interpolate/src/number.js +0 -10
  1257. package/dist/node_modules/d3-interpolate/src/number.js.map +0 -1
  1258. package/dist/node_modules/d3-interpolate/src/numberArray.js +0 -16
  1259. package/dist/node_modules/d3-interpolate/src/numberArray.js.map +0 -1
  1260. package/dist/node_modules/d3-interpolate/src/object.js +0 -14
  1261. package/dist/node_modules/d3-interpolate/src/object.js.map +0 -1
  1262. package/dist/node_modules/d3-interpolate/src/piecewise.js +0 -14
  1263. package/dist/node_modules/d3-interpolate/src/piecewise.js.map +0 -1
  1264. package/dist/node_modules/d3-interpolate/src/rgb.js +0 -19
  1265. package/dist/node_modules/d3-interpolate/src/rgb.js.map +0 -1
  1266. package/dist/node_modules/d3-interpolate/src/round.js +0 -10
  1267. package/dist/node_modules/d3-interpolate/src/round.js.map +0 -1
  1268. package/dist/node_modules/d3-interpolate/src/string.js +0 -28
  1269. package/dist/node_modules/d3-interpolate/src/string.js.map +0 -1
  1270. package/dist/node_modules/d3-interpolate/src/value.js +0 -18
  1271. package/dist/node_modules/d3-interpolate/src/value.js.map +0 -1
  1272. package/dist/node_modules/d3-path/src/path.js.map +0 -1
  1273. package/dist/node_modules/d3-scale/src/band.js +0 -52
  1274. package/dist/node_modules/d3-scale/src/band.js.map +0 -1
  1275. package/dist/node_modules/d3-scale/src/constant.js +0 -10
  1276. package/dist/node_modules/d3-scale/src/constant.js.map +0 -1
  1277. package/dist/node_modules/d3-scale/src/continuous.js +0 -73
  1278. package/dist/node_modules/d3-scale/src/continuous.js.map +0 -1
  1279. package/dist/node_modules/d3-scale/src/diverging.js +0 -82
  1280. package/dist/node_modules/d3-scale/src/diverging.js.map +0 -1
  1281. package/dist/node_modules/d3-scale/src/identity.js +0 -20
  1282. package/dist/node_modules/d3-scale/src/identity.js.map +0 -1
  1283. package/dist/node_modules/d3-scale/src/init.js +0 -29
  1284. package/dist/node_modules/d3-scale/src/init.js.map +0 -1
  1285. package/dist/node_modules/d3-scale/src/linear.js +0 -36
  1286. package/dist/node_modules/d3-scale/src/linear.js.map +0 -1
  1287. package/dist/node_modules/d3-scale/src/log.js +0 -77
  1288. package/dist/node_modules/d3-scale/src/log.js.map +0 -1
  1289. package/dist/node_modules/d3-scale/src/nice.js +0 -10
  1290. package/dist/node_modules/d3-scale/src/nice.js.map +0 -1
  1291. package/dist/node_modules/d3-scale/src/number.js +0 -8
  1292. package/dist/node_modules/d3-scale/src/number.js.map +0 -1
  1293. package/dist/node_modules/d3-scale/src/ordinal.js +0 -31
  1294. package/dist/node_modules/d3-scale/src/ordinal.js.map +0 -1
  1295. package/dist/node_modules/d3-scale/src/pow.js +0 -37
  1296. package/dist/node_modules/d3-scale/src/pow.js.map +0 -1
  1297. package/dist/node_modules/d3-scale/src/quantile.js +0 -37
  1298. package/dist/node_modules/d3-scale/src/quantile.js.map +0 -1
  1299. package/dist/node_modules/d3-scale/src/quantize.js +0 -33
  1300. package/dist/node_modules/d3-scale/src/quantize.js.map +0 -1
  1301. package/dist/node_modules/d3-scale/src/radial.js +0 -39
  1302. package/dist/node_modules/d3-scale/src/radial.js.map +0 -1
  1303. package/dist/node_modules/d3-scale/src/sequential.js +0 -67
  1304. package/dist/node_modules/d3-scale/src/sequential.js.map +0 -1
  1305. package/dist/node_modules/d3-scale/src/sequentialQuantile.js +0 -30
  1306. package/dist/node_modules/d3-scale/src/sequentialQuantile.js.map +0 -1
  1307. package/dist/node_modules/d3-scale/src/symlog.js +0 -30
  1308. package/dist/node_modules/d3-scale/src/symlog.js.map +0 -1
  1309. package/dist/node_modules/d3-scale/src/threshold.js +0 -25
  1310. package/dist/node_modules/d3-scale/src/threshold.js.map +0 -1
  1311. package/dist/node_modules/d3-scale/src/tickFormat.js +0 -31
  1312. package/dist/node_modules/d3-scale/src/tickFormat.js.map +0 -1
  1313. package/dist/node_modules/d3-scale/src/time.js +0 -47
  1314. package/dist/node_modules/d3-scale/src/time.js.map +0 -1
  1315. package/dist/node_modules/d3-scale/src/utcTime.js +0 -19
  1316. package/dist/node_modules/d3-scale/src/utcTime.js.map +0 -1
  1317. package/dist/node_modules/d3-shape/src/area.js +0 -55
  1318. package/dist/node_modules/d3-shape/src/area.js.map +0 -1
  1319. package/dist/node_modules/d3-shape/src/array.js +0 -8
  1320. package/dist/node_modules/d3-shape/src/array.js.map +0 -1
  1321. package/dist/node_modules/d3-shape/src/constant.js +0 -10
  1322. package/dist/node_modules/d3-shape/src/constant.js.map +0 -1
  1323. package/dist/node_modules/d3-shape/src/curve/basis.js +0 -49
  1324. package/dist/node_modules/d3-shape/src/curve/basis.js.map +0 -1
  1325. package/dist/node_modules/d3-shape/src/curve/basisClosed.js +0 -50
  1326. package/dist/node_modules/d3-shape/src/curve/basisClosed.js.map +0 -1
  1327. package/dist/node_modules/d3-shape/src/curve/basisOpen.js +0 -46
  1328. package/dist/node_modules/d3-shape/src/curve/basisOpen.js.map +0 -1
  1329. package/dist/node_modules/d3-shape/src/curve/bump.js +0 -40
  1330. package/dist/node_modules/d3-shape/src/curve/bump.js.map +0 -1
  1331. package/dist/node_modules/d3-shape/src/curve/linear.js +0 -36
  1332. package/dist/node_modules/d3-shape/src/curve/linear.js.map +0 -1
  1333. package/dist/node_modules/d3-shape/src/curve/linearClosed.js +0 -25
  1334. package/dist/node_modules/d3-shape/src/curve/linearClosed.js.map +0 -1
  1335. package/dist/node_modules/d3-shape/src/curve/monotone.js +0 -94
  1336. package/dist/node_modules/d3-shape/src/curve/monotone.js.map +0 -1
  1337. package/dist/node_modules/d3-shape/src/curve/natural.js +0 -39
  1338. package/dist/node_modules/d3-shape/src/curve/natural.js.map +0 -1
  1339. package/dist/node_modules/d3-shape/src/curve/step.js +0 -47
  1340. package/dist/node_modules/d3-shape/src/curve/step.js.map +0 -1
  1341. package/dist/node_modules/d3-shape/src/line.js +0 -30
  1342. package/dist/node_modules/d3-shape/src/line.js.map +0 -1
  1343. package/dist/node_modules/d3-shape/src/math.js +0 -8
  1344. package/dist/node_modules/d3-shape/src/math.js.map +0 -1
  1345. package/dist/node_modules/d3-shape/src/noop.js +0 -6
  1346. package/dist/node_modules/d3-shape/src/noop.js.map +0 -1
  1347. package/dist/node_modules/d3-shape/src/offset/expand.js +0 -15
  1348. package/dist/node_modules/d3-shape/src/offset/expand.js.map +0 -1
  1349. package/dist/node_modules/d3-shape/src/offset/none.js +0 -8
  1350. package/dist/node_modules/d3-shape/src/offset/none.js.map +0 -1
  1351. package/dist/node_modules/d3-shape/src/offset/silhouette.js +0 -15
  1352. package/dist/node_modules/d3-shape/src/offset/silhouette.js.map +0 -1
  1353. package/dist/node_modules/d3-shape/src/offset/wiggle.js +0 -21
  1354. package/dist/node_modules/d3-shape/src/offset/wiggle.js.map +0 -1
  1355. package/dist/node_modules/d3-shape/src/order/none.js +0 -9
  1356. package/dist/node_modules/d3-shape/src/order/none.js.map +0 -1
  1357. package/dist/node_modules/d3-shape/src/path.js +0 -19
  1358. package/dist/node_modules/d3-shape/src/path.js.map +0 -1
  1359. package/dist/node_modules/d3-shape/src/point.js +0 -11
  1360. package/dist/node_modules/d3-shape/src/point.js.map +0 -1
  1361. package/dist/node_modules/d3-shape/src/stack.js +0 -34
  1362. package/dist/node_modules/d3-shape/src/stack.js.map +0 -1
  1363. package/dist/node_modules/d3-shape/src/symbol/circle.js +0 -10
  1364. package/dist/node_modules/d3-shape/src/symbol/circle.js.map +0 -1
  1365. package/dist/node_modules/d3-shape/src/symbol/cross.js +0 -10
  1366. package/dist/node_modules/d3-shape/src/symbol/cross.js.map +0 -1
  1367. package/dist/node_modules/d3-shape/src/symbol/diamond.js +0 -10
  1368. package/dist/node_modules/d3-shape/src/symbol/diamond.js.map +0 -1
  1369. package/dist/node_modules/d3-shape/src/symbol/square.js +0 -10
  1370. package/dist/node_modules/d3-shape/src/symbol/square.js.map +0 -1
  1371. package/dist/node_modules/d3-shape/src/symbol/star.js +0 -15
  1372. package/dist/node_modules/d3-shape/src/symbol/star.js.map +0 -1
  1373. package/dist/node_modules/d3-shape/src/symbol/triangle.js +0 -10
  1374. package/dist/node_modules/d3-shape/src/symbol/triangle.js.map +0 -1
  1375. package/dist/node_modules/d3-shape/src/symbol/wye.js +0 -10
  1376. package/dist/node_modules/d3-shape/src/symbol/wye.js.map +0 -1
  1377. package/dist/node_modules/d3-shape/src/symbol.js +0 -23
  1378. package/dist/node_modules/d3-shape/src/symbol.js.map +0 -1
  1379. package/dist/node_modules/d3-time/src/day.js +0 -21
  1380. package/dist/node_modules/d3-time/src/day.js.map +0 -1
  1381. package/dist/node_modules/d3-time/src/duration.js +0 -6
  1382. package/dist/node_modules/d3-time/src/duration.js.map +0 -1
  1383. package/dist/node_modules/d3-time/src/hour.js +0 -19
  1384. package/dist/node_modules/d3-time/src/hour.js.map +0 -1
  1385. package/dist/node_modules/d3-time/src/interval.js +0 -28
  1386. package/dist/node_modules/d3-time/src/interval.js.map +0 -1
  1387. package/dist/node_modules/d3-time/src/millisecond.js +0 -14
  1388. package/dist/node_modules/d3-time/src/millisecond.js.map +0 -1
  1389. package/dist/node_modules/d3-time/src/minute.js +0 -19
  1390. package/dist/node_modules/d3-time/src/minute.js.map +0 -1
  1391. package/dist/node_modules/d3-time/src/month.js +0 -18
  1392. package/dist/node_modules/d3-time/src/month.js.map +0 -1
  1393. package/dist/node_modules/d3-time/src/second.js +0 -13
  1394. package/dist/node_modules/d3-time/src/second.js.map +0 -1
  1395. package/dist/node_modules/d3-time/src/ticks.js +0 -125
  1396. package/dist/node_modules/d3-time/src/ticks.js.map +0 -1
  1397. package/dist/node_modules/d3-time/src/week.js +0 -25
  1398. package/dist/node_modules/d3-time/src/week.js.map +0 -1
  1399. package/dist/node_modules/d3-time/src/year.js +0 -26
  1400. package/dist/node_modules/d3-time/src/year.js.map +0 -1
  1401. package/dist/node_modules/d3-time-format/src/defaultLocale.js +0 -62
  1402. package/dist/node_modules/d3-time-format/src/defaultLocale.js.map +0 -1
  1403. package/dist/node_modules/d3-time-format/src/locale.js.map +0 -1
  1404. package/dist/node_modules/internmap/src/index.js +0 -40
  1405. package/dist/node_modules/internmap/src/index.js.map +0 -1
  1406. package/dist/node_modules/rxjs/node_modules/tslib/tslib.es6.js.map +0 -1
  1407. package/dist/translations/en.d.ts.map +0 -1
  1408. package/dist/utils/nativeBridge.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"CreateApplicationPage.js","names":[],"sources":["../../../src/devportal/pages/CreateApplicationPage.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport { useState, useRef } from \"react\";\nimport {\n ArrowLeft,\n Box,\n Check,\n ChevronRight,\n FileCode2,\n GitFork,\n Info,\n LayoutDashboard,\n LayoutGrid,\n Loader2,\n Puzzle,\n Save,\n X,\n} from \"lucide-react\";\nimport { useI18n } from \"@burdenoff/fe-libs/shared/providers/shell/I18nProvider\";\nimport { APP_CATEGORY_OPTIONS } from \"../constants/appCategories\";\nimport { PageLayout, PageSection } from \"../components/PageLayout\";\nimport { InputField, SelectField } from \"../components/FormField\";\nimport { MarkdownEditor } from \"../components/MarkdownEditor\";\nimport { MultiSelectCombobox } from \"../components/MultiSelectCombobox\";\nimport { useDevportal } from \"../providers/DevportalProvider\";\nimport { PermissionGuard } from \"../components\";\nimport { useDevportalEventBus } from \"../events\";\nimport { useProducts } from \"../hooks\";\nimport { cn } from \"../utils/cn\";\nimport {\n useCreateApplicationMutation,\n useGetMyOrganizationsQuery,\n} from \"../../generated/global-operations\";\n\n// ─── Builder types ────────────────────────────────────────────────────────────\n\ntype BuilderType =\n | \"app\"\n | \"node\"\n | \"workflow\"\n | \"parser\"\n | \"widget\"\n | \"dashboard\";\n\ninterface BuilderTypeMeta {\n appType:\n | \"API_INTEGRATION\"\n | \"NODE\"\n | \"WORKFLOW\"\n | \"PARSER\"\n | \"WIDGET\"\n | \"DASHBOARD\";\n icon: FC<{ size?: number; className?: string }>;\n label: string;\n pageDescription: string;\n purpose: string;\n namePlaceholder: string;\n cardDescription: string;\n cardBullets: string[];\n}\n\nconst BUILDER_TYPE_META: Record<BuilderType, BuilderTypeMeta> = {\n app: {\n appType: \"API_INTEGRATION\",\n icon: Box,\n label: \"App\",\n pageDescription: \"Register a new app integration with OAuth permissions\",\n purpose:\n \"Give your integration a name, description, and the permissions it will request. Once created you will get credentials and can configure webhooks, then publish it to the marketplace when it is ready for users.\",\n namePlaceholder: \"My Integration\",\n cardDescription:\n \"Build integrations that connect your service to the platform using OAuth tokens.\",\n cardBullets: [\n \"GitHub-style permissions\",\n \"OAuth token flow\",\n \"Webhook events\",\n \"Publish to app store\",\n ],\n },\n node: {\n appType: \"NODE\",\n icon: Puzzle,\n label: \"Node\",\n pageDescription: \"Register a new FluidGrids node package\",\n purpose:\n \"Give your node a name and description. Once created you can upload your ZIP bundle and manifest in the Versions tab, then publish it to the node store when it is ready for users.\",\n namePlaceholder: \"HTTP Request\",\n cardDescription:\n \"Build custom FluidGrids nodes that users can drag into their visual workflows.\",\n cardBullets: [\n \"ZIP bundle + manifest\",\n \"Custom inputs/outputs\",\n \"Versioned releases\",\n \"Publish to node store\",\n ],\n },\n workflow: {\n appType: \"WORKFLOW\",\n icon: GitFork,\n label: \"Workflow\",\n pageDescription: \"Register a new reusable automation workflow\",\n purpose:\n \"Give your workflow a name and description. Once created you can upload your workflow definition in the Versions tab, then publish it to the store or generate a shareable public link.\",\n namePlaceholder: \"Onboarding Flow\",\n cardDescription:\n \"Build reusable automation workflows that users can import and customize.\",\n cardBullets: [\n \"Manifest + workflow JSON\",\n \"Trigger definitions\",\n \"Versioned releases\",\n \"Publish to workflow store\",\n ],\n },\n parser: {\n appType: \"PARSER\",\n icon: FileCode2,\n label: \"Parser\",\n pageDescription: \"Register a new data parser\",\n purpose:\n \"Give your parser a name and description. Once created you can upload its manifest in the Versions tab, then publish it to the store when it is ready for users.\",\n namePlaceholder: \"CSV Parser\",\n cardDescription:\n \"Build parsers that extract structured data from files or feeds for use across the platform.\",\n cardBullets: [\n \"Manifest JSON only\",\n \"No ZIP bundle needed\",\n \"Versioned releases\",\n \"Publish to store\",\n ],\n },\n widget: {\n appType: \"WIDGET\",\n icon: LayoutGrid,\n label: \"Widget\",\n pageDescription: \"Register a new embeddable widget\",\n purpose:\n \"Give your widget a name and description. Once created you can upload its manifest in the Versions tab, then publish it to the store when it is ready for users.\",\n namePlaceholder: \"Revenue Chart Widget\",\n cardDescription:\n \"Build embeddable UI widgets users can add to dashboards and pages.\",\n cardBullets: [\n \"Manifest JSON only\",\n \"Embeddable UI component\",\n \"Versioned releases\",\n \"Publish to store\",\n ],\n },\n dashboard: {\n appType: \"DASHBOARD\",\n icon: LayoutDashboard,\n label: \"Dashboard Template\",\n pageDescription: \"Register a new dashboard template\",\n purpose:\n \"Give your dashboard template a name and description. Once created you can upload its manifest in the Versions tab, then publish it to the store when it is ready for users.\",\n namePlaceholder: \"Sales Overview Dashboard\",\n cardDescription:\n \"Build prebuilt dashboard layouts users can install and customize.\",\n cardBullets: [\n \"Manifest JSON only\",\n \"Prebuilt layout\",\n \"Versioned releases\",\n \"Publish to store\",\n ],\n },\n};\n\n// ─── Permissions (App type) ───────────────────────────────────────────────────\n\nconst RBAC_RESOURCES = [\n {\n id: \"auth\",\n label: \"Authentication\",\n description: \"User identity and session management\",\n },\n {\n id: \"billing\",\n label: \"Billing\",\n description: \"Billing accounts and subscriptions\",\n },\n {\n id: \"files\",\n label: \"Files\",\n description: \"File storage and management\",\n },\n {\n id: \"tags\",\n label: \"Tags\",\n description: \"Tags and labels on resources\",\n },\n {\n id: \"calendar\",\n label: \"Calendar\",\n description: \"Events and scheduling\",\n },\n {\n id: \"workflows\",\n label: \"Workflows\",\n description: \"Automation workflows\",\n },\n {\n id: \"channels\",\n label: \"Channels\",\n description: \"Messaging channels\",\n },\n {\n id: \"notifications\",\n label: \"Notifications\",\n description: \"Platform notifications\",\n },\n {\n id: \"users\",\n label: \"Users & Members\",\n description: \"Workspace members and profiles\",\n },\n {\n id: \"workspaces\",\n label: \"Workspaces\",\n description: \"Workspace settings and metadata\",\n },\n {\n id: \"content\",\n label: \"Content\",\n description: \"Pages, documents, and content\",\n },\n {\n id: \"analytics\",\n label: \"Analytics\",\n description: \"Usage analytics and reporting\",\n },\n {\n id: \"webhooks\",\n label: \"Webhooks\",\n description: \"Webhook subscriptions\",\n },\n {\n id: \"rbac\",\n label: \"Roles & Permissions\",\n description: \"Access control configuration\",\n },\n] as const;\n\ntype ResourceId = (typeof RBAC_RESOURCES)[number][\"id\"];\ntype PermissionLevel = \"none\" | \"read\" | \"write\";\n\ntype PermissionMap = Record<ResourceId, PermissionLevel>;\n\nfunction defaultPermissions(): PermissionMap {\n return Object.fromEntries(\n RBAC_RESOURCES.map((r) => [r.id, \"none\"]),\n ) as PermissionMap;\n}\n\nfunction permissionsToManifest(perms: PermissionMap) {\n const entries = Object.entries(perms).filter(([, level]) => level !== \"none\");\n return entries.map(([resource, level]) => ({ resource, level }));\n}\n\n// ─── Org options ──────────────────────────────────────────────────────────────\n\nconst BASE_VISIBILITY_OPTIONS = [\n { value: \"PUBLIC\", label: \"Public — listed in the marketplace after review\" },\n { value: \"PRIVATE\", label: \"Private — only you (the creator) can see it\" },\n { value: \"INTERNAL\", label: \"Internal — visible to your entire dev org\" },\n];\n\nconst WORKFLOW_VISIBILITY_OPTIONS = [\n ...BASE_VISIBILITY_OPTIONS,\n {\n value: \"UNLISTED\",\n label: \"Unlisted — shareable via link, not listed in store\",\n },\n];\n\n// ─── Sub-components ───────────────────────────────────────────────────────────\n\ninterface TypeCardProps {\n icon: FC<{ size?: number; className?: string }>;\n title: string;\n description: string;\n bullets: string[];\n selected: boolean;\n onClick: () => void;\n}\n\nconst TypeCard: FC<TypeCardProps> = ({\n icon: Icon,\n title,\n description,\n bullets,\n selected,\n onClick,\n}) => (\n <button\n type=\"button\"\n onClick={onClick}\n className={cn(\n \"relative flex flex-col gap-3 rounded-xl border-2 p-6 text-left transition-all hover:border-primary/50 hover:shadow-sm\",\n selected\n ? \"border-primary bg-action-primary-bg/5 shadow-sm\"\n : \"border-border-subtle bg-bg-surface\",\n )}\n >\n {selected && (\n <span className=\"absolute top-4 right-4 flex h-5 w-5 items-center justify-center rounded-full bg-action-primary-bg text-action-primary-text\">\n <Check size={12} />\n </span>\n )}\n <div className=\"flex h-10 w-10 items-center justify-center rounded-lg bg-bg-sunken\">\n <Icon size={22} className=\"text-text-primary\" />\n </div>\n <div>\n <p className=\"font-semibold text-text-primary\">{title}</p>\n <p className=\"mt-1 text-sm text-text-secondary\">{description}</p>\n </div>\n <ul className=\"mt-1 space-y-1\">\n {bullets.map((b) => (\n <li\n key={b}\n className=\"flex items-center gap-2 text-xs text-text-secondary\"\n >\n <ChevronRight size={12} className=\"flex-shrink-0 text-primary\" />\n {b}\n </li>\n ))}\n </ul>\n </button>\n);\n\n// ─── Permissions matrix ───────────────────────────────────────────────────────\n\ninterface PermissionsMatrixProps {\n permissions: PermissionMap;\n onChange: (resource: ResourceId, level: PermissionLevel) => void;\n}\n\nconst PermissionsMatrix: FC<PermissionsMatrixProps> = ({\n permissions,\n onChange,\n}) => {\n const levels: PermissionLevel[] = [\"none\", \"read\", \"write\"];\n const levelLabels: Record<PermissionLevel, string> = {\n none: \"No access\",\n read: \"Read\",\n write: \"Read & Write\",\n };\n\n return (\n <div className=\"overflow-x-auto rounded-lg border border-border-subtle\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"border-b border-border-subtle bg-bg-sunken/50\">\n <th className=\"px-4 py-3 text-left font-medium text-text-secondary w-1/2\">\n Resource\n </th>\n {levels.map((l) => (\n <th\n key={l}\n className=\"px-4 py-3 text-center font-medium text-text-secondary\"\n >\n {levelLabels[l]}\n </th>\n ))}\n </tr>\n </thead>\n <tbody className=\"divide-y divide-border\">\n {RBAC_RESOURCES.map((resource) => (\n <tr\n key={resource.id}\n className=\"hover:bg-bg-sunken/30 transition-colors\"\n >\n <td className=\"px-4 py-3\">\n <p className=\"font-medium text-text-primary\">\n {resource.label}\n </p>\n <p className=\"text-xs text-text-secondary\">\n {resource.description}\n </p>\n </td>\n {levels.map((level) => (\n <td key={level} className=\"px-4 py-3 text-center\">\n <input\n type=\"radio\"\n name={`permission-${resource.id}`}\n value={level}\n checked={permissions[resource.id] === level}\n onChange={() => onChange(resource.id, level)}\n className=\"h-4 w-4 accent-primary cursor-pointer\"\n />\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n};\n\n// ─── Main component ───────────────────────────────────────────────────────────\n\ninterface FormData {\n name: string;\n slug: string;\n shortDescription: string;\n description: string;\n category: string;\n visibility: string;\n developerOrganizationId: string;\n websiteUrl: string;\n githubUrl: string;\n documentationUrl: string;\n supportUrl: string;\n oauthAuthUrl: string;\n oauthTokenUrl: string;\n oauthRevokeUrl: string;\n}\n\ninterface FormErrors {\n name?: string;\n slug?: string;\n shortDescription?: string;\n category?: string;\n compatibleProducts?: string;\n _submit?: string;\n}\n\nexport const CreateApplicationPage: FC = () => {\n const { navigate, basePath, activeOrgId } = useDevportal();\n const { t } = useI18n();\n const tr = (key: string, fallback: string): string => {\n const v = t(key);\n return v === key ? fallback : v;\n };\n const bus = useDevportalEventBus();\n const { products: platformProducts } = useProducts();\n\n const [builderType, setBuilderType] = useState<BuilderType | null>(null);\n const [compatibleProducts, setCompatibleProducts] = useState<string[]>([]);\n const [permissions, setPermissions] =\n useState<PermissionMap>(defaultPermissions());\n // Track whether the user has manually edited the slug so we stop auto-generating\n const slugUserEdited = useRef(false);\n const [formData, setFormData] = useState<FormData>({\n name: \"\",\n slug: \"\",\n shortDescription: \"\",\n description: \"\",\n category: \"\",\n visibility: \"PUBLIC\",\n developerOrganizationId: activeOrgId ?? \"\",\n websiteUrl: \"\",\n githubUrl: \"\",\n documentationUrl: \"\",\n supportUrl: \"\",\n oauthAuthUrl: \"\",\n oauthTokenUrl: \"\",\n oauthRevokeUrl: \"\",\n });\n const [errors, setErrors] = useState<FormErrors>({});\n\n const [createApplication, { loading: isSubmitting }] =\n useCreateApplicationMutation();\n const { data: orgsData } = useGetMyOrganizationsQuery({\n fetchPolicy: \"cache-and-network\",\n });\n\n // Apps can only ever belong to a DIGITAL org (the backend rejects\n // publishing an app under a PHYSICAL org) — exclude seller-portal orgs\n // from this picker. See DeveloperOrgKind (BOFF-7285).\n const orgOptions = [\n { value: \"\", label: \"No organization (personal)\" },\n ...(orgsData?.myDeveloperOrganizations ?? [])\n .filter((org: { kind?: string | null }) => org.kind !== \"PHYSICAL\")\n .map((org: { id: string; name: string }) => ({\n value: org.id,\n label: org.name,\n })),\n ];\n\n const handleNav = (path: string) => navigate?.(`${basePath}${path}`);\n\n const generateSlug = (name: string) =>\n name\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-|-$/g, \"\");\n\n const handleNameChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const name = e.target.value;\n setFormData((prev) => ({\n ...prev,\n name,\n // Only auto-generate slug while the user hasn't manually touched the field\n slug: slugUserEdited.current ? prev.slug : generateSlug(name),\n }));\n if (errors.name) setErrors((p) => ({ ...p, name: undefined }));\n };\n\n const handleSlugChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n slugUserEdited.current = true;\n const value = e.target.value.toLowerCase().replace(/[^a-z0-9-]/g, \"\");\n setFormData((prev) => ({ ...prev, slug: value }));\n if (errors.slug) setErrors((p) => ({ ...p, slug: undefined }));\n };\n\n const handleChange = (field: keyof FormData, value: string) => {\n setFormData((prev) => ({ ...prev, [field]: value }));\n if (errors[field as keyof FormErrors] || errors._submit)\n setErrors((p) => ({ ...p, [field]: undefined, _submit: undefined }));\n };\n\n const handlePermissionChange = (\n resource: ResourceId,\n level: PermissionLevel,\n ) => {\n setPermissions((prev) => ({ ...prev, [resource]: level }));\n };\n\n const validate = (): boolean => {\n const newErrors: FormErrors = {};\n if (!formData.name.trim()) {\n newErrors.name = \"Name is required\";\n } else if (formData.name.length < 3) {\n newErrors.name = \"Name must be at least 3 characters\";\n } else if (formData.name.length > 100) {\n newErrors.name = \"Name must be less than 100 characters\";\n }\n if (!formData.slug.trim()) {\n newErrors.slug = \"Slug is required\";\n } else if (!/^[a-z0-9-]+$/.test(formData.slug)) {\n newErrors.slug =\n \"Slug can only contain lowercase letters, numbers, and hyphens\";\n }\n if (!formData.shortDescription.trim()) {\n newErrors.shortDescription = \"Short description is required\";\n } else if (formData.shortDescription.length > 200) {\n newErrors.shortDescription =\n \"Short description must be less than 200 characters\";\n }\n if (!formData.category) {\n newErrors.category = \"Category is required\";\n }\n if (builderType !== \"app\" && compatibleProducts.length === 0) {\n newErrors.compatibleProducts =\n \"Select at least one compatible product so users can find this in the right store\";\n }\n setErrors(newErrors);\n return Object.keys(newErrors).length === 0;\n };\n\n const appTypeForBuilder = () =>\n BUILDER_TYPE_META[builderType ?? \"app\"].appType;\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n if (!validate() || !builderType) return;\n\n const permManifest =\n builderType === \"app\"\n ? { permissions: permissionsToManifest(permissions) }\n : null;\n\n try {\n const result = await createApplication({\n variables: {\n input: {\n name: formData.name,\n slug: formData.slug || undefined,\n shortDescription: formData.shortDescription || undefined,\n description: formData.description || undefined,\n category: formData.category || undefined,\n appType: appTypeForBuilder(),\n visibility: formData.visibility as\n | \"PUBLIC\"\n | \"PRIVATE\"\n | \"UNLISTED\"\n | undefined,\n developerOrganizationId:\n formData.developerOrganizationId || undefined,\n websiteUrl: formData.websiteUrl || undefined,\n githubUrl: formData.githubUrl || undefined,\n documentationUrl: formData.documentationUrl || undefined,\n supportUrl: formData.supportUrl || undefined,\n manifest: permManifest ?? undefined,\n compatibleProducts:\n compatibleProducts.length > 0 ? compatibleProducts : undefined,\n ...(builderType === \"app\" && {\n oauthAuthUrl: formData.oauthAuthUrl || undefined,\n oauthTokenUrl: formData.oauthTokenUrl || undefined,\n oauthRevokeUrl: formData.oauthRevokeUrl || undefined,\n }),\n },\n },\n });\n if (result.data?.createApplication?.id) {\n bus.emit(\"devportal.app.created\", {\n appId: result.data.createApplication.id,\n name: formData.name,\n appType: appTypeForBuilder(),\n organizationId: formData.developerOrganizationId || null,\n });\n handleNav(`/apps/${result.data.createApplication.id}`);\n }\n } catch (error) {\n // Collect all error messages from GraphQL errors and the top-level message\n const messages: string[] = [];\n if (\n error &&\n typeof error === \"object\" &&\n \"graphQLErrors\" in error &&\n Array.isArray((error as { graphQLErrors: unknown[] }).graphQLErrors)\n ) {\n (\n error as { graphQLErrors: Array<{ message: string }> }\n ).graphQLErrors.forEach((e) => messages.push(e.message));\n }\n if (error instanceof Error) messages.push(error.message);\n\n const combined = messages.join(\" \").toLowerCase();\n const isSlugConflict =\n combined.includes(\"slug\") ||\n combined.includes(\"already exist\") ||\n combined.includes(\"unique\") ||\n combined.includes(\"conflict\") ||\n combined.includes(\"duplicate\");\n\n if (isSlugConflict) {\n setErrors((p) => ({\n ...p,\n slug: \"This slug is already taken — choose a different one\",\n }));\n } else {\n setErrors((p) => ({\n ...p,\n _submit: messages[0] ?? \"Something went wrong. Please try again.\",\n }));\n }\n }\n };\n\n // ── Step 1: type picker ─────────────────────────────────────────────────────\n if (!builderType) {\n return (\n <PermissionGuard authOnly>\n <PageLayout\n title=\"What do you want to build?\"\n description=\"Choose a builder type to get started\"\n purpose=\"Pick the kind of integration you are creating — a standard app, a Node package, or a workflow. Your choice sets up the right defaults (credentials, permissions, and where it can be installed) so you only fill in what that type actually needs.\"\n backLink={`${basePath}/apps`}\n backLabel=\"Back to Applications\"\n >\n <div className=\"max-w-3xl space-y-6\">\n <div className=\"grid gap-4 sm:grid-cols-3\">\n {(\n [\n \"app\",\n \"node\",\n \"workflow\",\n \"parser\",\n \"widget\",\n \"dashboard\",\n ] as BuilderType[]\n ).map((type) => {\n const meta = BUILDER_TYPE_META[type];\n return (\n <TypeCard\n key={type}\n icon={meta.icon}\n title={meta.label}\n description={meta.cardDescription}\n bullets={meta.cardBullets}\n selected={builderType === type}\n onClick={() => setBuilderType(type)}\n />\n );\n })}\n </div>\n\n <div className=\"rounded-lg border border-border-subtle bg-bg-sunken/30 p-4 flex gap-3 text-sm text-text-secondary\">\n <Info size={16} className=\"flex-shrink-0 mt-0.5\" />\n <p>\n Apps use OAuth to interact with platform data. Nodes and\n Workflows are packaged files you upload after creation.\n </p>\n </div>\n </div>\n </PageLayout>\n </PermissionGuard>\n );\n }\n\n // ── Step 2: form ────────────────────────────────────────────────────────────\n const activeMeta = BUILDER_TYPE_META[builderType ?? \"app\"];\n const typeLabel = activeMeta.label;\n const TypeIconComponent = activeMeta.icon;\n const typeIcon = <TypeIconComponent size={16} />;\n\n return (\n <PermissionGuard authOnly>\n <PageLayout\n title={`Create ${typeLabel}`}\n description={activeMeta.pageDescription}\n purpose={activeMeta.purpose}\n backLink={`${basePath}/apps`}\n backLabel=\"Back to Applications\"\n >\n <form onSubmit={handleSubmit} className=\"space-y-8 max-w-3xl\">\n {/* Type badge + back to picker */}\n <div className=\"flex items-center gap-3\">\n <button\n type=\"button\"\n onClick={() => setBuilderType(null)}\n className=\"flex items-center gap-1.5 text-sm text-text-secondary hover:text-text-primary transition-colors\"\n >\n <ArrowLeft size={14} />\n Change type\n </button>\n <span className=\"flex items-center gap-1.5 rounded-full border border-border-subtle bg-bg-sunken px-3 py-1 text-xs font-medium\">\n {typeIcon}\n {typeLabel}\n </span>\n </div>\n\n {/* Basic info */}\n <PageSection\n title=\"Basic Information\"\n description=\"Core details about your application\"\n >\n <div className=\"space-y-4\">\n <InputField\n label=\"Name\"\n value={formData.name}\n onChange={handleNameChange}\n placeholder={activeMeta.namePlaceholder}\n required\n error={errors.name}\n />\n <InputField\n label=\"Slug\"\n value={formData.slug}\n onChange={handleSlugChange}\n placeholder=\"my-integration\"\n required\n error={errors.slug}\n hint={\n slugUserEdited.current\n ? \"Only lowercase letters, numbers, and hyphens\"\n : \"Auto-generated from name — edit to customise\"\n }\n />\n <MarkdownEditor\n label=\"Short Description\"\n value={formData.shortDescription}\n onChange={(value) => handleChange(\"shortDescription\", value)}\n placeholder=\"Briefly describe what this does\"\n required\n error={errors.shortDescription}\n hint={`${formData.shortDescription.length}/200 characters`}\n rows={2}\n maxLength={200}\n />\n <div className=\"grid gap-4 sm:grid-cols-2\">\n <SelectField\n label=\"Category\"\n value={formData.category}\n onChange={(e) => handleChange(\"category\", e.target.value)}\n options={[...APP_CATEGORY_OPTIONS]}\n placeholder=\"Select a category…\"\n required\n error={errors.category}\n hint=\"Helps users discover your item in the store\"\n />\n <SelectField\n label=\"Visibility\"\n value={formData.visibility}\n onChange={(e) => handleChange(\"visibility\", e.target.value)}\n options={\n builderType === \"workflow\"\n ? WORKFLOW_VISIBILITY_OPTIONS\n : BASE_VISIBILITY_OPTIONS\n }\n required\n hint={\n formData.visibility === \"PUBLIC\"\n ? \"Listed in the marketplace after review approval — anyone can discover and install it\"\n : formData.visibility === \"UNLISTED\"\n ? \"Not in the store, but share with anyone via a direct link. You can still submit for marketplace review later\"\n : formData.visibility === \"INTERNAL\"\n ? \"Visible to all members of your developer organization — no one outside can access it\"\n : \"Only you (the creator) can see this — other org members cannot access it\"\n }\n />\n </div>\n\n {/* Compatible Products — NODE and WORKFLOW only */}\n {builderType !== \"app\" && (\n <div className=\"space-y-2\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary\">\n Compatible Products\n <span className=\"text-status-error-text ml-1\">*</span>\n </label>\n <p className=\"text-xs text-text-secondary mt-0.5\">\n Select which products this {builderType} works with. Users\n will see it in those products&apos; node stores.\n </p>\n </div>\n <MultiSelectCombobox\n options={platformProducts.map((p) => ({\n value: p.slug,\n label: p.name,\n }))}\n selected={compatibleProducts}\n onChange={(next) => {\n setCompatibleProducts(next);\n if (next.length > 0)\n setErrors((p) => ({\n ...p,\n compatibleProducts: undefined,\n }));\n }}\n placeholder=\"Select products…\"\n searchPlaceholder=\"Search products…\"\n error={!!errors.compatibleProducts}\n />\n {errors.compatibleProducts && (\n <p className=\"text-xs text-status-error-text\">\n {errors.compatibleProducts}\n </p>\n )}\n </div>\n )}\n\n <MarkdownEditor\n label=\"Full Description\"\n value={formData.description}\n onChange={(value) => handleChange(\"description\", value)}\n placeholder=\"Detailed description, features, and use cases...\"\n rows={5}\n hint=\"Markdown supported\"\n />\n </div>\n </PageSection>\n\n {/* Developer Organization — only needed if user has multiple orgs */}\n {orgOptions.length > 2 && (\n <PageSection\n title=\"Organization\"\n description=\"Which developer organization owns this?\"\n >\n <SelectField\n label=\"Developer Organization\"\n value={formData.developerOrganizationId}\n onChange={(e) =>\n handleChange(\"developerOrganizationId\", e.target.value)\n }\n options={orgOptions}\n />\n </PageSection>\n )}\n\n {/* Permissions — App type only */}\n {builderType === \"app\" && (\n <PageSection\n title=\"Permissions\"\n description=\"Choose what data your app can access. Users will see these permissions when authorizing your app — like GitHub Apps.\"\n >\n <PermissionsMatrix\n permissions={permissions}\n onChange={handlePermissionChange}\n />\n <div className=\"mt-3 flex gap-2 rounded-lg border border-border-subtle bg-bg-sunken/30 p-3 text-xs text-text-secondary\">\n <Info size={14} className=\"flex-shrink-0 mt-0.5\" />\n <span>\n <strong>Read &amp; Write</strong> implies Read. Select only\n what your app genuinely needs — fewer permissions build more\n user trust.\n </span>\n </div>\n </PageSection>\n )}\n\n {/* Integration Setup — App type only */}\n {builderType === \"app\" && (\n <PageSection\n title=\"Integration Setup\"\n description=\"Configure the endpoints for your integration. After a user installs, we redirect them to your callback URL so your server can complete the connection.\"\n >\n <div className=\"space-y-4\">\n <InputField\n label=\"Post-install Callback URL\"\n type=\"url\"\n value={formData.oauthAuthUrl}\n onChange={(e) => handleChange(\"oauthAuthUrl\", e.target.value)}\n placeholder=\"https://yourapp.com/callback\"\n hint=\"Users land here after install with ?installation_id=xxx appended\"\n />\n <InputField\n label=\"Revoke URL\"\n type=\"url\"\n value={formData.oauthRevokeUrl}\n onChange={(e) =>\n handleChange(\"oauthRevokeUrl\", e.target.value)\n }\n placeholder=\"https://yourapp.com/oauth/revoke\"\n hint=\"We POST to this URL when a user uninstalls your integration\"\n />\n </div>\n </PageSection>\n )}\n\n {/* Node/Workflow file upload note */}\n {builderType !== \"app\" && (\n <div className=\"rounded-lg border border-border-subtle bg-bg-sunken/30 p-4 flex gap-3 text-sm text-text-secondary\">\n <Info size={16} className=\"flex-shrink-0 mt-0.5\" />\n <div>\n <p className=\"font-medium text-text-primary\">File uploads</p>\n <p className=\"mt-1\">\n {builderType === \"node\"\n ? \"After creating your Node, go to the Versions tab to upload your ZIP bundle and manifest.json.\"\n : `After creating your ${typeLabel}, go to the Versions tab to upload its manifest JSON.`}\n </p>\n </div>\n </div>\n )}\n\n {/* General submit error */}\n {errors._submit && (\n <div className=\"flex items-start gap-3 rounded-lg border border-status-error-bg bg-status-error-bg/10 px-4 py-3 text-sm text-status-error-text\">\n <Info size={16} className=\"flex-shrink-0 mt-0.5\" />\n <span>{errors._submit}</span>\n </div>\n )}\n\n {/* Actions */}\n <div className=\"flex items-center justify-end gap-3 border-t pt-6\">\n <button\n type=\"button\"\n onClick={() => handleNav(\"/apps\")}\n disabled={isSubmitting}\n className=\"inline-flex items-center gap-2 rounded-md border px-4 py-2 text-sm font-medium hover:bg-bg-sunken transition-colors disabled:opacity-50\"\n >\n <X size={16} />\n {tr(\"devportal.cancel\", \"Cancel\")}\n </button>\n <button\n type=\"submit\"\n disabled={isSubmitting}\n className=\"inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors disabled:opacity-50\"\n >\n {isSubmitting ? (\n <>\n <Loader2 size={16} className=\"animate-spin\" />\n Creating…\n </>\n ) : (\n <>\n <Save size={16} />\n Create {typeLabel}\n </>\n )}\n </button>\n </div>\n </form>\n </PageLayout>\n </PermissionGuard>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AA4DA,IAAM,IAA0D;CAC9D,KAAK;EACH,SAAS;EACT,MAAM;EACN,OAAO;EACP,iBAAiB;EACjB,SACE;EACF,iBAAiB;EACjB,iBACE;EACF,aAAa;GACX;GACA;GACA;GACA;GACD;EACF;CACD,MAAM;EACJ,SAAS;EACT,MAAM;EACN,OAAO;EACP,iBAAiB;EACjB,SACE;EACF,iBAAiB;EACjB,iBACE;EACF,aAAa;GACX;GACA;GACA;GACA;GACD;EACF;CACD,UAAU;EACR,SAAS;EACT,MAAM;EACN,OAAO;EACP,iBAAiB;EACjB,SACE;EACF,iBAAiB;EACjB,iBACE;EACF,aAAa;GACX;GACA;GACA;GACA;GACD;EACF;CACD,QAAQ;EACN,SAAS;EACT,MAAM;EACN,OAAO;EACP,iBAAiB;EACjB,SACE;EACF,iBAAiB;EACjB,iBACE;EACF,aAAa;GACX;GACA;GACA;GACA;GACD;EACF;CACD,QAAQ;EACN,SAAS;EACT,MAAM;EACN,OAAO;EACP,iBAAiB;EACjB,SACE;EACF,iBAAiB;EACjB,iBACE;EACF,aAAa;GACX;GACA;GACA;GACA;GACD;EACF;CACD,WAAW;EACT,SAAS;EACT,MAAM;EACN,OAAO;EACP,iBAAiB;EACjB,SACE;EACF,iBAAiB;EACjB,iBACE;EACF,aAAa;GACX;GACA;GACA;GACA;GACD;EACF;CACF,EAIK,IAAiB;CACrB;EACE,IAAI;EACJ,OAAO;EACP,aAAa;EACd;CACD;EACE,IAAI;EACJ,OAAO;EACP,aAAa;EACd;CACD;EACE,IAAI;EACJ,OAAO;EACP,aAAa;EACd;CACD;EACE,IAAI;EACJ,OAAO;EACP,aAAa;EACd;CACD;EACE,IAAI;EACJ,OAAO;EACP,aAAa;EACd;CACD;EACE,IAAI;EACJ,OAAO;EACP,aAAa;EACd;CACD;EACE,IAAI;EACJ,OAAO;EACP,aAAa;EACd;CACD;EACE,IAAI;EACJ,OAAO;EACP,aAAa;EACd;CACD;EACE,IAAI;EACJ,OAAO;EACP,aAAa;EACd;CACD;EACE,IAAI;EACJ,OAAO;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"}
1
+ {"version":3,"file":"CreateApplicationPage.js","names":["_Fragment","BUILDER_TYPE_META","Box","Puzzle","GitFork","FileCode2","LayoutGrid","LayoutDashboard","RBAC_RESOURCES","defaultPermissions","r","permissionsToManifest","perms","level","resource","BASE_VISIBILITY_OPTIONS","WORKFLOW_VISIBILITY_OPTIONS","TypeCard","Icon","cn","selected","Check","title","description","bullets","ChevronRight","b","PermissionsMatrix","levels","levelLabels","l","permissions","onChange","CreateApplicationPage","useDevportal","useI18n","tr","v","t","key","fallback","bus","useDevportalEventBus","platformProducts","useProducts","builderType","setBuilderType","useState","compatibleProducts","setCompatibleProducts","setPermissions","slugUserEdited","useRef","formData","setFormData","activeOrgId","errors","setErrors","createApplication","isSubmitting","useCreateApplicationMutation","orgsData","useGetMyOrganizationsQuery","orgOptions","org","handleNav","navigate","basePath","path","generateSlug","name","handleNameChange","prev","p","handleSlugChange","value","handleChange","field","handlePermissionChange","validate","newErrors","appTypeForBuilder","handleSubmit","permManifest","result","error","messages","combined","PermissionGuard","PageLayout","meta","type","Info","activeMeta","typeLabel","TypeIconComponent","typeIcon","ArrowLeft","PageSection","InputField","MarkdownEditor","SelectField","APP_CATEGORY_OPTIONS","MultiSelectCombobox","next","X","Fragment","Loader2","Save"],"sources":["../../../src/devportal/pages/CreateApplicationPage.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport { useState, useRef } from \"react\";\nimport {\n ArrowLeft,\n Box,\n Check,\n ChevronRight,\n FileCode2,\n GitFork,\n Info,\n LayoutDashboard,\n LayoutGrid,\n Loader2,\n Puzzle,\n Save,\n X,\n} from \"lucide-react\";\nimport { useI18n } from \"@burdenoff/fe-libs/shared/providers/shell/I18nProvider\";\nimport { APP_CATEGORY_OPTIONS } from \"../constants/appCategories\";\nimport { PageLayout, PageSection } from \"../components/PageLayout\";\nimport { InputField, SelectField } from \"../components/FormField\";\nimport { MarkdownEditor } from \"../components/MarkdownEditor\";\nimport { MultiSelectCombobox } from \"../components/MultiSelectCombobox\";\nimport { useDevportal } from \"../providers/DevportalProvider\";\nimport { PermissionGuard } from \"../components\";\nimport { useDevportalEventBus } from \"../events\";\nimport { useProducts } from \"../hooks\";\nimport { cn } from \"../utils/cn\";\nimport {\n useCreateApplicationMutation,\n useGetMyOrganizationsQuery,\n} from \"../../generated/global-operations\";\n\n// ─── Builder types ────────────────────────────────────────────────────────────\n\ntype BuilderType =\n \"app\" | \"node\" | \"workflow\" | \"parser\" | \"widget\" | \"dashboard\";\n\ninterface BuilderTypeMeta {\n appType:\n \"API_INTEGRATION\" | \"NODE\" | \"WORKFLOW\" | \"PARSER\" | \"WIDGET\" | \"DASHBOARD\";\n icon: FC<{ size?: number; className?: string }>;\n label: string;\n pageDescription: string;\n purpose: string;\n namePlaceholder: string;\n cardDescription: string;\n cardBullets: string[];\n}\n\nconst BUILDER_TYPE_META: Record<BuilderType, BuilderTypeMeta> = {\n app: {\n appType: \"API_INTEGRATION\",\n icon: Box,\n label: \"App\",\n pageDescription: \"Register a new app integration with OAuth permissions\",\n purpose:\n \"Give your integration a name, description, and the permissions it will request. Once created you will get credentials and can configure webhooks, then publish it to the marketplace when it is ready for users.\",\n namePlaceholder: \"My Integration\",\n cardDescription:\n \"Build integrations that connect your service to the platform using OAuth tokens.\",\n cardBullets: [\n \"GitHub-style permissions\",\n \"OAuth token flow\",\n \"Webhook events\",\n \"Publish to app store\",\n ],\n },\n node: {\n appType: \"NODE\",\n icon: Puzzle,\n label: \"Node\",\n pageDescription: \"Register a new FluidGrids node package\",\n purpose:\n \"Give your node a name and description. Once created you can upload your ZIP bundle and manifest in the Versions tab, then publish it to the node store when it is ready for users.\",\n namePlaceholder: \"HTTP Request\",\n cardDescription:\n \"Build custom FluidGrids nodes that users can drag into their visual workflows.\",\n cardBullets: [\n \"ZIP bundle + manifest\",\n \"Custom inputs/outputs\",\n \"Versioned releases\",\n \"Publish to node store\",\n ],\n },\n workflow: {\n appType: \"WORKFLOW\",\n icon: GitFork,\n label: \"Workflow\",\n pageDescription: \"Register a new reusable automation workflow\",\n purpose:\n \"Give your workflow a name and description. Once created you can upload your workflow definition in the Versions tab, then publish it to the store or generate a shareable public link.\",\n namePlaceholder: \"Onboarding Flow\",\n cardDescription:\n \"Build reusable automation workflows that users can import and customize.\",\n cardBullets: [\n \"Manifest + workflow JSON\",\n \"Trigger definitions\",\n \"Versioned releases\",\n \"Publish to workflow store\",\n ],\n },\n parser: {\n appType: \"PARSER\",\n icon: FileCode2,\n label: \"Parser\",\n pageDescription: \"Register a new data parser\",\n purpose:\n \"Give your parser a name and description. Once created you can upload its manifest in the Versions tab, then publish it to the store when it is ready for users.\",\n namePlaceholder: \"CSV Parser\",\n cardDescription:\n \"Build parsers that extract structured data from files or feeds for use across the platform.\",\n cardBullets: [\n \"Manifest JSON only\",\n \"No ZIP bundle needed\",\n \"Versioned releases\",\n \"Publish to store\",\n ],\n },\n widget: {\n appType: \"WIDGET\",\n icon: LayoutGrid,\n label: \"Widget\",\n pageDescription: \"Register a new embeddable widget\",\n purpose:\n \"Give your widget a name and description. Once created you can upload its manifest in the Versions tab, then publish it to the store when it is ready for users.\",\n namePlaceholder: \"Revenue Chart Widget\",\n cardDescription:\n \"Build embeddable UI widgets users can add to dashboards and pages.\",\n cardBullets: [\n \"Manifest JSON only\",\n \"Embeddable UI component\",\n \"Versioned releases\",\n \"Publish to store\",\n ],\n },\n dashboard: {\n appType: \"DASHBOARD\",\n icon: LayoutDashboard,\n label: \"Dashboard Template\",\n pageDescription: \"Register a new dashboard template\",\n purpose:\n \"Give your dashboard template a name and description. Once created you can upload its manifest in the Versions tab, then publish it to the store when it is ready for users.\",\n namePlaceholder: \"Sales Overview Dashboard\",\n cardDescription:\n \"Build prebuilt dashboard layouts users can install and customize.\",\n cardBullets: [\n \"Manifest JSON only\",\n \"Prebuilt layout\",\n \"Versioned releases\",\n \"Publish to store\",\n ],\n },\n};\n\n// ─── Permissions (App type) ───────────────────────────────────────────────────\n\nconst RBAC_RESOURCES = [\n {\n id: \"auth\",\n label: \"Authentication\",\n description: \"User identity and session management\",\n },\n {\n id: \"billing\",\n label: \"Billing\",\n description: \"Billing accounts and subscriptions\",\n },\n {\n id: \"files\",\n label: \"Files\",\n description: \"File storage and management\",\n },\n {\n id: \"tags\",\n label: \"Tags\",\n description: \"Tags and labels on resources\",\n },\n {\n id: \"calendar\",\n label: \"Calendar\",\n description: \"Events and scheduling\",\n },\n {\n id: \"workflows\",\n label: \"Workflows\",\n description: \"Automation workflows\",\n },\n {\n id: \"channels\",\n label: \"Channels\",\n description: \"Messaging channels\",\n },\n {\n id: \"notifications\",\n label: \"Notifications\",\n description: \"Platform notifications\",\n },\n {\n id: \"users\",\n label: \"Users & Members\",\n description: \"Workspace members and profiles\",\n },\n {\n id: \"workspaces\",\n label: \"Workspaces\",\n description: \"Workspace settings and metadata\",\n },\n {\n id: \"content\",\n label: \"Content\",\n description: \"Pages, documents, and content\",\n },\n {\n id: \"analytics\",\n label: \"Analytics\",\n description: \"Usage analytics and reporting\",\n },\n {\n id: \"webhooks\",\n label: \"Webhooks\",\n description: \"Webhook subscriptions\",\n },\n {\n id: \"rbac\",\n label: \"Roles & Permissions\",\n description: \"Access control configuration\",\n },\n] as const;\n\ntype ResourceId = (typeof RBAC_RESOURCES)[number][\"id\"];\ntype PermissionLevel = \"none\" | \"read\" | \"write\";\n\ntype PermissionMap = Record<ResourceId, PermissionLevel>;\n\nfunction defaultPermissions(): PermissionMap {\n return Object.fromEntries(\n RBAC_RESOURCES.map((r) => [r.id, \"none\"]),\n ) as PermissionMap;\n}\n\nfunction permissionsToManifest(perms: PermissionMap) {\n const entries = Object.entries(perms).filter(([, level]) => level !== \"none\");\n return entries.map(([resource, level]) => ({ resource, level }));\n}\n\n// ─── Org options ──────────────────────────────────────────────────────────────\n\nconst BASE_VISIBILITY_OPTIONS = [\n { value: \"PUBLIC\", label: \"Public — listed in the marketplace after review\" },\n { value: \"PRIVATE\", label: \"Private — only you (the creator) can see it\" },\n { value: \"INTERNAL\", label: \"Internal — visible to your entire dev org\" },\n];\n\nconst WORKFLOW_VISIBILITY_OPTIONS = [\n ...BASE_VISIBILITY_OPTIONS,\n {\n value: \"UNLISTED\",\n label: \"Unlisted — shareable via link, not listed in store\",\n },\n];\n\n// ─── Sub-components ───────────────────────────────────────────────────────────\n\ninterface TypeCardProps {\n icon: FC<{ size?: number; className?: string }>;\n title: string;\n description: string;\n bullets: string[];\n selected: boolean;\n onClick: () => void;\n}\n\nconst TypeCard: FC<TypeCardProps> = ({\n icon: Icon,\n title,\n description,\n bullets,\n selected,\n onClick,\n}) => (\n <button\n type=\"button\"\n onClick={onClick}\n className={cn(\n \"relative flex flex-col gap-3 rounded-xl border-2 p-6 text-left transition-all hover:border-primary/50 hover:shadow-sm\",\n selected\n ? \"border-primary bg-action-primary-bg/5 shadow-sm\"\n : \"border-border-subtle bg-bg-surface\",\n )}\n >\n {selected && (\n <span className=\"absolute top-4 right-4 flex h-5 w-5 items-center justify-center rounded-full bg-action-primary-bg text-action-primary-text\">\n <Check size={12} />\n </span>\n )}\n <div className=\"flex h-10 w-10 items-center justify-center rounded-lg bg-bg-sunken\">\n <Icon size={22} className=\"text-text-primary\" />\n </div>\n <div>\n <p className=\"font-semibold text-text-primary\">{title}</p>\n <p className=\"mt-1 text-sm text-text-secondary\">{description}</p>\n </div>\n <ul className=\"mt-1 space-y-1\">\n {bullets.map((b) => (\n <li\n key={b}\n className=\"flex items-center gap-2 text-xs text-text-secondary\"\n >\n <ChevronRight size={12} className=\"flex-shrink-0 text-primary\" />\n {b}\n </li>\n ))}\n </ul>\n </button>\n);\n\n// ─── Permissions matrix ───────────────────────────────────────────────────────\n\ninterface PermissionsMatrixProps {\n permissions: PermissionMap;\n onChange: (resource: ResourceId, level: PermissionLevel) => void;\n}\n\nconst PermissionsMatrix: FC<PermissionsMatrixProps> = ({\n permissions,\n onChange,\n}) => {\n const levels: PermissionLevel[] = [\"none\", \"read\", \"write\"];\n const levelLabels: Record<PermissionLevel, string> = {\n none: \"No access\",\n read: \"Read\",\n write: \"Read & Write\",\n };\n\n return (\n <div className=\"overflow-x-auto rounded-lg border border-border-subtle\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"border-b border-border-subtle bg-bg-sunken/50\">\n <th className=\"px-4 py-3 text-left font-medium text-text-secondary w-1/2\">\n Resource\n </th>\n {levels.map((l) => (\n <th\n key={l}\n className=\"px-4 py-3 text-center font-medium text-text-secondary\"\n >\n {levelLabels[l]}\n </th>\n ))}\n </tr>\n </thead>\n <tbody className=\"divide-y divide-border\">\n {RBAC_RESOURCES.map((resource) => (\n <tr\n key={resource.id}\n className=\"hover:bg-bg-sunken/30 transition-colors\"\n >\n <td className=\"px-4 py-3\">\n <p className=\"font-medium text-text-primary\">\n {resource.label}\n </p>\n <p className=\"text-xs text-text-secondary\">\n {resource.description}\n </p>\n </td>\n {levels.map((level) => (\n <td key={level} className=\"px-4 py-3 text-center\">\n <input\n type=\"radio\"\n name={`permission-${resource.id}`}\n value={level}\n checked={permissions[resource.id] === level}\n onChange={() => onChange(resource.id, level)}\n className=\"h-4 w-4 accent-primary cursor-pointer\"\n />\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n};\n\n// ─── Main component ───────────────────────────────────────────────────────────\n\ninterface FormData {\n name: string;\n slug: string;\n shortDescription: string;\n description: string;\n category: string;\n visibility: string;\n developerOrganizationId: string;\n websiteUrl: string;\n githubUrl: string;\n documentationUrl: string;\n supportUrl: string;\n oauthAuthUrl: string;\n oauthTokenUrl: string;\n oauthRevokeUrl: string;\n}\n\ninterface FormErrors {\n name?: string;\n slug?: string;\n shortDescription?: string;\n category?: string;\n compatibleProducts?: string;\n _submit?: string;\n}\n\nexport const CreateApplicationPage: FC = () => {\n const { navigate, basePath, activeOrgId } = useDevportal();\n const { t } = useI18n();\n const tr = (key: string, fallback: string): string => {\n const v = t(key);\n return v === key ? fallback : v;\n };\n const bus = useDevportalEventBus();\n const { products: platformProducts } = useProducts();\n\n const [builderType, setBuilderType] = useState<BuilderType | null>(null);\n const [compatibleProducts, setCompatibleProducts] = useState<string[]>([]);\n const [permissions, setPermissions] =\n useState<PermissionMap>(defaultPermissions());\n // Track whether the user has manually edited the slug so we stop auto-generating\n const slugUserEdited = useRef(false);\n const [formData, setFormData] = useState<FormData>({\n name: \"\",\n slug: \"\",\n shortDescription: \"\",\n description: \"\",\n category: \"\",\n visibility: \"PUBLIC\",\n developerOrganizationId: activeOrgId ?? \"\",\n websiteUrl: \"\",\n githubUrl: \"\",\n documentationUrl: \"\",\n supportUrl: \"\",\n oauthAuthUrl: \"\",\n oauthTokenUrl: \"\",\n oauthRevokeUrl: \"\",\n });\n const [errors, setErrors] = useState<FormErrors>({});\n\n const [createApplication, { loading: isSubmitting }] =\n useCreateApplicationMutation();\n const { data: orgsData } = useGetMyOrganizationsQuery({\n fetchPolicy: \"cache-and-network\",\n });\n\n // Apps can only ever belong to a DIGITAL org (the backend rejects\n // publishing an app under a PHYSICAL org) — exclude seller-portal orgs\n // from this picker. See DeveloperOrgKind (BOFF-7285).\n const orgOptions = [\n { value: \"\", label: \"No organization (personal)\" },\n ...(orgsData?.myDeveloperOrganizations ?? [])\n .filter((org: { kind?: string | null }) => org.kind !== \"PHYSICAL\")\n .map((org: { id: string; name: string }) => ({\n value: org.id,\n label: org.name,\n })),\n ];\n\n const handleNav = (path: string) => navigate?.(`${basePath}${path}`);\n\n const generateSlug = (name: string) =>\n name\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-|-$/g, \"\");\n\n const handleNameChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const name = e.target.value;\n setFormData((prev) => ({\n ...prev,\n name,\n // Only auto-generate slug while the user hasn't manually touched the field\n slug: slugUserEdited.current ? prev.slug : generateSlug(name),\n }));\n if (errors.name) setErrors((p) => ({ ...p, name: undefined }));\n };\n\n const handleSlugChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n slugUserEdited.current = true;\n const value = e.target.value.toLowerCase().replace(/[^a-z0-9-]/g, \"\");\n setFormData((prev) => ({ ...prev, slug: value }));\n if (errors.slug) setErrors((p) => ({ ...p, slug: undefined }));\n };\n\n const handleChange = (field: keyof FormData, value: string) => {\n setFormData((prev) => ({ ...prev, [field]: value }));\n if (errors[field as keyof FormErrors] || errors._submit)\n setErrors((p) => ({ ...p, [field]: undefined, _submit: undefined }));\n };\n\n const handlePermissionChange = (\n resource: ResourceId,\n level: PermissionLevel,\n ) => {\n setPermissions((prev) => ({ ...prev, [resource]: level }));\n };\n\n const validate = (): boolean => {\n const newErrors: FormErrors = {};\n if (!formData.name.trim()) {\n newErrors.name = \"Name is required\";\n } else if (formData.name.length < 3) {\n newErrors.name = \"Name must be at least 3 characters\";\n } else if (formData.name.length > 100) {\n newErrors.name = \"Name must be less than 100 characters\";\n }\n if (!formData.slug.trim()) {\n newErrors.slug = \"Slug is required\";\n } else if (!/^[a-z0-9-]+$/.test(formData.slug)) {\n newErrors.slug =\n \"Slug can only contain lowercase letters, numbers, and hyphens\";\n }\n if (!formData.shortDescription.trim()) {\n newErrors.shortDescription = \"Short description is required\";\n } else if (formData.shortDescription.length > 200) {\n newErrors.shortDescription =\n \"Short description must be less than 200 characters\";\n }\n if (!formData.category) {\n newErrors.category = \"Category is required\";\n }\n if (builderType !== \"app\" && compatibleProducts.length === 0) {\n newErrors.compatibleProducts =\n \"Select at least one compatible product so users can find this in the right store\";\n }\n setErrors(newErrors);\n return Object.keys(newErrors).length === 0;\n };\n\n const appTypeForBuilder = () =>\n BUILDER_TYPE_META[builderType ?? \"app\"].appType;\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n if (!validate() || !builderType) return;\n\n const permManifest =\n builderType === \"app\"\n ? { permissions: permissionsToManifest(permissions) }\n : null;\n\n try {\n const result = await createApplication({\n variables: {\n input: {\n name: formData.name,\n slug: formData.slug || undefined,\n shortDescription: formData.shortDescription || undefined,\n description: formData.description || undefined,\n category: formData.category || undefined,\n appType: appTypeForBuilder(),\n visibility: formData.visibility as\n \"PUBLIC\" | \"PRIVATE\" | \"UNLISTED\" | undefined,\n developerOrganizationId:\n formData.developerOrganizationId || undefined,\n websiteUrl: formData.websiteUrl || undefined,\n githubUrl: formData.githubUrl || undefined,\n documentationUrl: formData.documentationUrl || undefined,\n supportUrl: formData.supportUrl || undefined,\n manifest: permManifest ?? undefined,\n compatibleProducts:\n compatibleProducts.length > 0 ? compatibleProducts : undefined,\n ...(builderType === \"app\" && {\n oauthAuthUrl: formData.oauthAuthUrl || undefined,\n oauthTokenUrl: formData.oauthTokenUrl || undefined,\n oauthRevokeUrl: formData.oauthRevokeUrl || undefined,\n }),\n },\n },\n });\n if (result.data?.createApplication?.id) {\n bus.emit(\"devportal.app.created\", {\n appId: result.data.createApplication.id,\n name: formData.name,\n appType: appTypeForBuilder(),\n organizationId: formData.developerOrganizationId || null,\n });\n handleNav(`/apps/${result.data.createApplication.id}`);\n }\n } catch (error) {\n // Collect all error messages from GraphQL errors and the top-level message\n const messages: string[] = [];\n if (\n error &&\n typeof error === \"object\" &&\n \"graphQLErrors\" in error &&\n Array.isArray((error as { graphQLErrors: unknown[] }).graphQLErrors)\n ) {\n (\n error as { graphQLErrors: Array<{ message: string }> }\n ).graphQLErrors.forEach((e) => messages.push(e.message));\n }\n if (error instanceof Error) messages.push(error.message);\n\n const combined = messages.join(\" \").toLowerCase();\n const isSlugConflict =\n combined.includes(\"slug\") ||\n combined.includes(\"already exist\") ||\n combined.includes(\"unique\") ||\n combined.includes(\"conflict\") ||\n combined.includes(\"duplicate\");\n\n if (isSlugConflict) {\n setErrors((p) => ({\n ...p,\n slug: \"This slug is already taken — choose a different one\",\n }));\n } else {\n setErrors((p) => ({\n ...p,\n _submit: messages[0] ?? \"Something went wrong. Please try again.\",\n }));\n }\n }\n };\n\n // ── Step 1: type picker ─────────────────────────────────────────────────────\n if (!builderType) {\n return (\n <PermissionGuard authOnly>\n <PageLayout\n title=\"What do you want to build?\"\n description=\"Choose a builder type to get started\"\n purpose=\"Pick the kind of integration you are creating — a standard app, a Node package, or a workflow. Your choice sets up the right defaults (credentials, permissions, and where it can be installed) so you only fill in what that type actually needs.\"\n backLink={`${basePath}/apps`}\n backLabel=\"Back to Applications\"\n >\n <div className=\"max-w-3xl space-y-6\">\n <div className=\"grid gap-4 sm:grid-cols-3\">\n {(\n [\n \"app\",\n \"node\",\n \"workflow\",\n \"parser\",\n \"widget\",\n \"dashboard\",\n ] as BuilderType[]\n ).map((type) => {\n const meta = BUILDER_TYPE_META[type];\n return (\n <TypeCard\n key={type}\n icon={meta.icon}\n title={meta.label}\n description={meta.cardDescription}\n bullets={meta.cardBullets}\n selected={builderType === type}\n onClick={() => setBuilderType(type)}\n />\n );\n })}\n </div>\n\n <div className=\"rounded-lg border border-border-subtle bg-bg-sunken/30 p-4 flex gap-3 text-sm text-text-secondary\">\n <Info size={16} className=\"flex-shrink-0 mt-0.5\" />\n <p>\n Apps use OAuth to interact with platform data. Nodes and\n Workflows are packaged files you upload after creation.\n </p>\n </div>\n </div>\n </PageLayout>\n </PermissionGuard>\n );\n }\n\n // ── Step 2: form ────────────────────────────────────────────────────────────\n const activeMeta = BUILDER_TYPE_META[builderType ?? \"app\"];\n const typeLabel = activeMeta.label;\n const TypeIconComponent = activeMeta.icon;\n const typeIcon = <TypeIconComponent size={16} />;\n\n return (\n <PermissionGuard authOnly>\n <PageLayout\n title={`Create ${typeLabel}`}\n description={activeMeta.pageDescription}\n purpose={activeMeta.purpose}\n backLink={`${basePath}/apps`}\n backLabel=\"Back to Applications\"\n >\n <form onSubmit={handleSubmit} className=\"space-y-8 max-w-3xl\">\n {/* Type badge + back to picker */}\n <div className=\"flex items-center gap-3\">\n <button\n type=\"button\"\n onClick={() => setBuilderType(null)}\n className=\"flex items-center gap-1.5 text-sm text-text-secondary hover:text-text-primary transition-colors\"\n >\n <ArrowLeft size={14} />\n Change type\n </button>\n <span className=\"flex items-center gap-1.5 rounded-full border border-border-subtle bg-bg-sunken px-3 py-1 text-xs font-medium\">\n {typeIcon}\n {typeLabel}\n </span>\n </div>\n\n {/* Basic info */}\n <PageSection\n title=\"Basic Information\"\n description=\"Core details about your application\"\n >\n <div className=\"space-y-4\">\n <InputField\n label=\"Name\"\n value={formData.name}\n onChange={handleNameChange}\n placeholder={activeMeta.namePlaceholder}\n required\n error={errors.name}\n />\n <InputField\n label=\"Slug\"\n value={formData.slug}\n onChange={handleSlugChange}\n placeholder=\"my-integration\"\n required\n error={errors.slug}\n hint={\n slugUserEdited.current\n ? \"Only lowercase letters, numbers, and hyphens\"\n : \"Auto-generated from name — edit to customise\"\n }\n />\n <MarkdownEditor\n label=\"Short Description\"\n value={formData.shortDescription}\n onChange={(value) => handleChange(\"shortDescription\", value)}\n placeholder=\"Briefly describe what this does\"\n required\n error={errors.shortDescription}\n hint={`${formData.shortDescription.length}/200 characters`}\n rows={2}\n maxLength={200}\n />\n <div className=\"grid gap-4 sm:grid-cols-2\">\n <SelectField\n label=\"Category\"\n value={formData.category}\n onChange={(e) => handleChange(\"category\", e.target.value)}\n options={[...APP_CATEGORY_OPTIONS]}\n placeholder=\"Select a category…\"\n required\n error={errors.category}\n hint=\"Helps users discover your item in the store\"\n />\n <SelectField\n label=\"Visibility\"\n value={formData.visibility}\n onChange={(e) => handleChange(\"visibility\", e.target.value)}\n options={\n builderType === \"workflow\"\n ? WORKFLOW_VISIBILITY_OPTIONS\n : BASE_VISIBILITY_OPTIONS\n }\n required\n hint={\n formData.visibility === \"PUBLIC\"\n ? \"Listed in the marketplace after review approval — anyone can discover and install it\"\n : formData.visibility === \"UNLISTED\"\n ? \"Not in the store, but share with anyone via a direct link. You can still submit for marketplace review later\"\n : formData.visibility === \"INTERNAL\"\n ? \"Visible to all members of your developer organization — no one outside can access it\"\n : \"Only you (the creator) can see this — other org members cannot access it\"\n }\n />\n </div>\n\n {/* Compatible Products — NODE and WORKFLOW only */}\n {builderType !== \"app\" && (\n <div className=\"space-y-2\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary\">\n Compatible Products\n <span className=\"text-status-error-text ml-1\">*</span>\n </label>\n <p className=\"text-xs text-text-secondary mt-0.5\">\n Select which products this {builderType} works with. Users\n will see it in those products&apos; node stores.\n </p>\n </div>\n <MultiSelectCombobox\n options={platformProducts.map((p) => ({\n value: p.slug,\n label: p.name,\n }))}\n selected={compatibleProducts}\n onChange={(next) => {\n setCompatibleProducts(next);\n if (next.length > 0)\n setErrors((p) => ({\n ...p,\n compatibleProducts: undefined,\n }));\n }}\n placeholder=\"Select products…\"\n searchPlaceholder=\"Search products…\"\n error={!!errors.compatibleProducts}\n />\n {errors.compatibleProducts && (\n <p className=\"text-xs text-status-error-text\">\n {errors.compatibleProducts}\n </p>\n )}\n </div>\n )}\n\n <MarkdownEditor\n label=\"Full Description\"\n value={formData.description}\n onChange={(value) => handleChange(\"description\", value)}\n placeholder=\"Detailed description, features, and use cases...\"\n rows={5}\n hint=\"Markdown supported\"\n />\n </div>\n </PageSection>\n\n {/* Developer Organization — only needed if user has multiple orgs */}\n {orgOptions.length > 2 && (\n <PageSection\n title=\"Organization\"\n description=\"Which developer organization owns this?\"\n >\n <SelectField\n label=\"Developer Organization\"\n value={formData.developerOrganizationId}\n onChange={(e) =>\n handleChange(\"developerOrganizationId\", e.target.value)\n }\n options={orgOptions}\n />\n </PageSection>\n )}\n\n {/* Permissions — App type only */}\n {builderType === \"app\" && (\n <PageSection\n title=\"Permissions\"\n description=\"Choose what data your app can access. Users will see these permissions when authorizing your app — like GitHub Apps.\"\n >\n <PermissionsMatrix\n permissions={permissions}\n onChange={handlePermissionChange}\n />\n <div className=\"mt-3 flex gap-2 rounded-lg border border-border-subtle bg-bg-sunken/30 p-3 text-xs text-text-secondary\">\n <Info size={14} className=\"flex-shrink-0 mt-0.5\" />\n <span>\n <strong>Read &amp; Write</strong> implies Read. Select only\n what your app genuinely needs — fewer permissions build more\n user trust.\n </span>\n </div>\n </PageSection>\n )}\n\n {/* Integration Setup — App type only */}\n {builderType === \"app\" && (\n <PageSection\n title=\"Integration Setup\"\n description=\"Configure the endpoints for your integration. After a user installs, we redirect them to your callback URL so your server can complete the connection.\"\n >\n <div className=\"space-y-4\">\n <InputField\n label=\"Post-install Callback URL\"\n type=\"url\"\n value={formData.oauthAuthUrl}\n onChange={(e) => handleChange(\"oauthAuthUrl\", e.target.value)}\n placeholder=\"https://yourapp.com/callback\"\n hint=\"Users land here after install with ?installation_id=xxx appended\"\n />\n <InputField\n label=\"Revoke URL\"\n type=\"url\"\n value={formData.oauthRevokeUrl}\n onChange={(e) =>\n handleChange(\"oauthRevokeUrl\", e.target.value)\n }\n placeholder=\"https://yourapp.com/oauth/revoke\"\n hint=\"We POST to this URL when a user uninstalls your integration\"\n />\n </div>\n </PageSection>\n )}\n\n {/* Node/Workflow file upload note */}\n {builderType !== \"app\" && (\n <div className=\"rounded-lg border border-border-subtle bg-bg-sunken/30 p-4 flex gap-3 text-sm text-text-secondary\">\n <Info size={16} className=\"flex-shrink-0 mt-0.5\" />\n <div>\n <p className=\"font-medium text-text-primary\">File uploads</p>\n <p className=\"mt-1\">\n {builderType === \"node\"\n ? \"After creating your Node, go to the Versions tab to upload your ZIP bundle and manifest.json.\"\n : `After creating your ${typeLabel}, go to the Versions tab to upload its manifest JSON.`}\n </p>\n </div>\n </div>\n )}\n\n {/* General submit error */}\n {errors._submit && (\n <div className=\"flex items-start gap-3 rounded-lg border border-status-error-bg bg-status-error-bg/10 px-4 py-3 text-sm text-status-error-text\">\n <Info size={16} className=\"flex-shrink-0 mt-0.5\" />\n <span>{errors._submit}</span>\n </div>\n )}\n\n {/* Actions */}\n <div className=\"flex items-center justify-end gap-3 border-t pt-6\">\n <button\n type=\"button\"\n onClick={() => handleNav(\"/apps\")}\n disabled={isSubmitting}\n className=\"inline-flex items-center gap-2 rounded-md border px-4 py-2 text-sm font-medium hover:bg-bg-sunken transition-colors disabled:opacity-50\"\n >\n <X size={16} />\n {tr(\"devportal.cancel\", \"Cancel\")}\n </button>\n <button\n type=\"submit\"\n disabled={isSubmitting}\n className=\"inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors disabled:opacity-50\"\n >\n {isSubmitting ? (\n <>\n <Loader2 size={16} className=\"animate-spin\" />\n Creating…\n </>\n ) : (\n <>\n <Save size={16} />\n Create {typeLabel}\n </>\n )}\n </button>\n </div>\n </form>\n </PageLayout>\n </PermissionGuard>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAkDA,IAAMC,IAA0D;CAC9D,KAAK;EACH,SAAS;EACT,MAAMC;EACN,OAAO;EACP,iBAAiB;EACjB,SACE;EACF,iBAAiB;EACjB,iBACE;EACF,aAAa;GACX;GACA;GACA;GACA;EACF;CACF;CACA,MAAM;EACJ,SAAS;EACT,MAAMC;EACN,OAAO;EACP,iBAAiB;EACjB,SACE;EACF,iBAAiB;EACjB,iBACE;EACF,aAAa;GACX;GACA;GACA;GACA;EACF;CACF;CACA,UAAU;EACR,SAAS;EACT,MAAMC;EACN,OAAO;EACP,iBAAiB;EACjB,SACE;EACF,iBAAiB;EACjB,iBACE;EACF,aAAa;GACX;GACA;GACA;GACA;EACF;CACF;CACA,QAAQ;EACN,SAAS;EACT,MAAMC;EACN,OAAO;EACP,iBAAiB;EACjB,SACE;EACF,iBAAiB;EACjB,iBACE;EACF,aAAa;GACX;GACA;GACA;GACA;EACF;CACF;CACA,QAAQ;EACN,SAAS;EACT,MAAMC;EACN,OAAO;EACP,iBAAiB;EACjB,SACE;EACF,iBAAiB;EACjB,iBACE;EACF,aAAa;GACX;GACA;GACA;GACA;EACF;CACF;CACA,WAAW;EACT,SAAS;EACT,MAAMC;EACN,OAAO;EACP,iBAAiB;EACjB,SACE;EACF,iBAAiB;EACjB,iBACE;EACF,aAAa;GACX;GACA;GACA;GACA;EACF;CACF;AACF,GAIMC,IAAiB;CACrB;EACE,IAAI;EACJ,OAAO;EACP,aAAa;CACf;CACA;EACE,IAAI;EACJ,OAAO;EACP,aAAa;CACf;CACA;EACE,IAAI;EACJ,OAAO;EACP,aAAa;CACf;CACA;EACE,IAAI;EACJ,OAAO;EACP,aAAa;CACf;CACA;EACE,IAAI;EACJ,OAAO;EACP,aAAa;CACf;CACA;EACE,IAAI;EACJ,OAAO;EACP,aAAa;CACf;CACA;EACE,IAAI;EACJ,OAAO;EACP,aAAa;CACf;CACA;EACE,IAAI;EACJ,OAAO;EACP,aAAa;CACf;CACA;EACE,IAAI;EACJ,OAAO;EACP,aAAa;CACf;CACA;EACE,IAAI;EA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"}
@@ -1,5 +1,4 @@
1
1
  import { FC } from 'react';
2
-
3
2
  /**
4
3
  * Create OAuth App page
5
4
  *
@@ -7,4 +6,3 @@ import { FC } from 'react';
7
6
  * Shows the client secret once after creation.
8
7
  */
9
8
  export declare const CreateOAuthClientPage: FC;
10
- //# sourceMappingURL=CreateOAuthClientPage.d.ts.map
@@ -1,24 +1,24 @@
1
- import { useDevportal as e } from "../providers/DevportalProvider.js";
2
- import { cn as t } from "../utils/cn.js";
3
- import { useCreateAuthAppMutation as n } from "../../generated/global-operations.js";
4
- import { getErrorMessage as r } from "../hooks/useGraphQL.js";
5
- import { PageLayout as i, PageSection as a } from "../components/PageLayout.js";
6
- import { nativeCopyText as o, nativeImpact as s, nativeNotify as c } from "../../utils/nativeBridge.js";
7
- import { InputField as l, SelectField as u, TextareaField as d } from "../components/FormField.js";
8
- import { PermissionGuard as f } from "../components/PermissionGuard.js";
1
+ import { PageLayout as e, PageSection as t } from "../components/PageLayout.js";
2
+ import { InputField as n, SelectField as r, TextareaField as i } from "../components/FormField.js";
3
+ import { useCreateAuthAppMutation as a } from "../../generated/global-operations.js";
4
+ import { getErrorMessage as o } from "../hooks/useGraphQL.js";
5
+ import { useDevportal as s } from "../providers/DevportalProvider.js";
9
6
  import "../components/index.js";
7
+ import { cn as c } from "../utils/cn.js";
8
+ import { PermissionGuard as l } from "../components/PermissionGuard.js";
9
+ import { nativeCopyText as u, nativeImpact as d, nativeNotify as f } from "../../utils/nativeBridge.js";
10
10
  import "../hooks/index.js";
11
11
  import { useState as p } from "react";
12
12
  import { Plus as m, Save as h, Trash2 as g, X as _ } from "lucide-react";
13
13
  import { jsx as v, jsxs as y } from "react/jsx-runtime";
14
14
  import { useI18n as b } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
15
15
  import { OptionalFields as x } from "@burdenoff/fe-libs/ui";
16
- //#region src/devportal/pages/CreateOAuthClientPage.tsx
16
+ // src/devportal/pages/CreateOAuthClientPage.tsx
17
17
  var S = () => {
18
- let { navigate: S, basePath: C } = e(), { t: w } = b(), T = (e, t) => {
18
+ let { navigate: S, basePath: C } = s(), { t: w } = b(), T = (e, t) => {
19
19
  let n = w(e);
20
20
  return n === e ? t : n;
21
- }, [E, D] = p(""), [O, k] = p(""), [A, j] = p("CONFIDENTIAL"), [M, N] = p([]), [P, F] = p(""), [I, L] = p([]), [R, z] = p(""), [B, V] = p(null), [H, U] = p(null), [W, { loading: G, error: K }] = n(), q = (e) => {
21
+ }, [E, D] = p(""), [O, k] = p(""), [A, j] = p("CONFIDENTIAL"), [M, N] = p([]), [P, F] = p(""), [I, L] = p([]), [R, z] = p(""), [B, V] = p(null), [H, U] = p(null), [W, { loading: G, error: K }] = a(), q = (e) => {
22
22
  S?.(`${C}${e}`);
23
23
  }, J = () => {
24
24
  let e = P.trim();
@@ -31,7 +31,7 @@ var S = () => {
31
31
  }, Z = (e) => {
32
32
  L(I.filter((t) => t !== e));
33
33
  };
34
- return B ? /* @__PURE__ */ v(i, {
34
+ return B ? /* @__PURE__ */ v(e, {
35
35
  title: T("devportal.appCreated", "App Created!"),
36
36
  description: T("devportal.appCreatedDescription", "Save the client secret below. It will not be shown again."),
37
37
  backLink: "/oauth",
@@ -55,7 +55,9 @@ var S = () => {
55
55
  children: B
56
56
  }), /* @__PURE__ */ v("button", {
57
57
  onClick: async () => {
58
- s("light"), c(await o(B) ? "success" : "error");
58
+ d("light");
59
+ let e = await u(B);
60
+ f(e ? "success" : "error");
59
61
  },
60
62
  className: "rounded bg-status-success-bg-subtle px-3 py-2 text-sm font-medium text-status-success-text hover:bg-status-success-bg-subtle transition-colors",
61
63
  children: T("devportal.copy", "Copy")
@@ -79,9 +81,9 @@ var S = () => {
79
81
  })
80
82
  ]
81
83
  })
82
- }) : /* @__PURE__ */ v(f, {
84
+ }) : /* @__PURE__ */ v(l, {
83
85
  authOnly: !0,
84
- children: /* @__PURE__ */ v(i, {
86
+ children: /* @__PURE__ */ v(e, {
85
87
  title: T("devportal.createOAuthApp", "Create OAuth App"),
86
88
  description: T("devportal.createOAuthAppDescription", "Register a new OAuth application for authentication"),
87
89
  purpose: T("devportal.createOAuthAppPurpose", "Register an OAuth app so an external service can let users sign in with their account and call the API on their behalf. Set its redirect URIs and request only the scopes it needs — you will receive a client ID and secret to finish the integration."),
@@ -106,26 +108,26 @@ var S = () => {
106
108
  className: "rounded-lg border border-status-error-border/50 bg-status-error-bg/10 p-4",
107
109
  children: /* @__PURE__ */ v("p", {
108
110
  className: "text-sm text-status-error-text",
109
- children: r(K)
111
+ children: o(K)
110
112
  })
111
113
  }),
112
- /* @__PURE__ */ y(a, {
114
+ /* @__PURE__ */ y(t, {
113
115
  title: T("devportal.basicInformation", "Basic Information"),
114
116
  children: [
115
- /* @__PURE__ */ v(l, {
117
+ /* @__PURE__ */ v(n, {
116
118
  label: T("devportal.appName", "App Name"),
117
119
  value: E,
118
120
  onChange: (e) => D(e.target.value),
119
121
  placeholder: T("devportal.myOAuthAppPlaceholder", "My OAuth App"),
120
122
  required: !0
121
123
  }),
122
- /* @__PURE__ */ v(d, {
124
+ /* @__PURE__ */ v(i, {
123
125
  label: T("devportal.description", "Description"),
124
126
  value: O,
125
127
  onChange: (e) => k(e.target.value),
126
128
  placeholder: T("devportal.appDescriptionPlaceholder", "Brief description of what this app does...")
127
129
  }),
128
- /* @__PURE__ */ v(u, {
130
+ /* @__PURE__ */ v(r, {
129
131
  label: T("devportal.appType", "App Type"),
130
132
  value: A,
131
133
  onChange: (e) => j(e.target.value),
@@ -157,7 +159,7 @@ var S = () => {
157
159
  /* @__PURE__ */ y(x, {
158
160
  title: T("devportal.advancedOAuthSettings", "Advanced settings"),
159
161
  description: T("devportal.advancedOAuthSettingsDescription", "Advanced grant types, PKCE-required toggles, scope tuning, and redirect URIs."),
160
- children: [/* @__PURE__ */ v(a, {
162
+ children: [/* @__PURE__ */ v(t, {
161
163
  title: T("devportal.scopes", "Scopes"),
162
164
  children: /* @__PURE__ */ y("div", {
163
165
  className: "space-y-3",
@@ -191,7 +193,7 @@ var S = () => {
191
193
  }, e))
192
194
  })]
193
195
  })
194
- }), /* @__PURE__ */ v(a, {
196
+ }), /* @__PURE__ */ v(t, {
195
197
  title: T("devportal.redirectUris", "Redirect URIs"),
196
198
  children: /* @__PURE__ */ y("div", {
197
199
  className: "space-y-3",
@@ -235,7 +237,7 @@ var S = () => {
235
237
  children: [/* @__PURE__ */ y("button", {
236
238
  type: "submit",
237
239
  disabled: G || !E.trim(),
238
- className: t("inline-flex items-center gap-2 rounded-md px-4 py-2 text-sm font-medium transition-colors", "bg-action-primary-bg text-action-primary-text hover:bg-action-primary-bg/90", "disabled:opacity-50 disabled:cursor-not-allowed"),
240
+ className: c("inline-flex items-center gap-2 rounded-md px-4 py-2 text-sm font-medium transition-colors", "bg-action-primary-bg text-action-primary-text hover:bg-action-primary-bg/90", "disabled:opacity-50 disabled:cursor-not-allowed"),
239
241
  children: [/* @__PURE__ */ v(h, { size: 16 }), G ? T("devportal.creating", "Creating...") : T("devportal.createOAuthApp", "Create OAuth App")]
240
242
  }), /* @__PURE__ */ y("button", {
241
243
  type: "button",
@@ -249,7 +251,6 @@ var S = () => {
249
251
  })
250
252
  });
251
253
  };
252
- //#endregion
253
254
  export { S as CreateOAuthClientPage };
254
255
 
255
256
  //# sourceMappingURL=CreateOAuthClientPage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CreateOAuthClientPage.js","names":[],"sources":["../../../src/devportal/pages/CreateOAuthClientPage.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport { useState } from \"react\";\nimport { Save, X, Plus, Trash2 } from \"lucide-react\";\nimport { useI18n } from \"@burdenoff/fe-libs/shared/providers/shell/I18nProvider\";\nimport { OptionalFields } from \"@burdenoff/fe-libs/ui\";\nimport { PageLayout, PageSection } from \"../components/PageLayout\";\nimport {\n InputField,\n SelectField,\n TextareaField,\n} from \"../components/FormField\";\nimport { useDevportal } from \"../providers/DevportalProvider\";\nimport { PermissionGuard } from \"../components\";\nimport { cn } from \"../utils/cn\";\nimport {\n nativeCopyText,\n nativeImpact,\n nativeNotify,\n} from \"../../utils/nativeBridge\";\nimport { useCreateAuthAppMutation, getErrorMessage } from \"../hooks\";\n\n/**\n * Create OAuth App page\n *\n * Creates a new App in auth-svc (replaces devportal-svc CreateOAuthClient).\n * Shows the client secret once after creation.\n */\nexport const CreateOAuthClientPage: FC = () => {\n const { navigate, basePath } = useDevportal();\n const { t } = useI18n();\n const tr = (key: string, fallback: string): string => {\n const value = t(key);\n return value === key ? fallback : value;\n };\n\n const [name, setName] = useState(\"\");\n const [description, setDescription] = useState(\"\");\n const [type, setType] = useState<string>(\"CONFIDENTIAL\");\n const [scopes, setScopes] = useState<string[]>([]);\n const [newScope, setNewScope] = useState(\"\");\n const [redirectUris, setRedirectUris] = useState<string[]>([]);\n const [newUri, setNewUri] = useState(\"\");\n\n const [createdSecret, setCreatedSecret] = useState<string | null>(null);\n const [createdAppId, setCreatedAppId] = useState<string | null>(null);\n\n const [createApp, { loading, error }] = useCreateAuthAppMutation();\n\n const handleNavigate = (path: string) => {\n navigate?.(`${basePath}${path}`);\n };\n\n const handleAddScope = () => {\n const trimmed = newScope.trim();\n if (trimmed && !scopes.includes(trimmed)) {\n setScopes([...scopes, trimmed]);\n setNewScope(\"\");\n }\n };\n\n const handleRemoveScope = (scope: string) => {\n setScopes(scopes.filter((s) => s !== scope));\n };\n\n const handleAddUri = () => {\n const trimmed = newUri.trim();\n if (trimmed && !redirectUris.includes(trimmed)) {\n setRedirectUris([...redirectUris, trimmed]);\n setNewUri(\"\");\n }\n };\n\n const handleRemoveUri = (uri: string) => {\n setRedirectUris(redirectUris.filter((u) => u !== uri));\n };\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n if (!name.trim()) return;\n\n try {\n const result = await createApp({\n variables: {\n input: {\n name: name.trim(),\n description: description.trim() || undefined,\n type,\n scopes,\n redirectUris,\n },\n },\n });\n\n const secret = result.data?.createApp?.clientSecret;\n const appId = result.data?.createApp?.app?.id;\n if (secret) {\n setCreatedSecret(secret);\n setCreatedAppId(appId || null);\n }\n } catch {\n // error handled by Apollo\n }\n };\n\n // Success — show the secret\n if (createdSecret) {\n return (\n <PageLayout\n title={tr(\"devportal.appCreated\", \"App Created!\")}\n description={tr(\n \"devportal.appCreatedDescription\",\n \"Save the client secret below. It will not be shown again.\",\n )}\n backLink=\"/oauth\"\n backLabel={tr(\"devportal.backToOAuthApps\", \"Back to OAuth Apps\")}\n >\n <div className=\"rounded-lg border border-border-subtle bg-status-success-bg-subtle p-6\">\n <h3 className=\"font-medium text-status-success-text\">\n {tr(\"devportal.oauthAppCreated\", \"Your OAuth App has been created\")}\n </h3>\n <div className=\"mt-4 space-y-3\">\n <div>\n <label className=\"text-xs font-medium text-status-success-text\">\n {tr(\"devportal.clientSecret\", \"Client Secret\")}\n </label>\n <div className=\"mt-1 flex items-center gap-2\">\n <code className=\"flex-1 rounded border bg-bg-surface px-3 py-2 text-sm font-mono break-all\">\n {createdSecret}\n </code>\n <button\n onClick={async () => {\n void nativeImpact(\"light\");\n const ok = await nativeCopyText(createdSecret);\n void nativeNotify(ok ? \"success\" : \"error\");\n }}\n className=\"rounded bg-status-success-bg-subtle px-3 py-2 text-sm font-medium text-status-success-text hover:bg-status-success-bg-subtle transition-colors\"\n >\n {tr(\"devportal.copy\", \"Copy\")}\n </button>\n </div>\n </div>\n <p className=\"text-sm text-status-success-text\">\n {tr(\n \"devportal.storeSecretSecurely\",\n \"Store this secret securely. You will not be able to see it again.\",\n )}\n </p>\n </div>\n <div className=\"mt-6 flex gap-3\">\n {createdAppId && (\n <button\n onClick={() => handleNavigate(`/oauth/${createdAppId}`)}\n className=\"rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors\"\n >\n {tr(\"devportal.viewAppDetails\", \"View App Details\")}\n </button>\n )}\n <button\n onClick={() => handleNavigate(\"/oauth\")}\n className=\"rounded-md border px-4 py-2 text-sm font-medium hover:bg-bg-sunken transition-colors\"\n >\n {tr(\"devportal.backToOAuthApps\", \"Back to OAuth Apps\")}\n </button>\n </div>\n </div>\n </PageLayout>\n );\n }\n\n return (\n <PermissionGuard authOnly>\n <PageLayout\n title={tr(\"devportal.createOAuthApp\", \"Create OAuth App\")}\n description={tr(\n \"devportal.createOAuthAppDescription\",\n \"Register a new OAuth application for authentication\",\n )}\n purpose={tr(\n \"devportal.createOAuthAppPurpose\",\n \"Register an OAuth app so an external service can let users sign in with their account and call the API on their behalf. Set its redirect URIs and request only the scopes it needs — you will receive a client ID and secret to finish the integration.\",\n )}\n backLink=\"/oauth\"\n backLabel={tr(\"devportal.backToOAuthApps\", \"Back to OAuth Apps\")}\n >\n <form onSubmit={handleSubmit} className=\"space-y-6 max-w-2xl\">\n {error && (\n <div className=\"rounded-lg border border-status-error-border/50 bg-status-error-bg/10 p-4\">\n <p className=\"text-sm text-status-error-text\">\n {getErrorMessage(error)}\n </p>\n </div>\n )}\n\n <PageSection\n title={tr(\"devportal.basicInformation\", \"Basic Information\")}\n >\n <InputField\n label={tr(\"devportal.appName\", \"App Name\")}\n value={name}\n onChange={(e) => setName(e.target.value)}\n placeholder={tr(\n \"devportal.myOAuthAppPlaceholder\",\n \"My OAuth App\",\n )}\n required\n />\n <TextareaField\n label={tr(\"devportal.description\", \"Description\")}\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n placeholder={tr(\n \"devportal.appDescriptionPlaceholder\",\n \"Brief description of what this app does...\",\n )}\n />\n <SelectField\n label={tr(\"devportal.appType\", \"App Type\")}\n value={type}\n onChange={(e) => setType(e.target.value)}\n options={[\n {\n value: \"SERVICE\",\n label: tr(\"devportal.appTypeService\", \"Service (M2M)\"),\n },\n {\n value: \"INTEGRATION\",\n label: tr(\"devportal.appTypeIntegration\", \"Integration\"),\n },\n { value: \"BOT\", label: tr(\"devportal.appTypeBot\", \"Bot\") },\n {\n value: \"WEB_APP\",\n label: tr(\"devportal.appTypeWebApp\", \"Web App\"),\n },\n {\n value: \"AUTOMATION\",\n label: tr(\"devportal.appTypeAutomation\", \"Automation\"),\n },\n ]}\n />\n </PageSection>\n\n {/* Advanced: grant types / PKCE-required toggles / scope tuning / redirect URIs — collapse the long-tail knobs */}\n <OptionalFields\n title={tr(\"devportal.advancedOAuthSettings\", \"Advanced settings\")}\n description={tr(\n \"devportal.advancedOAuthSettingsDescription\",\n \"Advanced grant types, PKCE-required toggles, scope tuning, and redirect URIs.\",\n )}\n >\n <PageSection title={tr(\"devportal.scopes\", \"Scopes\")}>\n <div className=\"space-y-3\">\n <div className=\"flex items-center gap-2\">\n <input\n type=\"text\"\n value={newScope}\n onChange={(e) => setNewScope(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n handleAddScope();\n }\n }}\n placeholder=\"e.g. workspace:read\"\n className=\"flex-1 rounded-md border bg-bg-surface px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary\"\n />\n <button\n type=\"button\"\n onClick={handleAddScope}\n className=\"rounded-md bg-action-primary-bg/10 p-2 text-primary hover:bg-action-primary-bg/20 transition-colors\"\n >\n <Plus size={16} />\n </button>\n </div>\n {scopes.length > 0 && (\n <div className=\"flex flex-wrap gap-2\">\n {scopes.map((scope) => (\n <span\n key={scope}\n className=\"inline-flex items-center gap-1 rounded-full bg-action-primary-bg/10 px-3 py-1 text-xs font-medium text-primary\"\n >\n {scope}\n <button\n type=\"button\"\n onClick={() => handleRemoveScope(scope)}\n className=\"hover:text-status-error-text\"\n >\n <X size={12} />\n </button>\n </span>\n ))}\n </div>\n )}\n </div>\n </PageSection>\n\n <PageSection title={tr(\"devportal.redirectUris\", \"Redirect URIs\")}>\n <div className=\"space-y-3\">\n <div className=\"flex items-center gap-2\">\n <input\n type=\"url\"\n value={newUri}\n onChange={(e) => setNewUri(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n handleAddUri();\n }\n }}\n placeholder=\"https://example.com/callback\"\n className=\"flex-1 rounded-md border bg-bg-surface px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary\"\n />\n <button\n type=\"button\"\n onClick={handleAddUri}\n className=\"rounded-md bg-action-primary-bg/10 p-2 text-primary hover:bg-action-primary-bg/20 transition-colors\"\n >\n <Plus size={16} />\n </button>\n </div>\n {redirectUris.length > 0 && (\n <div className=\"space-y-2\">\n {redirectUris.map((uri) => (\n <div key={uri} className=\"flex items-center gap-2\">\n <code className=\"flex-1 rounded bg-bg-sunken px-3 py-1.5 text-sm font-mono\">\n {uri}\n </code>\n <button\n type=\"button\"\n onClick={() => handleRemoveUri(uri)}\n className=\"rounded p-1 text-text-secondary hover:text-status-error-text transition-colors\"\n >\n <Trash2 size={14} />\n </button>\n </div>\n ))}\n </div>\n )}\n </div>\n </PageSection>\n </OptionalFields>\n\n {/* Actions */}\n <div className=\"flex items-center gap-3 pt-4 border-t\">\n <button\n type=\"submit\"\n disabled={loading || !name.trim()}\n className={cn(\n \"inline-flex items-center gap-2 rounded-md px-4 py-2 text-sm font-medium transition-colors\",\n \"bg-action-primary-bg text-action-primary-text hover:bg-action-primary-bg/90\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\n )}\n >\n <Save size={16} />\n {loading\n ? tr(\"devportal.creating\", \"Creating...\")\n : tr(\"devportal.createOAuthApp\", \"Create OAuth App\")}\n </button>\n <button\n type=\"button\"\n onClick={() => handleNavigate(\"/oauth\")}\n className=\"inline-flex items-center gap-2 rounded-md border px-4 py-2 text-sm font-medium hover:bg-bg-sunken transition-colors\"\n >\n <X size={16} />\n {tr(\"devportal.cancel\", \"Cancel\")}\n </button>\n </div>\n </form>\n </PageLayout>\n </PermissionGuard>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"CreateOAuthClientPage.js","names":["CreateOAuthClientPage","useDevportal","useI18n","tr","value","t","key","fallback","name","setName","useState","description","setDescription","type","setType","scopes","setScopes","newScope","setNewScope","redirectUris","setRedirectUris","newUri","setNewUri","createdSecret","setCreatedSecret","createdAppId","setCreatedAppId","createApp","useCreateAuthAppMutation","handleNavigate","basePath","path","handleAddScope","trimmed","handleRemoveScope","s","scope","handleAddUri","handleRemoveUri","u","uri","PageLayout","ok","nativeCopyText","PermissionGuard","result","secret","appId","error","getErrorMessage","PageSection","InputField","TextareaField","SelectField","OptionalFields","Plus","X","Trash2","loading","cn","Save"],"sources":["../../../src/devportal/pages/CreateOAuthClientPage.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport { useState } from \"react\";\nimport { Save, X, Plus, Trash2 } from \"lucide-react\";\nimport { useI18n } from \"@burdenoff/fe-libs/shared/providers/shell/I18nProvider\";\nimport { OptionalFields } from \"@burdenoff/fe-libs/ui\";\nimport { PageLayout, PageSection } from \"../components/PageLayout\";\nimport {\n InputField,\n SelectField,\n TextareaField,\n} from \"../components/FormField\";\nimport { useDevportal } from \"../providers/DevportalProvider\";\nimport { PermissionGuard } from \"../components\";\nimport { cn } from \"../utils/cn\";\nimport {\n nativeCopyText,\n nativeImpact,\n nativeNotify,\n} from \"../../utils/nativeBridge\";\nimport { useCreateAuthAppMutation, getErrorMessage } from \"../hooks\";\n\n/**\n * Create OAuth App page\n *\n * Creates a new App in auth-svc (replaces devportal-svc CreateOAuthClient).\n * Shows the client secret once after creation.\n */\nexport const CreateOAuthClientPage: FC = () => {\n const { navigate, basePath } = useDevportal();\n const { t } = useI18n();\n const tr = (key: string, fallback: string): string => {\n const value = t(key);\n return value === key ? fallback : value;\n };\n\n const [name, setName] = useState(\"\");\n const [description, setDescription] = useState(\"\");\n const [type, setType] = useState<string>(\"CONFIDENTIAL\");\n const [scopes, setScopes] = useState<string[]>([]);\n const [newScope, setNewScope] = useState(\"\");\n const [redirectUris, setRedirectUris] = useState<string[]>([]);\n const [newUri, setNewUri] = useState(\"\");\n\n const [createdSecret, setCreatedSecret] = useState<string | null>(null);\n const [createdAppId, setCreatedAppId] = useState<string | null>(null);\n\n const [createApp, { loading, error }] = useCreateAuthAppMutation();\n\n const handleNavigate = (path: string) => {\n navigate?.(`${basePath}${path}`);\n };\n\n const handleAddScope = () => {\n const trimmed = newScope.trim();\n if (trimmed && !scopes.includes(trimmed)) {\n setScopes([...scopes, trimmed]);\n setNewScope(\"\");\n }\n };\n\n const handleRemoveScope = (scope: string) => {\n setScopes(scopes.filter((s) => s !== scope));\n };\n\n const handleAddUri = () => {\n const trimmed = newUri.trim();\n if (trimmed && !redirectUris.includes(trimmed)) {\n setRedirectUris([...redirectUris, trimmed]);\n setNewUri(\"\");\n }\n };\n\n const handleRemoveUri = (uri: string) => {\n setRedirectUris(redirectUris.filter((u) => u !== uri));\n };\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n if (!name.trim()) return;\n\n try {\n const result = await createApp({\n variables: {\n input: {\n name: name.trim(),\n description: description.trim() || undefined,\n type,\n scopes,\n redirectUris,\n },\n },\n });\n\n const secret = result.data?.createApp?.clientSecret;\n const appId = result.data?.createApp?.app?.id;\n if (secret) {\n setCreatedSecret(secret);\n setCreatedAppId(appId || null);\n }\n } catch {\n // error handled by Apollo\n }\n };\n\n // Success — show the secret\n if (createdSecret) {\n return (\n <PageLayout\n title={tr(\"devportal.appCreated\", \"App Created!\")}\n description={tr(\n \"devportal.appCreatedDescription\",\n \"Save the client secret below. It will not be shown again.\",\n )}\n backLink=\"/oauth\"\n backLabel={tr(\"devportal.backToOAuthApps\", \"Back to OAuth Apps\")}\n >\n <div className=\"rounded-lg border border-border-subtle bg-status-success-bg-subtle p-6\">\n <h3 className=\"font-medium text-status-success-text\">\n {tr(\"devportal.oauthAppCreated\", \"Your OAuth App has been created\")}\n </h3>\n <div className=\"mt-4 space-y-3\">\n <div>\n <label className=\"text-xs font-medium text-status-success-text\">\n {tr(\"devportal.clientSecret\", \"Client Secret\")}\n </label>\n <div className=\"mt-1 flex items-center gap-2\">\n <code className=\"flex-1 rounded border bg-bg-surface px-3 py-2 text-sm font-mono break-all\">\n {createdSecret}\n </code>\n <button\n onClick={async () => {\n void nativeImpact(\"light\");\n const ok = await nativeCopyText(createdSecret);\n void nativeNotify(ok ? \"success\" : \"error\");\n }}\n className=\"rounded bg-status-success-bg-subtle px-3 py-2 text-sm font-medium text-status-success-text hover:bg-status-success-bg-subtle transition-colors\"\n >\n {tr(\"devportal.copy\", \"Copy\")}\n </button>\n </div>\n </div>\n <p className=\"text-sm text-status-success-text\">\n {tr(\n \"devportal.storeSecretSecurely\",\n \"Store this secret securely. You will not be able to see it again.\",\n )}\n </p>\n </div>\n <div className=\"mt-6 flex gap-3\">\n {createdAppId && (\n <button\n onClick={() => handleNavigate(`/oauth/${createdAppId}`)}\n className=\"rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors\"\n >\n {tr(\"devportal.viewAppDetails\", \"View App Details\")}\n </button>\n )}\n <button\n onClick={() => handleNavigate(\"/oauth\")}\n className=\"rounded-md border px-4 py-2 text-sm font-medium hover:bg-bg-sunken transition-colors\"\n >\n {tr(\"devportal.backToOAuthApps\", \"Back to OAuth Apps\")}\n </button>\n </div>\n </div>\n </PageLayout>\n );\n }\n\n return (\n <PermissionGuard authOnly>\n <PageLayout\n title={tr(\"devportal.createOAuthApp\", \"Create OAuth App\")}\n description={tr(\n \"devportal.createOAuthAppDescription\",\n \"Register a new OAuth application for authentication\",\n )}\n purpose={tr(\n \"devportal.createOAuthAppPurpose\",\n \"Register an OAuth app so an external service can let users sign in with their account and call the API on their behalf. Set its redirect URIs and request only the scopes it needs — you will receive a client ID and secret to finish the integration.\",\n )}\n backLink=\"/oauth\"\n backLabel={tr(\"devportal.backToOAuthApps\", \"Back to OAuth Apps\")}\n >\n <form onSubmit={handleSubmit} className=\"space-y-6 max-w-2xl\">\n {error && (\n <div className=\"rounded-lg border border-status-error-border/50 bg-status-error-bg/10 p-4\">\n <p className=\"text-sm text-status-error-text\">\n {getErrorMessage(error)}\n </p>\n </div>\n )}\n\n <PageSection\n title={tr(\"devportal.basicInformation\", \"Basic Information\")}\n >\n <InputField\n label={tr(\"devportal.appName\", \"App Name\")}\n value={name}\n onChange={(e) => setName(e.target.value)}\n placeholder={tr(\n \"devportal.myOAuthAppPlaceholder\",\n \"My OAuth App\",\n )}\n required\n />\n <TextareaField\n label={tr(\"devportal.description\", \"Description\")}\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n placeholder={tr(\n \"devportal.appDescriptionPlaceholder\",\n \"Brief description of what this app does...\",\n )}\n />\n <SelectField\n label={tr(\"devportal.appType\", \"App Type\")}\n value={type}\n onChange={(e) => setType(e.target.value)}\n options={[\n {\n value: \"SERVICE\",\n label: tr(\"devportal.appTypeService\", \"Service (M2M)\"),\n },\n {\n value: \"INTEGRATION\",\n label: tr(\"devportal.appTypeIntegration\", \"Integration\"),\n },\n { value: \"BOT\", label: tr(\"devportal.appTypeBot\", \"Bot\") },\n {\n value: \"WEB_APP\",\n label: tr(\"devportal.appTypeWebApp\", \"Web App\"),\n },\n {\n value: \"AUTOMATION\",\n label: tr(\"devportal.appTypeAutomation\", \"Automation\"),\n },\n ]}\n />\n </PageSection>\n\n {/* Advanced: grant types / PKCE-required toggles / scope tuning / redirect URIs — collapse the long-tail knobs */}\n <OptionalFields\n title={tr(\"devportal.advancedOAuthSettings\", \"Advanced settings\")}\n description={tr(\n \"devportal.advancedOAuthSettingsDescription\",\n \"Advanced grant types, PKCE-required toggles, scope tuning, and redirect URIs.\",\n )}\n >\n <PageSection title={tr(\"devportal.scopes\", \"Scopes\")}>\n <div className=\"space-y-3\">\n <div className=\"flex items-center gap-2\">\n <input\n type=\"text\"\n value={newScope}\n onChange={(e) => setNewScope(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n handleAddScope();\n }\n }}\n placeholder=\"e.g. workspace:read\"\n className=\"flex-1 rounded-md border bg-bg-surface px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary\"\n />\n <button\n type=\"button\"\n onClick={handleAddScope}\n className=\"rounded-md bg-action-primary-bg/10 p-2 text-primary hover:bg-action-primary-bg/20 transition-colors\"\n >\n <Plus size={16} />\n </button>\n </div>\n {scopes.length > 0 && (\n <div className=\"flex flex-wrap gap-2\">\n {scopes.map((scope) => (\n <span\n key={scope}\n className=\"inline-flex items-center gap-1 rounded-full bg-action-primary-bg/10 px-3 py-1 text-xs font-medium text-primary\"\n >\n {scope}\n <button\n type=\"button\"\n onClick={() => handleRemoveScope(scope)}\n className=\"hover:text-status-error-text\"\n >\n <X size={12} />\n </button>\n </span>\n ))}\n </div>\n )}\n </div>\n </PageSection>\n\n <PageSection title={tr(\"devportal.redirectUris\", \"Redirect URIs\")}>\n <div className=\"space-y-3\">\n <div className=\"flex items-center gap-2\">\n <input\n type=\"url\"\n value={newUri}\n onChange={(e) => setNewUri(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n handleAddUri();\n }\n }}\n placeholder=\"https://example.com/callback\"\n className=\"flex-1 rounded-md border bg-bg-surface px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary\"\n />\n <button\n type=\"button\"\n onClick={handleAddUri}\n className=\"rounded-md bg-action-primary-bg/10 p-2 text-primary hover:bg-action-primary-bg/20 transition-colors\"\n >\n <Plus size={16} />\n </button>\n </div>\n {redirectUris.length > 0 && (\n <div className=\"space-y-2\">\n {redirectUris.map((uri) => (\n <div key={uri} className=\"flex items-center gap-2\">\n <code className=\"flex-1 rounded bg-bg-sunken px-3 py-1.5 text-sm font-mono\">\n {uri}\n </code>\n <button\n type=\"button\"\n onClick={() => handleRemoveUri(uri)}\n className=\"rounded p-1 text-text-secondary hover:text-status-error-text transition-colors\"\n >\n <Trash2 size={14} />\n </button>\n </div>\n ))}\n </div>\n )}\n </div>\n </PageSection>\n </OptionalFields>\n\n {/* Actions */}\n <div className=\"flex items-center gap-3 pt-4 border-t\">\n <button\n type=\"submit\"\n disabled={loading || !name.trim()}\n className={cn(\n \"inline-flex items-center gap-2 rounded-md px-4 py-2 text-sm font-medium transition-colors\",\n \"bg-action-primary-bg text-action-primary-text hover:bg-action-primary-bg/90\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\n )}\n >\n <Save size={16} />\n {loading\n ? tr(\"devportal.creating\", \"Creating...\")\n : tr(\"devportal.createOAuthApp\", \"Create OAuth App\")}\n </button>\n <button\n type=\"button\"\n onClick={() => handleNavigate(\"/oauth\")}\n className=\"inline-flex items-center gap-2 rounded-md border px-4 py-2 text-sm font-medium hover:bg-bg-sunken transition-colors\"\n >\n <X size={16} />\n {tr(\"devportal.cancel\", \"Cancel\")}\n </button>\n </div>\n </form>\n </PageLayout>\n </PermissionGuard>\n );\n};\n"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  import { FC } from 'react';
2
-
3
2
  /**
4
3
  * Create new organization page — single step.
5
4
  * The user can either have a billing account auto-created and linked, or
@@ -7,4 +6,3 @@ import { FC } from 'react';
7
6
  * are completed later from organization settings.
8
7
  */
9
8
  export declare const CreateOrganizationPage: FC;
10
- //# sourceMappingURL=CreateOrganizationPage.d.ts.map