diff --git a/page/src/App.tsx b/page/src/App.tsx
index 31b9523c..c659ca16 100644
--- a/page/src/App.tsx
+++ b/page/src/App.tsx
@@ -25,7 +25,9 @@ function Spinner() {
}
return (
-
+
+
+
);
}
diff --git a/page/src/animation.css b/page/src/animation.css
index cc13b131..d699bb7b 100644
--- a/page/src/animation.css
+++ b/page/src/animation.css
@@ -1,311 +1,33 @@
-:root {
- --ring-full-color: #ffffff00;
- --ring-half-color: #ffffff75;
+.loader {
+ width: 48px;
+ height: 48px;
+ display: inline-block;
+ position: relative;
}
-
-/**
- * Ring of dots
- *
- * @author jh3y
-*/
-@-webkit-keyframes ring-of-dots {
- 0% {
- -webkit-box-shadow:
- 20px 0px 0 0 white,
- 12.4698px 15.63663px 0 0 white,
- -4.45042px 19.49856px 0 0 white,
- -18.01938px 8.67767px 0 0 white,
- -18.01938px -8.67767px 0 0 white,
- -4.45042px -19.49856px 0 0 var(--ring-half-color),
- 12.4698px -15.63663px 0 0 var(--ring-full-color);
- box-shadow:
- 20px 0px 0 0 white,
- 12.4698px 15.63663px 0 0 white,
- -4.45042px 19.49856px 0 0 white,
- -18.01938px 8.67767px 0 0 white,
- -18.01938px -8.67767px 0 0 white,
- -4.45042px -19.49856px 0 0 var(--ring-half-color),
- 12.4698px -15.63663px 0 0 var(--ring-full-color);
- }
- 14.28571% {
- -webkit-box-shadow:
- 20px 0px 0 0 white,
- 12.4698px 15.63663px 0 0 white,
- -4.45042px 19.49856px 0 0 white,
- -18.01938px 8.67767px 0 0 white,
- -18.01938px -8.67767px 0 0 var(--ring-half-color),
- -4.45042px -19.49856px 0 0 var(--ring-full-color),
- 12.4698px -15.63663px 0 0 white;
- box-shadow:
- 20px 0px 0 0 white,
- 12.4698px 15.63663px 0 0 white,
- -4.45042px 19.49856px 0 0 white,
- -18.01938px 8.67767px 0 0 white,
- -18.01938px -8.67767px 0 0 var(--ring-half-color),
- -4.45042px -19.49856px 0 0 var(--ring-full-color),
- 12.4698px -15.63663px 0 0 white;
- }
- 28.57143% {
- -webkit-box-shadow:
- 20px 0px 0 0 white,
- 12.4698px 15.63663px 0 0 white,
- -4.45042px 19.49856px 0 0 white,
- -18.01938px 8.67767px 0 0 var(--ring-half-color),
- -18.01938px -8.67767px 0 0 var(--ring-full-color),
- -4.45042px -19.49856px 0 0 white,
- 12.4698px -15.63663px 0 0 white;
- box-shadow:
- 20px 0px 0 0 white,
- 12.4698px 15.63663px 0 0 white,
- -4.45042px 19.49856px 0 0 white,
- -18.01938px 8.67767px 0 0 var(--ring-half-color),
- -18.01938px -8.67767px 0 0 var(--ring-full-color),
- -4.45042px -19.49856px 0 0 white,
- 12.4698px -15.63663px 0 0 white;
- }
- 42.85714% {
- -webkit-box-shadow:
- 20px 0px 0 0 white,
- 12.4698px 15.63663px 0 0 white,
- -4.45042px 19.49856px 0 0 var(--ring-half-color),
- -18.01938px 8.67767px 0 0 var(--ring-full-color),
- -18.01938px -8.67767px 0 0 white,
- -4.45042px -19.49856px 0 0 white,
- 12.4698px -15.63663px 0 0 white;
- box-shadow:
- 20px 0px 0 0 white,
- 12.4698px 15.63663px 0 0 white,
- -4.45042px 19.49856px 0 0 var(--ring-half-color),
- -18.01938px 8.67767px 0 0 var(--ring-full-color),
- -18.01938px -8.67767px 0 0 white,
- -4.45042px -19.49856px 0 0 white,
- 12.4698px -15.63663px 0 0 white;
- }
- 57.14286% {
- -webkit-box-shadow:
- 20px 0px 0 0 white,
- 12.4698px 15.63663px 0 0 var(--ring-half-color),
- -4.45042px 19.49856px 0 0 var(--ring-full-color),
- -18.01938px 8.67767px 0 0 white,
- -18.01938px -8.67767px 0 0 white,
- -4.45042px -19.49856px 0 0 white,
- 12.4698px -15.63663px 0 0 white;
- box-shadow:
- 20px 0px 0 0 white,
- 12.4698px 15.63663px 0 0 var(--ring-half-color),
- -4.45042px 19.49856px 0 0 var(--ring-full-color),
- -18.01938px 8.67767px 0 0 white,
- -18.01938px -8.67767px 0 0 white,
- -4.45042px -19.49856px 0 0 white,
- 12.4698px -15.63663px 0 0 white;
- }
- 71.42857% {
- -webkit-box-shadow:
- 20px 0px 0 0 var(--ring-half-color),
- 12.4698px 15.63663px 0 0 var(--ring-full-color),
- -4.45042px 19.49856px 0 0 white,
- -18.01938px 8.67767px 0 0 white,
- -18.01938px -8.67767px 0 0 white,
- -4.45042px -19.49856px 0 0 white,
- 12.4698px -15.63663px 0 0 white;
- box-shadow:
- 20px 0px 0 0 var(--ring-half-color),
- 12.4698px 15.63663px 0 0 var(--ring-full-color),
- -4.45042px 19.49856px 0 0 white,
- -18.01938px 8.67767px 0 0 white,
- -18.01938px -8.67767px 0 0 white,
- -4.45042px -19.49856px 0 0 white,
- 12.4698px -15.63663px 0 0 white;
- }
- 85.71429% {
- -webkit-box-shadow:
- 20px 0px 0 0 var(--ring-full-color),
- 12.4698px 15.63663px 0 0 white,
- -4.45042px 19.49856px 0 0 white,
- -18.01938px 8.67767px 0 0 white,
- -18.01938px -8.67767px 0 0 white,
- -4.45042px -19.49856px 0 0 white,
- 12.4698px -15.63663px 0 0 var(--ring-half-color);
- box-shadow:
- 20px 0px 0 0 var(--ring-full-color),
- 12.4698px 15.63663px 0 0 white,
- -4.45042px 19.49856px 0 0 white,
- -18.01938px 8.67767px 0 0 white,
- -18.01938px -8.67767px 0 0 white,
- -4.45042px -19.49856px 0 0 white,
- 12.4698px -15.63663px 0 0 var(--ring-half-color);
- }
- 100% {
- -webkit-box-shadow:
- 20px 0px 0 0 white,
- 12.4698px 15.63663px 0 0 white,
- -4.45042px 19.49856px 0 0 white,
- -18.01938px 8.67767px 0 0 white,
- -18.01938px -8.67767px 0 0 white,
- -4.45042px -19.49856px 0 0 var(--ring-half-color),
- 12.4698px -15.63663px 0 0 var(--ring-full-color);
- box-shadow:
- 20px 0px 0 0 white,
- 12.4698px 15.63663px 0 0 white,
- -4.45042px 19.49856px 0 0 white,
- -18.01938px 8.67767px 0 0 white,
- -18.01938px -8.67767px 0 0 white,
- -4.45042px -19.49856px 0 0 var(--ring-half-color),
- 12.4698px -15.63663px 0 0 var(--ring-full-color);
- }
-}
-@keyframes ring-of-dots {
- 0% {
- -webkit-box-shadow:
- 20px 0px 0 0 white,
- 12.4698px 15.63663px 0 0 white,
- -4.45042px 19.49856px 0 0 white,
- -18.01938px 8.67767px 0 0 white,
- -18.01938px -8.67767px 0 0 white,
- -4.45042px -19.49856px 0 0 var(--ring-half-color),
- 12.4698px -15.63663px 0 0 var(--ring-full-color);
- box-shadow:
- 20px 0px 0 0 white,
- 12.4698px 15.63663px 0 0 white,
- -4.45042px 19.49856px 0 0 white,
- -18.01938px 8.67767px 0 0 white,
- -18.01938px -8.67767px 0 0 white,
- -4.45042px -19.49856px 0 0 var(--ring-half-color),
- 12.4698px -15.63663px 0 0 var(--ring-full-color);
- }
- 14.28571% {
- -webkit-box-shadow:
- 20px 0px 0 0 white,
- 12.4698px 15.63663px 0 0 white,
- -4.45042px 19.49856px 0 0 white,
- -18.01938px 8.67767px 0 0 white,
- -18.01938px -8.67767px 0 0 var(--ring-half-color),
- -4.45042px -19.49856px 0 0 var(--ring-full-color),
- 12.4698px -15.63663px 0 0 white;
- box-shadow:
- 20px 0px 0 0 white,
- 12.4698px 15.63663px 0 0 white,
- -4.45042px 19.49856px 0 0 white,
- -18.01938px 8.67767px 0 0 white,
- -18.01938px -8.67767px 0 0 var(--ring-half-color),
- -4.45042px -19.49856px 0 0 var(--ring-full-color),
- 12.4698px -15.63663px 0 0 white;
- }
- 28.57143% {
- -webkit-box-shadow:
- 20px 0px 0 0 white,
- 12.4698px 15.63663px 0 0 white,
- -4.45042px 19.49856px 0 0 white,
- -18.01938px 8.67767px 0 0 var(--ring-half-color),
- -18.01938px -8.67767px 0 0 var(--ring-full-color),
- -4.45042px -19.49856px 0 0 white,
- 12.4698px -15.63663px 0 0 white;
- box-shadow:
- 20px 0px 0 0 white,
- 12.4698px 15.63663px 0 0 white,
- -4.45042px 19.49856px 0 0 white,
- -18.01938px 8.67767px 0 0 var(--ring-half-color),
- -18.01938px -8.67767px 0 0 var(--ring-full-color),
- -4.45042px -19.49856px 0 0 white,
- 12.4698px -15.63663px 0 0 white;
- }
- 42.85714% {
- -webkit-box-shadow:
- 20px 0px 0 0 white,
- 12.4698px 15.63663px 0 0 white,
- -4.45042px 19.49856px 0 0 var(--ring-half-color),
- -18.01938px 8.67767px 0 0 var(--ring-full-color),
- -18.01938px -8.67767px 0 0 white,
- -4.45042px -19.49856px 0 0 white,
- 12.4698px -15.63663px 0 0 white;
- box-shadow:
- 20px 0px 0 0 white,
- 12.4698px 15.63663px 0 0 white,
- -4.45042px 19.49856px 0 0 var(--ring-half-color),
- -18.01938px 8.67767px 0 0 var(--ring-full-color),
- -18.01938px -8.67767px 0 0 white,
- -4.45042px -19.49856px 0 0 white,
- 12.4698px -15.63663px 0 0 white;
- }
- 57.14286% {
- -webkit-box-shadow:
- 20px 0px 0 0 white,
- 12.4698px 15.63663px 0 0 var(--ring-half-color),
- -4.45042px 19.49856px 0 0 var(--ring-full-color),
- -18.01938px 8.67767px 0 0 white,
- -18.01938px -8.67767px 0 0 white,
- -4.45042px -19.49856px 0 0 white,
- 12.4698px -15.63663px 0 0 white;
- box-shadow:
- 20px 0px 0 0 white,
- 12.4698px 15.63663px 0 0 var(--ring-half-color),
- -4.45042px 19.49856px 0 0 var(--ring-full-color),
- -18.01938px 8.67767px 0 0 white,
- -18.01938px -8.67767px 0 0 white,
- -4.45042px -19.49856px 0 0 white,
- 12.4698px -15.63663px 0 0 white;
- }
- 71.42857% {
- -webkit-box-shadow:
- 20px 0px 0 0 var(--ring-half-color),
- 12.4698px 15.63663px 0 0 var(--ring-full-color),
- -4.45042px 19.49856px 0 0 white,
- -18.01938px 8.67767px 0 0 white,
- -18.01938px -8.67767px 0 0 white,
- -4.45042px -19.49856px 0 0 white,
- 12.4698px -15.63663px 0 0 white;
- box-shadow:
- 20px 0px 0 0 var(--ring-half-color),
- 12.4698px 15.63663px 0 0 var(--ring-full-color),
- -4.45042px 19.49856px 0 0 white,
- -18.01938px 8.67767px 0 0 white,
- -18.01938px -8.67767px 0 0 white,
- -4.45042px -19.49856px 0 0 white,
- 12.4698px -15.63663px 0 0 white;
- }
- 85.71429% {
- -webkit-box-shadow:
- 20px 0px 0 0 var(--ring-full-color),
- 12.4698px 15.63663px 0 0 white,
- -4.45042px 19.49856px 0 0 white,
- -18.01938px 8.67767px 0 0 white,
- -18.01938px -8.67767px 0 0 white,
- -4.45042px -19.49856px 0 0 white,
- 12.4698px -15.63663px 0 0 var(--ring-half-color);
- box-shadow:
- 20px 0px 0 0 var(--ring-full-color),
- 12.4698px 15.63663px 0 0 white,
- -4.45042px 19.49856px 0 0 white,
- -18.01938px 8.67767px 0 0 white,
- -18.01938px -8.67767px 0 0 white,
- -4.45042px -19.49856px 0 0 white,
- 12.4698px -15.63663px 0 0 var(--ring-half-color);
- }
- 100% {
- -webkit-box-shadow:
- 20px 0px 0 0 white,
- 12.4698px 15.63663px 0 0 white,
- -4.45042px 19.49856px 0 0 white,
- -18.01938px 8.67767px 0 0 white,
- -18.01938px -8.67767px 0 0 white,
- -4.45042px -19.49856px 0 0 var(--ring-half-color),
- 12.4698px -15.63663px 0 0 var(--ring-full-color);
- box-shadow:
- 20px 0px 0 0 white,
- 12.4698px 15.63663px 0 0 white,
- -4.45042px 19.49856px 0 0 white,
- -18.01938px 8.67767px 0 0 white,
- -18.01938px -8.67767px 0 0 white,
- -4.45042px -19.49856px 0 0 var(--ring-half-color),
- 12.4698px -15.63663px 0 0 var(--ring-full-color);
- }
-}
-
-.ring-of-dots:before {
- animation: ring-of-dots 1s infinite linear reverse;
- border-radius: 10px;
+.loader::after,
+.loader::before {
content: "";
- display: block;
- height: 10px;
- width: 10px;
+ box-sizing: border-box;
+ width: 48px;
+ height: 48px;
+ border-radius: 50%;
+ background: #fff;
+ position: absolute;
+ left: 0;
+ top: 0;
+ animation: animloader 2s linear infinite;
+}
+.loader::after {
+ animation-delay: 1s;
+}
+
+@keyframes animloader {
+ 0% {
+ transform: scale(0);
+ opacity: 1;
+ }
+ 100% {
+ transform: scale(1);
+ opacity: 0;
+ }
}