Skip to main content

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.
Custom colors require six-digit HEX. If foreground is omitted, the package chooses black or white from the background luminance. Light and dark pairs are independent; define both when both modes need an explicit palette. An omitted pair uses the bar’s theme/tone fallback. Per-message colors do not rewrite the panel’s semantic palette. icon(null) omits the icon. An announcement can have one labeled URL or one server handler, not both.
Deferred URLs and callbacks can receive the current announcement through Laravel container invocation:
The component re-resolves a currently visible and scheduled message before a server callback. Your callback must still authorize its business operation. Visibility alone does not authorize writes. Server action failures show the action-error feedback and emit an error event. URL schemes can be HTTP(S), 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

Use a stable application deadline, not 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.