{# Toast notifications: Sonner, the toaster shadcn/ui ships. Sonner's anatomy is kept -- a column of cards in the bottom-right corner, each led by the icon for its level, with the title and description stacked beside it and a close button parked half outside the top-left corner that only appears on hover. So is the timer pausing while the pointer rests on a toast, which is what makes a four-second message readable. What is not ported is Sonner's collapsed peek-stack: three toasts visible, the ones behind scaled down and offset, expanding on hover. That choreography is for an app raising toasts continuously; this admin only ever shows the handful of flash messages a redirect leaves, so they stack plainly. Flash messages arrive as plain data rather than a JS call, and are relayed into `toast()` through a hidden data-* element, so a message containing quotes can never break out of an interpolated JS string. #} {% from "admin/components/icons.html" import icon %} {% if messages %} {% endif %}