|
21 | 21 | </template> |
22 | 22 | <template #fallback> |
23 | 23 | <div class="animate-pulse"> |
24 | | - <div class="h-4 bg-[var(--text-200)] rounded w-3/4 mb-4"></div> |
25 | | - <div class="h-4 bg-[var(--text-200)] rounded w-1/2 mb-4"></div> |
26 | | - <div class="h-4 bg-[var(--text-200)] rounded w-2/3"></div> |
| 24 | + <span class="flex items-center gap-1"> |
| 25 | + <div class="h-2 bg-(--text-200) rounded w-16 mb-4"></div> |
| 26 | + <div class="h-1 bg-(--text-200) rounded w-1 mb-4"></div> |
| 27 | + <div class="h-2 bg-(--text-200) rounded w-16 mb-4"></div> |
| 28 | + </span> |
| 29 | + <div class="h-10 bg-(--text-200) rounded w-1/3 mb-4"></div> |
| 30 | + <div class="h-2 bg-(--text-200) rounded w-1/2 mb-4" v-for="i in 2"></div> |
| 31 | + <div class="h-10 bg-(--text-200) rounded w-1/3 mb-4"></div> |
| 32 | + <div class="h-4 bg-(--text-200) rounded w-2/3 mb-2" v-for="i in 10"></div> |
27 | 33 | </div> |
28 | 34 | </template> |
29 | 35 | </Suspense> |
|
32 | 38 | </template> |
33 | 39 |
|
34 | 40 | <script setup lang="ts"> |
35 | | -const route = useRoute(); |
| 41 | + const route = useRoute(); |
36 | 42 |
|
37 | | -const { data: page } = await useAsyncData(route.path, () => queryCollection("blog").path(route.path).first()); |
| 43 | + const { data: page } = await useAsyncData(route.path, () => queryCollection("blog").path(route.path).first()); |
38 | 44 |
|
39 | | -definePageMeta({ |
40 | | - layout: "blog", |
41 | | -}); |
| 45 | + definePageMeta({ |
| 46 | + layout: "blog", |
| 47 | + }); |
42 | 48 |
|
43 | | -useSeoMeta({ |
44 | | - title: page.value?.title, |
45 | | - description: page.value?.description, |
46 | | -}); |
47 | | -const isMounted = ref(false); |
| 49 | + useSeoMeta({ |
| 50 | + title: page.value?.title, |
| 51 | + description: page.value?.description, |
| 52 | + }); |
| 53 | + const isMounted = ref(false); |
48 | 54 |
|
49 | | -// Only show after main content loads |
50 | | -onMounted(() => { |
51 | | - isMounted.value = true; |
52 | | -}); |
| 55 | + // Only show after main content loads |
| 56 | + onMounted(() => { |
| 57 | + isMounted.value = true; |
| 58 | + }); |
53 | 59 |
|
54 | | -useHead({ |
55 | | - meta: [ |
56 | | - { name: "description", content: page.value?.description }, |
57 | | - { name: "keywords", content: page.value?.meta.tags as string }, |
58 | | - ], |
59 | | -}); |
| 60 | + useHead({ |
| 61 | + meta: [ |
| 62 | + { name: "description", content: page.value?.description }, |
| 63 | + { name: "keywords", content: page.value?.meta.tags as string }, |
| 64 | + ], |
| 65 | + }); |
60 | 66 | </script> |
0 commit comments