Create standalone browser port of LTX Athena with authenticated native API transport

This commit is contained in:
Mikei386
2026-09-29 17:59:23 +02:00
commit 1333b0c36b
202 changed files with 63054 additions and 0 deletions
+33
View File
@@ -0,0 +1,33 @@
export type MenuPlacement = 'above' | 'below'
const EDGE_PX = 8
export function fixedMenuPosition({
trigger,
placement,
viewport,
menuWidth,
gap = 8,
}: {
trigger: { left: number; right: number; top: number; bottom: number }
placement: MenuPlacement
viewport: { width: number; height: number }
menuWidth?: number
gap?: number
}): { left: number; top?: number; bottom?: number } {
let left = trigger.left
const measuredWidth =
menuWidth != null && menuWidth < viewport.width - EDGE_PX * 2 ? menuWidth : undefined
if (measuredWidth != null) {
const maxLeft = viewport.width - measuredWidth - EDGE_PX
if (left > maxLeft) left = trigger.right - measuredWidth
left = Math.max(EDGE_PX, Math.min(left, maxLeft))
} else {
left = Math.max(EDGE_PX, left)
}
if (placement === 'below') {
return { left, top: trigger.bottom + gap }
}
return { left, bottom: viewport.height - trigger.top + gap }
}