"use client";
import * as React from "react";
import { Badge } from "@/components/ui/badge";
import { Button } from "@/components/ui/button";
import { PageHeader } from "@exxatdesignux/ui/components/ui/page-header";
import { SidebarNavLabel } from "@/components/ui/sidebar";
import { Tip } from "@/components/ui/tip";
import { UtilityBarDenseContent } from "@/components/design-system/utility-bar-previews";
import { useAltKeyLabel, useModKeyLabel } from "@/hooks/use-mod-key-label";
import { cn } from "@/lib/utils";
interface NavItem {
label: string;
icon: string;
active?: boolean;
badge?: string;
}
const PRIMARY_ITEMS: NavItem[] = [
{ label: "Dashboard", icon: "fa-grid-2" },
{
label: "Placements",
icon: "fa-briefcase-medical",
active: true,
badge: "12",
},
{ label: "Students", icon: "fa-user-graduate" },
{ label: "Compliance", icon: "fa-shield-check" },
];
function ExpandedNavRow({ item }: { item: NavItem }) {
return (
);
}
function IconRailRow({ item }: { item: NavItem }) {
return (
);
}
function SidebarFrame({
children,
className,
label,
}: {
children: React.ReactNode;
className?: string;
label: string;
}) {
return (
);
}
export function SidebarExpandedPreview() {
return (
Exxat Prism
Program
{PRIMARY_ITEMS.map((item) => (
))}
);
}
export function SidebarCollapsedPreview() {
return (
{PRIMARY_ITEMS.map((item) => (
))}
);
}
export function SidebarDrillInPreview() {
return (
Settings
Escape or Command plus left bracket returns to main navigation.
);
}
export function SidebarSecondaryPanelPreview() {
const [scope, setScope] = React.useState("all");
const scopes = [
{ id: "all", label: "All questions" },
{ id: "favorites", label: "Favorites" },
{ id: "clinical", label: "Clinical skills" },
];
return (
{PRIMARY_ITEMS.slice(0, 3).map((item) => (
))}
Content scoped to {scopes.find((item) => item.id === scope)?.label}
);
}
export function SidebarMobilePreview() {
return (
Exxat Prism
{PRIMARY_ITEMS.map((item) => (
))}
);
}
export function AppShellPreview() {
const [status, setStatus] = React.useState("");
const mod = useModKeyLabel();
const alt = useAltKeyLabel();
return (
{PRIMARY_ITEMS.map((item) => (
))}
setStatus("New placement selected"),
},
]}
/>
Page content owns one scroll column. Shell chrome stays outside the
content surface.
{status}
);
}