import type { HermesConnection } from '@/global' export const TITLEBAR_HEIGHT = 34 export const MACOS_TRAFFIC_LIGHTS_HEIGHT = 14 export const TITLEBAR_ICON_SIZE = 12 export const TITLEBAR_CONTROL_OFFSET_X = 74 export const TITLEBAR_CONTROL_HEIGHT = 22 export const TITLEBAR_CONTROLS_TOP = (TITLEBAR_HEIGHT - TITLEBAR_CONTROL_HEIGHT) / 2 export const TITLEBAR_FALLBACK_WINDOW_BUTTON_X = 24 // Edge inset used when no left-side native controls take up that space — // Windows/Linux (native overlay is on the right) and macOS fullscreen // (traffic lights are hidden). Matches the right-cluster's 0.75rem padding. export const TITLEBAR_EDGE_INSET = 14 export const titlebarButtonClass = 'h-[var(--titlebar-control-height)] w-[var(--titlebar-control-size)] cursor-pointer rounded-md text-muted-foreground/85 transition-colors hover:bg-(--ui-control-hover-background) hover:text-foreground' export const titlebarHeaderBaseClass = 'pointer-events-none relative z-3 flex h-(--titlebar-height) shrink-0 items-center justify-start gap-3 border-b border-(--ui-stroke-tertiary) bg-(--ui-chat-surface-background) px-[max(0.75rem,var(--titlebar-content-inset,0rem))]' export const titlebarHeaderShadowClass = "after:pointer-events-none after:absolute after:left-0 after:right-0 after:top-full after:h-4 after:bg-linear-to-b after:from-(--ui-chat-surface-background) after:to-transparent after:content-['']" export function titlebarControlsPosition( windowButtonPosition: HermesConnection['windowButtonPosition'] | undefined, isFullscreen = false ) { const top = Math.max(0, TITLEBAR_CONTROLS_TOP) // No left-side native controls to dodge: // - Windows/Linux: native min/max/close render on the right via titleBarOverlay. // - macOS fullscreen: traffic lights are hidden. // In both cases, pin the cluster to the edge with a small inset. if (windowButtonPosition === null || isFullscreen) { return { left: TITLEBAR_EDGE_INSET, top } } return { left: (windowButtonPosition?.x ?? TITLEBAR_FALLBACK_WINDOW_BUTTON_X) + TITLEBAR_CONTROL_OFFSET_X, top } }