awcodes/shout
Shout is a simple inline contextual notice component for Filament forms and infolists—essentially a fancy placeholder. Add it to any schema() method and customize the content, colors, icons, and icon sizes. Install via Composer, then add the vendor views to your theme CSS. Supports Filament 4.x and...
Architecture fit
Awcodes\Shout\Components\Shout), not a persistent field. It is dropped into the schema() array of forms and infolists alongside TextInput or Section. No domain model change, no migrations, no routes, no service container bindings we must configure, no queue or event surface. Server-side footprint is one Blade view plus a thin PHP class — the lowest-blast-radius category of dependency.heading(), content(), color() (Filament Color object or hex), icon()/iconSize()/icon(false), and actions() accepting real Filament Action objects. That last one matters — the notice can carry a CTA, which means it can host deprecation warnings with an "upgrade" link, compliance copy next to a PII field, or trial-expiry prompts with a "manage billing" action, in context rather than as a global banner.Placeholder/custom view plus ~20 lines of Blad. The adoption case is consistency (one notice style across all panels), dark-mode correctness handled upstream, and zero maintenance of that partial — not functionality we cannot otherwise get.Integration feasibility
composer require awcodes/shout, then include the component. The real gate is theming: the README requires a custom Filament theme and an @source '../../../../vendor/awcodes/shout/resources/**/*.blade.php' line in the theme CSS (Tailwind v4 CSS-first syntax). If our panels rely on Filament's precompiled default CSS, notices will render unstyled until we stand up a custom theme build. That is the single largest integration precondition and should be scoped as such.Technical risk
Key questions
awcodes/focus ^1.0 (mentioned in the v4.1.1 changelog) a runtime dependency or docs/tooling only? Confirm the resolved dependency tree before approval — an unexpected runtime dependency on a second single-maintainer package changes the risk profile.^4.0 (Filament 4 & 5) rather than ^3.0 (Filament 4 only)? Pin 4.x.Stack fit — Laravel/PHP application with Filament v4 or v5 panels and a Tailwind v4 theme pipeline. Zero fit for a non-Filament surface; do not consider it for customer-facing notices.
Migration path — None required; the change is purely additive. Install, add the @source directive, rebuild assets, drop Shout into a schema. Backout is removing the @source line and the imports — no persisted state, no schema to unwind, no data to backfill.
Compatibility — The matrix is explicit and cleanly versioned: Shout 1.x↔Filament 2, 2.x↔3, 3.x↔4, 4.x↔4 & 5. Verify the PHP constraint in composer.json against our floor (not stated in the README) during the spike. Pin exactly one line in composer.json and let Dependabot surface majors rather than floating.
Sequencing
@source line, rebuild the theme, render one Shout on a low-traffic form. Verify light and dark mode explicitly — dark mode is where the recent fixes landed.Notices::warning(...) returning the configured Shout) so usage sites never import the vendor class. This is the single step that keeps exit cost at approximately one day.Action.Maintenance — Small code surface, but two recurring obligations: the theme CSS must recompile in CI whenever this or Filament is bumped, and someone must review the package at each Filament major. Track record on the latter is good (v3 for Filament 4, v4 for Filament 5, majors shipped promptly), which is the signal that actually matters for a version-coupled UI package. Expect ~1–2 hours per Filament major plus the CI build cost.
Support — No commercial support, no SLA; GitHub issues only. Acceptable for a cosmetic component precisely because the escalation path is cheap: fork under MIT, or swap in an in-house partial. Do not adopt it for anything where a styling defect becomes a compliance incident without a fallback — and if compliance copy lives in a Shout, keep the copy in a config/translation file the app owns.
Scaling — Not a scaling concern in any meaningful sense. Blade render only, no queries, no JS, no queued work, no external calls. Cost is proportional to admin page renders and is negligible against any realistic panel traffic. It will never be the bottleneck.
Failure modes
@source glob after a theme restructure, or a CI build that skips the recompile, leaving raw markup in a form. Detect with a visual smoke check on one admin page post-deploy; this is the most likely real-world incident.Ramp-up — Effectively zero engineering ramp; the public API is five fluent methods and the README is complete. The real ramp cost is design, not code: agreeing the semantic type system and palette before rollout. Budget that conversation, or you will get per-developer color choices that undermine the consistency argument that justified the dependency in the first place.
How can I help you explore Laravel packages today?