This is an automated email from the ASF dual-hosted git repository. marat pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel-karavan.git
commit 0f6a66249cb17a4aabb35c2c74247760d3e2bfdd Author: Marat Gubaidullin <ma...@talismancloud.io> AuthorDate: Mon Jan 13 18:35:36 2025 -0500 Fix for vscode --- karavan-vscode/package-lock.json | 658 +++++++++++++++++---- karavan-vscode/package.json | 8 +- karavan-vscode/webview/topology/CustomGroup.tsx | 10 +- karavan-vscode/webview/topology/CustomNode.tsx | 16 +- karavan-vscode/webview/topology/TopologyApi.tsx | 5 +- karavan-vscode/webview/topology/TopologyLegend.tsx | 44 ++ karavan-vscode/webview/topology/TopologyTab.tsx | 2 + karavan-vscode/webview/topology/topology.css | 50 +- 8 files changed, 669 insertions(+), 124 deletions(-) diff --git a/karavan-vscode/package-lock.json b/karavan-vscode/package-lock.json index 37ac75db..f91eea28 100644 --- a/karavan-vscode/package-lock.json +++ b/karavan-vscode/package-lock.json @@ -10,9 +10,11 @@ "license": "Apache-2.0", "dependencies": { "@monaco-editor/react": "^4.6.0", - "@patternfly/patternfly": "5.4.0", - "@patternfly/react-core": "5.4.0", - "@patternfly/react-table": "5.4.0", + "@patternfly/patternfly": "^5.4.2", + "@patternfly/react-charts": "7.4.5", + "@patternfly/react-core": "^5.4.8", + "@patternfly/react-log-viewer": "^5.3.0", + "@patternfly/react-table": "^5.4.8", "@patternfly/react-topology": "5.4.0", "@types/js-yaml": "4.0.9", "@types/uuid": "10.0.0", @@ -2005,21 +2007,57 @@ } }, "node_modules/@patternfly/patternfly": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@patternfly/patternfly/-/patternfly-5.4.0.tgz", - "integrity": "sha512-9B33M4N0/KDyss6NpCwAhz18za7R+sXYiFrUObhGoJ1Cmg06SeScVrEAjT4yJwAClWUlKh604Af9wE4D7IF8Lg==" + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/@patternfly/patternfly/-/patternfly-5.4.2.tgz", + "integrity": "sha512-+BaokNR8/AmTYMESxby9UtQXPGACg449BXQd0KejAvW/uGxlgO6mY1X1205DeBEHoK3e/vXkYXjvZPpv/tcxSA==", + "license": "MIT" + }, + "node_modules/@patternfly/react-charts": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@patternfly/react-charts/-/react-charts-7.4.5.tgz", + "integrity": "sha512-m6+y4FDCQm+Ql55KJQK1Yor799aaYgpVbIcqShtZ7Lidx9MFCfoCJxSrJTbfJHb46H+zv/LKxLtJ6dUx54qnjA==", + "license": "MIT", + "dependencies": { + "@patternfly/react-styles": "^5.4.1", + "@patternfly/react-tokens": "^5.4.1", + "hoist-non-react-statics": "^3.3.2", + "lodash": "^4.17.21", + "tslib": "^2.7.0", + "victory-area": "^37.1.1", + "victory-axis": "^37.1.1", + "victory-bar": "^37.1.1", + "victory-box-plot": "^37.1.1", + "victory-chart": "^37.1.1", + "victory-core": "^37.1.1", + "victory-create-container": "^37.1.1", + "victory-cursor-container": "^37.1.1", + "victory-group": "^37.1.1", + "victory-legend": "^37.1.1", + "victory-line": "^37.1.1", + "victory-pie": "^37.1.1", + "victory-scatter": "^37.1.1", + "victory-stack": "^37.1.1", + "victory-tooltip": "^37.1.1", + "victory-voronoi-container": "^37.1.1", + "victory-zoom-container": "^37.1.1" + }, + "peerDependencies": { + "react": "^17 || ^18", + "react-dom": "^17 || ^18" + } }, "node_modules/@patternfly/react-core": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@patternfly/react-core/-/react-core-5.4.0.tgz", - "integrity": "sha512-Tz2Y9V4G2pnwrylc/4/FyxIRFvxiA8BEBIG6UBwXxrstnJmJaHgAIy6QJdJmERzVx3GVDz6/rM0PnMqa5R6auQ==", + "version": "5.4.12", + "resolved": "https://registry.npmjs.org/@patternfly/react-core/-/react-core-5.4.12.tgz", + "integrity": "sha512-RI1xS1JGJdE/FvpkMzawaE21oeTc/e+WbxvFXqZfLhTz60P8RzVG1nYWXDL747Onkz3SYtY79PhQ8nsLeO5sJQ==", + "license": "MIT", "dependencies": { - "@patternfly/react-icons": "^5.4.0", - "@patternfly/react-styles": "^5.4.0", - "@patternfly/react-tokens": "^5.4.0", - "focus-trap": "7.5.4", + "@patternfly/react-icons": "^5.4.2", + "@patternfly/react-styles": "^5.4.1", + "@patternfly/react-tokens": "^5.4.1", + "focus-trap": "7.6.2", "react-dropzone": "^14.2.3", - "tslib": "^2.6.3" + "tslib": "^2.7.0" }, "peerDependencies": { "react": "^17 || ^18", @@ -2027,30 +2065,49 @@ } }, "node_modules/@patternfly/react-icons": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@patternfly/react-icons/-/react-icons-5.4.0.tgz", - "integrity": "sha512-2M3qN/naultvRHeG2laJMmoIroFCGAyfwTVrnCjSkG6/KnRoXV0+dqd+Xrh7xzpzvIJB1klvifC0oX42cEkDrA==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/@patternfly/react-icons/-/react-icons-5.4.2.tgz", + "integrity": "sha512-CMQ5oHYzW6TPVTs2jpNJmP2vGCAKR/YeTPwHGO9dLkAUej1IcIxtCCWK2Fdo2UJsnBjuZihasyw2b6ehvbUm9Q==", + "license": "MIT", + "peerDependencies": { + "react": "^17 || ^18", + "react-dom": "^17 || ^18" + } + }, + "node_modules/@patternfly/react-log-viewer": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@patternfly/react-log-viewer/-/react-log-viewer-5.3.0.tgz", + "integrity": "sha512-6jzhxwJwllLdX3jpoGdzIhvhPTfYuC6B+KuN2Laf7Iuioeig8bOMzJZFh6VXg+aBGd9j4JGv2dYryDsbDsTLvw==", + "license": "MIT", + "dependencies": { + "@patternfly/react-core": "^5.0.0", + "@patternfly/react-icons": "^5.0.0", + "@patternfly/react-styles": "^5.0.0", + "memoize-one": "^5.1.0" + }, "peerDependencies": { "react": "^17 || ^18", "react-dom": "^17 || ^18" } }, "node_modules/@patternfly/react-styles": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@patternfly/react-styles/-/react-styles-5.4.0.tgz", - "integrity": "sha512-4ZE0s6LkX/0KsN0FOeogrDoj18m+BPA73YKnabZGB4SDRzrBNeBh2a6bSt546ZseEjkoJ+S81kOG0G8YckPQYg==" + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@patternfly/react-styles/-/react-styles-5.4.1.tgz", + "integrity": "sha512-XA8PXksD8uiA3RTwxdUwJXOCf+V6sVd+2HKapWAdRLvtSV+Sdk7NgCvalb4IAQncsddLopjPQD8gAHA298+N8w==", + "license": "MIT" }, "node_modules/@patternfly/react-table": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@patternfly/react-table/-/react-table-5.4.0.tgz", - "integrity": "sha512-HkXxVEPeI6nRVSUSHb5BungF41IfjB8W2VqaA3SX+6fGxQAW0e/Hb58ctUdPR2VJ/S2YZFcIcqCCWQtQEf+xKA==", + "version": "5.4.13", + "resolved": "https://registry.npmjs.org/@patternfly/react-table/-/react-table-5.4.13.tgz", + "integrity": "sha512-cYw+pgpZXKGg3dZxudteUURqmj5O0ec7aNE80NLqFTcnI0MAOnfrFzCNApXJErn+MjD0VolMcC+H48eaRkT8TA==", + "license": "MIT", "dependencies": { - "@patternfly/react-core": "^5.4.0", - "@patternfly/react-icons": "^5.4.0", - "@patternfly/react-styles": "^5.4.0", - "@patternfly/react-tokens": "^5.4.0", + "@patternfly/react-core": "^5.4.12", + "@patternfly/react-icons": "^5.4.2", + "@patternfly/react-styles": "^5.4.1", + "@patternfly/react-tokens": "^5.4.1", "lodash": "^4.17.21", - "tslib": "^2.6.3" + "tslib": "^2.7.0" }, "peerDependencies": { "react": "^17 || ^18", @@ -2058,9 +2115,10 @@ } }, "node_modules/@patternfly/react-tokens": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@patternfly/react-tokens/-/react-tokens-5.4.0.tgz", - "integrity": "sha512-KONkwCVOMyklhuuaYeYgcAsGtCBQXnsBGZeolhOdSzr2Mj0RVSW0oMrQPgZuPVzhhC/kbqgClHJJl6xuG9xheA==" + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@patternfly/react-tokens/-/react-tokens-5.4.1.tgz", + "integrity": "sha512-eygdHE7Krta1mijAv/E8RHiKIgysD0eeNTo8EXUYC8/M4e5K6sqpr2p6rQBF8QiRMN8FnbXvZT3K2OQ28pYt9Q==", + "license": "MIT" }, "node_modules/@patternfly/react-topology": { "version": "5.4.0", @@ -3841,7 +3899,9 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.3", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { @@ -4331,11 +4391,13 @@ } }, "node_modules/debug": { - "version": "4.3.4", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -4417,8 +4479,25 @@ "robust-predicates": "^3.0.0" } }, + "node_modules/delaunay-find": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/delaunay-find/-/delaunay-find-0.0.6.tgz", + "integrity": "sha512-1+almjfrnR7ZamBk0q3Nhg6lqSe6Le4vL0WJDSMx4IDbQwTpUTXPjxC00lqLBT8MYsJpPCbI16sIkw9cPsbi7Q==", + "license": "ISC", + "dependencies": { + "delaunator": "^4.0.0" + } + }, + "node_modules/delaunay-find/node_modules/delaunator": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz", + "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==", + "license": "ISC" + }, "node_modules/diff": { - "version": "5.0.0", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -5348,9 +5427,10 @@ "license": "ISC" }, "node_modules/focus-trap": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.4.tgz", - "integrity": "sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.6.2.tgz", + "integrity": "sha512-9FhUxK1hVju2+AiQIDJ5Dd//9R2n2RAfJ0qfhF4IHGHgcoEUTMpbTeG/zbEuwaiYXfuAH6XE0/aCyxDdRM+W5w==", + "license": "MIT", "dependencies": { "tabbable": "^6.2.0" } @@ -5668,6 +5748,15 @@ "he": "bin/he" } }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, "node_modules/html-to-image": { "version": "1.11.11", "license": "MIT" @@ -6259,6 +6348,12 @@ "dev": true, "license": "MIT" }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "license": "ISC" + }, "node_modules/json5": { "version": "2.2.3", "dev": true, @@ -6504,6 +6599,12 @@ "dev": true, "license": "CC0-1.0" }, + "node_modules/memoize-one": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", + "license": "MIT" + }, "node_modules/memory-fs": { "version": "0.5.0", "dev": true, @@ -6531,11 +6632,13 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "license": "MIT", "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -6679,31 +6782,32 @@ } }, "node_modules/mocha": { - "version": "10.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", + "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.3", + "browser-stdout": "^1.3.1", + "chokidar": "^3.5.3", + "debug": "^4.3.5", + "diff": "^5.2.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^8.1.0", + "he": "^1.2.0", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^5.1.6", + "ms": "^2.1.3", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^6.5.1", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9", + "yargs-unparser": "^2.0.0" }, "bin": { "_mocha": "bin/_mocha", @@ -6711,22 +6815,12 @@ }, "engines": { "node": ">= 14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" - } - }, - "node_modules/mocha/node_modules/ansi-colors": { - "version": "4.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" } }, "node_modules/mocha/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "license": "MIT", "dependencies": { @@ -6744,6 +6838,27 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/mocha/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/mocha/node_modules/has-flag": { "version": "4.0.0", "dev": true, @@ -6753,7 +6868,9 @@ } }, "node_modules/mocha/node_modules/minimatch": { - "version": "5.0.1", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "license": "ISC", "dependencies": { @@ -6763,19 +6880,6 @@ "node": ">=10" } }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/mocha/node_modules/serialize-javascript": { - "version": "6.0.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" - } - }, "node_modules/mocha/node_modules/supports-color": { "version": "8.1.1", "dev": true, @@ -6796,13 +6900,23 @@ "peer": true }, "node_modules/ms": { - "version": "2.1.2", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.3", + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" @@ -7270,23 +7384,6 @@ "dev": true, "license": "MIT" }, - "node_modules/postcss/node_modules/nanoid": { - "version": "3.3.6", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, "node_modules/prelude-ls": { "version": "1.2.1", "dev": true, @@ -7417,6 +7514,12 @@ "react": ">= 16.8 || 18.0.0" } }, + "node_modules/react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==", + "license": "MIT" + }, "node_modules/react-is": { "version": "16.13.1", "license": "MIT" @@ -7818,7 +7921,9 @@ } }, "node_modules/serialize-javascript": { - "version": "6.0.1", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -8187,7 +8292,8 @@ "node_modules/tabbable": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", - "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==" + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", + "license": "MIT" }, "node_modules/table": { "version": "6.8.1", @@ -8787,6 +8893,326 @@ "dev": true, "license": "MIT" }, + "node_modules/victory-area": { + "version": "37.3.5", + "resolved": "https://registry.npmjs.org/victory-area/-/victory-area-37.3.5.tgz", + "integrity": "sha512-MP5+dm8ThQVsSDQhmU4K93mjPZ4hir1QkoM8kYT0PsJcoFYI6J2ceTxoyJUUgrgO0Kf63PcYChR5RLu34bhFlw==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.19", + "victory-core": "37.3.5", + "victory-vendor": "37.3.5" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-axis": { + "version": "37.3.5", + "resolved": "https://registry.npmjs.org/victory-axis/-/victory-axis-37.3.5.tgz", + "integrity": "sha512-hd40FVZvWw26CHr6XfmVGhKgPd4I4Yqxtnl27P6aLVGv1gL46UuNVdDVFozr9rpxO+lGUepYz6Wh4OuzImpDEQ==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.19", + "victory-core": "37.3.5" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-bar": { + "version": "37.3.5", + "resolved": "https://registry.npmjs.org/victory-bar/-/victory-bar-37.3.5.tgz", + "integrity": "sha512-9HXxM/+9jyv6SIcJv90yqyImgXLSEGhaPBnDJg5CvHcR1zdGAdQp2pDxDV6EivUrfxiIyj1NeSWyCZpM0ZJddQ==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.19", + "victory-core": "37.3.5", + "victory-vendor": "37.3.5" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-box-plot": { + "version": "37.3.5", + "resolved": "https://registry.npmjs.org/victory-box-plot/-/victory-box-plot-37.3.5.tgz", + "integrity": "sha512-jIV8k4XViLBWh5XvYBSELYGsWo55vYBoNqGkVUKhcXM4sS9mumc2XgDQ6nltTO88gs8uOyZpb2vBFp+1zOauyA==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.19", + "victory-core": "37.3.5", + "victory-vendor": "37.3.5" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-brush-container": { + "version": "37.3.5", + "resolved": "https://registry.npmjs.org/victory-brush-container/-/victory-brush-container-37.3.5.tgz", + "integrity": "sha512-n4Ozb5I/Pz/dcWnxAfqBhnsq6Q2gIC7Phjbau3cIBTPcq/rrkRIWzpiPPWhoAT+OTirgB9vOfe3JX4LBDk17FA==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.19", + "react-fast-compare": "^3.2.0", + "victory-core": "37.3.5" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-chart": { + "version": "37.3.5", + "resolved": "https://registry.npmjs.org/victory-chart/-/victory-chart-37.3.5.tgz", + "integrity": "sha512-Lsbmp5rG3ESzQAr76M4WJ0FKraltAzuQY1D3e7CmqzQlLKpsMS/j2Ty+5OCBDmC3qQ+PHObBLVavgn3TJSRJLg==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.19", + "react-fast-compare": "^3.2.0", + "victory-axis": "37.3.5", + "victory-core": "37.3.5", + "victory-polar-axis": "37.3.5", + "victory-shared-events": "37.3.5" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-core": { + "version": "37.3.5", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-37.3.5.tgz", + "integrity": "sha512-PXY+9Lx1ohCX+ZzkWdm+VY7T+2Pd/YKdv3yVkuflzMQ52kQMYbcgwGI49yPuzVqB3m1eBJ5dYdAD53ww53GTHw==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.21", + "react-fast-compare": "^3.2.0", + "victory-vendor": "37.3.5" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-create-container": { + "version": "37.3.5", + "resolved": "https://registry.npmjs.org/victory-create-container/-/victory-create-container-37.3.5.tgz", + "integrity": "sha512-VcHhnw35e+xU96LWwAuCZQ7YLS9NSSlGU0pgtiUUx0ymCJDWtY8G+ZijZL+DKQ5byU/8+DvaK3iNUhxdpBAHQw==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.19", + "victory-brush-container": "37.3.5", + "victory-core": "37.3.5", + "victory-cursor-container": "37.3.5", + "victory-selection-container": "37.3.5", + "victory-voronoi-container": "37.3.5", + "victory-zoom-container": "37.3.5" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-cursor-container": { + "version": "37.3.5", + "resolved": "https://registry.npmjs.org/victory-cursor-container/-/victory-cursor-container-37.3.5.tgz", + "integrity": "sha512-/G9zpYkeJA0uBk3khGNJBUNHOZ25EPoFfVZqwSSjpVRRI3JLMVNvv1LWhZvFZDkK0KMrT8pi8AZr04jCZxCoPg==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.19", + "victory-core": "37.3.5" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-group": { + "version": "37.3.5", + "resolved": "https://registry.npmjs.org/victory-group/-/victory-group-37.3.5.tgz", + "integrity": "sha512-0GEtrG2Vl7uv1fkmWlHRO6U8JBhXJ3cB1KJPP2k5QKblfYd0QgDCtlSeMuaTUB+yRnQR5OlUv6bvkwwRio4bSg==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.19", + "react-fast-compare": "^3.2.0", + "victory-core": "37.3.5", + "victory-shared-events": "37.3.5" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-legend": { + "version": "37.3.5", + "resolved": "https://registry.npmjs.org/victory-legend/-/victory-legend-37.3.5.tgz", + "integrity": "sha512-TW/OeKP8LgZp93nJVoAltTwl5T0q1MWeH1HqZim2oGqwqX0E8o0BeJXv+2TGkXdp5ITiWi2nxGGQ77vSg8KZhQ==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.19", + "victory-core": "37.3.5" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-line": { + "version": "37.3.5", + "resolved": "https://registry.npmjs.org/victory-line/-/victory-line-37.3.5.tgz", + "integrity": "sha512-q1L2aSG28Z7ousRckf8zut7HdLQ7kWiNakOatsdfAqnce/n52F0E8c3qSIwbRmkdHHSe3SHhTLNyzLtnDzYQjQ==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.19", + "victory-core": "37.3.5", + "victory-vendor": "37.3.5" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-pie": { + "version": "37.3.5", + "resolved": "https://registry.npmjs.org/victory-pie/-/victory-pie-37.3.5.tgz", + "integrity": "sha512-JjKE5QhlatZkl/YbiN2KrF+tXIHRZ0ZYua5yWl8JYcg5/UTE3IFn/Y+2HIQIGghzEa98ZMMC/lNfZ3CEwK1yaw==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.19", + "victory-core": "37.3.5", + "victory-vendor": "37.3.5" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-polar-axis": { + "version": "37.3.5", + "resolved": "https://registry.npmjs.org/victory-polar-axis/-/victory-polar-axis-37.3.5.tgz", + "integrity": "sha512-6aZiaMGLtYDeh3uCB9wHKVVyvRsdbo5+WTp6S8lvyuHxyYOEn4JcxtpORzHHnGMWFkhZs4MmLSORrp/TBOi+7g==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.19", + "victory-core": "37.3.5" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-scatter": { + "version": "37.3.5", + "resolved": "https://registry.npmjs.org/victory-scatter/-/victory-scatter-37.3.5.tgz", + "integrity": "sha512-YEXm9D1novmUjk44eFyj+UQIxUw50v3yAa/772nb8yzR9ys9xPjM9+yyIsJSbRwdSiEAPmcbj6qwcYlyvJz1bQ==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.19", + "victory-core": "37.3.5" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-selection-container": { + "version": "37.3.5", + "resolved": "https://registry.npmjs.org/victory-selection-container/-/victory-selection-container-37.3.5.tgz", + "integrity": "sha512-cGqlZwV3HAWjrXjhGUsUkyFtWn+lsph2dcUzMlzTKs+e1sDFEHIVjpe3ZX4XsThu23dK//lrmIXFvbWtpLhy+Q==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.19", + "victory-core": "37.3.5" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-shared-events": { + "version": "37.3.5", + "resolved": "https://registry.npmjs.org/victory-shared-events/-/victory-shared-events-37.3.5.tgz", + "integrity": "sha512-Juq/5Y9WsFaD/4ivk7/y786EwNgLUjp3hkhpIGhiQOM2VaL5H7Xb1pX4ASjibkCkWIQUMBM+JaprtNcKEDylpQ==", + "license": "MIT", + "dependencies": { + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.19", + "react-fast-compare": "^3.2.0", + "victory-core": "37.3.5" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-stack": { + "version": "37.3.5", + "resolved": "https://registry.npmjs.org/victory-stack/-/victory-stack-37.3.5.tgz", + "integrity": "sha512-PL23dKKlr30Y77mw3JuIUYUhvOF66r3LhKQXqoymkV6DGMBhkQ2p7h+klek3xleRPBBTSz3o8EbfM8H2eZ/Umg==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.19", + "react-fast-compare": "^3.2.0", + "victory-core": "37.3.5", + "victory-shared-events": "37.3.5" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-tooltip": { + "version": "37.3.5", + "resolved": "https://registry.npmjs.org/victory-tooltip/-/victory-tooltip-37.3.5.tgz", + "integrity": "sha512-IbvD37PGehP3K5BLL9xAK+6d/UEaNcLH/cdKKzeXeqOvoefQLIxxB1DJHYr542Ll8cxkeqtdsgtJ16pRCUgCSA==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.19", + "victory-core": "37.3.5" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-vendor": { + "version": "37.3.5", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-37.3.5.tgz", + "integrity": "sha512-+K2VBMmB7peKG3Gjp79XjgsbfsYgD0eZRSmKz7p5a4V0NhYq43eM/b0gpSLq+Dhwag96QaWsU75/6bFVBjVE7A==", + "license": "MIT AND ISC", + "dependencies": { + "@types/d3-array": "^3.0.3", + "@types/d3-ease": "^3.0.0", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.2", + "@types/d3-shape": "^3.1.0", + "@types/d3-time": "^3.0.0", + "@types/d3-timer": "^3.0.0", + "d3-array": "^3.1.6", + "d3-ease": "^3.0.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.1.0", + "d3-time": "^3.0.0", + "d3-timer": "^3.0.1" + } + }, + "node_modules/victory-voronoi-container": { + "version": "37.3.5", + "resolved": "https://registry.npmjs.org/victory-voronoi-container/-/victory-voronoi-container-37.3.5.tgz", + "integrity": "sha512-GF35HQn8ACMcr7yJAFmaSKAS6w9GOsxxWoR6gtuQtBUwSBciZ5LNWpR6718nFxeOYDhkk/FVn7tnKqQTBv6XUw==", + "license": "MIT", + "dependencies": { + "delaunay-find": "0.0.6", + "lodash": "^4.17.19", + "react-fast-compare": "^3.2.0", + "victory-core": "37.3.5", + "victory-tooltip": "37.3.5" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, + "node_modules/victory-zoom-container": { + "version": "37.3.5", + "resolved": "https://registry.npmjs.org/victory-zoom-container/-/victory-zoom-container-37.3.5.tgz", + "integrity": "sha512-LlRp2Ulodu3rhIrM1XilgR72223+qlhXE9mzBCYVoHQ+uo8uTKt27T0iOBkvY5kRwNiXQzshn01uxUAwxyBppw==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.19", + "victory-core": "37.3.5" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, "node_modules/vscode-test": { "version": "1.6.1", "dev": true, @@ -9158,7 +9584,9 @@ "license": "MIT" }, "node_modules/workerpool": { - "version": "6.2.1", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", "dev": true, "license": "Apache-2.0" }, @@ -9243,7 +9671,9 @@ } }, "node_modules/yargs-parser": { - "version": "20.2.4", + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, "license": "ISC", "engines": { diff --git a/karavan-vscode/package.json b/karavan-vscode/package.json index 205e7aa1..67f8d22f 100644 --- a/karavan-vscode/package.json +++ b/karavan-vscode/package.json @@ -738,9 +738,11 @@ }, "dependencies": { "@monaco-editor/react": "^4.6.0", - "@patternfly/patternfly": "5.4.0", - "@patternfly/react-core": "5.4.0", - "@patternfly/react-table": "5.4.0", + "@patternfly/patternfly": "^5.4.2", + "@patternfly/react-charts": "7.4.5", + "@patternfly/react-core": "^5.4.8", + "@patternfly/react-log-viewer": "^5.3.0", + "@patternfly/react-table": "^5.4.8", "@patternfly/react-topology": "5.4.0", "@types/js-yaml": "4.0.9", "@types/uuid": "10.0.0", diff --git a/karavan-vscode/webview/topology/CustomGroup.tsx b/karavan-vscode/webview/topology/CustomGroup.tsx index 595250a8..1d57941a 100644 --- a/karavan-vscode/webview/topology/CustomGroup.tsx +++ b/karavan-vscode/webview/topology/CustomGroup.tsx @@ -18,11 +18,17 @@ import * as React from 'react'; import './topology.css'; -import {DefaultGroup, observer} from '@patternfly/react-topology'; +import {DefaultGroup, LabelPosition, observer} from '@patternfly/react-topology'; const CustomGroup: React.FC<any> = observer(({ element, ...rest }) => { return ( - <DefaultGroup element={element} className={"topology-group"} {...rest}> + <DefaultGroup + element={element} + className={"topology-group"} + showLabel={false} + showLabelOnHover={true} + {...rest} + > </DefaultGroup> ) }) diff --git a/karavan-vscode/webview/topology/CustomNode.tsx b/karavan-vscode/webview/topology/CustomNode.tsx index fd8d12e6..457675be 100644 --- a/karavan-vscode/webview/topology/CustomNode.tsx +++ b/karavan-vscode/webview/topology/CustomNode.tsx @@ -25,6 +25,10 @@ import './topology.css'; import {RouteDefinition} from "core/model/CamelDefinition"; import {AutoStartupIcon, ErrorHandlerIcon} from "../designer/icons/OtherIcons"; +export const COLOR_ORANGE = '#ef9234'; +export const COLOR_BLUE = '#2b9af3'; +export const COLOR_GREEN = '#6ec664'; + function getIcon(data: any) { if (['route', 'rest', 'routeConfiguration'].includes(data.icon)) { return ( @@ -67,7 +71,13 @@ function getAttachments(data: any) { const CustomNode: React.FC<any> = observer(({element, ...rest}) => { const data = element.getData(); - const badge: string = data.badge === 'REST' ? data.badge : data.badge?.substring(0, 1).toUpperCase(); + const badge: string = ['API', 'RT'].includes(data.badge) ? data.badge : data.badge?.substring(0, 1).toUpperCase(); + let badgeColor = COLOR_ORANGE; + if (badge === 'C') { + badgeColor = COLOR_BLUE; + } else if (badge === 'K') { + badgeColor = COLOR_GREEN; + } if (element.getLabel()?.length > 30) { element.setLabel(element.getLabel()?.substring(0, 30) + '...'); } @@ -75,8 +85,10 @@ const CustomNode: React.FC<any> = observer(({element, ...rest}) => { return ( <DefaultNode badge={badge} + badgeColor={badgeColor} + badgeBorderColor={badgeColor} showStatusDecorator - className="common-node" + className={"common-node common-node-" + badge} scaleLabel={false} element={element} attachments={getAttachments(data)} diff --git a/karavan-vscode/webview/topology/TopologyApi.tsx b/karavan-vscode/webview/topology/TopologyApi.tsx index fda10d1f..7a46320e 100644 --- a/karavan-vscode/webview/topology/TopologyApi.tsx +++ b/karavan-vscode/webview/topology/TopologyApi.tsx @@ -80,11 +80,14 @@ export function getRoutes(tins: TopologyRouteNode[]): NodeModel[] { status: NodeStatus.default, data: { isAlternate: false, + badge: tin.templateId !== undefined ? 'RT' : 'R', type: 'route', icon: 'route', step: tin.route, routeId: tin.routeId, fileName: tin.fileName, + templateId: tin.templateId, + templateTitle: tin.templateTitle, } } return node; @@ -198,7 +201,7 @@ export function getRestNodes(tins: TopologyRestNode[]): NodeModel[] { status: NodeStatus.default, data: { isAlternate: false, - badge: 'REST', + badge: 'API', icon: 'rest', type: 'rest', step: tin.rest, diff --git a/karavan-vscode/webview/topology/TopologyLegend.tsx b/karavan-vscode/webview/topology/TopologyLegend.tsx new file mode 100644 index 00000000..0a915988 --- /dev/null +++ b/karavan-vscode/webview/topology/TopologyLegend.tsx @@ -0,0 +1,44 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import * as React from 'react'; +import './topology.css'; +import { + Badge, + Card, + CardBody, + CardTitle, + Label, +} from "@patternfly/react-core"; +import {COLOR_BLUE, COLOR_GREEN, COLOR_ORANGE} from "./CustomNode"; + +export function TopologyLegend () { + + + return ( + <Card isCompact isFlat isRounded className="topology-legend-card"> + <CardTitle>Legend</CardTitle> + <CardBody className='card-body'> + <Label icon={<Badge style={{backgroundColor: COLOR_ORANGE, padding: 0}}>API</Badge>}>REST API</Label> + <Label icon={<Badge style={{backgroundColor: COLOR_ORANGE, padding: 0}}>R</Badge>}>Route</Label> + <Label icon={<Badge style={{backgroundColor: COLOR_ORANGE, padding: 0}}>RT</Badge>}>Route Template</Label> + <Label icon={<Badge style={{backgroundColor: COLOR_BLUE, padding: 0}}>C</Badge>}>Component</Label> + <Label icon={<Badge style={{backgroundColor: COLOR_GREEN, padding: 0}}>K</Badge>}>Kamelet</Label> + </CardBody> + </Card> + ) +} \ No newline at end of file diff --git a/karavan-vscode/webview/topology/TopologyTab.tsx b/karavan-vscode/webview/topology/TopologyTab.tsx index a98703b4..1f154c41 100644 --- a/karavan-vscode/webview/topology/TopologyTab.tsx +++ b/karavan-vscode/webview/topology/TopologyTab.tsx @@ -36,6 +36,7 @@ import {TopologyPropertiesPanel} from "./TopologyPropertiesPanel"; import {TopologyToolbar} from "./TopologyToolbar"; import {useDesignerStore} from "../designer/DesignerStore"; import {IntegrationFile} from "core/model/IntegrationDefinition"; +import {TopologyLegend} from "./TopologyLegend"; interface Props { files: IntegrationFile[], @@ -160,6 +161,7 @@ export function TopologyTab(props: Props) { > <VisualizationProvider controller={controller}> <VisualizationSurface state={{selectedIds}}/> + <TopologyLegend/> </VisualizationProvider> </TopologyView> ); diff --git a/karavan-vscode/webview/topology/topology.css b/karavan-vscode/webview/topology/topology.css index 6edc633d..7279a162 100644 --- a/karavan-vscode/webview/topology/topology.css +++ b/karavan-vscode/webview/topology/topology.css @@ -61,6 +61,10 @@ width: 32px; } +.karavan .topology-panel .common-node-R { + +} + .karavan .topology-panel .pf-v5-c-panel__header { padding-bottom: 0; } @@ -117,6 +121,48 @@ fill: var(--pf-topology__node__label__text--Fill); } -.karavan .topology-group .pf-topology__group__label { - display: none; +.karavan .pf-topology__node__label__badge > text { + fill: white; +} + +.karavan .topology-panel .common-node-RT .pf-topology__node__background { + outline: 1px dashed grey; + outline-offset: 2px; + border-radius: 9px; +} + +.karavan .topology-panel .topology-legend-card { + position: absolute; + bottom: 6px; + right: 6px; +} + +.karavan .topology-panel .topology-legend-card .pf-v5-c-card__title { + padding: 5px; + display: flex; + justify-content: center; +} + +.karavan .topology-panel .topology-legend-card .card-body { + display: flex; + flex-direction: column; + gap: 5px; + padding: 0px 10px 10px 10px; +} + +.karavan .topology-panel .topology-legend-card .pf-v5-c-label { + background-color: white; +} + +.karavan .topology-panel .topology-legend-card .pf-v5-c-label__content::before { + border-radius: 4px; +} + +.karavan .topology-panel .topology-legend-card .pf-v5-c-badge { + min-width: 32px; + font-weight: normal; +} + + .pf-topology__group__label .pf-topology__node__label__background { + fill: grey; } \ No newline at end of file