Files
myeasycms-v2/apps/dev-tool/components/app-sidebar.tsx
Giancarlo Buomprisco ad427365c9 Storybook (#328)
* feat(docs): add interactive examples and API references for Button, Card, and LoadingFallback components
- Updated dependencies
- Set `retries` to a fixed value of 3 for consistent test retries across environments.
- Increased `timeout` from 60 seconds to 120 seconds to allow more time for tests to complete.
- Reduced `expect` timeout from 10 seconds to 5 seconds for quicker feedback on assertions.
2025-08-22 07:35:44 +08:00

86 lines
1.8 KiB
TypeScript

'use client';
import Link from 'next/link';
import { usePathname } from 'next/navigation';
import {
BoltIcon,
ComponentIcon,
LanguagesIcon,
LayoutDashboardIcon,
MailIcon,
} from 'lucide-react';
import {
Sidebar,
SidebarGroup,
SidebarGroupLabel,
SidebarHeader,
SidebarMenu,
SidebarMenuButton,
SidebarMenuItem,
} from '@kit/ui/shadcn-sidebar';
import { isRouteActive } from '@kit/ui/utils';
const routes = [
{
label: 'Dashboard',
path: '/',
Icon: LayoutDashboardIcon,
},
{
label: 'Environment Variables',
path: '/variables',
Icon: BoltIcon,
},
{
label: 'Components',
path: '/components',
Icon: ComponentIcon,
},
{
label: 'Emails',
path: '/emails',
Icon: MailIcon,
},
{
label: 'Translations',
path: '/translations',
Icon: LanguagesIcon,
},
];
export function DevToolSidebar({
...props
}: React.ComponentProps<typeof Sidebar>) {
const pathname = usePathname();
return (
<Sidebar collapsible="icon" {...props}>
<SidebarHeader>
<b className="p-1 font-mono text-xs font-semibold">Makerkit Dev Tool</b>
</SidebarHeader>
<SidebarGroup className="group-data-[collapsible=icon]:hidden">
<SidebarGroupLabel>Dev Tools</SidebarGroupLabel>
<SidebarMenu>
{routes.map((route) => (
<SidebarMenuItem key={route.path}>
<SidebarMenuButton
isActive={isRouteActive(route.path, pathname, false)}
asChild
>
<Link href={route.path}>
<route.Icon className="h-4 w-4" />
<span>{route.label}</span>
</Link>
</SidebarMenuButton>
</SidebarMenuItem>
))}
</SidebarMenu>
</SidebarGroup>
</Sidebar>
);
}