- What is guava/calendar and what is it actually used for?
- guava/calendar is a Laravel package for calendar UIs, and in practice it is a Filament plugin that renders @event-calendar/core (vkurko) as a Livewire widget configured entirely in PHP. You define view types, event sources and context-menu actions on a widget class, roughly one class per calendar surface. It is strictly a presentation layer, so it fits admin dashboards, appointment lists, shift planning and team-calendar views, but it is not a scheduling engine.
- How do I install guava/calendar in a Laravel app?
- Install with composer require guava/calendar, register the plugin in your Filament panel provider, and create a widget class for each calendar surface. The one hard prerequisite is a working asset pipeline: as of 3.2.2 the calendar JavaScript is bundled from npm and must flow through npm run build and your CSP, so prove that in a spike before committing to an estimate. First render is roughly half a day for a Laravel developer, and a production read-only, authorization-aware month view is one to two days. The workbench Filament panel added in 3.2.2 is the most trustworthy reference implementation.
- Does guava/calendar work in plain Laravel or Blade without Filament?
- The underlying core is described as framework-agnostic, but the Filament and Livewire integration is effectively the product. Without Filament you would be wrapping the underlying JavaScript calendar library directly, which means you lose most of what the package gives you. If your target surface is not an internal Filament admin panel, the fit is close to zero and a bespoke build is usually the better call.
- Which Laravel and Filament versions does guava/calendar support?
- The package tracks Filament actively, but its supported Filament range is not loudly documented, so check the actual composer constraint in the installed version instead of assuming. Pin your Filament major explicitly so a caret constraint cannot silently cross a major upgrade and cause an outage. Beyond that it is a standard Laravel, Livewire and Blade stack with no front-end framework commitment.
- Does guava/calendar handle recurring events, conflict detection and timezones?
- No. The package is strictly a presentation layer for rendering and interacting with calendars. Recurrence expansion with exceptions, availability rules, conflict detection, timezone-correct booking and write-side concurrency are all explicitly yours to build and own, with their own separate estimate. Stakeholders who hear the word calendar often assume a full booking engine, so set that expectation early.
- How do I load events into a guava/calendar widget?
- You implement an event-source method on the widget class that returns the events to render, so the package never owns persistence or querying. Models, scopes, date-range filtering and authorization stay in your application code, and Carbon instances work fine for dates. Context payloads round-trip through Livewire, so treat them as untrusted request parameters and re-validate on the server rather than using them as a source of truth.
- How do I customize calendar views and context-menu actions in guava/calendar?
- Configuration lives in PHP on the widget: view types via the enum, event sources, and the context-menu action list. The architecture is extensible, so you can add custom views and event types without writing your own JavaScript calendar layer. Note that since 3.2.2 context-menu lookups are scoped to the owning widget, which is the correct behavior but can change how code written for 3.2.1 or earlier behaves.
- Can I render multiple calendars on one page with independent actions?
- Yes, use one widget class per calendar surface, and since 3.2.2 context-menu resolution is scoped to the owning widget so each calendar can expose its own action list. Per-widget authorization is still your responsibility inside the event-source and action code, because the package does not model ownership for you. If multi-calendar pages matter to you, verify the interaction pattern explicitly rather than inferring it from the README.
- Is guava/calendar production-ready, and how is it maintained?
- It is a reasonable bet for an internal admin panel and a risky one for customer-facing or revenue-bearing surfaces. The package is MIT licensed with around 315 stars, zero declared dependents, a single-maintainer footprint, no commercial backing and no SLA, so upgrade paths have not been widely stress-tested by other teams. Write tests around your event sources and actions, name an internal owner, pin versions, and treat a soft fork as acceptable if upstream stalls.
- What should I check before upgrading guava/calendar to a new version?
- Do not treat semver as a reliable proxy for operational impact here: 3.2.2 moved asset delivery from a CDN to npm-bundled assets inside a patch release, which silently blanks the calendar for anyone with a CDN CSP allowlist or custom asset loading. Before upgrading, re-verify your Vite and CI pipeline, your CSP rules, and any behavior changes such as widget-scoped context menus. Pin the exact version and read the diff rather than trusting the release number.