Vue Structure

File structure

main.ts file structure.

import { createApp, App } from "vue"; import { registerPlugins } from "@/plugins"; import i18n from "@/plugins/i18n"; import AppMain from "@/App.vue"; import "@/assets/scss/app.scss"; import "simplebar"; import "simplebar/dist/simplebar.min.css"; import VueDatePicker from "@vuepic/vue-datepicker"; import "@vuepic/vue-datepicker/dist/main.css"; import "emoji-picker-element"; import { vMaska } from "maska"; import "maz-ui/css/main.css"; import MazPhoneNumberInput from "maz-ui/components/MazPhoneNumberInput"; import VueApexCharts from "vue3-apexcharts"; import CountTo from "@/app/lib/CountTo.vue"; import ListMenu from "@/app/common/components/ListMenu.vue"; import ListMenuWithIcon from "@/app/common/components/ListMenuWithIcon.vue"; import Card from "@/app/common/components/Card.vue"; import Breadcrumb from "@/app/common/components/Breadcrumb.vue"; import TextField from "@/app/common/validationComponents/TextField.vue"; import TextArea from "@/app/common/validationComponents/TextArea.vue"; const app: App = createApp(AppMain); registerPlugins(app); app.use(i18n); app.use(VueApexCharts); app.component("CountTo", CountTo); app.component("ListMenu", ListMenu); app.component("Card", Card); app.component("VueDatePicker", VueDatePicker); app.component("ListMenuWithIcon", ListMenuWithIcon); app.component("Breadcrumb", Breadcrumb); app.component("TextField", TextField); app.component("TextArea", TextArea); app.directive("maska", vMaska); app.component("MazPhoneNumberInput", MazPhoneNumberInput); app.mount("#app");

App.vue file structure.

<script lang="ts" setup> import { onMounted, ref, onBeforeUnmount } from "vue"; import { setAttributes, setSiteFontFamilyByTheme } from "@/store/utils"; import { useTheme } from "vuetify"; import { useLayoutStore } from "@/store/app"; const state = useLayoutStore(); const theme = useTheme(); const scrollTop = ref(document.documentElement.scrollTop); onMounted(() => { const { layoutType, layoutTheme, layoutWidth, mode, position, topBarColor, sideBarSize, sideBarColor, dir, } = state; const initialThemeSetup: { [key: string]: string } = { ["data-layout"]: layoutType, ["data-theme"]: layoutTheme, ["data-layout-width"]: layoutWidth, ["data-bs-theme"]: mode, ["data-layout-position"]: position, ["data-topbar"]: topBarColor, ["data-sidebar-size"]: sideBarSize, ["data-sidebar"]: sideBarColor, ["dir"]: dir, }; for (const key in initialThemeSetup) { setAttributes(key, initialThemeSetup[key]); } if (mode === "dark") { theme.change( layoutTheme === "default" ? "defaultThemeDark" : `${layoutTheme}Dark` ); } else { theme.change( layoutTheme === "default" ? "defaultTheme" : layoutTheme ); } addScrollEventListener(); setSiteFontFamilyByTheme(layoutTheme); }); const addScrollEventListener = () => { document.addEventListener("scroll", () => { scrollTop.value = document.documentElement.scrollTop; }); }; const onScrollTop = () => { window.scrollTo({ top: 0, behavior: "smooth", }); }; onBeforeUnmount(() => { document.removeEventListener("scroll", () => { scrollTop.value = 0; }); }); <script> <template> <component v-if="$route.meta.layout" :is="$route.meta.layout"> <router-view /> </component> <router-view v-else /> <v-btn v-if="scrollTop > 300" icon color="secondary" class="scroll-to-top-btn" rounded density="comfortable" @click="onScrollTop" > <i class="bx bx-up-arrow" /> </v-btn> </template>

Theme Setup

use LAYOUT_THEME const to set the theme. You can set the theme in the src/store/app.ts file's state.

layoutTheme=LAYOUT_THEME.DEFAULT To set default theme
layoutTheme=LAYOUT_THEME.MATERIAL To set material theme
layoutTheme=LAYOUT_THEME.CREATIVE To set creative theme
layoutTheme=LAYOUT_THEME.MINIMAL To set minimal theme
layoutTheme=LAYOUT_THEME.MODERN To set modern theme
layoutTheme=LAYOUT_THEME.INTERACTION To set interaction theme

Layout setup

You can set the default layout in the src/store/app.ts file.

layoutType=LAYOUTS.VERTICAL To set default layout as Vertical
layoutType=LAYOUTS.HORIZONTAL To set default layout as Horizontal
layoutType=LAYOUTS.TWO_COLUMN To set default layout as Two column
mode=SITE_THEME.LIGHT To set Light layout mode.
mode=SITE_THEME.DARK To set Dark layout mode.
sidebarSize=SIDEBAR_SIZE.DEFAULT
layoutWidth=LAYOUT_WIDTH.FLUID
To set layout width Fluid and left sidebar large.
position=LAYOUT_POSITION.FIXED To set layout position Fixed.
position=LAYOUT_POSITION.SCROLLABLE To set layout position Scrollable.
topbar=TOP_BAR.LIGHT To set the Light color of Topbar.
topbar=TOP_BAR.DARK To set the dark color of Topbar.
sidebarSize=SIDEBAR_SIZE.DEFAULT To set the Large left sidebar.
sidebarSize=SIDEBAR_SIZE.COMPACT To set the Compact left sidebar.
sidebarSize=SIDEBAR_SIZE.SMALL To set the Icon view left sidebar.
sidebarColor=SIDEBAR_COLOR.LIGHT To set the Light color of left Sidebar.
sidebarColor=SIDEBAR_COLOR.DARK To set the Dark color of left Sidebar.
sidebarColor=SIDEBAR_COLOR.GRADIENT To set the Gradient color of left Sidebar.
sidebarColor=SIDEBAR_COLOR.GRADIENT2 To set the Gradient-2 color of left Sidebar.
sidebarColor=SIDEBAR_COLOR.GRADIENT3 To set the Gradient-3 color of left Sidebar.
sidebarColor=SIDEBAR_COLOR.GRADIENT4 To set the Gradient-4 color of left Sidebar.
sidebarImage="default" To Disable image on left Sidebar.
sidebarImage="img-1" To set the img-1 Image of left Sidebar.
sidebarImage="img-2" To set the img-2 Image of left Sidebar.
sidebarImage="img-3" To set the img-3 Image of left Sidebar.
sidebarImage="img-4" To set the img-4 Image of left Sidebar.
© Steex.
Design & Develop by Themesbrand