From 316dfee2fcaa2f352f78c7f74d3b29b6e5c1a096 Mon Sep 17 00:00:00 2001 From: Dorian Date: Tue, 17 Feb 2026 21:10:16 +0000 Subject: [PATCH] Update UI components and enhance controller navigation for improved user experience - Updated styles in various components to change color themes from cyan to yellow for better visual consistency. - Enhanced focus management in controller navigation to improve accessibility and user interaction. - Added new data attributes for controller navigation in multiple views to streamline user interactions with app containers. - Improved audio handling by removing unused functions in useLoginSounds.ts, optimizing the codebase. --- neode-ui/src/App.vue | 28 +++ neode-ui/src/components/AnimatedLogo.vue | 60 ++----- .../src/components/AppLauncherOverlay.vue | 111 ++++++++++++ neode-ui/src/components/Screensaver.vue | 166 ++++++++++++++++++ neode-ui/src/composables/useControllerNav.ts | 7 + neode-ui/src/stores/appLauncher.ts | 28 +++ neode-ui/src/stores/screensaver.ts | 42 +++++ neode-ui/src/views/AppDetails.vue | 3 +- neode-ui/src/views/Apps.vue | 5 +- neode-ui/src/views/Cloud.vue | 5 +- neode-ui/src/views/ContainerApps.vue | 16 +- neode-ui/src/views/Home.vue | 12 +- 12 files changed, 428 insertions(+), 55 deletions(-) create mode 100644 neode-ui/src/components/AppLauncherOverlay.vue create mode 100644 neode-ui/src/components/Screensaver.vue create mode 100644 neode-ui/src/stores/appLauncher.ts create mode 100644 neode-ui/src/stores/screensaver.ts diff --git a/neode-ui/src/App.vue b/neode-ui/src/App.vue index e69b2be8..da444850 100644 --- a/neode-ui/src/App.vue +++ b/neode-ui/src/App.vue @@ -9,6 +9,12 @@ + + + + + + appStore.isAuthenticated, (authenticated) => { if (authenticated) { messageToast.startPolling() + screensaverStore.resetInactivityTimer() } else { messageToast.stopPolling() toastMessage.value = { show: false, text: '' } + screensaverStore.clearInactivityTimer() + screensaverStore.deactivate() } }, { immediate: true }) +// Reset screensaver inactivity on user activity (when authenticated) +function onUserActivity() { + if (appStore.isAuthenticated && !screensaverStore.isActive) { + screensaverStore.resetInactivityTimer() + } +} + function onKeyDown(e: KeyboardEvent) { const isMac = navigator.platform.toUpperCase().includes('MAC') const mod = isMac ? e.metaKey : e.ctrlKey @@ -98,6 +118,10 @@ const isReady = ref(false) */ onMounted(async () => { window.addEventListener('keydown', onKeyDown) + window.addEventListener('mousemove', onUserActivity) + window.addEventListener('mousedown', onUserActivity) + window.addEventListener('keydown', onUserActivity) + window.addEventListener('touchstart', onUserActivity) const seenIntro = localStorage.getItem('neode_intro_seen') === '1' const isDirectRoute = route.path !== '/' @@ -114,6 +138,10 @@ onMounted(async () => { onBeforeUnmount(() => { window.removeEventListener('keydown', onKeyDown) + window.removeEventListener('mousemove', onUserActivity) + window.removeEventListener('mousedown', onUserActivity) + window.removeEventListener('keydown', onUserActivity) + window.removeEventListener('touchstart', onUserActivity) }) /** diff --git a/neode-ui/src/components/AnimatedLogo.vue b/neode-ui/src/components/AnimatedLogo.vue index ed4b2ad3..09b91f24 100644 --- a/neode-ui/src/components/AnimatedLogo.vue +++ b/neode-ui/src/components/AnimatedLogo.vue @@ -1,20 +1,13 @@ diff --git a/neode-ui/src/components/AppLauncherOverlay.vue b/neode-ui/src/components/AppLauncherOverlay.vue new file mode 100644 index 00000000..1d66b9a2 --- /dev/null +++ b/neode-ui/src/components/AppLauncherOverlay.vue @@ -0,0 +1,111 @@ +