@skyhook-io/radar-app 0.2.1 → 0.3.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 (180) hide show
  1. package/README.md +7 -1
  2. package/package.json +33 -25
  3. package/src/App.tsx +1449 -382
  4. package/src/RadarApp.tsx +132 -19
  5. package/src/api/apiResources.ts +1 -1
  6. package/src/api/client.argoResourceSync.test.ts +69 -0
  7. package/src/api/client.delta.test.ts +89 -0
  8. package/src/api/client.deltaSync.test.ts +216 -0
  9. package/src/api/client.metrics.test.ts +106 -0
  10. package/src/api/client.rightsizing.test.ts +32 -0
  11. package/src/api/client.ts +2730 -271
  12. package/src/api/client.yaml.test.ts +45 -0
  13. package/src/api/diagnose.ts +289 -0
  14. package/src/api/quotas.ts +16 -0
  15. package/src/api/rbac.ts +57 -0
  16. package/src/api/timelineSource.test.ts +217 -0
  17. package/src/api/timelineSource.ts +582 -0
  18. package/src/assets/platform-icons/aws_eks.png +0 -0
  19. package/src/assets/platform-icons/azure-aks.svg +2 -0
  20. package/src/assets/platform-icons/google_kubernetes_engine.png +0 -0
  21. package/src/components/ConnectionErrorView.tsx +186 -70
  22. package/src/components/ContextSwitcher.tsx +63 -18
  23. package/src/components/DebugOverlay.tsx +5 -3
  24. package/src/components/NamespaceSwitcher.tsx +41 -0
  25. package/src/components/UserMenu.tsx +69 -21
  26. package/src/components/applications/ApplicationsView.tsx +936 -0
  27. package/src/components/audit/AuditSettingsDialog.tsx +79 -17
  28. package/src/components/audit/AuditView.tsx +65 -62
  29. package/src/components/compare/CompareViewRoute.tsx +124 -0
  30. package/src/components/compare/useCompareCandidates.ts +27 -0
  31. package/src/components/compare/useCompareLauncher.tsx +79 -0
  32. package/src/components/cost/ApplicationCostTab.test.ts +204 -0
  33. package/src/components/cost/ApplicationCostTab.tsx +571 -0
  34. package/src/components/cost/CostTrendChart.tsx +106 -75
  35. package/src/components/cost/CostView.test.ts +12 -0
  36. package/src/components/cost/CostView.tsx +507 -223
  37. package/src/components/cost/CostViewTabs.test.tsx +21 -0
  38. package/src/components/cost/CostViewTabs.tsx +40 -0
  39. package/src/components/cost/CurrentAllocationUse.test.ts +21 -0
  40. package/src/components/cost/CurrentAllocationUse.tsx +126 -0
  41. package/src/components/cost/WorkloadCostTab.test.ts +153 -0
  42. package/src/components/cost/WorkloadCostTab.tsx +372 -0
  43. package/src/components/cost/cloud-console.test.ts +39 -0
  44. package/src/components/cost/cloud-console.ts +81 -0
  45. package/src/components/cost/errors.ts +8 -0
  46. package/src/components/cost/format.test.ts +27 -0
  47. package/src/components/cost/format.ts +46 -0
  48. package/src/components/cost/kinds.ts +5 -0
  49. package/src/components/curl/ServiceCurlButton.tsx +445 -0
  50. package/src/components/diagnose/AISettings.tsx +147 -0
  51. package/src/components/diagnose/DiagnoseContext.tsx +495 -0
  52. package/src/components/diagnose/DiagnoseSurface.tsx +394 -0
  53. package/src/components/diagnose/Home.tsx +163 -0
  54. package/src/components/diagnose/InvestigationView.tsx +622 -0
  55. package/src/components/diagnose/LocalDiagnoseAction.tsx +162 -0
  56. package/src/components/diagnose/launch.ts +65 -0
  57. package/src/components/diagnose/parts.tsx +1756 -0
  58. package/src/components/dock/BottomDock.tsx +2 -3
  59. package/src/components/dock/DockContext.tsx +1 -0
  60. package/src/components/dock/TerminalTab.tsx +1 -1
  61. package/src/components/dock/WorkloadLogsTab.tsx +21 -5
  62. package/src/components/dock/index.ts +1 -1
  63. package/src/components/execution/BatchExecutionView.test.ts +170 -0
  64. package/src/components/execution/BatchExecutionView.tsx +1329 -0
  65. package/src/components/execution/batch-run-actions.test.ts +48 -0
  66. package/src/components/execution/batch-run-actions.ts +24 -0
  67. package/src/components/execution/batch-timeline.test.ts +57 -0
  68. package/src/components/execution/batch-timeline.ts +46 -0
  69. package/src/components/execution/execution-definition.test.ts +208 -0
  70. package/src/components/execution/execution-definition.ts +245 -0
  71. package/src/components/gitops/ArgoResourceDiffLoader.tsx +23 -0
  72. package/src/components/gitops/GitOpsView.tsx +1042 -0
  73. package/src/components/gitops/RevisionMetaChip.tsx +63 -0
  74. package/src/components/helm/ChartBrowser.tsx +87 -31
  75. package/src/components/helm/HelmCompareRoute.tsx +1341 -0
  76. package/src/components/helm/HelmReleaseDrawer.test.ts +17 -0
  77. package/src/components/helm/HelmReleaseDrawer.tsx +1073 -102
  78. package/src/components/helm/HelmView.tsx +237 -96
  79. package/src/components/helm/InstallWizard.tsx +94 -38
  80. package/src/components/helm/ManifestDiffViewer.tsx +8 -27
  81. package/src/components/helm/OwnedResources.tsx +34 -59
  82. package/src/components/helm/RevisionHistory.tsx +52 -3
  83. package/src/components/helm/RoleGatedPanel.tsx +3 -3
  84. package/src/components/helm/TrackChartSourceDialog.tsx +185 -0
  85. package/src/components/helm/ValuesDiffPreview.tsx +17 -7
  86. package/src/components/helm/ValuesViewer.tsx +49 -53
  87. package/src/components/helm/helm-utils.ts +4 -0
  88. package/src/components/home/ActivitySummary.tsx +4 -1
  89. package/src/components/home/ClusterHealthCard.tsx +116 -52
  90. package/src/components/home/CostCard.tsx +21 -36
  91. package/src/components/home/GitOpsControllersCard.tsx +110 -0
  92. package/src/components/home/HelmSummary.tsx +3 -1
  93. package/src/components/home/HomeView.tsx +339 -105
  94. package/src/components/home/MCPSetupDialog.tsx +29 -87
  95. package/src/components/home/TrafficSummary.tsx +2 -2
  96. package/src/components/home/mcpToolCatalog.ts +333 -0
  97. package/src/components/issues/IssuesPane.tsx +151 -0
  98. package/src/components/logs/LogsViewer.tsx +4 -1
  99. package/src/components/logs/ScheduledWorkloadLogsViewer.tsx +135 -0
  100. package/src/components/logs/WorkloadLogsViewer.tsx +4 -1
  101. package/src/components/nav/PrimaryNavRail.tsx +285 -0
  102. package/src/components/portforward/PortForwardButton.tsx +118 -47
  103. package/src/components/portforward/PortForwardManager.tsx +253 -131
  104. package/src/components/resource/HPACharts.tsx +237 -0
  105. package/src/components/resource/PVCUsageBar.tsx +59 -0
  106. package/src/components/resource/PrometheusCharts.tsx +160 -584
  107. package/src/components/resource/PrometheusChartsGrid.tsx +270 -0
  108. package/src/components/resource/RestartChart.tsx +133 -0
  109. package/src/components/resource/RightsizingStrip.test.ts +109 -0
  110. package/src/components/resource/RightsizingStrip.tsx +363 -0
  111. package/src/components/resource-drawer/ResourceDrawer.tsx +3 -1
  112. package/src/components/resources/CompositeRenderer.tsx +101 -0
  113. package/src/components/resources/ImageFilesystemModal.tsx +19 -12
  114. package/src/components/resources/PodFilesystemModal.tsx +6 -5
  115. package/src/components/resources/ResourceDetailDrawer.tsx +13 -3
  116. package/src/components/resources/ResourcesView.tsx +194 -17
  117. package/src/components/resources/renderers/CronWorkflowRenderer.tsx +1 -0
  118. package/src/components/resources/renderers/HPARenderer.tsx +20 -1
  119. package/src/components/resources/renderers/NamespaceRenderer.tsx +31 -0
  120. package/src/components/resources/renderers/NodeRenderer.tsx +10 -4
  121. package/src/components/resources/renderers/PVCRenderer.tsx +19 -1
  122. package/src/components/resources/renderers/PodRenderer.tsx +30 -6
  123. package/src/components/resources/renderers/RoleBindingRenderer.tsx +45 -1
  124. package/src/components/resources/renderers/RoleRenderer.tsx +27 -1
  125. package/src/components/resources/renderers/ServiceAccountRenderer.tsx +28 -1
  126. package/src/components/resources/renderers/ServiceRenderer.tsx +81 -8
  127. package/src/components/resources/renderers/WorkloadRenderer.tsx +51 -4
  128. package/src/components/resources/renderers/index.ts +2 -0
  129. package/src/components/resources/resource-utils.ts +2 -1
  130. package/src/components/rightsizing/RightsizingScanView.tsx +938 -0
  131. package/src/components/rightsizing/copy.test.ts +56 -0
  132. package/src/components/rightsizing/model.test.ts +227 -0
  133. package/src/components/rightsizing/model.ts +158 -0
  134. package/src/components/rightsizing/presentation.test.ts +104 -0
  135. package/src/components/rightsizing/presentation.ts +94 -0
  136. package/src/components/settings/MyPermissionsDialog.tsx +241 -0
  137. package/src/components/settings/SettingsDialog.tsx +1505 -165
  138. package/src/components/shared/CreateResourceDialog.tsx +9 -2
  139. package/src/components/shared/LargeClusterNamespacePicker.tsx +3 -3
  140. package/src/components/timeline/LocalTimelineScrubber.tsx +212 -0
  141. package/src/components/timeline/RetainedTimelineScrubber.tsx +311 -0
  142. package/src/components/timeline/TimelineList.tsx +86 -13
  143. package/src/components/timeline/TimelineSwimlanes.tsx +9 -1299
  144. package/src/components/timeline/TimelineView.tsx +873 -24
  145. package/src/components/timeline/TimelineView.urlparams.test.ts +335 -0
  146. package/src/components/traffic/TrafficFilterSidebar.tsx +10 -45
  147. package/src/components/traffic/TrafficFlowList.tsx +29 -15
  148. package/src/components/traffic/TrafficGraph.tsx +42 -24
  149. package/src/components/traffic/TrafficView.tsx +32 -19
  150. package/src/components/ui/CommandPalette.tsx +8 -215
  151. package/src/components/ui/DiagnosticsOverlay.tsx +219 -9
  152. package/src/components/ui/Markdown.tsx +3 -3
  153. package/src/components/ui/Omnibar.tsx +602 -0
  154. package/src/components/ui/RadarOmnibar.tsx +52 -0
  155. package/src/components/ui/SearchSyntaxHelp.tsx +89 -0
  156. package/src/components/ui/ShortcutHelpOverlay.tsx +3 -2
  157. package/src/components/ui/UpdateNotification.tsx +48 -36
  158. package/src/components/ui/command-items.ts +178 -0
  159. package/src/components/workload/WorkloadView.tsx +1342 -158
  160. package/src/context/ConnectionContext.tsx +146 -21
  161. package/src/context/DiagnoseCustomization.tsx +93 -0
  162. package/src/context/NavCustomization.tsx +75 -0
  163. package/src/context/TimelineSource.tsx +50 -0
  164. package/src/contexts/CapabilitiesContext.tsx +38 -8
  165. package/src/filter/FilterLocationBridge.tsx +30 -0
  166. package/src/hooks/useClusterLoadState.ts +73 -0
  167. package/src/hooks/useDocumentTitle.ts +25 -0
  168. package/src/hooks/useEventSource.ts +6 -0
  169. package/src/hooks/useKeyboardShortcuts.tsx +1 -0
  170. package/src/hooks/useMediaQuery.ts +21 -0
  171. package/src/hooks/useNavRailPinned.ts +46 -0
  172. package/src/hooks/useRecentResources.ts +49 -0
  173. package/src/index.css +162 -1
  174. package/src/index.ts +73 -1
  175. package/src/main.tsx +7 -5
  176. package/src/types/clusterLoadState.ts +33 -0
  177. package/src/types.ts +2 -0
  178. package/src/utils/auditBadges.ts +53 -0
  179. package/src/utils/navigation.ts +64 -1
  180. package/src/components/ui/NamespaceSelector.tsx +0 -436
