elearning/Frontend-Learner/layouts/default.vue
supalerk-ar66 13ad2097df
All checks were successful
Build and Deploy Frontend Learner / Build Frontend Learner Docker Image (push) Successful in 48s
Build and Deploy Frontend Learner / Deploy E-learning Frontend Learner to Dev Server (push) Successful in 3s
Build and Deploy Frontend Learner / Notify Deployment Status (push) Successful in 2s
feat: Implement default authenticated user layout and initial dashboard pages for 'My Courses' and 'Profile'.
2026-02-20 15:18:30 +07:00

60 lines
1.5 KiB
Vue

<script setup lang="ts">
/**
* @file default.vue
* @description Layout หลักสำหรับหน้าเว็บของผู้ใช้ (Authenticated Users)
* Uses Quasar QLayout for responsive structure.
*/
// Initialize global theme management
useThemeMode()
const leftDrawerOpen = ref(false)
const toggleLeftDrawer = () => {
leftDrawerOpen.value = !leftDrawerOpen.value
}
const route = useRoute()
// Automatically hide sidebar for learner routes
const shouldHideSidebar = computed(() => {
const silentRoutes = ['/dashboard', '/browse', '/classroom', '/course']
return silentRoutes.some(r => route.path.startsWith(r))
})
</script>
<template>
<q-layout view="hHh LpR lFf" class="bg-slate-50 dark:!bg-[#020617] text-slate-900 dark:!text-slate-50">
<!-- Header -->
<q-header
class="bg-white/80 dark:!bg-[#0f172a]/80 backdrop-blur-md text-slate-900 dark:!text-white"
>
<AppHeader @toggleSidebar="toggleLeftDrawer" :showSidebarToggle="!shouldHideSidebar" />
</q-header>
<!-- Sidebar (Drawer) -->
<q-drawer
v-if="!shouldHideSidebar"
v-model="leftDrawerOpen"
show-if-above
:width="280"
class="bg-white dark:!bg-[#0f172a]"
>
<AppSidebar />
</q-drawer>
<!-- Main Content -->
<q-page-container>
<q-page class="relative">
<slot />
</q-page>
</q-page-container>
</q-layout>
</template>
<style>
/* Ensure fonts are applied */
.font-inter {
font-family: var(--font-main);
}
</style>