Skip to content

Commit 9edc4b6

Browse files
committed
feat(components): add logo loader
1 parent d2ef05b commit 9edc4b6

File tree

4 files changed

+106
-1
lines changed

4 files changed

+106
-1
lines changed

src/app/components/app/AppMap.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<template>
22
<div v-if="!isMounted" :class="cn('flex justify-center', classComputed)">
3-
<LoaderIndicatorSpinner class="size-8" />
3+
<AppLoaderLogo class="size-8" />
44
</div>
55
<div v-else :id="templateIdMap" :class="classComputed" />
66
</template>
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<template>
2+
<div
3+
:class="cn('self-center justify-self-center', classProps)"
4+
:title="t('globalLoading')"
5+
>
6+
<slot />
7+
</div>
8+
</template>
9+
10+
<script setup lang="ts">
11+
import type { HtmlHTMLAttributes } from 'vue'
12+
13+
import { cn } from '@/utils/shadcn'
14+
15+
const { class: classProps = undefined } = defineProps<{
16+
class?: HtmlHTMLAttributes['class']
17+
}>()
18+
19+
const { t } = useI18n()
20+
</script>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<template>
2+
<AppLoader>
3+
<AppLoaderLogoSvg class="grayscale" aria-hidden="true" />
4+
</AppLoader>
5+
</template>
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
<template>
2+
<svg viewBox="0 0 600 600" fill="none" xmlns="http://www.w3.org/2000/svg">
3+
<path
4+
class="piece p1"
5+
fill-rule="evenodd"
6+
clip-rule="evenodd"
7+
d="M268.034 256.632L285.202 336.274C288.603 352.05 301.917 363.757 318.011 365.122L401.57 372.21L409.589 401.866C411.02 407.155 410.01 412.807 406.836 417.276L322.172 536.464C317.548 542.975 309.241 545.752 301.625 543.332L170.01 501.519C165.162 499.979 161.17 496.499 158.986 491.908L100.78 369.569C97.2722 362.197 99.0597 353.395 105.166 347.972L213.239 251.984L268.034 256.632Z"
8+
fill="#70E884"
9+
/>
10+
11+
<path
12+
class="piece p2"
13+
fill-rule="evenodd"
14+
clip-rule="evenodd"
15+
d="M464.896 178.115C462.411 170.28 455.015 165.051 446.793 165.315L343.261 168.647L292.387 240.395L361.475 246.254C376.871 247.56 389.805 258.352 393.835 273.256L414.497 349.66L490.695 309.305C498.535 305.153 502.284 295.995 499.603 287.544L464.896 178.115Z"
16+
fill="#FF3167"
17+
/>
18+
19+
<path
20+
class="piece p3"
21+
fill-rule="evenodd"
22+
clip-rule="evenodd"
23+
d="M166.209 68.4988C168.996 60.2291 177.225 55.0628 185.891 56.142L294.161 69.6249C301.679 70.5612 307.851 76.0135 309.702 83.3543L328.465 157.764L271.158 238.584L213.382 233.582L141.592 182.303C135.017 177.607 132.287 169.169 134.866 161.516L166.209 68.4988Z"
24+
fill="#0467F1"
25+
/>
26+
27+
<path
28+
class="piece p4"
29+
fill-rule="evenodd"
30+
clip-rule="evenodd"
31+
d="M303.16 332.41L287.201 258.375L359.919 264.543C367.617 265.196 374.084 270.591 376.099 278.043L396.466 353.357L319.564 346.834C311.517 346.151 304.86 340.298 303.16 332.41Z"
32+
fill="#FFE504"
33+
/>
34+
</svg>
35+
</template>
36+
37+
<style scoped>
38+
/* stylelint-disable plugin/no-unsupported-browser-features */
39+
.piece {
40+
transform-origin: center;
41+
animation: float-in 1.8s ease-in-out infinite;
42+
}
43+
44+
.p1 {
45+
animation-delay: 0s;
46+
}
47+
48+
.p2 {
49+
animation-delay: 150ms;
50+
}
51+
52+
.p3 {
53+
animation-delay: 300ms;
54+
}
55+
56+
.p4 {
57+
animation-delay: 450ms;
58+
}
59+
60+
@keyframes float-in {
61+
0% {
62+
opacity: 0;
63+
transform: scale(0.92) translateY(20px);
64+
}
65+
66+
40% {
67+
opacity: 1;
68+
transform: scale(1.03) translateY(-6px);
69+
}
70+
71+
70% {
72+
transform: scale(0.99) translateY(2px);
73+
}
74+
75+
100% {
76+
opacity: 1;
77+
transform: scale(1) translateY(0);
78+
}
79+
}
80+
</style>

0 commit comments

Comments
 (0)