Pikaday plugin screenshot
Dark mode ready
Multilingual support
Supports v5.x

Pikaday

Community

Pikaday date picker field for FilamentPHP — lightweight, dependency-light date input with min/max dates, year range, first-day-of-week, and full i18n.

Tags: Forms Form Editor Field Form Field
Supported versions:
5.x 4.x 3.x
PtPlugins avatar Author: PtPlugins

Package health

Beta

Automated checks of this plugin's Composer package

82 / 100
Security 68
Maintenance 100
Ecosystem 100
15 checks
  • Skipped: GitHub Actions pinned to SHA
  • Skipped: GitLab CI includes pinned to SHA
  • Passed: Open security advisories
  • Passed: Dependabot PR responsiveness — No open Dependabot PRs.
  • Skipped: Renovate MR responsiveness
  • Failed: Dependabot or Renovate configured No dependency updater configuration found. View details on Plumb
  • Skipped: Dependency update cooldown configured
  • Failed: Provides a security policy View details on Plumb
  • Passed: Abandoned or archived — No consulted source marks the package abandoned (packagist, github).
  • Passed: Commit and release recency — Active: last commit 39 days ago; last release 50 days ago.
  • Passed: composer.lock not committed by library composer.lock is absent from the released dist archive.
  • Passed: Dist archive is lean
  • Passed: Current Laravel version supported — Package dependencies resolve together with current Laravel 13.0.
  • Passed: Current PHP version supported — Constraint ^8.1 supports current PHP 8.5.
  • Skipped: Current Symfony version supported
Third-party plugin. This is built by the community, not the Filament team. Filament does not review, endorse, or vet the security of plugins outside the filament/ namespace. Review the source and install at your own risk. Found malware or an unresolved security issue the author won't address? Report it .
Powered by Plumb Last scanned 1 week ago

Documentation

Filament Pikaday — lightweight date picker field for a Filament form

A lightweight Pikaday date picker field for FilamentPHP v3, v4, and v5. No jQuery, no moment.js — just a clean, fast calendar input with full i18n.

Single codebase across all three Filament major versions — same field, same API.

Buy us a beer

🎯 Try it live · ptplugins.com/demo/pikaday — no signup, just open the calendar.

#Why

Filament's built-in date picker is great, but it pulls in a heavier JS footprint. When all you need is a fast, dependency-light calendar — no jQuery, no moment.js — PikadayDatePicker is a drop-in field that just works, with min/max dates, year bounds, first-day-of-week, and locale-aware month/weekday names out of the box.

The calendar ships with light and dark mode styling that follows Filament's theme automatically — no extra setup.

#Installation

composer require ptplugins/filament-pikaday

The package auto-discovers its service provider and registers its assets. No manual registration needed.

#Quick Start

Use the field anywhere you'd use a Filament form field:

use PtPlugins\FilamentPikaday\Fields\PikadayDatePicker;

PikadayDatePicker::make('published_at')
    ->label('Published at')
    ->minDate('2020-01-01')
    ->maxDate(now())
    ->firstDayOfWeek(1)          // 1 = Monday (default), 0 = Sunday
    ->displayFormat('DD/MM/YYYY');

The stored value is normalized to Y-m-d; the visible input follows displayFormat().

#ISO storage, localized display

This is the key difference from most Filament date fields. The value bound to your model is always an ISO Y-m-d string (2026-06-15) — locale-independent, sortable, and safe to cast to date / compare in SQL. The display is localized purely on the front end via displayFormat() and the calendar i18n.

PikadayDatePicker::make('published_at')
    ->displayFormat('DD/MM/YYYY')   // user sees 15/06/2026
    ->locale('hr');                 // calendar in Croatian
// → model / database always stores "2026-06-15"

Why it matters: many date pickers persist whatever the display format is (15/06/2026 vs 06/15/2026), which then breaks parsing, sorting, and cross-locale data the moment two users have different formats. Here the storage format never changes — only what the user sees does. No ambiguity, no per-locale migration headaches, no d/m vs m/d bugs.

#Configuration API

Method Description
minDate($date) Earliest selectable date. Accepts Carbon, a date string, or a closure.
maxDate($date) Latest selectable date. Accepts Carbon, a date string, or a closure.
minYear($year) Lower bound of the year dropdown (default 2024).
maxYear($year) Upper bound of the year dropdown (default current year + 1).
firstDayOfWeek($day) First day of the week — 0 (Sunday) … 6. Default 1 (Monday).
displayFormat($format) Display pattern. Default DD/MM/YYYY (UK style).
locale($locale) Calendar locale for month / weekday names. Defaults to the application locale.
i18n($overrides) Override individual navigation strings or labels (merged over locale defaults).

Prefix / suffix affixes (icons, labels, actions) and a clear button are supported out of the box, just like Filament's native fields.

#Internationalization

Month and weekday names are pulled from Carbon, so every locale Carbon ships works automatically — the picker follows your application locale with English as the default:

PikadayDatePicker::make('starts_on')
    ->locale('hr');   // Croatian month/weekday names

Navigation labels (Previous Month / Next Month) are translatable via the published translations (English + Croatian bundled; other locales fall back to English):

php artisan vendor:publish --tag=filament-pikaday-translations

Need a one-off tweak? Override individual strings without redefining the whole set:

PikadayDatePicker::make('starts_on')
    ->i18n([
        'previousMonth' => 'Prethodni',
        'nextMonth'     => 'Sledeći',
    ]);

#Requirements

  • PHP 8.1+
  • FilamentPHP 3.x, 4.x, or 5.x (single codebase across all three)

#License

MIT

The author

PtPlugins avatar Author: PtPlugins

Professional, well-documented, and battle-tested FilamentPHP plugins that save you weeks of development time.

Crafted with ❤️ by Premke from Premtech agency.

Plugins
5
Stars
12

From the same author