feat: prompts admin-only, add isOpen field to Prompt model

This commit is contained in:
AyrisAI
2026-07-23 17:45:59 +03:00
parent 29bbac3c39
commit 0ef8af2525
5 changed files with 34 additions and 183 deletions
+24
View File
@@ -133,6 +133,7 @@ export default function AdminPage() {
const [promptDesc, setPromptDesc] = useState('');
const [promptContent, setPromptContent] = useState('');
const [promptTagsText, setPromptTagsText] = useState('Next.js, System Prompt');
const [promptIsOpen, setPromptIsOpen] = useState(false);
const [savingPrompt, setSavingPrompt] = useState(false);
// Lesson Form Modal State (Create or Edit)
@@ -386,6 +387,7 @@ export default function AdminPage() {
description: promptDesc,
content: promptContent,
tags,
isOpen: promptIsOpen,
});
} else {
res = await createPrompt({
@@ -394,6 +396,7 @@ export default function AdminPage() {
description: promptDesc,
content: promptContent,
tags,
isOpen: promptIsOpen,
});
}
@@ -1295,6 +1298,27 @@ export default function AdminPage() {
/>
</div>
{/* isOpen Toggle */}
<div className="flex items-center justify-between p-3 rounded-xl bg-slate-950 border border-slate-800">
<div>
<p className="text-xs font-bold text-slate-300">Open (Public Access)</p>
<p className="text-[10px] text-slate-500 mt-0.5">When enabled, this prompt can be made publicly available</p>
</div>
<button
type="button"
onClick={() => setPromptIsOpen((v) => !v)}
className={`relative inline-flex h-6 w-11 items-center rounded-full transition-colors focus:outline-none ${
promptIsOpen ? 'bg-emerald-500' : 'bg-slate-700'
}`}
>
<span
className={`inline-block h-4 w-4 transform rounded-full bg-white shadow transition-transform ${
promptIsOpen ? 'translate-x-6' : 'translate-x-1'
}`}
/>
</button>
</div>
<div className="flex justify-end gap-3 pt-4 border-t border-slate-800">
<button
type="button"