@skyhook-io/radar-app 1.7.0 → 1.8.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 (35) hide show
  1. package/package.json +8 -2
  2. package/src/App.tsx +58 -30
  3. package/src/components/ConnectionErrorView.tsx +5 -2
  4. package/src/components/DebugOverlay.tsx +4 -2
  5. package/src/components/UserMenu.tsx +5 -2
  6. package/src/components/audit/AuditSettingsDialog.tsx +14 -10
  7. package/src/components/audit/AuditView.tsx +3 -1
  8. package/src/components/compare/useCompareLauncher.tsx +6 -3
  9. package/src/components/cost/CostView.tsx +13 -4
  10. package/src/components/helm/ChartBrowser.tsx +6 -4
  11. package/src/components/helm/HelmReleaseDrawer.tsx +25 -13
  12. package/src/components/helm/HelmView.tsx +3 -2
  13. package/src/components/helm/InstallWizard.tsx +3 -2
  14. package/src/components/helm/OwnedResources.tsx +24 -13
  15. package/src/components/helm/RevisionHistory.tsx +2 -1
  16. package/src/components/helm/ValuesViewer.tsx +4 -2
  17. package/src/components/home/ClusterHealthCard.tsx +21 -18
  18. package/src/components/home/HelmSummary.tsx +3 -1
  19. package/src/components/home/MCPSetupDialog.tsx +10 -4
  20. package/src/components/nav/PrimaryNavRail.tsx +5 -2
  21. package/src/components/portforward/PortForwardButton.tsx +14 -8
  22. package/src/components/resource/PrometheusChartsGrid.tsx +9 -2
  23. package/src/components/resource/RestartChart.tsx +6 -5
  24. package/src/components/resource/RightsizingStrip.tsx +4 -1
  25. package/src/components/resource-drawer/ResourceDrawer.tsx +3 -1
  26. package/src/components/resources/ImageFilesystemModal.tsx +16 -8
  27. package/src/components/resources/PodFilesystemModal.tsx +4 -2
  28. package/src/components/settings/SettingsDialog.tsx +371 -141
  29. package/src/components/traffic/TrafficFilterSidebar.tsx +8 -43
  30. package/src/components/traffic/TrafficFlowList.tsx +13 -4
  31. package/src/components/traffic/TrafficGraph.tsx +8 -3
  32. package/src/components/traffic/TrafficView.tsx +4 -2
  33. package/src/components/ui/Omnibar.tsx +0 -1
  34. package/src/components/workload/WorkloadView.tsx +15 -10
  35. package/src/context/NavCustomization.tsx +19 -5
@@ -7,6 +7,7 @@ import { useImageMetadata, ApiError } from '../../api/client'
7
7
  import type { FileNode, ImageFilesystem } from '../../types'
8
8
  import { formatBytes } from '../../utils/format'
9
9
  import { downloadBlob, filterTree } from './file-browser-utils'
10
+ import { Tooltip } from '../ui/Tooltip'
10
11
  import { apiUrl, getAuthHeaders, getCredentialsMode } from '../../api/config'
11
12
 
12
13
  // Manual fetch function for filesystem (not a hook - gives us full control)
