12 lines
807 B
Svelte
12 lines
807 B
Svelte
<script lang="ts">
|
|
import Button from './primitives/Button.svelte';
|
|
import { toast } from '../toast.js';
|
|
let { value, label = 'ID' }: { value: string; label?: string } = $props();
|
|
async function copy() {
|
|
try { await navigator.clipboard.writeText(value); toast(`${label} copied.`, { variant: 'success' }); }
|
|
catch { toast('Copy unavailable. Select and copy the text directly.', { variant: 'warning' }); }
|
|
}
|
|
</script>
|
|
<div class="copy"><code>{value}</code><Button variant="ghost" size="sm" ariaLabel={`Copy ${label}`} onclick={copy}>Copy</Button></div>
|
|
<style>.copy { display: flex; align-items: center; flex-wrap: wrap; gap: var(--space-2); color: var(--text-secondary); } code { font: var(--text-xs) var(--font-mono); user-select: all; overflow-wrap: anywhere; }</style>
|