@64mb/freelens-power 1.3.0 → 1.5.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/README.md +4 -4
- package/out/main/common/resource-search.js +61 -0
- package/out/main/common/resource-search.js.map +1 -0
- package/out/main/common/store/monitoring-preferences-store.js +10 -0
- package/out/main/common/store/monitoring-preferences-store.js.map +1 -1
- package/out/main/index.js +2 -0
- package/out/main/index.js.map +1 -1
- package/out/main/resource-search-database.js +209 -0
- package/out/main/resource-search-database.js.map +1 -0
- package/out/main/resource-search-worker.js +56 -0
- package/out/main/resource-search-worker.js.map +1 -0
- package/out/main/resource-search.js +155 -0
- package/out/main/resource-search.js.map +1 -0
- package/out/renderer/appearance.js +1 -1
- package/out/renderer/appearance.js.map +1 -1
- package/out/renderer/details/resource-health-details.js +8 -4
- package/out/renderer/details/resource-health-details.js.map +1 -1
- package/out/renderer/diagnostics-state.js +7 -5
- package/out/renderer/diagnostics-state.js.map +1 -1
- package/out/renderer/diagnostics.css.js +2 -2
- package/out/renderer/diagnostics.css.js.map +1 -1
- package/out/renderer/diagnostics.js +127 -51
- package/out/renderer/diagnostics.js.map +1 -1
- package/out/renderer/gateway-relationships-client.js +107 -0
- package/out/renderer/gateway-relationships-client.js.map +1 -0
- package/out/renderer/index.js +2 -2
- package/out/renderer/index.js.map +1 -1
- package/out/renderer/monitoring.js +15 -0
- package/out/renderer/monitoring.js.map +1 -1
- package/out/renderer/preferences/monitoring-preferences.js +11 -1
- package/out/renderer/preferences/monitoring-preferences.js.map +1 -1
- package/out/renderer/preferences/preferences.js +16 -6
- package/out/renderer/preferences/preferences.js.map +1 -1
- package/out/renderer/resource-relationships.css.js +1 -1
- package/out/renderer/resource-relationships.css.js.map +1 -1
- package/out/renderer/resource-relationships.js +71 -18
- package/out/renderer/resource-relationships.js.map +1 -1
- package/out/renderer/resource-search-client.js +116 -0
- package/out/renderer/resource-search-client.js.map +1 -0
- package/out/renderer/resource-search-discovery.js +79 -0
- package/out/renderer/resource-search-discovery.js.map +1 -0
- package/out/renderer/resource-search-model.js +2 -1
- package/out/renderer/resource-search-model.js.map +1 -1
- package/out/renderer/resource-search-routing.js +78 -0
- package/out/renderer/resource-search-routing.js.map +1 -0
- package/out/renderer/resource-search-sync.js +199 -0
- package/out/renderer/resource-search-sync.js.map +1 -0
- package/out/renderer/resource-search.js +279 -54
- package/out/renderer/resource-search.js.map +1 -1
- package/out/renderer/src/common/gateway-relationships.js +122 -0
- package/out/renderer/src/common/gateway-relationships.js.map +1 -0
- package/out/renderer/src/common/resource-relationships.js +8 -0
- package/out/renderer/src/common/resource-relationships.js.map +1 -1
- package/out/renderer/src/common/resource-search.js +6 -0
- package/out/renderer/src/common/resource-search.js.map +1 -0
- package/out/renderer/src/common/store/monitoring-preferences-store.js +10 -0
- package/out/renderer/src/common/store/monitoring-preferences-store.js.map +1 -1
- package/package.json +6 -2
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
const require_extensions = require("./_virtual/_global-external_@freelensapp/extensions.js");
|
|
2
|
+
const require__global_external_mobx = require("./_virtual/_global-external_mobx.js");
|
|
3
|
+
const require_monitoring_preferences_store = require("./common/store/monitoring-preferences-store.js");
|
|
4
|
+
const require_resource_search = require("./common/resource-search.js");
|
|
5
|
+
const require_resource_search_worker = require("./resource-search-worker.js");
|
|
6
|
+
let electron = require("electron");
|
|
7
|
+
let node_path = require("node:path");
|
|
8
|
+
let node_fs = require("node:fs");
|
|
9
|
+
let node_crypto = require("node:crypto");
|
|
10
|
+
//#region src/main/resource-search.ts
|
|
11
|
+
function trustedSearchSender(event, clusterId) {
|
|
12
|
+
const window = electron.BrowserWindow.fromWebContents(event.sender);
|
|
13
|
+
const frame = event.senderFrame;
|
|
14
|
+
if (!window || window.isDestroyed() || !frame) return false;
|
|
15
|
+
try {
|
|
16
|
+
const url = new URL(frame.url);
|
|
17
|
+
const root = new URL(event.sender.getURL());
|
|
18
|
+
if (url.protocol !== "https:" || root.protocol !== "https:" || url.username || url.password || root.username || root.password) return false;
|
|
19
|
+
if (url.hostname !== `${clusterId}.renderer.freelens.app` || root.port !== url.port) return false;
|
|
20
|
+
if (frame === event.sender.mainFrame) return root.origin === url.origin;
|
|
21
|
+
return root.hostname === "renderer.freelens.app" && frame.parent === event.sender.mainFrame && frame.top === event.sender.mainFrame;
|
|
22
|
+
} catch {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function validateSearchRequest(input) {
|
|
27
|
+
if (!require_resource_search.validSearchPartition(input)) throw new Error("Invalid search partition");
|
|
28
|
+
const request = input;
|
|
29
|
+
const partition = {
|
|
30
|
+
clusterId: request.clusterId,
|
|
31
|
+
contextId: request.contextId
|
|
32
|
+
};
|
|
33
|
+
if (request.operation === "reconcile") {
|
|
34
|
+
if (!Array.isArray(request.resources) || request.resources.length > 1e4 || request.resources.some((resource) => typeof resource !== "string" || !/^[a-zA-Z0-9_.-]{0,253}\/[a-zA-Z0-9_.-]{1,253}$/.test(resource))) throw new Error("Invalid search resource catalog");
|
|
35
|
+
return {
|
|
36
|
+
...partition,
|
|
37
|
+
operation: "reconcile",
|
|
38
|
+
resources: [...new Set(request.resources)]
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
if ([
|
|
42
|
+
"begin",
|
|
43
|
+
"append",
|
|
44
|
+
"complete",
|
|
45
|
+
"invalidate"
|
|
46
|
+
].includes(request.operation)) {
|
|
47
|
+
const scoped = request;
|
|
48
|
+
if (typeof scoped.scope !== "string" || !scoped.scope.length || scoped.scope.length > 512 || /[\x00-\x1f]/.test(scoped.scope)) throw new Error("Invalid search scope");
|
|
49
|
+
if (scoped.operation !== "invalidate" && (typeof scoped.scanId !== "string" || !/^[a-zA-Z0-9_.:-]{1,128}$/.test(scoped.scanId))) throw new Error("Invalid search scan");
|
|
50
|
+
if (scoped.operation === "invalidate") return {
|
|
51
|
+
...partition,
|
|
52
|
+
operation: "invalidate",
|
|
53
|
+
scope: scoped.scope
|
|
54
|
+
};
|
|
55
|
+
const scan = {
|
|
56
|
+
...partition,
|
|
57
|
+
scope: scoped.scope,
|
|
58
|
+
scanId: scoped.scanId
|
|
59
|
+
};
|
|
60
|
+
return scoped.operation === "append" ? {
|
|
61
|
+
...scan,
|
|
62
|
+
operation: "append",
|
|
63
|
+
documents: require_resource_search.projectSearchDocuments(scoped.documents)
|
|
64
|
+
} : {
|
|
65
|
+
...scan,
|
|
66
|
+
operation: scoped.operation
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
if (request.operation === "query") {
|
|
70
|
+
if (typeof request.query !== "string" || request.query.length > 300 || request.limit !== void 0 && (!Number.isSafeInteger(request.limit) || request.limit < 1 || request.limit > 1e3) || request.kind !== void 0 && !/^[a-zA-Z0-9_.:-]{1,253}$/.test(request.kind) || request.namespace !== void 0 && !/^[a-zA-Z0-9_.:-]{0,253}$/.test(request.namespace)) throw new Error("Invalid search query");
|
|
71
|
+
return {
|
|
72
|
+
...partition,
|
|
73
|
+
operation: "query",
|
|
74
|
+
query: request.query,
|
|
75
|
+
limit: request.limit,
|
|
76
|
+
kind: request.kind,
|
|
77
|
+
namespace: request.namespace
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
if (request.operation !== "status" && request.operation !== "clear" && request.operation !== "permit") throw new Error("Invalid search operation");
|
|
81
|
+
return {
|
|
82
|
+
...partition,
|
|
83
|
+
operation: request.operation
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
function startResourceSearchIndex() {
|
|
87
|
+
let active = true;
|
|
88
|
+
let worker;
|
|
89
|
+
const preferences = require_monitoring_preferences_store.MonitoringPreferencesStore.getInstanceOrCreate();
|
|
90
|
+
const stopPreference = require__global_external_mobx.reaction(() => preferences.resourceSearchEnabled, (enabled) => {
|
|
91
|
+
if (!enabled) {
|
|
92
|
+
worker?.close();
|
|
93
|
+
worker = void 0;
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
const nextRequest = /* @__PURE__ */ new Map();
|
|
97
|
+
const waits = /* @__PURE__ */ new Map();
|
|
98
|
+
const contextFingerprint = (request) => {
|
|
99
|
+
const cluster = require_extensions.Main.Catalog.getClusterById(request.clusterId);
|
|
100
|
+
if (!cluster) throw new Error("Unknown search cluster");
|
|
101
|
+
return (0, node_crypto.createHash)("sha256").update(request.contextId).update("\0").update(cluster.contextName).update("\0").update(cluster.kubeConfigPath).update("\0").update((0, node_fs.readFileSync)(cluster.kubeConfigPath)).digest("hex");
|
|
102
|
+
};
|
|
103
|
+
electron.ipcMain.handle(require_resource_search.RESOURCE_SEARCH_CHANNEL, async (event, input) => {
|
|
104
|
+
const request = validateSearchRequest(input);
|
|
105
|
+
if (!active || !trustedSearchSender(event, request.clusterId)) throw new Error("Search index unavailable");
|
|
106
|
+
const contextId = contextFingerprint(request);
|
|
107
|
+
if (request.operation === "permit") {
|
|
108
|
+
const start = Math.max(Date.now(), nextRequest.get(request.clusterId) ?? 0);
|
|
109
|
+
nextRequest.set(request.clusterId, start + 500);
|
|
110
|
+
if (start > Date.now()) await new Promise((resolve) => {
|
|
111
|
+
const timer = setTimeout(() => {
|
|
112
|
+
waits.delete(timer);
|
|
113
|
+
resolve();
|
|
114
|
+
}, start - Date.now());
|
|
115
|
+
waits.set(timer, resolve);
|
|
116
|
+
});
|
|
117
|
+
if (!active || !trustedSearchSender(event, request.clusterId) || contextFingerprint(request) !== contextId) throw new Error("Search context changed");
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
120
|
+
if (!preferences.resourceSearchEnabled) throw new Error("Resource search is disabled");
|
|
121
|
+
if (!worker) {
|
|
122
|
+
const directory = (0, node_path.join)(electron.app.getPath("userData"), "freelens-power-search");
|
|
123
|
+
(0, node_fs.mkdirSync)(directory, {
|
|
124
|
+
recursive: true,
|
|
125
|
+
mode: 448
|
|
126
|
+
});
|
|
127
|
+
worker = new require_resource_search_worker.ResourceSearchWorker((0, node_path.join)(directory, "resources.sqlite"));
|
|
128
|
+
}
|
|
129
|
+
const result = await worker.call({
|
|
130
|
+
...request,
|
|
131
|
+
contextId
|
|
132
|
+
});
|
|
133
|
+
if (!active || !preferences.resourceSearchEnabled || !trustedSearchSender(event, request.clusterId) || contextFingerprint(request) !== contextId) throw new Error("Search context changed");
|
|
134
|
+
return result;
|
|
135
|
+
});
|
|
136
|
+
return () => {
|
|
137
|
+
active = false;
|
|
138
|
+
stopPreference();
|
|
139
|
+
electron.ipcMain.removeHandler(require_resource_search.RESOURCE_SEARCH_CHANNEL);
|
|
140
|
+
for (const [timer, resolve] of waits) {
|
|
141
|
+
clearTimeout(timer);
|
|
142
|
+
resolve();
|
|
143
|
+
}
|
|
144
|
+
waits.clear();
|
|
145
|
+
nextRequest.clear();
|
|
146
|
+
worker?.close();
|
|
147
|
+
worker = void 0;
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
//#endregion
|
|
151
|
+
exports.startResourceSearchIndex = startResourceSearchIndex;
|
|
152
|
+
exports.trustedSearchSender = trustedSearchSender;
|
|
153
|
+
exports.validateSearchRequest = validateSearchRequest;
|
|
154
|
+
|
|
155
|
+
//# sourceMappingURL=resource-search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-search.js","names":[],"sources":["../../src/main/resource-search.ts"],"sourcesContent":["import { createHash } from \"node:crypto\";\nimport { mkdirSync, readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { Main } from \"@freelensapp/extensions\";\nimport { app, BrowserWindow, type IpcMainInvokeEvent, ipcMain } from \"electron\";\nimport { reaction } from \"mobx\";\nimport {\n projectSearchDocuments,\n RESOURCE_SEARCH_CHANNEL,\n type SearchIndexRequest,\n validSearchPartition,\n} from \"../common/resource-search\";\nimport { MonitoringPreferencesStore } from \"../common/store/monitoring-preferences-store\";\nimport { ResourceSearchWorker } from \"./resource-search-worker\";\n\nexport function trustedSearchSender(event: IpcMainInvokeEvent, clusterId: string): boolean {\n const window = BrowserWindow.fromWebContents(event.sender);\n const frame = event.senderFrame;\n if (!window || window.isDestroyed() || !frame) return false;\n try {\n const url = new URL(frame.url);\n const root = new URL(event.sender.getURL());\n if (\n url.protocol !== \"https:\" ||\n root.protocol !== \"https:\" ||\n url.username ||\n url.password ||\n root.username ||\n root.password\n )\n return false;\n if (url.hostname !== `${clusterId}.renderer.freelens.app` || root.port !== url.port) return false;\n if (frame === event.sender.mainFrame) return root.origin === url.origin;\n return (\n root.hostname === \"renderer.freelens.app\" &&\n frame.parent === event.sender.mainFrame &&\n frame.top === event.sender.mainFrame\n );\n } catch {\n return false;\n }\n}\n\nexport function validateSearchRequest(input: unknown): SearchIndexRequest {\n if (!validSearchPartition(input)) throw new Error(\"Invalid search partition\");\n const request = input as SearchIndexRequest;\n const partition = { clusterId: request.clusterId, contextId: request.contextId };\n if (request.operation === \"reconcile\") {\n if (\n !Array.isArray(request.resources) ||\n request.resources.length > 10000 ||\n request.resources.some(\n (resource) => typeof resource !== \"string\" || !/^[a-zA-Z0-9_.-]{0,253}\\/[a-zA-Z0-9_.-]{1,253}$/.test(resource),\n )\n )\n throw new Error(\"Invalid search resource catalog\");\n return { ...partition, operation: \"reconcile\", resources: [...new Set(request.resources)] };\n }\n if ([\"begin\", \"append\", \"complete\", \"invalidate\"].includes(request.operation)) {\n const scoped = request as Extract<SearchIndexRequest, { scope: string }>;\n if (\n typeof scoped.scope !== \"string\" ||\n !scoped.scope.length ||\n scoped.scope.length > 512 ||\n /[\\x00-\\x1f]/.test(scoped.scope)\n )\n throw new Error(\"Invalid search scope\");\n if (\n scoped.operation !== \"invalidate\" &&\n (typeof scoped.scanId !== \"string\" || !/^[a-zA-Z0-9_.:-]{1,128}$/.test(scoped.scanId))\n )\n throw new Error(\"Invalid search scan\");\n if (scoped.operation === \"invalidate\") return { ...partition, operation: \"invalidate\", scope: scoped.scope };\n const scan = { ...partition, scope: scoped.scope, scanId: scoped.scanId };\n return scoped.operation === \"append\"\n ? { ...scan, operation: \"append\", documents: projectSearchDocuments(scoped.documents) }\n : { ...scan, operation: scoped.operation };\n }\n if (request.operation === \"query\") {\n if (\n typeof request.query !== \"string\" ||\n request.query.length > 300 ||\n (request.limit !== undefined &&\n (!Number.isSafeInteger(request.limit) || request.limit < 1 || request.limit > 1000)) ||\n (request.kind !== undefined && !/^[a-zA-Z0-9_.:-]{1,253}$/.test(request.kind)) ||\n (request.namespace !== undefined && !/^[a-zA-Z0-9_.:-]{0,253}$/.test(request.namespace))\n )\n throw new Error(\"Invalid search query\");\n return {\n ...partition,\n operation: \"query\",\n query: request.query,\n limit: request.limit,\n kind: request.kind,\n namespace: request.namespace,\n };\n }\n if (request.operation !== \"status\" && request.operation !== \"clear\" && request.operation !== \"permit\")\n throw new Error(\"Invalid search operation\");\n return { ...partition, operation: request.operation };\n}\n\nexport function startResourceSearchIndex(): () => void {\n let active = true;\n let worker: ResourceSearchWorker | undefined;\n const preferences = MonitoringPreferencesStore.getInstanceOrCreate<MonitoringPreferencesStore>();\n const stopPreference = reaction(\n () => preferences.resourceSearchEnabled,\n (enabled) => {\n if (!enabled) {\n worker?.close();\n worker = undefined;\n }\n },\n );\n const nextRequest = new Map<string, number>();\n const waits = new Map<ReturnType<typeof setTimeout>, () => void>();\n const contextFingerprint = (request: SearchIndexRequest) => {\n const cluster = Main.Catalog.getClusterById(request.clusterId);\n if (!cluster) throw new Error(\"Unknown search cluster\");\n // only a digest of the local configuration reaches the database partition key\n return createHash(\"sha256\")\n .update(request.contextId)\n .update(\"\\0\")\n .update(cluster.contextName)\n .update(\"\\0\")\n .update(cluster.kubeConfigPath)\n .update(\"\\0\")\n .update(readFileSync(cluster.kubeConfigPath))\n .digest(\"hex\");\n };\n ipcMain.handle(RESOURCE_SEARCH_CHANNEL, async (event, input: unknown) => {\n const request = validateSearchRequest(input);\n if (!active || !trustedSearchSender(event, request.clusterId)) throw new Error(\"Search index unavailable\");\n const contextId = contextFingerprint(request);\n if (request.operation === \"permit\") {\n const start = Math.max(Date.now(), nextRequest.get(request.clusterId) ?? 0);\n nextRequest.set(request.clusterId, start + 500);\n if (start > Date.now())\n await new Promise<void>((resolve) => {\n const timer = setTimeout(() => {\n waits.delete(timer);\n resolve();\n }, start - Date.now());\n waits.set(timer, resolve);\n });\n if (!active || !trustedSearchSender(event, request.clusterId) || contextFingerprint(request) !== contextId)\n throw new Error(\"Search context changed\");\n return true;\n }\n if (!preferences.resourceSearchEnabled) throw new Error(\"Resource search is disabled\");\n if (!worker) {\n const directory = join(app.getPath(\"userData\"), \"freelens-power-search\");\n mkdirSync(directory, { recursive: true, mode: 0o700 });\n worker = new ResourceSearchWorker(join(directory, \"resources.sqlite\"));\n }\n const result = await worker.call({ ...request, contextId });\n if (\n !active ||\n !preferences.resourceSearchEnabled ||\n !trustedSearchSender(event, request.clusterId) ||\n contextFingerprint(request) !== contextId\n )\n throw new Error(\"Search context changed\");\n return result;\n });\n return () => {\n active = false;\n stopPreference();\n ipcMain.removeHandler(RESOURCE_SEARCH_CHANNEL);\n for (const [timer, resolve] of waits) {\n clearTimeout(timer);\n resolve();\n }\n waits.clear();\n nextRequest.clear();\n worker?.close();\n worker = undefined;\n };\n}\n"],"mappings":";;;;;;;;;;AAeA,SAAgB,oBAAoB,OAA2B,WAA4B;CACzF,MAAM,SAAS,SAAA,cAAc,gBAAgB,MAAM,MAAM;CACzD,MAAM,QAAQ,MAAM;CACpB,IAAI,CAAC,UAAU,OAAO,YAAY,KAAK,CAAC,OAAO,OAAO;CACtD,IAAI;EACF,MAAM,MAAM,IAAI,IAAI,MAAM,GAAG;EAC7B,MAAM,OAAO,IAAI,IAAI,MAAM,OAAO,OAAO,CAAC;EAC1C,IACE,IAAI,aAAa,YACjB,KAAK,aAAa,YAClB,IAAI,YACJ,IAAI,YACJ,KAAK,YACL,KAAK,UAEL,OAAO;EACT,IAAI,IAAI,aAAa,GAAG,UAAU,2BAA2B,KAAK,SAAS,IAAI,MAAM,OAAO;EAC5F,IAAI,UAAU,MAAM,OAAO,WAAW,OAAO,KAAK,WAAW,IAAI;EACjE,OACE,KAAK,aAAa,2BAClB,MAAM,WAAW,MAAM,OAAO,aAC9B,MAAM,QAAQ,MAAM,OAAO;CAE/B,QAAQ;EACN,OAAO;CACT;AACF;AAEA,SAAgB,sBAAsB,OAAoC;CACxE,IAAI,CAAC,wBAAA,qBAAqB,KAAK,GAAG,MAAM,IAAI,MAAM,0BAA0B;CAC5E,MAAM,UAAU;CAChB,MAAM,YAAY;EAAE,WAAW,QAAQ;EAAW,WAAW,QAAQ;CAAU;CAC/E,IAAI,QAAQ,cAAc,aAAa;EACrC,IACE,CAAC,MAAM,QAAQ,QAAQ,SAAS,KAChC,QAAQ,UAAU,SAAS,OAC3B,QAAQ,UAAU,MACf,aAAa,OAAO,aAAa,YAAY,CAAC,iDAAiD,KAAK,QAAQ,CAC/G,GAEA,MAAM,IAAI,MAAM,iCAAiC;EACnD,OAAO;GAAE,GAAG;GAAW,WAAW;GAAa,WAAW,CAAC,GAAG,IAAI,IAAI,QAAQ,SAAS,CAAC;EAAE;CAC5F;CACA,IAAI;EAAC;EAAS;EAAU;EAAY;CAAY,CAAC,CAAC,SAAS,QAAQ,SAAS,GAAG;EAC7E,MAAM,SAAS;EACf,IACE,OAAO,OAAO,UAAU,YACxB,CAAC,OAAO,MAAM,UACd,OAAO,MAAM,SAAS,OACtB,cAAc,KAAK,OAAO,KAAK,GAE/B,MAAM,IAAI,MAAM,sBAAsB;EACxC,IACE,OAAO,cAAc,iBACpB,OAAO,OAAO,WAAW,YAAY,CAAC,2BAA2B,KAAK,OAAO,MAAM,IAEpF,MAAM,IAAI,MAAM,qBAAqB;EACvC,IAAI,OAAO,cAAc,cAAc,OAAO;GAAE,GAAG;GAAW,WAAW;GAAc,OAAO,OAAO;EAAM;EAC3G,MAAM,OAAO;GAAE,GAAG;GAAW,OAAO,OAAO;GAAO,QAAQ,OAAO;EAAO;EACxE,OAAO,OAAO,cAAc,WACxB;GAAE,GAAG;GAAM,WAAW;GAAU,WAAW,wBAAA,uBAAuB,OAAO,SAAS;EAAE,IACpF;GAAE,GAAG;GAAM,WAAW,OAAO;EAAU;CAC7C;CACA,IAAI,QAAQ,cAAc,SAAS;EACjC,IACE,OAAO,QAAQ,UAAU,YACzB,QAAQ,MAAM,SAAS,OACtB,QAAQ,UAAU,KAAA,MAChB,CAAC,OAAO,cAAc,QAAQ,KAAK,KAAK,QAAQ,QAAQ,KAAK,QAAQ,QAAQ,QAC/E,QAAQ,SAAS,KAAA,KAAa,CAAC,2BAA2B,KAAK,QAAQ,IAAI,KAC3E,QAAQ,cAAc,KAAA,KAAa,CAAC,2BAA2B,KAAK,QAAQ,SAAS,GAEtF,MAAM,IAAI,MAAM,sBAAsB;EACxC,OAAO;GACL,GAAG;GACH,WAAW;GACX,OAAO,QAAQ;GACf,OAAO,QAAQ;GACf,MAAM,QAAQ;GACd,WAAW,QAAQ;EACrB;CACF;CACA,IAAI,QAAQ,cAAc,YAAY,QAAQ,cAAc,WAAW,QAAQ,cAAc,UAC3F,MAAM,IAAI,MAAM,0BAA0B;CAC5C,OAAO;EAAE,GAAG;EAAW,WAAW,QAAQ;CAAU;AACtD;AAEA,SAAgB,2BAAuC;CACrD,IAAI,SAAS;CACb,IAAI;CACJ,MAAM,cAAc,qCAAA,2BAA2B,oBAAgD;CAC/F,MAAM,iBAAiB,8BAAA,eACf,YAAY,wBACjB,YAAY;EACX,IAAI,CAAC,SAAS;GACZ,QAAQ,MAAM;GACd,SAAS,KAAA;EACX;CACF,CACF;CACA,MAAM,8BAAc,IAAI,IAAoB;CAC5C,MAAM,wBAAQ,IAAI,IAA+C;CACjE,MAAM,sBAAsB,YAAgC;EAC1D,MAAM,UAAU,mBAAA,KAAK,QAAQ,eAAe,QAAQ,SAAS;EAC7D,IAAI,CAAC,SAAS,MAAM,IAAI,MAAM,wBAAwB;EAEtD,QAAA,GAAA,YAAA,WAAA,CAAkB,QAAQ,CAAC,CACxB,OAAO,QAAQ,SAAS,CAAC,CACzB,OAAO,IAAI,CAAC,CACZ,OAAO,QAAQ,WAAW,CAAC,CAC3B,OAAO,IAAI,CAAC,CACZ,OAAO,QAAQ,cAAc,CAAC,CAC9B,OAAO,IAAI,CAAC,CACZ,QAAA,GAAA,QAAA,aAAA,CAAoB,QAAQ,cAAc,CAAC,CAAC,CAC5C,OAAO,KAAK;CACjB;CACA,SAAA,QAAQ,OAAO,wBAAA,yBAAyB,OAAO,OAAO,UAAmB;EACvE,MAAM,UAAU,sBAAsB,KAAK;EAC3C,IAAI,CAAC,UAAU,CAAC,oBAAoB,OAAO,QAAQ,SAAS,GAAG,MAAM,IAAI,MAAM,0BAA0B;EACzG,MAAM,YAAY,mBAAmB,OAAO;EAC5C,IAAI,QAAQ,cAAc,UAAU;GAClC,MAAM,QAAQ,KAAK,IAAI,KAAK,IAAI,GAAG,YAAY,IAAI,QAAQ,SAAS,KAAK,CAAC;GAC1E,YAAY,IAAI,QAAQ,WAAW,QAAQ,GAAG;GAC9C,IAAI,QAAQ,KAAK,IAAI,GACnB,MAAM,IAAI,SAAe,YAAY;IACnC,MAAM,QAAQ,iBAAiB;KAC7B,MAAM,OAAO,KAAK;KAClB,QAAQ;IACV,GAAG,QAAQ,KAAK,IAAI,CAAC;IACrB,MAAM,IAAI,OAAO,OAAO;GAC1B,CAAC;GACH,IAAI,CAAC,UAAU,CAAC,oBAAoB,OAAO,QAAQ,SAAS,KAAK,mBAAmB,OAAO,MAAM,WAC/F,MAAM,IAAI,MAAM,wBAAwB;GAC1C,OAAO;EACT;EACA,IAAI,CAAC,YAAY,uBAAuB,MAAM,IAAI,MAAM,6BAA6B;EACrF,IAAI,CAAC,QAAQ;GACX,MAAM,aAAA,GAAA,UAAA,KAAA,CAAiB,SAAA,IAAI,QAAQ,UAAU,GAAG,uBAAuB;GACvE,CAAA,GAAA,QAAA,UAAA,CAAU,WAAW;IAAE,WAAW;IAAM,MAAM;GAAM,CAAC;GACrD,SAAS,IAAI,+BAAA,sBAAA,GAAA,UAAA,KAAA,CAA0B,WAAW,kBAAkB,CAAC;EACvE;EACA,MAAM,SAAS,MAAM,OAAO,KAAK;GAAE,GAAG;GAAS;EAAU,CAAC;EAC1D,IACE,CAAC,UACD,CAAC,YAAY,yBACb,CAAC,oBAAoB,OAAO,QAAQ,SAAS,KAC7C,mBAAmB,OAAO,MAAM,WAEhC,MAAM,IAAI,MAAM,wBAAwB;EAC1C,OAAO;CACT,CAAC;CACD,aAAa;EACX,SAAS;EACT,eAAe;EACf,SAAA,QAAQ,cAAc,wBAAA,uBAAuB;EAC7C,KAAK,MAAM,CAAC,OAAO,YAAY,OAAO;GACpC,aAAa,KAAK;GAClB,QAAQ;EACV;EACA,MAAM,MAAM;EACZ,YAAY,MAAM;EAClB,QAAQ,MAAM;EACd,SAAS,KAAA;CACX;AACF"}
|
|
@@ -16,7 +16,7 @@ function startAppearanceOverride() {
|
|
|
16
16
|
}
|
|
17
17
|
style.textContent = `${color === "default" ? "" : `
|
|
18
18
|
:root { --primary: ${color} !important; --buttonPrimaryBackground: ${color} !important; --menuSelectedOptionBgc: ${color} !important; --select-option-focused-bgc: color-mix(in srgb, ${color} 24%, var(--contentColor)) !important; --icon-focus-color: ${color} !important; }
|
|
19
|
-
:root .Checkbox, :root .Drawer .drawer-title, :root .DrawerParamToggler .param-link { --blue: var(--primary); }
|
|
19
|
+
:root .Checkbox, :root .Drawer .drawer-title, :root .DrawerParamToggler .param-link, :root .Drawer .ResizingAnchor { --blue: var(--primary); }
|
|
20
20
|
:root [role="treeitem"][class*="catalog-tree-module__selected--"] { --blue: var(--primary); }
|
|
21
21
|
:root .Select:not(.Select--is-disabled) .Select__control--is-focused:not(.Select__control--is-disabled) { border-color: ${color} !important; box-shadow: 0 0 0 1px ${color} !important; }
|
|
22
22
|
:root .Select__option--is-selected { background: var(--primary) !important; color: var(--textColorAccent) !important; }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appearance.js","names":[],"sources":["../../src/renderer/appearance.ts"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\nimport { reaction } from \"mobx\";\nimport { AppearancePreferencesStore, isAccentSelection } from \"../common/store/appearance-preferences-store\";\n\nexport function startAppearanceOverride(): () => void {\n const preferences = AppearancePreferencesStore.getInstanceOrCreate<AppearancePreferencesStore>();\n const style = document.createElement(\"style\");\n style.dataset.freelensPower = \"accent-color\";\n\n const stop = reaction(\n () => [preferences.enabled, preferences.accentColor, preferences.recolorAppIcon] as const,\n ([enabled, color, recolorAppIcon]) => {\n if (!enabled || !isAccentSelection(color)) {\n style.remove();\n return;\n }\n\n // [!important] takes precedence over the host theme's inline variables\n const accent =\n color === \"default\"\n ? \"\"\n : `\n :root { --primary: ${color} !important; --buttonPrimaryBackground: ${color} !important; --menuSelectedOptionBgc: ${color} !important; --select-option-focused-bgc: color-mix(in srgb, ${color} 24%, var(--contentColor)) !important; --icon-focus-color: ${color} !important; }\n :root .Checkbox, :root .Drawer .drawer-title, :root .DrawerParamToggler .param-link { --blue: var(--primary); }\n :root [role=\"treeitem\"][class*=\"catalog-tree-module__selected--\"] { --blue: var(--primary); }\n :root .Select:not(.Select--is-disabled) .Select__control--is-focused:not(.Select__control--is-disabled) { border-color: ${color} !important; box-shadow: 0 0 0 1px ${color} !important; }\n :root .Select__option--is-selected { background: var(--primary) !important; color: var(--textColorAccent) !important; }\n :root .NamespaceSelectMenu .Select__option { margin-block: 2px; }\n :root .NamespaceSelectMenu .Select__option--is-selected { background: color-mix(in srgb, var(--primary) 10%, var(--contentColor)) !important; color: var(--textColorAccent) !important; }\n :root .NamespaceSelectMenu .Select__option--is-selected.Select__option--is-focused { background: color-mix(in srgb, var(--primary) 24%, var(--contentColor)) !important; }\n :root .NamespaceSelectMenu .Select__option--is-selected .Icon { color: var(--primary); }\n :root a.link { color: var(--primary); }\n ${recolorAppIcon ? '.Welcome [data-testid=\"no-welcome-banners-icon\"] svg path[fill=\"#23a49c\"] { fill: var(--primary); }' : \"\"}\n `;\n style.textContent = `${accent}\\ninput[role=\"switch\"] { --track-color-active: var(--primary) !important; }`;\n\n if (!style.isConnected) {\n document.head.append(style);\n }\n },\n { fireImmediately: true },\n );\n\n return () => {\n stop();\n style.remove();\n };\n}\n"],"mappings":";;;AAIA,SAAgB,0BAAsC;CACpD,MAAM,cAAc,qCAAA,2BAA2B,oBAAgD;CAC/F,MAAM,QAAQ,SAAS,cAAc,OAAO;CAC5C,MAAM,QAAQ,gBAAgB;CAE9B,MAAM,OAAO,8BAAA,eACL;EAAC,YAAY;EAAS,YAAY;EAAa,YAAY;CAAc,IAC9E,CAAC,SAAS,OAAO,oBAAoB;EACpC,IAAI,CAAC,WAAW,CAAC,qCAAA,kBAAkB,KAAK,GAAG;GACzC,MAAM,OAAO;GACb;EACF;EAmBA,MAAM,cAAc,GAflB,UAAU,YACN,KACA;6BACiB,MAAM,0CAA0C,MAAM,wCAAwC,MAAM,+DAA+D,MAAM,6DAA6D,MAAM;;;kIAGvI,MAAM,qCAAqC,MAAM;;;;;;;UAOzK,iBAAiB,4GAAwG,GAAG;QAElG;EAE9B,IAAI,CAAC,MAAM,aACT,SAAS,KAAK,OAAO,KAAK;CAE9B,GACA,EAAE,iBAAiB,KAAK,CAC1B;CAEA,aAAa;EACX,KAAK;EACL,MAAM,OAAO;CACf;AACF"}
|
|
1
|
+
{"version":3,"file":"appearance.js","names":[],"sources":["../../src/renderer/appearance.ts"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\nimport { reaction } from \"mobx\";\nimport { AppearancePreferencesStore, isAccentSelection } from \"../common/store/appearance-preferences-store\";\n\nexport function startAppearanceOverride(): () => void {\n const preferences = AppearancePreferencesStore.getInstanceOrCreate<AppearancePreferencesStore>();\n const style = document.createElement(\"style\");\n style.dataset.freelensPower = \"accent-color\";\n\n const stop = reaction(\n () => [preferences.enabled, preferences.accentColor, preferences.recolorAppIcon] as const,\n ([enabled, color, recolorAppIcon]) => {\n if (!enabled || !isAccentSelection(color)) {\n style.remove();\n return;\n }\n\n // [!important] takes precedence over the host theme's inline variables\n const accent =\n color === \"default\"\n ? \"\"\n : `\n :root { --primary: ${color} !important; --buttonPrimaryBackground: ${color} !important; --menuSelectedOptionBgc: ${color} !important; --select-option-focused-bgc: color-mix(in srgb, ${color} 24%, var(--contentColor)) !important; --icon-focus-color: ${color} !important; }\n :root .Checkbox, :root .Drawer .drawer-title, :root .DrawerParamToggler .param-link, :root .Drawer .ResizingAnchor { --blue: var(--primary); }\n :root [role=\"treeitem\"][class*=\"catalog-tree-module__selected--\"] { --blue: var(--primary); }\n :root .Select:not(.Select--is-disabled) .Select__control--is-focused:not(.Select__control--is-disabled) { border-color: ${color} !important; box-shadow: 0 0 0 1px ${color} !important; }\n :root .Select__option--is-selected { background: var(--primary) !important; color: var(--textColorAccent) !important; }\n :root .NamespaceSelectMenu .Select__option { margin-block: 2px; }\n :root .NamespaceSelectMenu .Select__option--is-selected { background: color-mix(in srgb, var(--primary) 10%, var(--contentColor)) !important; color: var(--textColorAccent) !important; }\n :root .NamespaceSelectMenu .Select__option--is-selected.Select__option--is-focused { background: color-mix(in srgb, var(--primary) 24%, var(--contentColor)) !important; }\n :root .NamespaceSelectMenu .Select__option--is-selected .Icon { color: var(--primary); }\n :root a.link { color: var(--primary); }\n ${recolorAppIcon ? '.Welcome [data-testid=\"no-welcome-banners-icon\"] svg path[fill=\"#23a49c\"] { fill: var(--primary); }' : \"\"}\n `;\n style.textContent = `${accent}\\ninput[role=\"switch\"] { --track-color-active: var(--primary) !important; }`;\n\n if (!style.isConnected) {\n document.head.append(style);\n }\n },\n { fireImmediately: true },\n );\n\n return () => {\n stop();\n style.remove();\n };\n}\n"],"mappings":";;;AAIA,SAAgB,0BAAsC;CACpD,MAAM,cAAc,qCAAA,2BAA2B,oBAAgD;CAC/F,MAAM,QAAQ,SAAS,cAAc,OAAO;CAC5C,MAAM,QAAQ,gBAAgB;CAE9B,MAAM,OAAO,8BAAA,eACL;EAAC,YAAY;EAAS,YAAY;EAAa,YAAY;CAAc,IAC9E,CAAC,SAAS,OAAO,oBAAoB;EACpC,IAAI,CAAC,WAAW,CAAC,qCAAA,kBAAkB,KAAK,GAAG;GACzC,MAAM,OAAO;GACb;EACF;EAmBA,MAAM,cAAc,GAflB,UAAU,YACN,KACA;6BACiB,MAAM,0CAA0C,MAAM,wCAAwC,MAAM,+DAA+D,MAAM,6DAA6D,MAAM;;;kIAGvI,MAAM,qCAAqC,MAAM;;;;;;;UAOzK,iBAAiB,4GAAwG,GAAG;QAElG;EAE9B,IAAI,CAAC,MAAM,aACT,SAAS,KAAK,OAAO,KAAK;CAE9B,GACA,EAAE,iBAAiB,KAAK,CAC1B;CAEA,aAAa;EACX,KAAK;EACL,MAAM,OAAO;CACf;AACF"}
|
|
@@ -12,9 +12,7 @@ var actionStyle = {
|
|
|
12
12
|
justifyContent: "center",
|
|
13
13
|
gap: 6,
|
|
14
14
|
minHeight: 28,
|
|
15
|
-
padding: "4px 8px"
|
|
16
|
-
border: "1px solid var(--borderFaintColor)",
|
|
17
|
-
background: "var(--buttonDefaultBackground)"
|
|
15
|
+
padding: "4px 8px"
|
|
18
16
|
};
|
|
19
17
|
var ResourceHealthDetails = require__global_external_mobx_react.observer(({ object, onOpenDiagnostics }) => {
|
|
20
18
|
const health = require_resource_health.summarizeObjectHealth(object);
|
|
@@ -46,6 +44,8 @@ var ResourceHealthDetails = require__global_external_mobx_react.observer(({ obje
|
|
|
46
44
|
/* @__PURE__ */ require_jsx_runtime.jsx("style", { children: `
|
|
47
45
|
.power-operational-summary > .DrawerTitle.power-operational-title { margin-bottom: 10px; }
|
|
48
46
|
.power-operational-summary .power-resource-action::before { content: none; }
|
|
47
|
+
.power-operational-summary .power-resource-action { border: 1px solid var(--borderFaintColor); background: var(--buttonDefaultBackground); transition: background-color 140ms, border-color 140ms; }
|
|
48
|
+
.power-operational-summary .power-resource-action:not(:disabled):hover { background: color-mix(in srgb, var(--buttonDefaultBackground) 85%, var(--textColorPrimary)); border-color: var(--borderColor); }
|
|
49
49
|
.power-operational-summary .power-resource-action:active { filter: brightness(1.12); }
|
|
50
50
|
.power-operational-summary .power-resource-action:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
|
|
51
51
|
` }),
|
|
@@ -92,7 +92,11 @@ var ResourceHealthDetails = require__global_external_mobx_react.observer(({ obje
|
|
|
92
92
|
},
|
|
93
93
|
children: [onOpenDiagnostics && /* @__PURE__ */ require_jsx_runtime.jsxs(Button, {
|
|
94
94
|
className: "power-resource-action",
|
|
95
|
-
onClick: () => onOpenDiagnostics(namespace
|
|
95
|
+
onClick: () => onOpenDiagnostics(namespace, {
|
|
96
|
+
kind: object.kind,
|
|
97
|
+
name: object.metadata.name ?? object.getName(),
|
|
98
|
+
uid: object.metadata.uid
|
|
99
|
+
}),
|
|
96
100
|
style: actionStyle,
|
|
97
101
|
children: [/* @__PURE__ */ require_jsx_runtime.jsx(Icon, {
|
|
98
102
|
material: "insights",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-health-details.js","names":[],"sources":["../../../src/renderer/details/resource-health-details.tsx"],"sourcesContent":["import { Renderer } from \"@freelensapp/extensions\";\nimport { observer } from \"mobx-react\";\nimport { type HealthObject, summarizeObjectHealth } from \"../../common/resource-health\";\nimport { AiPreferencesStore } from \"../../common/store/ai-preferences-store\";\nimport { explainDiagnosticFinding } from \"../ai-diagnostic-handoff\";\n\nconst { Button, DrawerItem, DrawerTitle, Icon } = Renderer.Component;\nconst actionStyle = {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: 6,\n minHeight: 28,\n padding: \"4px 8px\",\n
|
|
1
|
+
{"version":3,"file":"resource-health-details.js","names":[],"sources":["../../../src/renderer/details/resource-health-details.tsx"],"sourcesContent":["import { Renderer } from \"@freelensapp/extensions\";\nimport { observer } from \"mobx-react\";\nimport { type HealthObject, summarizeObjectHealth } from \"../../common/resource-health\";\nimport { AiPreferencesStore } from \"../../common/store/ai-preferences-store\";\nimport { explainDiagnosticFinding } from \"../ai-diagnostic-handoff\";\n\nconst { Button, DrawerItem, DrawerTitle, Icon } = Renderer.Component;\nconst actionStyle = {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: 6,\n minHeight: 28,\n padding: \"4px 8px\",\n} as const;\n\nexport type ResourceHealthDetailsProps = Renderer.Component.KubeObjectDetailsProps & {\n onOpenDiagnostics?: (namespace?: string, resource?: { kind: string; name: string; uid?: string }) => void;\n};\n\nexport const ResourceHealthDetails = observer(({ object, onOpenDiagnostics }: ResourceHealthDetailsProps) => {\n const health = summarizeObjectHealth(object as HealthObject);\n const namespace = object.getNs();\n const clusterId = Renderer.Catalog.activeCluster.get()?.metadata.uid;\n const aiEnabled = AiPreferencesStore.getInstanceOrCreate<AiPreferencesStore>().enabled;\n const askAi = () => {\n if (!clusterId || !AiPreferencesStore.getInstanceOrCreate<AiPreferencesStore>().enabled) return;\n const name = object.getName();\n explainDiagnosticFinding({\n clusterId,\n title: `${object.kind} ${name}: operational summary`.slice(0, 160),\n summary: [\n ...health.rows.map((row) => `${row.name}: ${row.value}`),\n ...(health.issue ? [`Key issue: ${health.issue}`] : []),\n ]\n .join(\"\\n\")\n .slice(0, 6000),\n resource: { kind: object.kind, name, ...(namespace ? { namespace } : {}) },\n });\n };\n const node = (object as HealthObject).spec?.nodeName;\n const open = (path: string) => {\n void Promise.resolve(Renderer.Navigation.showDetails(path)).catch(() => {});\n };\n return (\n <section className=\"power-operational-summary\" style={{ marginBottom: 16 }}>\n <style>{`\n .power-operational-summary > .DrawerTitle.power-operational-title { margin-bottom: 10px; }\n .power-operational-summary .power-resource-action::before { content: none; }\n .power-operational-summary .power-resource-action { border: 1px solid var(--borderFaintColor); background: var(--buttonDefaultBackground); transition: background-color 140ms, border-color 140ms; }\n .power-operational-summary .power-resource-action:not(:disabled):hover { background: color-mix(in srgb, var(--buttonDefaultBackground) 85%, var(--textColorPrimary)); border-color: var(--borderColor); }\n .power-operational-summary .power-resource-action:active { filter: brightness(1.12); }\n .power-operational-summary .power-resource-action:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }\n `}</style>\n <DrawerTitle className=\"power-operational-title\">Operational summary</DrawerTitle>\n <DrawerItem name=\"Health\">\n <span\n style={{\n color:\n health.state === \"healthy\"\n ? \"var(--colorOk)\"\n : health.state === \"warning\"\n ? \"var(--colorWarning)\"\n : \"var(--textColorSecondary)\",\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 6,\n }}\n >\n <Icon\n material={\n health.state === \"healthy\" ? \"check_circle\" : health.state === \"warning\" ? \"warning\" : \"help_outline\"\n }\n />\n {health.state === \"healthy\" ? \"Healthy\" : health.state === \"warning\" ? \"Needs attention\" : \"Unknown\"}\n </span>\n </DrawerItem>\n {health.rows.map((row) => (\n <DrawerItem key={row.name} name={row.name}>\n {row.value}\n </DrawerItem>\n ))}\n {health.issue && <DrawerItem name=\"Key issue\">{health.issue}</DrawerItem>}\n {namespace && object.kind !== \"Namespace\" && (\n <DrawerItem name=\"Namespace\">\n <button\n type=\"button\"\n className=\"link\"\n onClick={() => open(Renderer.K8sApi.namespacesApi.getUrl({ name: namespace }))}\n >\n {namespace}\n </button>\n </DrawerItem>\n )}\n <DrawerItem name=\"Investigate\">\n <span style={{ display: \"flex\", flexWrap: \"wrap\", gap: 12 }}>\n {onOpenDiagnostics && (\n <Button\n className=\"power-resource-action\"\n onClick={() =>\n onOpenDiagnostics(namespace, {\n kind: object.kind,\n name: object.metadata.name ?? object.getName(),\n uid: object.metadata.uid,\n })\n }\n style={actionStyle}\n >\n <Icon material=\"insights\" size={14} aria-hidden=\"true\" /> Open Diagnostics\n </Button>\n )}\n <Button\n className=\"power-resource-action\"\n onClick={askAi}\n disabled={!aiEnabled || !clusterId}\n title={\n !aiEnabled\n ? \"Enable the AI assistant in settings\"\n : !clusterId\n ? \"Select a connected cluster\"\n : \"Attach this summary to the AI chat\"\n }\n style={actionStyle}\n >\n <Icon material=\"auto_awesome\" size={14} aria-hidden=\"true\" /> Ask AI\n </Button>\n </span>\n </DrawerItem>\n {node && (\n <DrawerItem name=\"Node\">\n <button type=\"button\" className=\"link\" onClick={() => open(Renderer.K8sApi.nodesApi.getUrl({ name: node }))}>\n {node}\n </button>\n </DrawerItem>\n )}\n </section>\n );\n});\n"],"mappings":"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"}
|
|
@@ -25,21 +25,23 @@ function saveDiagnosticsState(clusterId, state) {
|
|
|
25
25
|
if (states.size > 30) states.delete(states.keys().next().value);
|
|
26
26
|
}
|
|
27
27
|
var DIAGNOSTICS_NAMESPACE_EVENT = "power-diagnostics-namespace";
|
|
28
|
-
function focusDiagnosticsNamespace(clusterId, namespace) {
|
|
29
|
-
if (!clusterId || !namespace) return;
|
|
28
|
+
function focusDiagnosticsNamespace(clusterId, namespace, resourceScope) {
|
|
29
|
+
if (!clusterId || !namespace && !resourceScope) return;
|
|
30
30
|
saveDiagnosticsState(clusterId, {
|
|
31
31
|
...readDiagnosticsState(clusterId),
|
|
32
32
|
tab: "Consumers",
|
|
33
33
|
namespaceScope: namespace,
|
|
34
|
+
resourceScope,
|
|
34
35
|
filter: "",
|
|
35
36
|
needsAttention: false,
|
|
36
|
-
groupMode: "namespace",
|
|
37
|
-
namespacesOpen: [namespace],
|
|
37
|
+
groupMode: namespace ? "namespace" : "workload",
|
|
38
|
+
namespacesOpen: namespace ? [namespace] : [],
|
|
38
39
|
scrollTop: 0
|
|
39
40
|
});
|
|
40
41
|
window.dispatchEvent(new CustomEvent(DIAGNOSTICS_NAMESPACE_EVENT, { detail: {
|
|
41
42
|
clusterId,
|
|
42
|
-
namespace
|
|
43
|
+
namespace,
|
|
44
|
+
resourceScope
|
|
43
45
|
} }));
|
|
44
46
|
}
|
|
45
47
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics-state.js","names":[],"sources":["../../src/renderer/diagnostics-state.ts"],"sourcesContent":["export interface DiagnosticsViewState {\n tab: \"Consumers\" | \"Timeline\" | \"Pending\";\n filter: string;\n namespaceScope?: string;\n needsAttention: boolean;\n groupMode: string;\n namespacesOpen: string[];\n sort: string;\n expanded: string[];\n selected: string;\n pendingUid: string;\n reason: string;\n warningOnly: boolean;\n groupedTimeline: boolean;\n openTimeline: string[];\n scrollTop: number;\n}\n// renderer memory stores view preferences only, never snapshots or resource contents\nconst states = new Map<string, DiagnosticsViewState>();\nexport function readDiagnosticsState(clusterId: string): DiagnosticsViewState {\n return (\n states.get(clusterId) ?? {\n tab: \"Consumers\",\n filter: \"\",\n needsAttention: true,\n groupMode: \"workload\",\n namespacesOpen: [],\n sort: \"cpu\",\n expanded: [],\n selected: \"\",\n pendingUid: \"\",\n reason: \"\",\n warningOnly: true,\n groupedTimeline: true,\n openTimeline: [],\n scrollTop: 0,\n }\n );\n}\nexport function saveDiagnosticsState(clusterId: string, state: DiagnosticsViewState): void {\n if (!clusterId) return;\n states.delete(clusterId);\n states.set(clusterId, state);\n if (states.size > 30) states.delete(states.keys().next().value!);\n}\nexport function clearDiagnosticsStates(): void {\n states.clear();\n}\n\nexport const DIAGNOSTICS_NAMESPACE_EVENT = \"power-diagnostics-namespace\";\nexport function focusDiagnosticsNamespace(clusterId: string
|
|
1
|
+
{"version":3,"file":"diagnostics-state.js","names":[],"sources":["../../src/renderer/diagnostics-state.ts"],"sourcesContent":["export interface DiagnosticsResourceScope {\n kind: string;\n name: string;\n uid?: string;\n}\n\nexport interface DiagnosticsViewState {\n tab: \"Consumers\" | \"Timeline\" | \"Pending\" | \"Not ready\";\n filter: string;\n namespaceScope?: string;\n resourceScope?: DiagnosticsResourceScope;\n needsAttention: boolean;\n groupMode: string;\n namespacesOpen: string[];\n sort: string;\n expanded: string[];\n selected: string;\n pendingUid: string;\n notReadyUid?: string;\n reason: string;\n warningOnly: boolean;\n groupedTimeline: boolean;\n openTimeline: string[];\n scrollTop: number;\n}\n// renderer memory stores view preferences only, never snapshots or resource contents\nconst states = new Map<string, DiagnosticsViewState>();\nexport function readDiagnosticsState(clusterId: string): DiagnosticsViewState {\n return (\n states.get(clusterId) ?? {\n tab: \"Consumers\",\n filter: \"\",\n needsAttention: true,\n groupMode: \"workload\",\n namespacesOpen: [],\n sort: \"cpu\",\n expanded: [],\n selected: \"\",\n pendingUid: \"\",\n reason: \"\",\n warningOnly: true,\n groupedTimeline: true,\n openTimeline: [],\n scrollTop: 0,\n }\n );\n}\nexport function saveDiagnosticsState(clusterId: string, state: DiagnosticsViewState): void {\n if (!clusterId) return;\n states.delete(clusterId);\n states.set(clusterId, state);\n if (states.size > 30) states.delete(states.keys().next().value!);\n}\nexport function clearDiagnosticsStates(): void {\n states.clear();\n}\n\nexport const DIAGNOSTICS_NAMESPACE_EVENT = \"power-diagnostics-namespace\";\nexport function focusDiagnosticsNamespace(\n clusterId: string,\n namespace?: string,\n resourceScope?: DiagnosticsResourceScope,\n): void {\n if (!clusterId || (!namespace && !resourceScope)) return;\n saveDiagnosticsState(clusterId, {\n ...readDiagnosticsState(clusterId),\n tab: \"Consumers\",\n namespaceScope: namespace,\n resourceScope,\n filter: \"\",\n needsAttention: false,\n groupMode: namespace ? \"namespace\" : \"workload\",\n namespacesOpen: namespace ? [namespace] : [],\n scrollTop: 0,\n });\n window.dispatchEvent(\n new CustomEvent(DIAGNOSTICS_NAMESPACE_EVENT, { detail: { clusterId, namespace, resourceScope } }),\n );\n}\n"],"mappings":";AA0BA,IAAM,yBAAS,IAAI,IAAkC;AACrD,SAAgB,qBAAqB,WAAyC;CAC5E,OACE,OAAO,IAAI,SAAS,KAAK;EACvB,KAAK;EACL,QAAQ;EACR,gBAAgB;EAChB,WAAW;EACX,gBAAgB,CAAC;EACjB,MAAM;EACN,UAAU,CAAC;EACX,UAAU;EACV,YAAY;EACZ,QAAQ;EACR,aAAa;EACb,iBAAiB;EACjB,cAAc,CAAC;EACf,WAAW;CACb;AAEJ;AACA,SAAgB,qBAAqB,WAAmB,OAAmC;CACzF,IAAI,CAAC,WAAW;CAChB,OAAO,OAAO,SAAS;CACvB,OAAO,IAAI,WAAW,KAAK;CAC3B,IAAI,OAAO,OAAO,IAAI,OAAO,OAAO,OAAO,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAM;AACjE;AAKA,IAAa,8BAA8B;AAC3C,SAAgB,0BACd,WACA,WACA,eACM;CACN,IAAI,CAAC,aAAc,CAAC,aAAa,CAAC,eAAgB;CAClD,qBAAqB,WAAW;EAC9B,GAAG,qBAAqB,SAAS;EACjC,KAAK;EACL,gBAAgB;EAChB;EACA,QAAQ;EACR,gBAAgB;EAChB,WAAW,YAAY,cAAc;EACrC,gBAAgB,YAAY,CAAC,SAAS,IAAI,CAAC;EAC3C,WAAW;CACb,CAAC;CACD,OAAO,cACL,IAAI,YAAY,6BAA6B,EAAE,QAAQ;EAAE;EAAW;EAAW;CAAc,EAAE,CAAC,CAClG;AACF"}
|
|
@@ -12,7 +12,7 @@ var diagnosticsStyles = `
|
|
|
12
12
|
.power-diagnostics .diagnostics-summary>button.summary-card{margin:0;width:100%;text-align:left;line-height:inherit;font:inherit}.power-diagnostics .diagnostics-summary>button.summary-card:hover{border-color:var(--colorWarning,#e0a134);background:color-mix(in srgb,var(--colorWarning,#e0a134) 5%,var(--contentColor))}
|
|
13
13
|
@container diagnostics (min-width:701px) and (max-width:900px){.power-diagnostics .consumers-toolbar{grid-template-columns:160px minmax(160px,1fr) 180px}.power-diagnostics .consumers-toolbar>.warning-filter{grid-column:1/-1}}
|
|
14
14
|
.power-diagnostics .consumer-identity-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0;margin-bottom:4px}.power-diagnostics .consumer-identity-label{min-width:0;font-weight:500;overflow-wrap:anywhere}.power-diagnostics .consumer-identity-row .consumer-resource-link{display:inline-flex;align-items:center;justify-content:flex-start;gap:6px;min-width:0;margin:0;padding:0;border:0;background:transparent;text-align:left;font-weight:500;overflow-wrap:anywhere}.power-diagnostics .consumer-resource-link:hover{color:var(--primary)}.power-diagnostics .consumer-resource-link>.Icon{flex-shrink:0;opacity:.65}.power-diagnostics .consumer-expand-slot{display:flex;justify-content:flex-end;flex-shrink:0;padding-left:10px;border-left:1px solid var(--borderColor)}.power-diagnostics .consumer-identity-row .consumer-expand{display:flex;align-items:center;justify-content:center;width:28px;height:28px;min-width:28px;margin:0;padding:0;border:1px solid var(--borderColor);border-radius:4px;background:var(--contentColor);color:var(--textColorSecondary)}.power-diagnostics .consumer-identity-row .consumer-expand:hover{color:var(--primary);border-color:var(--primary)}
|
|
15
|
-
.power-diagnostics .consumer-depth-1>td:first-child{padding-left:32px;position:relative}.power-diagnostics .consumer-depth-2>td:first-child{padding-left:48px;position:relative}.power-diagnostics .consumer-depth-1>td:first-child:before,.power-diagnostics .consumer-depth-2>td:first-child:before{content:"";position:absolute;top:0;bottom:0;left:16px;width:1px;background:var(--borderColor)}.power-diagnostics .consumer-depth-2>td:first-child:before{left:32px}.power-diagnostics .consumer-pod-row>td{background:color-mix(in srgb,var(--textColorSecondary) 3%,transparent)}.power-diagnostics .consumer-namespace-row>td:first-child{font-weight:500}.power-diagnostics .namespace-identity{display:inline-flex;align-items:center;gap:7px;font-size:14px}.power-diagnostics .namespace-identity>.Icon{color:var(--primary)}
|
|
15
|
+
.power-diagnostics .consumer-depth-1>td:first-child{padding-left:32px;position:relative}.power-diagnostics .consumer-depth-2>td:first-child{padding-left:48px;position:relative}.power-diagnostics .consumer-depth-1>td:first-child:before,.power-diagnostics .consumer-depth-2>td:first-child:before{content:"";position:absolute;top:0;bottom:0;left:16px;width:1px;background:var(--borderColor)}.power-diagnostics .consumer-depth-2>td:first-child:before{left:32px}.power-diagnostics .consumer-pod-row>td{background:color-mix(in srgb,var(--textColorSecondary) 3%,transparent)}.power-diagnostics .consumer-namespace-row>td:first-child{font-weight:500}.power-diagnostics .namespace-identity{min-width:0;max-width:100%;display:inline-flex;align-items:center;gap:7px;font-size:14px}.power-diagnostics .namespace-identity>.Icon{color:var(--primary)}
|
|
16
16
|
.power-diagnostics .consumers-table{table-layout:fixed;min-width:900px}.power-diagnostics .consumers-table .metric-column{width:205px}.power-diagnostics .consumers-table .unscheduled-column{width:165px}.power-diagnostics .consumers-table th{white-space:nowrap;overflow-wrap:normal}.power-diagnostics .consumers-table th:last-child{white-space:normal;word-break:normal;overflow-wrap:normal}.power-diagnostics .consumers-table td{padding-top:12px;padding-bottom:12px}.power-diagnostics .consumer-identity-main{flex:1;min-width:0}.power-diagnostics .consumer-title-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}.power-diagnostics .consumer-title-line .consumer-status{margin-left:0}.power-diagnostics .consumer-subtitle{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-top:5px;line-height:1.4}.power-diagnostics .consumer-subtitle>.Icon{flex-shrink:0}.power-diagnostics .consumer-row-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.power-diagnostics .consumer-identity-row{align-items:flex-start;margin-bottom:0}.power-diagnostics .consumer-identity-row .consumer-resource-link{font-size:14px;color:var(--textColorPrimary)}.power-diagnostics .resource-value,.power-diagnostics .resource-request{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.power-diagnostics .resource-value small,.power-diagnostics .resource-request small{font-size:11px;white-space:nowrap}.power-diagnostics .resource-cell .resource-value strong{font-size:15px;font-weight:600}.power-diagnostics .resource-request{margin-top:3px}.power-diagnostics .resource-request>span{font-size:12px}.power-diagnostics .resource-cell .resource-coverage{margin-top:4px;font-size:10px;line-height:1.4}.power-diagnostics .unscheduled-cell>div{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.power-diagnostics .unscheduled-cell>div+div{margin-top:5px}.power-diagnostics .unscheduled-cell small{font-size:11px}.power-diagnostics .unscheduled-cell span{font-size:12px}.power-diagnostics .unscheduled-cell.has-requests span{color:var(--colorWarning,#e0a134)}.power-diagnostics .unscheduled-empty{color:var(--textColorSecondary);font-size:12px}.power-diagnostics .timeline-entry{color:var(--textColorPrimary)}.power-diagnostics .timeline-entry.warning .timeline-content h4{color:var(--colorWarning,#e0a134)}.power-diagnostics .pending-heading{padding:14px}.power-diagnostics .pending-heading>p{color:var(--textColorSecondary);margin-bottom:0}.power-diagnostics .diagnostics-summary{gap:10px;margin-bottom:16px}.power-diagnostics .diagnostics-summary>.summary-card{padding:10px 14px}.power-diagnostics .diagnostics-summary strong{font-size:22px}.power-diagnostics .diagnostics-summary .summary-icon{width:36px;height:36px;border-radius:8px}.power-diagnostics .diagnostics-summary .summary-card>div>span{font-size:12px}.power-diagnostics .diagnostics-explainer{padding:9px 12px}.power-diagnostics .view-intro{margin:12px 0}.power-diagnostics .view-intro p{font-size:12px}
|
|
17
17
|
.power-diagnostics .pending-title-row{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.power-diagnostics .pending-title-row>div{min-width:0}.power-diagnostics .pending-title-row strong{font-size:12px;color:var(--textColorSecondary);overflow-wrap:anywhere}.power-diagnostics .pending-state-row{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:6px}.power-diagnostics .pending-state-row h3{margin:0}.power-diagnostics .pending-title-row .pending-open-action{margin:0;flex-shrink:0;min-height:28px;padding:3px 8px;font-size:12px;white-space:nowrap}.power-diagnostics .pending-request-badges{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.power-diagnostics .pending-request-badges>span{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:4px;background:var(--contentColor);color:var(--textColorSecondary);font-size:12px}.power-diagnostics .pending-request-badges strong{color:var(--textColorPrimary);font-weight:500;font-variant-numeric:tabular-nums}
|
|
18
18
|
.power-diagnostics .attention-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:20px}.power-diagnostics .attention-empty strong{font-size:15px;color:var(--textColorPrimary)}.power-diagnostics .attention-empty small{max-width:520px;line-height:1.5}.power-diagnostics .attention-empty>.Icon{color:var(--textColorSecondary)}.power-diagnostics .attention-empty.all-ready>.Icon,.power-diagnostics .attention-empty.all-ready strong{color:var(--colorSuccess,#67b58b)}.power-diagnostics .attention-empty.all-ready{border-color:color-mix(in srgb,var(--colorSuccess,#67b58b) 35%,var(--borderColor));background:color-mix(in srgb,var(--colorSuccess,#67b58b) 3%,transparent)}.power-diagnostics .consumer-tone-error>td{background:color-mix(in srgb,var(--colorError,#e56d79) 4%,transparent)}.power-diagnostics .consumer-tone-warning>td{background:color-mix(in srgb,var(--colorWarning,#e0a134) 3%,transparent)}.power-diagnostics .consumer-tone-error>td:first-child{box-shadow:inset 3px 0 var(--colorError,#e56d79)}.power-diagnostics .consumer-tone-warning>td:first-child{box-shadow:inset 3px 0 var(--colorWarning,#e0a134)}
|
|
@@ -32,7 +32,7 @@ var diagnosticsStyles = `
|
|
|
32
32
|
.power-diagnostics .pending-heading.error{border-left:3px solid var(--colorError,#e56d79);background:color-mix(in srgb,var(--colorError,#e56d79) 4%,transparent)}
|
|
33
33
|
.power-diagnostics .pending-heading.warning{border-left:3px solid var(--colorWarning,#e0a134);background:color-mix(in srgb,var(--colorWarning,#e0a134) 3%,transparent)}
|
|
34
34
|
.power-diagnostics .pending-heading>.consumer-status{margin:0 0 10px}
|
|
35
|
-
.power-diagnostics .consumers-table .consumer-column{width:380px}.power-diagnostics .consumer-title-line{flex-wrap:
|
|
35
|
+
.power-diagnostics .consumers-table .consumer-column{width:380px}.power-diagnostics .consumer-title-line{flex-wrap:wrap;white-space:normal}.power-diagnostics .consumer-identity-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.power-diagnostics .consumer-title-line .consumer-resource-link{display:inline-flex;max-width:100%;transition:color 160ms ease}.power-diagnostics .consumer-link-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.power-diagnostics .consumer-identity-row .consumer-resource-link:hover,.power-diagnostics .consumer-identity-row .consumer-resource-link:focus-visible{color:var(--primary)}.power-diagnostics .consumer-resource-link:focus-visible{outline:2px solid var(--primary);outline-offset:3px}.power-diagnostics .consumer-pod-row .consumer-resource-link,.power-diagnostics .consumer-pod-row .consumer-subtitle{padding-left:8px}@media(prefers-reduced-motion:reduce){.power-diagnostics .consumer-title-line .consumer-resource-link{transition:none}}.power-diagnostics .consumer-subtitle{flex-wrap:nowrap;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.power-diagnostics .consumer-status{flex-shrink:1;min-width:0;white-space:normal;overflow-wrap:anywhere}.power-diagnostics .consumers-table td{padding-top:8px;padding-bottom:8px}.power-diagnostics .resource-cell .request-burst{display:inline-flex;margin-top:3px;font-size:10px;white-space:nowrap}.power-diagnostics .explain-finding{font-size:11px;padding:3px 6px}.power-diagnostics .consumer-row-actions .explain-finding{width:26px;height:26px;padding:3px;margin:0}.power-diagnostics .timeline-content details{margin-top:6px}.power-diagnostics .timeline-content details li{margin:8px 0}
|
|
36
36
|
.power-diagnostics .incident-copy{display:inline-flex;align-items:center;gap:8px;margin-right:8px}.power-diagnostics .incident-copy button{min-width:28px;min-height:28px;padding:4px;margin:0}.power-diagnostics .incident-copy [role=status]{font-size:11px;max-width:150px}.power-diagnostics .consumer-row-actions .incident-copy{margin-right:0}.power-diagnostics .consumer-row-actions .explain-finding{min-width:28px;min-height:28px}
|
|
37
37
|
.power-diagnostics .explain-finding{min-width:28px;min-height:28px}.power-diagnostics .consumer-row-actions .incident-copy{position:relative}.power-diagnostics .consumer-row-actions .incident-copy [role=status]{position:absolute;right:0;top:100%;white-space:nowrap;background:var(--contentColor);padding:3px 6px;border:1px solid var(--borderColor);z-index:2;max-width:none}
|
|
38
38
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.css.js","names":[],"sources":["../../src/renderer/diagnostics.css.ts"],"sourcesContent":["export const diagnosticsStyles = `\n.power-diagnostics{container-type:inline-size;container-name:diagnostics;box-sizing:border-box;color:var(--textColorPrimary);max-width:100%;line-height:1.5}\n.power-diagnostics *{box-sizing:border-box}.power-diagnostics h2{margin:0 0 6px;font-size:24px}.power-diagnostics h3{margin:0 0 6px;font-size:18px}.power-diagnostics p{margin:8px 0 16px}.power-diagnostics .page-intro,.power-diagnostics small,.power-diagnostics .view-intro p{color:var(--textColorSecondary)}\n.power-diagnostics nav{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px;border-bottom:1px solid var(--borderColor);padding-bottom:8px}.power-diagnostics button{cursor:pointer;display:inline-flex;align-items:center;gap:6px;border-radius:5px;border:1px solid var(--borderColor);background:var(--contentColor);color:var(--textColorPrimary);font:inherit;padding:6px 10px;margin:3px 4px 3px 0}.power-diagnostics button:hover{border-color:var(--primary)}.power-diagnostics button[aria-pressed=true]{color:var(--primary);border-color:var(--primary)}.power-diagnostics button:disabled{opacity:.5;cursor:default}.power-diagnostics :is(button,input,summary):focus-visible{outline:2px solid var(--primary);outline-offset:2px}\n.power-diagnostics .diagnostics-header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.power-diagnostics .snapshot-meta{white-space:pre-wrap;font-size:12px;color:var(--textColorSecondary)}.power-diagnostics .view-intro{margin:16px 0}.power-diagnostics .view-intro p{margin:4px 0 0}.power-diagnostics .diagnostics-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:22px}.power-diagnostics .diagnostics-summary>.summary-card{display:flex;align-items:center;gap:14px;padding:14px 16px;border:1px solid var(--borderColor);border-radius:8px;background:var(--contentColor)}.power-diagnostics .diagnostics-summary strong{display:block;font-size:25px;font-variant-numeric:tabular-nums}.power-diagnostics .diagnostics-summary span{color:var(--textColorSecondary)}.power-diagnostics .summary-card{--summary-color:var(--textColorSecondary)}.power-diagnostics .summary-card.workloads{--summary-color:#bc86df}.power-diagnostics .summary-card.pods{--summary-color:var(--primary,#609ee8)}.power-diagnostics .summary-card.pending{--summary-color:var(--colorSuccess,#67b58b)}.power-diagnostics .summary-card.pending.unavailable{--summary-color:var(--textColorSecondary)}.power-diagnostics .summary-card.unavailable strong{font-size:18px}.power-diagnostics .summary-card.attention{--summary-color:var(--colorWarning,#e0a134)}.power-diagnostics .summary-card strong{color:var(--summary-color)}.power-diagnostics .diagnostics-summary .summary-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:42px;height:42px;border-radius:10px;color:var(--summary-color);background:color-mix(in srgb,var(--summary-color) 12%,transparent)}.power-diagnostics .summary-icon .Icon{color:inherit}\n.power-diagnostics .toolbar{display:grid;align-items:end;gap:16px;margin-bottom:16px}.power-diagnostics .consumers-toolbar{grid-template-columns:160px minmax(160px,1fr) 180px max-content}.power-diagnostics .timeline-toolbar{grid-template-columns:minmax(200px,1fr) 240px max-content}.power-diagnostics .toolbar>label{display:flex;flex-direction:column;gap:6px;min-width:0;color:var(--textColorSecondary)}.power-diagnostics .diagnostics-select{display:block;min-width:180px;max-width:100%;vertical-align:middle}.power-diagnostics .toolbar .diagnostics-select{min-width:0;width:100%}.power-diagnostics .diagnostics-select>div{width:100%}.power-diagnostics .diagnostics-select .Select{min-width:0;width:100%}.power-diagnostics .diagnostics-select .Select__control{min-height:32px;height:32px}.power-diagnostics .diagnostics-select .Select__value-container{padding:0 8px;min-width:0}.power-diagnostics .diagnostics-select .Select__single-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.power-diagnostics .diagnostics-select .Select__input-container{margin:0;padding:0}.power-diagnostics .diagnostics-select .Select__indicator{padding:5px 8px}.power-diagnostics .diagnostics-input{display:block;min-width:0;height:32px}.power-diagnostics .diagnostics-input .Input{height:32px;min-height:32px;margin:0;border:1px solid var(--borderColor);border-radius:4px;background:var(--contentColor);padding:0 9px}.power-diagnostics .diagnostics-input .Input>.input-area{height:30px;min-height:0;min-width:0;padding:0;border:0;border-bottom:0}.power-diagnostics .diagnostics-input .Input>.input-area:after,.power-diagnostics .diagnostics-input .Input>.input-area:before{display:none}.power-diagnostics .diagnostics-input .Input:focus-within{border-color:var(--primary)}.power-diagnostics .diagnostics-input input{width:100%;max-width:100%;height:30px;min-height:0;padding:0;border:0;border-bottom:0;outline:none;background:transparent;color:var(--textColorPrimary);font:inherit}.power-diagnostics .diagnostics-input .Input:after,.power-diagnostics .diagnostics-input .Input:before{display:none}.power-diagnostics .warning-filter{display:flex;align-items:center;min-height:32px;padding:0 0 1px}.power-diagnostics .warning-filter .Checkbox{margin:0;white-space:nowrap}.power-diagnostics .warning-filter label{display:inline-flex;align-items:center;flex-direction:row;color:var(--textColorPrimary)}\n.power-diagnostics .evidence-table{min-width:660px;table-layout:fixed}.power-diagnostics .evidence-source{width:180px}.power-diagnostics .evidence-node{width:160px}.power-diagnostics .evidence-finding{width:auto}.power-diagnostics .evidence-table th{white-space:nowrap;overflow-wrap:normal}.power-diagnostics .evidence-table td:first-child{min-width:0;overflow-wrap:normal;word-break:normal}.power-diagnostics .evidence-table td:nth-child(2){overflow-wrap:break-word;word-break:normal}.power-diagnostics .evidence-table td:nth-child(3){overflow-wrap:anywhere}.power-diagnostics .diagnostics-table{overflow-x:auto;max-width:100%;border:1px solid var(--borderColor);border-radius:7px;margin:16px 0}.power-diagnostics table{width:100%;border-collapse:collapse}.power-diagnostics th,.power-diagnostics td{text-align:left;padding:14px 16px;border-bottom:1px solid var(--borderColor);vertical-align:top;overflow-wrap:anywhere}.power-diagnostics th{color:var(--textColorSecondary);font-weight:500;background:var(--contentColor)}.power-diagnostics td:first-child{min-width:240px}.power-diagnostics .numeric{text-align:right;min-width:170px;font-variant-numeric:tabular-nums}.power-diagnostics small{display:block;font-size:12px}.power-diagnostics .resource-cell strong{display:block;font-size:16px}.power-diagnostics .resource-cell>span{display:block;margin-top:8px}.power-diagnostics .diagnostics-explainer{margin:14px 0;padding:12px 16px;border:1px solid var(--borderColor);border-radius:6px;overflow-wrap:anywhere}.power-diagnostics summary{cursor:pointer;color:var(--textColorSecondary)}.power-diagnostics .diagnostics-empty{padding:28px;text-align:center;border:1px dashed var(--borderColor);border-radius:8px;color:var(--textColorSecondary)}.power-diagnostics .diagnostics-notice{padding:12px 16px;border-left:3px solid var(--colorWarning,#d49a35);background:var(--contentColor)}.power-diagnostics .pending-heading{padding:18px;border:1px solid var(--borderColor);border-radius:8px;margin-top:20px}.power-diagnostics .pending-heading>strong{display:block;color:var(--textColorSecondary);margin-bottom:8px}\n.power-diagnostics .timeline-legend{display:flex;flex-wrap:wrap;gap:14px;margin:18px 0}.power-diagnostics .timeline-type{--event-color:var(--textColorSecondary);display:inline-flex;align-items:center;gap:7px;font-size:12px;color:var(--textColorSecondary)}.power-diagnostics .timeline-type:before{content:\"\";width:8px;height:8px;border-radius:50%;background:var(--event-color);flex-shrink:0}.power-diagnostics .observed{--event-color:#7eacb5}.power-diagnostics .warning{--event-color:var(--colorWarning,#e0a134)}.power-diagnostics .rollout{--event-color:var(--primary,#609ee8)}.power-diagnostics .restart{--event-color:#bc86df}.power-diagnostics .readiness{--event-color:var(--colorSuccess,#67b58b)}\n.power-diagnostics .diagnostics-timeline{list-style:none;padding:0;margin:24px 0}.power-diagnostics .timeline-entry{display:grid;grid-template-columns:170px minmax(0,1fr);gap:30px;position:relative;padding-bottom:24px;--event-color:var(--textColorSecondary)}.power-diagnostics .timeline-entry.observed{--event-color:#7eacb5}.power-diagnostics .timeline-entry.warning{--event-color:var(--colorWarning,#e0a134)}.power-diagnostics .timeline-entry.rollout{--event-color:var(--primary,#609ee8)}.power-diagnostics .timeline-entry.restart{--event-color:#bc86df}.power-diagnostics .timeline-entry.readiness{--event-color:var(--colorSuccess,#67b58b)}.power-diagnostics .timeline-time time{white-space:pre-wrap}.power-diagnostics .timeline-time{padding-top:12px;text-align:right;font-variant-numeric:tabular-nums}.power-diagnostics .timeline-content{position:relative;min-width:0;padding:12px 16px;border:1px solid var(--borderColor);border-radius:7px;overflow-wrap:anywhere}.power-diagnostics .timeline-content:before{content:\"\";position:absolute;left:-22px;top:20px;width:11px;height:11px;background:var(--event-color);border:2px solid var(--mainBackground,var(--contentColor));border-radius:50%;z-index:1}.power-diagnostics .timeline-entry:before{content:\"\";position:absolute;left:183px;top:24px;bottom:-24px;width:2px;background:var(--borderColor)}.power-diagnostics .timeline-entry:last-child:before{display:none}.power-diagnostics .timeline-card-heading{padding-right:32px}.power-diagnostics .timeline-content .timeline-resource-action{position:absolute;top:10px;right:10px;display:flex;align-items:center;justify-content:center;width:26px;height:26px;min-width:26px;padding:0;margin:0;border-color:transparent;background:transparent;color:var(--textColorSecondary)}.power-diagnostics .timeline-content .timeline-resource-action:hover{color:var(--primary);background:var(--contentColor);border-color:var(--borderColor)}.power-diagnostics .timeline-content small{white-space:pre-wrap}.power-diagnostics .timeline-resource-identity{display:flex;align-items:center;gap:5px;overflow-wrap:anywhere}.power-diagnostics .timeline-content h4{margin:5px 0;font-size:15px}.power-diagnostics .timeline-content p{margin:4px 0 10px}\n.power-diagnostics .consumer-status{display:inline-flex;align-items:center;gap:4px;padding:1px 6px;margin-left:4px;border-radius:4px;font-size:11px;vertical-align:middle;color:var(--textColorSecondary);background:color-mix(in srgb,var(--textColorSecondary) 8%,transparent)}.power-diagnostics .consumer-status.warning{color:var(--colorWarning,#e0a134);background:color-mix(in srgb,var(--colorWarning,#e0a134) 10%,transparent)}.power-diagnostics .consumer-status.error{color:var(--colorError,#e56d79);background:color-mix(in srgb,var(--colorError,#e56d79) 10%,transparent)}.power-diagnostics .consumer-status.healthy{color:var(--colorSuccess,#67b58b);background:color-mix(in srgb,var(--colorSuccess,#67b58b) 10%,transparent)}.power-diagnostics .resource-cell .request-burst{display:inline-flex;align-items:center;gap:4px;margin-top:4px;padding:1px 5px;border-radius:4px;font-size:11px;color:var(--textColorSecondary);background:color-mix(in srgb,var(--colorWarning,#e0a134) 10%,transparent)}.power-diagnostics .timeline-content{border-left:2px solid color-mix(in srgb,var(--event-color) 60%,var(--borderColor))}.power-diagnostics .timeline-entry.warning .timeline-content{border-color:color-mix(in srgb,var(--event-color) 35%,var(--borderColor));border-left-color:var(--event-color);background:color-mix(in srgb,var(--event-color) 4%,transparent)}.power-diagnostics .evidence-badge{display:inline-flex;align-items:center;gap:5px;border-radius:4px;padding:2px 6px;font-size:12px;color:var(--primary,#609ee8);background:color-mix(in srgb,var(--primary,#609ee8) 9%,transparent);margin-bottom:4px}.power-diagnostics .evidence-badge.inferred{color:var(--colorWarning,#e0a134);background:color-mix(in srgb,var(--colorWarning,#e0a134) 9%,transparent)}\n.power-diagnostics .diagnostics-summary>button.summary-card{margin:0;width:100%;text-align:left;line-height:inherit;font:inherit}.power-diagnostics .diagnostics-summary>button.summary-card:hover{border-color:var(--colorWarning,#e0a134);background:color-mix(in srgb,var(--colorWarning,#e0a134) 5%,var(--contentColor))}\n@container diagnostics (min-width:701px) and (max-width:900px){.power-diagnostics .consumers-toolbar{grid-template-columns:160px minmax(160px,1fr) 180px}.power-diagnostics .consumers-toolbar>.warning-filter{grid-column:1/-1}}\n.power-diagnostics .consumer-identity-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0;margin-bottom:4px}.power-diagnostics .consumer-identity-label{min-width:0;font-weight:500;overflow-wrap:anywhere}.power-diagnostics .consumer-identity-row .consumer-resource-link{display:inline-flex;align-items:center;justify-content:flex-start;gap:6px;min-width:0;margin:0;padding:0;border:0;background:transparent;text-align:left;font-weight:500;overflow-wrap:anywhere}.power-diagnostics .consumer-resource-link:hover{color:var(--primary)}.power-diagnostics .consumer-resource-link>.Icon{flex-shrink:0;opacity:.65}.power-diagnostics .consumer-expand-slot{display:flex;justify-content:flex-end;flex-shrink:0;padding-left:10px;border-left:1px solid var(--borderColor)}.power-diagnostics .consumer-identity-row .consumer-expand{display:flex;align-items:center;justify-content:center;width:28px;height:28px;min-width:28px;margin:0;padding:0;border:1px solid var(--borderColor);border-radius:4px;background:var(--contentColor);color:var(--textColorSecondary)}.power-diagnostics .consumer-identity-row .consumer-expand:hover{color:var(--primary);border-color:var(--primary)}\n.power-diagnostics .consumer-depth-1>td:first-child{padding-left:32px;position:relative}.power-diagnostics .consumer-depth-2>td:first-child{padding-left:48px;position:relative}.power-diagnostics .consumer-depth-1>td:first-child:before,.power-diagnostics .consumer-depth-2>td:first-child:before{content:\"\";position:absolute;top:0;bottom:0;left:16px;width:1px;background:var(--borderColor)}.power-diagnostics .consumer-depth-2>td:first-child:before{left:32px}.power-diagnostics .consumer-pod-row>td{background:color-mix(in srgb,var(--textColorSecondary) 3%,transparent)}.power-diagnostics .consumer-namespace-row>td:first-child{font-weight:500}.power-diagnostics .namespace-identity{display:inline-flex;align-items:center;gap:7px;font-size:14px}.power-diagnostics .namespace-identity>.Icon{color:var(--primary)}\n.power-diagnostics .consumers-table{table-layout:fixed;min-width:900px}.power-diagnostics .consumers-table .metric-column{width:205px}.power-diagnostics .consumers-table .unscheduled-column{width:165px}.power-diagnostics .consumers-table th{white-space:nowrap;overflow-wrap:normal}.power-diagnostics .consumers-table th:last-child{white-space:normal;word-break:normal;overflow-wrap:normal}.power-diagnostics .consumers-table td{padding-top:12px;padding-bottom:12px}.power-diagnostics .consumer-identity-main{flex:1;min-width:0}.power-diagnostics .consumer-title-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}.power-diagnostics .consumer-title-line .consumer-status{margin-left:0}.power-diagnostics .consumer-subtitle{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-top:5px;line-height:1.4}.power-diagnostics .consumer-subtitle>.Icon{flex-shrink:0}.power-diagnostics .consumer-row-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.power-diagnostics .consumer-identity-row{align-items:flex-start;margin-bottom:0}.power-diagnostics .consumer-identity-row .consumer-resource-link{font-size:14px;color:var(--textColorPrimary)}.power-diagnostics .resource-value,.power-diagnostics .resource-request{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.power-diagnostics .resource-value small,.power-diagnostics .resource-request small{font-size:11px;white-space:nowrap}.power-diagnostics .resource-cell .resource-value strong{font-size:15px;font-weight:600}.power-diagnostics .resource-request{margin-top:3px}.power-diagnostics .resource-request>span{font-size:12px}.power-diagnostics .resource-cell .resource-coverage{margin-top:4px;font-size:10px;line-height:1.4}.power-diagnostics .unscheduled-cell>div{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.power-diagnostics .unscheduled-cell>div+div{margin-top:5px}.power-diagnostics .unscheduled-cell small{font-size:11px}.power-diagnostics .unscheduled-cell span{font-size:12px}.power-diagnostics .unscheduled-cell.has-requests span{color:var(--colorWarning,#e0a134)}.power-diagnostics .unscheduled-empty{color:var(--textColorSecondary);font-size:12px}.power-diagnostics .timeline-entry{color:var(--textColorPrimary)}.power-diagnostics .timeline-entry.warning .timeline-content h4{color:var(--colorWarning,#e0a134)}.power-diagnostics .pending-heading{padding:14px}.power-diagnostics .pending-heading>p{color:var(--textColorSecondary);margin-bottom:0}.power-diagnostics .diagnostics-summary{gap:10px;margin-bottom:16px}.power-diagnostics .diagnostics-summary>.summary-card{padding:10px 14px}.power-diagnostics .diagnostics-summary strong{font-size:22px}.power-diagnostics .diagnostics-summary .summary-icon{width:36px;height:36px;border-radius:8px}.power-diagnostics .diagnostics-summary .summary-card>div>span{font-size:12px}.power-diagnostics .diagnostics-explainer{padding:9px 12px}.power-diagnostics .view-intro{margin:12px 0}.power-diagnostics .view-intro p{font-size:12px}\n.power-diagnostics .pending-title-row{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.power-diagnostics .pending-title-row>div{min-width:0}.power-diagnostics .pending-title-row strong{font-size:12px;color:var(--textColorSecondary);overflow-wrap:anywhere}.power-diagnostics .pending-state-row{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:6px}.power-diagnostics .pending-state-row h3{margin:0}.power-diagnostics .pending-title-row .pending-open-action{margin:0;flex-shrink:0;min-height:28px;padding:3px 8px;font-size:12px;white-space:nowrap}.power-diagnostics .pending-request-badges{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.power-diagnostics .pending-request-badges>span{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:4px;background:var(--contentColor);color:var(--textColorSecondary);font-size:12px}.power-diagnostics .pending-request-badges strong{color:var(--textColorPrimary);font-weight:500;font-variant-numeric:tabular-nums}\n.power-diagnostics .attention-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:20px}.power-diagnostics .attention-empty strong{font-size:15px;color:var(--textColorPrimary)}.power-diagnostics .attention-empty small{max-width:520px;line-height:1.5}.power-diagnostics .attention-empty>.Icon{color:var(--textColorSecondary)}.power-diagnostics .attention-empty.all-ready>.Icon,.power-diagnostics .attention-empty.all-ready strong{color:var(--colorSuccess,#67b58b)}.power-diagnostics .attention-empty.all-ready{border-color:color-mix(in srgb,var(--colorSuccess,#67b58b) 35%,var(--borderColor));background:color-mix(in srgb,var(--colorSuccess,#67b58b) 3%,transparent)}.power-diagnostics .consumer-tone-error>td{background:color-mix(in srgb,var(--colorError,#e56d79) 4%,transparent)}.power-diagnostics .consumer-tone-warning>td{background:color-mix(in srgb,var(--colorWarning,#e0a134) 3%,transparent)}.power-diagnostics .consumer-tone-error>td:first-child{box-shadow:inset 3px 0 var(--colorError,#e56d79)}.power-diagnostics .consumer-tone-warning>td:first-child{box-shadow:inset 3px 0 var(--colorWarning,#e0a134)}\n@media(max-width:700px){.power-diagnostics .diagnostics-summary{grid-template-columns:1fr}.power-diagnostics .toolbar{grid-template-columns:minmax(0,1fr);align-items:stretch}.power-diagnostics .toolbar>*,.power-diagnostics .diagnostics-select{width:100%;min-width:0}.power-diagnostics .warning-filter{padding:0}.power-diagnostics .timeline-entry{grid-template-columns:minmax(0,1fr);gap:6px;padding-left:24px}.power-diagnostics .timeline-time{text-align:left;padding:0}.power-diagnostics .timeline-entry:before{left:5px;top:44px}.power-diagnostics .timeline-content:before{left:-24px}.power-diagnostics .timeline-content{margin-left:0}}\n\n@container diagnostics (max-width:700px){.power-diagnostics .diagnostics-summary{grid-template-columns:1fr}.power-diagnostics .toolbar{grid-template-columns:minmax(0,1fr);align-items:stretch}.power-diagnostics .toolbar>*,.power-diagnostics .diagnostics-select{width:100%;min-width:0}.power-diagnostics .warning-filter{padding:0}.power-diagnostics .timeline-entry{grid-template-columns:minmax(0,1fr);gap:6px;padding-left:24px}.power-diagnostics .timeline-time{text-align:left;padding:0}.power-diagnostics .timeline-entry:before{left:5px;top:44px}.power-diagnostics .timeline-content:before{left:-24px}.power-diagnostics .timeline-content{margin-left:0}}\n\n.power-diagnostics .diagnostics-select .Select__control{background:color-mix(in srgb,var(--textColorPrimary) 5%,var(--contentColor));border:1px solid var(--inputControlBorder,var(--halfGray));box-shadow:none;cursor:pointer;transition:border-color .15s,background .15s,box-shadow .15s}\n.power-diagnostics .diagnostics-select .Select__control:hover{border-color:var(--textColorSecondary);background:color-mix(in srgb,var(--textColorPrimary) 8%,var(--contentColor))}\n.power-diagnostics .diagnostics-select .Select__control--is-focused{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}\n.power-diagnostics .diagnostics-select .Select__single-value{color:var(--textColorPrimary)}\n.power-diagnostics .diagnostics-select .Select__indicators{border-left:1px solid var(--borderFaintColor);align-self:stretch;padding:0 3px}\n.power-diagnostics .diagnostics-select .Select__dropdown-indicator{opacity:.85;color:var(--textColorSecondary)}\n@media(prefers-reduced-motion:reduce){.power-diagnostics .diagnostics-select .Select__control{transition:none}}\n\n.power-diagnostics .diagnostics-summary .summary-icon .Icon,.power-diagnostics .diagnostics-summary .summary-icon .Icon>.icon{color:var(--summary-color)}\n.power-diagnostics .pending-heading.error{border-left:3px solid var(--colorError,#e56d79);background:color-mix(in srgb,var(--colorError,#e56d79) 4%,transparent)}\n.power-diagnostics .pending-heading.warning{border-left:3px solid var(--colorWarning,#e0a134);background:color-mix(in srgb,var(--colorWarning,#e0a134) 3%,transparent)}\n.power-diagnostics .pending-heading>.consumer-status{margin:0 0 10px}\n.power-diagnostics .consumers-table .consumer-column{width:380px}.power-diagnostics .consumer-title-line{flex-wrap:nowrap;white-space:nowrap}.power-diagnostics .consumer-title-line .consumer-resource-link,.power-diagnostics .consumer-identity-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.power-diagnostics .consumer-subtitle{flex-wrap:nowrap;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.power-diagnostics .consumer-status{flex-shrink:0}.power-diagnostics .consumers-table td{padding-top:8px;padding-bottom:8px}.power-diagnostics .resource-cell .request-burst{display:inline-flex;margin-top:3px;font-size:10px;white-space:nowrap}.power-diagnostics .explain-finding{font-size:11px;padding:3px 6px}.power-diagnostics .consumer-row-actions .explain-finding{width:26px;height:26px;padding:3px;margin:0}.power-diagnostics .timeline-content details{margin-top:6px}.power-diagnostics .timeline-content details li{margin:8px 0}\n.power-diagnostics .incident-copy{display:inline-flex;align-items:center;gap:8px;margin-right:8px}.power-diagnostics .incident-copy button{min-width:28px;min-height:28px;padding:4px;margin:0}.power-diagnostics .incident-copy [role=status]{font-size:11px;max-width:150px}.power-diagnostics .consumer-row-actions .incident-copy{margin-right:0}.power-diagnostics .consumer-row-actions .explain-finding{min-width:28px;min-height:28px}\n.power-diagnostics .explain-finding{min-width:28px;min-height:28px}.power-diagnostics .consumer-row-actions .incident-copy{position:relative}.power-diagnostics .consumer-row-actions .incident-copy [role=status]{position:absolute;right:0;top:100%;white-space:nowrap;background:var(--contentColor);padding:3px 6px;border:1px solid var(--borderColor);z-index:2;max-width:none}\n\n.power-diagnostics .incident-copy button,.power-diagnostics .consumer-row-actions .explain-finding{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:28px;height:28px;min-width:28px;min-height:28px;gap:0;padding:0;line-height:1;vertical-align:middle}.power-diagnostics .incident-copy button>.Icon,.power-diagnostics .consumer-row-actions .explain-finding>.Icon{margin:0;flex-shrink:0}\n\n.power-diagnostics .timeline-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.power-diagnostics .timeline-card-top>.timeline-card-heading{flex:1;min-width:0;padding-right:0}.power-diagnostics .timeline-card-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.power-diagnostics .timeline-card-actions .incident-copy{position:relative;margin:0}.power-diagnostics .timeline-card-actions .incident-copy [role=status]{position:absolute;right:0;top:calc(100% + 6px);white-space:nowrap;max-width:260px;background:var(--contentColor);border:1px solid var(--borderColor);padding:4px 6px;z-index:2}.power-diagnostics .timeline-content .timeline-card-actions .timeline-resource-action{position:static;width:28px;height:28px;min-width:28px;margin:0}.power-diagnostics .timeline-card-actions .explain-finding{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:28px;margin:0;padding:0 8px;line-height:1}.power-diagnostics .timeline-card-actions .explain-finding>.Icon{margin:0;flex-shrink:0}\n.power-diagnostics .namespace-scope{display:flex;align-items:center;flex-wrap:wrap;column-gap:20px;row-gap:6px;margin:4px 0 16px;min-height:32px}.power-diagnostics .namespace-scope-label{overflow-wrap:anywhere}.power-diagnostics .namespace-scope button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:32px;padding:4px 0;margin:0;border:0;background:transparent;box-shadow:none;color:var(--textColorSecondary)}.power-diagnostics .namespace-scope button:hover{color:var(--primary);background:transparent}.power-diagnostics .namespace-scope button:focus-visible{outline:2px solid var(--primary);outline-offset:3px}\n@container diagnostics (max-width:700px){.power-diagnostics .timeline-card-actions .timeline-action-label{display:none}.power-diagnostics .timeline-card-actions .explain-finding{width:28px;min-width:28px;padding:0}.power-diagnostics .timeline-card-top{gap:12px}}\n`;\n"],"mappings":";AAAA,IAAa,oBAAoB"}
|
|
1
|
+
{"version":3,"file":"diagnostics.css.js","names":[],"sources":["../../src/renderer/diagnostics.css.ts"],"sourcesContent":["export const diagnosticsStyles = `\n.power-diagnostics{container-type:inline-size;container-name:diagnostics;box-sizing:border-box;color:var(--textColorPrimary);max-width:100%;line-height:1.5}\n.power-diagnostics *{box-sizing:border-box}.power-diagnostics h2{margin:0 0 6px;font-size:24px}.power-diagnostics h3{margin:0 0 6px;font-size:18px}.power-diagnostics p{margin:8px 0 16px}.power-diagnostics .page-intro,.power-diagnostics small,.power-diagnostics .view-intro p{color:var(--textColorSecondary)}\n.power-diagnostics nav{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px;border-bottom:1px solid var(--borderColor);padding-bottom:8px}.power-diagnostics button{cursor:pointer;display:inline-flex;align-items:center;gap:6px;border-radius:5px;border:1px solid var(--borderColor);background:var(--contentColor);color:var(--textColorPrimary);font:inherit;padding:6px 10px;margin:3px 4px 3px 0}.power-diagnostics button:hover{border-color:var(--primary)}.power-diagnostics button[aria-pressed=true]{color:var(--primary);border-color:var(--primary)}.power-diagnostics button:disabled{opacity:.5;cursor:default}.power-diagnostics :is(button,input,summary):focus-visible{outline:2px solid var(--primary);outline-offset:2px}\n.power-diagnostics .diagnostics-header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.power-diagnostics .snapshot-meta{white-space:pre-wrap;font-size:12px;color:var(--textColorSecondary)}.power-diagnostics .view-intro{margin:16px 0}.power-diagnostics .view-intro p{margin:4px 0 0}.power-diagnostics .diagnostics-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:22px}.power-diagnostics .diagnostics-summary>.summary-card{display:flex;align-items:center;gap:14px;padding:14px 16px;border:1px solid var(--borderColor);border-radius:8px;background:var(--contentColor)}.power-diagnostics .diagnostics-summary strong{display:block;font-size:25px;font-variant-numeric:tabular-nums}.power-diagnostics .diagnostics-summary span{color:var(--textColorSecondary)}.power-diagnostics .summary-card{--summary-color:var(--textColorSecondary)}.power-diagnostics .summary-card.workloads{--summary-color:#bc86df}.power-diagnostics .summary-card.pods{--summary-color:var(--primary,#609ee8)}.power-diagnostics .summary-card.pending{--summary-color:var(--colorSuccess,#67b58b)}.power-diagnostics .summary-card.pending.unavailable{--summary-color:var(--textColorSecondary)}.power-diagnostics .summary-card.unavailable strong{font-size:18px}.power-diagnostics .summary-card.attention{--summary-color:var(--colorWarning,#e0a134)}.power-diagnostics .summary-card strong{color:var(--summary-color)}.power-diagnostics .diagnostics-summary .summary-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:42px;height:42px;border-radius:10px;color:var(--summary-color);background:color-mix(in srgb,var(--summary-color) 12%,transparent)}.power-diagnostics .summary-icon .Icon{color:inherit}\n.power-diagnostics .toolbar{display:grid;align-items:end;gap:16px;margin-bottom:16px}.power-diagnostics .consumers-toolbar{grid-template-columns:160px minmax(160px,1fr) 180px max-content}.power-diagnostics .timeline-toolbar{grid-template-columns:minmax(200px,1fr) 240px max-content}.power-diagnostics .toolbar>label{display:flex;flex-direction:column;gap:6px;min-width:0;color:var(--textColorSecondary)}.power-diagnostics .diagnostics-select{display:block;min-width:180px;max-width:100%;vertical-align:middle}.power-diagnostics .toolbar .diagnostics-select{min-width:0;width:100%}.power-diagnostics .diagnostics-select>div{width:100%}.power-diagnostics .diagnostics-select .Select{min-width:0;width:100%}.power-diagnostics .diagnostics-select .Select__control{min-height:32px;height:32px}.power-diagnostics .diagnostics-select .Select__value-container{padding:0 8px;min-width:0}.power-diagnostics .diagnostics-select .Select__single-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.power-diagnostics .diagnostics-select .Select__input-container{margin:0;padding:0}.power-diagnostics .diagnostics-select .Select__indicator{padding:5px 8px}.power-diagnostics .diagnostics-input{display:block;min-width:0;height:32px}.power-diagnostics .diagnostics-input .Input{height:32px;min-height:32px;margin:0;border:1px solid var(--borderColor);border-radius:4px;background:var(--contentColor);padding:0 9px}.power-diagnostics .diagnostics-input .Input>.input-area{height:30px;min-height:0;min-width:0;padding:0;border:0;border-bottom:0}.power-diagnostics .diagnostics-input .Input>.input-area:after,.power-diagnostics .diagnostics-input .Input>.input-area:before{display:none}.power-diagnostics .diagnostics-input .Input:focus-within{border-color:var(--primary)}.power-diagnostics .diagnostics-input input{width:100%;max-width:100%;height:30px;min-height:0;padding:0;border:0;border-bottom:0;outline:none;background:transparent;color:var(--textColorPrimary);font:inherit}.power-diagnostics .diagnostics-input .Input:after,.power-diagnostics .diagnostics-input .Input:before{display:none}.power-diagnostics .warning-filter{display:flex;align-items:center;min-height:32px;padding:0 0 1px}.power-diagnostics .warning-filter .Checkbox{margin:0;white-space:nowrap}.power-diagnostics .warning-filter label{display:inline-flex;align-items:center;flex-direction:row;color:var(--textColorPrimary)}\n.power-diagnostics .evidence-table{min-width:660px;table-layout:fixed}.power-diagnostics .evidence-source{width:180px}.power-diagnostics .evidence-node{width:160px}.power-diagnostics .evidence-finding{width:auto}.power-diagnostics .evidence-table th{white-space:nowrap;overflow-wrap:normal}.power-diagnostics .evidence-table td:first-child{min-width:0;overflow-wrap:normal;word-break:normal}.power-diagnostics .evidence-table td:nth-child(2){overflow-wrap:break-word;word-break:normal}.power-diagnostics .evidence-table td:nth-child(3){overflow-wrap:anywhere}.power-diagnostics .diagnostics-table{overflow-x:auto;max-width:100%;border:1px solid var(--borderColor);border-radius:7px;margin:16px 0}.power-diagnostics table{width:100%;border-collapse:collapse}.power-diagnostics th,.power-diagnostics td{text-align:left;padding:14px 16px;border-bottom:1px solid var(--borderColor);vertical-align:top;overflow-wrap:anywhere}.power-diagnostics th{color:var(--textColorSecondary);font-weight:500;background:var(--contentColor)}.power-diagnostics td:first-child{min-width:240px}.power-diagnostics .numeric{text-align:right;min-width:170px;font-variant-numeric:tabular-nums}.power-diagnostics small{display:block;font-size:12px}.power-diagnostics .resource-cell strong{display:block;font-size:16px}.power-diagnostics .resource-cell>span{display:block;margin-top:8px}.power-diagnostics .diagnostics-explainer{margin:14px 0;padding:12px 16px;border:1px solid var(--borderColor);border-radius:6px;overflow-wrap:anywhere}.power-diagnostics summary{cursor:pointer;color:var(--textColorSecondary)}.power-diagnostics .diagnostics-empty{padding:28px;text-align:center;border:1px dashed var(--borderColor);border-radius:8px;color:var(--textColorSecondary)}.power-diagnostics .diagnostics-notice{padding:12px 16px;border-left:3px solid var(--colorWarning,#d49a35);background:var(--contentColor)}.power-diagnostics .pending-heading{padding:18px;border:1px solid var(--borderColor);border-radius:8px;margin-top:20px}.power-diagnostics .pending-heading>strong{display:block;color:var(--textColorSecondary);margin-bottom:8px}\n.power-diagnostics .timeline-legend{display:flex;flex-wrap:wrap;gap:14px;margin:18px 0}.power-diagnostics .timeline-type{--event-color:var(--textColorSecondary);display:inline-flex;align-items:center;gap:7px;font-size:12px;color:var(--textColorSecondary)}.power-diagnostics .timeline-type:before{content:\"\";width:8px;height:8px;border-radius:50%;background:var(--event-color);flex-shrink:0}.power-diagnostics .observed{--event-color:#7eacb5}.power-diagnostics .warning{--event-color:var(--colorWarning,#e0a134)}.power-diagnostics .rollout{--event-color:var(--primary,#609ee8)}.power-diagnostics .restart{--event-color:#bc86df}.power-diagnostics .readiness{--event-color:var(--colorSuccess,#67b58b)}\n.power-diagnostics .diagnostics-timeline{list-style:none;padding:0;margin:24px 0}.power-diagnostics .timeline-entry{display:grid;grid-template-columns:170px minmax(0,1fr);gap:30px;position:relative;padding-bottom:24px;--event-color:var(--textColorSecondary)}.power-diagnostics .timeline-entry.observed{--event-color:#7eacb5}.power-diagnostics .timeline-entry.warning{--event-color:var(--colorWarning,#e0a134)}.power-diagnostics .timeline-entry.rollout{--event-color:var(--primary,#609ee8)}.power-diagnostics .timeline-entry.restart{--event-color:#bc86df}.power-diagnostics .timeline-entry.readiness{--event-color:var(--colorSuccess,#67b58b)}.power-diagnostics .timeline-time time{white-space:pre-wrap}.power-diagnostics .timeline-time{padding-top:12px;text-align:right;font-variant-numeric:tabular-nums}.power-diagnostics .timeline-content{position:relative;min-width:0;padding:12px 16px;border:1px solid var(--borderColor);border-radius:7px;overflow-wrap:anywhere}.power-diagnostics .timeline-content:before{content:\"\";position:absolute;left:-22px;top:20px;width:11px;height:11px;background:var(--event-color);border:2px solid var(--mainBackground,var(--contentColor));border-radius:50%;z-index:1}.power-diagnostics .timeline-entry:before{content:\"\";position:absolute;left:183px;top:24px;bottom:-24px;width:2px;background:var(--borderColor)}.power-diagnostics .timeline-entry:last-child:before{display:none}.power-diagnostics .timeline-card-heading{padding-right:32px}.power-diagnostics .timeline-content .timeline-resource-action{position:absolute;top:10px;right:10px;display:flex;align-items:center;justify-content:center;width:26px;height:26px;min-width:26px;padding:0;margin:0;border-color:transparent;background:transparent;color:var(--textColorSecondary)}.power-diagnostics .timeline-content .timeline-resource-action:hover{color:var(--primary);background:var(--contentColor);border-color:var(--borderColor)}.power-diagnostics .timeline-content small{white-space:pre-wrap}.power-diagnostics .timeline-resource-identity{display:flex;align-items:center;gap:5px;overflow-wrap:anywhere}.power-diagnostics .timeline-content h4{margin:5px 0;font-size:15px}.power-diagnostics .timeline-content p{margin:4px 0 10px}\n.power-diagnostics .consumer-status{display:inline-flex;align-items:center;gap:4px;padding:1px 6px;margin-left:4px;border-radius:4px;font-size:11px;vertical-align:middle;color:var(--textColorSecondary);background:color-mix(in srgb,var(--textColorSecondary) 8%,transparent)}.power-diagnostics .consumer-status.warning{color:var(--colorWarning,#e0a134);background:color-mix(in srgb,var(--colorWarning,#e0a134) 10%,transparent)}.power-diagnostics .consumer-status.error{color:var(--colorError,#e56d79);background:color-mix(in srgb,var(--colorError,#e56d79) 10%,transparent)}.power-diagnostics .consumer-status.healthy{color:var(--colorSuccess,#67b58b);background:color-mix(in srgb,var(--colorSuccess,#67b58b) 10%,transparent)}.power-diagnostics .resource-cell .request-burst{display:inline-flex;align-items:center;gap:4px;margin-top:4px;padding:1px 5px;border-radius:4px;font-size:11px;color:var(--textColorSecondary);background:color-mix(in srgb,var(--colorWarning,#e0a134) 10%,transparent)}.power-diagnostics .timeline-content{border-left:2px solid color-mix(in srgb,var(--event-color) 60%,var(--borderColor))}.power-diagnostics .timeline-entry.warning .timeline-content{border-color:color-mix(in srgb,var(--event-color) 35%,var(--borderColor));border-left-color:var(--event-color);background:color-mix(in srgb,var(--event-color) 4%,transparent)}.power-diagnostics .evidence-badge{display:inline-flex;align-items:center;gap:5px;border-radius:4px;padding:2px 6px;font-size:12px;color:var(--primary,#609ee8);background:color-mix(in srgb,var(--primary,#609ee8) 9%,transparent);margin-bottom:4px}.power-diagnostics .evidence-badge.inferred{color:var(--colorWarning,#e0a134);background:color-mix(in srgb,var(--colorWarning,#e0a134) 9%,transparent)}\n.power-diagnostics .diagnostics-summary>button.summary-card{margin:0;width:100%;text-align:left;line-height:inherit;font:inherit}.power-diagnostics .diagnostics-summary>button.summary-card:hover{border-color:var(--colorWarning,#e0a134);background:color-mix(in srgb,var(--colorWarning,#e0a134) 5%,var(--contentColor))}\n@container diagnostics (min-width:701px) and (max-width:900px){.power-diagnostics .consumers-toolbar{grid-template-columns:160px minmax(160px,1fr) 180px}.power-diagnostics .consumers-toolbar>.warning-filter{grid-column:1/-1}}\n.power-diagnostics .consumer-identity-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0;margin-bottom:4px}.power-diagnostics .consumer-identity-label{min-width:0;font-weight:500;overflow-wrap:anywhere}.power-diagnostics .consumer-identity-row .consumer-resource-link{display:inline-flex;align-items:center;justify-content:flex-start;gap:6px;min-width:0;margin:0;padding:0;border:0;background:transparent;text-align:left;font-weight:500;overflow-wrap:anywhere}.power-diagnostics .consumer-resource-link:hover{color:var(--primary)}.power-diagnostics .consumer-resource-link>.Icon{flex-shrink:0;opacity:.65}.power-diagnostics .consumer-expand-slot{display:flex;justify-content:flex-end;flex-shrink:0;padding-left:10px;border-left:1px solid var(--borderColor)}.power-diagnostics .consumer-identity-row .consumer-expand{display:flex;align-items:center;justify-content:center;width:28px;height:28px;min-width:28px;margin:0;padding:0;border:1px solid var(--borderColor);border-radius:4px;background:var(--contentColor);color:var(--textColorSecondary)}.power-diagnostics .consumer-identity-row .consumer-expand:hover{color:var(--primary);border-color:var(--primary)}\n.power-diagnostics .consumer-depth-1>td:first-child{padding-left:32px;position:relative}.power-diagnostics .consumer-depth-2>td:first-child{padding-left:48px;position:relative}.power-diagnostics .consumer-depth-1>td:first-child:before,.power-diagnostics .consumer-depth-2>td:first-child:before{content:\"\";position:absolute;top:0;bottom:0;left:16px;width:1px;background:var(--borderColor)}.power-diagnostics .consumer-depth-2>td:first-child:before{left:32px}.power-diagnostics .consumer-pod-row>td{background:color-mix(in srgb,var(--textColorSecondary) 3%,transparent)}.power-diagnostics .consumer-namespace-row>td:first-child{font-weight:500}.power-diagnostics .namespace-identity{min-width:0;max-width:100%;display:inline-flex;align-items:center;gap:7px;font-size:14px}.power-diagnostics .namespace-identity>.Icon{color:var(--primary)}\n.power-diagnostics .consumers-table{table-layout:fixed;min-width:900px}.power-diagnostics .consumers-table .metric-column{width:205px}.power-diagnostics .consumers-table .unscheduled-column{width:165px}.power-diagnostics .consumers-table th{white-space:nowrap;overflow-wrap:normal}.power-diagnostics .consumers-table th:last-child{white-space:normal;word-break:normal;overflow-wrap:normal}.power-diagnostics .consumers-table td{padding-top:12px;padding-bottom:12px}.power-diagnostics .consumer-identity-main{flex:1;min-width:0}.power-diagnostics .consumer-title-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}.power-diagnostics .consumer-title-line .consumer-status{margin-left:0}.power-diagnostics .consumer-subtitle{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-top:5px;line-height:1.4}.power-diagnostics .consumer-subtitle>.Icon{flex-shrink:0}.power-diagnostics .consumer-row-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.power-diagnostics .consumer-identity-row{align-items:flex-start;margin-bottom:0}.power-diagnostics .consumer-identity-row .consumer-resource-link{font-size:14px;color:var(--textColorPrimary)}.power-diagnostics .resource-value,.power-diagnostics .resource-request{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.power-diagnostics .resource-value small,.power-diagnostics .resource-request small{font-size:11px;white-space:nowrap}.power-diagnostics .resource-cell .resource-value strong{font-size:15px;font-weight:600}.power-diagnostics .resource-request{margin-top:3px}.power-diagnostics .resource-request>span{font-size:12px}.power-diagnostics .resource-cell .resource-coverage{margin-top:4px;font-size:10px;line-height:1.4}.power-diagnostics .unscheduled-cell>div{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.power-diagnostics .unscheduled-cell>div+div{margin-top:5px}.power-diagnostics .unscheduled-cell small{font-size:11px}.power-diagnostics .unscheduled-cell span{font-size:12px}.power-diagnostics .unscheduled-cell.has-requests span{color:var(--colorWarning,#e0a134)}.power-diagnostics .unscheduled-empty{color:var(--textColorSecondary);font-size:12px}.power-diagnostics .timeline-entry{color:var(--textColorPrimary)}.power-diagnostics .timeline-entry.warning .timeline-content h4{color:var(--colorWarning,#e0a134)}.power-diagnostics .pending-heading{padding:14px}.power-diagnostics .pending-heading>p{color:var(--textColorSecondary);margin-bottom:0}.power-diagnostics .diagnostics-summary{gap:10px;margin-bottom:16px}.power-diagnostics .diagnostics-summary>.summary-card{padding:10px 14px}.power-diagnostics .diagnostics-summary strong{font-size:22px}.power-diagnostics .diagnostics-summary .summary-icon{width:36px;height:36px;border-radius:8px}.power-diagnostics .diagnostics-summary .summary-card>div>span{font-size:12px}.power-diagnostics .diagnostics-explainer{padding:9px 12px}.power-diagnostics .view-intro{margin:12px 0}.power-diagnostics .view-intro p{font-size:12px}\n.power-diagnostics .pending-title-row{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.power-diagnostics .pending-title-row>div{min-width:0}.power-diagnostics .pending-title-row strong{font-size:12px;color:var(--textColorSecondary);overflow-wrap:anywhere}.power-diagnostics .pending-state-row{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:6px}.power-diagnostics .pending-state-row h3{margin:0}.power-diagnostics .pending-title-row .pending-open-action{margin:0;flex-shrink:0;min-height:28px;padding:3px 8px;font-size:12px;white-space:nowrap}.power-diagnostics .pending-request-badges{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.power-diagnostics .pending-request-badges>span{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:4px;background:var(--contentColor);color:var(--textColorSecondary);font-size:12px}.power-diagnostics .pending-request-badges strong{color:var(--textColorPrimary);font-weight:500;font-variant-numeric:tabular-nums}\n.power-diagnostics .attention-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:20px}.power-diagnostics .attention-empty strong{font-size:15px;color:var(--textColorPrimary)}.power-diagnostics .attention-empty small{max-width:520px;line-height:1.5}.power-diagnostics .attention-empty>.Icon{color:var(--textColorSecondary)}.power-diagnostics .attention-empty.all-ready>.Icon,.power-diagnostics .attention-empty.all-ready strong{color:var(--colorSuccess,#67b58b)}.power-diagnostics .attention-empty.all-ready{border-color:color-mix(in srgb,var(--colorSuccess,#67b58b) 35%,var(--borderColor));background:color-mix(in srgb,var(--colorSuccess,#67b58b) 3%,transparent)}.power-diagnostics .consumer-tone-error>td{background:color-mix(in srgb,var(--colorError,#e56d79) 4%,transparent)}.power-diagnostics .consumer-tone-warning>td{background:color-mix(in srgb,var(--colorWarning,#e0a134) 3%,transparent)}.power-diagnostics .consumer-tone-error>td:first-child{box-shadow:inset 3px 0 var(--colorError,#e56d79)}.power-diagnostics .consumer-tone-warning>td:first-child{box-shadow:inset 3px 0 var(--colorWarning,#e0a134)}\n@media(max-width:700px){.power-diagnostics .diagnostics-summary{grid-template-columns:1fr}.power-diagnostics .toolbar{grid-template-columns:minmax(0,1fr);align-items:stretch}.power-diagnostics .toolbar>*,.power-diagnostics .diagnostics-select{width:100%;min-width:0}.power-diagnostics .warning-filter{padding:0}.power-diagnostics .timeline-entry{grid-template-columns:minmax(0,1fr);gap:6px;padding-left:24px}.power-diagnostics .timeline-time{text-align:left;padding:0}.power-diagnostics .timeline-entry:before{left:5px;top:44px}.power-diagnostics .timeline-content:before{left:-24px}.power-diagnostics .timeline-content{margin-left:0}}\n\n@container diagnostics (max-width:700px){.power-diagnostics .diagnostics-summary{grid-template-columns:1fr}.power-diagnostics .toolbar{grid-template-columns:minmax(0,1fr);align-items:stretch}.power-diagnostics .toolbar>*,.power-diagnostics .diagnostics-select{width:100%;min-width:0}.power-diagnostics .warning-filter{padding:0}.power-diagnostics .timeline-entry{grid-template-columns:minmax(0,1fr);gap:6px;padding-left:24px}.power-diagnostics .timeline-time{text-align:left;padding:0}.power-diagnostics .timeline-entry:before{left:5px;top:44px}.power-diagnostics .timeline-content:before{left:-24px}.power-diagnostics .timeline-content{margin-left:0}}\n\n.power-diagnostics .diagnostics-select .Select__control{background:color-mix(in srgb,var(--textColorPrimary) 5%,var(--contentColor));border:1px solid var(--inputControlBorder,var(--halfGray));box-shadow:none;cursor:pointer;transition:border-color .15s,background .15s,box-shadow .15s}\n.power-diagnostics .diagnostics-select .Select__control:hover{border-color:var(--textColorSecondary);background:color-mix(in srgb,var(--textColorPrimary) 8%,var(--contentColor))}\n.power-diagnostics .diagnostics-select .Select__control--is-focused{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}\n.power-diagnostics .diagnostics-select .Select__single-value{color:var(--textColorPrimary)}\n.power-diagnostics .diagnostics-select .Select__indicators{border-left:1px solid var(--borderFaintColor);align-self:stretch;padding:0 3px}\n.power-diagnostics .diagnostics-select .Select__dropdown-indicator{opacity:.85;color:var(--textColorSecondary)}\n@media(prefers-reduced-motion:reduce){.power-diagnostics .diagnostics-select .Select__control{transition:none}}\n\n.power-diagnostics .diagnostics-summary .summary-icon .Icon,.power-diagnostics .diagnostics-summary .summary-icon .Icon>.icon{color:var(--summary-color)}\n.power-diagnostics .pending-heading.error{border-left:3px solid var(--colorError,#e56d79);background:color-mix(in srgb,var(--colorError,#e56d79) 4%,transparent)}\n.power-diagnostics .pending-heading.warning{border-left:3px solid var(--colorWarning,#e0a134);background:color-mix(in srgb,var(--colorWarning,#e0a134) 3%,transparent)}\n.power-diagnostics .pending-heading>.consumer-status{margin:0 0 10px}\n.power-diagnostics .consumers-table .consumer-column{width:380px}.power-diagnostics .consumer-title-line{flex-wrap:wrap;white-space:normal}.power-diagnostics .consumer-identity-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.power-diagnostics .consumer-title-line .consumer-resource-link{display:inline-flex;max-width:100%;transition:color 160ms ease}.power-diagnostics .consumer-link-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.power-diagnostics .consumer-identity-row .consumer-resource-link:hover,.power-diagnostics .consumer-identity-row .consumer-resource-link:focus-visible{color:var(--primary)}.power-diagnostics .consumer-resource-link:focus-visible{outline:2px solid var(--primary);outline-offset:3px}.power-diagnostics .consumer-pod-row .consumer-resource-link,.power-diagnostics .consumer-pod-row .consumer-subtitle{padding-left:8px}@media(prefers-reduced-motion:reduce){.power-diagnostics .consumer-title-line .consumer-resource-link{transition:none}}.power-diagnostics .consumer-subtitle{flex-wrap:nowrap;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.power-diagnostics .consumer-status{flex-shrink:1;min-width:0;white-space:normal;overflow-wrap:anywhere}.power-diagnostics .consumers-table td{padding-top:8px;padding-bottom:8px}.power-diagnostics .resource-cell .request-burst{display:inline-flex;margin-top:3px;font-size:10px;white-space:nowrap}.power-diagnostics .explain-finding{font-size:11px;padding:3px 6px}.power-diagnostics .consumer-row-actions .explain-finding{width:26px;height:26px;padding:3px;margin:0}.power-diagnostics .timeline-content details{margin-top:6px}.power-diagnostics .timeline-content details li{margin:8px 0}\n.power-diagnostics .incident-copy{display:inline-flex;align-items:center;gap:8px;margin-right:8px}.power-diagnostics .incident-copy button{min-width:28px;min-height:28px;padding:4px;margin:0}.power-diagnostics .incident-copy [role=status]{font-size:11px;max-width:150px}.power-diagnostics .consumer-row-actions .incident-copy{margin-right:0}.power-diagnostics .consumer-row-actions .explain-finding{min-width:28px;min-height:28px}\n.power-diagnostics .explain-finding{min-width:28px;min-height:28px}.power-diagnostics .consumer-row-actions .incident-copy{position:relative}.power-diagnostics .consumer-row-actions .incident-copy [role=status]{position:absolute;right:0;top:100%;white-space:nowrap;background:var(--contentColor);padding:3px 6px;border:1px solid var(--borderColor);z-index:2;max-width:none}\n\n.power-diagnostics .incident-copy button,.power-diagnostics .consumer-row-actions .explain-finding{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:28px;height:28px;min-width:28px;min-height:28px;gap:0;padding:0;line-height:1;vertical-align:middle}.power-diagnostics .incident-copy button>.Icon,.power-diagnostics .consumer-row-actions .explain-finding>.Icon{margin:0;flex-shrink:0}\n\n.power-diagnostics .timeline-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.power-diagnostics .timeline-card-top>.timeline-card-heading{flex:1;min-width:0;padding-right:0}.power-diagnostics .timeline-card-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.power-diagnostics .timeline-card-actions .incident-copy{position:relative;margin:0}.power-diagnostics .timeline-card-actions .incident-copy [role=status]{position:absolute;right:0;top:calc(100% + 6px);white-space:nowrap;max-width:260px;background:var(--contentColor);border:1px solid var(--borderColor);padding:4px 6px;z-index:2}.power-diagnostics .timeline-content .timeline-card-actions .timeline-resource-action{position:static;width:28px;height:28px;min-width:28px;margin:0}.power-diagnostics .timeline-card-actions .explain-finding{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:28px;margin:0;padding:0 8px;line-height:1}.power-diagnostics .timeline-card-actions .explain-finding>.Icon{margin:0;flex-shrink:0}\n.power-diagnostics .namespace-scope{display:flex;align-items:center;flex-wrap:wrap;column-gap:20px;row-gap:6px;margin:4px 0 16px;min-height:32px}.power-diagnostics .namespace-scope-label{overflow-wrap:anywhere}.power-diagnostics .namespace-scope button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:32px;padding:4px 0;margin:0;border:0;background:transparent;box-shadow:none;color:var(--textColorSecondary)}.power-diagnostics .namespace-scope button:hover{color:var(--primary);background:transparent}.power-diagnostics .namespace-scope button:focus-visible{outline:2px solid var(--primary);outline-offset:3px}\n@container diagnostics (max-width:700px){.power-diagnostics .timeline-card-actions .timeline-action-label{display:none}.power-diagnostics .timeline-card-actions .explain-finding{width:28px;min-width:28px;padding:0}.power-diagnostics .timeline-card-top{gap:12px}}\n`;\n"],"mappings":";AAAA,IAAa,oBAAoB"}
|