feat: landing page — Noveria Operations + Coming Soon
This commit is contained in:
Generated
+3088
File diff suppressed because it is too large
Load Diff
@@ -40,7 +40,7 @@ onMounted(() => {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<RouterView v-if="route.name === 'Login' || route.name === 'Dashboard'" />
|
<RouterView v-if="route.name === 'Login' || route.name === 'Dashboard' || route.name === 'Landing'" />
|
||||||
<div v-else class="shell">
|
<div v-else class="shell">
|
||||||
<AppSidebar
|
<AppSidebar
|
||||||
:active-view="activeView"
|
:active-view="activeView"
|
||||||
|
|||||||
@@ -11,10 +11,11 @@ import IncidentsView from './views/IncidentsView.vue'
|
|||||||
import CalendarView from './views/CalendarView.vue'
|
import CalendarView from './views/CalendarView.vue'
|
||||||
import NexusLayout from './layouts/NexusLayout.vue'
|
import NexusLayout from './layouts/NexusLayout.vue'
|
||||||
import FlowBoard from './views/Dashboard/FlowBoard.vue'
|
import FlowBoard from './views/Dashboard/FlowBoard.vue'
|
||||||
|
import LandingView from './views/LandingView.vue'
|
||||||
|
|
||||||
const routes = [
|
const routes = [
|
||||||
{ path: '/login', name: 'Login', component: LoginView, meta: { public: true } },
|
{ path: '/login', name: 'Login', component: LoginView, meta: { public: true } },
|
||||||
{ path: '/', redirect: '/dashboard' },
|
{ path: '/', name: 'Landing', component: LandingView, meta: { public: true } },
|
||||||
|
|
||||||
// V2 Dashboard (neues NexusLayout + FlowBoard)
|
// V2 Dashboard (neues NexusLayout + FlowBoard)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -0,0 +1,94 @@
|
|||||||
|
<script setup lang="ts">
|
||||||
|
/**
|
||||||
|
* LandingView – Modern, mysterious landing page for Nexus.
|
||||||
|
* Uses GalaxyBackground as the full-screen backdrop.
|
||||||
|
* No sidebar, no navigation, no auth gate.
|
||||||
|
*/
|
||||||
|
import GalaxyBackground from '../components/background/GalaxyBackground.vue'
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="landing-root">
|
||||||
|
<GalaxyBackground />
|
||||||
|
|
||||||
|
<div class="landing-content">
|
||||||
|
<h1 class="headline">Noveria Operations</h1>
|
||||||
|
<p class="subtitle">Coming Soon</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="landing-footer">Minh Bao</footer>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.landing-root {
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
height: 100vh;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.landing-content {
|
||||||
|
position: relative;
|
||||||
|
z-index: 1;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
gap: 16px;
|
||||||
|
animation: fadeIn 1.8s ease-out forwards;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.headline {
|
||||||
|
font-family: 'Space Grotesk', sans-serif;
|
||||||
|
font-size: clamp(2.5rem, 6vw, 5rem);
|
||||||
|
font-weight: 500;
|
||||||
|
letter-spacing: 0.04em;
|
||||||
|
color: #ece9ff;
|
||||||
|
text-shadow:
|
||||||
|
0 0 20px rgba(124, 108, 255, 0.4),
|
||||||
|
0 0 60px rgba(124, 108, 255, 0.15),
|
||||||
|
0 0 120px rgba(124, 108, 255, 0.08);
|
||||||
|
margin: 0;
|
||||||
|
line-height: 1.1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.subtitle {
|
||||||
|
font-family: 'Manrope', sans-serif;
|
||||||
|
font-size: clamp(0.95rem, 1.6vw, 1.25rem);
|
||||||
|
font-weight: 300;
|
||||||
|
letter-spacing: 0.3em;
|
||||||
|
text-transform: uppercase;
|
||||||
|
color: rgba(168, 163, 214, 0.65);
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.landing-footer {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 28px;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
z-index: 1;
|
||||||
|
text-align: center;
|
||||||
|
font-family: 'Manrope', sans-serif;
|
||||||
|
font-size: 11px;
|
||||||
|
font-weight: 300;
|
||||||
|
letter-spacing: 0.15em;
|
||||||
|
color: rgba(168, 163, 214, 0.35);
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes fadeIn {
|
||||||
|
0% {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateY(16px);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
Reference in New Issue
Block a user