package/README.md CHANGED
@@ -38,6 +38,12 @@ export function ClusterPage({ clusterId }: { clusterId: string }) {
38
38
 
39
39
  See `RadarAppProps` + `NavCustomization` in the type declarations for the full surface.
40
40
 
41
+ ## Embedding notes
42
+
43
+ When `navSlots.embedded` is true, Radar sizes itself to the host container (`height: 100%`) instead of owning the browser viewport. Mount it inside a container with a definite height so the host chrome owns the page scrollbar.
44
+
45
+ Chromeless hosts (`navSlots.chrome = 'none'`) can pass `onClusterLoadStateChange` and render `state.message` in their own topbar while Radar finishes loading deferred cluster resources.
46
+
41
47
  ## Tailwind
42
48
 
43
49
  Radar uses Tailwind v4 classes throughout. Your app's Tailwind config must scan Radar's source:
@@ -64,4 +70,4 @@ Call these before mounting `<RadarApp>`.
64
70
 
65
71
  ## Backwards compatibility
66
72
 
67
- The `RadarApp` props (`apiBase`, `basename`, `router`, `navSlots`, `queryClient`) and the runtime-config setters are the stable surface. Adding to them is fine; removing or renaming is a breaking change.
73
+ The `RadarApp` props (`apiBase`, `basename`, `router`, `navSlots`, `queryClient`, `manageDocumentTitle`, `documentTitleSuffix`, `initialPath`, `onClusterLoadStateChange`) and the runtime-config setters are the stable surface. Adding to them is fine; removing or renaming is a breaking change.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skyhook-io/radar-app",
3
- "version": "0.2.1",
3
+ "version": "0.3.1",
4
4
  "description": "Radar's full web UI as a reusable React component. Used by Radar's own binary and by external consumers like Radar Cloud.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -20,25 +20,28 @@
20
20
  ],
