From 70d7c8873e5a872161eca7b8cc1e91b5d2623e08 Mon Sep 17 00:00:00 2001 From: Grzegorz Kucmierz Date: Sat, 28 Feb 2026 04:18:53 +0000 Subject: [PATCH] refactor: centralize UI config and inject CSS variables dynamically --- src/App.vue | 12 +++++++++--- src/components/Footer.vue | 6 ++---- src/components/Header.vue | 7 +++++-- src/components/tools/ClipboardSniffer.vue | 2 +- src/components/tools/Passwords.vue | 1 - src/components/tools/QrCode.vue | 2 +- src/composables/useFillHeight.js | 15 +++++---------- src/config/ui.js | 6 ++++++ 8 files changed, 29 insertions(+), 22 deletions(-) create mode 100644 src/config/ui.js diff --git a/src/App.vue b/src/App.vue index 171bffc..ae0797d 100644 --- a/src/App.vue +++ b/src/App.vue @@ -6,6 +6,7 @@ import Footer from './components/Footer.vue' import Sidebar from './components/Sidebar.vue' import InstallPrompt from './components/InstallPrompt.vue' import ReloadPrompt from './components/ReloadPrompt.vue' +import { UI_CONFIG } from './config/ui' const isSidebarOpen = ref(window.innerWidth >= 768) const router = useRouter() @@ -31,6 +32,11 @@ const handleResize = () => { } onMounted(() => { + // Set global CSS variables from config + document.documentElement.style.setProperty('--header-height', `${UI_CONFIG.headerHeight}px`) + document.documentElement.style.setProperty('--footer-height', `${UI_CONFIG.footerHeight}px`) + document.documentElement.style.setProperty('--page-padding', `${UI_CONFIG.pagePadding}px`) + window.addEventListener('resize', handleResize) }) @@ -70,14 +76,14 @@ onUnmounted(() => { padding: 1rem; width: 100%; max-width: 100%; - /* Space for fixed footer on mobile + extra margin (match top padding 2rem + footer height ~40px) */ - padding-bottom: calc(1rem + 40px + env(safe-area-inset-bottom)); + /* Space for fixed footer on mobile + extra margin */ + padding-bottom: calc(1rem + var(--footer-height) + env(safe-area-inset-bottom)); } @media (max-width: 640px) { .main-content { padding: 0.5rem; - padding-bottom: calc(0.5rem + 40px + env(safe-area-inset-bottom)); + padding-bottom: calc(0.5rem + var(--footer-height) + env(safe-area-inset-bottom)); } } diff --git a/src/components/Footer.vue b/src/components/Footer.vue index 9e96211..749107f 100644 --- a/src/components/Footer.vue +++ b/src/components/Footer.vue @@ -14,7 +14,8 @@ const version = __APP_VERSION__;