Files
Sankofa/portal/src/components/layout/PortalSidebar.tsx
defiQUG e3e71d95e4
Some checks failed
CD Pipeline / Deploy to Staging (push) Failing after 20s
CI Pipeline / Lint and Type Check (push) Failing after 32s
CI Pipeline / Build (push) Has been skipped
CI Pipeline / Test Backend (push) Failing after 1m28s
CI Pipeline / Test Frontend (push) Failing after 33s
CI Pipeline / Security Scan (push) Failing after 1m6s
Deploy to Staging / Deploy to Staging (push) Failing after 33s
Portal CI / Portal Lint (push) Failing after 20s
Portal CI / Portal Type Check (push) Failing after 22s
Portal CI / Portal Test (push) Failing after 21s
Portal CI / Portal Build (push) Failing after 20s
Test Suite / frontend-tests (push) Failing after 32s
Test Suite / api-tests (push) Failing after 52s
Test Suite / blockchain-tests (push) Failing after 30s
Type Check / type-check (map[directory:. name:root]) (push) Failing after 23s
Type Check / type-check (map[directory:api name:api]) (push) Failing after 18s
Type Check / type-check (map[directory:portal name:portal]) (push) Failing after 18s
CD Pipeline / Deploy to Production (push) Has been skipped
feat(portal): sovereign visual identity for Sankofa Nexus
Replace the generic S wordmark with geometric Sankofa, Phoenix, and PanTel
marks, institutional palette tokens, IBM Plex Sans, ecosystem trinity
homepage, /brand reference page, corporate graphics, and portal shell refresh.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-11 04:47:55 -07:00

55 lines
1.9 KiB
TypeScript

'use client'
import Link from 'next/link'
import { usePathname } from 'next/navigation'
import { primaryNavigation, supportNavigation } from '@/lib/portal-navigation'
import { cn } from '@/lib/utils'
export function PortalSidebar() {
const pathname = usePathname()
return (
<aside className="fixed left-0 top-16 h-[calc(100vh-4rem)] w-64 overflow-y-auto border-r border-sovereign-bronze/25 bg-sovereign-midnight">
<nav className="space-y-1 p-4">
{primaryNavigation.map((item) => {
const isActive = pathname === item.href || pathname?.startsWith(item.href + '/')
return (
<Link
key={item.name}
href={item.href}
className={cn(
'flex items-center space-x-3 rounded-lg px-3 py-2 text-sm font-medium no-underline transition-colors',
isActive
? 'border border-sovereign-gold/25 bg-sovereign-gold/10 text-sovereign-gold'
: 'text-sovereign-ivory/55 hover:bg-sovereign-obsidian hover:text-sovereign-ivory'
)}
>
<item.icon className="h-5 w-5" />
<span>{item.name}</span>
</Link>
)
})}
</nav>
<div className="border-t border-gray-800 mt-4 pt-4 px-4">
<div className="text-xs font-semibold text-gray-500 uppercase tracking-wider mb-2">
Help & Support
</div>
<nav className="space-y-1">
{supportNavigation.map((item) => (
<Link
key={item.name}
href={item.href}
className="flex items-center space-x-3 rounded-lg px-3 py-2 text-sm font-medium text-gray-400 no-underline transition-colors hover:bg-gray-800 hover:text-white"
>
<item.icon className="h-5 w-5" />
<span>{item.name}</span>
</Link>
))}
</nav>
</div>
</aside>
)
}