refactor(layout): improve module header and sidebar toggle UX

This commit is contained in:
2026-07-09 11:54:16 +05:30
parent 4fe93460d9
commit a376558b2f
4 changed files with 100 additions and 31 deletions

View File

@@ -256,29 +256,56 @@ function Sidebar({
function SidebarTrigger({
className,
onClick,
tooltip,
...props
}: React.ComponentProps<typeof Button>) {
const { toggleSidebar } = useSidebar();
}: React.ComponentProps<typeof Button> & {
tooltip?: string | React.ComponentProps<typeof TooltipContent>;
}) {
const { isMobile, toggleSidebar } = useSidebar();
return (
const button = (
<Button
data-sidebar="trigger"
data-slot="sidebar-trigger"
variant="ghost"
size="icon"
className={cn('size-7', className)}
size="icon-sm"
className={cn(
'rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground',
className,
)}
onClick={(event) => {
onClick?.(event);
toggleSidebar();
}}
{...props}
>
<PanelLeftIcon />
<PanelLeftIcon className="size-4" />
<span className="sr-only">Toggle Sidebar</span>
</Button>
);
}
if (!tooltip) {
return button;
}
if (typeof tooltip === 'string') {
tooltip = {
children: tooltip,
};
}
return (
<Tooltip>
<TooltipTrigger asChild>{button}</TooltipTrigger>
<TooltipContent
side="right"
align="center"
hidden={isMobile}
{...tooltip}
/>
</Tooltip>
);
}
function SidebarRail({ className, ...props }: React.ComponentProps<'button'>) {
const { toggleSidebar } = useSidebar();