mirror of
https://github.com/LukeHagar/website.git
synced 2025-12-07 21:07:44 +00:00
62 lines
2.0 KiB
Svelte
62 lines
2.0 KiB
Svelte
<script lang="ts" module>
|
|
import { classNames } from '$lib/utils/classnames';
|
|
import { writable } from 'svelte/store';
|
|
|
|
export const tooltipData = writable<{
|
|
city: string | null;
|
|
code: string | null;
|
|
available: boolean | null;
|
|
}>({
|
|
city: null,
|
|
code: null,
|
|
available: null
|
|
});
|
|
</script>
|
|
|
|
<script lang="ts">
|
|
type Props = {
|
|
coords: {
|
|
x: number;
|
|
y: number;
|
|
};
|
|
|
|
theme: 'light' | 'dark'
|
|
};
|
|
|
|
const { coords, theme = 'dark' }: Props = $props();
|
|
</script>
|
|
|
|
{#if $tooltipData.city}
|
|
<div
|
|
class="pointer-events-none absolute"
|
|
style:left="{coords.x - 50}px"
|
|
style:top="{coords.y - 50}px"
|
|
>
|
|
<div
|
|
class={classNames(
|
|
'border-gradient relative z-100 flex w-[190px] flex-col gap-2 rounded-[10px] p-2 backdrop-blur-lg before:rounded-[10px] after:rounded-[10px]',
|
|
'data-[state="closed"]:animate-menu-out data-[state="instant-open"]:animate-menu-in data-[state="delayed-open"]:animate-menu-in',
|
|
theme === 'dark' ? 'bg-card/90' : 'bg[var(--card, rgba(255,255,255))]'
|
|
)}
|
|
>
|
|
<span class="text-primary text-caption w-fit">
|
|
{$tooltipData.city}
|
|
({$tooltipData.code})
|
|
</span>
|
|
{#if $tooltipData.available}
|
|
<div
|
|
class="text-caption flex h-5 items-center justify-center place-self-start rounded-md bg-[#10B981]/24 p-1 text-center text-[#B4F8E2]"
|
|
>
|
|
<span class="text-micro -tracking-tight">Available now</span>
|
|
</div>
|
|
{:else}
|
|
<div
|
|
class="text-caption flex h-5 items-center justify-center place-self-start rounded-md bg-white/6 p-1 text-center text-white/60"
|
|
>
|
|
<span class="text-micro -tracking-tight">Planned</span>
|
|
</div>
|
|
{/if}
|
|
</div>
|
|
</div>
|
|
{/if}
|