Files
PlaylistShared/PlaylistShared.Pwa/wwwroot/index.html

183 lines
5.8 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Playlist Share</title>
<base href="/" />
<link rel="preload" id="webassembly" />
<link href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100..900;1,100..900&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="_content/MudBlazor/MudBlazor.min.css" />
<link rel="stylesheet" href="css/app.css" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<link rel="icon" type="image/png" href="favicon.png" />
<link href="PlaylistShared.Pwa.styles.css" rel="stylesheet" />
<link href="manifest.webmanifest" rel="manifest" />
<link rel="apple-touch-icon" sizes="512x512" href="icon-512.png" />
<link rel="apple-touch-icon" sizes="192x192" href="icon-192.png" />
<link rel="apple-touch-icon" sizes="180x180" href="icon-180.png" />
<script type="importmap"></script>
<style>
:root {
--bg: #1a1a27;
--primary: #7e6fff;
--text: #92929f;
}
body {
background-color: var(--mud-palette-background, var(--bg));
margin: 0;
align-items: center;
font-family: 'Roboto', sans-serif;
}
/* Создаем специальный контейнер для загрузки на весь экран */
#app:empty,
#app > .loader-wrapper {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
width: 100vw;
position: fixed;
top: 0;
left: 0;
background-color: #1a1a27; /* Фиксированный фон на время загрузки */
z-index: 9999;
}
.loader-wrapper {
display: flex;
flex-direction: column;
align-items: center;
gap: 50px;
}
.ripple-container {
position: relative;
width: 100px;
height: 100px;
display: flex;
justify-content: center;
align-items: center;
}
/* Центральная нота с неоновым свечением */
.note-icon {
font-size: 50px;
color: var(--mud-palette-primary, var(--primary));
z-index: 10;
filter: drop-shadow(0 0 10px rgba(126, 111, 255, 0.5));
animation: note-float 0.6s ease-in-out infinite;
}
/* Эффект расходящихся волн (Sharing) */
.ripple {
position: absolute;
border: 2px solid var(--mud-palette-primary, var(--primary));
border-radius: 50%;
opacity: 0;
animation: ripple-out 0.9s cubic-bezier(0.23, 1, 0.32, 1) infinite;
}
.ripple:nth-child(2) {
animation-delay: 0s;
}
.ripple:nth-child(3) {
animation-delay: 0.3s;
}
.ripple:nth-child(4) {
animation-delay: 0.6s;
}
@keyframes ripple-out {
0% {
width: 40px;
height: 40px;
opacity: 0.8;
border-width: 4px;
}
100% {
width: 280px;
height: 280px;
opacity: 0;
border-width: 1px;
}
}
@keyframes note-float {
0%, 100% {
transform: translateY(0) scale(1);
}
50% {
transform: translateY(-15px) scale(1.1);
}
}
.share-text {
color: var(--mud-palette-text-secondary, var(--text));
text-transform: uppercase;
letter-spacing: 5px;
font-size: 0.75rem;
font-weight: 400;
animation: fade-text 0.8s infinite;
}
@keyframes fade-text {
0%, 100% {
opacity: 0.4;
transform: scale(0.95);
}
50% {
opacity: 1;
transform: scale(1);
}
}
</style>
</head>
<body>
<div id="app">
<div class="loader-wrapper">
<div class="ripple-container">
<div class="ripple"></div>
<div class="ripple"></div>
<div class="ripple"></div>
<div class="note-icon">
<svg width="50" height="50" viewBox="0 0 24 24" fill="currentColor">
<path d="M12 3v10.55c-.59-.34-1.27-.55-2-.55-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4V7h4V3h-6z" "" ) />>
</svg>
</div>
</div>
<div class="share-text">Playlist Share</div>
</div>
</div>
<div id="blazor-error-ui">
Произошла необработанная ошибка.
<a href="." class="reload">Перезагрузить</a>
<span class="dismiss">🗙</span>
</div>
<script src="_content/Microsoft.AspNetCore.Components.WebAssembly.Authentication/AuthenticationService.js"></script>
<script src="_content/MudBlazor/MudBlazor.min.js"></script>
<script src="_framework/blazor.webassembly#[.{fingerprint}].js"></script>
<script>navigator.serviceWorker.register('service-worker.js', { updateViaCache: 'none' });</script>
<script>
function registerSWMessageHandler(dotNetHelper) {
navigator.serviceWorker.addEventListener('message', event => {
if (event.data && event.data.type === 'SW_ACTIVATED') {
dotNetHelper.invokeMethodAsync('OnNewVersionAvailable');
}
});
}
</script>
</body>
</html>