diff --git a/apps/app/themeConfig.ts b/apps/app/themeConfig.ts index 374bcd56..604b1527 100644 --- a/apps/app/themeConfig.ts +++ b/apps/app/themeConfig.ts @@ -1,53 +1,53 @@ -import { breakpointsVuetifyV3 } from "@vueuse/core"; -import { h } from "vue"; -import { VIcon } from "vuetify/components/VIcon"; -import { defineThemeConfig } from "@core"; -import { Skins } from "@core/enums"; +import { breakpointsVuetifyV3 } from '@vueuse/core' +import { h } from 'vue' +import { VIcon } from 'vuetify/components/VIcon' +import { defineThemeConfig } from '@core' +import { Skins } from '@core/enums' import { AppContentLayoutNav, ContentWidth, FooterType, NavbarType, -} from "@layouts/enums"; +} from '@layouts/enums' export const { themeConfig, layoutConfig } = defineThemeConfig({ app: { - title: "Crewli", + title: 'Crewli', logo: h( - "span", + 'span', { - class: "crewli-mark text-h5 font-weight-bold", + class: 'crewli-mark text-h5 font-weight-bold', style: - "line-height: 1.2; letter-spacing: -0.02em; color: rgb(var(--v-theme-primary));", + 'line-height: 1.2; letter-spacing: -0.02em; color: rgb(var(--v-theme-primary));', }, - "C", + 'C', ), contentWidth: ContentWidth.Boxed, contentLayoutNav: AppContentLayoutNav.Vertical, overlayNavFromBreakpoint: breakpointsVuetifyV3.lg - 1, // 1 for matching with vuetify breakpoint. Docs: https://next.vuetifyjs.com/en/features/display-and-platform/ i18n: { enable: false, - defaultLocale: "en", + defaultLocale: 'en', langConfig: [ { - label: "English", - i18nLang: "en", + label: 'English', + i18nLang: 'en', isRTL: false, }, { - label: "French", - i18nLang: "fr", + label: 'French', + i18nLang: 'fr', isRTL: false, }, { - label: "Arabic", - i18nLang: "ar", + label: 'Arabic', + i18nLang: 'ar', isRTL: true, }, ], }, - theme: "system", + theme: 'system', skin: Skins.Default, iconRenderer: VIcon, }, @@ -58,12 +58,12 @@ export const { themeConfig, layoutConfig } = defineThemeConfig({ footer: { type: FooterType.Static }, verticalNav: { isVerticalNavCollapsed: false, - defaultNavItemIconProps: { icon: "tabler-circle" }, + defaultNavItemIconProps: { icon: 'tabler-circle' }, isVerticalNavSemiDark: true, }, horizontalNav: { - type: "sticky", - transition: "slide-y-reverse-transition", + type: 'sticky', + transition: 'slide-y-reverse-transition', popoverOffset: 6, }, @@ -72,11 +72,11 @@ export const { themeConfig, layoutConfig } = defineThemeConfig({ // Such as: chevronDown: { icon: 'tabler-chevron-down', color:'primary', size: '24' }, */ icons: { - chevronDown: { icon: "tabler-chevron-down" }, - chevronRight: { icon: "tabler-chevron-right", size: 20 }, - close: { icon: "tabler-x", size: 20 }, - verticalNavPinned: { icon: "tabler-circle-dot", size: 20 }, - verticalNavUnPinned: { icon: "tabler-circle", size: 20 }, - sectionTitlePlaceholder: { icon: "tabler-minus" }, + chevronDown: { icon: 'tabler-chevron-down' }, + chevronRight: { icon: 'tabler-chevron-right', size: 20 }, + close: { icon: 'tabler-x', size: 20 }, + verticalNavPinned: { icon: 'tabler-circle-dot', size: 20 }, + verticalNavUnPinned: { icon: 'tabler-circle', size: 20 }, + sectionTitlePlaceholder: { icon: 'tabler-minus' }, }, -}); +}) diff --git a/apps/app/vite.config.ts b/apps/app/vite.config.ts index 1f3f2ebc..f6521e9b 100644 --- a/apps/app/vite.config.ts +++ b/apps/app/vite.config.ts @@ -1,18 +1,18 @@ -import { fileURLToPath } from "node:url"; -import vue from "@vitejs/plugin-vue"; -import vueJsx from "@vitejs/plugin-vue-jsx"; -import AutoImport from "unplugin-auto-import/vite"; -import Components from "unplugin-vue-components/vite"; +import { fileURLToPath } from 'node:url' +import vue from '@vitejs/plugin-vue' +import vueJsx from '@vitejs/plugin-vue-jsx' +import AutoImport from 'unplugin-auto-import/vite' +import Components from 'unplugin-vue-components/vite' import { VueRouterAutoImports, getPascalCaseRouteName, -} from "unplugin-vue-router"; -import VueRouter from "unplugin-vue-router/vite"; -import { defineConfig } from "vite"; -import VueDevTools from "vite-plugin-vue-devtools"; -import MetaLayouts from "vite-plugin-vue-meta-layouts"; -import vuetify from "vite-plugin-vuetify"; -import svgLoader from "vite-svg-loader"; +} from 'unplugin-vue-router' +import VueRouter from 'unplugin-vue-router/vite' +import { defineConfig } from 'vite' +import VueDevTools from 'vite-plugin-vue-devtools' +import MetaLayouts from 'vite-plugin-vue-meta-layouts' +import vuetify from 'vite-plugin-vuetify' +import svgLoader from 'vite-svg-loader' // https://vitejs.dev/config/ export default defineConfig({ @@ -20,11 +20,11 @@ export default defineConfig({ // Docs: https://github.com/posva/unplugin-vue-router // ℹ️ This plugin should be placed before vue plugin VueRouter({ - getRouteName: (routeNode) => { + getRouteName: routeNode => { // Convert pascal case to kebab case return getPascalCaseRouteName(routeNode) - .replace(/([a-z\d])([A-Z])/g, "$1-$2") - .toLowerCase(); + .replace(/([a-z\d])([A-Z])/g, '$1-$2') + .toLowerCase() }, }), vue(), @@ -36,30 +36,31 @@ export default defineConfig({ styles: { // Absolute URL so resolution does not depend on process cwd (fixes common SASS 404s). configFile: fileURLToPath( - new URL("./src/styles/settings.scss", import.meta.url), + new URL('./src/styles/settings.scss', import.meta.url), ), }, }), // Docs: https://github.com/dishait/vite-plugin-vue-meta-layouts?tab=readme-ov-file MetaLayouts({ - target: "./src/layouts", - defaultLayout: "default", + target: './src/layouts', + defaultLayout: 'default', }), // Docs: https://github.com/antfu/unplugin-vue-components#unplugin-vue-components Components({ - dirs: ["src/@core/components", "src/views/demos", "src/components"], + dirs: ['src/@core/components', 'src/views/demos', 'src/components'], dts: true, resolvers: [ - (componentName) => { + componentName => { // Auto import `VueApexCharts` - if (componentName === "VueApexCharts") + if (componentName === 'VueApexCharts') { return { - name: "default", - from: "vue3-apexcharts", - as: "VueApexCharts", - }; + name: 'default', + from: 'vue3-apexcharts', + as: 'VueApexCharts', + } + } }, ], }), @@ -67,72 +68,72 @@ export default defineConfig({ // Docs: https://github.com/antfu/unplugin-auto-import#unplugin-auto-import AutoImport({ imports: [ - "vue", + 'vue', VueRouterAutoImports, - "@vueuse/core", - "@vueuse/math", - "vue-i18n", - "pinia", + '@vueuse/core', + '@vueuse/math', + 'vue-i18n', + 'pinia', ], dirs: [ - "./src/@core/utils", - "./src/@core/composable/", - "./src/composables/", - "./src/utils/", - "./src/plugins/*/composables/*", + './src/@core/utils', + './src/@core/composable/', + './src/composables/', + './src/utils/', + './src/plugins/*/composables/*', ], vueTemplate: true, // ℹ️ Disabled to avoid confusion & accidental usage - ignore: ["useCookies", "useStorage"], + ignore: ['useCookies', 'useStorage'], }), svgLoader(), ], - define: { "process.env": {} }, + define: { 'process.env': {} }, resolve: { alias: { - "@": fileURLToPath(new URL("./src", import.meta.url)), - "@themeConfig": fileURLToPath( - new URL("./themeConfig.ts", import.meta.url), + '@': fileURLToPath(new URL('./src', import.meta.url)), + '@themeConfig': fileURLToPath( + new URL('./themeConfig.ts', import.meta.url), ), - "@core": fileURLToPath(new URL("./src/@core", import.meta.url)), - "@layouts": fileURLToPath(new URL("./src/@layouts", import.meta.url)), - "@images": fileURLToPath( - new URL("./src/assets/images/", import.meta.url), + '@core': fileURLToPath(new URL('./src/@core', import.meta.url)), + '@layouts': fileURLToPath(new URL('./src/@layouts', import.meta.url)), + '@images': fileURLToPath( + new URL('./src/assets/images/', import.meta.url), ), - "@styles": fileURLToPath( - new URL("./src/assets/styles/", import.meta.url), + '@styles': fileURLToPath( + new URL('./src/assets/styles/', import.meta.url), ), - "@configured-variables": fileURLToPath( + '@configured-variables': fileURLToPath( new URL( - "./src/assets/styles/variables/_template.scss", + './src/assets/styles/variables/_template.scss', import.meta.url, ), ), - "@form-schema": fileURLToPath( - new URL("../../packages/form-schema/src", import.meta.url), + '@form-schema': fileURLToPath( + new URL('../../packages/form-schema/src', import.meta.url), ), }, }, server: { port: 5174, proxy: { - "/api": { - target: "http://localhost:8000", + '/api': { + target: 'http://localhost:8000', changeOrigin: true, }, }, warmup: { - clientFiles: ["./src/pages/**/*.vue", "./src/components/**/*.vue"], + clientFiles: ['./src/pages/**/*.vue', './src/components/**/*.vue'], }, }, build: { chunkSizeWarningLimit: 5000, }, optimizeDeps: { - exclude: ["vuetify"], - entries: ["./src/**/*.vue"], + exclude: ['vuetify'], + entries: ['./src/**/*.vue'], force: true, }, -}); +}) diff --git a/apps/app/vitest.config.ts b/apps/app/vitest.config.ts index 2f0edaaa..0548d309 100644 --- a/apps/app/vitest.config.ts +++ b/apps/app/vitest.config.ts @@ -13,6 +13,7 @@ export default defineConfig({ imports: ['vue', '@vueuse/core'], dirs: ['./src/@core/utils', './src/@core/composable/', './src/composables/', './src/utils/'], vueTemplate: true, + // Don't write to auto-imports.d.ts — vite.config.ts owns that file // with the full app's auto-import set. Trimmed test-only set must // not clobber the IDE typings for the running dev server.