docs: share add copy button to messages in web interface (#902)

Co-authored-by: Jay <air@live.ca>
This commit is contained in:
John Henry Rudden
2025-07-15 16:56:33 -05:00
committed by GitHub
parent 1af103d29e
commit 7c91f668d1
5 changed files with 89 additions and 0 deletions

View File

@@ -0,0 +1,35 @@
import { createSignal } from "solid-js"
import { IconClipboard, IconCheckCircle } from "../icons"
import styles from "./copy-button.module.css"
interface CopyButtonProps {
text: string
}
export function CopyButton(props: CopyButtonProps) {
const [copied, setCopied] = createSignal(false)
function handleCopyClick() {
if (props.text) {
navigator.clipboard.writeText(props.text).catch((err) => console.error("Copy failed", err))
setCopied(true)
setTimeout(() => setCopied(false), 2000)
}
}
return (
<div class={styles.copyButtonWrapper}>
<button
type="button"
class={styles.copyButton}
onClick={handleCopyClick}
data-copied={copied() ? true : undefined}
title="Copy content"
>
{copied() ? <IconCheckCircle width={16} height={16} /> : <IconClipboard width={16} height={16} />}
</button>
{copied() && <span class={styles.copyTooltip}>Copied!</span>}
</div>
)
}