21
21
  "scripts": {
22
22
  "dev": "vite",
23
- "build": "tsc && vite build",
23
+ "build": "npm run tsc && vite build",
24
24
  "preview": "vite preview",
25
- "tsc": "tsc --noEmit",
25
+ "tsc": "node ../node_modules/typescript-7/bin/tsc --noEmit",
26
+ "tsc:ts6": "tsc --noEmit",
27
+ "test": "vitest run src",
26
28
  "format": "prettier --write \"src/**/*.{ts,tsx}\"",
27
- "lint": "eslint src --ext ts,tsx"
29
+ "lint": "eslint src && node scripts/check-no-native-title.mjs"
28
30
  },
29
31
  "dependencies": {
30
32
  "@fontsource-variable/dm-sans": "^5.2.8",
31
33
  "@fontsource/dm-mono": "^5.2.7",
32
34
  "@monaco-editor/react": "^4.7.0",
33
35
  "diff": "^9.0.0",
36
+ "monaco-editor": "0.55.1",
34
37
  "react-markdown": "^10.1.0",
35
- "react-virtuoso": "^4.18.5",
38
+ "react-virtuoso": "^4.18.11",
36
39
  "remark-gfm": "^4.0.1",
37
- "shiki": "^4.0.1",
38
- "yaml": "^2.8.3"
40
+ "shiki": "^4.2.0",
41
+ "yaml": "^2.9.0"
39
42
  },
