stupa-pdf-api/frontend/index.html

124 lines
3.6 KiB
HTML

<!doctype html>
<html lang="de">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta
name="description"
content="STUPA PDF API - Projektantragsmanagementsystem"
/>
<meta name="theme-color" content="#1976d2" />
<!-- PWA Manifest -->
<link rel="manifest" href="/manifest.json" />
<!-- Preconnect to improve loading performance -->
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<!-- Roboto Font for Material-UI -->
<link
rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;600;700&display=swap"
/>
<!-- Material-UI Icons -->
<link
rel="stylesheet"
href="https://fonts.googleapis.com/icon?family=Material+Icons"
/>
<title>STUPA PDF API</title>
<style>
/* Reset and base styles */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
/*body {
font-family: 'Roboto', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
background-color: #fafafa;
}*/
/* Rework with optional dark mode */
body {
font-family:
"Roboto",
-apple-system,
BlinkMacSystemFont,
"Segoe UI",
sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
background-color: #fafafa;
}
body.dark {
background-color: #121212;
color: #fff;
}
@media (prefers-color-scheme: dark) {
body {
background-color: #121212;
color: #fff;
}
}
/* Loading spinner */
.loading-container {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
flex-direction: column;
gap: 20px;
}
.loading-spinner {
width: 50px;
height: 50px;
border: 4px solid #e3f2fd;
border-top: 4px solid #1976d2;
border-radius: 50%;
animation: spin 1s linear infinite;
}
.loading-text {
color: #666;
font-size: 16px;
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
/* Hide loading when app is ready */
#root:not(:empty) + .loading-container {
display: none;
}
</style>
</head>
<body>
<div id="root"></div>
<!-- Loading fallback -->
<div class="loading-container">
<div class="loading-spinner"></div>
<div class="loading-text">STUPA PDF API wird geladen...</div>
</div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>