Files
gpx.studio/website/src/lib/components/Shortcut.svelte

44 lines
912 B
Svelte
Raw Normal View History

2024-04-29 17:03:23 +02:00
<script lang="ts">
import { isMac, isSafari } from '$lib/utils';
import { onMount } from 'svelte';
2025-06-21 21:07:36 +02:00
import { i18n } from '$lib/i18n.svelte';
2025-10-18 18:51:11 +02:00
import * as Kbd from '$lib/components/ui/kbd/index.js';
2024-04-29 17:03:23 +02:00
2025-10-18 18:51:11 +02:00
let {
key = undefined,
shift = false,
ctrl = false,
click = false,
class: className = '',
}: {
key?: string;
shift?: boolean;
ctrl?: boolean;
click?: boolean;
class?: string;
} = $props();
2024-04-29 17:03:23 +02:00
2025-10-18 18:51:11 +02:00
let mac = $state(false);
let safari = $state(false);
2024-04-29 17:03:23 +02:00
onMount(() => {
mac = isMac();
safari = isSafari();
});
2024-04-29 17:03:23 +02:00
</script>
2025-10-18 18:51:11 +02:00
<Kbd.Root class="ml-auto {className}">
{#if shift}
2025-10-18 18:51:11 +02:00
{/if}
{#if ctrl}
2025-10-18 18:51:11 +02:00
{mac && !safari ? '⌘' : i18n._('menu.ctrl')}
{/if}
{#if key}
2025-10-18 18:51:11 +02:00
{key}
{/if}
{#if click}
2025-10-18 18:51:11 +02:00
{i18n._('menu.click')}
{/if}
2025-10-18 18:51:11 +02:00
</Kbd.Root>