mirror of
https://github.com/InvoiceShelf/InvoiceShelf.git
synced 2026-04-16 01:34:08 +00:00
Now that the legacy v1 frontend (commit 064bdf53) is gone, the v2 directory is the only frontend and the v2 suffix is just noise. Renames resources/scripts-v2 to resources/scripts via git mv (so git records the move as renames, preserving blame and log --follow), then bulk-rewrites the 152 files that imported via @v2/... to use @/scripts/... instead. The existing @ alias (resources/) covers the new path with no extra config needed.
Drops the now-unused @v2 alias from vite.config.js and points the laravel-vite-plugin entry at resources/scripts/main.ts. Updates the only blade reference (resources/views/app.blade.php) to match. The package.json test script (eslint ./resources/scripts) automatically targets the right place after the rename without any edit.
Verified: npm run build exits clean and the Vite warning lines now reference resources/scripts/plugins/i18n.ts, confirming every import resolved through the new path. git log --follow on any moved file walks back through its scripts-v2 history.
85 lines
2.1 KiB
Vue
85 lines
2.1 KiB
Vue
<template>
|
|
<div
|
|
class="
|
|
flex min-h-screen items-center justify-center bg-surface-tertiary px-4 py-12
|
|
sm:px-6 lg:px-8
|
|
"
|
|
>
|
|
<NotificationRoot />
|
|
|
|
<div class="w-full max-w-md">
|
|
<div class="mb-10 flex justify-center">
|
|
<MainLogo
|
|
v-if="!customerLogo"
|
|
class="block h-auto w-44 max-w-full text-primary-500"
|
|
/>
|
|
|
|
<img
|
|
v-else
|
|
:src="customerLogo"
|
|
class="block h-auto w-44 max-w-full"
|
|
/>
|
|
</div>
|
|
|
|
<div class="rounded-2xl border border-line-default bg-surface px-6 py-8 shadow-sm sm:px-8">
|
|
<div class="mb-8 text-left">
|
|
<h1 class="text-2xl font-semibold tracking-tight text-heading">
|
|
{{ pageTitle }}
|
|
</h1>
|
|
<p class="mt-2 text-sm leading-6 text-muted">
|
|
{{ pageDescription }}
|
|
</p>
|
|
</div>
|
|
|
|
<router-view />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import { computed } from 'vue'
|
|
import { useRoute } from 'vue-router'
|
|
import { useI18n } from 'vue-i18n'
|
|
import NotificationRoot from '@/scripts/components/notifications/NotificationRoot.vue'
|
|
import MainLogo from '@/scripts/components/icons/MainLogo.vue'
|
|
|
|
declare global {
|
|
interface Window {
|
|
customer_logo?: string
|
|
customer_page_title?: string
|
|
}
|
|
}
|
|
|
|
const route = useRoute()
|
|
const { t } = useI18n()
|
|
|
|
const customerLogo = computed<string | false>(() => {
|
|
return window.customer_logo || false
|
|
})
|
|
|
|
const pageTitle = computed<string>(() => {
|
|
if (route.name === 'customer-portal.forgot-password') {
|
|
return t('login.forgot_password')
|
|
}
|
|
|
|
if (route.name === 'customer-portal.reset-password') {
|
|
return t('login.reset_password')
|
|
}
|
|
|
|
return window.customer_page_title || t('customers.portal_access')
|
|
})
|
|
|
|
const pageDescription = computed<string>(() => {
|
|
if (route.name === 'customer-portal.forgot-password') {
|
|
return t('login.enter_email')
|
|
}
|
|
|
|
if (route.name === 'customer-portal.reset-password') {
|
|
return t('customers.portal_access_text')
|
|
}
|
|
|
|
return t('customers.portal_access_text')
|
|
})
|
|
</script>
|