Summary
Searchable IANA timezone picker with a Gravity UI clock icon on the trigger and in menu rows. Stores a single timezone identifier string. Display labels are city, country (Warsaw, Poland / Warszawa, Polska), not generic names like “Poland Time”.
Basic usage
Standard timezone picker
Browser-aware detection
State & validation
Stored value
State is a single IANA identifier string — never the display label.Warsaw, Poland / Warszawa, Polska) plus a UTC offset badge (UTC+02:00). Generic names like “Poland Time” are not used.
Validation rules
Built-in validation ensures the submitted identifier is in the resolved timezone list.Configuration API
All methods acceptClosure unless noted.
timezones() / exceptTimezones()
Limit the list to specific regions or exclude problematic zones:
UTC stays in the default IANA list (servers, logs, APIs). It is optional, not required:
browserTimezoneDefault()
When enabled and state is empty, it attempts to detect the user’s timezone via Alpine/JS.
locale()
City and country labels follow app()->getLocale() by default (Warsaw, Poland / Warszawa, Polska). Pin a language per field, independently of the panel locale:
lang/{locale}/timezones.php (publish the package lang files). Keys use __ instead of /:
Europe/Warsaw), never the translated label.
Real-world examples
User profile settings
Event scheduler
Playground
/admin/flex-fields-playground/timezone-field
See Playground for setup.
Related components
CSS classes (reference)
Performance
Payload vs SSR trade-offs
Prefer
timezones([...]) when a form only needs a handful of zones so the shared full catalog is never queued. Prefer the default registry path when you need the full IANA list — one catalog for every TimezoneField on the page beats N copies inside x-data.
Ops notes
Timezone search shares the Select-family Livewire search rate limit (filament-flex-fields.select.search_rate_limit_per_minute). Keys use the authenticated user id or Request::ip() — configure Laravel TrustedProxies when the app sits behind a reverse proxy so client IPs are not taken from spoofable forwarded headers.