diff --git a/dashboard/app/dashboard/layout.tsx b/dashboard/app/dashboard/layout.tsx index 0416274..d8c4bc7 100644 --- a/dashboard/app/dashboard/layout.tsx +++ b/dashboard/app/dashboard/layout.tsx @@ -17,6 +17,16 @@ export default async function DashboardLayout({
{children}
+ ); } diff --git a/dashboard/app/dashboard/reports/api-key-modal.tsx b/dashboard/app/dashboard/reports/api-key-modal.tsx index e50be5d..9025204 100644 --- a/dashboard/app/dashboard/reports/api-key-modal.tsx +++ b/dashboard/app/dashboard/reports/api-key-modal.tsx @@ -18,6 +18,9 @@ export function ApiKeyModal({ open, status, onClose, onSaved }: Props) { const [busy, setBusy] = useState(false); const [error, setError] = useState(null); + const trimmed = value.trim(); + const keyFormatOk = trimmed.startsWith("gsk_") && trimmed.length >= 20; + useEffect(() => { const onKey = (e: KeyboardEvent) => { if (e.key === "Escape") onClose(); }; window.addEventListener("keydown", onKey); @@ -105,7 +108,9 @@ export function ApiKeyModal({ open, status, onClose, onSaved }: Props) { className="mb-2 w-full rounded border border-border bg-bg px-2 py-1.5 text-xs text-text outline-none transition-colors focus:border-purple disabled:opacity-50" /> - {error ? ( + {trimmed.length > 0 && !trimmed.startsWith("gsk_") ? ( +

Key must start with gsk_

+ ) : error ? (

{error}

) : null} @@ -135,7 +140,7 @@ export function ApiKeyModal({ open, status, onClose, onSaved }: Props) {