@@ -20,7 +20,14 @@ watch(open, (isOpen) => {
2020
2121<template >
2222 <div >
23- <DesignDrawer v-model:open =" open" >
23+ <DesignDrawer
24+ v-model:open =" open"
25+ :title ="
26+ achievement.achievedAt
27+ ? $t('achievement.unlocked')
28+ : $t('achievement.title')
29+ "
30+ >
2431 <button
2532 class =" grid aspect-square place-items-center overflow-hidden rounded-full"
2633 >
@@ -35,57 +42,48 @@ watch(open, (isOpen) => {
3542 class =" size-full object-cover"
3643 />
3744 </button >
38- <template #content =" { close } " >
39- <PageLayout
40- :title =" achievement.achievedAt ? 'Unlocked!' : 'Achievement'"
41- :shadow =" false"
42- >
43- <template #action >
44- <DesignIconButton icon =" lucide:x" @click =" close" />
45- </template >
46-
47- <div class =" flex h-full flex-col items-center justify-center gap-6" >
48- <div
49- :class =" [
50- 'grid aspect-square size-55 place-items-center overflow-hidden rounded-full',
51- { 'shadow-large': achievement.achievedAt },
52- ]"
53- >
54- <NuxtImg
55- v-if =" achievement.image && achievement.achievedAt != null"
56- :src =" achievement.image"
57- class =" size-full object-cover"
58- />
59- <NuxtImg
60- v-else
61- src =" /images/achievement-placeholder.png"
62- class =" size-full object-cover"
63- />
64- </div >
65- <div
66- class =" flex flex-col items-center gap-1 text-center text-balance"
67- >
68- <h3 class =" text-heading" >
69- {{ achievement.name }}
70- </h3 >
71- <p class =" text-label" >
72- {{ achievement.description }}
73- </p >
74- </div >
75- <div
76- v-if =" achievement.achievedAt"
77- class =" rounded-full bg-background-indent py-2 px-3 text-label text-accent-contrast"
78- >
79- +{{ achievement.points }} {{ $t('points') }}
80- </div >
81- <div
82- v-else-if =" achievement.points"
83- class =" rounded-full bg-background-indent py-2 px-3 text-label text-text-muted"
84- >
85- {{ $t('givesYouXPoints', { points: achievement.points }) }}
86- </div >
45+ <template #content >
46+ <div class =" flex h-full flex-col items-center justify-center gap-6" >
47+ <div
48+ :class =" [
49+ 'grid aspect-square size-55 place-items-center overflow-hidden rounded-full',
50+ { 'shadow-large': achievement.achievedAt },
51+ ]"
52+ >
53+ <NuxtImg
54+ v-if =" achievement.image && achievement.achievedAt != null"
55+ :src =" achievement.image"
56+ class =" size-full object-cover"
57+ />
58+ <NuxtImg
59+ v-else
60+ src =" /images/achievement-placeholder.png"
61+ class =" size-full object-cover"
62+ />
63+ </div >
64+ <div
65+ class =" flex flex-col items-center gap-1 text-center text-balance"
66+ >
67+ <h3 class =" text-heading" >
68+ {{ achievement.name }}
69+ </h3 >
70+ <p class =" text-label" >
71+ {{ achievement.description }}
72+ </p >
73+ </div >
74+ <div
75+ v-if =" achievement.achievedAt"
76+ class =" rounded-full bg-background-indent py-2 px-3 text-label text-accent-contrast"
77+ >
78+ +{{ achievement.points }} {{ $t('points') }}
79+ </div >
80+ <div
81+ v-else-if =" achievement.points"
82+ class =" rounded-full bg-background-indent py-2 px-3 text-label text-text-muted"
83+ >
84+ {{ $t('givesYouXPoints', { points: achievement.points }) }}
8785 </div >
88- </PageLayout >
86+ </div >
8987 </template >
9088 </DesignDrawer >
9189 </div >
0 commit comments