diff --git a/src/app/globals.css b/src/app/globals.css index a157baac9d..bb0df11691 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -13,6 +13,9 @@ /* OpenClaw × ClawHub Color Palette */ :root { + --desktop-safe-top: 0px; + --desktop-safe-bottom: 0px; + /* Primary - Coral Red (OpenClaw) */ --color-primary: #e54d5e; --color-primary-hover: #c93d4e; @@ -152,6 +155,11 @@ body { -moz-osx-font-smoothing: grayscale; } +body.electron-macos { + --desktop-safe-top: 30px; + --desktop-safe-bottom: 8px; +} + /* Selection — with fallback for browsers that don't support color-mix() */ ::selection { background-color: rgba(229, 77, 94, 0.22); diff --git a/src/shared/components/Header.tsx b/src/shared/components/Header.tsx index 8522d3fd76..fa7c09536a 100644 --- a/src/shared/components/Header.tsx +++ b/src/shared/components/Header.tsx @@ -18,6 +18,7 @@ import { OPENAI_COMPATIBLE_PREFIX, ANTHROPIC_COMPATIBLE_PREFIX, } from "@/shared/constants/providers"; +import { useIsElectron } from "@/shared/hooks/useElectron"; const isE2EMode = process.env.NEXT_PUBLIC_OMNIROUTE_E2E_MODE === "1"; @@ -122,8 +123,11 @@ function usePageInfo(pathname: string | null): { export default function Header({ onMenuClick, showMenuButton = true }) { const pathname = usePathname(); const router = useRouter(); + const isElectron = useIsElectron(); const t = useTranslations("header"); const { title, description, breadcrumbs } = usePageInfo(pathname); + const isMacElectron = + isElectron && typeof window !== "undefined" && window.electronAPI?.platform === "darwin"; const handleLogout = async () => { try { @@ -138,7 +142,14 @@ export default function Header({ onMenuClick, showMenuButton = true }) { }; return ( -
+
{/* Mobile menu button */}
{showMenuButton && ( diff --git a/src/shared/components/Sidebar.tsx b/src/shared/components/Sidebar.tsx index 47180f19ce..2a69041e72 100644 --- a/src/shared/components/Sidebar.tsx +++ b/src/shared/components/Sidebar.tsx @@ -24,10 +24,12 @@ export default function Sidebar({ onClose, collapsed = false, onToggleCollapse, + isMacElectron = false, }: { onClose?: any; collapsed?: boolean; onToggleCollapse?: any; + isMacElectron?: boolean; }) { const pathname = usePathname(); const t = useTranslations("sidebar"); @@ -192,9 +194,12 @@ export default function Sidebar({ <>