diff --git a/package-lock.json b/package-lock.json index 1891eb01b..7d608be23 100644 --- a/package-lock.json +++ b/package-lock.json @@ -80,6 +80,7 @@ "recharts": "2.1.12", "tailwindcss": "^3.0.24", "timeago.js": "^4.0.2", + "type-fest": "^4.8.2", "typescript": "^4.7.2", "uuid": "^8.3.2", "web-vitals": "^2.1.4", @@ -7623,6 +7624,17 @@ "node": ">=14.14" } }, + "node_modules/@storybook/csf/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@storybook/docs-mdx": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/@storybook/docs-mdx/-/docs-mdx-0.1.0.tgz", @@ -8185,6 +8197,18 @@ "undici-types": "~5.26.4" } }, + "node_modules/@storybook/react/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@storybook/router": { "version": "7.6.1", "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.6.1.tgz", @@ -23287,6 +23311,18 @@ "node": ">=8" } }, + "node_modules/msw/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/multicast-dns": { "version": "7.2.5", "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", @@ -23668,6 +23704,18 @@ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "dev": true }, + "node_modules/node-polyfill-webpack-plugin/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/node-releases": { "version": "2.0.13", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", @@ -34303,6 +34351,17 @@ "node": ">=12" } }, + "node_modules/snakecase-keys/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/sockjs": { "version": "0.3.24", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", @@ -36850,11 +36909,11 @@ } }, "node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.8.2.tgz", + "integrity": "sha512-mcvrCjixA5166hSrUoJgGb9gBQN4loMYyj9zxuMs/66ibHNEFd5JXMw37YVDx58L4/QID9jIzdTBB4mDwDJ6KQ==", "engines": { - "node": ">=12.20" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" diff --git a/package.json b/package.json index 99f57e976..4459a303b 100644 --- a/package.json +++ b/package.json @@ -80,6 +80,7 @@ "recharts": "2.1.12", "tailwindcss": "^3.0.24", "timeago.js": "^4.0.2", + "type-fest": "^4.8.2", "typescript": "^4.7.2", "uuid": "^8.3.2", "web-vitals": "^2.1.4", diff --git a/src/App.tsx b/src/App.tsx index 366194bee..3df626a93 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -8,6 +8,7 @@ import { BsLink, BsToggles } from "react-icons/bs"; import { FaBell, FaTasks } from "react-icons/fa"; import { HiUser } from "react-icons/hi"; import { ImLifebuoy } from "react-icons/im"; +import { MdOutlineSupportAgent } from "react-icons/md"; import { VscJson } from "react-icons/vsc"; import { BrowserRouter, @@ -19,6 +20,7 @@ import { import ReactTooltip from "react-tooltip"; import { Canary } from "./components"; import { withAccessCheck } from "./components/AccessCheck/AccessCheck"; +import AgentsPage from "./components/Agents/AgentPage"; import AuthProviderWrapper from "./components/Authentication/AuthProviderWrapper"; import { ErrorBoundary } from "./components/ErrorBoundary"; import { LogsIcon } from "./components/Icons/LogsIcon"; @@ -57,18 +59,16 @@ import { ConnectionsPage } from "./pages/Settings/ConnectionsPage"; import { EventQueueStatusPage } from "./pages/Settings/EventQueueStatus"; import { FeatureFlagsPage } from "./pages/Settings/FeatureFlagsPage"; import { LogBackendsPage } from "./pages/Settings/LogBackendsPage"; -import { PlaybooksListPage } from "./pages/playbooks/PlaybooksList"; +import { TopologyCardPage } from "./pages/TopologyCard"; import { UsersPage } from "./pages/UsersPage"; import { ConfigDetailsInsightsPage } from "./pages/config/ConfigDetailsInsightsPage"; import { ConfigInsightsPage } from "./pages/config/ConfigInsightsList"; import { HealthPage } from "./pages/health"; import PlaybookRunsPage from "./pages/playbooks/PlaybookRuns"; import PlaybookRunsDetailsPage from "./pages/playbooks/PlaybookRunsDetails"; +import { PlaybooksListPage } from "./pages/playbooks/PlaybooksList"; import { features } from "./services/permissions/features"; import { stringSortHelper } from "./utils/common"; -import { MdOutlineSupportAgent } from "react-icons/md"; -import AgentsPage from "./components/Agents/AgentPage"; -import { TopologyCardPage } from "./pages/TopologyCard"; export type NavigationItems = { name: string; diff --git a/src/components/SchemaResourcePage/SchemaResourceEdit.tsx b/src/components/SchemaResourcePage/SchemaResourceEdit.tsx index 0be822398..3c97292e6 100644 --- a/src/components/SchemaResourcePage/SchemaResourceEdit.tsx +++ b/src/components/SchemaResourcePage/SchemaResourceEdit.tsx @@ -23,6 +23,7 @@ import HealthSpecEditor from "../SpecEditor/HealthSpecEditor"; import { Button } from "../Button"; import DeleteResource from "./Delete/DeleteResource"; import { HealthCheckEdit } from "../Canary/HealthCheckEdit"; +import EditTopologyResource from "../Topology/Settings/EditTopologyResource"; const CodeEditor = dynamic( () => import("../CodeEditor").then((m) => m.CodeEditor), @@ -232,6 +233,13 @@ export function SchemaResourceEdit({ resourceValue={defaultValues} /> + ) : table === "topologies" ? ( +