@skyhook-io/k8s-ui 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 (193) hide show
  1. package/package.json +63 -0
  2. package/src/components/dock/BottomDock.tsx +204 -0
  3. package/src/components/dock/DockContext.tsx +212 -0
  4. package/src/components/dock/TerminalTab.tsx +333 -0
  5. package/src/components/dock/index.ts +3 -0
  6. package/src/components/gitops/GitOpsActions.tsx +227 -0
  7. package/src/components/gitops/GitOpsStatusBadge.tsx +221 -0
  8. package/src/components/gitops/ManagedResourcesList.tsx +210 -0
  9. package/src/components/gitops/SyncCountdown.tsx +146 -0
  10. package/src/components/gitops/index.ts +4 -0
  11. package/src/components/logs/JsonLogLine.tsx +90 -0
  12. package/src/components/logs/LogCore.tsx +553 -0
  13. package/src/components/logs/LogToolbarSelects.tsx +74 -0
  14. package/src/components/logs/LogsViewer.tsx +146 -0
  15. package/src/components/logs/WorkloadLogsViewer.tsx +263 -0
  16. package/src/components/logs/index.ts +13 -0
  17. package/src/components/logs/useLogBuffer.ts +138 -0
  18. package/src/components/logs/useLogSearch.ts +151 -0
  19. package/src/components/logs/useLogStream.ts +61 -0
  20. package/src/components/resources/ResourcesView.tsx +5494 -0
  21. package/src/components/resources/index.ts +17 -0
  22. package/src/components/resources/renderers/AlertRenderer.tsx +166 -0
  23. package/src/components/resources/renderers/ArgoApplicationRenderer.tsx +233 -0
  24. package/src/components/resources/renderers/CNPGBackupRenderer.tsx +89 -0
  25. package/src/components/resources/renderers/CNPGClusterRenderer.tsx +194 -0
  26. package/src/components/resources/renderers/CNPGPoolerRenderer.tsx +79 -0
  27. package/src/components/resources/renderers/CNPGScheduledBackupRenderer.tsx +68 -0
  28. package/src/components/resources/renderers/CertificateRenderer.tsx +209 -0
  29. package/src/components/resources/renderers/CertificateRequestRenderer.tsx +123 -0
  30. package/src/components/resources/renderers/ChallengeRenderer.tsx +111 -0
  31. package/src/components/resources/renderers/ClusterComplianceReportRenderer.tsx +164 -0
  32. package/src/components/resources/renderers/ClusterExternalSecretRenderer.tsx +140 -0
  33. package/src/components/resources/renderers/ClusterIssuerRenderer.tsx +153 -0
  34. package/src/components/resources/renderers/ConfigAuditReportRenderer.tsx +221 -0
  35. package/src/components/resources/renderers/ConfigMapRenderer.tsx +124 -0
  36. package/src/components/resources/renderers/CronJobRenderer.tsx +86 -0
  37. package/src/components/resources/renderers/EventRenderer.tsx +175 -0
  38. package/src/components/resources/renderers/ExposedSecretReportRenderer.tsx +119 -0
  39. package/src/components/resources/renderers/ExternalSecretRenderer.tsx +172 -0
  40. package/src/components/resources/renderers/FluxHelmReleaseRenderer.tsx +242 -0
  41. package/src/components/resources/renderers/GRPCRouteRenderer.tsx +263 -0
  42. package/src/components/resources/renderers/GatewayClassRenderer.tsx +68 -0
  43. package/src/components/resources/renderers/GatewayRenderer.tsx +218 -0
  44. package/src/components/resources/renderers/GenericRenderer.tsx +476 -0
  45. package/src/components/resources/renderers/GitRepositoryRenderer.tsx +154 -0
  46. package/src/components/resources/renderers/HPARenderer.tsx +164 -0
  47. package/src/components/resources/renderers/HTTPRouteRenderer.tsx +303 -0
  48. package/src/components/resources/renderers/HelmRepositoryRenderer.tsx +167 -0
  49. package/src/components/resources/renderers/IngressClassRenderer.tsx +49 -0
  50. package/src/components/resources/renderers/IngressRenderer.tsx +104 -0
  51. package/src/components/resources/renderers/IstioAuthorizationPolicyRenderer.tsx +175 -0
  52. package/src/components/resources/renderers/IstioDestinationRuleRenderer.tsx +176 -0
  53. package/src/components/resources/renderers/IstioGatewayRenderer.tsx +125 -0
  54. package/src/components/resources/renderers/IstioPeerAuthenticationRenderer.tsx +84 -0
  55. package/src/components/resources/renderers/IstioServiceEntryRenderer.tsx +112 -0
  56. package/src/components/resources/renderers/IstioVirtualServiceRenderer.tsx +288 -0
  57. package/src/components/resources/renderers/JobRenderer.tsx +103 -0
  58. package/src/components/resources/renderers/KarpenterEC2NodeClassRenderer.tsx +157 -0
  59. package/src/components/resources/renderers/KarpenterNodeClaimRenderer.tsx +188 -0
  60. package/src/components/resources/renderers/KarpenterNodePoolRenderer.tsx +148 -0
  61. package/src/components/resources/renderers/KedaScaledJobRenderer.tsx +90 -0
  62. package/src/components/resources/renderers/KedaScaledObjectRenderer.tsx +136 -0
  63. package/src/components/resources/renderers/KedaTriggerAuthRenderer.tsx +151 -0
  64. package/src/components/resources/renderers/KnativeConfigurationRenderer.tsx +70 -0
  65. package/src/components/resources/renderers/KnativeEventingRenderer.tsx +309 -0
  66. package/src/components/resources/renderers/KnativeFlowRenderer.tsx +142 -0
  67. package/src/components/resources/renderers/KnativeNetworkingRenderer.tsx +232 -0
  68. package/src/components/resources/renderers/KnativeRevisionRenderer.tsx +97 -0
  69. package/src/components/resources/renderers/KnativeRouteRenderer.tsx +74 -0
  70. package/src/components/resources/renderers/KnativeServiceRenderer.tsx +138 -0
  71. package/src/components/resources/renderers/KnativeSourceRenderer.tsx +220 -0
  72. package/src/components/resources/renderers/KustomizationRenderer.tsx +151 -0
  73. package/src/components/resources/renderers/KyvernoPolicyReportRenderer.tsx +352 -0
  74. package/src/components/resources/renderers/LeaseRenderer.tsx +93 -0
  75. package/src/components/resources/renderers/NetworkPolicyRenderer.tsx +208 -0
  76. package/src/components/resources/renderers/NodeRenderer.tsx +282 -0
  77. package/src/components/resources/renderers/OCIRepositoryRenderer.tsx +153 -0
  78. package/src/components/resources/renderers/OrderRenderer.tsx +108 -0
  79. package/src/components/resources/renderers/PVCRenderer.tsx +98 -0
  80. package/src/components/resources/renderers/PersistentVolumeRenderer.tsx +138 -0
  81. package/src/components/resources/renderers/PodDisruptionBudgetRenderer.tsx +126 -0
  82. package/src/components/resources/renderers/PodMonitorRenderer.tsx +63 -0
  83. package/src/components/resources/renderers/PodRenderer.tsx +677 -0
  84. package/src/components/resources/renderers/PriorityClassRenderer.tsx +50 -0
  85. package/src/components/resources/renderers/PrometheusRuleRenderer.tsx +62 -0
  86. package/src/components/resources/renderers/ReplicaSetRenderer.tsx +71 -0
  87. package/src/components/resources/renderers/RoleBindingRenderer.tsx +97 -0
  88. package/src/components/resources/renderers/RoleRenderer.tsx +192 -0
  89. package/src/components/resources/renderers/RolloutRenderer.tsx +227 -0
  90. package/src/components/resources/renderers/RuntimeClassRenderer.tsx +75 -0
  91. package/src/components/resources/renderers/SbomReportRenderer.tsx +98 -0
  92. package/src/components/resources/renderers/SealedSecretRenderer.tsx +121 -0
  93. package/src/components/resources/renderers/SecretRenderer.tsx +321 -0
  94. package/src/components/resources/renderers/SecretStoreRenderer.tsx +111 -0
  95. package/src/components/resources/renderers/ServiceAccountRenderer.tsx +81 -0
  96. package/src/components/resources/renderers/ServiceMonitorRenderer.tsx +65 -0
  97. package/src/components/resources/renderers/ServiceRenderer.tsx +98 -0
  98. package/src/components/resources/renderers/SimpleRouteRenderer.tsx +195 -0
  99. package/src/components/resources/renderers/StorageClassRenderer.tsx +82 -0
  100. package/src/components/resources/renderers/TraefikIngressRouteRenderer.tsx +257 -0
  101. package/src/components/resources/renderers/VPARenderer.tsx +193 -0
  102. package/src/components/resources/renderers/VeleroBSLRenderer.tsx +73 -0
  103. package/src/components/resources/renderers/VeleroBackupRenderer.tsx +193 -0
  104. package/src/components/resources/renderers/VeleroRestoreRenderer.tsx +161 -0
  105. package/src/components/resources/renderers/VeleroScheduleRenderer.tsx +134 -0
  106. package/src/components/resources/renderers/VeleroVSLRenderer.tsx +36 -0
  107. package/src/components/resources/renderers/VulnerabilityReportRenderer.tsx +347 -0
  108. package/src/components/resources/renderers/WebhookConfigRenderer.tsx +156 -0
  109. package/src/components/resources/renderers/WorkflowRenderer.tsx +202 -0
  110. package/src/components/resources/renderers/WorkflowTemplateRenderer.tsx +91 -0
  111. package/src/components/resources/renderers/WorkloadRenderer.tsx +311 -0
  112. package/src/components/resources/renderers/argo-cells.tsx +118 -0
  113. package/src/components/resources/renderers/certmanager-cells.tsx +164 -0
  114. package/src/components/resources/renderers/cnpg-cells.tsx +161 -0
  115. package/src/components/resources/renderers/eso-cells.tsx +115 -0
  116. package/src/components/resources/renderers/flux-cells.tsx +253 -0
  117. package/src/components/resources/renderers/index.ts +105 -0
  118. package/src/components/resources/renderers/istio-cells.tsx +210 -0
  119. package/src/components/resources/renderers/karpenter-cells.tsx +107 -0
  120. package/src/components/resources/renderers/keda-cells.tsx +94 -0
  121. package/src/components/resources/renderers/knative-cells.tsx +396 -0
  122. package/src/components/resources/renderers/kyverno-cells.tsx +85 -0
  123. package/src/components/resources/renderers/prometheus-cells.tsx +74 -0
  124. package/src/components/resources/renderers/traefik-cells.tsx +120 -0
  125. package/src/components/resources/renderers/trivy-cells.tsx +153 -0
  126. package/src/components/resources/renderers/trivy-shared.tsx +67 -0
  127. package/src/components/resources/renderers/velero-cells.tsx +164 -0
  128. package/src/components/resources/resource-utils-argo.ts +155 -0
  129. package/src/components/resources/resource-utils-certmanager.ts +198 -0
  130. package/src/components/resources/resource-utils-cnpg.ts +344 -0
  131. package/src/components/resources/resource-utils-eso.ts +385 -0
  132. package/src/components/resources/resource-utils-flux.ts +186 -0
  133. package/src/components/resources/resource-utils-istio.ts +372 -0
  134. package/src/components/resources/resource-utils-karpenter.ts +150 -0
  135. package/src/components/resources/resource-utils-keda.ts +203 -0
  136. package/src/components/resources/resource-utils-knative.ts +218 -0
  137. package/src/components/resources/resource-utils-kyverno.ts +224 -0
  138. package/src/components/resources/resource-utils-prometheus.ts +159 -0
  139. package/src/components/resources/resource-utils-traefik.ts +180 -0
  140. package/src/components/resources/resource-utils-trivy.ts +146 -0
  141. package/src/components/resources/resource-utils-velero.ts +293 -0
  142. package/src/components/resources/resource-utils.ts +1558 -0
  143. package/src/components/shared/EditableYamlView.tsx +302 -0
  144. package/src/components/shared/ResourceActionsBar.tsx +924 -0
  145. package/src/components/shared/ResourceRendererDispatch.tsx +557 -0
  146. package/src/components/shared/index.ts +3 -0
  147. package/src/components/timeline/index.ts +1 -0
  148. package/src/components/timeline/shared.tsx +614 -0
  149. package/src/components/topology/GroupNode.tsx +198 -0
  150. package/src/components/topology/K8sResourceNode.tsx +440 -0
  151. package/src/components/topology/TopologyControls.tsx +62 -0
  152. package/src/components/topology/TopologyFilterSidebar.tsx +377 -0
  153. package/src/components/topology/TopologyGraph.tsx +748 -0
  154. package/src/components/topology/TopologySearch.tsx +304 -0
  155. package/src/components/topology/index.ts +7 -0
  156. package/src/components/topology/layout.ts +734 -0
  157. package/src/components/topology/layout.worker.ts +272 -0
  158. package/src/components/topology/topology.css +129 -0
  159. package/src/components/ui/CodeViewer.tsx +451 -0
  160. package/src/components/ui/ConfirmDialog.tsx +188 -0
  161. package/src/components/ui/ForceDeleteConfirmDialog.tsx +57 -0
  162. package/src/components/ui/HealthRing.tsx +72 -0
  163. package/src/components/ui/MetricsChart.tsx +259 -0
  164. package/src/components/ui/ResourceBar.tsx +68 -0
  165. package/src/components/ui/Toast.tsx +225 -0
  166. package/src/components/ui/Tooltip.tsx +165 -0
  167. package/src/components/ui/YamlEditor.tsx +280 -0
  168. package/src/components/ui/drawer-components.tsx +792 -0
  169. package/src/components/ui/index.ts +10 -0
  170. package/src/components/workload/ResourceDetailDrawer.tsx +158 -0
  171. package/src/components/workload/WorkloadView.tsx +1109 -0
  172. package/src/components/workload/index.ts +2 -0
  173. package/src/hooks/index.ts +9 -0
  174. package/src/hooks/useAnimatedUnmount.ts +30 -0
  175. package/src/hooks/useKeyboardShortcuts.tsx +336 -0
  176. package/src/hooks/useRefreshAnimation.ts +58 -0
  177. package/src/index.ts +35 -0
  178. package/src/types/core.ts +894 -0
  179. package/src/types/gitops.ts +458 -0
  180. package/src/types/index.ts +2 -0
  181. package/src/utils/animation.ts +40 -0
  182. package/src/utils/api-resources.ts +185 -0
  183. package/src/utils/badge-colors.ts +399 -0
  184. package/src/utils/context-name.ts +72 -0
  185. package/src/utils/download.ts +19 -0
  186. package/src/utils/format.ts +233 -0
  187. package/src/utils/index.ts +10 -0
  188. package/src/utils/log-format.ts +300 -0
  189. package/src/utils/navigation.ts +119 -0
  190. package/src/utils/resource-hierarchy.ts +630 -0
  191. package/src/utils/resource-icons.ts +206 -0
  192. package/src/vite-env.d.ts +1 -0
  193. package/tsconfig.json +24 -0
