49 lines
868 B
Vue
49 lines
868 B
Vue
<template>
|
|
<div class="app-layout">
|
|
<AppHeader />
|
|
<AppSidebar />
|
|
<main class="app-main">
|
|
<div class="main-content">
|
|
<slot />
|
|
</div>
|
|
</main>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import AppHeader from './AppHeader.vue'
|
|
import AppSidebar from './AppSidebar.vue'
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.app-layout {
|
|
min-height: 100vh;
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.app-main {
|
|
flex: 1;
|
|
padding-top: $header-height;
|
|
margin-left: 0;
|
|
transition: margin-left $transition-base;
|
|
|
|
@media (min-width: $breakpoint-lg) {
|
|
margin-left: $sidebar-width;
|
|
}
|
|
}
|
|
|
|
.main-content {
|
|
padding: $space-6 $space-4;
|
|
max-width: 900px;
|
|
margin: 0 auto;
|
|
|
|
@media (min-width: $breakpoint-md) {
|
|
padding: $space-7 $space-5;
|
|
}
|
|
|
|
@media (min-width: $breakpoint-lg) {
|
|
padding: $space-8 $space-6;
|
|
}
|
|
}
|
|
</style> |