@massdriver/backstage-plugin 1.0.0

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 (346) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +196 -0
  3. package/dist/MassdriverRouter.esm.js +78 -0
  4. package/dist/MassdriverRouter.esm.js.map +1 -0
  5. package/dist/api.esm.js +119 -0
  6. package/dist/api.esm.js.map +1 -0
  7. package/dist/assets/massdriver-logo-dark.svg +55 -0
  8. package/dist/assets/massdriver-logo-light.svg +50 -0
  9. package/dist/components/AttributesColumn.esm.js +95 -0
  10. package/dist/components/AttributesColumn.esm.js.map +1 -0
  11. package/dist/components/AttributesSummaryCell.esm.js +103 -0
  12. package/dist/components/AttributesSummaryCell.esm.js.map +1 -0
  13. package/dist/components/AuthedIcon.esm.js +26 -0
  14. package/dist/components/AuthedIcon.esm.js.map +1 -0
  15. package/dist/components/ConditionsCell.esm.js +48 -0
  16. package/dist/components/ConditionsCell.esm.js.map +1 -0
  17. package/dist/components/DisabledAction.esm.js +30 -0
  18. package/dist/components/DisabledAction.esm.js.map +1 -0
  19. package/dist/components/EntityMassdriverContent/EntityMassdriverContent.esm.js +80 -0
  20. package/dist/components/EntityMassdriverContent/EntityMassdriverContent.esm.js.map +1 -0
  21. package/dist/components/EntityMassdriverContent/index.esm.js +6 -0
  22. package/dist/components/EntityMassdriverContent/index.esm.js.map +1 -0
  23. package/dist/components/EntityMassdriverOverviewCard/EntityMassdriverOverviewCard.esm.js +75 -0
  24. package/dist/components/EntityMassdriverOverviewCard/EntityMassdriverOverviewCard.esm.js.map +1 -0
  25. package/dist/components/EntityMassdriverOverviewCard/index.esm.js +6 -0
  26. package/dist/components/EntityMassdriverOverviewCard/index.esm.js.map +1 -0
  27. package/dist/components/ForkPill.esm.js +84 -0
  28. package/dist/components/ForkPill.esm.js.map +1 -0
  29. package/dist/components/InstanceStatusIndicator.esm.js +21 -0
  30. package/dist/components/InstanceStatusIndicator.esm.js.map +1 -0
  31. package/dist/components/InstanceStatusPill.esm.js +67 -0
  32. package/dist/components/InstanceStatusPill.esm.js.map +1 -0
  33. package/dist/components/MassdriverIcon.esm.js +13 -0
  34. package/dist/components/MassdriverIcon.esm.js.map +1 -0
  35. package/dist/components/MassdriverSidebarItem.esm.js +45 -0
  36. package/dist/components/MassdriverSidebarItem.esm.js.map +1 -0
  37. package/dist/components/NotFound.esm.js +44 -0
  38. package/dist/components/NotFound.esm.js.map +1 -0
  39. package/dist/components/OpenInMassdriverButton.esm.js +24 -0
  40. package/dist/components/OpenInMassdriverButton.esm.js.map +1 -0
  41. package/dist/components/PageLayout.esm.js +88 -0
  42. package/dist/components/PageLayout.esm.js.map +1 -0
  43. package/dist/components/RouterLinkAdapter.esm.js +12 -0
  44. package/dist/components/RouterLinkAdapter.esm.js.map +1 -0
  45. package/dist/components/VersionBadge.esm.js +57 -0
  46. package/dist/components/VersionBadge.esm.js.map +1 -0
  47. package/dist/components/grantColumns.esm.js +56 -0
  48. package/dist/components/grantColumns.esm.js.map +1 -0
  49. package/dist/components/icons/BundleIcon.esm.js +7 -0
  50. package/dist/components/icons/BundleIcon.esm.js.map +1 -0
  51. package/dist/components/icons/FolderOutlinedIcon.esm.js +7 -0
  52. package/dist/components/icons/FolderOutlinedIcon.esm.js.map +1 -0
  53. package/dist/components/icons/TokenIcon.esm.js +7 -0
  54. package/dist/components/icons/TokenIcon.esm.js.map +1 -0
  55. package/dist/entity.esm.js +23 -0
  56. package/dist/entity.esm.js.map +1 -0
  57. package/dist/features/environment/CompareDeploymentsDialog/CompareDeploymentsDialog.esm.js +115 -0
  58. package/dist/features/environment/CompareDeploymentsDialog/CompareDeploymentsDialog.esm.js.map +1 -0
  59. package/dist/features/environment/CompareDeploymentsDialog/ResultsStep.esm.js +165 -0
  60. package/dist/features/environment/CompareDeploymentsDialog/ResultsStep.esm.js.map +1 -0
  61. package/dist/features/environment/CompareDeploymentsDialog/SelectStep.esm.js +216 -0
  62. package/dist/features/environment/CompareDeploymentsDialog/SelectStep.esm.js.map +1 -0
  63. package/dist/features/environment/CompareDeploymentsDialog/compareColumns.esm.js +86 -0
  64. package/dist/features/environment/CompareDeploymentsDialog/compareColumns.esm.js.map +1 -0
  65. package/dist/features/environment/CompareDeploymentsDialog/flattenDeploymentComparison.esm.js +57 -0
  66. package/dist/features/environment/CompareDeploymentsDialog/flattenDeploymentComparison.esm.js.map +1 -0
  67. package/dist/features/environment/CompareDeploymentsDialog/queries.esm.js +53 -0
  68. package/dist/features/environment/CompareDeploymentsDialog/queries.esm.js.map +1 -0
  69. package/dist/features/environment/CompareEnvironmentsDialog/CompareEnvironmentsDialog.esm.js +94 -0
  70. package/dist/features/environment/CompareEnvironmentsDialog/CompareEnvironmentsDialog.esm.js.map +1 -0
  71. package/dist/features/environment/CompareEnvironmentsDialog/ComparisonValueCell.esm.js +67 -0
  72. package/dist/features/environment/CompareEnvironmentsDialog/ComparisonValueCell.esm.js.map +1 -0
  73. package/dist/features/environment/CompareEnvironmentsDialog/ResultsStep.esm.js +202 -0
  74. package/dist/features/environment/CompareEnvironmentsDialog/ResultsStep.esm.js.map +1 -0
  75. package/dist/features/environment/CompareEnvironmentsDialog/SelectStep.esm.js +183 -0
  76. package/dist/features/environment/CompareEnvironmentsDialog/SelectStep.esm.js.map +1 -0
  77. package/dist/features/environment/CompareEnvironmentsDialog/compareColumns.esm.js +73 -0
  78. package/dist/features/environment/CompareEnvironmentsDialog/compareColumns.esm.js.map +1 -0
  79. package/dist/features/environment/CompareEnvironmentsDialog/flattenComparison.esm.js +70 -0
  80. package/dist/features/environment/CompareEnvironmentsDialog/flattenComparison.esm.js.map +1 -0
  81. package/dist/features/environment/CompareEnvironmentsDialog/queries.esm.js +32 -0
  82. package/dist/features/environment/CompareEnvironmentsDialog/queries.esm.js.map +1 -0
  83. package/dist/features/environment/EnvironmentGraphPage.esm.js +131 -0
  84. package/dist/features/environment/EnvironmentGraphPage.esm.js.map +1 -0
  85. package/dist/features/environment/GraphHeader/EnvironmentDefaults.esm.js +252 -0
  86. package/dist/features/environment/GraphHeader/EnvironmentDefaults.esm.js.map +1 -0
  87. package/dist/features/environment/GraphHeader/GraphHeader.esm.js +247 -0
  88. package/dist/features/environment/GraphHeader/GraphHeader.esm.js.map +1 -0
  89. package/dist/features/environment/GraphHeader/HeaderActions.esm.js +127 -0
  90. package/dist/features/environment/GraphHeader/HeaderActions.esm.js.map +1 -0
  91. package/dist/features/environment/GraphHeader/Switcher.esm.js +75 -0
  92. package/dist/features/environment/GraphHeader/Switcher.esm.js.map +1 -0
  93. package/dist/features/environment/GraphHeader/queries.esm.js +60 -0
  94. package/dist/features/environment/GraphHeader/queries.esm.js.map +1 -0
  95. package/dist/features/environment/InstanceDrawer/AlarmCard.esm.js +151 -0
  96. package/dist/features/environment/InstanceDrawer/AlarmCard.esm.js.map +1 -0
  97. package/dist/features/environment/InstanceDrawer/InstanceDrawer.esm.js +165 -0
  98. package/dist/features/environment/InstanceDrawer/InstanceDrawer.esm.js.map +1 -0
  99. package/dist/features/environment/InstanceDrawer/InstanceDrawerHeader.esm.js +241 -0
  100. package/dist/features/environment/InstanceDrawer/InstanceDrawerHeader.esm.js.map +1 -0
  101. package/dist/features/environment/InstanceDrawer/InstanceTabs.esm.js +119 -0
  102. package/dist/features/environment/InstanceDrawer/InstanceTabs.esm.js.map +1 -0
  103. package/dist/features/environment/InstanceDrawer/TabState.esm.js +30 -0
  104. package/dist/features/environment/InstanceDrawer/TabState.esm.js.map +1 -0
  105. package/dist/features/environment/InstanceDrawer/formsDataSource.esm.js +25 -0
  106. package/dist/features/environment/InstanceDrawer/formsDataSource.esm.js.map +1 -0
  107. package/dist/features/environment/InstanceDrawer/helpers.esm.js +282 -0
  108. package/dist/features/environment/InstanceDrawer/helpers.esm.js.map +1 -0
  109. package/dist/features/environment/InstanceDrawer/queries.esm.js +281 -0
  110. package/dist/features/environment/InstanceDrawer/queries.esm.js.map +1 -0
  111. package/dist/features/environment/InstanceDrawer/tabs/ConfigTab.esm.js +170 -0
  112. package/dist/features/environment/InstanceDrawer/tabs/ConfigTab.esm.js.map +1 -0
  113. package/dist/features/environment/InstanceDrawer/tabs/DependenciesTab.esm.js +413 -0
  114. package/dist/features/environment/InstanceDrawer/tabs/DependenciesTab.esm.js.map +1 -0
  115. package/dist/features/environment/InstanceDrawer/tabs/DeploymentLogsPanel.esm.js +191 -0
  116. package/dist/features/environment/InstanceDrawer/tabs/DeploymentLogsPanel.esm.js.map +1 -0
  117. package/dist/features/environment/InstanceDrawer/tabs/DeploymentReadOnlyActions.esm.js +63 -0
  118. package/dist/features/environment/InstanceDrawer/tabs/DeploymentReadOnlyActions.esm.js.map +1 -0
  119. package/dist/features/environment/InstanceDrawer/tabs/GuideTab.esm.js +48 -0
  120. package/dist/features/environment/InstanceDrawer/tabs/GuideTab.esm.js.map +1 -0
  121. package/dist/features/environment/InstanceDrawer/tabs/HistoryTab.esm.js +446 -0
  122. package/dist/features/environment/InstanceDrawer/tabs/HistoryTab.esm.js.map +1 -0
  123. package/dist/features/environment/InstanceDrawer/tabs/MonitorTab.esm.js +146 -0
  124. package/dist/features/environment/InstanceDrawer/tabs/MonitorTab.esm.js.map +1 -0
  125. package/dist/features/environment/InstanceDrawer/tabs/OverviewTab.esm.js +572 -0
  126. package/dist/features/environment/InstanceDrawer/tabs/OverviewTab.esm.js.map +1 -0
  127. package/dist/features/environment/InstanceDrawer/tabs/ResourcesTab.esm.js +471 -0
  128. package/dist/features/environment/InstanceDrawer/tabs/ResourcesTab.esm.js.map +1 -0
  129. package/dist/features/environment/InstanceDrawer/tabs/SecretsTab.esm.js +109 -0
  130. package/dist/features/environment/InstanceDrawer/tabs/SecretsTab.esm.js.map +1 -0
  131. package/dist/features/environment/InstanceDrawer/tabs/ViewDeploymentDetails.esm.js +384 -0
  132. package/dist/features/environment/InstanceDrawer/tabs/ViewDeploymentDetails.esm.js.map +1 -0
  133. package/dist/features/environment/InstanceDrawer/tabs/flattenParams.esm.js +23 -0
  134. package/dist/features/environment/InstanceDrawer/tabs/flattenParams.esm.js.map +1 -0
  135. package/dist/features/environment/InstanceDrawer/useInstanceApiQuery.esm.js +6 -0
  136. package/dist/features/environment/InstanceDrawer/useInstanceApiQuery.esm.js.map +1 -0
  137. package/dist/features/environment/InstanceDrawer/useOverflowMeasure.esm.js +55 -0
  138. package/dist/features/environment/InstanceDrawer/useOverflowMeasure.esm.js.map +1 -0
  139. package/dist/features/environment/InstanceDrawer/useResizableWidth.esm.js +44 -0
  140. package/dist/features/environment/InstanceDrawer/useResizableWidth.esm.js.map +1 -0
  141. package/dist/features/environment/components/InstanceStatusPill.esm.js +54 -0
  142. package/dist/features/environment/components/InstanceStatusPill.esm.js.map +1 -0
  143. package/dist/features/environment/graph/Diagram.esm.js +143 -0
  144. package/dist/features/environment/graph/Diagram.esm.js.map +1 -0
  145. package/dist/features/environment/graph/DiagramNode.constants.esm.js +5 -0
  146. package/dist/features/environment/graph/DiagramNode.constants.esm.js.map +1 -0
  147. package/dist/features/environment/graph/DiagramNode.esm.js +221 -0
  148. package/dist/features/environment/graph/DiagramNode.esm.js.map +1 -0
  149. package/dist/features/environment/graph/NodeMeta.esm.js +182 -0
  150. package/dist/features/environment/graph/NodeMeta.esm.js.map +1 -0
  151. package/dist/features/environment/graph/NodeVersionBadges.esm.js +150 -0
  152. package/dist/features/environment/graph/NodeVersionBadges.esm.js.map +1 -0
  153. package/dist/features/environment/graph/diagramFactory.esm.js +151 -0
  154. package/dist/features/environment/graph/diagramFactory.esm.js.map +1 -0
  155. package/dist/features/environment/graph/handles/ExpandableHandleWrapper.esm.js +174 -0
  156. package/dist/features/environment/graph/handles/ExpandableHandleWrapper.esm.js.map +1 -0
  157. package/dist/features/environment/graph/handles/NodeHandle.esm.js +45 -0
  158. package/dist/features/environment/graph/handles/NodeHandle.esm.js.map +1 -0
  159. package/dist/features/environment/graph/handles/NodeHandleTooltip.esm.js +134 -0
  160. package/dist/features/environment/graph/handles/NodeHandleTooltip.esm.js.map +1 -0
  161. package/dist/features/environment/graph/handles/handleTypes.esm.js +170 -0
  162. package/dist/features/environment/graph/handles/handleTypes.esm.js.map +1 -0
  163. package/dist/features/environment/graph/handles/useAnimationFrameSync.esm.js +19 -0
  164. package/dist/features/environment/graph/handles/useAnimationFrameSync.esm.js.map +1 -0
  165. package/dist/features/environment/graph/handles/useRadialPositions.esm.js +37 -0
  166. package/dist/features/environment/graph/handles/useRadialPositions.esm.js.map +1 -0
  167. package/dist/features/environment/graph/handles/useTransitionLifecycle.esm.js +19 -0
  168. package/dist/features/environment/graph/handles/useTransitionLifecycle.esm.js.map +1 -0
  169. package/dist/features/environment/graph/hasUndeployedPlan.esm.js +43 -0
  170. package/dist/features/environment/graph/hasUndeployedPlan.esm.js.map +1 -0
  171. package/dist/features/environment/graph/queries.esm.js +103 -0
  172. package/dist/features/environment/graph/queries.esm.js.map +1 -0
  173. package/dist/features/environment/graph/useDiagramSnapshot.esm.js +43 -0
  174. package/dist/features/environment/graph/useDiagramSnapshot.esm.js.map +1 -0
  175. package/dist/features/environment/realtime/RealtimeProvider.esm.js +43 -0
  176. package/dist/features/environment/realtime/RealtimeProvider.esm.js.map +1 -0
  177. package/dist/features/environment/realtime/queries.esm.js +76 -0
  178. package/dist/features/environment/realtime/queries.esm.js.map +1 -0
  179. package/dist/features/environment/realtime/useLiveRelayQuery.esm.js +36 -0
  180. package/dist/features/environment/realtime/useLiveRelayQuery.esm.js.map +1 -0
  181. package/dist/features/project/ProjectDetailsPage.esm.js +101 -0
  182. package/dist/features/project/ProjectDetailsPage.esm.js.map +1 -0
  183. package/dist/features/project/tabs/ComponentsTab.esm.js +149 -0
  184. package/dist/features/project/tabs/ComponentsTab.esm.js.map +1 -0
  185. package/dist/features/project/tabs/EnvStatus.esm.js +149 -0
  186. package/dist/features/project/tabs/EnvStatus.esm.js.map +1 -0
  187. package/dist/features/project/tabs/EnvironmentsTab.esm.js +199 -0
  188. package/dist/features/project/tabs/EnvironmentsTab.esm.js.map +1 -0
  189. package/dist/features/project/tabs/OverviewTab.esm.js +420 -0
  190. package/dist/features/project/tabs/OverviewTab.esm.js.map +1 -0
  191. package/dist/features/projects/ProjectsListPage.esm.js +50 -0
  192. package/dist/features/projects/ProjectsListPage.esm.js.map +1 -0
  193. package/dist/features/projects/ProjectsListPageLazy.esm.js +12 -0
  194. package/dist/features/projects/ProjectsListPageLazy.esm.js.map +1 -0
  195. package/dist/features/projects/projectColumns.esm.js +38 -0
  196. package/dist/features/projects/projectColumns.esm.js.map +1 -0
  197. package/dist/features/projects/useProjects.esm.js +48 -0
  198. package/dist/features/projects/useProjects.esm.js.map +1 -0
  199. package/dist/features/repo/DeploymentLogsDrawer.esm.js +213 -0
  200. package/dist/features/repo/DeploymentLogsDrawer.esm.js.map +1 -0
  201. package/dist/features/repo/DeploymentLogsDrawer.loading.esm.js +43 -0
  202. package/dist/features/repo/DeploymentLogsDrawer.loading.esm.js.map +1 -0
  203. package/dist/features/repo/FileTree.esm.js +179 -0
  204. package/dist/features/repo/FileTree.esm.js.map +1 -0
  205. package/dist/features/repo/FileViewer.esm.js +115 -0
  206. package/dist/features/repo/FileViewer.esm.js.map +1 -0
  207. package/dist/features/repo/FileViewer.helpers.esm.js +54 -0
  208. package/dist/features/repo/FileViewer.helpers.esm.js.map +1 -0
  209. package/dist/features/repo/RepoDetailsPage.esm.js +127 -0
  210. package/dist/features/repo/RepoDetailsPage.esm.js.map +1 -0
  211. package/dist/features/repo/RepoEmptyState.esm.js +58 -0
  212. package/dist/features/repo/RepoEmptyState.esm.js.map +1 -0
  213. package/dist/features/repo/RepoNoVersionsState.esm.js +29 -0
  214. package/dist/features/repo/RepoNoVersionsState.esm.js.map +1 -0
  215. package/dist/features/repo/RepoTabHeader.esm.js +30 -0
  216. package/dist/features/repo/RepoTabHeader.esm.js.map +1 -0
  217. package/dist/features/repo/RepoTabLayout.esm.js +18 -0
  218. package/dist/features/repo/RepoTabLayout.esm.js.map +1 -0
  219. package/dist/features/repo/RepoVersionSelect.esm.js +176 -0
  220. package/dist/features/repo/RepoVersionSelect.esm.js.map +1 -0
  221. package/dist/features/repo/ViewDeploymentDetailsDialog.esm.js +427 -0
  222. package/dist/features/repo/ViewDeploymentDetailsDialog.esm.js.map +1 -0
  223. package/dist/features/repo/deploymentHelpers.esm.js +74 -0
  224. package/dist/features/repo/deploymentHelpers.esm.js.map +1 -0
  225. package/dist/features/repo/fileTreeHelpers.esm.js +45 -0
  226. package/dist/features/repo/fileTreeHelpers.esm.js.map +1 -0
  227. package/dist/features/repo/flattenParams.esm.js +23 -0
  228. package/dist/features/repo/flattenParams.esm.js.map +1 -0
  229. package/dist/features/repo/queries.esm.js +239 -0
  230. package/dist/features/repo/queries.esm.js.map +1 -0
  231. package/dist/features/repo/repoFilter.esm.js +9 -0
  232. package/dist/features/repo/repoFilter.esm.js.map +1 -0
  233. package/dist/features/repo/repoTabs.esm.js +22 -0
  234. package/dist/features/repo/repoTabs.esm.js.map +1 -0
  235. package/dist/features/repo/resolveVersion.esm.js +22 -0
  236. package/dist/features/repo/resolveVersion.esm.js.map +1 -0
  237. package/dist/features/repo/tabs/DeploymentRow.esm.js +201 -0
  238. package/dist/features/repo/tabs/DeploymentRow.esm.js.map +1 -0
  239. package/dist/features/repo/tabs/DeploymentsTab.esm.js +188 -0
  240. package/dist/features/repo/tabs/DeploymentsTab.esm.js.map +1 -0
  241. package/dist/features/repo/tabs/DeploymentsTab.helpers.esm.js +46 -0
  242. package/dist/features/repo/tabs/DeploymentsTab.helpers.esm.js.map +1 -0
  243. package/dist/features/repo/tabs/DeploymentsTab.loading.esm.js +37 -0
  244. package/dist/features/repo/tabs/DeploymentsTab.loading.esm.js.map +1 -0
  245. package/dist/features/repo/tabs/FilesTab.esm.js +142 -0
  246. package/dist/features/repo/tabs/FilesTab.esm.js.map +1 -0
  247. package/dist/features/repo/tabs/InstanceRow.esm.js +121 -0
  248. package/dist/features/repo/tabs/InstanceRow.esm.js.map +1 -0
  249. package/dist/features/repo/tabs/InstancesTab.esm.js +147 -0
  250. package/dist/features/repo/tabs/InstancesTab.esm.js.map +1 -0
  251. package/dist/features/repo/tabs/InstancesTab.helpers.esm.js +44 -0
  252. package/dist/features/repo/tabs/InstancesTab.helpers.esm.js.map +1 -0
  253. package/dist/features/repo/tabs/InstancesTab.loading.esm.js +33 -0
  254. package/dist/features/repo/tabs/InstancesTab.loading.esm.js.map +1 -0
  255. package/dist/features/repo/tabs/OverviewTab.esm.js +77 -0
  256. package/dist/features/repo/tabs/OverviewTab.esm.js.map +1 -0
  257. package/dist/features/repo/tabs/PermissionsTab.esm.js +56 -0
  258. package/dist/features/repo/tabs/PermissionsTab.esm.js.map +1 -0
  259. package/dist/features/repo/tabs/VersionsTab.esm.js +152 -0
  260. package/dist/features/repo/tabs/VersionsTab.esm.js.map +1 -0
  261. package/dist/features/repo/useInfiniteRelayList.esm.js +92 -0
  262. package/dist/features/repo/useInfiniteRelayList.esm.js.map +1 -0
  263. package/dist/features/repo/useInfiniteScroll.esm.js +21 -0
  264. package/dist/features/repo/useInfiniteScroll.esm.js.map +1 -0
  265. package/dist/features/repos/ReposListPage.esm.js +53 -0
  266. package/dist/features/repos/ReposListPage.esm.js.map +1 -0
  267. package/dist/features/repos/queries.esm.js +40 -0
  268. package/dist/features/repos/queries.esm.js.map +1 -0
  269. package/dist/features/repos/repoColumns.esm.js +121 -0
  270. package/dist/features/repos/repoColumns.esm.js.map +1 -0
  271. package/dist/features/repos/useRepos.esm.js +22 -0
  272. package/dist/features/repos/useRepos.esm.js.map +1 -0
  273. package/dist/features/resource/OriginChip.esm.js +42 -0
  274. package/dist/features/resource/OriginChip.esm.js.map +1 -0
  275. package/dist/features/resource/ResourceDetailsPage.esm.js +167 -0
  276. package/dist/features/resource/ResourceDetailsPage.esm.js.map +1 -0
  277. package/dist/features/resource/queries.esm.js +141 -0
  278. package/dist/features/resource/queries.esm.js.map +1 -0
  279. package/dist/features/resource/tabs/GeneralTab.esm.js +247 -0
  280. package/dist/features/resource/tabs/GeneralTab.esm.js.map +1 -0
  281. package/dist/features/resource/tabs/GeneralTab.loading.esm.js +76 -0
  282. package/dist/features/resource/tabs/GeneralTab.loading.esm.js.map +1 -0
  283. package/dist/features/resource/tabs/PermissionsTab.esm.js +57 -0
  284. package/dist/features/resource/tabs/PermissionsTab.esm.js.map +1 -0
  285. package/dist/features/resource/tabs/SettingsTabLayout.esm.js +18 -0
  286. package/dist/features/resource/tabs/SettingsTabLayout.esm.js.map +1 -0
  287. package/dist/features/resource/tabs/TabHeader.esm.js +30 -0
  288. package/dist/features/resource/tabs/TabHeader.esm.js.map +1 -0
  289. package/dist/features/resource/tabs/UsagePanel.esm.js +35 -0
  290. package/dist/features/resource/tabs/UsagePanel.esm.js.map +1 -0
  291. package/dist/features/resource/tabs/UsageTab.esm.js +91 -0
  292. package/dist/features/resource/tabs/UsageTab.esm.js.map +1 -0
  293. package/dist/features/resource/tabs/UsageTab.helpers.esm.js +168 -0
  294. package/dist/features/resource/tabs/UsageTab.helpers.esm.js.map +1 -0
  295. package/dist/features/resources/ResourcesEmptyState.esm.js +148 -0
  296. package/dist/features/resources/ResourcesEmptyState.esm.js.map +1 -0
  297. package/dist/features/resources/ResourcesListPage.esm.js +115 -0
  298. package/dist/features/resources/ResourcesListPage.esm.js.map +1 -0
  299. package/dist/features/resources/queries.esm.js +50 -0
  300. package/dist/features/resources/queries.esm.js.map +1 -0
  301. package/dist/features/resources/resourceColumns.esm.js +158 -0
  302. package/dist/features/resources/resourceColumns.esm.js.map +1 -0
  303. package/dist/features/resources/resourceConstants.esm.js +7 -0
  304. package/dist/features/resources/resourceConstants.esm.js.map +1 -0
  305. package/dist/features/resources/toResourceRow.esm.js +29 -0
  306. package/dist/features/resources/toResourceRow.esm.js.map +1 -0
  307. package/dist/hooks/useAuthedSvg.esm.js +34 -0
  308. package/dist/hooks/useAuthedSvg.esm.js.map +1 -0
  309. package/dist/hooks/useCursorPagination.esm.js +40 -0
  310. package/dist/hooks/useCursorPagination.esm.js.map +1 -0
  311. package/dist/hooks/useMassdriverSubscription.esm.js +61 -0
  312. package/dist/hooks/useMassdriverSubscription.esm.js.map +1 -0
  313. package/dist/hooks/usePaginatedRelayQuery.esm.js +68 -0
  314. package/dist/hooks/usePaginatedRelayQuery.esm.js.map +1 -0
  315. package/dist/index.d.ts +256 -0
  316. package/dist/index.esm.js +8 -0
  317. package/dist/index.esm.js.map +1 -0
  318. package/dist/internalRoutes.esm.js +29 -0
  319. package/dist/internalRoutes.esm.js.map +1 -0
  320. package/dist/plugin.esm.js +57 -0
  321. package/dist/plugin.esm.js.map +1 -0
  322. package/dist/queries.esm.js +54 -0
  323. package/dist/queries.esm.js.map +1 -0
  324. package/dist/routes.esm.js +6 -0
  325. package/dist/routes.esm.js.map +1 -0
  326. package/dist/shell/MassdriverHeader.esm.js +37 -0
  327. package/dist/shell/MassdriverHeader.esm.js.map +1 -0
  328. package/dist/shell/MassdriverShell.esm.js +30 -0
  329. package/dist/shell/MassdriverShell.esm.js.map +1 -0
  330. package/dist/theme/MassdriverThemeScope.esm.js +30 -0
  331. package/dist/theme/MassdriverThemeScope.esm.js.map +1 -0
  332. package/dist/theme/ThemeModeContext.esm.js +35 -0
  333. package/dist/theme/ThemeModeContext.esm.js.map +1 -0
  334. package/dist/theme/muiClassNameAudit.esm.js +11 -0
  335. package/dist/theme/muiClassNameAudit.esm.js.map +1 -0
  336. package/dist/useInstances.esm.js +39 -0
  337. package/dist/useInstances.esm.js.map +1 -0
  338. package/dist/utils/attributes.esm.js +28 -0
  339. package/dist/utils/attributes.esm.js.map +1 -0
  340. package/dist/utils/conditions.esm.js +20 -0
  341. package/dist/utils/conditions.esm.js.map +1 -0
  342. package/dist/utils/formatRelativeTime.esm.js +40 -0
  343. package/dist/utils/formatRelativeTime.esm.js.map +1 -0
  344. package/dist/utils/instanceStatuses.esm.js +74 -0
  345. package/dist/utils/instanceStatuses.esm.js.map +1 -0
  346. package/package.json +92 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonitorTab.esm.js","sources":["../../../../../src/features/environment/InstanceDrawer/tabs/MonitorTab.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport Box from '@massdriver/ui/Box';\nimport Typography from '@massdriver/ui/Typography';\nimport { HelpIconButton } from '@massdriver/ui/IconButton';\nimport NotificationsIcon from '@massdriver/ui/icons/NotificationsIcon';\nimport stylin from '@massdriver/ui/stylin';\nimport { TabState } from '../TabState';\nimport AlarmCard from '../AlarmCard';\nimport { ALARMS_QUERY } from '../queries';\nimport { useInstanceApiQuery } from '../useInstanceApiQuery';\nimport { ALARMS_DOCS_URL, bucketAlarms } from '../helpers';\nimport type { Alarm } from '../types';\n\n/** Read-only Monitor tab: firing + configured alarms. */\nexport const MonitorTab = ({ instanceId }: { instanceId: string | null }) => {\n const { value, loading, error } = useInstanceApiQuery<{\n instance: {\n id: string;\n alarms?: { items?: (Alarm | null)[] | null };\n } | null;\n }>(ALARMS_QUERY, instanceId);\n\n const buckets = useMemo(\n () => bucketAlarms(value?.instance?.alarms?.items),\n [value?.instance?.alarms],\n );\n const alarms = [...buckets.firing, ...buckets.configured];\n\n return (\n <TabState loading={loading} error={error}>\n <Root>\n <HeaderRow>\n <TitleRow>\n <Title>Alarms</Title>\n <AlarmsHelp\n href={ALARMS_DOCS_URL}\n tooltip=\"Learn about alarms\"\n size=\"small\"\n />\n </TitleRow>\n {buckets.total > 0 ? (\n <CountChip>\n {buckets.firing.length > 0 ? (\n <>\n <FiringCount>{buckets.firing.length} firing</FiringCount>\n <Separator>•</Separator>\n </>\n ) : null}\n <TotalCount>{buckets.total} total</TotalCount>\n </CountChip>\n ) : null}\n </HeaderRow>\n {buckets.total === 0 ? (\n <Empty>\n <IconCircle>\n <NotificationsIcon />\n </IconCircle>\n <EmptyTitle variant=\"body2\">No alarms configured</EmptyTitle>\n <EmptyDescription variant=\"caption\">\n Alarms appear here once your bundle provisions monitoring\n resources.\n </EmptyDescription>\n <DocsLink\n href={ALARMS_DOCS_URL}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Learn about alarms\n </DocsLink>\n </Empty>\n ) : (\n <List>\n {alarms.map(alarm => (\n <AlarmCard key={alarm.id} alarm={alarm} />\n ))}\n </List>\n )}\n </Root>\n </TabState>\n );\n};\n\nexport default MonitorTab;\n\nconst Root = stylin(Box)(({ theme }: { theme: any }) => ({\n display: 'flex',\n flexDirection: 'column',\n padding: theme.spacing(1),\n}));\n\nconst HeaderRow = stylin(Box)(({ theme }: { theme: any }) => ({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: theme.spacing(1),\n marginBottom: theme.spacing(3),\n}));\n\nconst TitleRow = stylin(Box)(({ theme }: { theme: any }) => ({\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(0.5),\n}));\n\nconst Title = stylin(Typography)(({ theme }: { theme: any }) => ({\n fontSize: theme.typography.pxToRem(15),\n fontWeight: theme.typography.fontWeightBold,\n color: theme.palette.text.primary,\n}));\n\nconst AlarmsHelp = stylin(HelpIconButton)({\n padding: '2px',\n '& svg': { fontSize: 16 },\n});\n\nconst CountChip = stylin(Box)(({ theme }: { theme: any }) => ({\n display: 'inline-flex',\n alignItems: 'center',\n gap: theme.spacing(0.5),\n fontSize: theme.typography.pxToRem(11),\n padding: theme.spacing(0.25, 1),\n borderRadius: '999px',\n border: `1px solid ${theme.palette.divider}`,\n backgroundColor: theme.palette.background.paper,\n}));\n\nconst FiringCount = stylin(Box)(({ theme }: { theme: any }) => ({\n color: theme.palette.error.dark,\n fontWeight: 600,\n}));\n\nconst TotalCount = stylin(Box)(({ theme }: { theme: any }) => ({\n color: theme.palette.text.secondary,\n}));\n\nconst Separator = stylin(Box)(({ theme }: { theme: any }) => ({\n color: theme.palette.text.disabled,\n}));\n\nconst List = stylin(Box)(({ theme }: { theme: any }) => ({\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(2),\n}));\n\nconst Empty = stylin(Box)(({ theme }: { theme: any }) => ({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: theme.spacing(1),\n padding: theme.spacing(6, 2),\n textAlign: 'center',\n}));\n\nconst IconCircle = stylin(Box)(({ theme }: { theme: any }) => ({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: theme.spacing(6),\n height: theme.spacing(6),\n borderRadius: '50%',\n backgroundColor: theme.palette.action.hover,\n color: theme.palette.text.disabled,\n '& svg': { width: theme.spacing(3), height: theme.spacing(3) },\n}));\n\nconst EmptyTitle = stylin(Typography)({ fontWeight: 600 });\n\nconst EmptyDescription = stylin(Typography)(({ theme }: { theme: any }) => ({\n color: theme.palette.text.secondary,\n}));\n\nconst DocsLink = stylin('a')(({ theme }: { theme: any }) => ({\n fontSize: theme.typography.pxToRem(12),\n color: theme.palette.primary.main,\n textDecoration: 'none',\n '&:hover': { textDecoration: 'underline' },\n}));\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,572 @@
1
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
+ import { useState, useMemo } from 'react';
3
+ import Box from '@massdriver/ui/Box';
4
+ import Typography from '@massdriver/ui/Typography';
5
+ import CopyButton from '@massdriver/ui/CopyButton';
6
+ import CodeBlock from '@massdriver/ui/CodeBlock';
7
+ import TextField from '@massdriver/ui/TextField';
8
+ import InputAdornment from '@massdriver/ui/InputAdornment';
9
+ import IconButton from '@massdriver/ui/IconButton';
10
+ import Tooltip from '@massdriver/ui/Tooltip';
11
+ import SearchIcon from '@massdriver/ui/icons/SearchIcon';
12
+ import ChevronLeftIcon from '@massdriver/ui/icons/ChevronLeftIcon';
13
+ import ChevronRightIcon from '@massdriver/ui/icons/ChevronRightIcon';
14
+ import ExpandCircleDownOutlinedIcon from '@massdriver/ui/icons/ExpandCircleDownOutlinedIcon';
15
+ import OpenInNewIcon from '@massdriver/ui/icons/OpenInNewIcon';
16
+ import AlertBanner from '@massdriver/ui/AlertBanner';
17
+ import stylin from '@massdriver/ui/stylin';
18
+ import { useApi } from '@backstage/frontend-plugin-api';
19
+ import { instanceTabUrl, repoVersionOverviewUrl } from '@massdriver/backstage-plugin-common';
20
+ import { massdriverApiRef } from '../../../../api.esm.js';
21
+ import { TabState } from '../TabState.esm.js';
22
+ import { AlarmCard } from '../AlarmCard.esm.js';
23
+ import { OVERVIEW_QUERY } from '../queries.esm.js';
24
+ import { useInstanceApiQuery } from '../useInstanceApiQuery.esm.js';
25
+ import { getFiringAlerts, getReleaseChannel, filterAndPaginateProperties, parseMap, formatAttributeValue, formatPropertyValue } from '../helpers.esm.js';
26
+ import '@mui/material/Chip';
27
+ import '@mui/material/Drawer';
28
+ import { outlinedInputClasses } from '@mui/material/OutlinedInput';
29
+ import '@mui/material/Select';
30
+ import '@mui/material/ToggleButton';
31
+
32
+ const OverviewTab = ({ instanceId }) => {
33
+ const api = useApi(massdriverApiRef);
34
+ const { value, loading, error } = useInstanceApiQuery(OVERVIEW_QUERY, instanceId);
35
+ const instance = value?.instance;
36
+ const changeVersionUrl = instanceId && api.appUrl ? instanceTabUrl(api.appUrl, api.organizationId, instanceId, "overview") : "";
37
+ const repoUrl = instance?.bundle?.name && instance?.resolvedVersion && api.appUrl ? repoVersionOverviewUrl(
38
+ api.appUrl,
39
+ api.organizationId,
40
+ instance.bundle.name,
41
+ instance.resolvedVersion
42
+ ) : "";
43
+ const [search, setSearch] = useState("");
44
+ const [page, setPage] = useState(1);
45
+ const firingAlerts = useMemo(
46
+ () => getFiringAlerts(instance?.alarms?.items),
47
+ [instance?.alarms]
48
+ );
49
+ const releaseChannel = getReleaseChannel(
50
+ instance?.version,
51
+ instance?.resolvedVersion
52
+ );
53
+ const properties = (instance?.properties ?? []).filter(
54
+ Boolean
55
+ );
56
+ const propertiesView = useMemo(
57
+ () => filterAndPaginateProperties(properties, { search, page }),
58
+ [properties, search, page]
59
+ );
60
+ return /* @__PURE__ */ jsx(TabState, { loading, error, children: instance ? /* @__PURE__ */ jsxs(Root, { children: [
61
+ firingAlerts.length ? /* @__PURE__ */ jsxs(Section, { children: [
62
+ /* @__PURE__ */ jsx(Header, { children: "Firing Alerts" }),
63
+ /* @__PURE__ */ jsx(AlertList, { children: firingAlerts.map((alarm) => /* @__PURE__ */ jsx(AlarmCard, { alarm }, alarm.id)) })
64
+ ] }) : null,
65
+ /* @__PURE__ */ jsxs(Section, { children: [
66
+ /* @__PURE__ */ jsx(Header, { children: "Identifiers" }),
67
+ /* @__PURE__ */ jsxs(IdGrid, { children: [
68
+ /* @__PURE__ */ jsxs(Field, { children: [
69
+ /* @__PURE__ */ jsx(Label, { children: "Instance ID" }),
70
+ /* @__PURE__ */ jsxs(ValueRow, { children: [
71
+ /* @__PURE__ */ jsx(Value, { title: instance.id, children: instance.id }),
72
+ /* @__PURE__ */ jsx(CopyButton, { text: instance.id, tooltip: "Copy instance ID" })
73
+ ] })
74
+ ] }),
75
+ /* @__PURE__ */ jsxs(Field, { children: [
76
+ /* @__PURE__ */ jsx(Label, { children: "Name" }),
77
+ /* @__PURE__ */ jsxs(ValueRow, { children: [
78
+ /* @__PURE__ */ jsx(Value, { title: instance.name ?? "\u2014", children: instance.name ?? "\u2014" }),
79
+ instance.name ? /* @__PURE__ */ jsx(CopyButton, { text: instance.name, tooltip: "Copy name" }) : null
80
+ ] })
81
+ ] })
82
+ ] }),
83
+ instance.bundle?.description ? /* @__PURE__ */ jsxs(Field, { children: [
84
+ /* @__PURE__ */ jsx(Label, { children: "Description" }),
85
+ /* @__PURE__ */ jsx(Description, { children: instance.bundle.description })
86
+ ] }) : null
87
+ ] }),
88
+ /* @__PURE__ */ jsxs(Section, { children: [
89
+ /* @__PURE__ */ jsxs(SectionHeaderRow, { children: [
90
+ /* @__PURE__ */ jsx(Header, { children: "Version" }),
91
+ changeVersionUrl && instance.status !== "EXTERNAL" ? /* @__PURE__ */ jsx(
92
+ Tooltip,
93
+ {
94
+ arrow: true,
95
+ title: "Change version in Massdriver",
96
+ placement: "top",
97
+ children: /* @__PURE__ */ jsx(
98
+ HeaderLink,
99
+ {
100
+ href: changeVersionUrl,
101
+ target: "_blank",
102
+ rel: "noopener noreferrer",
103
+ "aria-label": "Change version in Massdriver",
104
+ children: /* @__PURE__ */ jsx(LinkIcon, {})
105
+ }
106
+ )
107
+ }
108
+ ) : null
109
+ ] }),
110
+ /* @__PURE__ */ jsx(Card, { children: instance.status === "EXTERNAL" ? /* @__PURE__ */ jsx(ExternalNote, { children: "You cannot edit the version of a remote reference instance." }) : /* @__PURE__ */ jsxs(Fragment, { children: [
111
+ instance.bundle?.name ? /* @__PURE__ */ jsxs(RowLine, { children: [
112
+ /* @__PURE__ */ jsx(RowLabel, { children: "Bundle" }),
113
+ /* @__PURE__ */ jsxs(RowValueGroup, { children: [
114
+ /* @__PURE__ */ jsx(RowValue, { children: instance.bundle.name }),
115
+ repoUrl ? /* @__PURE__ */ jsx(
116
+ Tooltip,
117
+ {
118
+ arrow: true,
119
+ title: "View bundle in repository",
120
+ placement: "top",
121
+ children: /* @__PURE__ */ jsx(
122
+ RepoLink,
123
+ {
124
+ href: repoUrl,
125
+ target: "_blank",
126
+ rel: "noopener noreferrer",
127
+ "aria-label": "View bundle in repository",
128
+ children: /* @__PURE__ */ jsx(LinkIcon, {})
129
+ }
130
+ )
131
+ }
132
+ ) : null
133
+ ] })
134
+ ] }) : null,
135
+ /* @__PURE__ */ jsxs(RowLine, { children: [
136
+ /* @__PURE__ */ jsx(RowLabel, { children: "Version" }),
137
+ /* @__PURE__ */ jsxs(RowValueGroup, { children: [
138
+ /* @__PURE__ */ jsx(RowValue, { children: instance.resolvedVersion ? `v${instance.resolvedVersion}` : "\u2014" }),
139
+ instance.availableUpgrade ? /* @__PURE__ */ jsx(
140
+ Tooltip,
141
+ {
142
+ arrow: true,
143
+ title: `Upgrade available: v${instance.availableUpgrade}`,
144
+ children: /* @__PURE__ */ jsx(UpgradeBadge, { children: /* @__PURE__ */ jsx(UpArrow, {}) })
145
+ }
146
+ ) : null
147
+ ] })
148
+ ] }),
149
+ releaseChannel ? /* @__PURE__ */ jsxs(RowLine, { children: [
150
+ /* @__PURE__ */ jsx(RowLabel, { children: "Release channel" }),
151
+ /* @__PURE__ */ jsx(RowValue, { children: releaseChannel.channel })
152
+ ] }) : null
153
+ ] }) })
154
+ ] }),
155
+ /* @__PURE__ */ jsx(AttributesSection, { attributes: instance.effectiveAttributes }),
156
+ /* @__PURE__ */ jsx(
157
+ PropertiesSection,
158
+ {
159
+ status: instance.status,
160
+ hasAnyProperties: properties.length > 0,
161
+ view: propertiesView,
162
+ search,
163
+ onSearchChange: (value2) => {
164
+ setSearch(value2);
165
+ setPage(1);
166
+ },
167
+ onPrevPage: () => setPage((current) => Math.max(1, current - 1)),
168
+ onNextPage: () => setPage(
169
+ (current) => Math.min(propertiesView.totalPages, current + 1)
170
+ )
171
+ }
172
+ )
173
+ ] }) : null });
174
+ };
175
+ const AttributesSection = ({ attributes }) => {
176
+ const parsed = parseMap(attributes);
177
+ const entries = parsed ? Object.entries(parsed) : [];
178
+ return /* @__PURE__ */ jsxs(Section, { children: [
179
+ /* @__PURE__ */ jsx(Header, { children: "Instance attributes" }),
180
+ /* @__PURE__ */ jsx(Card, { children: entries.length === 0 ? /* @__PURE__ */ jsx(EmptyNote, { children: "No effective attributes." }) : entries.map(([key, value]) => /* @__PURE__ */ jsxs(RowLine, { children: [
181
+ /* @__PURE__ */ jsx(MonoLabel, { title: key, children: key }),
182
+ /* @__PURE__ */ jsx(MonoValue, { title: formatAttributeValue(value), children: formatAttributeValue(value) })
183
+ ] }, key)) })
184
+ ] });
185
+ };
186
+ const PropertiesSection = ({
187
+ status,
188
+ hasAnyProperties,
189
+ view,
190
+ search,
191
+ onSearchChange,
192
+ onPrevPage,
193
+ onNextPage
194
+ }) => {
195
+ const isInitialized = status === "INITIALIZED";
196
+ const isEmpty = view.items.length === 0;
197
+ return /* @__PURE__ */ jsxs(Section, { children: [
198
+ /* @__PURE__ */ jsx(Header, { children: "Resource properties" }),
199
+ status === "EXTERNAL" ? /* @__PURE__ */ jsx(
200
+ AlertBanner,
201
+ {
202
+ severity: "info",
203
+ description: "These are properties of the remote reference resources."
204
+ }
205
+ ) : null,
206
+ isInitialized ? /* @__PURE__ */ jsx(EmptyNote, { children: "You must provision this instance to see its created properties." }) : !hasAnyProperties ? /* @__PURE__ */ jsx(EmptyNote, { children: "This instance has no properties because it does not produce any resources." }) : /* @__PURE__ */ jsxs(Card, { children: [
207
+ /* @__PURE__ */ jsx(
208
+ SearchField,
209
+ {
210
+ fullWidth: true,
211
+ size: "small",
212
+ placeholder: "Search properties\u2026",
213
+ value: search,
214
+ onChange: (event) => onSearchChange(event.target.value),
215
+ InputProps: {
216
+ startAdornment: /* @__PURE__ */ jsx(InputAdornment, { position: "start", children: /* @__PURE__ */ jsx(SearchAdornmentIcon, {}) })
217
+ }
218
+ }
219
+ ),
220
+ isEmpty ? /* @__PURE__ */ jsx(EmptyNote, { children: "No properties match your search." }) : /* @__PURE__ */ jsx(PropList, { children: view.items.map((property, index) => /* @__PURE__ */ jsx(
221
+ PropertyItem,
222
+ {
223
+ name: property.name,
224
+ path: property.path,
225
+ value: property.value,
226
+ isLast: index === view.items.length - 1
227
+ },
228
+ `${property.name}-${property.path ?? index}`
229
+ )) }),
230
+ view.totalPages > 1 ? /* @__PURE__ */ jsxs(Pagination, { children: [
231
+ /* @__PURE__ */ jsxs(PageInfo, { children: [
232
+ "Page ",
233
+ view.page,
234
+ " of ",
235
+ view.totalPages
236
+ ] }),
237
+ /* @__PURE__ */ jsxs(PaginationButtons, { children: [
238
+ /* @__PURE__ */ jsx(
239
+ PageButton,
240
+ {
241
+ size: "small",
242
+ onClick: onPrevPage,
243
+ disabled: view.page === 1,
244
+ "aria-label": "Previous page",
245
+ children: /* @__PURE__ */ jsx(ChevronLeftIcon, { fontSize: "small" })
246
+ }
247
+ ),
248
+ /* @__PURE__ */ jsx(
249
+ PageButton,
250
+ {
251
+ size: "small",
252
+ onClick: onNextPage,
253
+ disabled: view.page === view.totalPages,
254
+ "aria-label": "Next page",
255
+ children: /* @__PURE__ */ jsx(ChevronRightIcon, { fontSize: "small" })
256
+ }
257
+ )
258
+ ] })
259
+ ] }) : null
260
+ ] })
261
+ ] });
262
+ };
263
+ const PropertyItem = ({
264
+ name,
265
+ path,
266
+ value,
267
+ isLast
268
+ }) => {
269
+ const [expanded, setExpanded] = useState(false);
270
+ const formatted = formatPropertyValue(value);
271
+ const isMultiline = formatted.includes("\n") || formatted.length > 160;
272
+ return /* @__PURE__ */ jsxs(PropContainer, { isLast, children: [
273
+ /* @__PURE__ */ jsxs(PropHeader, { children: [
274
+ /* @__PURE__ */ jsxs(PropContent, { children: [
275
+ /* @__PURE__ */ jsx(PropName, { title: name, children: name }),
276
+ !expanded ? /* @__PURE__ */ jsx(PropValueText, { title: formatted, children: formatted }) : null,
277
+ path ? /* @__PURE__ */ jsx(PropPath, { title: path, children: path }) : null
278
+ ] }),
279
+ /* @__PURE__ */ jsxs(PropActions, { children: [
280
+ value != null ? /* @__PURE__ */ jsx(CopyButton, { text: formatted, tooltip: "Copy value" }) : null,
281
+ isMultiline ? /* @__PURE__ */ jsx(
282
+ ExpandToggle,
283
+ {
284
+ expanded,
285
+ onClick: () => setExpanded((prev) => !prev),
286
+ size: "small",
287
+ "aria-label": expanded ? "Collapse value" : "Expand value",
288
+ children: /* @__PURE__ */ jsx(ExpandIcon, { fontSize: "inherit" })
289
+ }
290
+ ) : null
291
+ ] })
292
+ ] }),
293
+ expanded && isMultiline ? /* @__PURE__ */ jsx(PropExpanded, { children: /* @__PURE__ */ jsx(CodeBlock, { children: formatted }) }) : null
294
+ ] });
295
+ };
296
+ const Root = stylin(Box)(({ theme }) => ({
297
+ display: "flex",
298
+ flexDirection: "column",
299
+ padding: theme.spacing(1)
300
+ }));
301
+ const Section = stylin(Box)(({ theme }) => ({
302
+ display: "flex",
303
+ flexDirection: "column",
304
+ gap: theme.spacing(2),
305
+ marginBottom: theme.spacing(4)
306
+ }));
307
+ const Header = stylin(Typography)(({ theme }) => ({
308
+ fontSize: theme.typography.pxToRem(14),
309
+ fontWeight: theme.typography.fontWeightBold,
310
+ color: theme.palette.text.primary
311
+ }));
312
+ const SectionHeaderRow = stylin(Box)(({ theme }) => ({
313
+ display: "flex",
314
+ alignItems: "center",
315
+ gap: theme.spacing(1)
316
+ }));
317
+ const HeaderLink = stylin("a")(({ theme }) => ({
318
+ display: "inline-flex",
319
+ alignItems: "center",
320
+ color: theme.palette.text.secondary,
321
+ "&:hover": { color: theme.palette.primary.main }
322
+ }));
323
+ const RepoLink = stylin("a")(({ theme }) => ({
324
+ display: "inline-flex",
325
+ alignItems: "center",
326
+ color: theme.palette.text.secondary,
327
+ "&:hover": { color: theme.palette.primary.main }
328
+ }));
329
+ const LinkIcon = stylin(OpenInNewIcon)({
330
+ fontSize: 15
331
+ });
332
+ const AlertList = stylin(Box)(({ theme }) => ({
333
+ display: "flex",
334
+ flexDirection: "column",
335
+ gap: theme.spacing(2)
336
+ }));
337
+ const IdGrid = stylin(Box)(({ theme }) => ({
338
+ display: "grid",
339
+ gridTemplateColumns: "1fr",
340
+ [theme.breakpoints.up("sm")]: {
341
+ gridTemplateColumns: "repeat(2, minmax(0, 1fr))"
342
+ },
343
+ gap: theme.spacing(2)
344
+ }));
345
+ const Field = stylin(Box)(({ theme }) => ({
346
+ border: `1px solid ${theme.palette.divider}`,
347
+ borderRadius: 1,
348
+ padding: theme.spacing(1),
349
+ display: "flex",
350
+ flexDirection: "column",
351
+ gap: theme.spacing(0.5),
352
+ minWidth: 0
353
+ }));
354
+ const Label = stylin(Typography)(({ theme }) => ({
355
+ fontSize: theme.typography.pxToRem(11),
356
+ fontWeight: 600,
357
+ textTransform: "uppercase",
358
+ letterSpacing: "0.5px",
359
+ color: theme.palette.text.secondary
360
+ }));
361
+ const ValueRow = stylin(Box)(({ theme }) => ({
362
+ display: "flex",
363
+ alignItems: "center",
364
+ gap: theme.spacing(0.5),
365
+ minWidth: 0
366
+ }));
367
+ const Value = stylin(Typography)(({ theme }) => ({
368
+ fontSize: theme.typography.pxToRem(12),
369
+ color: theme.palette.text.primary,
370
+ overflow: "hidden",
371
+ textOverflow: "ellipsis",
372
+ whiteSpace: "nowrap",
373
+ flex: 1,
374
+ minWidth: 0
375
+ }));
376
+ const Description = stylin(Typography)(({ theme }) => ({
377
+ fontSize: theme.typography.pxToRem(12),
378
+ color: theme.palette.text.primary,
379
+ whiteSpace: "pre-wrap"
380
+ }));
381
+ const Card = stylin(Box)(({ theme }) => ({
382
+ border: `1px solid ${theme.palette.divider}`,
383
+ borderRadius: 1,
384
+ padding: theme.spacing(1),
385
+ display: "flex",
386
+ flexDirection: "column",
387
+ gap: theme.spacing(0.5),
388
+ overflow: "hidden"
389
+ }));
390
+ const RowLine = stylin(Box)(({ theme }) => ({
391
+ display: "flex",
392
+ alignItems: "center",
393
+ gap: theme.spacing(1),
394
+ flexWrap: "wrap",
395
+ minWidth: 0
396
+ }));
397
+ const RowValueGroup = stylin(Box)(({ theme }) => ({
398
+ display: "flex",
399
+ alignItems: "center",
400
+ gap: theme.spacing(0.5)
401
+ }));
402
+ const RowLabel = stylin(Typography)(({ theme }) => ({
403
+ fontSize: theme.typography.pxToRem(11),
404
+ color: theme.palette.text.secondary,
405
+ minWidth: 110
406
+ }));
407
+ const RowValue = stylin(Typography)(({ theme }) => ({
408
+ fontSize: theme.typography.pxToRem(12),
409
+ color: theme.palette.text.primary,
410
+ fontFamily: theme.typography.fontFamilyMono
411
+ }));
412
+ const MonoLabel = stylin(Typography)(({ theme }) => ({
413
+ fontSize: theme.typography.pxToRem(11),
414
+ color: theme.palette.text.secondary,
415
+ minWidth: 110,
416
+ fontFamily: theme.typography.fontFamilyMono,
417
+ overflow: "hidden",
418
+ textOverflow: "ellipsis",
419
+ whiteSpace: "nowrap"
420
+ }));
421
+ const MonoValue = stylin(Typography)(({ theme }) => ({
422
+ fontSize: theme.typography.pxToRem(12),
423
+ color: theme.palette.text.primary,
424
+ fontFamily: theme.typography.fontFamilyMono,
425
+ overflow: "hidden",
426
+ textOverflow: "ellipsis",
427
+ whiteSpace: "nowrap",
428
+ flex: 1,
429
+ minWidth: 0
430
+ }));
431
+ const ExternalNote = stylin(Typography)(({ theme }) => ({
432
+ fontSize: theme.typography.pxToRem(12),
433
+ color: theme.palette.text.secondary,
434
+ fontStyle: "italic"
435
+ }));
436
+ const UpgradeBadge = stylin(Box)(({ theme }) => ({
437
+ display: "inline-flex",
438
+ alignItems: "center",
439
+ justifyContent: "center",
440
+ width: 16,
441
+ height: 16,
442
+ color: theme.palette.success.main
443
+ }));
444
+ const UpArrow = stylin(ExpandCircleDownOutlinedIcon)({
445
+ width: 16,
446
+ height: 16,
447
+ transform: "rotate(180deg)"
448
+ });
449
+ const EmptyNote = stylin(Typography)(({ theme }) => ({
450
+ fontSize: theme.typography.pxToRem(12),
451
+ color: theme.palette.text.secondary,
452
+ fontStyle: "italic"
453
+ }));
454
+ const SearchField = stylin(TextField)(({ theme }) => ({
455
+ [`.${outlinedInputClasses.root}`]: {
456
+ fontSize: theme.typography.pxToRem(12),
457
+ borderRadius: 0,
458
+ "& fieldset": {
459
+ border: "none",
460
+ borderBottom: `1px solid ${theme.palette.divider}`
461
+ },
462
+ "&:hover fieldset": { borderBottom: `1px solid ${theme.palette.divider}` },
463
+ "&.Mui-focused fieldset": {
464
+ borderBottom: `1px solid ${theme.palette.divider}`
465
+ }
466
+ },
467
+ [`.${outlinedInputClasses.input}`]: {
468
+ paddingTop: theme.spacing(1),
469
+ paddingBottom: theme.spacing(1),
470
+ paddingRight: theme.spacing(1.5),
471
+ paddingLeft: 0
472
+ }
473
+ }));
474
+ const SearchAdornmentIcon = stylin(SearchIcon)(({ theme }) => ({
475
+ fontSize: 18,
476
+ color: theme.palette.text.disabled
477
+ }));
478
+ const PropList = stylin(Box)({
479
+ display: "flex",
480
+ flexDirection: "column"
481
+ });
482
+ const Pagination = stylin(Box)(({ theme }) => ({
483
+ display: "flex",
484
+ alignItems: "center",
485
+ justifyContent: "space-between",
486
+ padding: theme.spacing(1, 1.5),
487
+ borderTop: `1px solid ${theme.palette.divider}`,
488
+ backgroundColor: theme.palette.action.hover
489
+ }));
490
+ const PageInfo = stylin(Typography)(({ theme }) => ({
491
+ fontSize: theme.typography.pxToRem(11),
492
+ color: theme.palette.text.secondary
493
+ }));
494
+ const PaginationButtons = stylin(Box)(({ theme }) => ({
495
+ display: "flex",
496
+ alignItems: "center",
497
+ gap: theme.spacing(0.5)
498
+ }));
499
+ const PageButton = stylin(IconButton)(({ theme }) => ({
500
+ padding: theme.spacing(0.25),
501
+ border: `1px solid ${theme.palette.divider}`,
502
+ borderRadius: 0.5,
503
+ color: theme.palette.text.secondary
504
+ }));
505
+ const PropContainer = stylin(Box, ["isLast"])(
506
+ ({ theme, isLast }) => ({
507
+ borderBottom: isLast ? "none" : `1px solid ${theme.palette.divider}`
508
+ })
509
+ );
510
+ const PropHeader = stylin(Box)(({ theme }) => ({
511
+ display: "flex",
512
+ alignItems: "center",
513
+ gap: theme.spacing(1),
514
+ padding: theme.spacing(1, 1, 1, 1.5),
515
+ minHeight: 48
516
+ }));
517
+ const PropContent = stylin(Box)({
518
+ flex: 1,
519
+ minWidth: 0,
520
+ overflow: "hidden"
521
+ });
522
+ const PropName = stylin(Typography)(({ theme }) => ({
523
+ fontSize: theme.typography.pxToRem(12),
524
+ fontWeight: 500,
525
+ lineHeight: 1.4,
526
+ color: theme.palette.text.primary,
527
+ overflow: "hidden",
528
+ textOverflow: "ellipsis",
529
+ whiteSpace: "nowrap"
530
+ }));
531
+ const PropValueText = stylin(Typography)(({ theme }) => ({
532
+ fontSize: theme.typography.pxToRem(11),
533
+ lineHeight: 1.4,
534
+ marginTop: theme.spacing(0.25),
535
+ color: theme.palette.text.secondary,
536
+ fontFamily: theme.typography.fontFamilyMono,
537
+ overflow: "hidden",
538
+ textOverflow: "ellipsis",
539
+ whiteSpace: "nowrap"
540
+ }));
541
+ const PropPath = stylin(Typography)(({ theme }) => ({
542
+ fontSize: theme.typography.pxToRem(10),
543
+ lineHeight: 1.4,
544
+ color: theme.palette.text.disabled,
545
+ fontFamily: theme.typography.fontFamilyMono,
546
+ overflow: "hidden",
547
+ textOverflow: "ellipsis",
548
+ whiteSpace: "nowrap"
549
+ }));
550
+ const PropActions = stylin(Box)({
551
+ display: "flex",
552
+ alignItems: "center",
553
+ flexShrink: 0
554
+ });
555
+ const ExpandToggle = stylin(IconButton, ["expanded"])(
556
+ ({ theme, expanded }) => ({
557
+ padding: theme.spacing(0.75),
558
+ color: theme.palette.text.disabled,
559
+ transform: expanded ? "rotate(180deg)" : "rotate(0deg)",
560
+ transition: "transform 150ms ease"
561
+ })
562
+ );
563
+ const ExpandIcon = stylin(ExpandCircleDownOutlinedIcon)({
564
+ width: 18,
565
+ height: 18
566
+ });
567
+ const PropExpanded = stylin(Box)(({ theme }) => ({
568
+ padding: theme.spacing(0, 1, 1, 1.5)
569
+ }));
570
+
571
+ export { OverviewTab, OverviewTab as default };
572
+ //# sourceMappingURL=OverviewTab.esm.js.map