diff --git a/TODO b/TODO
index e38941a..97b30d4 100644
--- a/TODO
+++ b/TODO
@@ -5,7 +5,6 @@ API base URL
- favicon and page titles - SEO related things
- rearrange buttons / header space - collapse on smaller screens
-- Loading Chessboard with suspense and spinner
- Lichess login
- logger
- contact form
\ No newline at end of file
diff --git a/src/pages/Chessboard.tsx b/src/pages/Chessboard.tsx
index b208d1a..c741e91 100644
--- a/src/pages/Chessboard.tsx
+++ b/src/pages/Chessboard.tsx
@@ -10,7 +10,6 @@ const PgnViewer = lazy(() => import("#/components/PgnViewer.tsx"));
const LoadingBoard = () => {
return (
-
Loading...
diff --git a/src/styles.css b/src/styles.css
index a08072c..8b22a71 100644
--- a/src/styles.css
+++ b/src/styles.css
@@ -98,10 +98,38 @@ body {
}
}
+#loading-bar-spinner.spinner {
+ left: 50%;
+ margin-left: -20px;
+ top: 40%;
+ margin-top: -20px;
+ position: absolute;
+ z-index: 19 !important;
+ animation: loading-bar-spinner 400ms linear infinite;
+}
+
+#loading-bar-spinner.spinner .spinner-icon {
+ width: 40px;
+ height: 40px;
+ border: solid 4px transparent;
+ border-top-color: var(--accent) !important;
+ border-left-color: var(--neutral-content) !important;
+ border-radius: 50%;
+}
+
.rise-in {
animation: rise-in 700ms cubic-bezier(0.16, 1, 0.3, 1) both;
}
+@keyframes loading-bar-spinner {
+ 0% {
+ transform: rotate(0deg);
+ }
+ 100% {
+ transform: rotate(360deg);
+ }
+}
+
@keyframes rise-in {
from {
opacity: 0;