import { useDevice } from '#imports' import { useNuxtApp } from 'nuxt/app' import { DeviceEnum } from '#lib/enums' import type { AppCookies } from '#lib/types' /** * Composable for overriding device detection (useful for testing) */ export function useDeviceOverride() { const device = useDevice() const $appCookies = useNuxtApp().$appCookies as AppCookies /** * Force device to be treated as mobile */ const forceMobile = () => { device.isMobile = true $appCookies.layout.value = DeviceEnum.MOBILE if (import.meta.client) { window.location.reload() } } /** * Force device to be treated as desktop */ const forceDesktop = () => { device.isMobile = false $appCookies.layout.value = null if (import.meta.client) { window.location.reload() } } /** * Reset device detection to automatic */ const resetDeviceDetection = () => { $appCookies.layout.value = null if (import.meta.client) { window.location.reload() } } /** * Get current device state for debugging */ const getDeviceState = () => { return { isMobile: device.isMobile, isMobileOrTablet: device.isMobileOrTablet, isApple: device.isApple, isSafari: device.isSafari, layoutCookie: $appCookies.layout.value, userAgent: import.meta.client ? navigator.userAgent : 'SSR' } } return { forceMobile, forceDesktop, resetDeviceDetection, getDeviceState } }