@@ -141,9 +142,11 @@ export function ImageFilesystemModal({
141
142
  <div className="flex items-center justify-between p-4 border-b border-theme-border shrink-0">
142
143
  <div className="flex-1 min-w-0">
143
144
  <h3 className="text-lg font-semibold text-theme-text-primary">Image Filesystem</h3>
144
- <p className="text-sm text-theme-text-secondary truncate mt-0.5" title={image}>
145
+ <Tooltip content={image} wrapperClassName="!block w-full">
146
+ <p className="text-sm text-theme-text-secondary truncate mt-0.5">
145
147
  {image}
146
148
  </p>
149
+ </Tooltip>
147
150
  {(displayFilesystem?.platform || metadata?.platform) && (
148
151
  <p className="text-xs text-theme-text-tertiary mt-1">
149
152
  Platform: {displayFilesystem?.platform || metadata?.platform}
@@ -245,9 +248,11 @@ export function ImageFilesystemModal({
245
248
  <span>{formatBytes(displayFilesystem.totalSize)}</span>
246
249
  {displayFilesystem.layers && <span>{displayFilesystem.layers.length} layers</span>}
247
250
  {displayFilesystem.digest && (
248
- <span className="truncate" title={displayFilesystem.digest}>
251
+ <Tooltip content={displayFilesystem.digest} wrapperClassName="min-w-0">
252
+ <span className="truncate">
249
253
  Digest: {displayFilesystem.digest.substring(0, 20)}...
250
254
  </span>
255
+ </Tooltip>
251
256
  )}
252
257
  </>
253
258
  )}
@@ -362,10 +367,10 @@ function DownloadConfirmation({ metadata, onConfirm, onCancel }: DownloadConfirm
362
367
  <pre className="bg-theme-elevated rounded p-3 text-xs text-theme-text-primary overflow-x-auto font-mono">
363
368
  {authCommand}
364
369
  </pre>
370
+ <Tooltip content="Copy to clipboard" position="left" wrapperClassName="absolute top-2 right-2">
365
371
  <button
366
372
  onClick={handleCopy}
367
- className="absolute top-2 right-2 p-1.5 text-theme-text-tertiary hover:text-theme-text-primary hover:bg-theme-base rounded transition-colors"
368
- title="Copy to clipboard"
373
+ className="p-1.5 text-theme-text-tertiary hover:text-theme-text-primary hover:bg-theme-base rounded transition-colors"
369
374
  >
370
375
  {copied ? (
371
376
  <Check className="w-4 h-4 text-green-400" />
@@ -373,6 +378,7 @@ function DownloadConfirmation({ metadata, onConfirm, onCancel }: DownloadConfirm
373
378
  <Copy className="w-4 h-4" />
374
379
  )}
375
380
  </button>
381
+ </Tooltip>
376
382
  </div>
377
383
  </div>
378
384
  )}
@@ -461,10 +467,10 @@ function AuthenticationHelp({ image, registryType, onRetry }: AuthenticationHelp
461
467
  <pre className="bg-theme-elevated rounded p-3 text-xs text-theme-text-primary overflow-x-auto font-mono">
462
468
  {authCommand}
463
469
  </pre>
470
+ <Tooltip content="Copy to clipboard" position="left" wrapperClassName="absolute top-2 right-2">
464
471
  <button
465
472
  onClick={handleCopy}
466
- className="absolute top-2 right-2 p-1.5 text-theme-text-tertiary hover:text-theme-text-primary hover:bg-theme-base rounded transition-colors"
467
- title="Copy to clipboard"
473
+ className="p-1.5 text-theme-text-tertiary hover:text-theme-text-primary hover:bg-theme-base rounded transition-colors"
468
474
  >
469
475
  {copied ? (
470
476
  <Check className="w-4 h-4 text-green-400" />
@@ -472,6 +478,7 @@ function AuthenticationHelp({ image, registryType, onRetry }: AuthenticationHelp
472
478
  <Copy className="w-4 h-4" />
473
479
  )}
474
480
  </button>
481
+ </Tooltip>
475
482
  </div>
476
483
  </div>
477
484
  )}
@@ -709,11 +716,11 @@ function FileTreeNode({ node, depth, defaultExpanded = true, image, namespace, p
709
716
  )}
710
717
 
711
718
  {isFile && (
719
+ <Tooltip content="Download file" wrapperClassName="ml-1">
712
720
  <button
713
721
  onClick={handleDownload}
714
722
  disabled={downloading}
715
- className="p-1 text-theme-text-tertiary hover:text-blue-400 hover:bg-theme-elevated rounded ml-1 disabled:opacity-50"
716
- title="Download file"
723
+ className="p-1 text-theme-text-tertiary hover:text-blue-400 hover:bg-theme-elevated rounded disabled:opacity-50 disabled:pointer-events-none"
717
724
  >
718
725
  {downloading ? (
719
726
  <Loader2 className="w-3.5 h-3.5 animate-spin" />
@@ -721,6 +728,7 @@ function FileTreeNode({ node, depth, defaultExpanded = true, image, namespace, p
721
728
  <Download className="w-3.5 h-3.5" />
722
729
  )}
723
730
  </button>
731
+ </Tooltip>
724
732
  )}
725
733
  </div>
726
734
 
@@ -7,6 +7,7 @@ import type { FileNode } from '../../types'
7
7
  import { formatBytes } from '../../utils/format'
8
8
  import { downloadBlob, filterTree } from './file-browser-utils'
9
9
  import { apiUrl, getAuthHeaders, getCredentialsMode } from '../../api/config'
10
+ import { Tooltip } from '../ui/Tooltip'
10
11
 
11
12
  interface PodFilesystem {
12
13
  root: FileNode
@@ -384,11 +385,11 @@ function PodFileTreeNode({ node, namespace, podName, container, onNavigate }: Po
384
385
  )}
385
386
 
386
387
  {isDownloadable && (
388
+ <Tooltip content="Download file" wrapperClassName="ml-1">
387
389
  <button
388
390
  onClick={handleDownload}
389
391
  disabled={downloading}
390
- className="p-1 text-theme-text-tertiary hover:text-blue-400 hover:bg-theme-elevated rounded ml-1 disabled:opacity-50"
391
- title="Download file"
392
+ className="p-1 text-theme-text-tertiary hover:text-blue-400 hover:bg-theme-elevated rounded disabled:opacity-50 disabled:pointer-events-none"
392
393
  >
393
394
  {downloading ? (
394
395
  <Loader2 className="w-3.5 h-3.5 animate-spin" />
@@ -396,6 +397,7 @@ function PodFileTreeNode({ node, namespace, podName, container, onNavigate }: Po
396
397
  <Download className="w-3.5 h-3.5" />
397
398
  )}
398
399
  </button>
400
+ </Tooltip>
399
401
  )}
400
402
  </div>
401
403
  )