import { useEffect, useState } from "react"; import { nanoid } from "nanoid"; import { Prompt, SearchService, usePromptStore } from "@/app/store/prompt"; import { Input as Textarea, Modal } from "@/app/components/ui-lib"; import Locale from "@/app/locales"; import { IconButton } from "@/app/components/button"; import AddIcon from "@/app/icons/add.svg"; import CopyIcon from "@/app/icons/copy.svg"; import ClearIcon from "@/app/icons/clear.svg"; import EditIcon from "@/app/icons/edit.svg"; import EyeIcon from "@/app/icons/eye.svg"; import styles from "./index.module.scss"; import { copyToClipboard } from "@/app/utils"; import Input from "@/app/components/Input"; function EditPromptModal(props: { id: string; onClose: () => void }) { const promptStore = usePromptStore(); const prompt = promptStore.get(props.id); return prompt ? (
, ]} >
promptStore.updatePrompt(props.id, (prompt) => (prompt.title = e)) } >
) : null; } export default function UserPromptModal(props: { onClose?: () => void }) { const promptStore = usePromptStore(); const userPrompts = promptStore.getUserPrompts(); const builtinPrompts = SearchService.builtinPrompts; const allPrompts = userPrompts.concat(builtinPrompts); const [searchInput, setSearchInput] = useState(""); const [searchPrompts, setSearchPrompts] = useState([]); const prompts = searchInput.length > 0 ? searchPrompts : allPrompts; const [editingPromptId, setEditingPromptId] = useState(); useEffect(() => { if (searchInput.length > 0) { const searchResult = SearchService.search(searchInput); setSearchPrompts(searchResult); } else { setSearchPrompts([]); } }, [searchInput]); return (
props.onClose?.()} actions={[ { const promptId = promptStore.add({ id: nanoid(), createdAt: Date.now(), title: "Empty Prompt", content: "Empty Prompt Content", }); setEditingPromptId(promptId); }} icon={} bordered text={Locale.Settings.Prompt.Modal.Add} />, ]} >
setSearchInput(e)} >
{prompts.map((v, _) => (
{v.title}
{v.content}
{v.isUser && ( } className={styles["user-prompt-button"]} onClick={() => promptStore.remove(v.id!)} /> )} {v.isUser ? ( } className={styles["user-prompt-button"]} onClick={() => setEditingPromptId(v.id)} /> ) : ( } className={styles["user-prompt-button"]} onClick={() => setEditingPromptId(v.id)} /> )} } className={styles["user-prompt-button"]} onClick={() => copyToClipboard(v.content)} />
))}
{editingPromptId !== undefined && ( setEditingPromptId(undefined)} /> )}
); }