ytptube/ui/app/components/shutdown.vue
2026-02-20 22:46:30 +03:00

93 lines
1.8 KiB
Vue

<template>
<div id="main_container" class="container">
<div class="columns">
<div class="column">
<section
class="hero has-text-centered is-flex is-align-items-center is-justify-content-center"
>
<div class="goodbye-box">
<div class="goodbye-title">Goodbye!</div>
<p class="goodbye-subtitle">YTPTube has shut down.</p>
<p class="goodbye-hint">You may now close this window.</p>
<div class="goodbye-spinner" />
</div>
</section>
</div>
</div>
</div>
</template>
<style scoped>
.goodbye-box {
animation: fadeInUp 0.6s ease-out;
background: radial-gradient(circle at top left, #6f42c1, #f66d9b);
color: white;
padding: 3rem 4rem;
border-radius: 1rem;
box-shadow: 0 0 50px rgba(255, 255, 255, 0.15);
max-width: 480px;
margin: 2rem auto;
position: relative;
overflow: hidden;
transform-style: preserve-3d;
}
.goodbye-title {
font-size: 3rem;
font-weight: bold;
margin-bottom: 1rem;
animation: floatTitle 3s ease-in-out infinite;
}
.goodbye-subtitle {
font-size: 1.5rem;
margin-bottom: 0.75rem;
opacity: 0.95;
}
.goodbye-hint {
opacity: 0.75;
font-size: 1rem;
margin-bottom: 1rem;
}
.goodbye-spinner {
width: 40px;
height: 40px;
border: 3px solid rgba(255, 255, 255, 0.3);
border-top: 3px solid white;
border-radius: 50%;
animation: spin 1s linear infinite;
margin: 1rem auto 0;
}
@keyframes fadeInUp {
from {
transform: translateY(40px);
opacity: 0;
}
to {
transform: translateY(0);
opacity: 1;
}
}
@keyframes floatTitle {
0%,
100% {
transform: translateY(0px);
}
50% {
transform: translateY(-8px);
}
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
</style>