import { useAdminRouting, isSikshyaReactAdminHref } from '../lib/adminRouting'; import { __ } from '../lib/i18n'; import type { ShellAlert } from '../types'; const variantBar: Record = { info: 'border-l-sky-500 bg-sky-50/90 text-sky-950 dark:border-l-sky-400 dark:bg-sky-950/35 dark:text-sky-50', success: 'border-l-emerald-500 bg-emerald-50/90 text-emerald-950 dark:border-l-emerald-400 dark:bg-emerald-950/35 dark:text-emerald-50', warning: 'border-l-amber-500 bg-amber-50/90 text-amber-950 dark:border-l-amber-400 dark:bg-amber-950/35 dark:text-amber-50', error: 'border-l-rose-500 bg-rose-50/90 text-rose-950 dark:border-l-rose-400 dark:bg-rose-950/35 dark:text-rose-50', }; export function ShellAlertStrip({ alerts }: { alerts: ShellAlert[] }) { const { navigateHref } = useAdminRouting(); if (!alerts.length) return null; return (
{alerts.map((a) => (
{/* Single text block avoids a “title only” frame before the body paints. */}

{a.title} {a.message ? ( {a.message} ) : null}

{a.actions?.length ? (
{a.actions.map((act, i) => ( { if (act.external) return; if (!isSikshyaReactAdminHref(act.href)) return; e.preventDefault(); navigateHref(act.href); }} className="text-xs font-semibold underline decoration-current/40 underline-offset-2 hover:decoration-current" > {act.label} ))}
) : null}
))}
); }