feat: Dokploy-style sidebar layout for site pages

Sidebar takes full viewport height with Pulse logo at top. No Header
on site pages — UtilityBar in content area provides theme toggle, app
launcher, notifications, and user menu. Non-site authenticated pages
keep static Header. No footer on dashboard pages.
This commit is contained in:
Usman Baig
2026-03-18 15:58:06 +01:00
parent 7ae5facd0c
commit 1d25368292
4 changed files with 193 additions and 72 deletions

View File

@@ -253,8 +253,23 @@ export default function Sidebar({
return (
<div className="flex flex-col h-full">
{/* Logo */}
<Link
href="/"
className={`flex items-center gap-2.5 px-4 py-4 border-b border-neutral-200 dark:border-neutral-800 shrink-0 ${isCollapsed ? 'justify-center' : ''}`}
>
<img
src="/pulse_icon_no_margins.png"
alt="Pulse"
className="w-8 h-8 shrink-0"
/>
{!isCollapsed && (
<span className="text-lg font-bold text-neutral-900 dark:text-white tracking-tight">Pulse</span>
)}
</Link>
{/* Site Picker */}
<div className="pt-4 pb-2">
<div className="pt-3 pb-2">
<SitePicker sites={sites} currentSiteId={siteId} collapsed={isCollapsed} />
</div>
@@ -319,7 +334,7 @@ export default function Sidebar({
{/* Desktop sidebar */}
<aside
className={`hidden lg:flex flex-col shrink-0 border-r border-neutral-200 dark:border-neutral-800 bg-white dark:bg-neutral-900 transition-[width] duration-200 overflow-hidden ${
className={`hidden lg:flex flex-col shrink-0 border-r border-neutral-200 dark:border-neutral-800 bg-white dark:bg-neutral-900 transition-[width] duration-200 ${
collapsed ? 'w-[68px]' : 'w-60'
}`}
>