feature: Design System, App Shell, and Login Redesign
CI / backend (push) Successful in 6m31s
CI / frontend (push) Successful in 58s

This commit is contained in:
2026-08-12 03:37:17 +08:00
parent 6e06717b82
commit 56e100a495
31 changed files with 2987 additions and 217 deletions
@@ -1,45 +1,15 @@
<template>
<div class="app-header">
<div class="app-header-title">
<router-link to="/" class="flex items-center gap-2 shrink-0">
<svg viewBox="0 0 32 32" class="w-6 h-6" aria-hidden="true">
<path fill="currentColor" class="text-primary-700" d="M16 2 4 6.5v8.2c0 8 5.1 14.6 12 15.3 6.9-.7 12-7.3 12-15.3V6.5z"/>
<path fill="white" d="M16 8.5c-3.6 0-6.6 2.8-6.6 6.3 0 3.4 2.7 6.4 6.6 9.6 3.9-3.2 6.6-6.2 6.6-9.6 0-3.5-3-6.3-6.6-6.3m0 3.4c1.7 0 3.1 1.3 3.1 2.9s-1.4 2.9-3.1 2.9-3.1-1.3-3.1-2.9 1.4-2.9 3.1-2.9"/>
</svg>
<span class="font-bold text-primary-800 tracking-tight">VigilCare</span>
</router-link>
<h1 class="text-lg font-semibold">{{ title }}</h1>
<nav class="flex gap-3 ml-4">
<router-link v-if="auth.canIntake" to="/intake" class="nav-link">Intake</router-link>
<router-link v-if="auth.canIntake" to="/cover-sheets" class="nav-link">Cover Sheets</router-link>
<router-link v-if="auth.canEntry" to="/entry" class="nav-link">Entry</router-link>
<router-link v-if="auth.canVerify" to="/verification" class="nav-link">Verification</router-link>
<router-link v-if="auth.canApprove" to="/approval" class="nav-link">Approval</router-link>
<router-link v-if="auth.canLiveCapture" to="/live-capture" class="nav-link">Live Capture</router-link>
<router-link to="/patients" class="nav-link">Patient History</router-link>
<router-link v-if="auth.canSupervise" to="/dashboard" class="nav-link">Queue Dashboard</router-link>
<router-link v-if="auth.canSupervise" to="/fhir-explorer" class="nav-link">FHIR Explorer</router-link>
</nav>
<h1 class="text-lg font-semibold text-ink-strong">{{ title }}</h1>
<slot name="subtitle" />
</div>
<div class="app-header-actions">
<slot name="actions" />
<span class="text-sm text-gray-600">{{ auth.userFullName }}</span>
<button
type="button"
@click="auth.logout()"
class="text-sm text-gray-500 hover:text-gray-800"
>
Sign Out
</button>
</div>
</div>
</template>
<script setup lang="ts">
import { useAuthStore } from '../stores/auth'
defineProps<{ title: string }>()
const auth = useAuthStore()
</script>