Skip to content

Commit 487c61d

Browse files
authored
Merge pull request #289 from DevanshuNEU/feat/api-keys-dashboard
feat: API Keys dashboard page -- generate, list, revoke (OPE-167)
2 parents 67115a9 + 1e94e8f commit 487c61d

5 files changed

Lines changed: 722 additions & 132 deletions

File tree

frontend/src/components/Dashboard.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@ import { DashboardLayout } from './dashboard/DashboardLayout'
33
import { DashboardHome } from './dashboard/DashboardHome'
44
import { SettingsPage } from '../pages/SettingsPage'
55
import { UsagePage } from '../pages/UsagePage'
6+
import { APIKeysPage } from '../pages/APIKeysPage'
67

78
export function Dashboard() {
89
return (
910
<DashboardLayout>
1011
<Routes>
1112
<Route index element={<DashboardHome />} />
1213
<Route path="usage" element={<UsagePage />} />
14+
<Route path="api-keys" element={<APIKeysPage />} />
1315
<Route path="settings" element={<SettingsPage />} />
1416
<Route path="*" element={<Navigate to="/dashboard" replace />} />
1517
</Routes>

frontend/src/components/dashboard/CommandPalette.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ export function CommandPalette({ isOpen, onClose }: CommandPaletteProps) {
102102
items.push({ id: 'action-add-repo', type: 'action', title: 'Add Repository', subtitle: 'Clone and index a new repository', icon: '➕', action: () => { window.dispatchEvent(new CustomEvent('openAddRepo')); navigate('/dashboard') } })
103103
items.push({ id: 'action-refresh', type: 'action', title: 'Refresh Repositories', subtitle: 'Reload the repository list', icon: '🔄', action: () => window.location.reload() })
104104
items.push({ id: 'nav-dashboard', type: 'navigation', title: 'Go to Dashboard', subtitle: 'View all repositories', icon: '🏠', action: () => navigate('/dashboard') })
105+
items.push({ id: 'nav-api-keys', type: 'navigation', title: 'API Keys', subtitle: 'Manage MCP and API access keys', icon: '🔑', action: () => navigate('/dashboard/api-keys') })
105106
items.push({ id: 'nav-settings', type: 'navigation', title: 'Settings', subtitle: 'Account and preferences', icon: '⚙️', action: () => navigate('/dashboard/settings') })
106107
items.push({ id: 'nav-docs', type: 'navigation', title: 'Documentation', subtitle: 'Learn how to use OpenCodeIntel', icon: '📚', action: () => window.open('/docs', '_blank') })
107108
items.push({ id: 'action-signout', type: 'action', title: 'Sign Out', subtitle: 'Log out of your account', icon: '🚪', action: () => signOut() })

frontend/src/components/dashboard/Sidebar.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { Link, useLocation } from 'react-router-dom'
22
import {
33
FolderGit2,
44
BarChart3,
5+
KeyRound,
56
BookOpen,
67
ChevronLeft,
78
ChevronRight,
@@ -26,6 +27,7 @@ interface NavItem {
2627
const mainNavItems: NavItem[] = [
2728
{ name: 'Repositories', href: '/dashboard', icon: <FolderGit2 className="w-5 h-5" /> },
2829
{ name: 'Usage', href: '/dashboard/usage', icon: <BarChart3 className="w-5 h-5" /> },
30+
{ name: 'API Keys', href: '/dashboard/api-keys', icon: <KeyRound className="w-5 h-5" /> },
2931
]
3032

3133
const bottomNavItems: NavItem[] = [

0 commit comments

Comments
 (0)