feat: initialise Vue 3 SPA template

- Add Tailwind CSS v4 with light/dark theme support
- Add layout system (default, sidebar, blank)
- Add mock authentication with Pinia store and route guards
- Add error pages (404, 500) and example views
- Add Vitest with 10 example tests across stores
- Configure Prettier formatting and ESLint linting
This commit is contained in:
2026-06-18 16:36:31 +08:00
commit 0b1c394cfd
37 changed files with 5483 additions and 0 deletions
+16
View File
@@ -0,0 +1,16 @@
<script setup lang="ts">
import { useTheme } from "@/stores/theme"
const { mode, toggle } = useTheme()
</script>
<template>
<button
type="button"
class="cursor-pointer rounded-md border border-border bg-surface-alt p-2 text-foreground hover:bg-border transition-colours"
:aria-label="mode === 'dark' ? 'Switch to light mode' : 'Switch to dark mode'"
@click="toggle">
<span v-if="mode === 'dark'" aria-hidden="true"></span>
<span v-else aria-hidden="true">🌙</span>
</button>
</template>