feat: add tooltip to country tag

finxol.io 94135b3a fba52457

verified
Changed files
+52 -7
app
components
+52 -7
app/components/Country.vue
···
<template>
<div v-if="data" class="hidden md:flex flex-row items-center gap-2">
-
<span>
-
Currently in:
-
</span>
-
<div class="flex flex-row items-center gap-2 bg-stone-200/50 dark:bg-stone-700/60 py-1 px-2 rounded-lg">
-
<span>
{{ emoji }}
-
</span>
-
<span>
{{ country }}
</span>
</div>
</div>
</template>
···
<template>
<div v-if="data" class="hidden md:flex flex-row items-center gap-2">
+
<div class="tooltip-target flex flex-row items-center gap-2 bg-stone-200/50 dark:bg-stone-700/60 py-1 px-2 rounded-lg">
+
I'm in
+
<span class="flex flex-row items-center gap-2 font-bold">
{{ emoji }}
{{ country }}
</span>
+
!
+
</div>
+
+
<div class="anchored-tooltip">
+
This gets automatically updated as I move around!
</div>
</div>
</template>
+
+
<style scoped>
+
.tooltip-target:hover + .anchored-tooltip {
+
display: block;
+
}
+
+
.tooltip-target {
+
anchor-name: --infobox;
+
}
+
+
.anchored-tooltip {
+
@apply text-stone-200;
+
+
--bg-color: oklch(0.3272 0.0197 88.15 / 80%);
+
+
display: none;
+
+
position-anchor: --infobox;
+
position: absolute;
+
margin: 0;
+
top: calc(anchor(top) + 3rem);
+
left: calc(anchor(center));
+
transform: translateX(-50%);
+
bottom: anchor(bottom);
+
height: fit-content;
+
width: fit-content;
+
max-width: 15rem;
+
padding: 0.5rem 1rem;
+
text-align: center;
+
background-color: var(--bg-color);
+
border-radius: 0.5rem;
+
+
&::before {
+
content: "";
+
position: absolute;
+
top: -10px;
+
left: 50%;
+
transform: translateX(-50%) rotate(180deg);
+
border-width: 10px 10px 0 10px;
+
border-style: solid;
+
border-color: var(--bg-color) transparent transparent transparent;
+
}
+
}
+
</style>