{"version":3,"file":"date-picker-BBCtT16G.mjs","sources":["../../src/components/ui/date-picker/date-picker.tsx"],"sourcesContent":["\"use client\";\n\nimport { format } from \"date-fns\";\nimport { ptBR } from \"date-fns/locale\";\nimport { CalendarDaysIcon, X } from \"lucide-react\";\nimport React from \"react\";\nimport { Button, type ButtonProps } from \"@/components/ui/button\";\nimport { Calendar } from \"@/components/ui/calendar\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/ui/popover\";\nimport { cn } from \"@/lib/utils\";\nimport { tryParseDate } from \"@/utils/date\";\n\nexport interface DatePickerProps\n\textends Omit<React.ComponentProps<typeof Calendar>, \"mode\" | \"selected\" | \"onSelect\"> {\n\t/** Data selecionada (pode ser Date ou string parseável) */\n\tdate: Date | string | undefined | null;\n\n\t/** Função chamada ao selecionar uma data */\n\tsetDate: (date: Date | undefined) => void;\n\n\t/** Texto exibido quando não há data selecionada */\n\tplaceholder?: string;\n\n\t/** ID opcional do botão */\n\tid?: string;\n\n\t/** Props extras para o botão */\n\tbuttonProps?: ButtonProps;\n\n\t/** Props extras para o popover */\n\tpopoverProps?: React.ComponentProps<typeof Popover>;\n\n\t/** Classe extra para o conteúdo do popover */\n\tpopoverContentClassName?: string;\n\n\t/** Classe extra para o botão */\n\tclassName?: string;\n\n\t/**\n\t * Permite desabilitar datas específicas (igual ao Calendar do shadcn)\n\t * Pode ser um boolean, ou uma função que recebe a data e retorna boolean\n\t */\n\tdisabled?: boolean | ((date: Date) => boolean);\n\n\t/**\n\t * Mês padrão a ser mostrado (caso nenhuma data esteja selecionada)\n\t * Por padrão, será o mês atual.\n\t */\n\tdefaultMonth?: Date;\n\n\t/**\n\t * Define se o botão de limpar (X) a data deve ser exibido.\n\t * @default true\n\t */\n\tclearable?: boolean;\n}\n\nexport function DatePicker({\n\tdate,\n\tsetDate,\n\tplaceholder = \"Selecione uma data\",\n\tid = \"date-picker\",\n\tbuttonProps,\n\tpopoverProps,\n\tpopoverContentClassName,\n\tclassName,\n\tdisabled,\n\tdefaultMonth,\n\tclearable = true,\n\t...props\n}: DatePickerProps) {\n\tconst validDate = tryParseDate(date ?? undefined);\n\n\tconst handleClear = (e: React.MouseEvent) => {\n\t\te.stopPropagation();\n\t\tsetDate(undefined);\n\t};\n\n\treturn (\n\t\t<Popover {...popoverProps}>\n\t\t\t<PopoverTrigger asChild>\n\t\t\t\t<Button\n\t\t\t\t\tid={id}\n\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"hover:text-foreground justify-between text-left font-normal\",\n\t\t\t\t\t\t!validDate && \"text-muted-foreground hover:text-muted-foreground\",\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}\n\t\t\t\t\tdisabled={typeof disabled === \"boolean\" ? disabled : undefined}\n\t\t\t\t\t{...buttonProps}\n\t\t\t\t>\n\t\t\t\t\t<div className=\"flex items-center\">\n\t\t\t\t\t\t<CalendarDaysIcon className=\"mr-2 size-4\" />\n\t\t\t\t\t\t{validDate ? format(validDate, \"P\", { locale: ptBR }) : <span>{placeholder}</span>}\n\t\t\t\t\t</div>\n\t\t\t\t\t{validDate && !disabled && clearable && (\n\t\t\t\t\t\t// biome-ignore lint/a11y/useKeyWithClickEvents: clear button action\n\t\t\t\t\t\t// biome-ignore lint/a11y/noStaticElementInteractions: clear button action\n\t\t\t\t\t\t<div onClick={handleClear} className=\"cursor-pointer p-1\">\n\t\t\t\t\t\t\t<X className=\"h-4 w-4 opacity-50 hover:opacity-100\" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</Button>\n\t\t\t</PopoverTrigger>\n\n\t\t\t<PopoverContent className={cn(\"w-auto p-0\", popoverContentClassName)} align=\"start\">\n\t\t\t\t<Calendar\n\t\t\t\t\tautoFocus\n\t\t\t\t\tcaptionLayout=\"dropdown\"\n\t\t\t\t\tselected={validDate}\n\t\t\t\t\tonSelect={(d) => setDate(d)}\n\t\t\t\t\tlocale={ptBR}\n\t\t\t\t\tnumberOfMonths={1}\n\t\t\t\t\tfromYear={2010}\n\t\t\t\t\ttoYear={2040}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tdefaultMonth={validDate ?? defaultMonth ?? new Date()}\n\t\t\t\t\t{...props}\n\t\t\t\t\tmode=\"single\"\n\t\t\t\t/>\n\t\t\t</PopoverContent>\n\t\t</Popover>\n\t);\n}\n"],"names":["DatePicker","date","setDate","placeholder","id","buttonProps","popoverProps","popoverContentClassName","className","disabled","defaultMonth","clearable","props","validDate","tryParseDate","undefined","handleClear","e","stopPropagation","React","Popover","PopoverTrigger","asChild","Button","variant","cn","div","CalendarDaysIcon","format","locale","ptBR","span","onClick","X","PopoverContent","align","Calendar","autoFocus","captionLayout","selected","onSelect","d","numberOfMonths","fromYear","toYear","Date","mode"],"mappings":";;;;;;;;;;AAyDO,SAASA,UAAAA,CAAW,EAC1BC,IAAI,EACJC,OAAO,EACPC,WAAAA,GAAc,oBAAoB,EAClCC,EAAAA,GAAK,aAAa,EAClBC,WAAW,EACXC,YAAY,EACZC,uBAAuB,EACvBC,SAAS,EACTC,QAAQ,EACRC,YAAY,EACZC,SAAAA,GAAY,IAAI,EAChB,GAAGC,KAAAA,EACc,EAAA;IACjB,MAAMC,SAAAA,GAAYC,aAAab,IAAAA,IAAQc,SAAAA,CAAAA;AAEvC,IAAA,MAAMC,cAAc,CAACC,CAAAA,GAAAA;AACpBA,QAAAA,CAAAA,CAAEC,eAAe,EAAA;QACjBhB,OAAAA,CAAQa,SAAAA,CAAAA;AACT,IAAA,CAAA;IAEA,qBACCI,cAAA,CAAA,aAAA,CAACC,OAAAA,EAAYd,YAAAA,gBACZa,cAAA,CAAA,aAAA,CAACE,cAAAA,EAAAA;QAAeC,OAAAA,EAAAA;qBACfH,cAAA,CAAA,aAAA,CAACI,MAAAA,EAAAA;QACAnB,EAAAA,EAAIA,EAAAA;QACJoB,OAAAA,EAAQ,SAAA;AACRhB,QAAAA,SAAAA,EAAWiB,EAAAA,CACV,6DAAA,EACA,CAACZ,SAAAA,IAAa,mDAAA,EACdL,SAAAA,CAAAA;QAEDC,QAAAA,EAAU,OAAOA,QAAAA,KAAa,SAAA,GAAYA,QAAAA,GAAWM,SAAAA;AACpD,QAAA,GAAGV;qBAEJc,cAAA,CAAA,aAAA,CAACO,KAAAA,EAAAA;QAAIlB,SAAAA,EAAU;qBACdW,cAAA,CAAA,aAAA,CAACQ,YAAAA,EAAAA;QAAiBnB,SAAAA,EAAU;QAC3BK,SAAAA,GAAYe,MAAAA,CAAOf,WAAW,GAAA,EAAK;QAAEgB,MAAAA,EAAQC;AAAK,KAAA,CAAA,iBAAKX,6BAACY,MAAAA,EAAAA,IAAAA,EAAM5B,WAAAA,CAAAA,CAAAA,EAE/DU,aAAa,CAACJ,QAAAA,IAAYE;;kBAG1BQ,cAAA,CAAA,aAAA,CAACO,KAAAA,EAAAA;QAAIM,OAAAA,EAAShB,WAAAA;QAAaR,SAAAA,EAAU;qBACpCW,cAAA,CAAA,aAAA,CAACc,CAAAA,EAAAA;QAAEzB,SAAAA,EAAU;yBAMjBW,cAAA,CAAA,aAAA,CAACe,cAAAA,EAAAA;AAAe1B,QAAAA,SAAAA,EAAWiB,GAAG,YAAA,EAAclB,uBAAAA,CAAAA;QAA0B4B,KAAAA,EAAM;qBAC3EhB,cAAA,CAAA,aAAA,CAACiB,QAAAA,EAAAA;QACAC,SAAAA,EAAAA,IAAAA;QACAC,aAAAA,EAAc,UAAA;QACdC,QAAAA,EAAU1B,SAAAA;QACV2B,QAAAA,EAAU,CAACC,IAAMvC,OAAAA,CAAQuC,CAAAA,CAAAA;QACzBZ,MAAAA,EAAQC,IAAAA;QACRY,cAAAA,EAAgB,CAAA;QAChBC,QAAAA,EAAU,IAAA;QACVC,MAAAA,EAAQ,IAAA;QACRnC,QAAAA,EAAUA,QAAAA;QACVC,YAAAA,EAAcG,SAAAA,IAAaH,gBAAgB,IAAImC,IAAAA,EAAAA;AAC9C,QAAA,GAAGjC,KAAK;QACTkC,IAAAA,EAAK;;AAKV;;;;"}