From e50e49d7920fad32276c24c1a6c5031c15e149ce Mon Sep 17 00:00:00 2001 From: Nawaz Dhandala Date: Tue, 17 Feb 2026 16:47:38 +0000 Subject: [PATCH] feat: add Vaults page for managing secret connections in settings --- Dashboard/src/Pages/Settings/SideMenu.tsx | 9 ++ Dashboard/src/Pages/Settings/Vaults.tsx | 86 +++++++++++++++++++ Dashboard/src/Routes/SettingsRoutes.tsx | 11 +++ .../Utils/Breadcrumbs/SettingsBreadcrumbs.ts | 5 ++ Dashboard/src/Utils/PageMap.ts | 3 + Dashboard/src/Utils/RouteMap.ts | 7 ++ 6 files changed, 121 insertions(+) create mode 100644 Dashboard/src/Pages/Settings/Vaults.tsx diff --git a/Dashboard/src/Pages/Settings/SideMenu.tsx b/Dashboard/src/Pages/Settings/SideMenu.tsx index eae6719104..18a6726dda 100644 --- a/Dashboard/src/Pages/Settings/SideMenu.tsx +++ b/Dashboard/src/Pages/Settings/SideMenu.tsx @@ -201,6 +201,15 @@ const DashboardSideMenu: () => JSX.Element = (): ReactElement => { }, icon: IconProp.Flag, }, + { + link: { + title: "Vaults", + to: RouteUtil.populateRouteParams( + RouteMap[PageMap.SETTINGS_VAULTS] as Route, + ), + }, + icon: IconProp.Lock, + }, { link: { title: "Audit Logs", diff --git a/Dashboard/src/Pages/Settings/Vaults.tsx b/Dashboard/src/Pages/Settings/Vaults.tsx new file mode 100644 index 0000000000..b30e64c188 --- /dev/null +++ b/Dashboard/src/Pages/Settings/Vaults.tsx @@ -0,0 +1,86 @@ +import PageComponentProps from "../PageComponentProps"; +import React, { FunctionComponent, ReactElement } from "react"; +import Card from "Common/UI/Components/Card/Card"; +import { ButtonStyleType } from "Common/UI/Components/Button/Button"; +import IconProp from "Common/Types/Icon/IconProp"; + +const Vaults: FunctionComponent = (): ReactElement => { + return ( + <> + {}, + }, + ]} + /> + {}, + }, + ]} + /> + {}, + }, + ]} + /> + {}, + }, + ]} + /> + {}, + }, + ]} + /> + {}, + }, + ]} + /> + + ); +}; + +export default Vaults; diff --git a/Dashboard/src/Routes/SettingsRoutes.tsx b/Dashboard/src/Routes/SettingsRoutes.tsx index d6523e74d1..490ccaa661 100644 --- a/Dashboard/src/Routes/SettingsRoutes.tsx +++ b/Dashboard/src/Routes/SettingsRoutes.tsx @@ -59,6 +59,7 @@ import SettingsUsageHistory from "../Pages/Settings/UsageHistory"; import SettingsSlackIntegration from "../Pages/Settings/SlackIntegration"; import SettingsAuditLogs from "../Pages/Settings/AuditLogs"; +import SettingsVaults from "../Pages/Settings/Vaults"; const SettingsRoutes: FunctionComponent = ( props: ComponentProps, @@ -386,6 +387,16 @@ const SettingsRoutes: FunctionComponent = ( /> } /> + + + } + /> ); diff --git a/Dashboard/src/Utils/Breadcrumbs/SettingsBreadcrumbs.ts b/Dashboard/src/Utils/Breadcrumbs/SettingsBreadcrumbs.ts index 9f86fda194..ed3627451f 100644 --- a/Dashboard/src/Utils/Breadcrumbs/SettingsBreadcrumbs.ts +++ b/Dashboard/src/Utils/Breadcrumbs/SettingsBreadcrumbs.ts @@ -133,6 +133,11 @@ export function getSettingsBreadcrumbs(path: string): Array | undefined { "Settings", "Audit Logs", ]), + ...BuildBreadcrumbLinksByTitles(PageMap.SETTINGS_VAULTS, [ + "Project", + "Settings", + "Vaults", + ]), }; return breadcrumpLinksMap[path]; } diff --git a/Dashboard/src/Utils/PageMap.ts b/Dashboard/src/Utils/PageMap.ts index 7d6a7fb736..20fe985b0e 100644 --- a/Dashboard/src/Utils/PageMap.ts +++ b/Dashboard/src/Utils/PageMap.ts @@ -399,6 +399,9 @@ enum PageMap { // Audit Logs SETTINGS_AUDIT_LOGS = "SETTINGS_AUDIT_LOGS", + // Vaults + SETTINGS_VAULTS = "SETTINGS_VAULTS", + // Misc LOGOUT = "LOGOUT", USER_PROFILE_OVERVIEW = "USER_PROFILE_OVERVIEW", diff --git a/Dashboard/src/Utils/RouteMap.ts b/Dashboard/src/Utils/RouteMap.ts index 8eea75fc93..f5eb3839ec 100644 --- a/Dashboard/src/Utils/RouteMap.ts +++ b/Dashboard/src/Utils/RouteMap.ts @@ -328,6 +328,7 @@ export const SettingsRoutePath: Dictionary = { [PageMap.SETTINGS_LLM_PROVIDER_VIEW]: `llm-provider/${RouteParams.ModelID}`, [PageMap.SETTINGS_AI_BILLING]: "ai-credits", [PageMap.SETTINGS_AUDIT_LOGS]: "audit-logs", + [PageMap.SETTINGS_VAULTS]: "vaults", }; export const OnCallDutyRoutePath: Dictionary = { @@ -2273,6 +2274,12 @@ const RouteMap: Dictionary = { }`, ), + [PageMap.SETTINGS_VAULTS]: new Route( + `/dashboard/${RouteParams.ProjectID}/settings/${ + SettingsRoutePath[PageMap.SETTINGS_VAULTS] + }`, + ), + // workflows. [PageMap.WORKFLOWS_ROOT]: new Route( `/dashboard/${RouteParams.ProjectID}/workflows/*`,