mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-06-19 10:02:16 +00:00
42 lines
2 KiB
TypeScript
42 lines
2 KiB
TypeScript
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)] rounded-md text-muted-foreground/85 transition-colors hover:bg-(--ui-bg-tertiary) 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-(--glass-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-(--glass-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
|
|
}
|
|
}
|