Semantic and custom colors
tone() accepts neutral, inverted, primary, info, success, warning,
or danger. Neutral follows the theme surface; inverted provides the opposite
contrast. Semantic tones use theme/native status colors.
icon(null) omits the icon.
Links and server actions
An announcement can have one labeled URL or one server handler, not both.mailto:, tel:, absolute local paths, query strings
or fragments. Protocol-relative/executable URLs, whitespace/control characters
and backslashes are rejected. Action labels contain 1–120 characters.
Priority and initial selection
priority(10) puts a message ahead of a lower-priority message. Bars sort by
descending priority. initialIndex(0) selects the initial active slide by its
zero-based index; an oversized index is bounded to the available messages.
Choose explicit priorities when ordering must be unambiguous.
Schedules and countdowns
now()->addMinutes(5) on every refresh.
Start is inclusive; end is exclusive. When both dates are given, end must follow
start. Start/end eligibility updates in the active browser without a scheduled
background job.
A countdown reaching zero does not automatically hide its message. Configure
an end schedule if it should disappear. onCountdownEnd() is an optional
browser-triggered server callback, not a guaranteed scheduler. It can run again
after a remount or in another browser. Make business effects idempotent and use
Laravel jobs/scheduling for authoritative deadlines.
Remembered dismissal
The default is
dismissal('bar', 'local'). Keys include panel/user/tenant/locale
scope, bar ID and bar revision. This is browser storage, not a cross-device
acknowledgment system. When storage is unavailable, in-memory operation remains.
A new bar revision resets that bar’s stored dismissal namespace. A new message
revision reintroduces that message in message-dismissal mode; it does not reopen
an already dismissed whole bar.
dismissible(false) on either the bar or message removes its close affordance.
onDismiss() optionally receives a server callback after UI dismissal; failed
callbacks do not turn browser storage into a durable acknowledgment. Your own
backend must record any required acknowledgment and recheck authorization.
Accessible playback
label() names the region. Messages use native links/buttons and labeled slide
groups. Autoplay updates are quiet (aria-live="off"); paused/manual updates use
polite announcements. Countdown text has a separate descriptive label and does
not announce every tick. Native focus outlines remain visible.
pauseOnHover(), pauseOnFocus() and pauseOffscreen() default to true. Reduced
motion suppresses movement and pauses automatic rotation; manual controls remain
available. Hidden tabs pause rotation. Only configure poll() when a server
refresh is needed; ordinary local rotation does not request data per slide.