packages/palette-mantine-dates/palette.tsx (607 lines of code) (raw):
import React, { useRef, useState } from "react";
import {
Category,
Component,
Variant,
Palette,
} from "@react-buddy/ide-toolbox";
import {
Calendar,
DateInput,
DatePicker,
DatePickerInput,
DatesProvider,
DateTimePicker,
MonthPicker,
MonthPickerInput,
TimeInput,
YearPicker,
YearPickerInput
} from "@mantine/dates";
import { ActionIcon, CheckIcon, Indicator } from "@mantine/core";
export default () => (
<Palette embeddable>
<Category name="dates">
<Component name="DatesProvider" docURL="https://mantine.dev/dates/dates-provider/">
<Variant>
<DatesProvider settings={{ locale: 'ru', firstDayOfWeek: 0, weekendDays: [0] }}>
{/* if you want to use for example locale ru you need to place at the beginning of the file "import 'dayjs/locale/ru';" */}
</DatesProvider>
</Variant>
</Component>
<Component name="Calendar" docURL="https://mantine.dev/dates/calendar/">
<Variant>
<Calendar />
</Variant>
</Component>
<Component name="DateInput" docURL="https://mantine.dev/dates/date-input/">
<Variant proto={DateInputProto} />
<Variant name="filled">
<DateInput
label="Date input"
placeholder="Date input"
variant="filled"
/>
</Variant>
<Variant name="unstyled">
<DateInput
label="Date input"
placeholder="Date input"
variant="unstyled"
/>
</Variant>
<Variant name="allowDeselect">
<DateInput
allowDeselect
label="Date input"
placeholder="Date input"
/>
</Variant>
<Variant name="disabled">
<DateInput
placeholder="Current date"
label="Current date"
disabled
/>
</Variant>
<Variant name="min and max">
<DateInput
placeholder="Current date"
label="Current date"
minDate={new Date(2023, 1, 1)}
maxDate={new Date(2023, 8, 1)}
/>
</Variant>
<Variant name="with format">
<DateInput
valueFormat="DD/MM/YYYY HH:mm:ss"
label="Date input"
placeholder="Date input"
/>
</Variant>
<Variant name="with error">
<DateInput
placeholder="Current date"
label="Current date"
error="Error message"
/>
</Variant>
</Component>
<Component name="DatePicker" docURL="https://mantine.dev/dates/date-picker/">
<Variant proto={DatePickerProto} />
<Variant name="allowDeselect">
<DatePicker allowDeselect />
</Variant>
<Variant name="multiple">
<DatePicker type="multiple" />
</Variant>
<Variant name="range">
<DatePicker type="range" allowSingleDateInRange />
</Variant>
<Variant name="decade">
<DatePicker defaultLevel="decade" />
</Variant>
<Variant name="year">
<DatePicker defaultLevel="year" />
</Variant>
<Variant name="firstDayOfWeek">
<DatePicker firstDayOfWeek={0} />
</Variant>
<Variant name="hideWeekdays">
<DatePicker hideWeekdays />
</Variant>
<Variant name="weekendDays">
<DatePicker weekendDays={[1, 2]} />
</Variant>
<Variant name="renderDay">
<DatePicker
renderDay={(date) => {
const day = date.getDate();
return (
<Indicator size={6} color="red" offset={-5} disabled={day !== 16}>
<div>{day}</div>
</Indicator>
);
}}
/>
</Variant>
<Variant name="min and max">
<DatePicker
minDate={new Date(2023, 1, 1)}
maxDate={new Date(2023, 8, 1)}
/>
</Variant>
<Variant name="numberOfColumns">
<DatePicker type="range" numberOfColumns={2} />
</Variant>
</Component>
<Component name="DatePickerInput" docURL="https://mantine.dev/dates/date-picker-input/">
<Variant proto={DatePickerInputProto} />
<Variant name="filled">
<DatePickerInput
placeholder="Pick date"
label="Pick date"
variant="filled"
/>
</Variant>
<Variant name="unstyled">
<DatePickerInput
placeholder="Pick date"
label="Pick date"
variant="unstyled"
/>
</Variant>
<Variant name="disabled">
<DatePickerInput
placeholder="Pick date"
label="Pick date"
disabled
/>
</Variant>
<Variant name="multiple">
<DatePickerInput
type="multiple"
label="Pick dates"
placeholder="Pick dates"
/>
</Variant>
<Variant name="range">
<DatePickerInput
type="range"
label="Pick dates"
placeholder="Pick dates"
/>
</Variant>
<Variant name="modal">
<DatePickerInput
dropdownType="modal"
label="Pick dates"
placeholder="Pick dates"
/>
</Variant>
<Variant name="clearable">
<DatePickerInput
clearable
label="Pick dates"
placeholder="Pick dates"
/>
</Variant>
<Variant name="with icon">
<DatePickerInput
icon={<CheckIcon />}
label="Pick date"
placeholder="Pick date"
/>
</Variant>
<Variant name="with format">
<DatePickerInput
valueFormat="DD/MM/YYYY HH:mm:ss"
label="Pick date"
placeholder="Pick date"
/>
</Variant>
</Component>
<Component name="DateTimePicker" docURL="https://mantine.dev/dates/date-time-picker/">
<Variant proto={DateTimePickerProto} />
<Variant name="filled">
<DateTimePicker
placeholder="Current date and time"
label="Current date and time"
variant="filled"
/>
</Variant>
<Variant name="unstyled">
<DateTimePicker
placeholder="Current date and time"
label="Current date and time"
variant="unstyled"
/>
</Variant>
<Variant name="disabled">
<DateTimePicker
placeholder="Current date and time"
label="Current date and time"
disabled
/>
</Variant>
<Variant name="withSeconds">
<DateTimePicker
withSeconds
label="Pick date and time"
placeholder="Pick date and time"
/>
</Variant>
<Variant name="modal">
<DateTimePicker
dropdownType="modal"
label="Pick date and time"
placeholder="Pick date and time"
/>
</Variant>
<Variant name="clearable">
<DateTimePicker
clearable
label="Pick date and time"
placeholder="Pick date and time"
/>
</Variant>
<Variant name="with format">
<DateTimePicker
valueFormat="DD MMM YYYY hh:mm A"
label="Pick date and time"
placeholder="Pick date and time"
/>
</Variant>
<Variant name="with error">
<DateTimePicker
placeholder="Current date and time"
label="Current date and time"
error="Error message"
variant="filled"
disabled
/>
</Variant>
</Component>
<Component name="MonthPicker" docURL="https://mantine.dev/dates/month-picker/">
<Variant proto={MonthPickerProto} />
<Variant name="allowDeselect">
<MonthPicker allowDeselect />
</Variant>
<Variant name="multiple">
<MonthPicker type="multiple" />
</Variant>
<Variant name="range">
<MonthPicker type="range" allowSingleDateInRange />
</Variant>
<Variant name="defaultDate">
<MonthPicker defaultDate={new Date(2015, 1)} />
</Variant>
<Variant name="min and max">
<MonthPicker
minDate={new Date(2023, 1, 1)}
maxDate={new Date(2023, 8, 1)}
/>
</Variant>
<Variant name="numberOfColumns">
<MonthPicker type="range" numberOfColumns={2} />
</Variant>
<Variant name="maxLevel">
<MonthPicker maxLevel="year" />
</Variant>
<Variant name="with format">
<MonthPicker
monthsListFormat="MM"
yearsListFormat="YY"
decadeLabelFormat="YY"
yearLabelFormat="YYYY [year]"
/>
</Variant>
</Component>
<Component name="MonthPickerInput" docURL="https://mantine.dev/dates/month-picker-input/">
<Variant proto={MonthPickerInputProto} />
<Variant name="filled">
<MonthPickerInput
placeholder="Pick date"
label="Pick date"
variant="filled"
/>
</Variant>
<Variant name="unstyled">
<MonthPickerInput
placeholder="Pick date"
label="Pick date"
variant="unstyled"
/>
</Variant>
<Variant name="disabled">
<MonthPickerInput
placeholder="Pick date"
label="Pick date"
disabled
/>
</Variant>
<Variant name="multiple">
<MonthPickerInput
type="multiple"
label="Pick dates"
placeholder="Pick dates"
/>
</Variant>
<Variant name="range">
<MonthPickerInput
type="range"
label="Pick dates"
placeholder="Pick dates"
/>
</Variant>
<Variant name="modal">
<MonthPickerInput
dropdownType="modal"
label="Pick date"
placeholder="Pick date"
/>
</Variant>
<Variant name="clearable">
<MonthPickerInput
clearable
label="Pick date"
placeholder="Pick date"
/>
</Variant>
<Variant name="with format">
<MonthPickerInput
valueFormat="YYYY MMM"
label="Pick month"
placeholder="Pick month"
/>
</Variant>
<Variant name="with icon">
<MonthPickerInput
icon={<CheckIcon />}
label="Pick date"
placeholder="Pick date"
/>
</Variant>
<Variant name="with error">
<MonthPickerInput
placeholder="Pick date"
label="Pick date"
error="Error message"
/>
</Variant>
</Component>
<Component name="TimeInput" docURL="https://mantine.dev/dates/time-input/">
<Variant>
<TimeInput label="Current time" />
</Variant>
<Variant name="filled">
<TimeInput
label="Current time"
variant="filled"
/>
</Variant>
<Variant name="unstyled">
<TimeInput
label="Current time"
variant="unstyled"
/>
</Variant>
<Variant name="disabled">
<TimeInput
label="Current time"
disabled
/>
</Variant>
<Variant name="showPicker" proto={TimeInputWithShowPickerProto} />
<Variant name="withSeconds">
<TimeInput withSeconds />
</Variant>
<Variant name="with error">
<TimeInput
label="Current time"
error="Error message"
/>
</Variant>
<Variant name="with icon">
<TimeInput icon={<CheckIcon />} />
</Variant>
</Component>
<Component name="YearPicker" docURL="https://mantine.dev/dates/year-picker/">
<Variant proto={YearPickerProto} />
<Variant name="allowDeselect ">
<YearPicker allowDeselect />
</Variant>
<Variant name="multiple">
<YearPicker type="multiple" />
</Variant>
<Variant name="range">
<YearPicker type="range" allowSingleDateInRange />
</Variant>
<Variant name="defaultDate">
<YearPicker defaultDate={new Date(2040, 1)} />
</Variant>
<Variant name="min and max">
<YearPicker
minDate={new Date(2021, 1)}
maxDate={new Date(2028, 1)}
/>
</Variant>
<Variant name="numberOfColumns">
<YearPicker type="range" numberOfColumns={2} />
</Variant>
<Variant name="with format">
<YearPicker yearsListFormat="YY" decadeLabelFormat="YY" />
</Variant>
</Component>
<Component name="YearPickerInput" docURL="https://mantine.dev/dates/year-picker-input/">
<Variant proto={YearPickerInputProto} />
<Variant name="filled">
<YearPickerInput
placeholder="Pick date"
label="Pick date"
variant="filled"
/>
</Variant>
<Variant name="unstyled">
<YearPickerInput
placeholder="Pick date"
label="Pick date"
variant="unstyled"
/>
</Variant>
<Variant name="disabled">
<YearPickerInput
placeholder="Pick date"
label="Pick date"
disabled
/>
</Variant>
<Variant name="multiple">
<YearPickerInput
type="multiple"
label="Pick dates"
placeholder="Pick dates"
/>
</Variant>
<Variant name="range">
<YearPickerInput
type="range"
allowSingleDateInRange
label="Pick dates"
placeholder="Pick dates"
/>
</Variant>
<Variant name="modal">
<YearPickerInput
dropdownType="modal"
label="Pick date"
placeholder="Pick date"
/>
</Variant>
<Variant name="clearable">
<YearPickerInput
clearable
label="Pick date"
placeholder="Pick date"
/>
</Variant>
<Variant name="with format">
<YearPickerInput
decadeLabelFormat="YY"
yearsListFormat="YY"
valueFormat="YY"
label="Pick year"
placeholder="Pick year"
/>
</Variant>
<Variant name="with error">
<YearPickerInput
placeholder="Pick date"
label="Pick date"
error="Error message"
/>
</Variant>
<Variant name="with icon">
<YearPickerInput
icon={<CheckIcon />}
label="Pick date"
placeholder="Pick date"
/>
</Variant>
</Component>
</Category>
</Palette>
);
function DateInputProto() {
const [value, setValue] = useState<Date | null>(null);
return (
<DateInput
value={value}
onChange={setValue}
label="Date input"
placeholder="Date input"
mx="auto"
maw={400}
/>
);
}
function DatePickerProto() {
const [value, setValue] = useState<Date | null>(null);
return <DatePicker value={value} onChange={setValue} />;
}
function DatePickerInputProto() {
const [value, setValue] = useState<Date | null>(null);
return (
<DatePickerInput
label="Pick date"
placeholder="Pick date"
value={value}
onChange={setValue}
mx="auto"
maw={400}
/>
);
}
function DateTimePickerProto() {
const [value, setValue] = useState<Date | null>(null);
return (
<DateTimePicker
value={value}
onChange={setValue}
label="Date input"
placeholder="Date input"
mx="auto"
maw={400}
/>
)
}
function MonthPickerProto() {
const [value, setValue] = useState<Date | null>(null);
return <MonthPicker value={value} onChange={setValue} />;
}
function MonthPickerInputProto() {
const [value, setValue] = useState<Date | null>(null);
return (
<MonthPickerInput
label="Pick date"
placeholder="Pick date"
value={value}
onChange={setValue}
mx="auto"
maw={400}
/>
);
}
function TimeInputWithShowPickerProto() {
const ref = useRef<HTMLInputElement & { showPicker: () => void }>(null);
return (
<TimeInput
label="Click click icon to show browser picker"
ref={ref}
rightSection={
<ActionIcon onClick={() => ref.current?.showPicker()}>
<CheckIcon />
</ActionIcon>
}
maw={400}
mx="auto"
/>
);
}
function YearPickerProto() {
const [value, setValue] = useState<Date | null>(null);
return <YearPicker value={value} onChange={setValue} />;
}
function YearPickerInputProto() {
const [value, setValue] = useState<Date | null>(null);
return (
<YearPickerInput
label="Pick date"
placeholder="Pick date"
value={value}
onChange={setValue}
mx="auto"
maw={400}
/>
);
}