Skip to content
BigBang

Popular

    ↑↓Navigate↵OpenEscClose
    TR

    Components

    DatePicker

    A date field typed into day, month and year segments or picked from a calendar popup.

    Storybook
    Storybook
    Source
    Source

    The example below loads live from Storybook; open it there to use the controls.

    Live example, StorybookOpen in Storybook

    Segments follow the Provider language order (dd/mm/yyyy in English). The calendar button opens a month grid popup.

    DDMMYYYY

    Type the day, month and year, or pick from the calendar.

    import { DatePicker, Provider } from '@bigbang/ui';
    export default function Default() {
    return (
    <Provider locale="en-GB">
    <DatePicker label="Date" description="Type the day, month and year, or pick from the calendar." className="max-w-xs" />
    </Provider>
    );
    }

    Filled, required with an error, out of range (built-in message), read-only and disabled.

    28102026
    DDMMYYYY
    Choose a date.
    05012026
    Choose a date on or after 1 February 2026
    28102026
    28102026
    import { DatePicker, Provider, parseDate } from '@bigbang/ui';
    export default function States() {
    return (
    <Provider locale="en-GB">
    <div className="flex max-w-xs flex-col gap-lg">
    <DatePicker label="Date" defaultValue={parseDate('2026-10-28')} />
    <DatePicker label="Date" error="Choose a date." required />
    <DatePicker label="Date" defaultValue={parseDate('2026-01-05')} min={parseDate('2026-02-01')} />
    <DatePicker label="Date" defaultValue={parseDate('2026-10-28')} readOnly />
    <DatePicker label="Date" defaultValue={parseDate('2026-10-28')} disabled />
    </div>
    </Provider>
    );
    }

    The value is a CalendarDate or null; the form receives YYYY-MM-DD.

    28102026
    2026-10-28
    import { DatePicker, Provider, parseDate, type CalendarDate } from '@bigbang/ui';
    import { useState } from 'react';
    export default function Controlled() {
    const [value, setValue] = useState<CalendarDate | null>(() => parseDate('2026-10-28'));
    return (
    <Provider locale="en-GB">
    <div className="flex max-w-xs flex-col gap-sm">
    <DatePicker label="Date" value={value} onValueChange={setValue} max={parseDate('2026-12-31')} />
    <output className="type-body-sm text-fg-subtle tabular-nums">{value?.toString() ?? '—'}</output>
    </div>
    </Provider>
    );
    }

    The focused segment takes the primary fill.

    28102026
    DDMMYYYY
    Choose a date.
    05012026
    Choose a date on or after 1 February 2026
    28102026
    28102026
    28102026
    DDMMYYYY
    Choose a date.
    05012026
    Choose a date on or after 1 February 2026
    28102026
    28102026
    import { DatePicker, Provider, parseDate } from '@bigbang/ui';
    export default function States() {
    return (
    <Provider locale="en-GB">
    <div className="flex max-w-xs flex-col gap-lg">
    <DatePicker label="Date" defaultValue={parseDate('2026-10-28')} />
    <DatePicker label="Date" error="Choose a date." required />
    <DatePicker label="Date" defaultValue={parseDate('2026-01-05')} min={parseDate('2026-02-01')} />
    <DatePicker label="Date" defaultValue={parseDate('2026-10-28')} readOnly />
    <DatePicker label="Date" defaultValue={parseDate('2026-10-28')} disabled />
    </div>
    </Provider>
    );
    }