mirror of
https://github.com/gpxstudio/gpx.studio.git
synced 2025-12-02 10:02:12 +00:00
46 lines
1.2 KiB
Svelte
46 lines
1.2 KiB
Svelte
<script lang="ts">
|
|
import { Button } from '$lib/components/ui/button';
|
|
import * as Tooltip from '$lib/components/ui/tooltip/index.js';
|
|
import { currentTool, Tool } from '$lib/components/toolbar/tools';
|
|
import type { Snippet } from 'svelte';
|
|
|
|
let {
|
|
itemTool,
|
|
label,
|
|
children,
|
|
}: {
|
|
itemTool: Tool;
|
|
label: string;
|
|
children: Snippet;
|
|
} = $props();
|
|
|
|
function toggleTool() {
|
|
if ($currentTool === itemTool) {
|
|
$currentTool = null;
|
|
} else {
|
|
$currentTool = itemTool;
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<Tooltip.Provider>
|
|
<Tooltip.Root>
|
|
<Tooltip.Trigger>
|
|
{#snippet child({ props })}
|
|
<Button
|
|
{...props}
|
|
variant="ghost"
|
|
class="size-[24px] {$currentTool === itemTool ? 'bg-accent' : ''}"
|
|
onclick={toggleTool}
|
|
aria-label={label}
|
|
>
|
|
{@render children()}
|
|
</Button>
|
|
{/snippet}
|
|
</Tooltip.Trigger>
|
|
<Tooltip.Content side="right">
|
|
<span>{label}</span>
|
|
</Tooltip.Content>
|
|
</Tooltip.Root>
|
|
</Tooltip.Provider>
|