Some checks failed
Test and deploy staging / staging (push) Failing after 43s
Run the sveltekit-3 migration and finish its manual tasks:
- Move kit config into the sveltekit() Vite plugin; drop svelte.config.js
- Replace $lib with #lib subpath imports
- Declare env vars in src/env.ts and import them from $app/env/{private,public}
- Consolidate param matchers into src/params.ts
- Use error(status, message), Response.json, refreshAll and goto reset/shallow
- Fall back to a full page load when goto rejects a login return path
Switch from adapter-node to adapter-bun: the build script runs Vite under
Bun (the adapter requires it) and the image starts with `bun ./build`.
Runtime env names (PORT, BODY_SIZE_LIMIT, ADDRESS_HEADER, ...) are unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
49 lines
1.0 KiB
Svelte
49 lines
1.0 KiB
Svelte
<script lang="ts">
|
|
import type { Component } from 'svelte';
|
|
import { Button } from '#lib/components/ui/button/index.js';
|
|
|
|
let {
|
|
icon: Icon,
|
|
label,
|
|
value
|
|
}: {
|
|
icon: Component;
|
|
label: string;
|
|
value: string;
|
|
} = $props();
|
|
|
|
let copied = $state(false);
|
|
|
|
async function copy(): Promise<void> {
|
|
try {
|
|
await navigator.clipboard.writeText(value);
|
|
copied = true;
|
|
} catch {
|
|
// clipboard blocked
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<div
|
|
class="group relative"
|
|
role="group"
|
|
onmouseleave={(): void => {
|
|
copied = false;
|
|
}}
|
|
>
|
|
<Button variant="ghost" size="icon-lg" onclick={copy} aria-label={`Copy ${label}: ${value}`}>
|
|
<Icon class="size-6" />
|
|
</Button>
|
|
|
|
<span
|
|
role="tooltip"
|
|
class="pointer-events-none absolute top-full left-1/2 mt-2 -translate-x-1/2
|
|
rounded bg-neutral-800 px-2 py-1 text-xs whitespace-nowrap text-white
|
|
opacity-0 transition group-hover:opacity-100"
|
|
>
|
|
{copied ? 'Copied!' : value}
|
|
</span>
|
|
</div>
|
|
|
|
<div aria-live="polite" class="sr-only">{copied ? `${label} copied` : ''}</div>
|