@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,16 +1,16 @@
1
- import { useTr as e } from "../utils/i18n.js";
2
- import { cn as t } from "../utils/cn.js";
1
+ import { cn as e } from "../utils/cn.js";
2
+ import { useTr as t } from "../utils/i18n.js";
3
3
  import { jsx as n, jsxs as r } from "react/jsx-runtime";
4
- //#region src/devportal/components/FormField.tsx
5
- var i = ({ label: e, error: i, hint: a, required: o, className: s, type: c = "text", id: l, ...u }) => {
6
- let d = l || e.toLowerCase().replace(/\s+/g, "-");
4
+ // src/devportal/components/FormField.tsx
5
+ var i = ({ label: t, error: i, hint: a, required: o, className: s, type: c = "text", id: l, ...u }) => {
6
+ let d = l || t.toLowerCase().replace(/\s+/g, "-");
7
7
  return /* @__PURE__ */ r("div", {
8
- className: t("space-y-1", s),
8
+ className: e("space-y-1", s),
9
9
  children: [
10
10
  /* @__PURE__ */ r("label", {
11
11
  htmlFor: d,
12
12
  className: "block text-sm font-medium",
13
- children: [e, o && /* @__PURE__ */ n("span", {
13
+ children: [t, o && /* @__PURE__ */ n("span", {
14
14
  className: "text-status-error-text ml-1",
15
15
  children: "*"
16
16
  })]
@@ -18,7 +18,7 @@ var i = ({ label: e, error: i, hint: a, required: o, className: s, type: c = "te
18
18
  /* @__PURE__ */ n("input", {
19
19
  id: d,
20
20
  type: c,
21
- className: t("w-full rounded-md border bg-bg-surface px-3 py-2 text-sm", "focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent", "placeholder:text-text-secondary", i && "border-status-error-bg focus:ring-status-error-bg"),
21
+ className: e("w-full rounded-md border bg-bg-surface px-3 py-2 text-sm", "focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent", "placeholder:text-text-secondary", i && "border-status-error-bg focus:ring-status-error-bg"),
22
22
  ...u
23
23
  }),
24
24
  a && !i && /* @__PURE__ */ n("p", {
@@ -31,15 +31,15 @@ var i = ({ label: e, error: i, hint: a, required: o, className: s, type: c = "te
31
31
  })
32
32
  ]
33
33
  });
34
- }, a = ({ label: e, error: i, hint: a, required: o, className: s, id: c, rows: l = 4, ...u }) => {
35
- let d = c || e.toLowerCase().replace(/\s+/g, "-");
34
+ }, a = ({ label: t, error: i, hint: a, required: o, className: s, id: c, rows: l = 4, ...u }) => {
35
+ let d = c || t.toLowerCase().replace(/\s+/g, "-");
36
36
  return /* @__PURE__ */ r("div", {
37
- className: t("space-y-1", s),
37
+ className: e("space-y-1", s),
38
38
  children: [
39
39
  /* @__PURE__ */ r("label", {
40
40
  htmlFor: d,
41
41
  className: "block text-sm font-medium",
42
- children: [e, o && /* @__PURE__ */ n("span", {
42
+ children: [t, o && /* @__PURE__ */ n("span", {
43
43
  className: "text-status-error-text ml-1",
44
44
  children: "*"
45
45
  })]
@@ -47,7 +47,7 @@ var i = ({ label: e, error: i, hint: a, required: o, className: s, type: c = "te
47
47
  /* @__PURE__ */ n("textarea", {
48
48
  id: d,
49
49
  rows: l,
50
- className: t("w-full rounded-md border bg-bg-surface px-3 py-2 text-sm", "focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent", "placeholder:text-text-secondary resize-none", i && "border-status-error-bg focus:ring-status-error-bg"),
50
+ className: e("w-full rounded-md border bg-bg-surface px-3 py-2 text-sm", "focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent", "placeholder:text-text-secondary resize-none", i && "border-status-error-bg focus:ring-status-error-bg"),
51
51
  ...u
52
52
  }),
53
53
  a && !i && /* @__PURE__ */ n("p", {
@@ -61,9 +61,9 @@ var i = ({ label: e, error: i, hint: a, required: o, className: s, type: c = "te
61
61
  ]
62
62
  });
63
63
  }, o = ({ label: i, error: a, hint: o, required: s, className: c, options: l, placeholder: u, id: d, ...f }) => {
64
- let p = e(), m = u ?? p("devportal.selectAnOption", "Select an option"), h = d || i.toLowerCase().replace(/\s+/g, "-");
64
+ let p = t(), m = u ?? p("devportal.selectAnOption", "Select an option"), h = d || i.toLowerCase().replace(/\s+/g, "-");
65
65
  return /* @__PURE__ */ r("div", {
66
- className: t("space-y-1", c),
66
+ className: e("space-y-1", c),
67
67
  children: [
68
68
  /* @__PURE__ */ r("label", {
69
69
  htmlFor: h,
@@ -75,7 +75,7 @@ var i = ({ label: e, error: i, hint: a, required: o, className: s, type: c = "te
75
75
  }),
76
76
  /* @__PURE__ */ r("select", {
77
77
  id: h,
78
- className: t("w-full rounded-md border bg-bg-surface px-3 py-2 text-sm", "focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent", "scheme-normal dark:scheme-dark [&_option]:bg-bg-surface [&_option]:text-text-primary", a && "border-status-error-bg focus:ring-status-error-bg"),
78
+ className: e("w-full rounded-md border bg-bg-surface px-3 py-2 text-sm", "focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent", "scheme-normal dark:scheme-dark [&_option]:bg-bg-surface [&_option]:text-text-primary", a && "border-status-error-bg focus:ring-status-error-bg"),
79
79
  ...f,
80
80
  children: [/* @__PURE__ */ n("option", {
81
81
  value: "",
@@ -95,20 +95,20 @@ var i = ({ label: e, error: i, hint: a, required: o, className: s, type: c = "te
95
95
  })
96
96
  ]
97
97
  });
98
- }, s = ({ label: e, description: i, error: a, className: o, id: s, ...c }) => {
99
- let l = s || e.toLowerCase().replace(/\s+/g, "-");
98
+ }, s = ({ label: t, description: i, error: a, className: o, id: s, ...c }) => {
99
+ let l = s || t.toLowerCase().replace(/\s+/g, "-");
100
100
  return /* @__PURE__ */ r("div", {
101
- className: t("flex items-start gap-3", o),
101
+ className: e("flex items-start gap-3", o),
102
102
  children: [/* @__PURE__ */ n("input", {
103
103
  id: l,
104
104
  type: "checkbox",
105
- className: t("mt-1 h-4 w-4 rounded border-border-default text-primary", "focus:ring-primary"),
105
+ className: e("mt-1 h-4 w-4 rounded border-border-default text-primary", "focus:ring-primary"),
106
106
  ...c
107
107
  }), /* @__PURE__ */ r("div", { children: [
108
108
  /* @__PURE__ */ n("label", {
109
109
  htmlFor: l,
110
110
  className: "text-sm font-medium cursor-pointer",
111
- children: e
111
+ children: t
112
112
  }),
113
113
  i && /* @__PURE__ */ n("p", {
114
114
  className: "text-xs text-text-secondary",
@@ -121,7 +121,7 @@ var i = ({ label: e, error: i, hint: a, required: o, className: s, type: c = "te
121
121
  ] })]
122
122
  });
123
123
  }, c = ({ label: i, value: a, onChange: o, placeholder: s, error: c, hint: l, className: u }) => {
124
- let d = e(), f = (e) => {
124
+ let d = t(), f = (e) => {
125
125
  if (e.key === "Enter" || e.key === ",") {
126
126
  e.preventDefault();
127
127
  let t = e.currentTarget, n = t.value.trim();
@@ -131,7 +131,7 @@ var i = ({ label: e, error: i, hint: a, required: o, className: s, type: c = "te
131
131
  o(a.filter((t) => t !== e));
132
132
  };
133
133
  return /* @__PURE__ */ r("div", {
134
- className: t("space-y-1", u),
134
+ className: e("space-y-1", u),
135
135
  children: [
136
136
  /* @__PURE__ */ n("label", {
137
137
  className: "block text-sm font-medium",
@@ -165,7 +165,6 @@ var i = ({ label: e, error: i, hint: a, required: o, className: s, type: c = "te
165
165
  ]
166
166
  });
167
167
  };
168
- //#endregion
169
168
  export { s as CheckboxField, i as InputField, o as SelectField, c as TagInput, a as TextareaField };
170
169
 
171
170
  //# sourceMappingURL=FormField.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormField.js","names":[],"sources":["../../../src/devportal/components/FormField.tsx"],"sourcesContent":["import type {\n FC,\n InputHTMLAttributes,\n TextareaHTMLAttributes,\n SelectHTMLAttributes,\n} from \"react\";\nimport { cn } from \"../utils/cn\";\nimport { useTr } from \"../utils/i18n\";\n\ninterface BaseFieldProps {\n label: string;\n error?: string;\n hint?: string;\n required?: boolean;\n className?: string;\n}\n\ninterface InputFieldProps\n extends\n BaseFieldProps,\n Omit<InputHTMLAttributes<HTMLInputElement>, \"className\"> {\n type?: \"text\" | \"email\" | \"password\" | \"number\" | \"url\" | \"tel\";\n}\n\ninterface TextareaFieldProps\n extends\n BaseFieldProps,\n Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, \"className\"> {}\n\ninterface SelectFieldProps\n extends\n BaseFieldProps,\n Omit<SelectHTMLAttributes<HTMLSelectElement>, \"className\"> {\n options: Array<{ value: string; label: string }>;\n placeholder?: string;\n}\n\ninterface CheckboxFieldProps\n extends\n BaseFieldProps,\n Omit<InputHTMLAttributes<HTMLInputElement>, \"className\" | \"type\"> {\n description?: string;\n}\n\n/**\n * Text input field with label and error handling\n */\nexport const InputField: FC<InputFieldProps> = ({\n label,\n error,\n hint,\n required,\n className,\n type = \"text\",\n id,\n ...props\n}) => {\n const fieldId = id || label.toLowerCase().replace(/\\s+/g, \"-\");\n\n return (\n <div className={cn(\"space-y-1\", className)}>\n <label htmlFor={fieldId} className=\"block text-sm font-medium\">\n {label}\n {required && <span className=\"text-status-error-text ml-1\">*</span>}\n </label>\n <input\n id={fieldId}\n type={type}\n className={cn(\n \"w-full rounded-md border bg-bg-surface px-3 py-2 text-sm\",\n \"focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent\",\n \"placeholder:text-text-secondary\",\n error && \"border-status-error-bg focus:ring-status-error-bg\",\n )}\n {...props}\n />\n {hint && !error && <p className=\"text-xs text-text-secondary\">{hint}</p>}\n {error && <p className=\"text-xs text-status-error-text\">{error}</p>}\n </div>\n );\n};\n\n/**\n * Textarea field with label and error handling\n */\nexport const TextareaField: FC<TextareaFieldProps> = ({\n label,\n error,\n hint,\n required,\n className,\n id,\n rows = 4,\n ...props\n}) => {\n const fieldId = id || label.toLowerCase().replace(/\\s+/g, \"-\");\n\n return (\n <div className={cn(\"space-y-1\", className)}>\n <label htmlFor={fieldId} className=\"block text-sm font-medium\">\n {label}\n {required && <span className=\"text-status-error-text ml-1\">*</span>}\n </label>\n <textarea\n id={fieldId}\n rows={rows}\n className={cn(\n \"w-full rounded-md border bg-bg-surface px-3 py-2 text-sm\",\n \"focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent\",\n \"placeholder:text-text-secondary resize-none\",\n error && \"border-status-error-bg focus:ring-status-error-bg\",\n )}\n {...props}\n />\n {hint && !error && <p className=\"text-xs text-text-secondary\">{hint}</p>}\n {error && <p className=\"text-xs text-status-error-text\">{error}</p>}\n </div>\n );\n};\n\n/**\n * Select field with label and error handling\n */\nexport const SelectField: FC<SelectFieldProps> = ({\n label,\n error,\n hint,\n required,\n className,\n options,\n placeholder,\n id,\n ...props\n}) => {\n const tr = useTr();\n const resolvedPlaceholder =\n placeholder ?? tr(\"devportal.selectAnOption\", \"Select an option\");\n const fieldId = id || label.toLowerCase().replace(/\\s+/g, \"-\");\n\n return (\n <div className={cn(\"space-y-1\", className)}>\n <label htmlFor={fieldId} className=\"block text-sm font-medium\">\n {label}\n {required && <span className=\"text-status-error-text ml-1\">*</span>}\n </label>\n <select\n id={fieldId}\n className={cn(\n \"w-full rounded-md border bg-bg-surface px-3 py-2 text-sm\",\n \"focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent\",\n \"scheme-normal dark:scheme-dark [&_option]:bg-bg-surface [&_option]:text-text-primary\",\n error && \"border-status-error-bg focus:ring-status-error-bg\",\n )}\n {...props}\n >\n <option value=\"\">{resolvedPlaceholder}</option>\n {options.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n {hint && !error && <p className=\"text-xs text-text-secondary\">{hint}</p>}\n {error && <p className=\"text-xs text-status-error-text\">{error}</p>}\n </div>\n );\n};\n\n/**\n * Checkbox field with label and description\n */\nexport const CheckboxField: FC<CheckboxFieldProps> = ({\n label,\n description,\n error,\n className,\n id,\n ...props\n}) => {\n const fieldId = id || label.toLowerCase().replace(/\\s+/g, \"-\");\n\n return (\n <div className={cn(\"flex items-start gap-3\", className)}>\n <input\n id={fieldId}\n type=\"checkbox\"\n className={cn(\n \"mt-1 h-4 w-4 rounded border-border-default text-primary\",\n \"focus:ring-primary\",\n )}\n {...props}\n />\n <div>\n <label htmlFor={fieldId} className=\"text-sm font-medium cursor-pointer\">\n {label}\n </label>\n {description && (\n <p className=\"text-xs text-text-secondary\">{description}</p>\n )}\n {error && <p className=\"text-xs text-status-error-text\">{error}</p>}\n </div>\n </div>\n );\n};\n\n/**\n * Multi-select checkbox group\n */\nexport const CheckboxGroup: FC<{\n label: string;\n options: Array<{ value: string; label: string; description?: string }>;\n value: string[];\n onChange: (values: string[]) => void;\n error?: string;\n hint?: string;\n className?: string;\n}> = ({ label, options, value, onChange, error, hint, className }) => {\n const handleChange = (optionValue: string, checked: boolean) => {\n if (checked) {\n onChange([...value, optionValue]);\n } else {\n onChange(value.filter((v) => v !== optionValue));\n }\n };\n\n return (\n <div className={cn(\"space-y-2\", className)}>\n <label className=\"block text-sm font-medium\">{label}</label>\n <div className=\"space-y-2\">\n {options.map((option) => (\n <CheckboxField\n key={option.value}\n label={option.label}\n description={option.description}\n checked={value.includes(option.value)}\n onChange={(e) => handleChange(option.value, e.target.checked)}\n />\n ))}\n </div>\n {hint && !error && <p className=\"text-xs text-text-secondary\">{hint}</p>}\n {error && <p className=\"text-xs text-status-error-text\">{error}</p>}\n </div>\n );\n};\n\n/**\n * Tag input for multiple values\n */\nexport const TagInput: FC<{\n label: string;\n value: string[];\n onChange: (values: string[]) => void;\n placeholder?: string;\n error?: string;\n hint?: string;\n className?: string;\n}> = ({ label, value, onChange, placeholder, error, hint, className }) => {\n const tr = useTr();\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\" || e.key === \",\") {\n e.preventDefault();\n const input = e.currentTarget;\n const newValue = input.value.trim();\n if (newValue && !value.includes(newValue)) {\n onChange([...value, newValue]);\n input.value = \"\";\n }\n }\n };\n\n const removeTag = (tagToRemove: string) => {\n onChange(value.filter((tag) => tag !== tagToRemove));\n };\n\n return (\n <div className={cn(\"space-y-1\", className)}>\n <label className=\"block text-sm font-medium\">{label}</label>\n <div className=\"flex flex-wrap gap-2 rounded-md border bg-bg-surface p-2\">\n {value.map((tag) => (\n <span\n key={tag}\n className=\"inline-flex items-center gap-1 rounded-full bg-action-primary-bg/10 px-2 py-1 text-xs\"\n >\n {tag}\n <button\n type=\"button\"\n onClick={() => removeTag(tag)}\n className=\"hover:text-status-error-text\"\n >\n &times;\n </button>\n </span>\n ))}\n <input\n type=\"text\"\n placeholder={\n value.length === 0\n ? placeholder\n : tr(\"devportal.addMore\", \"Add more...\")\n }\n onKeyDown={handleKeyDown}\n className=\"flex-1 min-w-[100px] bg-transparent text-sm outline-none\"\n />\n </div>\n {hint && !error && <p className=\"text-xs text-text-secondary\">{hint}</p>}\n {error && <p className=\"text-xs text-status-error-text\">{error}</p>}\n </div>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"FormField.js","names":["InputField","props","fieldId","id","label","cn","className","required","error","hint","TextareaField","SelectField","tr","useTr","resolvedPlaceholder","placeholder","options","option","CheckboxField","description","TagInput","handleKeyDown","input","newValue","value","onChange","removeTag","tag","tagToRemove"],"sources":["../../../src/devportal/components/FormField.tsx"],"sourcesContent":["import type {\n FC,\n InputHTMLAttributes,\n TextareaHTMLAttributes,\n SelectHTMLAttributes,\n} from \"react\";\nimport { cn } from \"../utils/cn\";\nimport { useTr } from \"../utils/i18n\";\n\ninterface BaseFieldProps {\n label: string;\n error?: string;\n hint?: string;\n required?: boolean;\n className?: string;\n}\n\ninterface InputFieldProps\n extends\n BaseFieldProps,\n Omit<InputHTMLAttributes<HTMLInputElement>, \"className\"> {\n type?: \"text\" | \"email\" | \"password\" | \"number\" | \"url\" | \"tel\";\n}\n\ninterface TextareaFieldProps\n extends\n BaseFieldProps,\n Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, \"className\"> {}\n\ninterface SelectFieldProps\n extends\n BaseFieldProps,\n Omit<SelectHTMLAttributes<HTMLSelectElement>, \"className\"> {\n options: Array<{ value: string; label: string }>;\n placeholder?: string;\n}\n\ninterface CheckboxFieldProps\n extends\n BaseFieldProps,\n Omit<InputHTMLAttributes<HTMLInputElement>, \"className\" | \"type\"> {\n description?: string;\n}\n\n/**\n * Text input field with label and error handling\n */\nexport const InputField: FC<InputFieldProps> = ({\n label,\n error,\n hint,\n required,\n className,\n type = \"text\",\n id,\n ...props\n}) => {\n const fieldId = id || label.toLowerCase().replace(/\\s+/g, \"-\");\n\n return (\n <div className={cn(\"space-y-1\", className)}>\n <label htmlFor={fieldId} className=\"block text-sm font-medium\">\n {label}\n {required && <span className=\"text-status-error-text ml-1\">*</span>}\n </label>\n <input\n id={fieldId}\n type={type}\n className={cn(\n \"w-full rounded-md border bg-bg-surface px-3 py-2 text-sm\",\n \"focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent\",\n \"placeholder:text-text-secondary\",\n error && \"border-status-error-bg focus:ring-status-error-bg\",\n )}\n {...props}\n />\n {hint && !error && <p className=\"text-xs text-text-secondary\">{hint}</p>}\n {error && <p className=\"text-xs text-status-error-text\">{error}</p>}\n </div>\n );\n};\n\n/**\n * Textarea field with label and error handling\n */\nexport const TextareaField: FC<TextareaFieldProps> = ({\n label,\n error,\n hint,\n required,\n className,\n id,\n rows = 4,\n ...props\n}) => {\n const fieldId = id || label.toLowerCase().replace(/\\s+/g, \"-\");\n\n return (\n <div className={cn(\"space-y-1\", className)}>\n <label htmlFor={fieldId} className=\"block text-sm font-medium\">\n {label}\n {required && <span className=\"text-status-error-text ml-1\">*</span>}\n </label>\n <textarea\n id={fieldId}\n rows={rows}\n className={cn(\n \"w-full rounded-md border bg-bg-surface px-3 py-2 text-sm\",\n \"focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent\",\n \"placeholder:text-text-secondary resize-none\",\n error && \"border-status-error-bg focus:ring-status-error-bg\",\n )}\n {...props}\n />\n {hint && !error && <p className=\"text-xs text-text-secondary\">{hint}</p>}\n {error && <p className=\"text-xs text-status-error-text\">{error}</p>}\n </div>\n );\n};\n\n/**\n * Select field with label and error handling\n */\nexport const SelectField: FC<SelectFieldProps> = ({\n label,\n error,\n hint,\n required,\n className,\n options,\n placeholder,\n id,\n ...props\n}) => {\n const tr = useTr();\n const resolvedPlaceholder =\n placeholder ?? tr(\"devportal.selectAnOption\", \"Select an option\");\n const fieldId = id || label.toLowerCase().replace(/\\s+/g, \"-\");\n\n return (\n <div className={cn(\"space-y-1\", className)}>\n <label htmlFor={fieldId} className=\"block text-sm font-medium\">\n {label}\n {required && <span className=\"text-status-error-text ml-1\">*</span>}\n </label>\n <select\n id={fieldId}\n className={cn(\n \"w-full rounded-md border bg-bg-surface px-3 py-2 text-sm\",\n \"focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent\",\n \"scheme-normal dark:scheme-dark [&_option]:bg-bg-surface [&_option]:text-text-primary\",\n error && \"border-status-error-bg focus:ring-status-error-bg\",\n )}\n {...props}\n >\n <option value=\"\">{resolvedPlaceholder}</option>\n {options.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n {hint && !error && <p className=\"text-xs text-text-secondary\">{hint}</p>}\n {error && <p className=\"text-xs text-status-error-text\">{error}</p>}\n </div>\n );\n};\n\n/**\n * Checkbox field with label and description\n */\nexport const CheckboxField: FC<CheckboxFieldProps> = ({\n label,\n description,\n error,\n className,\n id,\n ...props\n}) => {\n const fieldId = id || label.toLowerCase().replace(/\\s+/g, \"-\");\n\n return (\n <div className={cn(\"flex items-start gap-3\", className)}>\n <input\n id={fieldId}\n type=\"checkbox\"\n className={cn(\n \"mt-1 h-4 w-4 rounded border-border-default text-primary\",\n \"focus:ring-primary\",\n )}\n {...props}\n />\n <div>\n <label htmlFor={fieldId} className=\"text-sm font-medium cursor-pointer\">\n {label}\n </label>\n {description && (\n <p className=\"text-xs text-text-secondary\">{description}</p>\n )}\n {error && <p className=\"text-xs text-status-error-text\">{error}</p>}\n </div>\n </div>\n );\n};\n\n/**\n * Multi-select checkbox group\n */\nexport const CheckboxGroup: FC<{\n label: string;\n options: Array<{ value: string; label: string; description?: string }>;\n value: string[];\n onChange: (values: string[]) => void;\n error?: string;\n hint?: string;\n className?: string;\n}> = ({ label, options, value, onChange, error, hint, className }) => {\n const handleChange = (optionValue: string, checked: boolean) => {\n if (checked) {\n onChange([...value, optionValue]);\n } else {\n onChange(value.filter((v) => v !== optionValue));\n }\n };\n\n return (\n <div className={cn(\"space-y-2\", className)}>\n <label className=\"block text-sm font-medium\">{label}</label>\n <div className=\"space-y-2\">\n {options.map((option) => (\n <CheckboxField\n key={option.value}\n label={option.label}\n description={option.description}\n checked={value.includes(option.value)}\n onChange={(e) => handleChange(option.value, e.target.checked)}\n />\n ))}\n </div>\n {hint && !error && <p className=\"text-xs text-text-secondary\">{hint}</p>}\n {error && <p className=\"text-xs text-status-error-text\">{error}</p>}\n </div>\n );\n};\n\n/**\n * Tag input for multiple values\n */\nexport const TagInput: FC<{\n label: string;\n value: string[];\n onChange: (values: string[]) => void;\n placeholder?: string;\n error?: string;\n hint?: string;\n className?: string;\n}> = ({ label, value, onChange, placeholder, error, hint, className }) => {\n const tr = useTr();\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\" || e.key === \",\") {\n e.preventDefault();\n const input = e.currentTarget;\n const newValue = input.value.trim();\n if (newValue && !value.includes(newValue)) {\n onChange([...value, newValue]);\n input.value = \"\";\n }\n }\n };\n\n const removeTag = (tagToRemove: string) => {\n onChange(value.filter((tag) => tag !== tagToRemove));\n };\n\n return (\n <div className={cn(\"space-y-1\", className)}>\n <label className=\"block text-sm font-medium\">{label}</label>\n <div className=\"flex flex-wrap gap-2 rounded-md border bg-bg-surface p-2\">\n {value.map((tag) => (\n <span\n key={tag}\n className=\"inline-flex items-center gap-1 rounded-full bg-action-primary-bg/10 px-2 py-1 text-xs\"\n >\n {tag}\n <button\n type=\"button\"\n onClick={() => removeTag(tag)}\n className=\"hover:text-status-error-text\"\n >\n &times;\n </button>\n </span>\n ))}\n <input\n type=\"text\"\n placeholder={\n value.length === 0\n ? placeholder\n : tr(\"devportal.addMore\", \"Add more...\")\n }\n onKeyDown={handleKeyDown}\n className=\"flex-1 min-w-[100px] bg-transparent text-sm outline-none\"\n />\n </div>\n {hint && !error && <p className=\"text-xs text-text-secondary\">{hint}</p>}\n {error && <p className=\"text-xs text-status-error-text\">{error}</p>}\n </div>\n );\n};\n"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  import { FC } from 'react';
2
-
3
2
  export interface GrantDelegationModalProps {
4
3
  open: boolean;
5
4
  onOpenChange: (open: boolean) => void;
@@ -20,4 +19,3 @@ export interface GrantDelegationModalProps {
20
19
  * an app permission to act on their behalf.
21
20
  */
22
21
  export declare const GrantDelegationModal: FC<GrantDelegationModalProps>;
23
- //# sourceMappingURL=GrantDelegationModal.d.ts.map
@@ -6,7 +6,7 @@ import { AlertCircle as c, Check as l, CheckCircle as u, Loader2 as d, Search as
6
6
  import { Fragment as m, jsx as h, jsxs as g } from "react/jsx-runtime";
7
7
  import { useI18n as te } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
8
8
  import { useGatewayClient as ne } from "@burdenoff/fe-libs/shared/graphql";
9
- //#region src/devportal/components/GrantDelegationModal.tsx
9
+ // src/devportal/components/GrantDelegationModal.tsx
10
10
  function re(e) {
11
11
  let t = /* @__PURE__ */ new Map();
12
12
  for (let n of e) {
@@ -367,7 +367,6 @@ var _ = ({ open: _, onOpenChange: v, appId: y, appName: b, appScopes: x, preSele
367
367
  })]
368
368
  }) : null;
369
369
  };
370
- //#endregion
371
370
  export { _ as GrantDelegationModal };
372
371
 
373
372
  //# sourceMappingURL=GrantDelegationModal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GrantDelegationModal.js","names":[],"sources":["../../../src/devportal/components/GrantDelegationModal.tsx"],"sourcesContent":["import {\n useState,\n useCallback,\n useEffect,\n useId,\n useRef,\n type FC,\n} from \"react\";\nimport {\n Shield,\n X,\n Loader2,\n CheckCircle,\n AlertCircle,\n Search,\n Check,\n} from \"lucide-react\";\nimport type { ApolloClient } from \"@apollo/client/core\";\nimport { useI18n } from \"@burdenoff/fe-libs/shared/providers/shell/I18nProvider\";\nimport { useGatewayClient } from \"@burdenoff/fe-libs/shared/graphql\";\nimport { cn } from \"../utils/cn\";\nimport { useGrantDelegationMutation } from \"../../generated/global-operations\";\nimport { useMyWorkspacesQuery } from \"../../generated/wspace-operations\";\n\ninterface WorkspaceOption {\n id: string;\n name: string;\n}\n\n// ============================================================================\n// Scope grouping helper\n// ============================================================================\n\nfunction groupScopes(scopes: string[]): Map<string, string[]> {\n const groups = new Map<string, string[]>();\n for (const scope of scopes) {\n const [resource] = scope.split(\":\");\n const group = resource || \"other\";\n if (!groups.has(group)) groups.set(group, []);\n groups.get(group)!.push(scope);\n }\n return groups;\n}\n\n// ============================================================================\n// Props\n// ============================================================================\n\nexport interface GrantDelegationModalProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n appId: string;\n appName: string;\n appScopes: string[];\n /** Pre-selected workspace IDs (e.g., from installation flow) */\n preSelectedWorkspaceIds?: string[];\n /** Pre-selected scopes (e.g., required scopes from app) */\n preSelectedScopes?: string[];\n onSuccess?: (delegation: unknown) => void;\n}\n\n/**\n * Reusable modal for granting delegation access to an app.\n *\n * Allows users to select scopes, specify workspace IDs,\n * and optionally set an expiration date before granting\n * an app permission to act on their behalf.\n */\nexport const GrantDelegationModal: FC<GrantDelegationModalProps> = ({\n open,\n onOpenChange,\n appId,\n appName,\n appScopes,\n preSelectedWorkspaceIds,\n preSelectedScopes,\n onSuccess,\n}) => {\n const titleId = useId();\n const descriptionId = useId();\n const dialogRef = useRef<HTMLDivElement | null>(null);\n const previousFocusRef = useRef<HTMLElement | null>(null);\n const [selectedScopes, setSelectedScopes] = useState<string[]>(\n preSelectedScopes ?? [],\n );\n const [selectedWorkspaceIds, setSelectedWorkspaceIds] = useState<string[]>(\n preSelectedWorkspaceIds ?? [],\n );\n const [allWorkspaces, setAllWorkspaces] = useState(false);\n const [workspaceSearch, setWorkspaceSearch] = useState(\"\");\n const [expiresAt, setExpiresAt] = useState(\"\");\n const [error, setError] = useState<string | null>(null);\n const [successMessage, setSuccessMessage] = useState<string | null>(null);\n\n // useGatewayClient throws when no MultiGatewayProvider is mounted (e.g. in\n // standalone tests). We intentionally swallow that to render in degraded\n // mode without the workspaces dropdown.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const workspaceClient = (() => {\n try {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return useGatewayClient(\"workspace\");\n } catch {\n return null;\n }\n })();\n const { data: workspacesData, loading: loadingWorkspaces } =\n useMyWorkspacesQuery({\n client: (workspaceClient as unknown as ApolloClient | null) ?? undefined,\n skip: !open || !workspaceClient,\n variables: {\n pagination: {\n limit: 100,\n offset: 0,\n },\n },\n fetchPolicy: \"cache-and-network\",\n });\n const workspaces: WorkspaceOption[] =\n workspacesData?.myWorkspaces?.items?.map(\n (workspace: { id: string; name: string }) => ({\n id: workspace.id,\n name: workspace.name,\n }),\n ) ?? [];\n const [grantDelegationMutation, { loading }] = useGrantDelegationMutation({\n refetchQueries: [\"CurrentUserDelegations\"],\n awaitRefetchQueries: true,\n });\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 // Apply pre-selections when they change\n useEffect(() => {\n if (preSelectedWorkspaceIds?.length)\n setSelectedWorkspaceIds(preSelectedWorkspaceIds);\n }, [preSelectedWorkspaceIds]);\n useEffect(() => {\n if (preSelectedScopes?.length) setSelectedScopes(preSelectedScopes);\n }, [preSelectedScopes]);\n\n const resetState = useCallback(() => {\n setSelectedScopes(preSelectedScopes ?? []);\n setSelectedWorkspaceIds(preSelectedWorkspaceIds ?? []);\n setAllWorkspaces(false);\n setWorkspaceSearch(\"\");\n setExpiresAt(\"\");\n setError(null);\n setSuccessMessage(null);\n }, [preSelectedScopes, preSelectedWorkspaceIds]);\n\n const handleClose = useCallback(() => {\n if (loading) return;\n resetState();\n onOpenChange(false);\n }, [loading, onOpenChange, resetState]);\n\n useEffect(() => {\n if (!open) return undefined;\n\n previousFocusRef.current = document.activeElement as HTMLElement | null;\n const originalOverflow = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n\n window.requestAnimationFrame(() => {\n dialogRef.current?.focus();\n });\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\" && !loading) {\n event.preventDefault();\n handleClose();\n }\n };\n\n document.addEventListener(\"keydown\", onKeyDown);\n\n return () => {\n document.body.style.overflow = originalOverflow;\n document.removeEventListener(\"keydown\", onKeyDown);\n previousFocusRef.current?.focus();\n };\n }, [handleClose, loading, open]);\n\n const toggleScope = useCallback((scope: string) => {\n setSelectedScopes((prev) =>\n prev.includes(scope) ? prev.filter((s) => s !== scope) : [...prev, scope],\n );\n }, []);\n\n const toggleWorkspace = useCallback((wsId: string) => {\n setSelectedWorkspaceIds((prev) =>\n prev.includes(wsId) ? prev.filter((id) => id !== wsId) : [...prev, wsId],\n );\n setAllWorkspaces(false);\n }, []);\n\n const handleAllWorkspacesToggle = useCallback(() => {\n setAllWorkspaces((prev) => {\n if (!prev) setSelectedWorkspaceIds([]);\n return !prev;\n });\n }, []);\n\n const filteredWorkspaces = workspaces.filter((ws) =>\n ws.name.toLowerCase().includes(workspaceSearch.toLowerCase()),\n );\n\n const scopeGroups = groupScopes(appScopes);\n\n const handleGrant = useCallback(async () => {\n setError(null);\n\n if (selectedScopes.length === 0) {\n setError(\n tr(\n \"devportal.selectAtLeastOneScope\",\n \"Please select at least one scope to grant.\",\n ),\n );\n return;\n }\n\n let parsedExpiresAt: string | undefined;\n if (expiresAt) {\n const date = new Date(expiresAt);\n if (Number.isNaN(date.getTime())) {\n setError(\n tr(\n \"devportal.invalidExpirationDate\",\n \"Invalid expiration date. Please use a valid date format.\",\n ),\n );\n return;\n }\n if (date <= new Date()) {\n setError(\n tr(\n \"devportal.expirationDateFuture\",\n \"Expiration date must be in the future.\",\n ),\n );\n return;\n }\n parsedExpiresAt = date.toISOString();\n }\n\n try {\n const result = await grantDelegationMutation({\n variables: {\n input: {\n appId,\n scopes: selectedScopes,\n workspaceIds:\n !allWorkspaces && selectedWorkspaceIds.length > 0\n ? selectedWorkspaceIds\n : undefined,\n expiresAt: parsedExpiresAt,\n },\n },\n });\n\n if (result.error) {\n setError(\n result.error.message ??\n tr(\n \"devportal.failedToGrantDelegation\",\n \"Failed to grant delegation.\",\n ),\n );\n return;\n }\n\n const delegation = result.data?.grantDelegation;\n if (!delegation) {\n setError(\n tr(\n \"devportal.failedToGrantDelegation\",\n \"Failed to grant delegation.\",\n ),\n );\n return;\n }\n\n const wsCount = allWorkspaces\n ? \"all workspaces\"\n : selectedWorkspaceIds.length > 0\n ? `${selectedWorkspaceIds.length} workspace${selectedWorkspaceIds.length !== 1 ? \"s\" : \"\"}`\n : \"all workspaces\";\n setSuccessMessage(\n `Delegation granted to \"${appName}\" with ${selectedScopes.length} scope${selectedScopes.length !== 1 ? \"s\" : \"\"} for ${wsCount}.`,\n );\n onSuccess?.(delegation);\n } catch (err) {\n setError(\n err instanceof Error\n ? err.message\n : tr(\n \"devportal.failedToGrantDelegation\",\n \"Failed to grant delegation.\",\n ),\n );\n }\n }, [\n selectedScopes,\n selectedWorkspaceIds,\n allWorkspaces,\n expiresAt,\n appId,\n appName,\n grantDelegationMutation,\n onSuccess,\n ]);\n\n if (!open) return null;\n\n return (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center\">\n {/* Backdrop */}\n <button\n type=\"button\"\n aria-label=\"Close delegation dialog backdrop\"\n className=\"absolute inset-0 bg-bg-overlay\"\n onClick={handleClose}\n />\n\n {/* Dialog */}\n <div\n ref={dialogRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={descriptionId}\n tabIndex={-1}\n className=\"relative z-10 w-full max-w-lg rounded-lg bg-bg-surface shadow-xl\"\n >\n {/* Header */}\n <div className=\"flex items-start gap-4 border-b p-6\">\n <div className=\"rounded-full bg-status-success-bg-subtle p-2\">\n <Shield className=\"h-6 w-6 text-status-success-text\" />\n </div>\n <div className=\"flex-1\">\n <h3 id={titleId} className=\"text-lg font-semibold\">\n Grant Delegation\n </h3>\n <p id={descriptionId} className=\"mt-1 text-sm text-text-secondary\">\n Allow{\" \"}\n <span className=\"font-medium text-text-primary\">{appName}</span>{\" \"}\n to act on your behalf\n </p>\n </div>\n <button\n type=\"button\"\n onClick={handleClose}\n disabled={loading}\n className=\"rounded-md p-1 text-text-secondary hover:bg-bg-sunken transition-colors disabled:opacity-50\"\n >\n <X className=\"h-5 w-5\" />\n </button>\n </div>\n\n {/* Body */}\n <div className=\"space-y-5 p-6\">\n {/* Success state */}\n {successMessage && (\n <div className=\"flex items-start gap-3 rounded-md border border-border-subtle bg-status-success-bg-subtle p-4\">\n <CheckCircle className=\"h-5 w-5 shrink-0 text-status-success-text\" />\n <div className=\"flex-1\">\n <p className=\"text-sm font-medium text-status-success-text\">\n {successMessage}\n </p>\n <button\n type=\"button\"\n onClick={handleClose}\n className=\"mt-2 text-sm font-medium text-status-success-text hover:underline\"\n >\n {tr(\"devportal.close\", \"Close\")}\n </button>\n </div>\n </div>\n )}\n\n {/* Form fields (hidden after success) */}\n {!successMessage && (\n <>\n {/* Scope selection (grouped by resource) */}\n <div>\n <label className=\"mb-2 block text-sm font-medium\">\n {tr(\"devportal.permissionsScopes\", \"Permissions (Scopes)\")}\n <span className=\"ml-1.5 text-xs font-normal text-text-secondary\">\n {selectedScopes.length} {tr(\"devportal.of\", \"of\")}{\" \"}\n {appScopes.length} {tr(\"devportal.selected\", \"selected\")}\n </span>\n </label>\n {appScopes.length === 0 ? (\n <p className=\"text-sm text-text-secondary\">\n This app has no scopes available.\n </p>\n ) : (\n <div className=\"space-y-3\">\n {/* Quick actions */}\n <div className=\"flex gap-2 text-xs\">\n <button\n type=\"button\"\n onClick={() => setSelectedScopes([...appScopes])}\n className=\"text-status-success-text hover:underline\"\n >\n {tr(\"devportal.selectAll\", \"Select all\")}\n </button>\n <button\n type=\"button\"\n onClick={() =>\n setSelectedScopes(\n appScopes.filter(\n (s) => s.includes(\":read\") || s.includes(\":list\"),\n ),\n )\n }\n className=\"text-status-success-text hover:underline\"\n >\n {tr(\"devportal.readOnly\", \"Read-only\")}\n </button>\n <button\n type=\"button\"\n onClick={() => setSelectedScopes([])}\n className=\"text-text-secondary hover:underline\"\n >\n {tr(\"devportal.clear\", \"Clear\")}\n </button>\n </div>\n {/* Grouped scopes */}\n {[...scopeGroups.entries()].map(([group, scopes]) => (\n <div key={group}>\n <p className=\"mb-1 text-xs font-semibold uppercase text-text-secondary\">\n {group}\n </p>\n <div className=\"flex flex-wrap gap-1.5\">\n {scopes.map((scope) => {\n const isSelected = selectedScopes.includes(scope);\n const action = scope.split(\":\")[1] || scope;\n const isWrite =\n action.includes(\"write\") ||\n action.includes(\"create\") ||\n action.includes(\"delete\") ||\n action.includes(\"admin\");\n return (\n <button\n key={scope}\n type=\"button\"\n onClick={() => toggleScope(scope)}\n className={cn(\n \"rounded-md px-2.5 py-1 text-xs font-medium transition-colors\",\n isSelected\n ? isWrite\n ? \"bg-status-warning-bg text-white\"\n : \"bg-status-success-bg text-white\"\n : \"border bg-bg-sunken text-text-secondary hover:bg-bg-sunken/80\",\n )}\n >\n {action}\n </button>\n );\n })}\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n\n {/* Workspace Selection (multi-select picker) */}\n <div>\n <label className=\"mb-2 block text-sm font-medium\">\n {tr(\"devportal.workspaceAccess\", \"Workspace Access\")}\n </label>\n\n {/* All workspaces toggle */}\n <button\n type=\"button\"\n onClick={handleAllWorkspacesToggle}\n disabled={loading}\n className={cn(\n \"mb-2 flex w-full items-center gap-2 rounded-md border px-3 py-2 text-sm transition-colors\",\n allWorkspaces\n ? \"border-status-success-bg bg-status-success-bg-subtle text-status-success-text\"\n : \"hover:bg-bg-sunken\",\n )}\n >\n {allWorkspaces && (\n <Check className=\"h-4 w-4 text-status-success-text\" />\n )}\n <span>\n {tr(\n \"devportal.allWorkspacesUnrestricted\",\n \"All workspaces (unrestricted)\",\n )}\n </span>\n </button>\n\n {!allWorkspaces && (\n <>\n {/* Search */}\n <div className=\"relative mb-2\">\n <Search className=\"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-text-secondary\" />\n <input\n type=\"text\"\n value={workspaceSearch}\n onChange={(e) => setWorkspaceSearch(e.target.value)}\n placeholder={tr(\n \"devportal.searchWorkspaces\",\n \"Search workspaces...\",\n )}\n disabled={loading}\n className=\"block w-full rounded-md border py-2 pl-9 pr-3 text-sm placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-status-success-bg/20 focus:border-status-success-bg transition-colors disabled:opacity-50\"\n />\n </div>\n\n {/* Workspace list */}\n <div className=\"max-h-40 overflow-y-auto rounded-md border\">\n {loadingWorkspaces ? (\n <div className=\"flex items-center justify-center p-4\">\n <Loader2 className=\"h-4 w-4 animate-spin text-text-secondary\" />\n <span className=\"ml-2 text-sm text-text-secondary\">\n {tr(\n \"devportal.loadingWorkspaces\",\n \"Loading workspaces...\",\n )}\n </span>\n </div>\n ) : filteredWorkspaces.length === 0 ? (\n <p className=\"p-4 text-center text-sm text-text-secondary\">\n {workspaces.length === 0\n ? tr(\n \"devportal.noWorkspacesFound\",\n \"No workspaces found\",\n )\n : tr(\n \"devportal.noMatchingWorkspaces\",\n \"No matching workspaces\",\n )}\n </p>\n ) : (\n filteredWorkspaces.map((ws) => {\n const isSelected = selectedWorkspaceIds.includes(\n ws.id,\n );\n return (\n <button\n key={ws.id}\n type=\"button\"\n onClick={() => toggleWorkspace(ws.id)}\n disabled={loading}\n className={cn(\n \"flex w-full items-center gap-2 border-b px-3 py-2 text-left text-sm transition-colors last:border-b-0\",\n isSelected\n ? \"bg-status-success-bg-subtle text-status-success-text\"\n : \"hover:bg-bg-sunken\",\n )}\n >\n <div\n className={cn(\n \"flex h-4 w-4 shrink-0 items-center justify-center rounded border\",\n isSelected\n ? \"border-status-success-bg bg-status-success-bg\"\n : \"border-muted-foreground/30\",\n )}\n >\n {isSelected && (\n <Check className=\"h-3 w-3 text-white\" />\n )}\n </div>\n <span className=\"font-medium\">{ws.name}</span>\n </button>\n );\n })\n )}\n </div>\n\n {/* Selected count */}\n {selectedWorkspaceIds.length > 0 && (\n <p className=\"mt-1.5 text-xs text-text-secondary\">\n {selectedWorkspaceIds.length} workspace\n {selectedWorkspaceIds.length !== 1 ? \"s\" : \"\"} selected\n </p>\n )}\n </>\n )}\n </div>\n\n {/* Expiration */}\n <div>\n <label className=\"mb-2 block text-sm font-medium\">\n {tr(\"devportal.expiration\", \"Expiration\")}\n <span className=\"ml-1.5 text-xs font-normal text-text-secondary\">\n {tr(\"devportal.optional\", \"(optional)\")}\n </span>\n </label>\n <input\n type=\"datetime-local\"\n value={expiresAt}\n onChange={(e) => setExpiresAt(e.target.value)}\n disabled={loading}\n min={new Date().toISOString().slice(0, 16)}\n className=\"block w-full rounded-md border px-3 py-2 text-sm placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-status-success-bg/20 focus:border-status-success-bg transition-colors disabled:opacity-50\"\n />\n <p className=\"mt-1.5 text-xs text-text-secondary\">\n {tr(\n \"devportal.leaveEmptyForNonExpiring\",\n \"Leave empty for a delegation that does not expire.\",\n )}\n </p>\n </div>\n\n {/* Error */}\n {error && (\n <div className=\"flex items-start gap-3 rounded-md border border-border-subtle bg-status-error-bg-subtle p-4\">\n <AlertCircle className=\"h-5 w-5 shrink-0 text-status-error-text\" />\n <p className=\"text-sm text-status-error-text\">{error}</p>\n </div>\n )}\n </>\n )}\n </div>\n\n {/* Footer */}\n {!successMessage && (\n <div className=\"flex justify-end gap-3 border-t p-6\">\n <button\n type=\"button\"\n onClick={handleClose}\n disabled={loading}\n className=\"rounded-md border px-4 py-2 text-sm font-medium hover:bg-bg-sunken transition-colors disabled:opacity-50\"\n >\n {tr(\"devportal.cancel\", \"Cancel\")}\n </button>\n <button\n type=\"button\"\n onClick={handleGrant}\n disabled={loading || selectedScopes.length === 0}\n className={cn(\n \"flex items-center gap-2 rounded-md px-4 py-2 text-sm font-medium text-white transition-colors disabled:opacity-50 disabled:cursor-not-allowed\",\n \"bg-status-success-bg hover:bg-status-success-bg/90\",\n )}\n >\n {loading ? (\n <>\n <Loader2 className=\"h-4 w-4 animate-spin\" />\n {tr(\"devportal.granting\", \"Granting...\")}\n </>\n ) : (\n tr(\"devportal.grant\", \"Grant\")\n )}\n </button>\n </div>\n )}\n </div>\n </div>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"GrantDelegationModal.js","names":["_Fragment","groupScopes","groups","scope","scopes","resource","group","GrantDelegationModal","titleId","useId","descriptionId","dialogRef","useRef","previousFocusRef","selectedScopes","setSelectedScopes","useState","preSelectedScopes","selectedWorkspaceIds","setSelectedWorkspaceIds","preSelectedWorkspaceIds","allWorkspaces","setAllWorkspaces","workspaceSearch","setWorkspaceSearch","expiresAt","setExpiresAt","error","setError","successMessage","setSuccessMessage","workspaceClient","useGatewayClient","workspacesData","loadingWorkspaces","useMyWorkspacesQuery","open","workspaces","workspace","grantDelegationMutation","useGrantDelegationMutation","useI18n","tr","value","t","key","fallback","useEffect","resetState","useCallback","handleClose","loading","onOpenChange","originalOverflow","onKeyDown","event","toggleScope","prev","s","toggleWorkspace","wsId","id","handleAllWorkspacesToggle","filteredWorkspaces","ws","scopeGroups","appScopes","handleGrant","parsedExpiresAt","date","result","delegation","wsCount","appName","onSuccess","err","appId","Shield","X","CheckCircle","Fragment","isSelected","action","isWrite","cn","Check","Search","Loader2","AlertCircle"],"sources":["../../../src/devportal/components/GrantDelegationModal.tsx"],"sourcesContent":["import {\n useState,\n useCallback,\n useEffect,\n useId,\n useRef,\n type FC,\n} from \"react\";\nimport {\n Shield,\n X,\n Loader2,\n CheckCircle,\n AlertCircle,\n Search,\n Check,\n} from \"lucide-react\";\nimport type { ApolloClient } from \"@apollo/client/core\";\nimport { useI18n } from \"@burdenoff/fe-libs/shared/providers/shell/I18nProvider\";\nimport { useGatewayClient } from \"@burdenoff/fe-libs/shared/graphql\";\nimport { cn } from \"../utils/cn\";\nimport { useGrantDelegationMutation } from \"../../generated/global-operations\";\nimport { useMyWorkspacesQuery } from \"../../generated/wspace-operations\";\n\ninterface WorkspaceOption {\n id: string;\n name: string;\n}\n\n// ============================================================================\n// Scope grouping helper\n// ============================================================================\n\nfunction groupScopes(scopes: string[]): Map<string, string[]> {\n const groups = new Map<string, string[]>();\n for (const scope of scopes) {\n const [resource] = scope.split(\":\");\n const group = resource || \"other\";\n if (!groups.has(group)) groups.set(group, []);\n groups.get(group)!.push(scope);\n }\n return groups;\n}\n\n// ============================================================================\n// Props\n// ============================================================================\n\nexport interface GrantDelegationModalProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n appId: string;\n appName: string;\n appScopes: string[];\n /** Pre-selected workspace IDs (e.g., from installation flow) */\n preSelectedWorkspaceIds?: string[];\n /** Pre-selected scopes (e.g., required scopes from app) */\n preSelectedScopes?: string[];\n onSuccess?: (delegation: unknown) => void;\n}\n\n/**\n * Reusable modal for granting delegation access to an app.\n *\n * Allows users to select scopes, specify workspace IDs,\n * and optionally set an expiration date before granting\n * an app permission to act on their behalf.\n */\nexport const GrantDelegationModal: FC<GrantDelegationModalProps> = ({\n open,\n onOpenChange,\n appId,\n appName,\n appScopes,\n preSelectedWorkspaceIds,\n preSelectedScopes,\n onSuccess,\n}) => {\n const titleId = useId();\n const descriptionId = useId();\n const dialogRef = useRef<HTMLDivElement | null>(null);\n const previousFocusRef = useRef<HTMLElement | null>(null);\n const [selectedScopes, setSelectedScopes] = useState<string[]>(\n preSelectedScopes ?? [],\n );\n const [selectedWorkspaceIds, setSelectedWorkspaceIds] = useState<string[]>(\n preSelectedWorkspaceIds ?? [],\n );\n const [allWorkspaces, setAllWorkspaces] = useState(false);\n const [workspaceSearch, setWorkspaceSearch] = useState(\"\");\n const [expiresAt, setExpiresAt] = useState(\"\");\n const [error, setError] = useState<string | null>(null);\n const [successMessage, setSuccessMessage] = useState<string | null>(null);\n\n // useGatewayClient throws when no MultiGatewayProvider is mounted (e.g. in\n // standalone tests). We intentionally swallow that to render in degraded\n // mode without the workspaces dropdown.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const workspaceClient = (() => {\n try {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return useGatewayClient(\"workspace\");\n } catch {\n return null;\n }\n })();\n const { data: workspacesData, loading: loadingWorkspaces } =\n useMyWorkspacesQuery({\n client: (workspaceClient as unknown as ApolloClient | null) ?? undefined,\n skip: !open || !workspaceClient,\n variables: {\n pagination: {\n limit: 100,\n offset: 0,\n },\n },\n fetchPolicy: \"cache-and-network\",\n });\n const workspaces: WorkspaceOption[] =\n workspacesData?.myWorkspaces?.items?.map(\n (workspace: { id: string; name: string }) => ({\n id: workspace.id,\n name: workspace.name,\n }),\n ) ?? [];\n const [grantDelegationMutation, { loading }] = useGrantDelegationMutation({\n refetchQueries: [\"CurrentUserDelegations\"],\n awaitRefetchQueries: true,\n });\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 // Apply pre-selections when they change\n useEffect(() => {\n if (preSelectedWorkspaceIds?.length)\n setSelectedWorkspaceIds(preSelectedWorkspaceIds);\n }, [preSelectedWorkspaceIds]);\n useEffect(() => {\n if (preSelectedScopes?.length) setSelectedScopes(preSelectedScopes);\n }, [preSelectedScopes]);\n\n const resetState = useCallback(() => {\n setSelectedScopes(preSelectedScopes ?? []);\n setSelectedWorkspaceIds(preSelectedWorkspaceIds ?? []);\n setAllWorkspaces(false);\n setWorkspaceSearch(\"\");\n setExpiresAt(\"\");\n setError(null);\n setSuccessMessage(null);\n }, [preSelectedScopes, preSelectedWorkspaceIds]);\n\n const handleClose = useCallback(() => {\n if (loading) return;\n resetState();\n onOpenChange(false);\n }, [loading, onOpenChange, resetState]);\n\n useEffect(() => {\n if (!open) return undefined;\n\n previousFocusRef.current = document.activeElement as HTMLElement | null;\n const originalOverflow = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n\n window.requestAnimationFrame(() => {\n dialogRef.current?.focus();\n });\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\" && !loading) {\n event.preventDefault();\n handleClose();\n }\n };\n\n document.addEventListener(\"keydown\", onKeyDown);\n\n return () => {\n document.body.style.overflow = originalOverflow;\n document.removeEventListener(\"keydown\", onKeyDown);\n previousFocusRef.current?.focus();\n };\n }, [handleClose, loading, open]);\n\n const toggleScope = useCallback((scope: string) => {\n setSelectedScopes((prev) =>\n prev.includes(scope) ? prev.filter((s) => s !== scope) : [...prev, scope],\n );\n }, []);\n\n const toggleWorkspace = useCallback((wsId: string) => {\n setSelectedWorkspaceIds((prev) =>\n prev.includes(wsId) ? prev.filter((id) => id !== wsId) : [...prev, wsId],\n );\n setAllWorkspaces(false);\n }, []);\n\n const handleAllWorkspacesToggle = useCallback(() => {\n setAllWorkspaces((prev) => {\n if (!prev) setSelectedWorkspaceIds([]);\n return !prev;\n });\n }, []);\n\n const filteredWorkspaces = workspaces.filter((ws) =>\n ws.name.toLowerCase().includes(workspaceSearch.toLowerCase()),\n );\n\n const scopeGroups = groupScopes(appScopes);\n\n const handleGrant = useCallback(async () => {\n setError(null);\n\n if (selectedScopes.length === 0) {\n setError(\n tr(\n \"devportal.selectAtLeastOneScope\",\n \"Please select at least one scope to grant.\",\n ),\n );\n return;\n }\n\n let parsedExpiresAt: string | undefined;\n if (expiresAt) {\n const date = new Date(expiresAt);\n if (Number.isNaN(date.getTime())) {\n setError(\n tr(\n \"devportal.invalidExpirationDate\",\n \"Invalid expiration date. Please use a valid date format.\",\n ),\n );\n return;\n }\n if (date <= new Date()) {\n setError(\n tr(\n \"devportal.expirationDateFuture\",\n \"Expiration date must be in the future.\",\n ),\n );\n return;\n }\n parsedExpiresAt = date.toISOString();\n }\n\n try {\n const result = await grantDelegationMutation({\n variables: {\n input: {\n appId,\n scopes: selectedScopes,\n workspaceIds:\n !allWorkspaces && selectedWorkspaceIds.length > 0\n ? selectedWorkspaceIds\n : undefined,\n expiresAt: parsedExpiresAt,\n },\n },\n });\n\n if (result.error) {\n setError(\n result.error.message ??\n tr(\n \"devportal.failedToGrantDelegation\",\n \"Failed to grant delegation.\",\n ),\n );\n return;\n }\n\n const delegation = result.data?.grantDelegation;\n if (!delegation) {\n setError(\n tr(\n \"devportal.failedToGrantDelegation\",\n \"Failed to grant delegation.\",\n ),\n );\n return;\n }\n\n const wsCount = allWorkspaces\n ? \"all workspaces\"\n : selectedWorkspaceIds.length > 0\n ? `${selectedWorkspaceIds.length} workspace${selectedWorkspaceIds.length !== 1 ? \"s\" : \"\"}`\n : \"all workspaces\";\n setSuccessMessage(\n `Delegation granted to \"${appName}\" with ${selectedScopes.length} scope${selectedScopes.length !== 1 ? \"s\" : \"\"} for ${wsCount}.`,\n );\n onSuccess?.(delegation);\n } catch (err) {\n setError(\n err instanceof Error\n ? err.message\n : tr(\n \"devportal.failedToGrantDelegation\",\n \"Failed to grant delegation.\",\n ),\n );\n }\n }, [\n selectedScopes,\n selectedWorkspaceIds,\n allWorkspaces,\n expiresAt,\n appId,\n appName,\n grantDelegationMutation,\n onSuccess,\n ]);\n\n if (!open) return null;\n\n return (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center\">\n {/* Backdrop */}\n <button\n type=\"button\"\n aria-label=\"Close delegation dialog backdrop\"\n className=\"absolute inset-0 bg-bg-overlay\"\n onClick={handleClose}\n />\n\n {/* Dialog */}\n <div\n ref={dialogRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={descriptionId}\n tabIndex={-1}\n className=\"relative z-10 w-full max-w-lg rounded-lg bg-bg-surface shadow-xl\"\n >\n {/* Header */}\n <div className=\"flex items-start gap-4 border-b p-6\">\n <div className=\"rounded-full bg-status-success-bg-subtle p-2\">\n <Shield className=\"h-6 w-6 text-status-success-text\" />\n </div>\n <div className=\"flex-1\">\n <h3 id={titleId} className=\"text-lg font-semibold\">\n Grant Delegation\n </h3>\n <p id={descriptionId} className=\"mt-1 text-sm text-text-secondary\">\n Allow{\" \"}\n <span className=\"font-medium text-text-primary\">{appName}</span>{\" \"}\n to act on your behalf\n </p>\n </div>\n <button\n type=\"button\"\n onClick={handleClose}\n disabled={loading}\n className=\"rounded-md p-1 text-text-secondary hover:bg-bg-sunken transition-colors disabled:opacity-50\"\n >\n <X className=\"h-5 w-5\" />\n </button>\n </div>\n\n {/* Body */}\n <div className=\"space-y-5 p-6\">\n {/* Success state */}\n {successMessage && (\n <div className=\"flex items-start gap-3 rounded-md border border-border-subtle bg-status-success-bg-subtle p-4\">\n <CheckCircle className=\"h-5 w-5 shrink-0 text-status-success-text\" />\n <div className=\"flex-1\">\n <p className=\"text-sm font-medium text-status-success-text\">\n {successMessage}\n </p>\n <button\n type=\"button\"\n onClick={handleClose}\n className=\"mt-2 text-sm font-medium text-status-success-text hover:underline\"\n >\n {tr(\"devportal.close\", \"Close\")}\n </button>\n </div>\n </div>\n )}\n\n {/* Form fields (hidden after success) */}\n {!successMessage && (\n <>\n {/* Scope selection (grouped by resource) */}\n <div>\n <label className=\"mb-2 block text-sm font-medium\">\n {tr(\"devportal.permissionsScopes\", \"Permissions (Scopes)\")}\n <span className=\"ml-1.5 text-xs font-normal text-text-secondary\">\n {selectedScopes.length} {tr(\"devportal.of\", \"of\")}{\" \"}\n {appScopes.length} {tr(\"devportal.selected\", \"selected\")}\n </span>\n </label>\n {appScopes.length === 0 ? (\n <p className=\"text-sm text-text-secondary\">\n This app has no scopes available.\n </p>\n ) : (\n <div className=\"space-y-3\">\n {/* Quick actions */}\n <div className=\"flex gap-2 text-xs\">\n <button\n type=\"button\"\n onClick={() => setSelectedScopes([...appScopes])}\n className=\"text-status-success-text hover:underline\"\n >\n {tr(\"devportal.selectAll\", \"Select all\")}\n </button>\n <button\n type=\"button\"\n onClick={() =>\n setSelectedScopes(\n appScopes.filter(\n (s) => s.includes(\":read\") || s.includes(\":list\"),\n ),\n )\n }\n className=\"text-status-success-text hover:underline\"\n >\n {tr(\"devportal.readOnly\", \"Read-only\")}\n </button>\n <button\n type=\"button\"\n onClick={() => setSelectedScopes([])}\n className=\"text-text-secondary hover:underline\"\n >\n {tr(\"devportal.clear\", \"Clear\")}\n </button>\n </div>\n {/* Grouped scopes */}\n {[...scopeGroups.entries()].map(([group, scopes]) => (\n <div key={group}>\n <p className=\"mb-1 text-xs font-semibold uppercase text-text-secondary\">\n {group}\n </p>\n <div className=\"flex flex-wrap gap-1.5\">\n {scopes.map((scope) => {\n const isSelected = selectedScopes.includes(scope);\n const action = scope.split(\":\")[1] || scope;\n const isWrite =\n action.includes(\"write\") ||\n action.includes(\"create\") ||\n action.includes(\"delete\") ||\n action.includes(\"admin\");\n return (\n <button\n key={scope}\n type=\"button\"\n onClick={() => toggleScope(scope)}\n className={cn(\n \"rounded-md px-2.5 py-1 text-xs font-medium transition-colors\",\n isSelected\n ? isWrite\n ? \"bg-status-warning-bg text-white\"\n : \"bg-status-success-bg text-white\"\n : \"border bg-bg-sunken text-text-secondary hover:bg-bg-sunken/80\",\n )}\n >\n {action}\n </button>\n );\n })}\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n\n {/* Workspace Selection (multi-select picker) */}\n <div>\n <label className=\"mb-2 block text-sm font-medium\">\n {tr(\"devportal.workspaceAccess\", \"Workspace Access\")}\n </label>\n\n {/* All workspaces toggle */}\n <button\n type=\"button\"\n onClick={handleAllWorkspacesToggle}\n disabled={loading}\n className={cn(\n \"mb-2 flex w-full items-center gap-2 rounded-md border px-3 py-2 text-sm transition-colors\",\n allWorkspaces\n ? \"border-status-success-bg bg-status-success-bg-subtle text-status-success-text\"\n : \"hover:bg-bg-sunken\",\n )}\n >\n {allWorkspaces && (\n <Check className=\"h-4 w-4 text-status-success-text\" />\n )}\n <span>\n {tr(\n \"devportal.allWorkspacesUnrestricted\",\n \"All workspaces (unrestricted)\",\n )}\n </span>\n </button>\n\n {!allWorkspaces && (\n <>\n {/* Search */}\n <div className=\"relative mb-2\">\n <Search className=\"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-text-secondary\" />\n <input\n type=\"text\"\n value={workspaceSearch}\n onChange={(e) => setWorkspaceSearch(e.target.value)}\n placeholder={tr(\n \"devportal.searchWorkspaces\",\n \"Search workspaces...\",\n )}\n disabled={loading}\n className=\"block w-full rounded-md border py-2 pl-9 pr-3 text-sm placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-status-success-bg/20 focus:border-status-success-bg transition-colors disabled:opacity-50\"\n />\n </div>\n\n {/* Workspace list */}\n <div className=\"max-h-40 overflow-y-auto rounded-md border\">\n {loadingWorkspaces ? (\n <div className=\"flex items-center justify-center p-4\">\n <Loader2 className=\"h-4 w-4 animate-spin text-text-secondary\" />\n <span className=\"ml-2 text-sm text-text-secondary\">\n {tr(\n \"devportal.loadingWorkspaces\",\n \"Loading workspaces...\",\n )}\n </span>\n </div>\n ) : filteredWorkspaces.length === 0 ? (\n <p className=\"p-4 text-center text-sm text-text-secondary\">\n {workspaces.length === 0\n ? tr(\n \"devportal.noWorkspacesFound\",\n \"No workspaces found\",\n )\n : tr(\n \"devportal.noMatchingWorkspaces\",\n \"No matching workspaces\",\n )}\n </p>\n ) : (\n filteredWorkspaces.map((ws) => {\n const isSelected = selectedWorkspaceIds.includes(\n ws.id,\n );\n return (\n <button\n key={ws.id}\n type=\"button\"\n onClick={() => toggleWorkspace(ws.id)}\n disabled={loading}\n className={cn(\n \"flex w-full items-center gap-2 border-b px-3 py-2 text-left text-sm transition-colors last:border-b-0\",\n isSelected\n ? \"bg-status-success-bg-subtle text-status-success-text\"\n : \"hover:bg-bg-sunken\",\n )}\n >\n <div\n className={cn(\n \"flex h-4 w-4 shrink-0 items-center justify-center rounded border\",\n isSelected\n ? \"border-status-success-bg bg-status-success-bg\"\n : \"border-muted-foreground/30\",\n )}\n >\n {isSelected && (\n <Check className=\"h-3 w-3 text-white\" />\n )}\n </div>\n <span className=\"font-medium\">{ws.name}</span>\n </button>\n );\n })\n )}\n </div>\n\n {/* Selected count */}\n {selectedWorkspaceIds.length > 0 && (\n <p className=\"mt-1.5 text-xs text-text-secondary\">\n {selectedWorkspaceIds.length} workspace\n {selectedWorkspaceIds.length !== 1 ? \"s\" : \"\"} selected\n </p>\n )}\n </>\n )}\n </div>\n\n {/* Expiration */}\n <div>\n <label className=\"mb-2 block text-sm font-medium\">\n {tr(\"devportal.expiration\", \"Expiration\")}\n <span className=\"ml-1.5 text-xs font-normal text-text-secondary\">\n {tr(\"devportal.optional\", \"(optional)\")}\n </span>\n </label>\n <input\n type=\"datetime-local\"\n value={expiresAt}\n onChange={(e) => setExpiresAt(e.target.value)}\n disabled={loading}\n min={new Date().toISOString().slice(0, 16)}\n className=\"block w-full rounded-md border px-3 py-2 text-sm placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-status-success-bg/20 focus:border-status-success-bg transition-colors disabled:opacity-50\"\n />\n <p className=\"mt-1.5 text-xs text-text-secondary\">\n {tr(\n \"devportal.leaveEmptyForNonExpiring\",\n \"Leave empty for a delegation that does not expire.\",\n )}\n </p>\n </div>\n\n {/* Error */}\n {error && (\n <div className=\"flex items-start gap-3 rounded-md border border-border-subtle bg-status-error-bg-subtle p-4\">\n <AlertCircle className=\"h-5 w-5 shrink-0 text-status-error-text\" />\n <p className=\"text-sm text-status-error-text\">{error}</p>\n </div>\n )}\n </>\n )}\n </div>\n\n {/* Footer */}\n {!successMessage && (\n <div className=\"flex justify-end gap-3 border-t p-6\">\n <button\n type=\"button\"\n onClick={handleClose}\n disabled={loading}\n className=\"rounded-md border px-4 py-2 text-sm font-medium hover:bg-bg-sunken transition-colors disabled:opacity-50\"\n >\n {tr(\"devportal.cancel\", \"Cancel\")}\n </button>\n <button\n type=\"button\"\n onClick={handleGrant}\n disabled={loading || selectedScopes.length === 0}\n className={cn(\n \"flex items-center gap-2 rounded-md px-4 py-2 text-sm font-medium text-white transition-colors disabled:opacity-50 disabled:cursor-not-allowed\",\n \"bg-status-success-bg hover:bg-status-success-bg/90\",\n )}\n >\n {loading ? (\n <>\n <Loader2 className=\"h-4 w-4 animate-spin\" />\n {tr(\"devportal.granting\", \"Granting...\")}\n </>\n ) : (\n tr(\"devportal.grant\", \"Grant\")\n )}\n </button>\n </div>\n )}\n </div>\n </div>\n );\n};\n"],"mappings":";;;;;;;;;AAiCA,SAASC,GAAY,GAAyC;CAC5D,IAAMC,oBAAS,IAAI,IAAsB;CACzC,KAAK,IAAMC,KAASC,GAAQ;EAC1B,IAAM,CAACC,KAAYF,EAAM,MAAM,GAAG,GAC5BG,IAAQD,KAAY;EAE1B,AADKH,EAAO,IAAII,CAAK,KAAGJ,EAAO,IAAII,GAAO,CAAC,CAAC,GAC5CJ,EAAO,IAAII,CAAK,CAAC,CAAE,KAAKH,CAAK;CAC/B;CACA,OAAOD;AACT;AA0BA,IAAaK,KAAuD,EAClE,SACA,iBACA,UACA,YACA,cACA,4BACA,sBACA,mBACI;CACJ,IAAMC,IAAUC,EAAM,GAChBC,IAAgBD,EAAM,GACtBE,IAAYC,EAA8B,IAAI,GAC9CC,IAAmBD,EAA2B,IAAI,GAClD,CAACE,GAAgBC,KAAqBC,EAC1CC,KAAqB,CAAC,CACxB,GACM,CAACC,GAAsBC,KAA2BH,EACtDI,KAA2B,CAAC,CAC9B,GACM,CAACC,GAAeC,KAAoBN,EAAS,EAAK,GAClD,CAACO,GAAiBC,KAAsBR,EAAS,EAAE,GACnD,CAACS,GAAWC,KAAgBV,EAAS,EAAE,GACvC,CAACW,GAAOC,KAAYZ,EAAwB,IAAI,GAChD,CAACa,GAAgBC,KAAqBd,EAAwB,IAAI,GAMlEe,WAAyB;EAC7B,IAAI;GAEF,OAAOC,GAAiB,WAAW;EACrC,QAAQ;GACN,OAAO;EACT;CACF,EAAA,CAAG,GACG,EAAE,MAAMC,GAAgB,SAASC,MACrCC,EAAqB;EACnB,QAASJ,KAAsD,KAAA;EAC/D,MAAM,CAACK,KAAQ,CAACL;EAChB,WAAW,EACT,YAAY;GACV,OAAO;GACP,QAAQ;EACV,EACF;EACA,aAAa;CACf,CAAC,GACGM,IACJJ,GAAgB,cAAc,OAAO,KAClC,OAA6C;EAC5C,IAAIK,EAAU;EACd,MAAMA,EAAU;CAClB,EACF,KAAK,CAAC,GACF,CAACC,GAAyB,EAAE,gBAAaC,EAA2B;EACxE,gBAAgB,CAAC,wBAAwB;EACzC,qBAAqB;CACvB,CAAC,GACK,EAAE,SAAMC,GAAQ,GAChBC,KAAM,GAAa,MAA6B;EACpD,IAAMC,IAAQC,EAAEC,CAAG;EACnB,OAAOF,MAAUE,IAAMC,IAAWH;CACpC;CAOA,AAJAI,QAAgB;EACd,AAAI3B,GAAyB,UAC3BD,EAAwBC,CAAuB;CACnD,GAAG,CAACA,CAAuB,CAAC,GAC5B2B,QAAgB;EACd,AAAI9B,GAAmB,UAAQF,EAAkBE,CAAiB;CACpE,GAAG,CAACA,CAAiB,CAAC;CAEtB,IAAM+B,IAAaC,QAAkB;EAOnC,AANAlC,EAAkBE,KAAqB,CAAC,CAAC,GACzCE,EAAwBC,KAA2B,CAAC,CAAC,GACrDE,EAAiB,EAAK,GACtBE,EAAmB,EAAE,GACrBE,EAAa,EAAE,GACfE,EAAS,IAAI,GACbE,EAAkB,IAAI;CACxB,GAAG,CAACb,GAAmBG,CAAuB,CAAC,GAEzC8B,IAAcD,QAAkB;EACpC,AAAIE,MACJH,EAAW,GACXI,EAAa,EAAK;CACpB,GAAG;EAACD;EAASC;EAAcJ;CAAU,CAAC;CAEtC,QAAgB;EACd,IAAI,CAACZ,GAAM;EAEX,EAAiB,UAAU,SAAS;EACpC,IAAMiB,IAAmB,SAAS,KAAK,MAAM;EAG7C,AAFA,SAAS,KAAK,MAAM,WAAW,UAE/B,OAAO,4BAA4B;GACjC,EAAU,SAAS,MAAM;EAC3B,CAAC;EAED,IAAMC,KAAa,MAAyB;GAC1C,AAAIC,EAAM,QAAQ,YAAY,CAACJ,MAC7BI,EAAM,eAAe,GACrBL,EAAY;EAEhB;EAIA,OAFA,SAAS,iBAAiB,WAAWI,CAAS,SAEjC;GAGX,AAFA,SAAS,KAAK,MAAM,WAAWD,GAC/B,SAAS,oBAAoB,WAAWC,CAAS,GACjDzC,EAAiB,SAAS,MAAM;EAClC;CACF,GAAG;EAACqC;EAAaC;EAASf;CAAI,CAAC;CAE/B,IAAMoB,KAAcP,GAAa,MAAkB;EACjD,GAAmB,MACjBQ,EAAK,SAAStD,CAAK,IAAIsD,EAAK,QAAQ,MAAMC,MAAMvD,CAAK,IAAI,CAAC,GAAGsD,GAAMtD,CAAK,CAC1E;CACF,GAAG,CAAC,CAAC,GAECwD,KAAkBV,GAAa,MAAiB;EAIpD,AAHA9B,GAAyB,MACvBsC,EAAK,SAASG,CAAI,IAAIH,EAAK,QAAQ,MAAOI,MAAOD,CAAI,IAAI,CAAC,GAAGH,GAAMG,CAAI,CACzE,GACAtC,EAAiB,EAAK;CACxB,GAAG,CAAC,CAAC,GAECwC,KAA4Bb,QAAkB;EAClD,GAAkB,OACXQ,KAAMtC,EAAwB,CAAC,CAAC,GAC9B,CAACsC,EACT;CACH,GAAG,CAAC,CAAC,GAECM,IAAqB1B,EAAW,QAAQ,MAC5C2B,EAAG,KAAK,YAAY,CAAC,CAAC,SAASzC,EAAgB,YAAY,CAAC,CAC9D,GAEM0C,KAAchE,GAAYiE,CAAS,GAEnCC,KAAclB,EAAY,YAAY;EAG1C,IAFArB,EAAS,IAAI,GAETd,EAAe,WAAW,GAAG;GAC/B,EACE4B,EACE,mCACA,4CACF,CACF;GACA;EACF;EAEA,IAAI0B;EACJ,IAAI3C,GAAW;GACb,IAAM4C,IAAO,IAAI,KAAK5C,CAAS;GAC/B,IAAI,OAAO,MAAM4C,EAAK,QAAQ,CAAC,GAAG;IAChC,EACE3B,EACE,mCACA,0DACF,CACF;IACA;GACF;GACA,IAAI2B,qBAAQ,IAAI,KAAK,GAAG;IACtB,EACE3B,EACE,kCACA,wCACF,CACF;IACA;GACF;GACA,IAAkB2B,EAAK,YAAY;EACrC;EAEA,IAAI;GACF,IAAMC,IAAS,MAAM/B,EAAwB,EAC3C,WAAW,EACT,OAAO;IACL;IACA,QAAQzB;IACR,cACE,CAACO,KAAiBH,EAAqB,SAAS,IAC5CA,IACA,KAAA;IACN,WAAWkD;GACb,EACF,EACF,CAAC;GAED,IAAIE,EAAO,OAAO;IAChB,EACEA,EAAO,MAAM,WACX5B,EACE,qCACA,6BACF,CACJ;IACA;GACF;GAEA,IAAM6B,IAAaD,EAAO,MAAM;GAChC,IAAI,CAACC,GAAY;IACf,EACE7B,EACE,qCACA,6BACF,CACF;IACA;GACF;GAEA,IAAM8B,IAAUnD,IACZ,mBACAH,EAAqB,SAAS,IAC5B,GAAGA,EAAqB,OAAO,YAAYA,EAAqB,WAAW,IAAU,KAAN,QAC/E;GAIN,AAHAY,EACE,0BAA0B2C,EAAQ,SAAS3D,EAAe,OAAO,QAAQA,EAAe,WAAW,IAAU,KAAN,IAAS,OAAO0D,EAAQ,EACjI,GACAE,IAAYH,CAAU;EACxB,SAASI,GAAK;GACZ,EACEA,aAAe,QACXA,EAAI,UACJjC,EACE,qCACA,6BACF,CACN;EACF;CACF,GAAG;EACD5B;EACAI;EACAG;EACAI;EACAmD;EACAH;EACAlC;EACAmC;CACF,CAAC;CAID,OAFKtC,IAGH,kBAAC,OAAD;EAAK,WAAU;EAAf,UAAA,CAEE,kBAAC,UAAD;GACE,MAAK;GACL,cAAW;GACX,WAAU;GACV,SAASc;EACV,CAAA,GAGD,kBAAC,OAAD;GACE,KAAKvC;GACL,MAAK;GACL,cAAW;GACX,mBAAiBH;GACjB,oBAAkBE;GAClB,UAAU;GACV,WAAU;GAPZ,UAAA;IAUE,kBAAC,OAAD;KAAK,WAAU;KAAf,UAAA;MACE,kBAAC,OAAD;OAAK,WAAU;OACb,UAAA,kBAACmE,GAAD,EAAQ,WAAU,mCAAoC,CAAA;MACnD,CAAA;MACL,kBAAC,OAAD;OAAK,WAAU;OAAf,UAAA,CACE,kBAAC,MAAD;QAAI,IAAIrE;QAAS,WAAU;QAAwB,UAAA;OAE/C,CAAA,GACJ,kBAAC,KAAD;QAAG,IAAIE;QAAe,WAAU;QAAhC,UAAA;SAAmE;SAC3D;SACN,kBAAC,QAAD;UAAM,WAAU;UAAiC,UAAA+D;SAAc,CAAA;SAAE;SAAI;QAEpE;OACA,CAAA,CAAA;;MACL,kBAAC,UAAD;OACE,MAAK;OACL,SAASvB;OACT,UAAUC;OACV,WAAU;OAEV,UAAA,kBAAC2B,GAAD,EAAG,WAAU,UAAW,CAAA;MAClB,CAAA;KACL;;IAGL,kBAAC,OAAD;KAAK,WAAU;KAAf,UAAA,CAEGjD,KACC,kBAAC,OAAD;MAAK,WAAU;MAAf,UAAA,CACE,kBAACkD,GAAD,EAAa,WAAU,4CAA6C,CAAA,GACpE,kBAAC,OAAD;OAAK,WAAU;OAAf,UAAA,CACE,kBAAC,KAAD;QAAG,WAAU;QACV,UAAAlD;OACA,CAAA,GACH,kBAAC,UAAD;QACE,MAAK;QACL,SAASqB;QACT,WAAU;QAET,UAAAR,EAAG,mBAAmB,OAAO;OACxB,CAAA,CACL;MACF,CAAA,CAAA;KAIN,CAAA,GAAA,CAACb,KACA,kBAAA7B,GAAA,EAAA,UAAA;MAEE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;OAAO,WAAU;OAAjB,UAAA,CACG0C,EAAG,+BAA+B,sBAAsB,GACzD,kBAAC,QAAD;QAAM,WAAU;QAAhB,UAAA;SACG5B,EAAe;SAAO;SAAE4B,EAAG,gBAAgB,IAAI;SAAG;SAClDwB,EAAU;SAAO;SAAExB,EAAG,sBAAsB,UAAU;QACnD;OACD,CAAA,CAAA;MACN,CAAA,GAAAwB,EAAU,WAAW,IACpB,kBAAC,KAAD;OAAG,WAAU;OAA8B,UAAA;MAExC,CAAA,IAEH,kBAAC,OAAD;OAAK,WAAU;OAAf,UAAA,CAEE,kBAAC,OAAD;QAAK,WAAU;QAAf,UAAA;SACE,kBAAC,UAAD;UACE,MAAK;UACL,eAAenD,EAAkB,CAAC,GAAGmD,CAAS,CAAC;UAC/C,WAAU;UAET,UAAAxB,EAAG,uBAAuB,YAAY;SACjC,CAAA;SACR,kBAAC,UAAD;UACE,MAAK;UACL,eACE3B,EACEmD,EAAU,QACP,MAAMR,EAAE,SAAS,OAAO,KAAKA,EAAE,SAAS,OAAO,CAClD,CACF;UAEF,WAAU;UAET,UAAAhB,EAAG,sBAAsB,WAAW;SAC/B,CAAA;SACR,kBAAC,UAAD;UACE,MAAK;UACL,eAAe3B,EAAkB,CAAC,CAAC;UACnC,WAAU;UAET,UAAA2B,EAAG,mBAAmB,OAAO;SACxB,CAAA;QACL;OAEJ,CAAA,GAAA,CAAC,GAAGuB,GAAY,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC3D,GAAOF,OACvC,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;QAAG,WAAU;QACV,UAAAE;OACA,CAAA,GACH,kBAAC,OAAD;QAAK,WAAU;QACZ,UAAAF,EAAO,KAAK,MAAU;SACrB,IAAM6E,IAAanE,EAAe,SAASX,CAAK,GAC1C+E,IAAS/E,EAAM,MAAM,GAAG,CAAC,CAAC,MAAMA,GAChCgF,IACJD,EAAO,SAAS,OAAO,KACvBA,EAAO,SAAS,QAAQ,KACxBA,EAAO,SAAS,QAAQ,KACxBA,EAAO,SAAS,OAAO;SACzB,OACE,kBAAC,UAAD;UAEE,MAAK;UACL,eAAe1B,GAAYrD,CAAK;UAChC,WAAWiF,EACT,gEACAH,IACIE,IACE,oCACA,oCACF,+DACN;UAEC,UAAAD;SACK,GAbD/E,CAaC;QAEZ,CAAC;OACE,CAAA,CACF,EAAA,GAhCKG,CAgCL,CACN,CACE;MAEJ,CAAA,CAAA,EAAA,CAAA;MAGL,kBAAC,OAAD,EAAA,UAAA;OACE,kBAAC,SAAD;QAAO,WAAU;QACd,UAAAoC,EAAG,6BAA6B,kBAAkB;OAC9C,CAAA;OAGP,kBAAC,UAAD;QACE,MAAK;QACL,SAASoB;QACT,UAAUX;QACV,WAAWiC,EACT,6FACA/D,IACI,kFACA,oBACN;QATF,UAAA,CAWGA,KACC,kBAACgE,GAAD,EAAO,WAAU,mCAAoC,CAAA,GAEvD,kBAAC,QAAD,EAAA,UACG3C,EACC,uCACA,+BACF,EACI,CAAA,CACA;;OAEP,CAACrB,KACA,kBAAArB,GAAA,EAAA,UAAA;QAEE,kBAAC,OAAD;SAAK,WAAU;SAAf,UAAA,CACE,kBAACsF,IAAD,EAAQ,WAAU,uEAAwE,CAAA,GAC1F,kBAAC,SAAD;UACE,MAAK;UACL,OAAO/D;UACP,WAAW,MAAMC,EAAmB,EAAE,OAAO,KAAK;UAClD,aAAakB,EACX,8BACA,sBACF;UACA,UAAUS;UACV,WAAU;SACX,CAAA,CACE;;QAGL,kBAAC,OAAD;SAAK,WAAU;SACZ,UAAAjB,IACC,kBAAC,OAAD;UAAK,WAAU;UAAf,UAAA,CACE,kBAACqD,GAAD,EAAS,WAAU,2CAA4C,CAAA,GAC/D,kBAAC,QAAD;WAAM,WAAU;WACb,UAAA7C,EACC,+BACA,uBACF;UACI,CAAA,CACH;SACH,CAAA,IAAAqB,EAAmB,WAAW,IAChC,kBAAC,KAAD;UAAG,WAAU;UACV,UAAA1B,EAAW,WAAW,IACnBK,EACE,+BACA,qBACF,IACAA,EACE,kCACA,wBACF;SACH,CAAA,IAEHqB,EAAmB,KAAK,MAAO;UAC7B,IAAMkB,IAAa/D,EAAqB,SACtC8C,EAAG,EACL;UACA,OACE,kBAAC,UAAD;WAEE,MAAK;WACL,eAAeL,GAAgBK,EAAG,EAAE;WACpC,UAAUb;WACV,WAAWiC,EACT,yGACAH,IACI,yDACA,oBACN;WAVF,UAAA,CAYE,kBAAC,OAAD;YACE,WAAWG,EACT,oEACAH,IACI,kDACA,4BACN;YAEC,UAAAA,KACC,kBAACI,GAAD,EAAO,WAAU,qBAAsB,CAAA;WAEtC,CAAA,GACL,kBAAC,QAAD;YAAM,WAAU;YAAe,UAAArB,EAAG;WAAW,CAAA,CACvC;UAxBD,GAAAA,EAAG,EAwBF;SAEZ,CAAC;QAEA,CAAA;QAGJ9C,EAAqB,SAAS,KAC7B,kBAAC,KAAD;SAAG,WAAU;SAAb,UAAA;UACGA,EAAqB;UAAO;UAC5BA,EAAqB,WAAW,IAAU,KAAN;UAAS;SAC7C;;OAEL,EAAA,CAAA;MAED,EAAA,CAAA;MAGL,kBAAC,OAAD,EAAA,UAAA;OACE,kBAAC,SAAD;QAAO,WAAU;QAAjB,UAAA,CACGwB,EAAG,wBAAwB,YAAY,GACxC,kBAAC,QAAD;SAAM,WAAU;SACb,UAAAA,EAAG,sBAAsB,YAAY;QAClC,CAAA,CACD;;OACP,kBAAC,SAAD;QACE,MAAK;QACL,OAAOjB;QACP,WAAW,MAAMC,EAAa,EAAE,OAAO,KAAK;QAC5C,UAAUyB;QACV,sBAAK,IAAI,KAAK,EAAA,CAAE,YAAY,CAAC,CAAC,MAAM,GAAG,EAAE;QACzC,WAAU;OACX,CAAA;OACD,kBAAC,KAAD;QAAG,WAAU;QACV,UAAAT,EACC,sCACA,oDACF;OACC,CAAA;MACA,EAAA,CAAA;MAGJf,KACC,kBAAC,OAAD;OAAK,WAAU;OAAf,UAAA,CACE,kBAAC6D,GAAD,EAAa,WAAU,0CAA2C,CAAA,GAClE,kBAAC,KAAD;QAAG,WAAU;QAAkC,UAAA7D;OAAS,CAAA,CACrD;;KAEP,EAAA,CAAA,CAED;;IAGJ,CAACE,KACA,kBAAC,OAAD;KAAK,WAAU;KAAf,UAAA,CACE,kBAAC,UAAD;MACE,MAAK;MACL,SAASqB;MACT,UAAUC;MACV,WAAU;MAET,UAAAT,EAAG,oBAAoB,QAAQ;KAC1B,CAAA,GACR,kBAAC,UAAD;MACE,MAAK;MACL,SAASyB;MACT,UAAUhB,KAAWrC,EAAe,WAAW;MAC/C,WAAWsE,EACT,iJACA,oDACF;MAEC,UAAAjC,IACC,kBAAAnD,GAAA,EAAA,UAAA,CACE,kBAACuF,GAAD,EAAS,WAAU,uBAAwB,CAAA,GAC1C7C,EAAG,sBAAsB,aAAa,CACvC,EAAA,CAAA,IAEFA,EAAG,mBAAmB,OAAO;KAEzB,CAAA,CACL;;GAEJ;EACF,CAAA,CAAA;C,KAtVW;AAwVpB"}
@@ -1,5 +1,4 @@
1
1
  import { FC } from 'react';
2
-
3
2
  interface ImageUploadFieldProps {
4
3
  label: string;
5
4
  value: string;
@@ -27,4 +26,3 @@ interface ScreenshotGalleryProps {
27
26
  }
28
27
  export declare const ScreenshotGallery: FC<ScreenshotGalleryProps>;
29
28
  export {};
30
- //# sourceMappingURL=ImageUploadField.d.ts.map
@@ -2,7 +2,7 @@ import { cn as e } from "../utils/cn.js";
2
2
  import { useCallback as t, useRef as n, useState as r } from "react";
3
3
  import { Loader2 as i, Upload as a, X as o } from "lucide-react";
4
4
  import { Fragment as s, jsx as c, jsxs as l } from "react/jsx-runtime";
5
- //#region src/devportal/components/ImageUploadField.tsx
5
+ // src/devportal/components/ImageUploadField.tsx
6
6
  var u = ({ label: o, value: s, onChange: u, hint: d, accept: f = "image/png,image/jpeg,image/webp,image/gif,image/svg+xml", aspectClass: p = "aspect-square", upload: m, uploading: h, progress: g, error: _ }) => {
7
7
  let v = n(null), [y, b] = r(!1), x = n(s);
8
8
  x.current !== s && (x.current = s, y && b(!1));
@@ -176,7 +176,6 @@ var u = ({ label: o, value: s, onChange: u, hint: d, accept: f = "image/png,imag
176
176
  ]
177
177
  });
178
178
  };
179
- //#endregion
180
179
  export { u as ImageUploadField, d as ScreenshotGallery };
181
180
 
182
181
  //# sourceMappingURL=ImageUploadField.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ImageUploadField.js","names":[],"sources":["../../../src/devportal/components/ImageUploadField.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport { useCallback, useRef, useState } from \"react\";\nimport { Loader2, Upload, X } from \"lucide-react\";\nimport { cn } from \"../utils/cn\";\n\n// =============================================================================\n// IMAGE UPLOAD COMPONENTS\n//\n// Shared by the devportal App pages (Store Listing tab) and the physical\n// item create/edit pages — a single icon/banner upload field plus a\n// screenshot gallery, both backed by usePackageUpload's\n// upload(file) => Promise<{ downloadUrl }> shape.\n// =============================================================================\n\ninterface ImageUploadFieldProps {\n label: string;\n value: string;\n onChange: (url: string) => void;\n hint?: string;\n accept?: string;\n aspectClass?: string; // tailwind class for the preview container ratio\n upload: (file: File) => Promise<{ downloadUrl: string }>;\n uploading: boolean;\n progress: number;\n error: string | null;\n}\n\nexport const ImageUploadField: FC<ImageUploadFieldProps> = ({\n label,\n value,\n onChange,\n hint,\n accept = \"image/png,image/jpeg,image/webp,image/gif,image/svg+xml\",\n aspectClass = \"aspect-square\",\n upload,\n uploading,\n progress,\n error,\n}) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const [imgBroken, setImgBroken] = useState(false);\n const prevValue = useRef(value);\n if (prevValue.current !== value) {\n prevValue.current = value;\n if (imgBroken) setImgBroken(false);\n }\n\n const handleFile = useCallback(\n async (file: File) => {\n try {\n const result = await upload(file);\n onChange(result.downloadUrl);\n } catch {\n // error shown via error prop\n }\n },\n [upload, onChange],\n );\n\n return (\n <div className=\"space-y-1.5\">\n <label className=\"text-sm font-medium\">{label}</label>\n <div className=\"flex gap-3 items-start\">\n {/* Preview */}\n <div\n className={cn(\n \"relative shrink-0 w-20 rounded-lg border border-border-subtle bg-bg-sunken overflow-hidden flex items-center justify-center\",\n aspectClass,\n )}\n >\n {value && !imgBroken ? (\n <img\n src={value}\n alt={label}\n className=\"w-full h-full object-cover\"\n onError={() => setImgBroken(true)}\n />\n ) : (\n <Upload size={18} className=\"text-text-secondary opacity-40\" />\n )}\n {uploading && (\n <div className=\"absolute inset-0 bg-bg-overlay flex flex-col items-center justify-center gap-1\">\n <Loader2 size={14} className=\"animate-spin text-white\" />\n <span className=\"text-white text-xs\">{progress}%</span>\n </div>\n )}\n </div>\n {/* URL input + upload button */}\n <div className=\"flex-1 space-y-1.5\">\n <input\n type=\"url\"\n value={value}\n onChange={(e) => onChange(e.target.value)}\n placeholder=\"https://...\"\n className=\"w-full rounded-md border border-border-subtle bg-bg-input px-3 py-1.5 text-sm placeholder:text-text-placeholder focus:outline-none focus:ring-2 focus:ring-primary/30\"\n />\n <input\n ref={inputRef}\n type=\"file\"\n accept={accept}\n className=\"hidden\"\n onChange={(e) => {\n const f = e.target.files?.[0];\n if (f) void handleFile(f);\n e.target.value = \"\";\n }}\n />\n <button\n type=\"button\"\n disabled={uploading}\n onClick={() => inputRef.current?.click()}\n className=\"inline-flex items-center gap-1.5 rounded-md border px-2.5 py-1 text-xs font-medium hover:bg-bg-sunken transition-colors disabled:opacity-50\"\n >\n <Upload size={11} />\n {uploading ? `Uploading… ${progress}%` : \"Upload image\"}\n </button>\n {error && <p className=\"text-xs text-status-error-text\">{error}</p>}\n </div>\n </div>\n {hint && <p className=\"text-xs text-text-secondary\">{hint}</p>}\n </div>\n );\n};\n\ninterface ScreenshotGalleryProps {\n urls: string[];\n onChange: (urls: string[]) => void;\n upload: (file: File) => Promise<{ downloadUrl: string }>;\n uploading: boolean;\n progress: number;\n error: string | null;\n}\n\nexport const ScreenshotGallery: FC<ScreenshotGalleryProps> = ({\n urls,\n onChange,\n upload,\n uploading,\n progress,\n error,\n}) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const [urlInput, setUrlInput] = useState(\"\");\n\n const handleFile = useCallback(\n async (file: File) => {\n try {\n const result = await upload(file);\n onChange([...urls, result.downloadUrl]);\n } catch {\n // error shown via error prop\n }\n },\n [upload, onChange, urls],\n );\n\n const addUrl = () => {\n const trimmed = urlInput.trim();\n if (trimmed && !urls.includes(trimmed)) {\n onChange([...urls, trimmed]);\n setUrlInput(\"\");\n }\n };\n\n const remove = (idx: number) => {\n onChange(urls.filter((_, i) => i !== idx));\n };\n\n return (\n <div className=\"space-y-2\">\n <div className=\"flex flex-col gap-0.5\">\n <label className=\"text-sm font-medium\">Screenshots</label>\n <p className=\"text-xs text-text-muted\">\n Shown in the horizontal preview strip below the hero — wide landscape\n proportions work best (16:9)\n </p>\n </div>\n <div className=\"flex flex-wrap gap-3\">\n {urls.map((url, idx) => (\n <div\n key={idx}\n className=\"relative group w-36 aspect-video rounded-lg border border-border-subtle overflow-hidden bg-bg-sunken\"\n >\n <img\n src={url}\n alt={`Screenshot ${idx + 1}`}\n className=\"w-full h-full object-cover\"\n />\n <button\n type=\"button\"\n onClick={() => remove(idx)}\n className=\"absolute top-1 right-1 rounded-full bg-bg-overlay text-white p-0.5 opacity-0 group-hover:opacity-100 transition-opacity\"\n >\n <X size={12} />\n </button>\n </div>\n ))}\n {/* Upload slot */}\n <button\n type=\"button\"\n disabled={uploading}\n onClick={() => inputRef.current?.click()}\n className={cn(\n \"w-36 aspect-video rounded-lg border-2 border-dashed border-border-subtle flex flex-col items-center justify-center gap-1.5 text-text-secondary hover:border-border-strong hover:bg-bg-sunken transition-colors disabled:opacity-50\",\n )}\n >\n {uploading ? (\n <>\n <Loader2 size={18} className=\"animate-spin text-primary\" />\n <span className=\"text-xs\">{progress}%</span>\n </>\n ) : (\n <>\n <Upload size={18} />\n <span className=\"text-xs\">Add screenshot</span>\n </>\n )}\n </button>\n </div>\n {/* URL paste row */}\n <div className=\"flex gap-2\">\n <input\n type=\"url\"\n value={urlInput}\n onChange={(e) => setUrlInput(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n addUrl();\n }\n }}\n placeholder=\"https://... paste a screenshot URL\"\n className=\"flex-1 rounded-md border border-border-subtle bg-bg-input px-3 py-1.5 text-sm placeholder:text-text-placeholder focus:outline-none focus:ring-2 focus:ring-primary/30\"\n />\n <button\n type=\"button\"\n onClick={addUrl}\n disabled={!urlInput.trim()}\n className=\"inline-flex items-center gap-1.5 rounded-md border px-2.5 py-1.5 text-xs font-medium hover:bg-bg-sunken transition-colors disabled:opacity-50\"\n >\n Add\n </button>\n </div>\n <input\n ref={inputRef}\n type=\"file\"\n accept=\"image/png,image/jpeg,image/webp,image/gif\"\n className=\"hidden\"\n onChange={(e) => {\n const f = e.target.files?.[0];\n if (f) void handleFile(f);\n e.target.value = \"\";\n }}\n />\n {error && <p className=\"text-xs text-status-error-text\">{error}</p>}\n </div>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"ImageUploadField.js","names":["_Fragment","ImageUploadField","inputRef","useRef","imgBroken","setImgBroken","useState","prevValue","value","handleFile","useCallback","upload","file","onChange","label","cn","aspectClass","Upload","uploading","Loader2","progress","f","error","hint","ScreenshotGallery","urlInput","setUrlInput","result","urls","addUrl","trimmed","remove","i","idx","url","X","Fragment"],"sources":["../../../src/devportal/components/ImageUploadField.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport { useCallback, useRef, useState } from \"react\";\nimport { Loader2, Upload, X } from \"lucide-react\";\nimport { cn } from \"../utils/cn\";\n\n// =============================================================================\n// IMAGE UPLOAD COMPONENTS\n//\n// Shared by the devportal App pages (Store Listing tab) and the physical\n// item create/edit pages — a single icon/banner upload field plus a\n// screenshot gallery, both backed by usePackageUpload's\n// upload(file) => Promise<{ downloadUrl }> shape.\n// =============================================================================\n\ninterface ImageUploadFieldProps {\n label: string;\n value: string;\n onChange: (url: string) => void;\n hint?: string;\n accept?: string;\n aspectClass?: string; // tailwind class for the preview container ratio\n upload: (file: File) => Promise<{ downloadUrl: string }>;\n uploading: boolean;\n progress: number;\n error: string | null;\n}\n\nexport const ImageUploadField: FC<ImageUploadFieldProps> = ({\n label,\n value,\n onChange,\n hint,\n accept = \"image/png,image/jpeg,image/webp,image/gif,image/svg+xml\",\n aspectClass = \"aspect-square\",\n upload,\n uploading,\n progress,\n error,\n}) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const [imgBroken, setImgBroken] = useState(false);\n const prevValue = useRef(value);\n if (prevValue.current !== value) {\n prevValue.current = value;\n if (imgBroken) setImgBroken(false);\n }\n\n const handleFile = useCallback(\n async (file: File) => {\n try {\n const result = await upload(file);\n onChange(result.downloadUrl);\n } catch {\n // error shown via error prop\n }\n },\n [upload, onChange],\n );\n\n return (\n <div className=\"space-y-1.5\">\n <label className=\"text-sm font-medium\">{label}</label>\n <div className=\"flex gap-3 items-start\">\n {/* Preview */}\n <div\n className={cn(\n \"relative shrink-0 w-20 rounded-lg border border-border-subtle bg-bg-sunken overflow-hidden flex items-center justify-center\",\n aspectClass,\n )}\n >\n {value && !imgBroken ? (\n <img\n src={value}\n alt={label}\n className=\"w-full h-full object-cover\"\n onError={() => setImgBroken(true)}\n />\n ) : (\n <Upload size={18} className=\"text-text-secondary opacity-40\" />\n )}\n {uploading && (\n <div className=\"absolute inset-0 bg-bg-overlay flex flex-col items-center justify-center gap-1\">\n <Loader2 size={14} className=\"animate-spin text-white\" />\n <span className=\"text-white text-xs\">{progress}%</span>\n </div>\n )}\n </div>\n {/* URL input + upload button */}\n <div className=\"flex-1 space-y-1.5\">\n <input\n type=\"url\"\n value={value}\n onChange={(e) => onChange(e.target.value)}\n placeholder=\"https://...\"\n className=\"w-full rounded-md border border-border-subtle bg-bg-input px-3 py-1.5 text-sm placeholder:text-text-placeholder focus:outline-none focus:ring-2 focus:ring-primary/30\"\n />\n <input\n ref={inputRef}\n type=\"file\"\n accept={accept}\n className=\"hidden\"\n onChange={(e) => {\n const f = e.target.files?.[0];\n if (f) void handleFile(f);\n e.target.value = \"\";\n }}\n />\n <button\n type=\"button\"\n disabled={uploading}\n onClick={() => inputRef.current?.click()}\n className=\"inline-flex items-center gap-1.5 rounded-md border px-2.5 py-1 text-xs font-medium hover:bg-bg-sunken transition-colors disabled:opacity-50\"\n >\n <Upload size={11} />\n {uploading ? `Uploading… ${progress}%` : \"Upload image\"}\n </button>\n {error && <p className=\"text-xs text-status-error-text\">{error}</p>}\n </div>\n </div>\n {hint && <p className=\"text-xs text-text-secondary\">{hint}</p>}\n </div>\n );\n};\n\ninterface ScreenshotGalleryProps {\n urls: string[];\n onChange: (urls: string[]) => void;\n upload: (file: File) => Promise<{ downloadUrl: string }>;\n uploading: boolean;\n progress: number;\n error: string | null;\n}\n\nexport const ScreenshotGallery: FC<ScreenshotGalleryProps> = ({\n urls,\n onChange,\n upload,\n uploading,\n progress,\n error,\n}) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const [urlInput, setUrlInput] = useState(\"\");\n\n const handleFile = useCallback(\n async (file: File) => {\n try {\n const result = await upload(file);\n onChange([...urls, result.downloadUrl]);\n } catch {\n // error shown via error prop\n }\n },\n [upload, onChange, urls],\n );\n\n const addUrl = () => {\n const trimmed = urlInput.trim();\n if (trimmed && !urls.includes(trimmed)) {\n onChange([...urls, trimmed]);\n setUrlInput(\"\");\n }\n };\n\n const remove = (idx: number) => {\n onChange(urls.filter((_, i) => i !== idx));\n };\n\n return (\n <div className=\"space-y-2\">\n <div className=\"flex flex-col gap-0.5\">\n <label className=\"text-sm font-medium\">Screenshots</label>\n <p className=\"text-xs text-text-muted\">\n Shown in the horizontal preview strip below the hero — wide landscape\n proportions work best (16:9)\n </p>\n </div>\n <div className=\"flex flex-wrap gap-3\">\n {urls.map((url, idx) => (\n <div\n key={idx}\n className=\"relative group w-36 aspect-video rounded-lg border border-border-subtle overflow-hidden bg-bg-sunken\"\n >\n <img\n src={url}\n alt={`Screenshot ${idx + 1}`}\n className=\"w-full h-full object-cover\"\n />\n <button\n type=\"button\"\n onClick={() => remove(idx)}\n className=\"absolute top-1 right-1 rounded-full bg-bg-overlay text-white p-0.5 opacity-0 group-hover:opacity-100 transition-opacity\"\n >\n <X size={12} />\n </button>\n </div>\n ))}\n {/* Upload slot */}\n <button\n type=\"button\"\n disabled={uploading}\n onClick={() => inputRef.current?.click()}\n className={cn(\n \"w-36 aspect-video rounded-lg border-2 border-dashed border-border-subtle flex flex-col items-center justify-center gap-1.5 text-text-secondary hover:border-border-strong hover:bg-bg-sunken transition-colors disabled:opacity-50\",\n )}\n >\n {uploading ? (\n <>\n <Loader2 size={18} className=\"animate-spin text-primary\" />\n <span className=\"text-xs\">{progress}%</span>\n </>\n ) : (\n <>\n <Upload size={18} />\n <span className=\"text-xs\">Add screenshot</span>\n </>\n )}\n </button>\n </div>\n {/* URL paste row */}\n <div className=\"flex gap-2\">\n <input\n type=\"url\"\n value={urlInput}\n onChange={(e) => setUrlInput(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n addUrl();\n }\n }}\n placeholder=\"https://... paste a screenshot URL\"\n className=\"flex-1 rounded-md border border-border-subtle bg-bg-input px-3 py-1.5 text-sm placeholder:text-text-placeholder focus:outline-none focus:ring-2 focus:ring-primary/30\"\n />\n <button\n type=\"button\"\n onClick={addUrl}\n disabled={!urlInput.trim()}\n className=\"inline-flex items-center gap-1.5 rounded-md border px-2.5 py-1.5 text-xs font-medium hover:bg-bg-sunken transition-colors disabled:opacity-50\"\n >\n Add\n </button>\n </div>\n <input\n ref={inputRef}\n type=\"file\"\n accept=\"image/png,image/jpeg,image/webp,image/gif\"\n className=\"hidden\"\n onChange={(e) => {\n const f = e.target.files?.[0];\n if (f) void handleFile(f);\n e.target.value = \"\";\n }}\n />\n {error && <p className=\"text-xs text-status-error-text\">{error}</p>}\n </div>\n );\n};\n"],"mappings":";;;;;AA2BA,IAAaC,KAA+C,EAC1D,UACA,UACA,aACA,SACA,YAAS,2DACT,iBAAc,iBACd,WACA,cACA,aACA,eACI;CACJ,IAAMC,IAAWC,EAAyB,IAAI,GACxC,CAACC,GAAWC,KAAgBC,EAAS,EAAK,GAC1CC,IAAYJ,EAAOK,CAAK;CAC9B,AAAID,EAAU,YAAYC,MACxB,EAAU,UAAUA,GAChBJ,KAAWC,EAAa,EAAK;CAGnC,IAAMI,IAAaC,EACjB,OAAO,MAAe;EACpB,IAAI;GAEF,GAAS,MADYC,EAAOC,CAAI,EAAA,CAChB,WAAW;EAC7B,QAAQ,CAER;CACF,GACA,CAACD,GAAQE,CAAQ,CACnB;CAEA,OACE,kBAAC,OAAD;EAAK,WAAU;EAAf,UAAA;GACE,kBAAC,SAAD;IAAO,WAAU;IAAuB,UAAAC;GAAa,CAAA;GACrD,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CAEE,kBAAC,OAAD;KACE,WAAWC,EACT,+HACAC,CACF;KAJF,UAAA,CAMGR,KAAS,CAACJ,IACT,kBAAC,OAAD;MACE,KAAKI;MACL,KAAKM;MACL,WAAU;MACV,eAAeT,EAAa,EAAI;KACjC,CAAA,IAED,kBAACY,GAAD;MAAQ,MAAM;MAAI,WAAU;KAAkC,CAAA,GAE/DC,KACC,kBAAC,OAAD;MAAK,WAAU;MAAf,UAAA,CACE,kBAACC,GAAD;OAAS,MAAM;OAAI,WAAU;MAA2B,CAAA,GACxD,kBAAC,QAAD;OAAM,WAAU;OAAhB,UAAA,CAAsCC,GAAS,GAAO;MACnD,CAAA,CAAA;KAEJ,CAAA,CAAA;IAEL,CAAA,GAAA,kBAAC,OAAD;KAAK,WAAU;KAAf,UAAA;MACE,kBAAC,SAAD;OACE,MAAK;OACE;OACP,WAAW,MAAMP,EAAS,EAAE,OAAO,KAAK;OACxC,aAAY;OACZ,WAAU;MACX,CAAA;MACD,kBAAC,SAAD;OACE,KAAKX;OACL,MAAK;OACG;OACR,WAAU;OACV,WAAW,MAAM;QACf,IAAMmB,IAAI,EAAE,OAAO,QAAQ;QAE3B,AADIA,KAAGZ,EAAgBY,CAAC,GACxB,EAAE,OAAO,QAAQ;OACnB;MACD,CAAA;MACD,kBAAC,UAAD;OACE,MAAK;OACL,UAAUH;OACV,eAAehB,EAAS,SAAS,MAAM;OACvC,WAAU;OAJZ,UAAA,CAME,kBAACe,GAAD,EAAQ,MAAM,GAAK,CAAA,GAClBC,IAAY,cAAcE,EAAS,KAAK,cACnC;;MACPE,KAAS,kBAAC,KAAD;OAAG,WAAU;OAAkC,UAAAA;MAAS,CAAA;KAC/D;IACF,CAAA,CAAA;;GACJC,KAAQ,kBAAC,KAAD;IAAG,WAAU;IAA+B,UAAAA;GAAQ,CAAA;EAC1D;;AAET,GAWaC,KAAiD,EAC5D,SACA,aACA,WACA,cACA,aACA,eACI;CACJ,IAAMtB,IAAWC,EAAyB,IAAI,GACxC,CAACsB,GAAUC,KAAepB,EAAS,EAAE,GAErCG,IAAaC,EACjB,OAAO,MAAe;EACpB,IAAI;GACF,IAAMiB,IAAS,MAAMhB,EAAOC,CAAI;GAChC,EAAS,CAAC,GAAGgB,GAAMD,EAAO,WAAW,CAAC;EACxC,QAAQ,CAER;CACF,GACA;EAAChB;EAAQE;EAAUe;CAAI,CACzB,GAEMC,UAAe;EACnB,IAAMC,IAAUL,EAAS,KAAK;EAC9B,AAAIK,KAAW,CAACF,EAAK,SAASE,CAAO,MACnCjB,EAAS,CAAC,GAAGe,GAAME,CAAO,CAAC,GAC3BJ,EAAY,EAAE;CAElB,GAEMK,KAAU,MAAgB;EAC9B,EAASH,EAAK,QAAQ,GAAG,MAAMI,MAAMC,CAAG,CAAC;CAC3C;CAEA,OACE,kBAAC,OAAD;EAAK,WAAU;EAAf,UAAA;GACE,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACE,kBAAC,SAAD;KAAO,WAAU;KAAsB,UAAA;IAAkB,CAAA,GACzD,kBAAC,KAAD;KAAG,WAAU;KAA0B,UAAA;IAGpC,CAAA,CACA;;GACL,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACGL,EAAK,KAAK,GAAK,MACd,kBAAC,OAAD;KAEE,WAAU;KAFZ,UAAA,CAIE,kBAAC,OAAD;MACE,KAAKM;MACL,KAAK,cAAcD,IAAM;MACzB,WAAU;KACX,CAAA,GACD,kBAAC,UAAD;MACE,MAAK;MACL,eAAeF,EAAOE,CAAG;MACzB,WAAU;MAEV,UAAA,kBAACE,GAAD,EAAG,MAAM,GAAK,CAAA;KACR,CAAA,CACL;IAfE,GAAAF,CAeF,CACN,GAED,kBAAC,UAAD;KACE,MAAK;KACL,UAAUf;KACV,eAAehB,EAAS,SAAS,MAAM;KACvC,WAAWa,EACT,oOACF;KAEC,UAAAG,IACC,kBAAAlB,GAAA,EAAA,UAAA,CACE,kBAACmB,GAAD;MAAS,MAAM;MAAI,WAAU;KAA6B,CAAA,GAC1D,kBAAC,QAAD;MAAM,WAAU;MAAhB,UAAA,CAA2BC,GAAS,GAAO;KAC3C,CAAA,CAAA,EAAA,CAAA,IAEF,kBAAApB,GAAA,EAAA,UAAA,CACE,kBAACiB,GAAD,EAAQ,MAAM,GAAK,CAAA,GACnB,kBAAC,QAAD;MAAM,WAAU;MAAU,UAAA;KAAoB,CAAA,CAC9C,EAAA,CAAA;IAEE,CAAA,CACL;;GAEL,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACE,kBAAC,SAAD;KACE,MAAK;KACL,OAAOQ;KACP,WAAW,MAAMC,EAAY,EAAE,OAAO,KAAK;KAC3C,YAAY,MAAM;MAChB,AAAI,EAAE,QAAQ,YACZ,EAAE,eAAe,GACjBG,EAAO;KAEX;KACA,aAAY;KACZ,WAAU;IACX,CAAA,GACD,kBAAC,UAAD;KACE,MAAK;KACL,SAASA;KACT,UAAU,CAACJ,EAAS,KAAK;KACzB,WAAU;KACX,UAAA;IAEO,CAAA,CACL;;GACL,kBAAC,SAAD;IACE,KAAKvB;IACL,MAAK;IACL,QAAO;IACP,WAAU;IACV,WAAW,MAAM;KACf,IAAMmB,IAAI,EAAE,OAAO,QAAQ;KAE3B,AADIA,KAAGZ,EAAgBY,CAAC,GACxB,EAAE,OAAO,QAAQ;IACnB;GACD,CAAA;GACAC,KAAS,kBAAC,KAAD;IAAG,WAAU;IAAkC,UAAAA;GAAS,CAAA;EAC/D;;AAET"}
@@ -1,5 +1,4 @@
1
1
  import { FC } from 'react';
2
-
3
2
  interface LoadingStateProps {
4
3
  message?: string;
5
4
  className?: string;
@@ -28,4 +27,3 @@ export declare const TableRowSkeleton: FC<{
28
27
  columns?: number;
29
28
  }>;
30
29
  export {};
31
- //# sourceMappingURL=LoadingState.d.ts.map
@@ -1,13 +1,13 @@
1
- import { useTr as e } from "../utils/i18n.js";
2
- import { cn as t } from "../utils/cn.js";
1
+ import { cn as e } from "../utils/cn.js";
2
+ import { useTr as t } from "../utils/i18n.js";
3
3
  import { Loader2 as n } from "lucide-react";
4
4
  import { jsx as r, jsxs as i } from "react/jsx-runtime";
5
- //#region src/devportal/components/LoadingState.tsx
5
+ // src/devportal/components/LoadingState.tsx
6
6
  var a = ({ message: a, className: o, size: s = "md" }) => {
7
- let c = e(), l = a ?? c("devportal.loadingDots", "Loading...");
7
+ let c = t(), l = a ?? c("devportal.loadingDots", "Loading...");
8
8
  return /* @__PURE__ */ i("div", {
9
- className: t("flex flex-col items-center justify-center gap-4 p-8", o),
10
- children: [/* @__PURE__ */ r(n, { className: t("animate-spin text-primary", {
9
+ className: e("flex flex-col items-center justify-center gap-4 p-8", o),
10
+ children: [/* @__PURE__ */ r(n, { className: e("animate-spin text-primary", {
11
11
  sm: "h-4 w-4",
12
12
  md: "h-8 w-8",
13
13
  lg: "h-12 w-12"
@@ -23,7 +23,6 @@ var a = ({ message: a, className: o, size: s = "md" }) => {
23
23
  size: "lg"
24
24
  })
25
25
  });
26
- //#endregion
27
26
  export { a as LoadingState, o as PageLoadingState };
28
27
 
29
28
  //# sourceMappingURL=LoadingState.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LoadingState.js","names":[],"sources":["../../../src/devportal/components/LoadingState.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport { Loader2 } from \"lucide-react\";\nimport { cn } from \"../utils/cn\";\nimport { useTr } from \"../utils/i18n\";\n\ninterface LoadingStateProps {\n message?: string;\n className?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\n/**\n * Loading state component with spinner and optional message\n */\nexport const LoadingState: FC<LoadingStateProps> = ({\n message,\n className,\n size = \"md\",\n}) => {\n const tr = useTr();\n const resolvedMessage = message ?? tr(\"devportal.loadingDots\", \"Loading...\");\n const sizeClasses = {\n sm: \"h-4 w-4\",\n md: \"h-8 w-8\",\n lg: \"h-12 w-12\",\n };\n\n return (\n <div\n className={cn(\n \"flex flex-col items-center justify-center gap-4 p-8\",\n className,\n )}\n >\n <Loader2 className={cn(\"animate-spin text-primary\", sizeClasses[size])} />\n {resolvedMessage && (\n <p className=\"text-sm text-text-secondary\">{resolvedMessage}</p>\n )}\n </div>\n );\n};\n\n/**\n * Full page loading state\n */\nexport const PageLoadingState: FC<{ message?: string }> = ({ message }) => (\n <div className=\"flex min-h-[400px] w-full items-center justify-center\">\n <LoadingState message={message} size=\"lg\" />\n </div>\n);\n\n/**\n * Card loading skeleton\n */\nexport const CardSkeleton: FC<{ className?: string }> = ({ className }) => (\n <div\n className={cn(\n \"rounded-card border border-border-seam bg-bg-surface p-6\",\n className,\n )}\n >\n <div className=\"h-4 w-3/4 overflow-hidden rounded bg-bg-sunken animate-vc-shimmer\" />\n <div className=\"mt-4 h-3 w-1/2 overflow-hidden rounded bg-bg-sunken animate-vc-shimmer\" />\n <div className=\"mt-2 h-3 w-2/3 overflow-hidden rounded bg-bg-sunken animate-vc-shimmer\" />\n </div>\n);\n\n/**\n * Table row skeleton\n */\nexport const TableRowSkeleton: FC<{ columns?: number }> = ({ columns = 4 }) => (\n <tr>\n {Array.from({ length: columns }).map((_, i) => (\n <td key={i} className=\"px-4 py-3\">\n <div className=\"h-4 overflow-hidden rounded bg-bg-sunken animate-vc-shimmer\" />\n </td>\n ))}\n </tr>\n);\n"],"mappings":";;;;;AAcA,IAAa,KAAuC,EAClD,YACA,cACA,UAAO,WACH;CACJ,IAAM,IAAK,GAAO,EACZ,IAAkB,KAAW,EAAG,yBAAyB,aAAa;AAO5E,QACE,kBAAC,OAAD;EACE,WAAW,EACT,uDACA,EACD;YAJH,CAME,kBAAC,GAAD,EAAS,WAAW,EAAG,6BAbP;GAClB,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CASmE,GAAM,EAAI,CAAA,EACzE,KACC,kBAAC,KAAD;GAAG,WAAU;aAA+B;GAAoB,CAAA,CAE9D;;GAOG,KAA8C,EAAE,iBAC3D,kBAAC,OAAD;CAAK,WAAU;WACb,kBAAC,GAAD;EAAuB;EAAS,MAAK;EAAO,CAAA;CACxC,CAAA"}
1
+ {"version":3,"file":"LoadingState.js","names":["LoadingState","tr","useTr","resolvedMessage","message","cn","className","Loader2","size","PageLoadingState"],"sources":["../../../src/devportal/components/LoadingState.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport { Loader2 } from \"lucide-react\";\nimport { cn } from \"../utils/cn\";\nimport { useTr } from \"../utils/i18n\";\n\ninterface LoadingStateProps {\n message?: string;\n className?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\n/**\n * Loading state component with spinner and optional message\n */\nexport const LoadingState: FC<LoadingStateProps> = ({\n message,\n className,\n size = \"md\",\n}) => {\n const tr = useTr();\n const resolvedMessage = message ?? tr(\"devportal.loadingDots\", \"Loading...\");\n const sizeClasses = {\n sm: \"h-4 w-4\",\n md: \"h-8 w-8\",\n lg: \"h-12 w-12\",\n };\n\n return (\n <div\n className={cn(\n \"flex flex-col items-center justify-center gap-4 p-8\",\n className,\n )}\n >\n <Loader2 className={cn(\"animate-spin text-primary\", sizeClasses[size])} />\n {resolvedMessage && (\n <p className=\"text-sm text-text-secondary\">{resolvedMessage}</p>\n )}\n </div>\n );\n};\n\n/**\n * Full page loading state\n */\nexport const PageLoadingState: FC<{ message?: string }> = ({ message }) => (\n <div className=\"flex min-h-[400px] w-full items-center justify-center\">\n <LoadingState message={message} size=\"lg\" />\n </div>\n);\n\n/**\n * Card loading skeleton\n */\nexport const CardSkeleton: FC<{ className?: string }> = ({ className }) => (\n <div\n className={cn(\n \"rounded-card border border-border-seam bg-bg-surface p-6\",\n className,\n )}\n >\n <div className=\"h-4 w-3/4 overflow-hidden rounded bg-bg-sunken animate-vc-shimmer\" />\n <div className=\"mt-4 h-3 w-1/2 overflow-hidden rounded bg-bg-sunken animate-vc-shimmer\" />\n <div className=\"mt-2 h-3 w-2/3 overflow-hidden rounded bg-bg-sunken animate-vc-shimmer\" />\n </div>\n);\n\n/**\n * Table row skeleton\n */\nexport const TableRowSkeleton: FC<{ columns?: number }> = ({ columns = 4 }) => (\n <tr>\n {Array.from({ length: columns }).map((_, i) => (\n <td key={i} className=\"px-4 py-3\">\n <div className=\"h-4 overflow-hidden rounded bg-bg-sunken animate-vc-shimmer\" />\n </td>\n ))}\n </tr>\n);\n"],"mappings":";;;;;AAcA,IAAaA,KAAuC,EAClD,YACA,cACA,UAAO,WACH;CACJ,IAAMC,IAAKC,EAAM,GACXC,IAAkBC,KAAWH,EAAG,yBAAyB,YAAY;CAO3E,OACE,kBAAC,OAAD;EACE,WAAWI,EACT,uDACAC,CACF;EAJF,UAAA,CAME,kBAACC,GAAD,EAAS,WAAWF,EAAG,6BAA6B;GAZtD,IAAI;GACJ,IAAI;GACJ,IAAI;EAUkD,EAAYG,EAAK,EAAI,CAAA,GACxEL,KACC,kBAAC,KAAD;GAAG,WAAU;GAA+B,UAAAA;EAAmB,CAAA,CAE9D;;AAET,GAKaM,KAA8C,EAAE,iBAC3D,kBAAC,OAAD;CAAK,WAAU;CACb,UAAA,kBAACT,GAAD;EAAuB;EAAS,MAAK;CAAM,CAAA;AACxC,CAAA"}
@@ -1,5 +1,4 @@
1
1
  import { FC } from 'react';
2
-
3
2
  export interface ManifestViewerProps {
4
3
  manifest: Record<string, unknown>;
5
4
  tr: (key: string, fallback: string) => string;
@@ -9,4 +8,3 @@ export interface ManifestViewerProps {
9
8
  * reviewers can validate what was uploaded without leaving the page.
10
9
  */
11
10
  export declare const ManifestViewer: FC<ManifestViewerProps>;
12
- //# sourceMappingURL=ManifestViewer.d.ts.map
@@ -1,7 +1,7 @@
1
1
  import { useEffect as e, useRef as t, useState as n } from "react";
2
2
  import { FileJson as r, X as i } from "lucide-react";
3
3
  import { Fragment as a, jsx as o, jsxs as s } from "react/jsx-runtime";
4
- //#region src/devportal/components/ManifestViewer.tsx
4
+ // src/devportal/components/ManifestViewer.tsx
5
5
  var c = ({ manifest: c, tr: l }) => {
6
6
  let [u, d] = n(!1), f = t(null);
7
7
  return e(() => {
@@ -52,7 +52,6 @@ var c = ({ manifest: c, tr: l }) => {
52
52
  })]
53
53
  })] });
54
54
  };
55
- //#endregion
56
55
  export { c as ManifestViewer };
57
56
 
58
57
  //# sourceMappingURL=ManifestViewer.js.map