Skip to content

Commit 6d7592e

Browse files
committed
Merge branch 'frontend-replace-spinner'
2 parents c32c2b6 + 35cfd4c commit 6d7592e

File tree

8 files changed

+41
-64
lines changed

8 files changed

+41
-64
lines changed
Loading
Loading

frontends/web/src/components/icon/icon.tsx

+4
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,8 @@ import starInactiveSVG from './assets/icons/star-inactive.svg';
8787
import syncSVG from './assets/icons/sync.svg';
8888
import syncLightSVG from './assets/icons/sync-light.svg';
8989
import selectedCheckLightSVG from './assets/icons/selected-check-light.svg';
90+
import spinnerRingDarkSVG from './assets/icons/spinner-ring-dark.svg';
91+
import spinnerRingLightSVG from './assets/icons/spinner-ring-light.svg';
9092
import usbSuccessSVG from './assets/icons/usb-success.svg';
9193
import statusInfoSVG from './assets/icons/icon-info.svg';
9294
import statusSuccessSVG from './assets/icons/icon-success.svg';
@@ -223,6 +225,8 @@ export const RedDot = (props: ImgProps) => (<img src={redDotSVG} draggable={fals
223225
export const Save = (props: ImgProps) => (<img src={saveSVG} draggable={false} {...props} />);
224226
export const SaveLight = (props: ImgProps) => (<img src={saveLightSVG} draggable={false} {...props} />);
225227
export const Shield = (props: ImgProps) => (<img src={shieldSVG} draggable={false} {...props} />);
228+
export const SpinnerRingDark = (props: ImgProps) => (<img src={spinnerRingDarkSVG} draggable={false} {...props} />);
229+
export const SpinnerRingLight = (props: ImgProps) => (<img src={spinnerRingLightSVG} draggable={false} {...props} />);
226230
export const Star = (props: ImgProps) => (<img src={starSVG} draggable={false} {...props} />);
227231
export const StarInactive = (props: ImgProps) => (<img src={starInactiveSVG} draggable={false} {...props} />);
228232
export const Sync = (props: ImgProps) => (<img src={syncSVG} draggable={false} {...props} />);

frontends/web/src/components/spinner/Spinner.module.css

+16-46
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,17 @@
1515
}
1616

1717
.spinner {
18-
display: inline-block;
18+
align-items: center;
19+
display: inline-flex;
20+
height: 64px;
21+
justify-content: center;
1922
position: relative;
2023
width: 64px;
21-
height: 64px;
24+
}
25+
26+
.spinner img {
27+
height: 36px;
28+
width: 36px;
2229
}
2330

2431
.spinnerText {
@@ -27,58 +34,21 @@
2734
text-align: center;
2835
}
2936

30-
.spinner div {
31-
position: absolute;
32-
top: 27px;
33-
width: 11px;
34-
height: 11px;
35-
border-radius: 50%;
36-
background: var(--color-blue);
37-
animation-timing-function: cubic-bezier(0, 1, 1, 0);
38-
}
39-
40-
.spinner div:nth-child(1) {
41-
left: 6px;
42-
animation: spinner1 0.6s infinite;
43-
}
44-
45-
.spinner div:nth-child(2) {
46-
left: 6px;
47-
animation: spinner2 0.6s infinite;
48-
}
49-
50-
.spinner div:nth-child(3) {
51-
left: 26px;
52-
animation: spinner2 0.6s infinite;
53-
}
54-
55-
.spinner div:nth-child(4) {
56-
left: 45px;
57-
animation: spinner3 0.6s infinite;
58-
}
59-
6037
.horizontallyCentered {
38+
align-items: center;
39+
display: flex;
40+
height: 64px;
41+
justify-content: center;
6142
left: 50%;
6243
position: absolute;
6344
transform: translateX(-50%);
6445
}
6546

66-
@keyframes spinner1 {
67-
0% { transform: scale(0); }
68-
100% { transform: scale(1); }
69-
}
70-
71-
@keyframes spinner3 {
72-
0% { transform: scale(1); }
73-
100% { transform: scale(0); }
47+
.horizontallyCentered img {
48+
height: 36px;
49+
width: 36px;
7450
}
7551

76-
@keyframes spinner2 {
77-
0% { transform: translate(0, 0); }
78-
100% { transform: translate(19px, 0); }
79-
}
80-
81-
8252
.overlay {
8353
position: absolute;
8454
top: 0;

frontends/web/src/components/spinner/Spinner.tsx

+5-5
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@
1818
import { useContext } from 'react';
1919
import { AppContext } from '@/contexts/AppContext';
2020
import { MenuDark, MenuLight } from '@/components/icon';
21-
import { SpinnerAnimation } from './SpinnerAnimation';
21+
import { SpinnerRingAnimated } from './SpinnerAnimation';
2222
import style from './Spinner.module.css';
2323

2424
type TProps = {
2525
text?: string;
2626
}
2727

28-
const Spinner = ({ text }: TProps) => {
28+
export const Spinner = ({ text }: TProps) => {
2929
const { toggleSidebar } = useContext(AppContext);
3030

3131
return (
@@ -38,15 +38,15 @@ const Spinner = ({ text }: TProps) => {
3838
</div>
3939
</div>
4040
</div>
41+
<div className={style.spinner}>
42+
<SpinnerRingAnimated />
43+
</div>
4144
{
4245
text && text.split('\n').map((line, i) => (
4346
<p key={`${line}-${i}`} className={style.spinnerText}>{line}</p>
4447
))
4548
}
46-
<SpinnerAnimation />
4749
<div className={style.overlay}></div>
4850
</div>
4951
);
5052
};
51-
52-
export { Spinner };

frontends/web/src/components/spinner/SpinnerAnimation.tsx

+8-11
Original file line numberDiff line numberDiff line change
@@ -14,25 +14,22 @@
1414
* limitations under the License.
1515
*/
1616

17+
import { SpinnerRingDark, SpinnerRingLight } from '../icon';
1718
import style from './Spinner.module.css';
1819

19-
const SpinnerAnimation = () => {
20+
export const SpinnerRingAnimated = () => {
2021
return (
21-
<div className={style.spinner}>
22-
<div></div>
23-
<div></div>
24-
<div></div>
25-
<div></div>
26-
</div>
22+
<>
23+
<SpinnerRingDark className="show-in-lightmode" />
24+
<SpinnerRingLight className="show-in-darkmode" />
25+
</>
2726
);
2827
};
2928

30-
const HorizontallyCenteredSpinner = () => {
29+
export const HorizontallyCenteredSpinner = () => {
3130
return (
3231
<div className={style.horizontallyCentered}>
33-
<SpinnerAnimation />
32+
<SpinnerRingAnimated />
3433
</div>
3534
);
3635
};
37-
38-
export { SpinnerAnimation, HorizontallyCenteredSpinner };

frontends/web/src/routes/account/send/components/inputs/scan-qr-video.module.css

+4
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@
99
.spinnerAnimationContainer p {
1010
padding: 0 var(--space-default);
1111
}
12+
.spinnerAnimationContainer img {
13+
height: 36px;
14+
width: 36px;
15+
}
1216

1317
.qrVideo {
1418
display: block;

frontends/web/src/routes/account/send/components/inputs/scan-qr-video.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
import { useRef } from 'react';
1818
import { useQRScanner } from '@/hooks/qrcodescanner';
19-
import { SpinnerAnimation } from '@/components/spinner/SpinnerAnimation';
19+
import { SpinnerRingAnimated } from '@/components/spinner/SpinnerAnimation';
2020
import style from './scan-qr-video.module.css';
2121

2222
type TProps = {
@@ -39,7 +39,7 @@ export const ScanQRVideo = ({
3939
be hidden once the camera / video component
4040
gets loaded.*/}
4141
<div className={style.spinnerAnimationContainer}>
42-
{initErrorMessage ? <p>{initErrorMessage}</p> : <SpinnerAnimation />}
42+
{initErrorMessage ? <p>{initErrorMessage}</p> : <SpinnerRingAnimated />}
4343
</div>
4444
<video
4545
className={style.qrVideo}

0 commit comments

Comments
 (0)