diff --git a/index.html b/index.html index adb3013..aafc423 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ - + diff --git a/package.json b/package.json index f4ee2e7..2992738 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "amerc-site", - "version": "0.77.0-docsmobile", + "version": "0.78.0-loadscreen", "private": true, "type": "module", "scripts": { diff --git a/src/Scene2D.jsx b/src/Scene2D.jsx index 7b0a985..6caba8f 100644 --- a/src/Scene2D.jsx +++ b/src/Scene2D.jsx @@ -10,7 +10,7 @@ import { api } from './api.js'; const Menu = ({ size = 20 }) => (); const X = ({ size = 20 }) => (); -const RELEASE = '0.77.0-docsmobile'; +const RELEASE = '0.78.0-loadscreen'; const NAV = [ { id: 'home', label: 'Tavern' }, diff --git a/src/main.jsx b/src/main.jsx index 06893f0..c27eefe 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -45,10 +45,17 @@ class ErrorBoundary extends React.Component { } } +const Loading = () => ( +
+
+); + createRoot(document.getElementById('root')).render( - Loading amerc…}> + }> diff --git a/src/styles.css b/src/styles.css index da38ad7..36dc8cd 100644 --- a/src/styles.css +++ b/src/styles.css @@ -1487,3 +1487,10 @@ button { .docs-side { width: 100%; max-height: 210px; overflow-y: auto; border-right: none; border-bottom: 2px solid #1b2536; } .docs-main { padding: 20px 16px; } } + +/* branded app loading screen (Suspense fallback) (0.78) */ +.app-loading { position: fixed; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 16px; background: radial-gradient(circle at 50% 38%, #160d22, #07060c 70%); } +.app-loading-gem { width: 28px; height: 28px; background: linear-gradient(135deg, #5fe6ff, #1f86c4); box-shadow: 0 0 0 3px #07273a, 0 0 22px rgba(39,216,255,0.5); animation: app-pulse 1.3s ease-in-out infinite; } +.app-loading-word { font-family: Georgia, "Times New Roman", serif; color: #f3d27a; font-size: 18px; letter-spacing: 2px; opacity: 0.85; } +@keyframes app-pulse { 0%, 100% { transform: rotate(45deg) scale(1); opacity: 0.7; } 50% { transform: rotate(45deg) scale(1.16); opacity: 1; } } +@media (prefers-reduced-motion: reduce) { .app-loading-gem { animation: none; transform: rotate(45deg); } }