feat(spary): Initializes project infrastructure and core functionality

- Adds basic project structure for Tauri and Vue
- Configures the Vite, TypeScript, and Vuetify environments
- Implements basic spray-on components and Rust backend logic
- Sets up routing, plugins, and the style system
This commit is contained in:
2025-10-09 15:17:23 +08:00
commit f1139af34e
36 changed files with 3396 additions and 0 deletions

35
src/router/index.ts Normal file
View File

@@ -0,0 +1,35 @@
/**
* router/index.ts
*
* Automatic routes for `./src/pages/*.vue`
*/
// Composables
import { createRouter, createWebHistory } from 'vue-router'
import { routes } from 'vue-router/auto-routes'
const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL),
routes,
})
// Workaround for https://github.com/vitejs/vite/issues/11804
router.onError((err, to) => {
if (err?.message?.includes?.('Failed to fetch dynamically imported module')) {
if (localStorage.getItem('vuetify:dynamic-reload')) {
console.error('Dynamic import error, reloading page did not fix it', err)
} else {
console.log('Reloading page to fix dynamic import error')
localStorage.setItem('vuetify:dynamic-reload', 'true')
location.assign(to.fullPath)
}
} else {
console.error(err)
}
})
router.isReady().then(() => {
localStorage.removeItem('vuetify:dynamic-reload')
})
export default router