40
43
  "peerDependencies": {
41
- "@skyhook-io/k8s-ui": ">=1.5.0",
44
+ "@skyhook-io/k8s-ui": ">=1.8.15",
42
45
  "@tanstack/react-query": ">=5",
43
46
  "@xyflow/react": ">=12.0.0",
44
47
  "clsx": ">=2",
@@ -50,29 +53,34 @@
50
53
  "tailwind-merge": ">=2"
51
54
  },
52
55
  "devDependencies": {
56
+ "@eslint/js": "^10.0.1",
53
57
  "@playwright/test": "^1.59.1",
54
58
  "@skyhook-io/k8s-ui": "*",
55
- "@tailwindcss/typography": "^0.5.19",
56
- "@tailwindcss/vite": "^4.2.4",
57
- "@tanstack/react-query": "^5.99.0",
58
- "@types/diff": "^8.0.0",
59
- "@types/node": "^25.5.0",
60
- "@types/react": "^19.2.14",
59
+ "@tailwindcss/typography": "^0.5.20",
60
+ "@tailwindcss/vite": "^4.3.1",
61
+ "@tanstack/react-query": "^5.101.2",
62
+ "@types/node": "^26.1.1",
63
+ "@types/react": "^19.2.17",
61
64
  "@types/react-dom": "^19.2.3",
62
- "@vitejs/plugin-react": "^6.0.1",
63
- "@xyflow/react": "^12.10.2",
65
+ "@vitejs/plugin-react": "^6.0.2",
66
+ "@xyflow/react": "^12.11.2",
64
67
  "clsx": "^2.1.1",
65
68
  "elkjs": "^0.11.1",
66
- "lucide-react": "^1.8.0",
67
- "postcss": "^8.5.8",
68
- "prettier": "^3.8.1",
69
- "react": "^19.2.5",
70
- "react-dom": "^19.2.5",
71
- "react-router-dom": "^7.14.2",
72
- "tailwind-merge": "^3.5.0",
73
- "tailwindcss": "^4.2.4",
69
+ "eslint": "^10.6.0",
70
+ "eslint-plugin-react-hooks": "^7.1.1",
71
+ "eslint-plugin-react-refresh": "^0.5.3",
72
+ "globals": "^17.7.0",
73
+ "lucide-react": "^1.24.0",
74
+ "postcss": "^8.5.16",
75
+ "prettier": "^3.9.5",
76
+ "react": "^19.2.7",
77
+ "react-dom": "^19.2.7",
78
+ "react-router-dom": "^7.18.1",
79
+ "tailwind-merge": "^3.6.0",
80
+ "tailwindcss": "^4.3.1",
74
81
  "typescript": "^6.0.2",
75
- "vite": "^8.0.9"
82
+ "typescript-eslint": "^8.62.0",
83
+ "vite": "^8.1.5"
76
84
  },
77
85
  "sideEffects": [
78
86
  "*.css"