@uselets/ui 1.18.3 → 1.18.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/{combobox-oMHLoLqV.js → combobox-ITDBYTtM.js} +2 -2
- package/dist/{combobox-oMHLoLqV.js.map → combobox-ITDBYTtM.js.map} +1 -1
- package/dist/{command-Ce8Ojl-B.js → command-BxkAy8PP.js} +2 -2
- package/dist/{command-Ce8Ojl-B.js.map → command-BxkAy8PP.js.map} +1 -1
- package/dist/components/accordion.spec.js +1 -1
- package/dist/components/alert-dialog.spec.js +1 -1
- package/dist/components/alert.spec.js +1 -1
- package/dist/components/anchor.spec.js +1 -1
- package/dist/components/area-chart.spec.js +1 -1
- package/dist/components/avatar.spec.js +1 -1
- package/dist/components/badge.spec.js +1 -1
- package/dist/components/bar-chart.spec.js +1 -1
- package/dist/components/breadcrumb.spec.js +1 -1
- package/dist/components/button-group.spec.js +1 -1
- package/dist/components/button.spec.js +1 -1
- package/dist/components/calendar.spec.js +1 -1
- package/dist/components/card.spec.js +1 -1
- package/dist/components/carousel.spec.js +1 -1
- package/dist/components/center.spec.js +1 -1
- package/dist/components/chart.spec.js +1 -1
- package/dist/components/checkbox.spec.js +1 -1
- package/dist/components/code.spec.js +1 -1
- package/dist/components/collapsible.spec.js +1 -1
- package/dist/components/combobox.js +1 -1
- package/dist/components/combobox.spec.js +1 -1
- package/dist/components/command.js +1 -1
- package/dist/components/command.spec.js +1 -1
- package/dist/components/container.spec.js +1 -1
- package/dist/components/data-table.js +1 -1
- package/dist/components/data-table.spec.js +1 -1
- package/dist/components/date-range-picker.js +1 -1
- package/dist/components/date-range-picker.spec.js +1 -1
- package/dist/components/dialog.spec.js +1 -1
- package/dist/components/donut-chart.spec.js +1 -1
- package/dist/components/drawer.spec.js +1 -1
- package/dist/components/dropdown-menu.spec.js +1 -1
- package/dist/components/dropzone.spec.js +1 -1
- package/dist/components/empty.spec.js +1 -1
- package/dist/components/field.spec.js +1 -1
- package/dist/components/flex.spec.js +1 -1
- package/dist/components/grid.spec.js +1 -1
- package/dist/components/group.spec.js +1 -1
- package/dist/components/heading.spec.js +1 -1
- package/dist/components/hover-card.spec.js +1 -1
- package/dist/components/input-group.js +1 -1
- package/dist/components/input-group.spec.js +1 -1
- package/dist/components/input-otp.spec.js +1 -1
- package/dist/components/input.js +1 -1
- package/dist/components/input.spec.js +1 -1
- package/dist/components/input.spec.js.map +1 -1
- package/dist/components/kbd.spec.js +1 -1
- package/dist/components/label.spec.js +1 -1
- package/dist/components/list.spec.js +1 -1
- package/dist/components/logo.spec.js +1 -1
- package/dist/components/marker.spec.js +1 -1
- package/dist/components/mask-input.js +1 -1
- package/dist/components/mask-input.spec.js +1 -1
- package/dist/components/native-select.js +1 -1
- package/dist/components/native-select.spec.js +1 -1
- package/dist/components/navigation-menu.spec.js +1 -1
- package/dist/components/number-field.spec.js +1 -1
- package/dist/components/pagination.spec.js +1 -1
- package/dist/components/phone-input.js +1 -1
- package/dist/components/phone-input.spec.js +1 -1
- package/dist/components/pie-chart.spec.js +1 -1
- package/dist/components/popover.spec.js +1 -1
- package/dist/components/progress.spec.js +1 -1
- package/dist/components/radio-group.spec.js +1 -1
- package/dist/components/resizable.spec.js +1 -1
- package/dist/components/ring-progress.spec.js +1 -1
- package/dist/components/scroll-area.spec.js +1 -1
- package/dist/components/select.js +1 -1
- package/dist/components/select.spec.js +1 -1
- package/dist/components/separator.spec.js +1 -1
- package/dist/components/sidebar.js +1 -1
- package/dist/components/sidebar.spec.js +1 -1
- package/dist/components/simple-grid.spec.js +1 -1
- package/dist/components/skeleton.spec.js +1 -1
- package/dist/components/slider.spec.js +1 -1
- package/dist/components/sonner.spec.js +1 -1
- package/dist/components/spinner.spec.js +1 -1
- package/dist/components/stack.spec.js +1 -1
- package/dist/components/stepper.spec.js +1 -1
- package/dist/components/switch.spec.js +1 -1
- package/dist/components/table.spec.js +1 -1
- package/dist/components/tabs.spec.js +1 -1
- package/dist/components/text.spec.js +1 -1
- package/dist/components/textarea.js +1 -1
- package/dist/components/textarea.spec.js +1 -1
- package/dist/components/theme.spec.js +1 -1
- package/dist/components/timeline.spec.js +1 -1
- package/dist/components/toggle-group.spec.js +1 -1
- package/dist/components/toggle.spec.js +1 -1
- package/dist/components/tooltip.spec.js +1 -1
- package/dist/components/unstyled-button.spec.js +1 -1
- package/dist/components/visibility.spec.js +1 -1
- package/dist/{data-table-tnfPcXqc.js → data-table-BGfSiHDT.js} +2 -2
- package/dist/{data-table-tnfPcXqc.js.map → data-table-BGfSiHDT.js.map} +1 -1
- package/dist/{date-range-picker-w3ZVRIII.js → date-range-picker-BjkVzFWQ.js} +2 -2
- package/dist/{date-range-picker-w3ZVRIII.js.map → date-range-picker-BjkVzFWQ.js.map} +1 -1
- package/dist/hooks/use-breakpoint-value.spec.js +1 -1
- package/dist/hooks/use-breakpoint-value.spec.js.map +1 -1
- package/dist/hooks/use-breakpoint.spec.js +1 -1
- package/dist/hooks/use-disclosure.spec.js +1 -1
- package/dist/hooks/use-document-visibility.spec.js +1 -1
- package/dist/hooks/use-hotkeys.spec.js +1 -1
- package/dist/hooks/use-idle.spec.js +1 -1
- package/dist/hooks/use-interval.spec.js +1 -1
- package/dist/hooks/use-local-storage.spec.js +1 -1
- package/dist/hooks/use-mask.spec.js +1 -1
- package/dist/hooks/use-mobile.spec.js +1 -1
- package/dist/index.js +1 -1
- package/dist/{input-BhEEV_nn.js → input-CJLsPlXh.js} +2 -2
- package/dist/{input-BhEEV_nn.js.map → input-CJLsPlXh.js.map} +1 -1
- package/dist/{input-group-BUTp8vYe.js → input-group-mcar-tED.js} +2 -2
- package/dist/{input-group-BUTp8vYe.js.map → input-group-mcar-tED.js.map} +1 -1
- package/dist/{mask-input-BnifHAsJ.js → mask-input-cCmVKrHj.js} +2 -2
- package/dist/{mask-input-BnifHAsJ.js.map → mask-input-cCmVKrHj.js.map} +1 -1
- package/dist/{native-select-DZW3Y7nq.js → native-select-Iq25QUH-.js} +2 -2
- package/dist/native-select-Iq25QUH-.js.map +1 -0
- package/dist/{phone-input-ambhiSLO.js → phone-input-DqgYa1un.js} +2 -2
- package/dist/{phone-input-ambhiSLO.js.map → phone-input-DqgYa1un.js.map} +1 -1
- package/dist/{react.esm-BkhVXJ8s.js → react.esm-dE9nuHcL.js} +2 -2
- package/dist/{react.esm-BkhVXJ8s.js.map → react.esm-dE9nuHcL.js.map} +1 -1
- package/dist/select-CVwVLyWt.js +2 -0
- package/dist/select-CVwVLyWt.js.map +1 -0
- package/dist/{sidebar-f9maf3VF.js → sidebar-CJriMotD.js} +2 -2
- package/dist/{sidebar-f9maf3VF.js.map → sidebar-CJriMotD.js.map} +1 -1
- package/dist/skills/uselets-ui/references/package-guide.md +1 -1
- package/dist/styles/gomax.css +2 -0
- package/dist/styles/max.css +2 -0
- package/dist/styles/theme.css +1 -0
- package/dist/textarea-eJQTMC_d.js +2 -0
- package/dist/textarea-eJQTMC_d.js.map +1 -0
- package/package.json +13 -13
- package/skills/uselets-ui/references/package-guide.md +1 -1
- package/dist/native-select-DZW3Y7nq.js.map +0 -1
- package/dist/select-C3QYNv4t.js +0 -2
- package/dist/select-C3QYNv4t.js.map +0 -1
- package/dist/textarea-C8zrf9Rz.js +0 -2
- package/dist/textarea-C8zrf9Rz.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-range-picker-w3ZVRIII.js","names":[],"sources":["../src/components/date-range-picker.tsx"],"sourcesContent":["import * as React from 'react'\nimport type { Locale } from 'react-day-picker'\n\nimport { IconArrowRight, IconCalendar, IconChevronDown } from '@tabler/icons-react'\n\nimport { cn } from '../lib/utils'\nimport { Button } from './button'\nimport { Calendar, type DateRange } from './calendar'\nimport { Input } from './input'\nimport { Popover, PopoverContent, PopoverTrigger } from './popover'\n\ntype DateRangePickerContextValue = {\n value: DateRange | null\n draft: DateRange | undefined\n month: Date\n locale?: Partial<Locale>\n placeholder: string\n setDraft: (range: DateRange | undefined) => void\n setMonth: (month: Date) => void\n apply: () => void\n reset: () => void\n}\n\nconst DateRangePickerContext = React.createContext<DateRangePickerContextValue | null>(null)\n\nconst defaultPlaceholder = 'Selecione um período'\n\nconst defaultPresetDefinitions = [\n {\n label: 'Hoje',\n getRange: () => {\n const today = startOfDay(new Date())\n return { from: today, to: today }\n }\n },\n {\n label: 'Ontem',\n getRange: () => {\n const yesterday = addDays(startOfDay(new Date()), -1)\n return { from: yesterday, to: yesterday }\n }\n },\n {\n label: 'Últimos 7 dias',\n getRange: () => {\n const today = startOfDay(new Date())\n return { from: addDays(today, -7), to: today }\n }\n },\n {\n label: 'Últimos 15 dias',\n getRange: () => {\n const today = startOfDay(new Date())\n return { from: addDays(today, -15), to: today }\n }\n },\n {\n label: 'Últimos 30 dias',\n getRange: () => {\n const today = startOfDay(new Date())\n return { from: addDays(today, -30), to: today }\n }\n },\n {\n label: 'Últimos 60 dias',\n getRange: () => {\n const today = startOfDay(new Date())\n return { from: addDays(today, -60), to: today }\n }\n },\n {\n label: 'Últimos 90 dias',\n getRange: () => {\n const today = startOfDay(new Date())\n return { from: addDays(today, -90), to: today }\n }\n },\n {\n label: 'Semana passada',\n getRange: () => {\n const previousWeekStart = addDays(startOfWeek(new Date()), -7)\n return { from: previousWeekStart, to: addDays(previousWeekStart, 6) }\n }\n },\n {\n label: 'Este mês',\n getRange: () => {\n const today = startOfDay(new Date())\n return { from: startOfMonth(today), to: today }\n }\n },\n {\n label: 'Mês passado',\n getRange: () => {\n const previousMonth = new Date(new Date().getFullYear(), new Date().getMonth() - 1, 1)\n return { from: startOfMonth(previousMonth), to: endOfMonth(previousMonth) }\n }\n }\n] satisfies DateRangePickerPresetOption[]\n\nexport type DateRangePickerPresetOption = {\n label: string\n getRange: () => DateRange\n}\n\nexport type DateRangePickerProps = Omit<\n React.ComponentProps<typeof Popover>,\n 'open' | 'defaultOpen' | 'onOpenChange'\n> & {\n value?: DateRange | null\n defaultValue?: DateRange | null\n onValueChange?: (range: DateRange | null) => void\n onApply?: (range: DateRange | null) => void\n onReset?: () => void\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n locale?: Partial<Locale>\n placeholder?: string\n}\n\nexport type DateRangePickerTriggerProps = React.ComponentProps<typeof Button> & {\n asChild?: boolean\n}\n\nexport type DateRangePickerValueProps = React.ComponentProps<'span'> & {\n placeholder?: string\n}\n\nexport type DateRangePickerContentProps = React.ComponentProps<typeof PopoverContent>\n\nexport type DateRangePickerPresetsProps = React.ComponentProps<'div'> & {\n presets?: DateRangePickerPresetOption[]\n}\n\nexport type DateRangePickerPresetProps = React.ComponentProps<'button'> & {\n selected?: boolean\n}\n\nexport type DateRangePickerCalendarProps = Omit<\n React.ComponentProps<typeof Calendar>,\n 'mode' | 'numberOfMonths' | 'selected' | 'onSelect' | 'month' | 'defaultMonth'\n>\n\nexport type DateRangePickerDateFieldsProps = React.ComponentProps<'div'>\n\nexport type DateRangePickerActionsProps = React.ComponentProps<'div'>\n\nexport type DateRangePickerApplyProps = React.ComponentProps<typeof Button>\n\nexport type DateRangePickerResetProps = React.ComponentProps<typeof Button>\n\nfunction DateRangePicker({\n value: valueProp,\n defaultValue = null,\n onValueChange,\n onApply,\n onReset,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n locale,\n placeholder = defaultPlaceholder,\n children,\n ...props\n}: DateRangePickerProps) {\n const [uncontrolledValue, setUncontrolledValue] = React.useState<DateRange | null>(defaultValue)\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen)\n\n const isValueControlled = valueProp !== undefined\n const isOpenControlled = openProp !== undefined\n const value = isValueControlled ? (valueProp ?? null) : uncontrolledValue\n const open = isOpenControlled ? openProp : uncontrolledOpen\n\n const [draft, setDraft] = React.useState<DateRange | undefined>(() => toDraft(value))\n const [month, setMonth] = React.useState<Date>(() => getRangeMonth(toDraft(value)))\n\n const updateDraft = React.useCallback((nextDraft: DateRange | undefined) => {\n const normalizedDraft = normalizeDraft(nextDraft)\n setDraft(normalizedDraft)\n\n const nextMonth = getRangeMonth(normalizedDraft)\n if (nextMonth) {\n setMonth(nextMonth)\n }\n }, [])\n\n const commitValue = React.useCallback(\n (nextValue: DateRange | null) => {\n if (!isValueControlled) {\n setUncontrolledValue(nextValue)\n }\n\n onValueChange?.(nextValue)\n },\n [isValueControlled, onValueChange]\n )\n\n const setOpen = React.useCallback(\n (nextOpen: boolean) => {\n if (nextOpen) {\n const nextDraft = toDraft(value)\n setDraft(nextDraft)\n setMonth(getRangeMonth(nextDraft))\n }\n\n if (!isOpenControlled) {\n setUncontrolledOpen(nextOpen)\n }\n\n onOpenChange?.(nextOpen)\n },\n [isOpenControlled, onOpenChange, value]\n )\n\n const apply = React.useCallback(() => {\n const nextValue = toValue(draft)\n commitValue(nextValue)\n onApply?.(nextValue)\n setOpen(false)\n }, [commitValue, draft, onApply, setOpen])\n\n const reset = React.useCallback(() => {\n setDraft(undefined)\n commitValue(null)\n onReset?.()\n setOpen(false)\n }, [commitValue, onReset, setOpen])\n\n const context = React.useMemo<DateRangePickerContextValue>(\n () => ({\n value,\n draft,\n month,\n locale,\n placeholder,\n setDraft: updateDraft,\n setMonth,\n apply,\n reset\n }),\n [apply, draft, locale, month, placeholder, reset, updateDraft, value]\n )\n\n return (\n <DateRangePickerContext.Provider value={context}>\n <Popover open={open} onOpenChange={setOpen} {...props}>\n {children ?? (\n <>\n <DateRangePickerTrigger />\n <DateRangePickerContent>\n <DateRangePickerPresets />\n <DateRangePickerDateFields />\n <DateRangePickerCalendar />\n <DateRangePickerActions />\n </DateRangePickerContent>\n </>\n )}\n </Popover>\n </DateRangePickerContext.Provider>\n )\n}\n\nfunction DateRangePickerTrigger({\n className,\n children,\n asChild = false,\n variant = 'outline',\n color = 'zinc',\n type = 'button',\n ...props\n}: DateRangePickerTriggerProps) {\n if (asChild) {\n return <PopoverTrigger asChild>{children}</PopoverTrigger>\n }\n\n return (\n <PopoverTrigger asChild>\n <Button\n type={type}\n variant={variant}\n color={color}\n className={cn('min-w-64 justify-between font-normal', className)}\n {...props}\n >\n {children ?? (\n <>\n <IconCalendar data-icon=\"inline-start\" className=\"size-4 text-muted-foreground\" />\n <DateRangePickerValue className=\"flex-1 text-left\" />\n <IconChevronDown data-icon=\"inline-end\" className=\"size-4 text-muted-foreground\" />\n </>\n )}\n </Button>\n </PopoverTrigger>\n )\n}\n\nfunction DateRangePickerValue({ className, placeholder, ...props }: DateRangePickerValueProps) {\n const { value, locale, placeholder: contextPlaceholder } = useDateRangePicker()\n\n return (\n <span data-slot=\"date-range-picker-value\" className={cn('truncate', className)} {...props}>\n {formatRange(value, locale, placeholder ?? contextPlaceholder)}\n </span>\n )\n}\n\nfunction DateRangePickerContent({\n className,\n align = 'start',\n sideOffset = 8,\n children,\n ...props\n}: DateRangePickerContentProps) {\n const childArray = React.Children.toArray(children)\n const presets = childArray.filter(isDateRangePickerPresetsElement)\n const content = childArray.filter((child) => !isDateRangePickerPresetsElement(child))\n\n return (\n <PopoverContent\n align={align}\n sideOffset={sideOffset}\n className={cn('w-[calc(100vw-(--spacing(4)))] max-w-2xl p-2', className)}\n {...props}\n >\n <div data-slot=\"date-range-picker-content\" className=\"grid gap-3 md:grid-cols-[10rem_minmax(0,1fr)]\">\n {presets}\n <div className=\"flex min-w-0 flex-col gap-3\">{content}</div>\n </div>\n </PopoverContent>\n )\n}\n\nfunction DateRangePickerPresets({\n className,\n presets = defaultPresetDefinitions,\n ...props\n}: DateRangePickerPresetsProps) {\n const { draft, setDraft } = useDateRangePicker()\n const todayRelativeValue = getRelativeDaysValue(draft, 'today')\n const yesterdayRelativeValue = getRelativeDaysValue(draft, 'yesterday')\n\n return (\n <div\n data-slot=\"date-range-picker-presets\"\n className={cn('hidden flex-col border-border pr-3 md:flex md:border-r', className)}\n {...props}\n >\n {presets.map((preset) => {\n const range = preset.getRange()\n const selected = isSameRange(draft, range)\n\n return (\n <DateRangePickerPreset key={preset.label} type=\"button\" selected={selected} onClick={() => setDraft(range)}>\n {preset.label}\n </DateRangePickerPreset>\n )\n })}\n\n <div className=\"my-3 flex flex-col gap-2\">\n <DateRangePickerRelativeField\n label=\"Dias até hoje\"\n value={todayRelativeValue}\n onValueChange={(days) => setDraft(getRelativeDaysRange(days, 'today'))}\n />\n <DateRangePickerRelativeField\n label=\"Dias até ontem\"\n value={yesterdayRelativeValue}\n onValueChange={(days) => setDraft(getRelativeDaysRange(days, 'yesterday'))}\n />\n </div>\n </div>\n )\n}\n\nfunction DateRangePickerPreset({ className, selected = false, ...props }: DateRangePickerPresetProps) {\n return (\n <button\n data-slot=\"date-range-picker-preset\"\n data-selected={selected}\n className={cn(\n 'flex h-8.5 w-full items-center border-l-3 border-border bg-transparent px-2 text-left text-sm text-foreground transition-colors outline-none',\n 'hover:border-primary hover:bg-primary-50 hover:text-primary-700 dark:hover:bg-primary-950 dark:hover:text-primary-300',\n 'focus-visible:border-primary focus-visible:ring-3 focus-visible:ring-ring/50',\n 'data-[selected=true]:border-primary data-[selected=true]:bg-primary-50 data-[selected=true]:text-primary-700 dark:data-[selected=true]:bg-primary-950 dark:data-[selected=true]:text-primary-300',\n className\n )}\n aria-pressed={selected}\n {...props}\n />\n )\n}\n\nfunction DateRangePickerRelativeField({\n label,\n value,\n onValueChange\n}: {\n label: string\n value: number | undefined\n onValueChange: (days: number) => void\n}) {\n const id = React.useId()\n const [inputValue, setInputValue] = React.useState(() => formatRelativeInputValue(value))\n\n React.useEffect(() => {\n setInputValue(formatRelativeInputValue(value))\n }, [value])\n\n return (\n <div className=\"flex items-center gap-2 text-sm text-foreground\">\n <Input\n id={id}\n type=\"number\"\n name={label}\n min={1}\n step={1}\n value={inputValue}\n className=\"h-7 w-9 rounded-md px-1 text-center [appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none\"\n aria-label={label}\n onChange={(event) => {\n const nextValue = event.target.value\n setInputValue(nextValue)\n\n if (nextValue === '') return\n\n const days = parsePositiveInteger(nextValue)\n if (!days) return\n onValueChange(days)\n }}\n />\n <label htmlFor={id}>{label}</label>\n </div>\n )\n}\n\nfunction DateRangePickerCalendar({\n className,\n showOutsideDays = false,\n onMonthChange,\n ...props\n}: DateRangePickerCalendarProps) {\n const { draft, locale, month, setDraft, setMonth } = useDateRangePicker()\n\n return (\n <Calendar\n mode=\"range\"\n numberOfMonths={2}\n showOutsideDays={showOutsideDays}\n month={month}\n onMonthChange={(nextMonth) => {\n setMonth(nextMonth)\n onMonthChange?.(nextMonth)\n }}\n selected={draft}\n onSelect={setDraft}\n locale={locale}\n className={cn('mx-auto bg-transparent p-0', className)}\n {...props}\n />\n )\n}\n\nfunction DateRangePickerDateFields({ className, ...props }: DateRangePickerDateFieldsProps) {\n const { draft, setDraft } = useDateRangePicker()\n\n return (\n <div\n data-slot=\"date-range-picker-date-fields\"\n className={cn(\n 'pb-2 border-b flex justify-between gap-2 flex-wrap flex-col sm:flex-row sm:items-center',\n className\n )}\n {...props}\n >\n <Input\n type=\"date\"\n value={formatInputDate(draft?.from)}\n className=\"sm:w-max\"\n onChange={(event) => {\n if (event.target.value === '') {\n setDraft(undefined)\n return\n }\n\n const date = parseInputDate(event.target.value)\n if (!date) return\n setDraft(normalizeDraft({ from: date, to: draft?.to }))\n }}\n />\n <IconArrowRight className=\"size-4 text-primary hidden sm:block\" />\n <Input\n type=\"date\"\n value={formatInputDate(draft?.to)}\n className=\"sm:w-max\"\n onChange={(event) => {\n if (event.target.value === '') {\n setDraft(undefined)\n return\n }\n\n const date = parseInputDate(event.target.value)\n if (!date) return\n setDraft(normalizeDraft({ from: draft?.from, to: date }))\n }}\n />\n </div>\n )\n}\n\nfunction DateRangePickerActions({ className, children, ...props }: DateRangePickerActionsProps) {\n return (\n <div data-slot=\"date-range-picker-actions\" className={cn('flex items-center gap-2 mt-auto', className)} {...props}>\n {children ?? (\n <>\n <DateRangePickerReset />\n <DateRangePickerApply />\n </>\n )}\n </div>\n )\n}\n\nfunction DateRangePickerApply({ children = 'Aplicar', onClick, className, ...props }: DateRangePickerApplyProps) {\n const { apply } = useDateRangePicker()\n\n return (\n <Button\n size=\"sm\"\n className={cn('flex-1', className)}\n onClick={(event) => {\n onClick?.(event)\n if (!event.defaultPrevented) {\n apply()\n }\n }}\n {...props}\n >\n {children}\n </Button>\n )\n}\n\nfunction DateRangePickerReset({\n children = 'Resetar',\n onClick,\n variant = 'outline',\n color = 'zinc',\n className,\n ...props\n}: DateRangePickerResetProps) {\n const { reset } = useDateRangePicker()\n\n return (\n <Button\n size=\"sm\"\n className={cn('flex-1', className)}\n variant={variant}\n color={color}\n onClick={(event) => {\n onClick?.(event)\n if (!event.defaultPrevented) {\n reset()\n }\n }}\n {...props}\n >\n {children}\n </Button>\n )\n}\n\nfunction useDateRangePicker() {\n const context = React.useContext(DateRangePickerContext)\n\n if (!context) {\n throw new Error('DateRangePicker components must be used within DateRangePicker.')\n }\n\n return context\n}\n\nfunction isDateRangePickerPresetsElement(child: React.ReactNode) {\n return React.isValidElement(child) && child.type === DateRangePickerPresets\n}\n\nfunction toDraft(range: DateRange | null | undefined) {\n return normalizeDraft(range ?? undefined)\n}\n\nfunction toValue(range: DateRange | undefined): DateRange | null {\n return normalizeDraft(range) ?? null\n}\n\nfunction getRangeMonth(range: DateRange | undefined) {\n return startOfDay(range?.from ?? range?.to ?? new Date())\n}\n\nfunction normalizeDraft(range: DateRange | undefined): DateRange | undefined {\n if (!range?.from && !range?.to) return undefined\n\n if (range.from && range.to && range.from > range.to) {\n return { from: startOfDay(range.to), to: startOfDay(range.from) }\n }\n\n return {\n from: range.from ? startOfDay(range.from) : undefined,\n to: range.to ? startOfDay(range.to) : undefined\n }\n}\n\nfunction formatRange(range: DateRange | null | undefined, locale: Partial<Locale> | undefined, placeholder: string) {\n if (!range?.from && !range?.to) return placeholder\n\n if (range.from && range.to) {\n return `${formatDisplayDate(range.from, locale)} - ${formatDisplayDate(range.to, locale)}`\n }\n\n return formatDisplayDate(range.from ?? range.to, locale)\n}\n\nfunction formatDisplayDate(date: Date | undefined, locale: Partial<Locale> | undefined) {\n if (!date) return ''\n\n return new Intl.DateTimeFormat(locale?.code ?? 'pt-BR', {\n day: '2-digit',\n month: '2-digit',\n year: 'numeric'\n }).format(date)\n}\n\nfunction formatInputDate(date: Date | undefined) {\n if (!date) return ''\n\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const day = String(date.getDate()).padStart(2, '0')\n\n return `${year}-${month}-${day}`\n}\n\nfunction parseInputDate(value: string) {\n if (!value) return undefined\n\n const match = /^(?<year>\\d{4})-(?<month>\\d{2})-(?<day>\\d{2})$/.exec(value)\n if (!match?.groups) return undefined\n\n const year = Number(match.groups.year)\n const month = Number(match.groups.month)\n const day = Number(match.groups.day)\n const date = new Date(year, month - 1, day)\n\n if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {\n return undefined\n }\n\n return date\n}\n\nfunction parsePositiveInteger(value: string) {\n if (!value) return undefined\n\n const days = Number(value)\n if (!Number.isInteger(days) || days < 1) return undefined\n\n return days\n}\n\nfunction formatRelativeInputValue(value: number | undefined) {\n return value ? String(value) : ''\n}\n\nfunction getRelativeDaysRange(days: number, target: 'today' | 'yesterday'): DateRange {\n const today = startOfDay(new Date())\n const targetDate = target === 'today' ? addDays(today, -1) : addDays(today, -2)\n\n return {\n from: addDays(targetDate, -days + 1),\n to: targetDate\n }\n}\n\nfunction getRelativeDaysValue(range: DateRange | undefined, target: 'today' | 'yesterday') {\n if (!range?.from || !range.to) return undefined\n\n const today = startOfDay(new Date())\n const targetDate = target === 'today' ? addDays(today, -1) : addDays(today, -2)\n if (!isSameDay(range.to, targetDate)) return undefined\n\n const days = differenceInCalendarDays(targetDate, startOfDay(range.from)) + 1\n return days > 0 ? days : undefined\n}\n\nfunction isSameRange(left: DateRange | undefined, right: DateRange | undefined) {\n return isSameDay(left?.from, right?.from) && isSameDay(left?.to, right?.to)\n}\n\nfunction isSameDay(left: Date | undefined, right: Date | undefined) {\n if (!left || !right) return left === right\n\n return (\n left.getFullYear() === right.getFullYear() &&\n left.getMonth() === right.getMonth() &&\n left.getDate() === right.getDate()\n )\n}\n\nfunction startOfDay(date: Date) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate())\n}\n\nfunction startOfWeek(date: Date) {\n const day = startOfDay(date)\n return addDays(day, -day.getDay())\n}\n\nfunction startOfMonth(date: Date) {\n return new Date(date.getFullYear(), date.getMonth(), 1)\n}\n\nfunction endOfMonth(date: Date) {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0)\n}\n\nfunction differenceInCalendarDays(left: Date, right: Date) {\n const millisecondsPerDay = 24 * 60 * 60 * 1000\n return Math.round((startOfDay(left).getTime() - startOfDay(right).getTime()) / millisecondsPerDay)\n}\n\nfunction addDays(date: Date, amount: number) {\n const nextDate = startOfDay(date)\n nextDate.setDate(nextDate.getDate() + amount)\n return nextDate\n}\n\nexport {\n type DateRange,\n DateRangePicker,\n DateRangePickerActions,\n DateRangePickerApply,\n DateRangePickerCalendar,\n DateRangePickerContent,\n DateRangePickerDateFields,\n DateRangePickerPreset,\n DateRangePickerPresets,\n DateRangePickerReset,\n DateRangePickerTrigger,\n DateRangePickerValue\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"date-range-picker-BjkVzFWQ.js","names":[],"sources":["../src/components/date-range-picker.tsx"],"sourcesContent":["import * as React from 'react'\nimport type { Locale } from 'react-day-picker'\n\nimport { IconArrowRight, IconCalendar, IconChevronDown } from '@tabler/icons-react'\n\nimport { cn } from '../lib/utils'\nimport { Button } from './button'\nimport { Calendar, type DateRange } from './calendar'\nimport { Input } from './input'\nimport { Popover, PopoverContent, PopoverTrigger } from './popover'\n\ntype DateRangePickerContextValue = {\n value: DateRange | null\n draft: DateRange | undefined\n month: Date\n locale?: Partial<Locale>\n placeholder: string\n setDraft: (range: DateRange | undefined) => void\n setMonth: (month: Date) => void\n apply: () => void\n reset: () => void\n}\n\nconst DateRangePickerContext = React.createContext<DateRangePickerContextValue | null>(null)\n\nconst defaultPlaceholder = 'Selecione um período'\n\nconst defaultPresetDefinitions = [\n {\n label: 'Hoje',\n getRange: () => {\n const today = startOfDay(new Date())\n return { from: today, to: today }\n }\n },\n {\n label: 'Ontem',\n getRange: () => {\n const yesterday = addDays(startOfDay(new Date()), -1)\n return { from: yesterday, to: yesterday }\n }\n },\n {\n label: 'Últimos 7 dias',\n getRange: () => {\n const today = startOfDay(new Date())\n return { from: addDays(today, -7), to: today }\n }\n },\n {\n label: 'Últimos 15 dias',\n getRange: () => {\n const today = startOfDay(new Date())\n return { from: addDays(today, -15), to: today }\n }\n },\n {\n label: 'Últimos 30 dias',\n getRange: () => {\n const today = startOfDay(new Date())\n return { from: addDays(today, -30), to: today }\n }\n },\n {\n label: 'Últimos 60 dias',\n getRange: () => {\n const today = startOfDay(new Date())\n return { from: addDays(today, -60), to: today }\n }\n },\n {\n label: 'Últimos 90 dias',\n getRange: () => {\n const today = startOfDay(new Date())\n return { from: addDays(today, -90), to: today }\n }\n },\n {\n label: 'Semana passada',\n getRange: () => {\n const previousWeekStart = addDays(startOfWeek(new Date()), -7)\n return { from: previousWeekStart, to: addDays(previousWeekStart, 6) }\n }\n },\n {\n label: 'Este mês',\n getRange: () => {\n const today = startOfDay(new Date())\n return { from: startOfMonth(today), to: today }\n }\n },\n {\n label: 'Mês passado',\n getRange: () => {\n const previousMonth = new Date(new Date().getFullYear(), new Date().getMonth() - 1, 1)\n return { from: startOfMonth(previousMonth), to: endOfMonth(previousMonth) }\n }\n }\n] satisfies DateRangePickerPresetOption[]\n\nexport type DateRangePickerPresetOption = {\n label: string\n getRange: () => DateRange\n}\n\nexport type DateRangePickerProps = Omit<\n React.ComponentProps<typeof Popover>,\n 'open' | 'defaultOpen' | 'onOpenChange'\n> & {\n value?: DateRange | null\n defaultValue?: DateRange | null\n onValueChange?: (range: DateRange | null) => void\n onApply?: (range: DateRange | null) => void\n onReset?: () => void\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n locale?: Partial<Locale>\n placeholder?: string\n}\n\nexport type DateRangePickerTriggerProps = React.ComponentProps<typeof Button> & {\n asChild?: boolean\n}\n\nexport type DateRangePickerValueProps = React.ComponentProps<'span'> & {\n placeholder?: string\n}\n\nexport type DateRangePickerContentProps = React.ComponentProps<typeof PopoverContent>\n\nexport type DateRangePickerPresetsProps = React.ComponentProps<'div'> & {\n presets?: DateRangePickerPresetOption[]\n}\n\nexport type DateRangePickerPresetProps = React.ComponentProps<'button'> & {\n selected?: boolean\n}\n\nexport type DateRangePickerCalendarProps = Omit<\n React.ComponentProps<typeof Calendar>,\n 'mode' | 'numberOfMonths' | 'selected' | 'onSelect' | 'month' | 'defaultMonth'\n>\n\nexport type DateRangePickerDateFieldsProps = React.ComponentProps<'div'>\n\nexport type DateRangePickerActionsProps = React.ComponentProps<'div'>\n\nexport type DateRangePickerApplyProps = React.ComponentProps<typeof Button>\n\nexport type DateRangePickerResetProps = React.ComponentProps<typeof Button>\n\nfunction DateRangePicker({\n value: valueProp,\n defaultValue = null,\n onValueChange,\n onApply,\n onReset,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n locale,\n placeholder = defaultPlaceholder,\n children,\n ...props\n}: DateRangePickerProps) {\n const [uncontrolledValue, setUncontrolledValue] = React.useState<DateRange | null>(defaultValue)\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen)\n\n const isValueControlled = valueProp !== undefined\n const isOpenControlled = openProp !== undefined\n const value = isValueControlled ? (valueProp ?? null) : uncontrolledValue\n const open = isOpenControlled ? openProp : uncontrolledOpen\n\n const [draft, setDraft] = React.useState<DateRange | undefined>(() => toDraft(value))\n const [month, setMonth] = React.useState<Date>(() => getRangeMonth(toDraft(value)))\n\n const updateDraft = React.useCallback((nextDraft: DateRange | undefined) => {\n const normalizedDraft = normalizeDraft(nextDraft)\n setDraft(normalizedDraft)\n\n const nextMonth = getRangeMonth(normalizedDraft)\n if (nextMonth) {\n setMonth(nextMonth)\n }\n }, [])\n\n const commitValue = React.useCallback(\n (nextValue: DateRange | null) => {\n if (!isValueControlled) {\n setUncontrolledValue(nextValue)\n }\n\n onValueChange?.(nextValue)\n },\n [isValueControlled, onValueChange]\n )\n\n const setOpen = React.useCallback(\n (nextOpen: boolean) => {\n if (nextOpen) {\n const nextDraft = toDraft(value)\n setDraft(nextDraft)\n setMonth(getRangeMonth(nextDraft))\n }\n\n if (!isOpenControlled) {\n setUncontrolledOpen(nextOpen)\n }\n\n onOpenChange?.(nextOpen)\n },\n [isOpenControlled, onOpenChange, value]\n )\n\n const apply = React.useCallback(() => {\n const nextValue = toValue(draft)\n commitValue(nextValue)\n onApply?.(nextValue)\n setOpen(false)\n }, [commitValue, draft, onApply, setOpen])\n\n const reset = React.useCallback(() => {\n setDraft(undefined)\n commitValue(null)\n onReset?.()\n setOpen(false)\n }, [commitValue, onReset, setOpen])\n\n const context = React.useMemo<DateRangePickerContextValue>(\n () => ({\n value,\n draft,\n month,\n locale,\n placeholder,\n setDraft: updateDraft,\n setMonth,\n apply,\n reset\n }),\n [apply, draft, locale, month, placeholder, reset, updateDraft, value]\n )\n\n return (\n <DateRangePickerContext.Provider value={context}>\n <Popover open={open} onOpenChange={setOpen} {...props}>\n {children ?? (\n <>\n <DateRangePickerTrigger />\n <DateRangePickerContent>\n <DateRangePickerPresets />\n <DateRangePickerDateFields />\n <DateRangePickerCalendar />\n <DateRangePickerActions />\n </DateRangePickerContent>\n </>\n )}\n </Popover>\n </DateRangePickerContext.Provider>\n )\n}\n\nfunction DateRangePickerTrigger({\n className,\n children,\n asChild = false,\n variant = 'outline',\n color = 'zinc',\n type = 'button',\n ...props\n}: DateRangePickerTriggerProps) {\n if (asChild) {\n return <PopoverTrigger asChild>{children}</PopoverTrigger>\n }\n\n return (\n <PopoverTrigger asChild>\n <Button\n type={type}\n variant={variant}\n color={color}\n className={cn('min-w-64 justify-between font-normal', className)}\n {...props}\n >\n {children ?? (\n <>\n <IconCalendar data-icon=\"inline-start\" className=\"size-4 text-muted-foreground\" />\n <DateRangePickerValue className=\"flex-1 text-left\" />\n <IconChevronDown data-icon=\"inline-end\" className=\"size-4 text-muted-foreground\" />\n </>\n )}\n </Button>\n </PopoverTrigger>\n )\n}\n\nfunction DateRangePickerValue({ className, placeholder, ...props }: DateRangePickerValueProps) {\n const { value, locale, placeholder: contextPlaceholder } = useDateRangePicker()\n\n return (\n <span data-slot=\"date-range-picker-value\" className={cn('truncate', className)} {...props}>\n {formatRange(value, locale, placeholder ?? contextPlaceholder)}\n </span>\n )\n}\n\nfunction DateRangePickerContent({\n className,\n align = 'start',\n sideOffset = 8,\n children,\n ...props\n}: DateRangePickerContentProps) {\n const childArray = React.Children.toArray(children)\n const presets = childArray.filter(isDateRangePickerPresetsElement)\n const content = childArray.filter((child) => !isDateRangePickerPresetsElement(child))\n\n return (\n <PopoverContent\n align={align}\n sideOffset={sideOffset}\n className={cn('w-[calc(100vw-(--spacing(4)))] max-w-2xl p-2', className)}\n {...props}\n >\n <div data-slot=\"date-range-picker-content\" className=\"grid gap-3 md:grid-cols-[10rem_minmax(0,1fr)]\">\n {presets}\n <div className=\"flex min-w-0 flex-col gap-3\">{content}</div>\n </div>\n </PopoverContent>\n )\n}\n\nfunction DateRangePickerPresets({\n className,\n presets = defaultPresetDefinitions,\n ...props\n}: DateRangePickerPresetsProps) {\n const { draft, setDraft } = useDateRangePicker()\n const todayRelativeValue = getRelativeDaysValue(draft, 'today')\n const yesterdayRelativeValue = getRelativeDaysValue(draft, 'yesterday')\n\n return (\n <div\n data-slot=\"date-range-picker-presets\"\n className={cn('hidden flex-col border-border pr-3 md:flex md:border-r', className)}\n {...props}\n >\n {presets.map((preset) => {\n const range = preset.getRange()\n const selected = isSameRange(draft, range)\n\n return (\n <DateRangePickerPreset key={preset.label} type=\"button\" selected={selected} onClick={() => setDraft(range)}>\n {preset.label}\n </DateRangePickerPreset>\n )\n })}\n\n <div className=\"my-3 flex flex-col gap-2\">\n <DateRangePickerRelativeField\n label=\"Dias até hoje\"\n value={todayRelativeValue}\n onValueChange={(days) => setDraft(getRelativeDaysRange(days, 'today'))}\n />\n <DateRangePickerRelativeField\n label=\"Dias até ontem\"\n value={yesterdayRelativeValue}\n onValueChange={(days) => setDraft(getRelativeDaysRange(days, 'yesterday'))}\n />\n </div>\n </div>\n )\n}\n\nfunction DateRangePickerPreset({ className, selected = false, ...props }: DateRangePickerPresetProps) {\n return (\n <button\n data-slot=\"date-range-picker-preset\"\n data-selected={selected}\n className={cn(\n 'flex h-8.5 w-full items-center border-l-3 border-border bg-transparent px-2 text-left text-sm text-foreground transition-colors outline-none',\n 'hover:border-primary hover:bg-primary-50 hover:text-primary-700 dark:hover:bg-primary-950 dark:hover:text-primary-300',\n 'focus-visible:border-primary focus-visible:ring-3 focus-visible:ring-ring/50',\n 'data-[selected=true]:border-primary data-[selected=true]:bg-primary-50 data-[selected=true]:text-primary-700 dark:data-[selected=true]:bg-primary-950 dark:data-[selected=true]:text-primary-300',\n className\n )}\n aria-pressed={selected}\n {...props}\n />\n )\n}\n\nfunction DateRangePickerRelativeField({\n label,\n value,\n onValueChange\n}: {\n label: string\n value: number | undefined\n onValueChange: (days: number) => void\n}) {\n const id = React.useId()\n const [inputValue, setInputValue] = React.useState(() => formatRelativeInputValue(value))\n\n React.useEffect(() => {\n setInputValue(formatRelativeInputValue(value))\n }, [value])\n\n return (\n <div className=\"flex items-center gap-2 text-sm text-foreground\">\n <Input\n id={id}\n type=\"number\"\n name={label}\n min={1}\n step={1}\n value={inputValue}\n className=\"h-7 w-9 rounded-md px-1 text-center [appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none\"\n aria-label={label}\n onChange={(event) => {\n const nextValue = event.target.value\n setInputValue(nextValue)\n\n if (nextValue === '') return\n\n const days = parsePositiveInteger(nextValue)\n if (!days) return\n onValueChange(days)\n }}\n />\n <label htmlFor={id}>{label}</label>\n </div>\n )\n}\n\nfunction DateRangePickerCalendar({\n className,\n showOutsideDays = false,\n onMonthChange,\n ...props\n}: DateRangePickerCalendarProps) {\n const { draft, locale, month, setDraft, setMonth } = useDateRangePicker()\n\n return (\n <Calendar\n mode=\"range\"\n numberOfMonths={2}\n showOutsideDays={showOutsideDays}\n month={month}\n onMonthChange={(nextMonth) => {\n setMonth(nextMonth)\n onMonthChange?.(nextMonth)\n }}\n selected={draft}\n onSelect={setDraft}\n locale={locale}\n className={cn('mx-auto bg-transparent p-0', className)}\n {...props}\n />\n )\n}\n\nfunction DateRangePickerDateFields({ className, ...props }: DateRangePickerDateFieldsProps) {\n const { draft, setDraft } = useDateRangePicker()\n\n return (\n <div\n data-slot=\"date-range-picker-date-fields\"\n className={cn(\n 'pb-2 border-b flex justify-between gap-2 flex-wrap flex-col sm:flex-row sm:items-center',\n className\n )}\n {...props}\n >\n <Input\n type=\"date\"\n value={formatInputDate(draft?.from)}\n className=\"sm:w-max\"\n onChange={(event) => {\n if (event.target.value === '') {\n setDraft(undefined)\n return\n }\n\n const date = parseInputDate(event.target.value)\n if (!date) return\n setDraft(normalizeDraft({ from: date, to: draft?.to }))\n }}\n />\n <IconArrowRight className=\"size-4 text-primary hidden sm:block\" />\n <Input\n type=\"date\"\n value={formatInputDate(draft?.to)}\n className=\"sm:w-max\"\n onChange={(event) => {\n if (event.target.value === '') {\n setDraft(undefined)\n return\n }\n\n const date = parseInputDate(event.target.value)\n if (!date) return\n setDraft(normalizeDraft({ from: draft?.from, to: date }))\n }}\n />\n </div>\n )\n}\n\nfunction DateRangePickerActions({ className, children, ...props }: DateRangePickerActionsProps) {\n return (\n <div data-slot=\"date-range-picker-actions\" className={cn('flex items-center gap-2 mt-auto', className)} {...props}>\n {children ?? (\n <>\n <DateRangePickerReset />\n <DateRangePickerApply />\n </>\n )}\n </div>\n )\n}\n\nfunction DateRangePickerApply({ children = 'Aplicar', onClick, className, ...props }: DateRangePickerApplyProps) {\n const { apply } = useDateRangePicker()\n\n return (\n <Button\n size=\"sm\"\n className={cn('flex-1', className)}\n onClick={(event) => {\n onClick?.(event)\n if (!event.defaultPrevented) {\n apply()\n }\n }}\n {...props}\n >\n {children}\n </Button>\n )\n}\n\nfunction DateRangePickerReset({\n children = 'Resetar',\n onClick,\n variant = 'outline',\n color = 'zinc',\n className,\n ...props\n}: DateRangePickerResetProps) {\n const { reset } = useDateRangePicker()\n\n return (\n <Button\n size=\"sm\"\n className={cn('flex-1', className)}\n variant={variant}\n color={color}\n onClick={(event) => {\n onClick?.(event)\n if (!event.defaultPrevented) {\n reset()\n }\n }}\n {...props}\n >\n {children}\n </Button>\n )\n}\n\nfunction useDateRangePicker() {\n const context = React.useContext(DateRangePickerContext)\n\n if (!context) {\n throw new Error('DateRangePicker components must be used within DateRangePicker.')\n }\n\n return context\n}\n\nfunction isDateRangePickerPresetsElement(child: React.ReactNode) {\n return React.isValidElement(child) && child.type === DateRangePickerPresets\n}\n\nfunction toDraft(range: DateRange | null | undefined) {\n return normalizeDraft(range ?? undefined)\n}\n\nfunction toValue(range: DateRange | undefined): DateRange | null {\n return normalizeDraft(range) ?? null\n}\n\nfunction getRangeMonth(range: DateRange | undefined) {\n return startOfDay(range?.from ?? range?.to ?? new Date())\n}\n\nfunction normalizeDraft(range: DateRange | undefined): DateRange | undefined {\n if (!range?.from && !range?.to) return undefined\n\n if (range.from && range.to && range.from > range.to) {\n return { from: startOfDay(range.to), to: startOfDay(range.from) }\n }\n\n return {\n from: range.from ? startOfDay(range.from) : undefined,\n to: range.to ? startOfDay(range.to) : undefined\n }\n}\n\nfunction formatRange(range: DateRange | null | undefined, locale: Partial<Locale> | undefined, placeholder: string) {\n if (!range?.from && !range?.to) return placeholder\n\n if (range.from && range.to) {\n return `${formatDisplayDate(range.from, locale)} - ${formatDisplayDate(range.to, locale)}`\n }\n\n return formatDisplayDate(range.from ?? range.to, locale)\n}\n\nfunction formatDisplayDate(date: Date | undefined, locale: Partial<Locale> | undefined) {\n if (!date) return ''\n\n return new Intl.DateTimeFormat(locale?.code ?? 'pt-BR', {\n day: '2-digit',\n month: '2-digit',\n year: 'numeric'\n }).format(date)\n}\n\nfunction formatInputDate(date: Date | undefined) {\n if (!date) return ''\n\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const day = String(date.getDate()).padStart(2, '0')\n\n return `${year}-${month}-${day}`\n}\n\nfunction parseInputDate(value: string) {\n if (!value) return undefined\n\n const match = /^(?<year>\\d{4})-(?<month>\\d{2})-(?<day>\\d{2})$/.exec(value)\n if (!match?.groups) return undefined\n\n const year = Number(match.groups.year)\n const month = Number(match.groups.month)\n const day = Number(match.groups.day)\n const date = new Date(year, month - 1, day)\n\n if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {\n return undefined\n }\n\n return date\n}\n\nfunction parsePositiveInteger(value: string) {\n if (!value) return undefined\n\n const days = Number(value)\n if (!Number.isInteger(days) || days < 1) return undefined\n\n return days\n}\n\nfunction formatRelativeInputValue(value: number | undefined) {\n return value ? String(value) : ''\n}\n\nfunction getRelativeDaysRange(days: number, target: 'today' | 'yesterday'): DateRange {\n const today = startOfDay(new Date())\n const targetDate = target === 'today' ? addDays(today, -1) : addDays(today, -2)\n\n return {\n from: addDays(targetDate, -days + 1),\n to: targetDate\n }\n}\n\nfunction getRelativeDaysValue(range: DateRange | undefined, target: 'today' | 'yesterday') {\n if (!range?.from || !range.to) return undefined\n\n const today = startOfDay(new Date())\n const targetDate = target === 'today' ? addDays(today, -1) : addDays(today, -2)\n if (!isSameDay(range.to, targetDate)) return undefined\n\n const days = differenceInCalendarDays(targetDate, startOfDay(range.from)) + 1\n return days > 0 ? days : undefined\n}\n\nfunction isSameRange(left: DateRange | undefined, right: DateRange | undefined) {\n return isSameDay(left?.from, right?.from) && isSameDay(left?.to, right?.to)\n}\n\nfunction isSameDay(left: Date | undefined, right: Date | undefined) {\n if (!left || !right) return left === right\n\n return (\n left.getFullYear() === right.getFullYear() &&\n left.getMonth() === right.getMonth() &&\n left.getDate() === right.getDate()\n )\n}\n\nfunction startOfDay(date: Date) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate())\n}\n\nfunction startOfWeek(date: Date) {\n const day = startOfDay(date)\n return addDays(day, -day.getDay())\n}\n\nfunction startOfMonth(date: Date) {\n return new Date(date.getFullYear(), date.getMonth(), 1)\n}\n\nfunction endOfMonth(date: Date) {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0)\n}\n\nfunction differenceInCalendarDays(left: Date, right: Date) {\n const millisecondsPerDay = 24 * 60 * 60 * 1000\n return Math.round((startOfDay(left).getTime() - startOfDay(right).getTime()) / millisecondsPerDay)\n}\n\nfunction addDays(date: Date, amount: number) {\n const nextDate = startOfDay(date)\n nextDate.setDate(nextDate.getDate() + amount)\n return nextDate\n}\n\nexport {\n type DateRange,\n DateRangePicker,\n DateRangePickerActions,\n DateRangePickerApply,\n DateRangePickerCalendar,\n DateRangePickerContent,\n DateRangePickerDateFields,\n DateRangePickerPreset,\n DateRangePickerPresets,\n DateRangePickerReset,\n DateRangePickerTrigger,\n DateRangePickerValue\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e,t}from"../rolldown-runtime-Bdj-bS2b.js";import{t as r}from"../use-breakpoint-value-BDjKflDX.js";import{i as o,t as s}from"../react.esm-
|
|
1
|
+
import{n as e,t}from"../rolldown-runtime-Bdj-bS2b.js";import{t as r}from"../use-breakpoint-value-BDjKflDX.js";import{i as o,t as s}from"../react.esm-dE9nuHcL.js";var c={reset:[0,0],bold:[1,22,`\x1B[22m\x1B[1m`],dim:[2,22,`\x1B[22m\x1B[2m`],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29],black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],gray:[90,39],bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]};function i(e){return String(e)}i.open=``,i.close=``;function B(){let e=typeof process<`u`?process:void 0,t=e?.env||{},r=t.FORCE_TTY!==`false`,o=e?.argv||[];return!(`NO_COLOR`in t||o.includes(`--no-color`))&&(`FORCE_COLOR`in t||o.includes(`--color`)||e?.platform===`win32`||r&&t.TERM!==`dumb`||`CI`in t)||typeof window<`u`&&!!window.chrome}function C({force:e}={}){let t=e||B(),a=(e,t,r,o)=>{let s=``,c=0;do s+=e.substring(c,o)+r,c=o+t.length,o=e.indexOf(t,c);while(~o);return s+e.substring(c)},l=(e,t,r=e)=>{let n=o=>{let s=String(o),c=s.indexOf(t,e.length);return~c?e+a(s,t,r,c)+t:e+s+t};return n.open=e,n.close=t,n},r={isColorSupported:t},f=e=>`\x1B[${e}m`;for(let e in c){let o=c[e];r[e]=t?l(f(o[0]),f(o[1]),o[2]):i}return r}var u=C();function _mergeNamespaces(e,t){return t.forEach(function(t){t&&typeof t!=`string`&&!Array.isArray(t)&&Object.keys(t).forEach(function(r){if(r!=="default"&&!(r in e)){var o=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,o.get?o:{enumerable:!0,get:function(){return t[r]}})}})}),Object.freeze(e)}function getKeysOfEnumerableProperties(e,t){let r=Object.keys(e),o=t===null?r:r.sort(t);if(Object.getOwnPropertySymbols)for(let t of Object.getOwnPropertySymbols(e))Object.getOwnPropertyDescriptor(e,t).enumerable&&o.push(t);return o}function printIteratorEntries(e,t,r,o,s,c,u=`: `){let d=``,p=0,m=e.next();if(!m.done){d+=t.spacingOuter;let h=r+t.indent;for(;!m.done;){if(d+=h,p++===t.maxWidth){d+=`…`;break}let r=c(m.value[0],t,h,o,s),g=c(m.value[1],t,h,o,s);d+=r+u+g,m=e.next(),m.done?t.min||(d+=`,`):d+=`,${t.spacingInner}`}d+=t.spacingOuter+r}return d}function printIteratorValues(e,t,r,o,s,c){let u=``,d=0,p=e.next();if(!p.done){u+=t.spacingOuter;let m=r+t.indent;for(;!p.done;){if(u+=m,d++===t.maxWidth){u+=`…`;break}u+=c(p.value,t,m,o,s),p=e.next(),p.done?t.min||(u+=`,`):u+=`,${t.spacingInner}`}u+=t.spacingOuter+r}return u}function printListItems(e,t,r,o,s,c){let u=``;e=e instanceof ArrayBuffer?new DataView(e):e;let isDataView=e=>e instanceof DataView,d=isDataView(e)?e.byteLength:e.length;if(d>0){u+=t.spacingOuter;let p=r+t.indent;for(let r=0;r<d;r++){if(u+=p,r===t.maxWidth){u+=`…`;break}(isDataView(e)||r in e)&&(u+=c(isDataView(e)?e.getInt8(r):e[r],t,p,o,s)),r<d-1?u+=`,${t.spacingInner}`:t.min||(u+=`,`)}u+=t.spacingOuter+r}return u}function printObjectProperties(e,t,r,o,s,c){let u=``,d=getKeysOfEnumerableProperties(e,t.compareKeys);if(d.length>0){u+=t.spacingOuter;let p=r+t.indent;for(let r=0;r<d.length;r++){let m=d[r],h=c(m,t,p,o,s),g=c(e[m],t,p,o,s);u+=`${p+h}: ${g}`,r<d.length-1?u+=`,${t.spacingInner}`:t.min||(u+=`,`)}u+=t.spacingOuter+r}return u}const d=typeof Symbol==`function`&&Symbol.for?Symbol.for(`jest.asymmetricMatcher`):1267621,serialize$5=(e,t,r,o,s,c)=>{let u=e.toString();if(u===`ArrayContaining`||u===`ArrayNotContaining`)return++o>t.maxDepth?`[${u}]`:`${u+` `}[${printListItems(e.sample,t,r,o,s,c)}]`;if(u===`ObjectContaining`||u===`ObjectNotContaining`)return++o>t.maxDepth?`[${u}]`:`${u+` `}{${printObjectProperties(e.sample,t,r,o,s,c)}}`;if(u===`StringMatching`||u===`StringNotMatching`||u===`StringContaining`||u===`StringNotContaining`)return u+` `+c(e.sample,t,r,o,s);if(typeof e.toAsymmetricMatcher!=`function`)throw TypeError(`Asymmetric matcher ${e.constructor.name} does not implement toAsymmetricMatcher()`);return e.toAsymmetricMatcher()},test$5=e=>e&&e.$$typeof===d,p={serialize:serialize$5,test:test$5},m=new Set([`DOMStringMap`,`NamedNodeMap`]),h=/^(?:HTML\w*Collection|NodeList)$/;function testName(e){return m.has(e)||h.test(e)}const test$4=e=>e&&e.constructor&&!!e.constructor.name&&testName(e.constructor.name);function isNamedNodeMap(e){return e.constructor.name===`NamedNodeMap`}const serialize$4=(e,t,r,o,s,c)=>{let u=e.constructor.name;return++o>t.maxDepth?`[${u}]`:(t.min?``:u+` `)+(m.has(u)?`{${printObjectProperties(isNamedNodeMap(e)?[...e].reduce((e,t)=>(e[t.name]=t.value,e),{}):{...e},t,r,o,s,c)}}`:`[${printListItems([...e],t,r,o,s,c)}]`)},g={serialize:serialize$4,test:test$4};function escapeHTML(e){return e.replaceAll(`<`,`<`).replaceAll(`>`,`>`)}function printProps(e,t,r,o,s,c,u){let d=o+r.indent,p=r.colors;return e.map(e=>{let m=t[e];if(typeof m==`string`&&m[0]===`_`&&m.startsWith(`__vitest_`)&&m.match(/__vitest_\d+__/))return``;let h=u(m,r,d,s,c);return typeof m!=`string`&&(h.includes(`
|
|
2
2
|
`)&&(h=r.spacingOuter+d+h+r.spacingOuter+o),h=`{${h}}`),`${r.spacingInner+o+p.prop.open+e+p.prop.close}=${p.value.open}${h}${p.value.close}`}).join(``)}function printChildren(e,t,r,o,s,c){return e.map(e=>t.spacingOuter+r+(typeof e==`string`?printText(e,t):c(e,t,r,o,s))).join(``)}function printShadowRoot(e,t,r,o,s,c){return t.printShadowRoot===!1?``:[`${t.spacingOuter+r}#shadow-root`,printChildren(e,t,r+t.indent,o,s,c)].join(``)}function printText(e,t){let r=t.colors.content;return r.open+escapeHTML(e)+r.close}function printComment(e,t){let r=t.colors.comment;return`${r.open}<!--${escapeHTML(e)}-->${r.close}`}function printElement(e,t,r,o,s){let c=o.colors.tag;return`${c.open}<${e}${t&&c.close+t+o.spacingOuter+s+c.open}${r?`>${c.close}${r}${o.spacingOuter}${s}${c.open}</${e}`:`${t&&!o.min?``:` `}/`}>${c.close}`}function printElementAsLeaf(e,t){let r=t.colors.tag;return`${r.open}<${e}${r.close} …${r.open} />${r.close}`}const _=/^(?:(?:HTML|SVG)\w*)?Element$/;function testHasAttribute(e){try{return typeof e.hasAttribute==`function`&&e.hasAttribute(`is`)}catch{return!1}}function testNode(e){let t=e.constructor.name,{nodeType:r,tagName:o}=e,s=typeof o==`string`&&o.includes(`-`)||testHasAttribute(e);return r===1&&(_.test(t)||s)||r===3&&t===`Text`||r===8&&t===`Comment`||r===11&&t===`DocumentFragment`}const test$3=e=>e?.constructor?.name&&testNode(e);function nodeIsText(e){return e.nodeType===3}function nodeIsComment(e){return e.nodeType===8}function nodeIsFragment(e){return e.nodeType===11}function filterChildren(e,t){let r=e.filter(e=>e.nodeType!==3||(e.data||``).trim().length>0);return t&&(r=r.filter(t)),r}function serializeDOM(e,t,r,o,s,c,u){if(nodeIsText(e))return printText(e.data,t);if(nodeIsComment(e))return printComment(e.data,t);let d=nodeIsFragment(e)?`DocumentFragment`:e.tagName.toLowerCase();if(++o>t.maxDepth)return printElementAsLeaf(d,t);let p=Array.prototype.slice.call(e.childNodes||e.children),m=nodeIsFragment(e)||!e.shadowRoot?[]:Array.prototype.slice.call(e.shadowRoot.children),h=u?filterChildren(p,u):p,g=u?filterChildren(m,u):m;return printElement(d,printProps(nodeIsFragment(e)?[]:Array.from(e.attributes,e=>e.name).sort(),nodeIsFragment(e)?{}:[...e.attributes].reduce((e,t)=>(e[t.name]=t.value,e),{}),t,r+t.indent,o,s,c),(g.length>0?printShadowRoot(g,t,r+t.indent,o,s,c):``)+printChildren(h,t,r+t.indent,o,s,c),t,r)}const serialize$3=(e,t,r,o,s,c)=>serializeDOM(e,t,r,o,s,c);function createDOMElementFilter(e){return{test:test$3,serialize:(t,r,o,s,c,u)=>serializeDOM(t,r,o,s,c,u,e)}}const y={serialize:serialize$3,test:test$3},b=`@@__IMMUTABLE_ORDERED__@@`,getImmutableName=e=>`Immutable.${e}`,printAsLeaf=e=>`[${e}]`;function printImmutableEntries(e,t,r,o,s,c,u){return++o>t.maxDepth?printAsLeaf(getImmutableName(u)):`${getImmutableName(u)+` `}{${printIteratorEntries(e.entries(),t,r,o,s,c)}}`}function getRecordEntries(e){let t=0;return{next(){if(t<e._keys.length){let r=e._keys[t++];return{done:!1,value:[r,e.get(r)]}}return{done:!0,value:void 0}}}}function printImmutableRecord(e,t,r,o,s,c){let u=getImmutableName(e._name||`Record`);return++o>t.maxDepth?printAsLeaf(u):`${u+` `}{${printIteratorEntries(getRecordEntries(e),t,r,o,s,c)}}`}function printImmutableSeq(e,t,r,o,s,c){let u=getImmutableName(`Seq`);return++o>t.maxDepth?printAsLeaf(u):e[`@@__IMMUTABLE_KEYED__@@`]?`${u+` `}{${e._iter||e._object?printIteratorEntries(e.entries(),t,r,o,s,c):`…`}}`:`${u+` `}[${e._iter||e._array||e._collection||e._iterable?printIteratorValues(e.values(),t,r,o,s,c):`…`}]`}function printImmutableValues(e,t,r,o,s,c,u){return++o>t.maxDepth?printAsLeaf(getImmutableName(u)):`${getImmutableName(u)+` `}[${printIteratorValues(e.values(),t,r,o,s,c)}]`}const serialize$2=(e,t,r,o,s,c)=>e[`@@__IMMUTABLE_MAP__@@`]?printImmutableEntries(e,t,r,o,s,c,e[b]?`OrderedMap`:`Map`):e[`@@__IMMUTABLE_LIST__@@`]?printImmutableValues(e,t,r,o,s,c,`List`):e[`@@__IMMUTABLE_SET__@@`]?printImmutableValues(e,t,r,o,s,c,e[b]?`OrderedSet`:`Set`):e[`@@__IMMUTABLE_STACK__@@`]?printImmutableValues(e,t,r,o,s,c,`Stack`):e[`@@__IMMUTABLE_SEQ__@@`]?printImmutableSeq(e,t,r,o,s,c):printImmutableRecord(e,t,r,o,s,c),test$2=e=>e&&(e[`@@__IMMUTABLE_ITERABLE__@@`]===!0||e[`@@__IMMUTABLE_RECORD__@@`]===!0),x={serialize:serialize$2,test:test$2};function getDefaultExportFromCjs(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,`default`)?e.default:e}var S={exports:{}},w={},T
|
|
3
3
|
/**
|
|
4
4
|
* @license React
|