Make category tooltips track cursor

This commit is contained in:
Codex Agent
2026-03-09 18:40:22 +00:00
parent 66d02c7f14
commit 6af3b23987
2 changed files with 23 additions and 2 deletions

View File

@@ -675,6 +675,7 @@ a:focus-visible {
.calc-list-item {
display: block;
position: relative;
--calc-tooltip-left: 50%;
padding: 1rem 1.25rem;
background: var(--card-bg);
border: 1px solid var(--border);
@@ -699,7 +700,7 @@ a:focus-visible {
.calc-list-tooltip {
position: absolute;
bottom: calc(100% + 0.4rem);
left: 50%;
left: var(--calc-tooltip-left, 50%);
background: var(--section-bg);
color: var(--text);
border: 1px solid var(--border);

View File

@@ -3,6 +3,20 @@
import { buildSeoMeta, canonicalUrl, SITE_NAME, SITE_URL, toJsonLd } from '$lib/seo';
import { getConversionRateText } from '$lib/utils/conversionRate';
const handleCalcTooltipMousemove = (event: MouseEvent) => {
const card = event.currentTarget as HTMLElement | null;
if (!card) return;
const rect = card.getBoundingClientRect();
const x = Math.min(Math.max(event.clientX - rect.left, 0), rect.width);
card.style.setProperty('--calc-tooltip-left', `${x}px`);
};
const resetCalcTooltipPosition = (event: MouseEvent) => {
const card = event.currentTarget as HTMLElement | null;
if (!card) return;
card.style.removeProperty('--calc-tooltip-left');
};
export let data: PageData;
$: pageTitle = `${data.label} Converters — ${SITE_NAME}`;
@@ -87,7 +101,13 @@
<div class="calc-list">
{#each data.calculators as calc}
{@const conversionRateText = getConversionRateText(calc)}
<a href="/{calc.slug}" class="calc-list-item">
<a
href="/{calc.slug}"
class="calc-list-item"
on:mousemove={handleCalcTooltipMousemove}
on:mouseleave={resetCalcTooltipPosition}
on:focus={resetCalcTooltipPosition}
>
{calc.name}
{#if conversionRateText}
<span class="calc-list-tooltip" role="tooltip">{conversionRateText}</span>