From 78f856e2049991441a3469230ae52799cb86954e Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Fri, 23 Jan 2026 16:40:11 +0400 Subject: [PATCH] enh: quick prompt copy --- src/lib/components/workspace/Prompts.svelte | 32 ++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/src/lib/components/workspace/Prompts.svelte b/src/lib/components/workspace/Prompts.svelte index c95dd1dba..4a4d1b55a 100644 --- a/src/lib/components/workspace/Prompts.svelte +++ b/src/lib/components/workspace/Prompts.svelte @@ -13,10 +13,12 @@ getPrompts, getPromptList } from '$lib/apis/prompts'; - import { capitalizeFirstLetter, slugify } from '$lib/utils'; + import { capitalizeFirstLetter, slugify, copyToClipboard } from '$lib/utils'; import PromptMenu from './Prompts/PromptMenu.svelte'; import EllipsisHorizontal from '../icons/EllipsisHorizontal.svelte'; + import Clipboard from '../icons/Clipboard.svelte'; + import Check from '../icons/Check.svelte'; import DeleteConfirmDialog from '$lib/components/common/ConfirmDialog.svelte'; import Search from '../icons/Search.svelte'; import Plus from '../icons/Plus.svelte'; @@ -44,6 +46,7 @@ let tagsContainerElement: HTMLDivElement; let viewOption = ''; + let copiedId: string | null = null; let filteredItems = []; @@ -105,6 +108,16 @@ saveAs(blob, `prompt-export-${Date.now()}.json`); }; + const copyHandler = async (prompt) => { + const res = await copyToClipboard(prompt.content); + if (res) { + copiedId = prompt.command; + setTimeout(() => { + copiedId = null; + }, 2000); + } + }; + const deleteHandler = async (prompt) => { const command = prompt.command; @@ -370,6 +383,23 @@ {:else} + + + { shareHandler(prompt);