@@ -0,0 +1,206 @@
1
+ // Canonical icon mapping for Kubernetes resource kinds.
2
+ // This is the single source of truth — all views should use this mapping.
3
+ import type { LucideIcon } from 'lucide-react'
4
+ import {
5
+ // Workloads
6
+ Box,
7
+ Rocket,
8
+ Rows3,
9
+ DatabaseZap,
10
+ Copy,
11
+ Play,
12
+ Timer,
13
+ Boxes,
14
+
15
+ // Networking
16
+ Plug,
17
+ DoorOpen,
18
+ Shield,
19
+ ShieldCheck,
20
+ ShieldAlert,
21
+ Radio,
22
+ Globe,
23
+
24
+ // Config
25
+ FileSliders,
26
+ KeyRound,
27
+
28
+ // Storage
29
+ HardDrive,
30
+ Cylinder,
31
+ Database,
32
+ FileSearch,
33
+
34
+ // Cluster
35
+ Cpu,
36
+ Server,
37
+ FolderOpen,
38
+ UserCog,
39
+ Activity,
40
+
41
+ // Scaling
42
+ Scaling,
43
+
44
+ // GitOps
45
+ GitBranch,
46
+ Layers,
47
+ Anchor,
48
+ FolderGit2,
49
+
50
+ // Knative
51
+ Zap,
52
+ Clock,
53
+ Container,
54
+ Link,
55
+ Route,
56
+ Settings,
57
+
58
+ // Traefik
59
+ Split,
60
+ SlidersHorizontal,
61
+ Lock,
62
+ ArrowRightLeft,
63
+
64
+ // Fallback
65
+ Puzzle,
66
+ } from 'lucide-react'
67
+
68
+ const KIND_ICON_MAP: Record<string, LucideIcon> = {
69
+ // Workloads
70
+ pod: Box,
71
+ deployment: Rocket,
72
+ daemonset: Rows3,
73
+ statefulset: DatabaseZap,
74
+ replicaset: Copy,
75
+ job: Play,
76
+ cronjob: Timer,
77
+ rollout: Rocket,
78
+
79
+ // Networking
80
+ service: Plug,
81
+ ingress: DoorOpen,
82
+ networkpolicy: ShieldCheck,
83
+ endpoints: Radio,
84
+ endpointslice: Radio,
85
+ gateway: DoorOpen,
86
+ httproute: Globe,
87
+ grpcroute: Globe,
88
+ tcproute: Globe,
89
+ tlsroute: Globe,
90
+
91
+ // Config
92
+ configmap: FileSliders,
93
+ secret: KeyRound,
94
+ sealedsecret: KeyRound,
95
+
96
+ // Storage
97
+ persistentvolumeclaim: HardDrive,
98
+ pvc: HardDrive,
99
+ persistentvolume: Cylinder,
100
+ storageclass: Database,
101
+
102
+ // Cluster
103
+ node: Cpu,
104
+ namespace: FolderOpen,
105
+ serviceaccount: UserCog,
106
+ event: Activity,
107
+
108
+ // Scaling
109
+ horizontalpodautoscaler: Scaling,
110
+ hpa: Scaling,
111
+
112
+ // RBAC
113
+ role: ShieldCheck,
114
+ clusterrole: ShieldCheck,
115
+ rolebinding: ShieldCheck,
116
+ clusterrolebinding: ShieldCheck,
117
+
118
+ // Cert-manager
119
+ certificate: ShieldCheck,
120
+ certificaterequest: ShieldCheck,
121
+ clusterissuer: ShieldCheck,
122
+
123
+ // Argo
124
+ workflow: Activity,
125
+ workflowtemplate: Activity,
126
+ application: GitBranch, // ArgoCD Application
127
+ applicationset: GitBranch, // ArgoCD ApplicationSet
128
+
129
+ // FluxCD
130
+ kustomization: Layers, // FluxCD Kustomization
131
+ helmrelease: Anchor, // FluxCD HelmRelease
132
+ gitrepository: FolderGit2, // FluxCD GitRepository
133
+ ocirepository: FolderGit2, // FluxCD OCIRepository
134
+ helmrepository: Anchor, // FluxCD HelmRepository
135
+
136
+ // Karpenter
137
+ nodepool: Server,
138
+ nodeclaim: Server,
139
+ ec2nodeclass: Server,
140
+ aksnodeclass: Server,
141
+ gcpnodeclass: Server,
142
+
143
+ // KEDA
144
+ scaledobject: Scaling,
145
+ scaledjob: Scaling,
146
+ triggerauthentication: KeyRound,
147
+ clustertriggerauthentication: KeyRound,
148
+
149
+ // Prometheus Operator
150
+ servicemonitor: Radio,
151
+ prometheusrule: ShieldAlert,
152
+ podmonitor: Radio,
153
+ alertmanager: ShieldAlert,
154
+
155
+ // PDB
156
+ poddisruptionbudget: ShieldCheck,
157
+
158
+ // Knative Serving
159
+ knativeservice: Layers,
160
+ knativeconfiguration: Settings,
161
+ knativerevision: GitBranch,
162
+ knativeroute: Route,
163
+
164
+ // Knative Eventing & Messaging
165
+ broker: Radio,
166
+ trigger: Zap,
167
+ channel: Radio,
168
+
169
+ // Knative Sources
170
+ pingsource: Clock,
171
+ apiserversource: Server,
172
+ containersource: Container,
173
+ sinkbinding: Link,
174
+
175
+ // Traefik
176
+ ingressroute: Globe,
177
+ ingressroutetcp: Globe,
178
+ ingressrouteudp: Globe,
179
+ middleware: SlidersHorizontal,
180
+ middlewaretcp: SlidersHorizontal,
181
+ traefikservice: Split,
182
+ serverstransport: ArrowRightLeft,
183
+ serverstransporttcp: ArrowRightLeft,
184
+ tlsoption: Lock,
185
+ tlsstore: Lock,
186
+
187
+ // Trivy Operator
188
+ vulnerabilityreport: Shield,
189
+ configauditreport: ShieldCheck,
190
+ exposedsecretreport: ShieldAlert,
191
+ sbomreport: FileSearch,
192
+ }
193
+
194
+ /** Get the icon for a Kubernetes resource kind (case-insensitive). */
195
+ export function getResourceIcon(kind: string): LucideIcon {
196
+ return KIND_ICON_MAP[kind.toLowerCase()] ?? Puzzle
197
+ }
198
+
199
+ /** Get the icon for a topology node kind, including virtual kinds (Internet, PodGroup). */
200
+ export function getTopologyIcon(kind: string): LucideIcon {
201
+ if (kind === 'Internet') return Globe
202
+ if (kind === 'PodGroup') return Boxes
203
+ return getResourceIcon(kind)
204
+ }
205
+
206
+ export const DEFAULT_RESOURCE_ICON: LucideIcon = Puzzle
@@ -0,0 +1 @@
1
+ /// <reference types="vite/client" />
package/tsconfig.json ADDED
@@ -0,0 +1,24 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2020",
4
+ "lib": ["ES2020", "DOM", "DOM.Iterable"],
5
+ "module": "ESNext",
6
+ "moduleResolution": "bundler",
7
+ "allowImportingTsExtensions": true,
8
+ "resolveJsonModule": true,
9
+ "isolatedModules": true,
10
+ "noEmit": true,
11
+ "jsx": "react-jsx",
12
+ "strict": true,
13
+ "noUnusedLocals": true,
14
+ "noUnusedParameters": true,
15
+ "noFallthroughCasesInSwitch": true,
16
+ "skipLibCheck": true,
17
+ "baseUrl": ".",
18
+ "paths": {
19
+ "@skyhook/k8s-ui": ["./src/index.ts"],
20
+ "@skyhook/k8s-ui/*": ["./src/*"]
21
+ }
22
+ },
23
+ "include": ["src"]
24
+ }