@skyhook-io/radar-app 1.13.5 → 1.14.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.
- package/package.json +8 -8
- package/src/App.tsx +60 -24
- package/src/api/client.authRedirect.test.ts +12 -1
- package/src/api/client.prometheusStatus.test.ts +24 -0
- package/src/api/client.ts +321 -16
- package/src/api/diagnose.ts +1 -0
- package/src/api/drain-plan.test.ts +86 -0
- package/src/api/quotas.test.ts +26 -0
- package/src/api/quotas.ts +20 -0
- package/src/api/workloadMetrics.test.ts +40 -0
- package/src/api/workloadMetrics.ts +68 -0
- package/src/components/CloudConnectFlow.tsx +179 -42
- package/src/components/CloudFunnelButton.tsx +107 -36
- package/src/components/SyncProgressPanel.tsx +73 -0
- package/src/components/audit/AuditView.tsx +2 -0
- package/src/components/cloudConnectHandoff.test.ts +140 -0
- package/src/components/cloudConnectHandoff.ts +124 -0
- package/src/components/diagnose/DiagnoseContext.tsx +2 -1
- package/src/components/diagnose/investigationEvidence/adapters/changes.ts +60 -0
- package/src/components/diagnose/investigationEvidence/adapters/diagnose.test.ts +573 -0
- package/src/components/diagnose/investigationEvidence/adapters/diagnose.ts +935 -0
- package/src/components/diagnose/investigationEvidence/adapters/events.ts +96 -0
- package/src/components/diagnose/investigationEvidence/adapters/helm.test.ts +242 -0
- package/src/components/diagnose/investigationEvidence/adapters/helm.ts +208 -0
- package/src/components/diagnose/investigationEvidence/adapters/issues.ts +172 -0
- package/src/components/diagnose/investigationEvidence/adapters/logs.test.ts +283 -0
- package/src/components/diagnose/investigationEvidence/adapters/logs.ts +183 -0
- package/src/components/diagnose/investigationEvidence/adapters/permissions.test.ts +528 -0
- package/src/components/diagnose/investigationEvidence/adapters/permissions.ts +292 -0
- package/src/components/diagnose/investigationEvidence/adapters/prometheus.test.ts +1641 -0
- package/src/components/diagnose/investigationEvidence/adapters/prometheus.ts +769 -0
- package/src/components/diagnose/investigationEvidence/adapters/resource.test.ts +54 -0
- package/src/components/diagnose/investigationEvidence/adapters/resource.ts +257 -0
- package/src/components/diagnose/investigationEvidence/adapters/topology.ts +207 -0
- package/src/components/diagnose/investigationEvidence/builder.ts +418 -0
- package/src/components/diagnose/investigationEvidence/evidenceFixtures.ts +179 -0
- package/src/components/diagnose/investigationEvidence/identity.test.ts +614 -0
- package/src/components/diagnose/investigationEvidence/identity.ts +261 -0
- package/src/components/diagnose/investigationEvidence/index.ts +55 -0
- package/src/components/diagnose/investigationEvidence/observations.ts +954 -0
- package/src/components/diagnose/investigationEvidence/parse.ts +467 -0
- package/src/components/diagnose/investigationEvidence/projection.test.ts +2703 -0
- package/src/components/diagnose/investigationEvidence/types.ts +512 -0
- package/src/components/diagnose/target.test.ts +19 -0
- package/src/components/diagnose/target.ts +3 -2
- package/src/components/gitops/GitOpsView.tsx +7 -0
- package/src/components/gitops/RemoteDestinationCloudHint.tsx +26 -0
- package/src/components/resource/PrometheusCharts.overlays.test.ts +22 -0
- package/src/components/resource/PrometheusCharts.tsx +4 -3
- package/src/components/resource/PrometheusChartsGrid.render.test.tsx +99 -0
- package/src/components/resource/PrometheusChartsGrid.tsx +75 -35
- package/src/components/resource/RightsizingStrip.test.ts +38 -0
- package/src/components/resource/RightsizingStrip.tsx +15 -3
- package/src/components/resource/WorkloadMetricsHelpDialog.test.tsx +79 -0
- package/src/components/resource/WorkloadMetricsHelpDialog.tsx +145 -0
- package/src/components/resource/WorkloadMetricsSection.render.test.tsx +351 -0
- package/src/components/resource/WorkloadMetricsSection.tsx +486 -0
- package/src/components/resource/workloadMetricValues.test.ts +65 -0
- package/src/components/resource/workloadMetricValues.ts +30 -0
- package/src/components/resources/ResourcesView.tsx +44 -6
- package/src/components/resources/renderers/NamespaceRenderer.tsx +7 -1
- package/src/components/resources/renderers/PodRenderer.tsx +4 -0
- package/src/components/resources/renderers/RolloutRenderer.tsx +15 -1
- package/src/components/resources/renderers/WorkloadRenderer.tsx +3 -0
- package/src/components/rightsizing/RightsizingScanView.tsx +21 -0
- package/src/components/settings/SettingsDialog.tsx +94 -14
- package/src/components/traffic/TrafficFlowList.tsx +229 -70
- package/src/components/traffic/TrafficGraph.tsx +6 -6
- package/src/components/traffic/TrafficView.tsx +10 -9
- package/src/components/traffic/trafficFilters.test.ts +28 -1
- package/src/components/traffic/trafficFilters.ts +31 -0
- package/src/components/workload/WorkloadView.tsx +19 -8
- package/src/context/ConnectionContext.tsx +48 -3
- package/src/context/DiagnoseCustomization.tsx +1 -0
- package/src/index.css +17 -0
- package/src/utils/navigation.ts +1 -1
- package/src/utils/topology-namespace.test.ts +64 -0
- package/src/utils/topology-namespace.ts +18 -0
- package/src/components/diagnose/investigationEvidence.test.ts +0 -6617
- package/src/components/diagnose/investigationEvidence.ts +0 -5572
- package/src/components/gitops/GitOpsActions.tsx +0 -1
- package/src/components/gitops/GitOpsStatusBadge.tsx +0 -1
- package/src/components/gitops/ManagedResourcesList.tsx +0 -1
- package/src/components/gitops/SyncCountdown.tsx +0 -1
- package/src/components/gitops/index.ts +0 -4
- package/src/components/helm/ManifestDiffViewer.tsx +0 -69
- package/src/components/logs/JsonLogLine.tsx +0 -1
- package/src/components/logs/LogCore.tsx +0 -2
- package/src/components/logs/useLogBuffer.ts +0 -2
- package/src/components/logs/useLogSearch.ts +0 -1
- package/src/components/resource-drawer/ResourceDrawer.tsx +0 -216
- package/src/components/resources/drawer-components.tsx +0 -1
- package/src/components/resources/renderers/AlertRenderer.tsx +0 -1
- package/src/components/resources/renderers/CNPGBackupRenderer.tsx +0 -1
- package/src/components/resources/renderers/CNPGPoolerRenderer.tsx +0 -1
- package/src/components/resources/renderers/CNPGScheduledBackupRenderer.tsx +0 -1
- package/src/components/resources/renderers/CertificateRenderer.tsx +0 -1
- package/src/components/resources/renderers/CertificateRequestRenderer.tsx +0 -1
- package/src/components/resources/renderers/ChallengeRenderer.tsx +0 -1
- package/src/components/resources/renderers/ClusterComplianceReportRenderer.tsx +0 -1
- package/src/components/resources/renderers/ClusterExternalSecretRenderer.tsx +0 -1
- package/src/components/resources/renderers/ClusterIssuerRenderer.tsx +0 -1
- package/src/components/resources/renderers/ConfigAuditReportRenderer.tsx +0 -1
- package/src/components/resources/renderers/ConfigMapRenderer.tsx +0 -1
- package/src/components/resources/renderers/CronJobRenderer.tsx +0 -1
- package/src/components/resources/renderers/CronWorkflowRenderer.tsx +0 -1
- package/src/components/resources/renderers/EventRenderer.tsx +0 -1
- package/src/components/resources/renderers/ExposedSecretReportRenderer.tsx +0 -1
- package/src/components/resources/renderers/ExternalSecretRenderer.tsx +0 -1
- package/src/components/resources/renderers/FluxHelmReleaseRenderer.tsx +0 -1
- package/src/components/resources/renderers/GRPCRouteRenderer.tsx +0 -1
- package/src/components/resources/renderers/GatewayClassRenderer.tsx +0 -1
- package/src/components/resources/renderers/GatewayRenderer.tsx +0 -1
- package/src/components/resources/renderers/GenericRenderer.tsx +0 -1
- package/src/components/resources/renderers/GitRepositoryRenderer.tsx +0 -1
- package/src/components/resources/renderers/HTTPRouteRenderer.tsx +0 -1
- package/src/components/resources/renderers/HelmRepositoryRenderer.tsx +0 -1
- package/src/components/resources/renderers/IngressClassRenderer.tsx +0 -1
- package/src/components/resources/renderers/IngressRenderer.tsx +0 -1
- package/src/components/resources/renderers/IstioAuthorizationPolicyRenderer.tsx +0 -1
- package/src/components/resources/renderers/IstioDestinationRuleRenderer.tsx +0 -1
- package/src/components/resources/renderers/IstioGatewayRenderer.tsx +0 -1
- package/src/components/resources/renderers/IstioPeerAuthenticationRenderer.tsx +0 -1
- package/src/components/resources/renderers/IstioServiceEntryRenderer.tsx +0 -1
- package/src/components/resources/renderers/IstioVirtualServiceRenderer.tsx +0 -1
- package/src/components/resources/renderers/JobRenderer.tsx +0 -1
- package/src/components/resources/renderers/KarpenterEC2NodeClassRenderer.tsx +0 -1
- package/src/components/resources/renderers/KarpenterNodeClaimRenderer.tsx +0 -1
- package/src/components/resources/renderers/KedaScaledJobRenderer.tsx +0 -1
- package/src/components/resources/renderers/KedaScaledObjectRenderer.tsx +0 -1
- package/src/components/resources/renderers/KedaTriggerAuthRenderer.tsx +0 -1
- package/src/components/resources/renderers/KnativeConfigurationRenderer.tsx +0 -1
- package/src/components/resources/renderers/KnativeEventingRenderer.tsx +0 -1
- package/src/components/resources/renderers/KnativeFlowRenderer.tsx +0 -1
- package/src/components/resources/renderers/KnativeNetworkingRenderer.tsx +0 -1
- package/src/components/resources/renderers/KnativeRevisionRenderer.tsx +0 -1
- package/src/components/resources/renderers/KnativeRouteRenderer.tsx +0 -1
- package/src/components/resources/renderers/KnativeServiceRenderer.tsx +0 -1
- package/src/components/resources/renderers/KnativeSourceRenderer.tsx +0 -1
- package/src/components/resources/renderers/KustomizationRenderer.tsx +0 -1
- package/src/components/resources/renderers/KyvernoPolicyReportRenderer.tsx +0 -1
- package/src/components/resources/renderers/LeaseRenderer.tsx +0 -1
- package/src/components/resources/renderers/NetworkPolicyRenderer.tsx +0 -1
- package/src/components/resources/renderers/OCIRepositoryRenderer.tsx +0 -1
- package/src/components/resources/renderers/OrderRenderer.tsx +0 -1
- package/src/components/resources/renderers/PersistentVolumeRenderer.tsx +0 -1
- package/src/components/resources/renderers/PodDisruptionBudgetRenderer.tsx +0 -1
- package/src/components/resources/renderers/PodMonitorRenderer.tsx +0 -1
- package/src/components/resources/renderers/PriorityClassRenderer.tsx +0 -1
- package/src/components/resources/renderers/PrometheusRuleRenderer.tsx +0 -1
- package/src/components/resources/renderers/ReplicaSetRenderer.tsx +0 -1
- package/src/components/resources/renderers/RuntimeClassRenderer.tsx +0 -1
- package/src/components/resources/renderers/SbomReportRenderer.tsx +0 -1
- package/src/components/resources/renderers/SealedSecretRenderer.tsx +0 -1
- package/src/components/resources/renderers/SecretRenderer.tsx +0 -1
- package/src/components/resources/renderers/SecretStoreRenderer.tsx +0 -1
- package/src/components/resources/renderers/ServiceMonitorRenderer.tsx +0 -1
- package/src/components/resources/renderers/SimpleRouteRenderer.tsx +0 -1
- package/src/components/resources/renderers/StorageClassRenderer.tsx +0 -1
- package/src/components/resources/renderers/TraefikIngressRouteRenderer.tsx +0 -1
- package/src/components/resources/renderers/VPARenderer.tsx +0 -1
- package/src/components/resources/renderers/VeleroScheduleRenderer.tsx +0 -1
- package/src/components/resources/renderers/VeleroVSLRenderer.tsx +0 -1
- package/src/components/resources/renderers/VulnerabilityReportRenderer.tsx +0 -1
- package/src/components/resources/renderers/WebhookConfigRenderer.tsx +0 -1
- package/src/components/resources/renderers/WorkflowRenderer.tsx +0 -1
- package/src/components/resources/renderers/WorkflowTemplateRenderer.tsx +0 -1
- package/src/components/resources/renderers/argo-cells.tsx +0 -1
- package/src/components/resources/renderers/certmanager-cells.tsx +0 -1
- package/src/components/resources/renderers/cnpg-cells.tsx +0 -1
- package/src/components/resources/renderers/eso-cells.tsx +0 -1
- package/src/components/resources/renderers/flux-cells.tsx +0 -1
- package/src/components/resources/renderers/index.ts +0 -94
- package/src/components/resources/renderers/istio-cells.tsx +0 -1
- package/src/components/resources/renderers/karpenter-cells.tsx +0 -1
- package/src/components/resources/renderers/keda-cells.tsx +0 -1
- package/src/components/resources/renderers/knative-cells.tsx +0 -1
- package/src/components/resources/renderers/kyverno-cells.tsx +0 -1
- package/src/components/resources/renderers/prometheus-cells.tsx +0 -1
- package/src/components/resources/renderers/traefik-cells.tsx +0 -1
- package/src/components/resources/renderers/trivy-cells.tsx +0 -1
- package/src/components/resources/renderers/trivy-shared.tsx +0 -1
- package/src/components/resources/renderers/velero-cells.tsx +0 -1
- package/src/components/resources/resource-utils-argo.ts +0 -2
- package/src/components/resources/resource-utils-certmanager.ts +0 -2
- package/src/components/resources/resource-utils-eso.ts +0 -2
- package/src/components/resources/resource-utils-flux.ts +0 -2
- package/src/components/resources/resource-utils-istio.ts +0 -2
- package/src/components/resources/resource-utils-karpenter.ts +0 -2
- package/src/components/resources/resource-utils-knative.ts +0 -2
- package/src/components/resources/resource-utils-kyverno.ts +0 -2
- package/src/components/resources/resource-utils-prometheus.ts +0 -2
- package/src/components/resources/resource-utils-traefik.ts +0 -1
- package/src/components/resources/resource-utils-trivy.ts +0 -2
- package/src/components/resources/resource-utils-velero.ts +0 -2
- package/src/components/shared/EditableYamlView.tsx +0 -24
- package/src/components/timeline/DiffViewer.tsx +0 -1
- package/src/components/traffic/index.ts +0 -3
- package/src/components/ui/ForceDeleteConfirmDialog.tsx +0 -1
- package/src/components/ui/MetricsChart.tsx +0 -1
- package/src/components/ui/ResourceBar.tsx +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { GitOpsActions, SyncButton, SuspendToggle } from '@skyhook-io/k8s-ui/components/gitops/GitOpsActions'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { GitOpsStatusBadge, SyncStatusBadge, HealthStatusBadge } from '@skyhook-io/k8s-ui/components/gitops/GitOpsStatusBadge'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { ManagedResourcesList, InventoryCount } from '@skyhook-io/k8s-ui/components/gitops/ManagedResourcesList'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { SyncCountdown, IntervalDisplay } from '@skyhook-io/k8s-ui/components/gitops/SyncCountdown'
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export { GitOpsStatusBadge, SyncStatusBadge, HealthStatusBadge } from './GitOpsStatusBadge'
|
|
2
|
-
export { SyncCountdown, IntervalDisplay } from './SyncCountdown'
|
|
3
|
-
export { ManagedResourcesList, InventoryCount } from './ManagedResourcesList'
|
|
4
|
-
export { GitOpsActions, SyncButton, SuspendToggle } from './GitOpsActions'
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { X, GitCompare } from 'lucide-react'
|
|
2
|
-
import { PaneLoader, DiffLine, hasDiffBodyChange } from '@skyhook-io/k8s-ui'
|
|
3
|
-
|
|
4
|
-
interface ManifestDiffViewerProps {
|
|
5
|
-
diff: string
|
|
6
|
-
isLoading: boolean
|
|
7
|
-
revision1: number
|
|
8
|
-
revision2: number
|
|
9
|
-
onClose: () => void
|
|
10
|
-
title?: string
|
|
11
|
-
emptyLabel?: string
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export function ManifestDiffViewer({ diff, isLoading, revision1, revision2, onClose, title, emptyLabel }: ManifestDiffViewerProps) {
|
|
15
|
-
if (isLoading) {
|
|
16
|
-
return <PaneLoader label="Computing diff…" className="h-32" />
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
if (!hasDiffBodyChange(diff)) {
|
|
20
|
-
return (
|
|
21
|
-
<div className="p-4">
|
|
22
|
-
<div className="flex flex-col items-center justify-center h-32 text-theme-text-tertiary gap-2">
|
|
23
|
-
<GitCompare className="w-8 h-8 text-theme-text-disabled" />
|
|
24
|
-
<span>{emptyLabel || 'No differences found'}</span>
|
|
25
|
-
</div>
|
|
26
|
-
</div>
|
|
27
|
-
)
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
return (
|
|
31
|
-
<div className="p-4">
|
|
32
|
-
<div className="flex items-center justify-between mb-3">
|
|
33
|
-
<div className="flex items-center gap-2">
|
|
34
|
-
<GitCompare className="w-4 h-4 text-theme-text-secondary" />
|
|
35
|
-
<span className="text-sm font-medium text-theme-text-secondary">
|
|
36
|
-
{title || `Comparing Revision ${revision1} → ${revision2}`}
|
|
37
|
-
</span>
|
|
38
|
-
</div>
|
|
39
|
-
<button
|
|
40
|
-
onClick={onClose}
|
|
41
|
-
className="flex items-center gap-1 px-2 py-1 text-xs text-theme-text-secondary hover:text-theme-text-primary hover:bg-theme-elevated rounded"
|
|
42
|
-
>
|
|
43
|
-
<X className="w-3.5 h-3.5" />
|
|
44
|
-
Close
|
|
45
|
-
</button>
|
|
46
|
-
</div>
|
|
47
|
-
|
|
48
|
-
<div className="rounded-lg max-h-[calc(100vh-300px)] overflow-auto bg-theme-base/50 font-mono text-xs">
|
|
49
|
-
<div className="p-3">
|
|
50
|
-
{diff.split('\n').map((line, index) => (
|
|
51
|
-
<DiffLine key={index} line={line} />
|
|
52
|
-
))}
|
|
53
|
-
</div>
|
|
54
|
-
</div>
|
|
55
|
-
|
|
56
|
-
{/* Legend */}
|
|
57
|
-
<div className="flex items-center gap-4 mt-3 text-xs text-theme-text-tertiary">
|
|
58
|
-
<div className="flex items-center gap-1">
|
|
59
|
-
<span className="w-3 h-3 bg-red-500/20 border border-red-500/50 rounded" />
|
|
60
|
-
<span>Removed</span>
|
|
61
|
-
</div>
|
|
62
|
-
<div className="flex items-center gap-1">
|
|
63
|
-
<span className="w-3 h-3 bg-green-500/20 border border-green-500/50 rounded" />
|
|
64
|
-
<span>Added</span>
|
|
65
|
-
</div>
|
|
66
|
-
</div>
|
|
67
|
-
</div>
|
|
68
|
-
)
|
|
69
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { StructuredLogLine as JsonLogLine } from '@skyhook-io/k8s-ui'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { useLogSearch } from '@skyhook-io/k8s-ui'
|
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
import { memo } from 'react'
|
|
2
|
-
import { X, ExternalLink, Copy, Check } from 'lucide-react'
|
|
3
|
-
import { clsx } from 'clsx'
|
|
4
|
-
import { useState, useCallback } from 'react'
|
|
5
|
-
import type { TopologyNode, NodeKind, HealthStatus } from '../../types'
|
|
6
|
-
import { getKindBadgeBordered, healthToSeverity, SEVERITY_BADGE_BORDERED } from '../../utils/badge-colors'
|
|
7
|
-
import { Tooltip } from '../ui/Tooltip'
|
|
8
|
-
|
|
9
|
-
interface ResourceDrawerProps {
|
|
10
|
-
node: TopologyNode
|
|
11
|
-
onClose: () => void
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
// Status badge colors using centralized severity
|
|
15
|
-
function getStatusBadge(status: HealthStatus) {
|
|
16
|
-
const severity = healthToSeverity(status)
|
|
17
|
-
return SEVERITY_BADGE_BORDERED[severity]
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
// Format data value for display
|
|
21
|
-
function formatValue(value: unknown): string {
|
|
22
|
-
if (value === null || value === undefined) return '-'
|
|
23
|
-
if (typeof value === 'boolean') return value ? 'Yes' : 'No'
|
|
24
|
-
if (typeof value === 'object') return JSON.stringify(value, null, 2)
|
|
25
|
-
return String(value)
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
// Get display fields for each kind
|
|
29
|
-
function getDisplayFields(kind: NodeKind, data: Record<string, unknown>): Array<[string, unknown]> {
|
|
30
|
-
const common: Array<[string, unknown]> = data.namespace
|
|
31
|
-
? [['Namespace', data.namespace]]
|
|
32
|
-
: []
|
|
33
|
-
|
|
34
|
-
switch (kind) {
|
|
35
|
-
case 'Pod':
|
|
36
|
-
return [
|
|
37
|
-
...common,
|
|
38
|
-
['Phase', data.phase],
|
|
39
|
-
['Restarts', data.restarts],
|
|
40
|
-
['Containers', data.containers],
|
|
41
|
-
['Node', data.nodeName],
|
|
42
|
-
]
|
|
43
|
-
case 'Deployment':
|
|
44
|
-
case 'DaemonSet':
|
|
45
|
-
case 'StatefulSet':
|
|
46
|
-
return [
|
|
47
|
-
...common,
|
|
48
|
-
['Ready', `${data.readyReplicas ?? 0}/${data.totalReplicas ?? 0}`],
|
|
49
|
-
['Strategy', data.strategy],
|
|
50
|
-
]
|
|
51
|
-
case 'ReplicaSet':
|
|
52
|
-
return [
|
|
53
|
-
...common,
|
|
54
|
-
['Ready', `${data.readyReplicas ?? 0}/${data.totalReplicas ?? 0}`],
|
|
55
|
-
]
|
|
56
|
-
case 'Service':
|
|
57
|
-
return [
|
|
58
|
-
...common,
|
|
59
|
-
['Type', data.type],
|
|
60
|
-
['Cluster IP', data.clusterIP],
|
|
61
|
-
['Port', data.port],
|
|
62
|
-
]
|
|
63
|
-
case 'Ingress':
|
|
64
|
-
return [
|
|
65
|
-
...common,
|
|
66
|
-
['Hostname', data.hostname],
|
|
67
|
-
['TLS', data.tls],
|
|
68
|
-
]
|
|
69
|
-
case 'Gateway':
|
|
70
|
-
return [
|
|
71
|
-
...common,
|
|
72
|
-
['Listeners', data.listenerCount],
|
|
73
|
-
['Addresses', Array.isArray(data.addresses) ? (data.addresses as string[]).join(', ') : '-'],
|
|
74
|
-
]
|
|
75
|
-
case 'HTTPRoute':
|
|
76
|
-
case 'GRPCRoute':
|
|
77
|
-
case 'TCPRoute':
|
|
78
|
-
case 'TLSRoute':
|
|
79
|
-
return [
|
|
80
|
-
...common,
|
|
81
|
-
['Hostnames', Array.isArray(data.hostnames) ? (data.hostnames as string[]).join(', ') : '-'],
|
|
82
|
-
['Rules', data.rulesCount],
|
|
83
|
-
]
|
|
84
|
-
case 'ConfigMap':
|
|
85
|
-
return [
|
|
86
|
-
...common,
|
|
87
|
-
['Keys', data.keys],
|
|
88
|
-
]
|
|
89
|
-
case 'HorizontalPodAutoscaler':
|
|
90
|
-
return [
|
|
91
|
-
...common,
|
|
92
|
-
['Min Replicas', data.minReplicas],
|
|
93
|
-
['Max Replicas', data.maxReplicas],
|
|
94
|
-
['Current', data.current],
|
|
95
|
-
]
|
|
96
|
-
default:
|
|
97
|
-
return common
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
export const ResourceDrawer = memo(function ResourceDrawer({
|
|
102
|
-
node,
|
|
103
|
-
onClose,
|
|
104
|
-
}: ResourceDrawerProps) {
|
|
105
|
-
const [copied, setCopied] = useState(false)
|
|
106
|
-
|
|
107
|
-
const copyName = useCallback(() => {
|
|
108
|
-
navigator.clipboard.writeText(node.name)
|
|
109
|
-
setCopied(true)
|
|
110
|
-
setTimeout(() => setCopied(false), 2000)
|
|
111
|
-
}, [node.name])
|
|
112
|
-
|
|
113
|
-
const fields = getDisplayFields(node.kind, node.data)
|
|
114
|
-
|
|
115
|
-
return (
|
|
116
|
-
<>
|
|
117
|
-
{/* Backdrop */}
|
|
118
|
-
<div
|
|
119
|
-
className="fixed inset-0 bg-black/50 z-40"
|
|
120
|
-
onClick={onClose}
|
|
121
|
-
/>
|
|
122
|
-
|
|
123
|
-
{/* Drawer */}
|
|
124
|
-
<div className="fixed right-0 top-0 bottom-0 w-96 bg-theme-surface border-l border-theme-border z-50 flex flex-col shadow-drawer">
|
|
125
|
-
{/* Header */}
|
|
126
|
-
<div className="flex items-start justify-between p-4 border-b border-theme-border">
|
|
127
|
-
<div className="flex-1 min-w-0">
|
|
128
|
-
<div className="flex items-center gap-2 mb-2">
|
|
129
|
-
<span
|
|
130
|
-
className={clsx(
|
|
131
|
-
'badge',
|
|
132
|
-
getKindBadgeBordered(node.kind)
|
|
133
|
-
)}
|
|
134
|
-
>
|
|
135
|
-
{node.kind}
|
|
136
|
-
</span>
|
|
137
|
-
<span
|
|
138
|
-
className={clsx(
|
|
139
|
-
'badge',
|
|
140
|
-
getStatusBadge(node.status)
|
|
141
|
-
)}
|
|
142
|
-
>
|
|
143
|
-
{node.status}
|
|
144
|
-
</span>
|
|
145
|
-
</div>
|
|
146
|
-
<div className="flex items-center gap-2">
|
|
147
|
-
<h2 className="text-lg font-semibold text-theme-text-primary truncate">
|
|
148
|
-
{node.name}
|
|
149
|
-
</h2>
|
|
150
|
-
<Tooltip content="Copy name">
|
|
151
|
-
<button
|
|
152
|
-
onClick={copyName}
|
|
153
|
-
className="p-1 text-theme-text-secondary hover:text-theme-text-primary hover:bg-theme-elevated rounded"
|
|
154
|
-
>
|
|
155
|
-
{copied ? (
|
|
156
|
-
<Check className="w-4 h-4 text-green-400" />
|
|
157
|
-
) : (
|
|
158
|
-
<Copy className="w-4 h-4" />
|
|
159
|
-
)}
|
|
160
|
-
</button>
|
|
161
|
-
</Tooltip>
|
|
162
|
-
</div>
|
|
163
|
-
</div>
|
|
164
|
-
<button
|
|
165
|
-
onClick={onClose}
|
|
166
|
-
className="p-2 text-theme-text-secondary hover:text-theme-text-primary hover:bg-theme-elevated rounded"
|
|
167
|
-
>
|
|
168
|
-
<X className="w-5 h-5" />
|
|
169
|
-
</button>
|
|
170
|
-
</div>
|
|
171
|
-
|
|
172
|
-
{/* Content */}
|
|
173
|
-
<div className="flex-1 overflow-y-auto p-4">
|
|
174
|
-
{/* Details */}
|
|
175
|
-
<section className="mb-6">
|
|
176
|
-
<h3 className="text-sm font-medium text-theme-text-secondary uppercase tracking-wide mb-3">
|
|
177
|
-
Details
|
|
178
|
-
</h3>
|
|
179
|
-
<div className="space-y-3">
|
|
180
|
-
{fields.map(([label, value]) => (
|
|
181
|
-
<div key={label as string}>
|
|
182
|
-
<dt className="text-xs text-theme-text-tertiary mb-0.5">{label as string}</dt>
|
|
183
|
-
<dd className="text-sm text-theme-text-primary">{formatValue(value)}</dd>
|
|
184
|
-
</div>
|
|
185
|
-
))}
|
|
186
|
-
</div>
|
|
187
|
-
</section>
|
|
188
|
-
|
|
189
|
-
{/* Raw data */}
|
|
190
|
-
<section>
|
|
191
|
-
<h3 className="text-sm font-medium text-theme-text-secondary uppercase tracking-wide mb-3">
|
|
192
|
-
Raw Data
|
|
193
|
-
</h3>
|
|
194
|
-
<pre className="bg-theme-base rounded-lg p-3 text-xs text-theme-text-secondary overflow-x-auto">
|
|
195
|
-
{JSON.stringify(node.data, null, 2)}
|
|
196
|
-
</pre>
|
|
197
|
-
</section>
|
|
198
|
-
</div>
|
|
199
|
-
|
|
200
|
-
{/* Footer */}
|
|
201
|
-
<div className="p-4 border-t border-theme-border">
|
|
202
|
-
<button
|
|
203
|
-
onClick={() => {
|
|
204
|
-
// TODO: Open kubectl command or link to dashboard
|
|
205
|
-
console.log('View in dashboard:', node)
|
|
206
|
-
}}
|
|
207
|
-
className="w-full flex items-center justify-center gap-2 px-4 py-2 btn-brand rounded-lg"
|
|
208
|
-
>
|
|
209
|
-
<ExternalLink className="w-4 h-4" />
|
|
210
|
-
View Full Resource
|
|
211
|
-
</button>
|
|
212
|
-
</div>
|
|
213
|
-
</div>
|
|
214
|
-
</>
|
|
215
|
-
)
|
|
216
|
-
})
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/ui/drawer-components'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/AlertRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/CNPGBackupRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/CNPGPoolerRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/CNPGScheduledBackupRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/CertificateRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/CertificateRequestRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/ChallengeRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/ClusterComplianceReportRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/ClusterExternalSecretRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/ClusterIssuerRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/ConfigAuditReportRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/ConfigMapRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/CronJobRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/CronWorkflowRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/EventRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/ExposedSecretReportRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/ExternalSecretRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/FluxHelmReleaseRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/GRPCRouteRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/GatewayClassRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/GatewayRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/GenericRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/GitRepositoryRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/HTTPRouteRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/HelmRepositoryRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/IngressClassRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/IngressRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/IstioAuthorizationPolicyRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/IstioDestinationRuleRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/IstioGatewayRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/IstioPeerAuthenticationRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/IstioServiceEntryRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/IstioVirtualServiceRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/JobRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/KarpenterEC2NodeClassRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/KarpenterNodeClaimRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/KedaScaledJobRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/KedaScaledObjectRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/KedaTriggerAuthRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/KnativeConfigurationRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/KnativeEventingRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/KnativeFlowRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/KnativeNetworkingRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/KnativeRevisionRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/KnativeRouteRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/KnativeServiceRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/KnativeSourceRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/KustomizationRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/KyvernoPolicyReportRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/LeaseRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/NetworkPolicyRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/OCIRepositoryRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/OrderRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/PersistentVolumeRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/PodDisruptionBudgetRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/PodMonitorRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/PriorityClassRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/PrometheusRuleRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/ReplicaSetRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/RuntimeClassRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/SbomReportRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/SealedSecretRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/SecretRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/SecretStoreRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/ServiceMonitorRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/SimpleRouteRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/StorageClassRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/TraefikIngressRouteRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/VPARenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/VeleroScheduleRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/VeleroVSLRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/VulnerabilityReportRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/WebhookConfigRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/WorkflowRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/WorkflowTemplateRenderer'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/argo-cells'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/certmanager-cells'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/cnpg-cells'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/eso-cells'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@skyhook-io/k8s-ui/components/resources/renderers/flux-cells'
|