async function renderPrompts() {
const content = document.getElementById('pageContent');
content.innerHTML = `
`;
try {
const prompts = await api.getPrompts();
const entries = Object.entries(prompts);
const grid = document.getElementById('promptGrid');
if (entries.length === 0) {
grid.innerHTML = '';
return;
}
grid.innerHTML = entries.map(([name, content]) => {
const displayName = name.replace(/-/g, ' ').replace(/\b\w/g, c => c.toUpperCase());
const preview = content.slice(0, 180);
const lines = content.split('\n').length;
return `
${escapeHtml(preview)}${preview.length >= 180 ? '...' : ''}
`;
}).join('');
} catch (err) {
document.getElementById('promptGrid').innerHTML = `⚠
${escapeHtml(err.message)}
`;
}
}
async function viewPrompt(name) {
let content = '';
try {
const prompts = await api.getPrompts();
content = prompts[name] || '';
} catch {}
const displayName = name.replace(/-/g, ' ').replace(/\b\w/g, c => c.toUpperCase());
// Store raw content for clipboard copy (avoids HTML entity encoding issue)
window._promptCopyContent = content;
showModal(`Prompt: ${displayName}`, `
${escapeHtml(content)}
`, `
`);
}
function copyPromptFromModal() {
const text = window._promptCopyContent || '';
navigator.clipboard.writeText(text).then(() => {
showToast('Copied to clipboard', 'success');
}).catch(() => {
showToast('Failed to copy', 'error');
});
}