Skip to content

Commit 37b1adb

Browse files
committed
feat(web): add beta program navigation to sidebar (SSC-12)
Add Beta Program section to sidebar navigation: - Beta Program link with Flask icon and beta badge - Send Feedback link with message icon - New section separator for beta-related items
1 parent d1451a0 commit 37b1adb

1 file changed

Lines changed: 73 additions & 0 deletions

File tree

apps/web/src/components/layout/sidebar.tsx

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ import {
1919
LogOut,
2020
User,
2121
Network,
22+
FlaskConical,
23+
MessageSquare,
2224
} from "lucide-react";
2325
import { cn } from "@/lib/utils";
2426
import { Button } from "@/components/ui/button";
@@ -103,6 +105,20 @@ const secondaryNavItems: NavItem[] = [
103105
},
104106
];
105107

108+
const betaNavItems: NavItem[] = [
109+
{
110+
title: "Beta Program",
111+
href: "/dashboard/beta",
112+
icon: FlaskConical,
113+
badge: "Beta",
114+
},
115+
{
116+
title: "Send Feedback",
117+
href: "/dashboard/feedback",
118+
icon: MessageSquare,
119+
},
120+
];
121+
106122
interface SidebarProps {
107123
className?: string;
108124
}
@@ -261,6 +277,63 @@ export function Sidebar({ className }: SidebarProps) {
261277
);
262278
})}
263279
</div>
280+
281+
<Separator className="my-2" />
282+
283+
<div className="space-y-1 py-2">
284+
{!isCollapsed && (
285+
<p className="px-3 text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-2">
286+
Beta Program
287+
</p>
288+
)}
289+
{betaNavItems.map((item) => {
290+
const isActive = pathname === item.href;
291+
return isCollapsed ? (
292+
<Tooltip key={item.href}>
293+
<TooltipTrigger asChild>
294+
<Link
295+
href={item.href}
296+
className={cn(
297+
"flex h-10 w-10 items-center justify-center rounded-lg mx-auto",
298+
isActive
299+
? "bg-sidebar-primary text-sidebar-primary-foreground"
300+
: "text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground"
301+
)}
302+
>
303+
<item.icon className="h-5 w-5" />
304+
</Link>
305+
</TooltipTrigger>
306+
<TooltipContent side="right" className="flex items-center gap-4">
307+
{item.title}
308+
{item.badge && (
309+
<span className="ml-auto text-muted-foreground">
310+
{item.badge}
311+
</span>
312+
)}
313+
</TooltipContent>
314+
</Tooltip>
315+
) : (
316+
<Link
317+
key={item.href}
318+
href={item.href}
319+
className={cn(
320+
"flex items-center gap-3 rounded-lg px-3 py-2 text-sm transition-colors",
321+
isActive
322+
? "bg-sidebar-primary text-sidebar-primary-foreground"
323+
: "text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground"
324+
)}
325+
>
326+
<item.icon className="h-5 w-5" />
327+
{item.title}
328+
{item.badge && (
329+
<span className="ml-auto text-xs bg-primary/10 text-primary px-2 py-0.5 rounded-full">
330+
{item.badge}
331+
</span>
332+
)}
333+
</Link>
334+
);
335+
})}
336+
</div>
264337
</ScrollArea>
265338

266339
{/* User Profile */}

0 commit comments

Comments
 (0)