Added Vuetify to project

This commit is contained in:
Liviu Burcusel 2025-09-12 12:31:25 +02:00
parent ba7041ab12
commit 8129aaf0ad
Signed by: liviu
GPG key ID: 6CDB37A4AD2C610C
5 changed files with 89 additions and 30 deletions

View file

@ -16,8 +16,11 @@
"type-check": "vue-tsc --build" "type-check": "vue-tsc --build"
}, },
"dependencies": { "dependencies": {
"@mdi/font": "^7.4.47",
"vite-plugin-vuetify": "^2.1.2",
"vue": "^3.5.18", "vue": "^3.5.18",
"vue-router": "^4.5.1" "vue-router": "^4.5.1",
"vuetify": "^3.10.0"
}, },
"devDependencies": { "devDependencies": {
"@tsconfig/node22": "^22.0.2", "@tsconfig/node22": "^22.0.2",
@ -29,6 +32,7 @@
"@vue/tsconfig": "^0.7.0", "@vue/tsconfig": "^0.7.0",
"jsdom": "^26.1.0", "jsdom": "^26.1.0",
"npm-run-all2": "^8.0.4", "npm-run-all2": "^8.0.4",
"sass-embedded": "^1.92.1",
"typescript": "~5.8.0", "typescript": "~5.8.0",
"vite": "^7.0.6", "vite": "^7.0.6",
"vite-plugin-vue-devtools": "^8.0.0", "vite-plugin-vue-devtools": "^8.0.0",

View file

@ -3,27 +3,58 @@ import { RouterLink, RouterView } from "vue-router";
</script> </script>
<template> <template>
<header> <v-app>
<div class="wrapper"> <v-app-bar fixed app>
<nav> <v-container class="d-flex align-center pa-0">
<RouterLink to="/">Home</RouterLink> <div class="d-flex align-center">
<RouterLink to="/about">About</RouterLink> <RouterLink class="mx-2 text-decoration-none" to="/">
</nav> <v-btn
</div> variant="outlined"
</header> color="primary"
size="large"
prepend-icon="mdi-home-outline"
>
Home
</v-btn>
</RouterLink>
<RouterLink class="mx-2 text-decoration-none" to="/about">
<v-btn
variant="outlined"
color="primary"
size="large"
prepend-icon="mdi-chat-question-outline"
>
About
</v-btn>
</RouterLink>
</div>
</v-container>
</v-app-bar>
<main> <v-main>
<RouterView /> <v-container class="align-start fill-height">
</main> <RouterView />
</v-container>
</v-main>
<footer> <v-footer class="d-flex flex-column">
<div>Dexie.js - A Minimalistic Wrapper for IndexedDB</div> <div class="d-flex w-100 align-left px-4 py-2">
<div> Dexie.js - A Minimalistic Wrapper for IndexedDB
&copy; 2014-2024 </div>
<a href="https://dexie.org/" target="_blank" rel="noopener"> <v-divider thickness="2" width="100%"></v-divider>
Dexie.js <div class="px-4 py-2 align-left w-100">
</a> &copy; 2014-2024
is the creation of David Fahlander and managed by Awarica AB. <a href="https://dexie.org/" target="_blank" rel="noopener">
</div> <v-btn variant="outlined" color="primary">Dexie.js</v-btn>
</footer> </a>
is the creation of David Fahlander and managed by Awarica AB.
</div>
</v-footer>
</v-app>
</template> </template>
<style lang="scss" scoped>
.fill-height {
min-height: calc(100vh - 180px);
}
</style>

View file

@ -1,11 +1,13 @@
import './assets/main.css' import "./assets/main.css";
import { createApp } from 'vue' import { createApp } from "vue";
import App from './App.vue' import App from "./App.vue";
import router from './router' import vuetify from "./plugins/vuetify";
import router from "./router";
const app = createApp(App) const app = createApp(App);
app.use(router) app.use(vuetify);
app.use(router);
app.mount('#app') app.mount("#app");

15
src/plugins/vuetify.ts Normal file
View file

@ -0,0 +1,15 @@
import "@mdi/font/css/materialdesignicons.css";
import "vuetify/styles";
import { createVuetify } from "vuetify";
import * as components from "vuetify/components";
import * as directives from "vuetify/directives";
const vuetify = createVuetify({
components,
directives,
theme: {
defaultTheme: "dark",
},
});
export default vuetify;

View file

@ -3,10 +3,17 @@ import { fileURLToPath, URL } from "node:url";
import { defineConfig } from "vite"; import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue"; import vue from "@vitejs/plugin-vue";
import vueDevTools from "vite-plugin-vue-devtools"; import vueDevTools from "vite-plugin-vue-devtools";
import vuetify from "vite-plugin-vuetify";
// https://vite.dev/config/ // https://vite.dev/config/
export default defineConfig({ export default defineConfig({
plugins: [vue(), vueDevTools()], plugins: [
vue(),
vueDevTools(),
vuetify({
autoImport: true,
}),
],
resolve: { resolve: {
alias: { alias: {
"@": fileURLToPath(new URL("./src", import.meta.url)), "@": fileURLToPath(new URL("./src", import.meta.url)),