mirror of
https://seed.radicle.dev/rad:z4V1sjrXqjvFdnCUbxPFqd5p4DtH5.git
synced 2026-11-03 18:50:30 +08:00
46 lines
880 B
Svelte
46 lines
880 B
Svelte
<script lang="ts">
|
|
import type { Snippet } from "svelte";
|
|
|
|
import Clipboard from "@app/components/Clipboard.svelte";
|
|
|
|
const {
|
|
inline = false,
|
|
children,
|
|
id,
|
|
}: { inline?: boolean; children?: Snippet; id: string } = $props();
|
|
|
|
let clipboard: Clipboard;
|
|
</script>
|
|
|
|
<style>
|
|
.copyable-id {
|
|
cursor: pointer;
|
|
color: var(--color-foreground-dim);
|
|
gap: 0.25rem;
|
|
}
|
|
|
|
.copyable-id:hover {
|
|
color: var(--color-foreground-contrast);
|
|
}
|
|
.inline {
|
|
display: inline-flex;
|
|
gap: 0;
|
|
white-space: nowrap;
|
|
}
|
|
</style>
|
|
|
|
<!-- svelte-ignore a11y_click_events_have_key_events -->
|
|
<div
|
|
role="button"
|
|
tabindex="0"
|
|
onclick={() => clipboard.copy()}
|
|
class:inline
|
|
class="copyable-id global-flex txt-small txt-monospace">
|
|
{#if children}
|
|
{@render children()}
|
|
{:else}
|
|
{id}
|
|
{/if}
|
|
<Clipboard bind:this={clipboard} text={id} />
|
|
</div>
|