From 2ec19323c6c862ffbdd45d842e90abee883a8f7b Mon Sep 17 00:00:00 2001 From: x42en Date: Tue, 23 Jun 2026 00:44:39 +0200 Subject: [PATCH] feat(ui): implement mobile navigation with sidebar toggle and auto-close functionality refactor(ui): update layout and responsiveness for various components style(ui): enhance spacing and alignment in forms and modals delete(ui): remove unused BaseTextarea component --- .../applications/ApplicationFormModal.vue | 16 ++--- frontend/src/components/layout/AppHeader.vue | 23 +++++-- frontend/src/components/layout/AppLayout.vue | 31 ++++++++++ frontend/src/components/layout/AppSidebar.vue | 20 +++++- frontend/src/components/ui/BaseModal.vue | 10 +-- frontend/src/components/ui/BaseTextarea.vue | 43 ------------- frontend/src/components/ui/CopyField.vue | 2 +- frontend/src/components/ui/EntityModal.vue | 16 ++--- frontend/src/composables/useMobileNav.ts | 61 +++++++++++++++++++ frontend/src/views/ApplicationDetailView.vue | 8 +-- frontend/src/views/ConfigurationView.vue | 4 +- frontend/src/views/DashboardView.vue | 2 +- frontend/src/views/ProfileView.vue | 4 +- frontend/src/views/UserDetailView.vue | 2 +- 14 files changed, 161 insertions(+), 81 deletions(-) delete mode 100644 frontend/src/components/ui/BaseTextarea.vue create mode 100644 frontend/src/composables/useMobileNav.ts diff --git a/frontend/src/components/applications/ApplicationFormModal.vue b/frontend/src/components/applications/ApplicationFormModal.vue index 310259f..8c7cf2b 100644 --- a/frontend/src/components/applications/ApplicationFormModal.vue +++ b/frontend/src/components/applications/ApplicationFormModal.vue @@ -300,7 +300,7 @@ async function submit() { @close="emit('close')" >
-
+
-
+

Options

-
+
diff --git a/frontend/src/components/layout/AppHeader.vue b/frontend/src/components/layout/AppHeader.vue index c4cc76d..b558c41 100644 --- a/frontend/src/components/layout/AppHeader.vue +++ b/frontend/src/components/layout/AppHeader.vue @@ -4,14 +4,16 @@ import { useI18n } from 'vue-i18n'; import { useRouter } from 'vue-router'; import { useTheme } from '@/composables/useTheme'; import { useAuthStore } from '@/stores/auth'; -import { Sun, Moon, User, LogOut } from 'lucide-vue-next'; +import { Sun, Moon, User, LogOut, Menu } from 'lucide-vue-next'; import UserAvatar from '@/components/ui/UserAvatar.vue'; import LanguageSelect from '@/components/ui/LanguageSelect.vue'; +import { useMobileNav } from '@/composables/useMobileNav'; const { t } = useI18n(); const router = useRouter(); const auth = useAuthStore(); const { theme, toggle } = useTheme(); +const { toggle: toggleSidebar } = useMobileNav(); defineProps<{ title?: string; @@ -28,13 +30,24 @@ async function handleLogout() {