@egose/shadcn-theme 0.0.12 → 0.0.14

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.
Files changed (57) hide show
  1. package/chunk-3FLLI3AT.mjs +74 -0
  2. package/chunk-3FLLI3AT.mjs.map +1 -0
  3. package/{chunk-CN2Y7Q7T.js → chunk-73AY2MAQ.js} +3 -3
  4. package/{chunk-CN2Y7Q7T.js.map → chunk-73AY2MAQ.js.map} +1 -1
  5. package/chunk-AIRT3G2F.js +26 -0
  6. package/chunk-AIRT3G2F.js.map +1 -0
  7. package/chunk-ILE4M6FB.js +74 -0
  8. package/chunk-ILE4M6FB.js.map +1 -0
  9. package/{chunk-QNHDDTYE.mjs → chunk-K34Y62WO.mjs} +3 -3
  10. package/{chunk-QNHDDTYE.mjs.map → chunk-K34Y62WO.mjs.map} +1 -1
  11. package/chunk-SXP4Q3XZ.mjs +26 -0
  12. package/chunk-SXP4Q3XZ.mjs.map +1 -0
  13. package/components/form/date-picker.d.mts +18 -0
  14. package/components/form/date-picker.d.ts +18 -0
  15. package/components/form/date-picker.js +16 -0
  16. package/components/form/date-picker.js.map +1 -0
  17. package/components/form/date-picker.mjs +16 -0
  18. package/components/form/date-picker.mjs.map +1 -0
  19. package/components/form/date-range-picker.d.mts +3 -4
  20. package/components/form/date-range-picker.d.ts +3 -4
  21. package/components/form/date-range-picker.js +24 -27
  22. package/components/form/date-range-picker.js.map +1 -1
  23. package/components/form/date-range-picker.mjs +23 -26
  24. package/components/form/date-range-picker.mjs.map +1 -1
  25. package/components/form/hook-date-picker.d.mts +12 -0
  26. package/components/form/hook-date-picker.d.ts +12 -0
  27. package/components/form/hook-date-picker.js +73 -0
  28. package/components/form/hook-date-picker.js.map +1 -0
  29. package/components/form/hook-date-picker.mjs +73 -0
  30. package/components/form/hook-date-picker.mjs.map +1 -0
  31. package/components/form/hook-text-input.js +3 -3
  32. package/components/form/hook-text-input.js.map +1 -1
  33. package/components/form/hook-text-input.mjs +3 -3
  34. package/components/form/hook-textarea.js +3 -3
  35. package/components/form/hook-textarea.js.map +1 -1
  36. package/components/form/hook-textarea.mjs +3 -3
  37. package/components/form/types.d.mts +5 -0
  38. package/components/form/types.d.ts +5 -0
  39. package/components/form/types.js +1 -0
  40. package/components/form/types.js.map +1 -0
  41. package/components/form/types.mjs +1 -0
  42. package/components/form/types.mjs.map +1 -0
  43. package/components/ui/calendar.js +2 -2
  44. package/components/ui/calendar.mjs +1 -1
  45. package/components/ui/sidebar.js +3 -3
  46. package/components/ui/sidebar.js.map +1 -1
  47. package/components/ui/sidebar.mjs +3 -3
  48. package/components/widgets/dialog-manager/index.js +1 -1
  49. package/components/widgets/dialog-manager/index.js.map +1 -1
  50. package/components/widgets/dialog-manager/index.mjs +1 -1
  51. package/lib/date.d.mts +4 -0
  52. package/lib/date.d.ts +4 -0
  53. package/lib/date.js +10 -0
  54. package/lib/date.js.map +1 -0
  55. package/lib/date.mjs +10 -0
  56. package/lib/date.mjs.map +1 -0
  57. package/package.json +1 -1
@@ -0,0 +1,74 @@
1
+ import {
2
+ Popover,
3
+ PopoverContent,
4
+ PopoverTrigger
5
+ } from "./chunk-M2OVLURH.mjs";
6
+ import {
7
+ Calendar
8
+ } from "./chunk-K34Y62WO.mjs";
9
+ import {
10
+ Button
11
+ } from "./chunk-YFW7UI3E.mjs";
12
+ import {
13
+ isEqualDate
14
+ } from "./chunk-SXP4Q3XZ.mjs";
15
+ import {
16
+ Label
17
+ } from "./chunk-7W42BHVK.mjs";
18
+ import {
19
+ cn
20
+ } from "./chunk-3ONILUYO.mjs";
21
+
22
+ // components/form/date-picker.tsx
23
+ import React, { useEffect, useState } from "react";
24
+ import { format } from "date-fns";
25
+ import { CalendarIcon } from "lucide-react";
26
+ import _kebabCase from "lodash-es/kebabCase";
27
+ function formatDate(date) {
28
+ return format(date, "LLL dd, y");
29
+ }
30
+ function FormDatePicker({
31
+ id,
32
+ name,
33
+ label,
34
+ required = false,
35
+ disabled = false,
36
+ value: initialValue,
37
+ onChange,
38
+ classNames
39
+ }) {
40
+ const dt = initialValue != null ? initialValue : /* @__PURE__ */ new Date();
41
+ const startOfDay = new Date(dt.getFullYear(), dt.getMonth(), dt.getDate());
42
+ const [value, setValue] = useState(startOfDay);
43
+ useEffect(() => {
44
+ onChange(value);
45
+ }, [value]);
46
+ if (!id) id = _kebabCase(name);
47
+ return /* @__PURE__ */ React.createElement("div", { className: cn("date-picker", classNames == null ? void 0 : classNames.wrapper) }, label && /* @__PURE__ */ React.createElement(Label, { htmlFor: id, className: classNames == null ? void 0 : classNames.label, required }, label), /* @__PURE__ */ React.createElement("div", { className: cn("grid gap-2") }, /* @__PURE__ */ React.createElement(Popover, null, /* @__PURE__ */ React.createElement(PopoverTrigger, { asChild: true }, /* @__PURE__ */ React.createElement(
48
+ Button,
49
+ {
50
+ variant: value ? "secondary" : "muted",
51
+ outline: true,
52
+ className: cn("w-[300px] justify-start text-left font-normal")
53
+ },
54
+ /* @__PURE__ */ React.createElement(CalendarIcon, null),
55
+ value ? /* @__PURE__ */ React.createElement(React.Fragment, null, formatDate(value)) : /* @__PURE__ */ React.createElement("span", null, "Pick a date")
56
+ )), /* @__PURE__ */ React.createElement(PopoverContent, { className: "w-auto p-0", align: "start" }, /* @__PURE__ */ React.createElement(
57
+ Calendar,
58
+ {
59
+ mode: "single",
60
+ defaultMonth: value,
61
+ selected: value,
62
+ onSelect: (date) => {
63
+ if (!isEqualDate(value, date)) {
64
+ setValue(date);
65
+ }
66
+ }
67
+ }
68
+ )))));
69
+ }
70
+
71
+ export {
72
+ FormDatePicker
73
+ };
74
+ //# sourceMappingURL=chunk-3FLLI3AT.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../components/form/date-picker.tsx"],"sourcesContent":["'use client';\n\nimport React, { useEffect, useState } from 'react';\nimport { addDays, format, isEqual } from 'date-fns';\nimport { CalendarIcon } from 'lucide-react';\nimport _kebabCase from 'lodash-es/kebabCase';\nimport _isNil from 'lodash-es/isNil';\n\nimport { isEqualDate } from '../../lib/date';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../ui/button';\nimport { Label } from '../ui/label';\nimport { Calendar } from '../ui/calendar';\nimport { Popover, PopoverContent, PopoverTrigger } from '../ui/popover';\n\nfunction formatDate(date: Date) {\n return format(date, 'LLL dd, y');\n}\n\nexport interface FormDatePickerProps {\n id?: string;\n name: string;\n label?: string;\n required?: boolean;\n disabled?: boolean;\n value?: Date;\n onChange: (value?: Date) => void;\n classNames?: {\n wrapper?: string;\n label?: string;\n };\n}\n\nexport function FormDatePicker({\n id,\n name,\n label,\n required = false,\n disabled = false,\n value: initialValue,\n onChange,\n classNames,\n}: FormDatePickerProps) {\n const dt = initialValue ?? new Date();\n const startOfDay = new Date(dt.getFullYear(), dt.getMonth(), dt.getDate());\n const [value, setValue] = useState<Date | undefined>(startOfDay);\n\n useEffect(() => {\n onChange(value);\n }, [value]);\n\n if (!id) id = _kebabCase(name);\n\n return (\n <div className={cn('date-picker', classNames?.wrapper)}>\n {label && (\n <Label htmlFor={id} className={classNames?.label} required={required}>\n {label}\n </Label>\n )}\n <div className={cn('grid gap-2')}>\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant={value ? 'secondary' : 'muted'}\n outline\n className={cn('w-[300px] justify-start text-left font-normal')}\n >\n <CalendarIcon />\n {value ? <>{formatDate(value)}</> : <span>Pick a date</span>}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n defaultMonth={value}\n selected={value}\n onSelect={(date) => {\n if (!isEqualDate(value, date)) {\n setValue(date);\n }\n }}\n />\n </PopoverContent>\n </Popover>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAEA,OAAO,SAAS,WAAW,gBAAgB;AAC3C,SAAkB,cAAuB;AACzC,SAAS,oBAAoB;AAC7B,OAAO,gBAAgB;AAUvB,SAAS,WAAW,MAAY;AAC9B,SAAO,OAAO,MAAM,WAAW;AACjC;AAgBO,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,WAAW;AAAA,EACX,OAAO;AAAA,EACP;AAAA,EACA;AACF,GAAwB;AACtB,QAAM,KAAK,sCAAgB,oBAAI,KAAK;AACpC,QAAM,aAAa,IAAI,KAAK,GAAG,YAAY,GAAG,GAAG,SAAS,GAAG,GAAG,QAAQ,CAAC;AACzE,QAAM,CAAC,OAAO,QAAQ,IAAI,SAA2B,UAAU;AAE/D,YAAU,MAAM;AACd,aAAS,KAAK;AAAA,EAChB,GAAG,CAAC,KAAK,CAAC;AAEV,MAAI,CAAC,GAAI,MAAK,WAAW,IAAI;AAE7B,SACE,oCAAC,SAAI,WAAW,GAAG,eAAe,yCAAY,OAAO,KAClD,SACC,oCAAC,SAAM,SAAS,IAAI,WAAW,yCAAY,OAAO,YAC/C,KACH,GAEF,oCAAC,SAAI,WAAW,GAAG,YAAY,KAC7B,oCAAC,eACC,oCAAC,kBAAe,SAAO,QACrB;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,QAAQ,cAAc;AAAA,MAC/B,SAAO;AAAA,MACP,WAAW,GAAG,+CAA+C;AAAA;AAAA,IAE7D,oCAAC,kBAAa;AAAA,IACb,QAAQ,0DAAG,WAAW,KAAK,CAAE,IAAM,oCAAC,cAAK,aAAW;AAAA,EACvD,CACF,GACA,oCAAC,kBAAe,WAAU,cAAa,OAAM,WAC3C;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAc;AAAA,MACd,UAAU;AAAA,MACV,UAAU,CAAC,SAAS;AAClB,YAAI,CAAC,YAAY,OAAO,IAAI,GAAG;AAC7B,mBAAS,IAAI;AAAA,QACf;AAAA,MACF;AAAA;AAAA,EACF,CACF,CACF,CACF,CACF;AAEJ;","names":[]}
@@ -47,9 +47,9 @@ function Calendar(_a) {
47
47
  range_end: "day-range-end !bg-secondary rounded-r-md [&>button]:bg-primary [&>button]:text-primary-foreground [&>button]:hover:bg-primary [&>button]:hover:text-primary-foreground",
48
48
  range_middle: "aria-selected:bg-secondary aria-selected:text-secondary-foreground",
49
49
  selected: _chunkB2G2EZ4Pjs.cn.call(void 0,
50
- props.mode === "range" ? "bg-primary hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground" : "[&>button]:focus:bg-primary [&>button]:focus:text-primary-foreground"
50
+ props.mode === "range" ? "bg-primary hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground" : "rounded-md [&>button]:bg-primary [&>button]:text-primary-foreground [&>button]:hover:bg-primary [&>button]:hover:text-primary-foreground"
51
51
  ),
52
- today: "text-success italic",
52
+ today: "text-success italic [&>button]:underline [&>button]:font-semibold",
53
53
  outside: "day-outside text-muted-foreground opacity-50 !aria-selected:bg-secondary/50 !aria-selected:text-muted-foreground !aria-selected:opacity-30",
54
54
  disabled: "text-muted-foreground opacity-50",
55
55
  hidden: "invisible"
@@ -68,4 +68,4 @@ Calendar.displayName = "Calendar";
68
68
 
69
69
 
70
70
  exports.Calendar = Calendar;
71
- //# sourceMappingURL=chunk-CN2Y7Q7T.js.map
71
+ //# sourceMappingURL=chunk-73AY2MAQ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/ahnjun/projects/egose-shadcn/package/dist/chunk-CN2Y7Q7T.js","../components/ui/calendar.tsx"],"names":["_a","props"],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACA;AACA;AACF,sDAA4B;AAC5B;AACA;ACVA,2EAAuB;AAEvB,2CAA0C;AAC1C,kDAA0B;AAO1B,SAAS,QAAA,CAAS,EAAA,EAA4E;AAA5E,EAAA,IAAA,GAAA,EAAA,EAAA,EAAE,EAAA,SAAA,EAAW,UAAA,EAAY,gBAAA,EAAkB,KAZ7D,EAAA,EAYkB,EAAA,EAAoD,MAAA,EAAA,wCAAA,EAApD,EAAoD,CAAlD,WAAA,EAAW,YAAA,EAAY,iBAAA,CAAA,CAAA;AACzC,EAAA,MAAM,sBAAA,EAAwB,iCAAA;AAAA,IAC5B,6CAAA,EAAiB,OAAA,EAAS,QAAQ,CAAC,CAAA;AAAA,IACnC;AAAA,EACF,CAAA;AAEA,EAAA,uBACE,KAAA,CAAA,aAAA;AAAA,IAAC,yBAAA;AAAA,IAAA,6CAAA;AAAA,MACC,eAAA;AAAA,MACA,SAAA,EAAW,iCAAA,cAAG,EAAgB,SAAS,CAAA;AAAA,MACvC,UAAA,EAAY,6CAAA;AAAA,QACV,KAAA,EAAO,WAAA;AAAA,QACP,MAAA,EAAQ,iEAAA;AAAA,QACR,aAAA,EAAe,gDAAA;AAAA,QACf,UAAA,EAAY,kCAAA;AAAA,QACZ,aAAA,EAAe,qBAAA;AAAA,QACf,GAAA,EAAK,sDAAA;AAAA,QACL,eAAA,EAAiB,qBAAA;AAAA,QACjB,WAAA,EAAa,qBAAA;AAAA,QACb,KAAA,EAAO,wBAAA;AAAA,QACP,QAAA,EAAU,MAAA;AAAA,QACV,OAAA,EAAS,gEAAA;AAAA,QACT,IAAA,EAAM,kBAAA;AAAA,QACN,GAAA,EAAK,iIAAA;AAAA,QACL,UAAA,EAAY,iCAAA;AAAA,UACV,6CAAA,EAAiB,OAAA,EAAS,QAAQ,CAAC,CAAA;AAAA,UACnC;AAAA,QACF,CAAA;AAAA,QACA,WAAA,EACE,0KAAA;AAAA,QACF,SAAA,EACE,wKAAA;AAAA,QACF,YAAA,EAAc,oEAAA;AAAA,QACd,QAAA,EAAU,iCAAA;AAAA,UACR,KAAA,CAAM,KAAA,IAAS,QAAA,EACX,2GAAA,EACA;AAAA,QACN,CAAA;AAAA,QACA,KAAA,EAAO,qBAAA;AAAA,QACP,OAAA,EACE,4IAAA;AAAA,QACF,QAAA,EAAU,kCAAA;AAAA,QACV,MAAA,EAAQ;AAAA,MAAA,CAAA,EACL,UAAA,CAAA;AAAA,MAEL,UAAA,EAAY;AAAA,QACV,OAAA,EAAS,CAACA,GAAAA,EAAAA,GAAc;AAAd,UAAA,IAAKC,OAAAA,EAAA,wCAAA,GAALD,EAAK,CAAA,CAAA,CAAA;AACb,UAAA,OAAAC,MAAAA,CAAM,YAAA,IAAgB,OAAA,kBACpB,KAAA,CAAA,aAAA,CAAC,wBAAA,EAAA,4CAAA,6CAAA,CAAA,CAAA,EAAgBA,MAAAA,CAAAA,EAAhB,EAAuB,SAAA,EAAU,UAAA,CAAA,CAAU,EAAA,kBAE5C,KAAA,CAAA,aAAA,CAAC,yBAAA,EAAA,4CAAA,6CAAA,CAAA,CAAA,EAAiBA,MAAAA,CAAAA,EAAjB,EAAwB,SAAA,EAAU,UAAA,CAAA,CAAU,CAAA;AAAA,QAAA;AAAA,MAEnD;AAAA,IAAA,CAAA,EACI,KAAA;AAAA,EACN,CAAA;AAEJ;AACA,QAAA,CAAS,YAAA,EAAc,UAAA;ADHvB;AACA;AACE;AACF,4BAAC","file":"/home/ahnjun/projects/egose-shadcn/package/dist/chunk-CN2Y7Q7T.js","sourcesContent":[null,"'use client';\n\nimport * as React from 'react';\nimport type { ComponentProps } from 'react';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { DayPicker } from 'react-day-picker';\n\nimport { cn } from '../../lib/utils';\nimport { buttonVariants } from '../../components/ui/button';\n\nexport type CalendarProps = ComponentProps<typeof DayPicker>;\n\nfunction Calendar({ className, classNames, showOutsideDays = true, ...props }: CalendarProps) {\n const navigationButtonClass = cn(\n buttonVariants({ variant: 'light' }),\n 'h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100 z-10',\n );\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn('p-3 bg-white', className)}\n classNames={{\n month: 'space-y-4',\n months: 'flex flex-col sm:flex-row space-y-4 sm:space-y-0 relative gap-2',\n month_caption: 'flex justify-center pt-1 relative items-center',\n month_grid: 'w-full border-collapse space-y-1',\n caption_label: 'text-sm font-medium',\n nav: 'flex items-center justify-between absolute inset-x-0',\n button_previous: navigationButtonClass,\n button_next: navigationButtonClass,\n weeks: 'w-full border-collapse',\n weekdays: 'flex',\n weekday: 'text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]',\n week: 'flex w-full mt-2',\n day: 'h-9 w-9 p-0 font-normal aria-selected:opacity-100 rounded-none first:aria-selected:rounded-l-md last:aria-selected:rounded-r-md',\n day_button: cn(\n buttonVariants({ variant: 'ghost' }),\n 'h-9 w-9 text-center text-sm p-0 relative focus-within:relative focus-within:z-20',\n ),\n range_start:\n 'day-range-start !bg-secondary rounded-l-md [&>button]:bg-primary [&>button]:text-primary-foreground [&>button]:hover:bg-primary [&>button]:hover:text-primary-foreground',\n range_end:\n 'day-range-end !bg-secondary rounded-r-md [&>button]:bg-primary [&>button]:text-primary-foreground [&>button]:hover:bg-primary [&>button]:hover:text-primary-foreground',\n range_middle: 'aria-selected:bg-secondary aria-selected:text-secondary-foreground',\n selected: cn(\n props.mode === 'range'\n ? 'bg-primary hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground'\n : '[&>button]:focus:bg-primary [&>button]:focus:text-primary-foreground',\n ),\n today: 'text-success italic',\n outside:\n 'day-outside text-muted-foreground opacity-50 !aria-selected:bg-secondary/50 !aria-selected:text-muted-foreground !aria-selected:opacity-30',\n disabled: 'text-muted-foreground opacity-50',\n hidden: 'invisible',\n ...classNames,\n }}\n components={{\n Chevron: ({ ...props }) =>\n props.orientation === 'left' ? (\n <ChevronLeft {...props} className=\"h-4 w-4\" />\n ) : (\n <ChevronRight {...props} className=\"h-4 w-4\" />\n ),\n }}\n {...props}\n />\n );\n}\nCalendar.displayName = 'Calendar';\n\nexport { Calendar };\n"]}
1
+ {"version":3,"sources":["/home/ahnjun/projects/egose-shadcn/package/dist/chunk-73AY2MAQ.js","../components/ui/calendar.tsx"],"names":["_a","props"],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACA;AACA;AACF,sDAA4B;AAC5B;AACA;ACVA,2EAAuB;AAEvB,2CAA0C;AAC1C,kDAA0B;AAO1B,SAAS,QAAA,CAAS,EAAA,EAA4E;AAA5E,EAAA,IAAA,GAAA,EAAA,EAAA,EAAE,EAAA,SAAA,EAAW,UAAA,EAAY,gBAAA,EAAkB,KAZ7D,EAAA,EAYkB,EAAA,EAAoD,MAAA,EAAA,wCAAA,EAApD,EAAoD,CAAlD,WAAA,EAAW,YAAA,EAAY,iBAAA,CAAA,CAAA;AACzC,EAAA,MAAM,sBAAA,EAAwB,iCAAA;AAAA,IAC5B,6CAAA,EAAiB,OAAA,EAAS,QAAQ,CAAC,CAAA;AAAA,IACnC;AAAA,EACF,CAAA;AAEA,EAAA,uBACE,KAAA,CAAA,aAAA;AAAA,IAAC,yBAAA;AAAA,IAAA,6CAAA;AAAA,MACC,eAAA;AAAA,MACA,SAAA,EAAW,iCAAA,cAAG,EAAgB,SAAS,CAAA;AAAA,MACvC,UAAA,EAAY,6CAAA;AAAA,QACV,KAAA,EAAO,WAAA;AAAA,QACP,MAAA,EAAQ,iEAAA;AAAA,QACR,aAAA,EAAe,gDAAA;AAAA,QACf,UAAA,EAAY,kCAAA;AAAA,QACZ,aAAA,EAAe,qBAAA;AAAA,QACf,GAAA,EAAK,sDAAA;AAAA,QACL,eAAA,EAAiB,qBAAA;AAAA,QACjB,WAAA,EAAa,qBAAA;AAAA,QACb,KAAA,EAAO,wBAAA;AAAA,QACP,QAAA,EAAU,MAAA;AAAA,QACV,OAAA,EAAS,gEAAA;AAAA,QACT,IAAA,EAAM,kBAAA;AAAA,QACN,GAAA,EAAK,iIAAA;AAAA,QACL,UAAA,EAAY,iCAAA;AAAA,UACV,6CAAA,EAAiB,OAAA,EAAS,QAAQ,CAAC,CAAA;AAAA,UACnC;AAAA,QACF,CAAA;AAAA,QACA,WAAA,EACE,0KAAA;AAAA,QACF,SAAA,EACE,wKAAA;AAAA,QACF,YAAA,EAAc,oEAAA;AAAA,QACd,QAAA,EAAU,iCAAA;AAAA,UACR,KAAA,CAAM,KAAA,IAAS,QAAA,EACX,2GAAA,EACA;AAAA,QACN,CAAA;AAAA,QACA,KAAA,EAAO,mEAAA;AAAA,QACP,OAAA,EACE,4IAAA;AAAA,QACF,QAAA,EAAU,kCAAA;AAAA,QACV,MAAA,EAAQ;AAAA,MAAA,CAAA,EACL,UAAA,CAAA;AAAA,MAEL,UAAA,EAAY;AAAA,QACV,OAAA,EAAS,CAACA,GAAAA,EAAAA,GAAc;AAAd,UAAA,IAAKC,OAAAA,EAAA,wCAAA,GAALD,EAAK,CAAA,CAAA,CAAA;AACb,UAAA,OAAAC,MAAAA,CAAM,YAAA,IAAgB,OAAA,kBACpB,KAAA,CAAA,aAAA,CAAC,wBAAA,EAAA,4CAAA,6CAAA,CAAA,CAAA,EAAgBA,MAAAA,CAAAA,EAAhB,EAAuB,SAAA,EAAU,UAAA,CAAA,CAAU,EAAA,kBAE5C,KAAA,CAAA,aAAA,CAAC,yBAAA,EAAA,4CAAA,6CAAA,CAAA,CAAA,EAAiBA,MAAAA,CAAAA,EAAjB,EAAwB,SAAA,EAAU,UAAA,CAAA,CAAU,CAAA;AAAA,QAAA;AAAA,MAEnD;AAAA,IAAA,CAAA,EACI,KAAA;AAAA,EACN,CAAA;AAEJ;AACA,QAAA,CAAS,YAAA,EAAc,UAAA;ADHvB;AACA;AACE;AACF,4BAAC","file":"/home/ahnjun/projects/egose-shadcn/package/dist/chunk-73AY2MAQ.js","sourcesContent":[null,"'use client';\n\nimport * as React from 'react';\nimport type { ComponentProps } from 'react';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { DayPicker } from 'react-day-picker';\n\nimport { cn } from '../../lib/utils';\nimport { buttonVariants } from '../../components/ui/button';\n\nexport type CalendarProps = ComponentProps<typeof DayPicker>;\n\nfunction Calendar({ className, classNames, showOutsideDays = true, ...props }: CalendarProps) {\n const navigationButtonClass = cn(\n buttonVariants({ variant: 'light' }),\n 'h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100 z-10',\n );\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn('p-3 bg-white', className)}\n classNames={{\n month: 'space-y-4',\n months: 'flex flex-col sm:flex-row space-y-4 sm:space-y-0 relative gap-2',\n month_caption: 'flex justify-center pt-1 relative items-center',\n month_grid: 'w-full border-collapse space-y-1',\n caption_label: 'text-sm font-medium',\n nav: 'flex items-center justify-between absolute inset-x-0',\n button_previous: navigationButtonClass,\n button_next: navigationButtonClass,\n weeks: 'w-full border-collapse',\n weekdays: 'flex',\n weekday: 'text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]',\n week: 'flex w-full mt-2',\n day: 'h-9 w-9 p-0 font-normal aria-selected:opacity-100 rounded-none first:aria-selected:rounded-l-md last:aria-selected:rounded-r-md',\n day_button: cn(\n buttonVariants({ variant: 'ghost' }),\n 'h-9 w-9 text-center text-sm p-0 relative focus-within:relative focus-within:z-20',\n ),\n range_start:\n 'day-range-start !bg-secondary rounded-l-md [&>button]:bg-primary [&>button]:text-primary-foreground [&>button]:hover:bg-primary [&>button]:hover:text-primary-foreground',\n range_end:\n 'day-range-end !bg-secondary rounded-r-md [&>button]:bg-primary [&>button]:text-primary-foreground [&>button]:hover:bg-primary [&>button]:hover:text-primary-foreground',\n range_middle: 'aria-selected:bg-secondary aria-selected:text-secondary-foreground',\n selected: cn(\n props.mode === 'range'\n ? 'bg-primary hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground'\n : 'rounded-md [&>button]:bg-primary [&>button]:text-primary-foreground [&>button]:hover:bg-primary [&>button]:hover:text-primary-foreground',\n ),\n today: 'text-success italic [&>button]:underline [&>button]:font-semibold',\n outside:\n 'day-outside text-muted-foreground opacity-50 !aria-selected:bg-secondary/50 !aria-selected:text-muted-foreground !aria-selected:opacity-30',\n disabled: 'text-muted-foreground opacity-50',\n hidden: 'invisible',\n ...classNames,\n }}\n components={{\n Chevron: ({ ...props }) =>\n props.orientation === 'left' ? (\n <ChevronLeft {...props} className=\"h-4 w-4\" />\n ) : (\n <ChevronRight {...props} className=\"h-4 w-4\" />\n ),\n }}\n {...props}\n />\n );\n}\nCalendar.displayName = 'Calendar';\n\nexport { Calendar };\n"]}
@@ -0,0 +1,26 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }// lib/date.ts
2
+ var _isEqual = require('date-fns/isEqual');
3
+ var _isNil2 = require('lodash-es/isNil'); var _isNil3 = _interopRequireDefault(_isNil2);
4
+ function isEqualDate(dt1, dt2) {
5
+ const nildt1 = _isNil3.default.call(void 0, dt1);
6
+ const nildt2 = _isNil3.default.call(void 0, dt2);
7
+ if (nildt1) dt1 = void 0;
8
+ if (nildt2) dt2 = void 0;
9
+ if (nildt1 || nildt2) {
10
+ return nildt1 === nildt2;
11
+ }
12
+ return _isEqual.isEqual.call(void 0, dt1, dt2);
13
+ }
14
+ function isEqualDates(dts1, dts2) {
15
+ const dts11 = dts1[0];
16
+ const dts12 = dts1[1];
17
+ const dts21 = dts2[0];
18
+ const dts22 = dts2[1];
19
+ return isEqualDate(dts11, dts21) && isEqualDate(dts12, dts22);
20
+ }
21
+
22
+
23
+
24
+
25
+ exports.isEqualDate = isEqualDate; exports.isEqualDates = isEqualDates;
26
+ //# sourceMappingURL=chunk-AIRT3G2F.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/ahnjun/projects/egose-shadcn/package/dist/chunk-AIRT3G2F.js","../lib/date.ts"],"names":[],"mappings":"AAAA;ACAA,2CAAwB;AACxB,wFAAmB;AAEZ,SAAS,WAAA,CAAY,GAAA,EAAuB,GAAA,EAAuB;AACxE,EAAA,MAAM,OAAA,EAAS,6BAAA,GAAU,CAAA;AACzB,EAAA,MAAM,OAAA,EAAS,6BAAA,GAAU,CAAA;AAEzB,EAAA,GAAA,CAAI,MAAA,EAAQ,IAAA,EAAM,KAAA,CAAA;AAClB,EAAA,GAAA,CAAI,MAAA,EAAQ,IAAA,EAAM,KAAA,CAAA;AAElB,EAAA,GAAA,CAAI,OAAA,GAAU,MAAA,EAAQ;AACpB,IAAA,OAAO,OAAA,IAAW,MAAA;AAAA,EACpB;AAEA,EAAA,OAAO,8BAAA,GAAQ,EAAa,GAAW,CAAA;AACzC;AAEO,SAAS,YAAA,CAAa,IAAA,EAA4C,IAAA,EAA4C;AACnH,EAAA,MAAM,MAAA,EAAQ,IAAA,CAAK,CAAC,CAAA;AACpB,EAAA,MAAM,MAAA,EAAQ,IAAA,CAAK,CAAC,CAAA;AACpB,EAAA,MAAM,MAAA,EAAQ,IAAA,CAAK,CAAC,CAAA;AACpB,EAAA,MAAM,MAAA,EAAQ,IAAA,CAAK,CAAC,CAAA;AAEpB,EAAA,OAAO,WAAA,CAAY,KAAA,EAAO,KAAK,EAAA,GAAK,WAAA,CAAY,KAAA,EAAO,KAAK,CAAA;AAC9D;ADJA;AACA;AACE;AACA;AACF,uEAAC","file":"/home/ahnjun/projects/egose-shadcn/package/dist/chunk-AIRT3G2F.js","sourcesContent":[null,"import { isEqual } from 'date-fns/isEqual';\nimport _isNil from 'lodash-es/isNil';\n\nexport function isEqualDate(dt1: Date | undefined, dt2: Date | undefined) {\n const nildt1 = _isNil(dt1);\n const nildt2 = _isNil(dt2);\n\n if (nildt1) dt1 = undefined;\n if (nildt2) dt2 = undefined;\n\n if (nildt1 || nildt2) {\n return nildt1 === nildt2;\n }\n\n return isEqual(dt1 as Date, dt2 as Date);\n}\n\nexport function isEqualDates(dts1: [Date | undefined, Date | undefined], dts2: [Date | undefined, Date | undefined]) {\n const dts11 = dts1[0];\n const dts12 = dts1[1];\n const dts21 = dts2[0];\n const dts22 = dts2[1];\n\n return isEqualDate(dts11, dts21) && isEqualDate(dts12, dts22);\n}\n"]}
@@ -0,0 +1,74 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
+
3
+
4
+
5
+ var _chunkZ33UILCVjs = require('./chunk-Z33UILCV.js');
6
+
7
+
8
+ var _chunk73AY2MAQjs = require('./chunk-73AY2MAQ.js');
9
+
10
+
11
+ var _chunkY2EVJJLMjs = require('./chunk-Y2EVJJLM.js');
12
+
13
+
14
+ var _chunkAIRT3G2Fjs = require('./chunk-AIRT3G2F.js');
15
+
16
+
17
+ var _chunkAXZDZXCYjs = require('./chunk-AXZDZXCY.js');
18
+
19
+
20
+ var _chunkB2G2EZ4Pjs = require('./chunk-B2G2EZ4P.js');
21
+
22
+ // components/form/date-picker.tsx
23
+ var _react = require('react'); var _react2 = _interopRequireDefault(_react);
24
+ var _datefns = require('date-fns');
25
+ var _lucidereact = require('lucide-react');
26
+ var _kebabCase2 = require('lodash-es/kebabCase'); var _kebabCase3 = _interopRequireDefault(_kebabCase2);
27
+ function formatDate(date) {
28
+ return _datefns.format.call(void 0, date, "LLL dd, y");
29
+ }
30
+ function FormDatePicker({
31
+ id,
32
+ name,
33
+ label,
34
+ required = false,
35
+ disabled = false,
36
+ value: initialValue,
37
+ onChange,
38
+ classNames
39
+ }) {
40
+ const dt = initialValue != null ? initialValue : /* @__PURE__ */ new Date();
41
+ const startOfDay = new Date(dt.getFullYear(), dt.getMonth(), dt.getDate());
42
+ const [value, setValue] = _react.useState.call(void 0, startOfDay);
43
+ _react.useEffect.call(void 0, () => {
44
+ onChange(value);
45
+ }, [value]);
46
+ if (!id) id = _kebabCase3.default.call(void 0, name);
47
+ return /* @__PURE__ */ _react2.default.createElement("div", { className: _chunkB2G2EZ4Pjs.cn.call(void 0, "date-picker", classNames == null ? void 0 : classNames.wrapper) }, label && /* @__PURE__ */ _react2.default.createElement(_chunkAXZDZXCYjs.Label, { htmlFor: id, className: classNames == null ? void 0 : classNames.label, required }, label), /* @__PURE__ */ _react2.default.createElement("div", { className: _chunkB2G2EZ4Pjs.cn.call(void 0, "grid gap-2") }, /* @__PURE__ */ _react2.default.createElement(_chunkZ33UILCVjs.Popover, null, /* @__PURE__ */ _react2.default.createElement(_chunkZ33UILCVjs.PopoverTrigger, { asChild: true }, /* @__PURE__ */ _react2.default.createElement(
48
+ _chunkY2EVJJLMjs.Button,
49
+ {
50
+ variant: value ? "secondary" : "muted",
51
+ outline: true,
52
+ className: _chunkB2G2EZ4Pjs.cn.call(void 0, "w-[300px] justify-start text-left font-normal")
53
+ },
54
+ /* @__PURE__ */ _react2.default.createElement(_lucidereact.CalendarIcon, null),
55
+ value ? /* @__PURE__ */ _react2.default.createElement(_react2.default.Fragment, null, formatDate(value)) : /* @__PURE__ */ _react2.default.createElement("span", null, "Pick a date")
56
+ )), /* @__PURE__ */ _react2.default.createElement(_chunkZ33UILCVjs.PopoverContent, { className: "w-auto p-0", align: "start" }, /* @__PURE__ */ _react2.default.createElement(
57
+ _chunk73AY2MAQjs.Calendar,
58
+ {
59
+ mode: "single",
60
+ defaultMonth: value,
61
+ selected: value,
62
+ onSelect: (date) => {
63
+ if (!_chunkAIRT3G2Fjs.isEqualDate.call(void 0, value, date)) {
64
+ setValue(date);
65
+ }
66
+ }
67
+ }
68
+ )))));
69
+ }
70
+
71
+
72
+
73
+ exports.FormDatePicker = FormDatePicker;
74
+ //# sourceMappingURL=chunk-ILE4M6FB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/ahnjun/projects/egose-shadcn/package/dist/chunk-ILE4M6FB.js","../components/form/date-picker.tsx"],"names":[],"mappings":"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","file":"/home/ahnjun/projects/egose-shadcn/package/dist/chunk-ILE4M6FB.js","sourcesContent":[null,"'use client';\n\nimport React, { useEffect, useState } from 'react';\nimport { addDays, format, isEqual } from 'date-fns';\nimport { CalendarIcon } from 'lucide-react';\nimport _kebabCase from 'lodash-es/kebabCase';\nimport _isNil from 'lodash-es/isNil';\n\nimport { isEqualDate } from '../../lib/date';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../ui/button';\nimport { Label } from '../ui/label';\nimport { Calendar } from '../ui/calendar';\nimport { Popover, PopoverContent, PopoverTrigger } from '../ui/popover';\n\nfunction formatDate(date: Date) {\n return format(date, 'LLL dd, y');\n}\n\nexport interface FormDatePickerProps {\n id?: string;\n name: string;\n label?: string;\n required?: boolean;\n disabled?: boolean;\n value?: Date;\n onChange: (value?: Date) => void;\n classNames?: {\n wrapper?: string;\n label?: string;\n };\n}\n\nexport function FormDatePicker({\n id,\n name,\n label,\n required = false,\n disabled = false,\n value: initialValue,\n onChange,\n classNames,\n}: FormDatePickerProps) {\n const dt = initialValue ?? new Date();\n const startOfDay = new Date(dt.getFullYear(), dt.getMonth(), dt.getDate());\n const [value, setValue] = useState<Date | undefined>(startOfDay);\n\n useEffect(() => {\n onChange(value);\n }, [value]);\n\n if (!id) id = _kebabCase(name);\n\n return (\n <div className={cn('date-picker', classNames?.wrapper)}>\n {label && (\n <Label htmlFor={id} className={classNames?.label} required={required}>\n {label}\n </Label>\n )}\n <div className={cn('grid gap-2')}>\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant={value ? 'secondary' : 'muted'}\n outline\n className={cn('w-[300px] justify-start text-left font-normal')}\n >\n <CalendarIcon />\n {value ? <>{formatDate(value)}</> : <span>Pick a date</span>}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n defaultMonth={value}\n selected={value}\n onSelect={(date) => {\n if (!isEqualDate(value, date)) {\n setValue(date);\n }\n }}\n />\n </PopoverContent>\n </Popover>\n </div>\n </div>\n );\n}\n"]}
@@ -47,9 +47,9 @@ function Calendar(_a) {
47
47
  range_end: "day-range-end !bg-secondary rounded-r-md [&>button]:bg-primary [&>button]:text-primary-foreground [&>button]:hover:bg-primary [&>button]:hover:text-primary-foreground",
48
48
  range_middle: "aria-selected:bg-secondary aria-selected:text-secondary-foreground",
49
49
  selected: cn(
50
- props.mode === "range" ? "bg-primary hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground" : "[&>button]:focus:bg-primary [&>button]:focus:text-primary-foreground"
50
+ props.mode === "range" ? "bg-primary hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground" : "rounded-md [&>button]:bg-primary [&>button]:text-primary-foreground [&>button]:hover:bg-primary [&>button]:hover:text-primary-foreground"
51
51
  ),
52
- today: "text-success italic",
52
+ today: "text-success italic [&>button]:underline [&>button]:font-semibold",
53
53
  outside: "day-outside text-muted-foreground opacity-50 !aria-selected:bg-secondary/50 !aria-selected:text-muted-foreground !aria-selected:opacity-30",
54
54
  disabled: "text-muted-foreground opacity-50",
55
55
  hidden: "invisible"
@@ -68,4 +68,4 @@ Calendar.displayName = "Calendar";
68
68
  export {
69
69
  Calendar
70
70
  };
71
- //# sourceMappingURL=chunk-QNHDDTYE.mjs.map
71
+ //# sourceMappingURL=chunk-K34Y62WO.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../components/ui/calendar.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport type { ComponentProps } from 'react';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { DayPicker } from 'react-day-picker';\n\nimport { cn } from '../../lib/utils';\nimport { buttonVariants } from '../../components/ui/button';\n\nexport type CalendarProps = ComponentProps<typeof DayPicker>;\n\nfunction Calendar({ className, classNames, showOutsideDays = true, ...props }: CalendarProps) {\n const navigationButtonClass = cn(\n buttonVariants({ variant: 'light' }),\n 'h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100 z-10',\n );\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn('p-3 bg-white', className)}\n classNames={{\n month: 'space-y-4',\n months: 'flex flex-col sm:flex-row space-y-4 sm:space-y-0 relative gap-2',\n month_caption: 'flex justify-center pt-1 relative items-center',\n month_grid: 'w-full border-collapse space-y-1',\n caption_label: 'text-sm font-medium',\n nav: 'flex items-center justify-between absolute inset-x-0',\n button_previous: navigationButtonClass,\n button_next: navigationButtonClass,\n weeks: 'w-full border-collapse',\n weekdays: 'flex',\n weekday: 'text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]',\n week: 'flex w-full mt-2',\n day: 'h-9 w-9 p-0 font-normal aria-selected:opacity-100 rounded-none first:aria-selected:rounded-l-md last:aria-selected:rounded-r-md',\n day_button: cn(\n buttonVariants({ variant: 'ghost' }),\n 'h-9 w-9 text-center text-sm p-0 relative focus-within:relative focus-within:z-20',\n ),\n range_start:\n 'day-range-start !bg-secondary rounded-l-md [&>button]:bg-primary [&>button]:text-primary-foreground [&>button]:hover:bg-primary [&>button]:hover:text-primary-foreground',\n range_end:\n 'day-range-end !bg-secondary rounded-r-md [&>button]:bg-primary [&>button]:text-primary-foreground [&>button]:hover:bg-primary [&>button]:hover:text-primary-foreground',\n range_middle: 'aria-selected:bg-secondary aria-selected:text-secondary-foreground',\n selected: cn(\n props.mode === 'range'\n ? 'bg-primary hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground'\n : '[&>button]:focus:bg-primary [&>button]:focus:text-primary-foreground',\n ),\n today: 'text-success italic',\n outside:\n 'day-outside text-muted-foreground opacity-50 !aria-selected:bg-secondary/50 !aria-selected:text-muted-foreground !aria-selected:opacity-30',\n disabled: 'text-muted-foreground opacity-50',\n hidden: 'invisible',\n ...classNames,\n }}\n components={{\n Chevron: ({ ...props }) =>\n props.orientation === 'left' ? (\n <ChevronLeft {...props} className=\"h-4 w-4\" />\n ) : (\n <ChevronRight {...props} className=\"h-4 w-4\" />\n ),\n }}\n {...props}\n />\n );\n}\nCalendar.displayName = 'Calendar';\n\nexport { Calendar };\n"],"mappings":";;;;;;;;;;;;;AAEA,YAAY,WAAW;AAEvB,SAAS,aAAa,oBAAoB;AAC1C,SAAS,iBAAiB;AAO1B,SAAS,SAAS,IAA4E;AAA5E,eAAE,aAAW,YAAY,kBAAkB,KAZ7D,IAYkB,IAAoD,kBAApD,IAAoD,CAAlD,aAAW,cAAY;AACzC,QAAM,wBAAwB;AAAA,IAC5B,eAAe,EAAE,SAAS,QAAQ,CAAC;AAAA,IACnC;AAAA,EACF;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,GAAG,gBAAgB,SAAS;AAAA,MACvC,YAAY;AAAA,QACV,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,eAAe;AAAA,QACf,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,KAAK;AAAA,QACL,iBAAiB;AAAA,QACjB,aAAa;AAAA,QACb,OAAO;AAAA,QACP,UAAU;AAAA,QACV,SAAS;AAAA,QACT,MAAM;AAAA,QACN,KAAK;AAAA,QACL,YAAY;AAAA,UACV,eAAe,EAAE,SAAS,QAAQ,CAAC;AAAA,UACnC;AAAA,QACF;AAAA,QACA,aACE;AAAA,QACF,WACE;AAAA,QACF,cAAc;AAAA,QACd,UAAU;AAAA,UACR,MAAM,SAAS,UACX,6GACA;AAAA,QACN;AAAA,QACA,OAAO;AAAA,QACP,SACE;AAAA,QACF,UAAU;AAAA,QACV,QAAQ;AAAA,SACL;AAAA,MAEL,YAAY;AAAA,QACV,SAAS,CAACA,QAAc;AAAd,cAAKC,SAAA,UAALD,KAAK;AACb,iBAAAC,OAAM,gBAAgB,SACpB,oCAAC,8CAAgBA,SAAhB,EAAuB,WAAU,YAAU,IAE5C,oCAAC,+CAAiBA,SAAjB,EAAwB,WAAU,YAAU;AAAA;AAAA,MAEnD;AAAA,OACI;AAAA,EACN;AAEJ;AACA,SAAS,cAAc;","names":["_a","props"]}
1
+ {"version":3,"sources":["../components/ui/calendar.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport type { ComponentProps } from 'react';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { DayPicker } from 'react-day-picker';\n\nimport { cn } from '../../lib/utils';\nimport { buttonVariants } from '../../components/ui/button';\n\nexport type CalendarProps = ComponentProps<typeof DayPicker>;\n\nfunction Calendar({ className, classNames, showOutsideDays = true, ...props }: CalendarProps) {\n const navigationButtonClass = cn(\n buttonVariants({ variant: 'light' }),\n 'h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100 z-10',\n );\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn('p-3 bg-white', className)}\n classNames={{\n month: 'space-y-4',\n months: 'flex flex-col sm:flex-row space-y-4 sm:space-y-0 relative gap-2',\n month_caption: 'flex justify-center pt-1 relative items-center',\n month_grid: 'w-full border-collapse space-y-1',\n caption_label: 'text-sm font-medium',\n nav: 'flex items-center justify-between absolute inset-x-0',\n button_previous: navigationButtonClass,\n button_next: navigationButtonClass,\n weeks: 'w-full border-collapse',\n weekdays: 'flex',\n weekday: 'text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]',\n week: 'flex w-full mt-2',\n day: 'h-9 w-9 p-0 font-normal aria-selected:opacity-100 rounded-none first:aria-selected:rounded-l-md last:aria-selected:rounded-r-md',\n day_button: cn(\n buttonVariants({ variant: 'ghost' }),\n 'h-9 w-9 text-center text-sm p-0 relative focus-within:relative focus-within:z-20',\n ),\n range_start:\n 'day-range-start !bg-secondary rounded-l-md [&>button]:bg-primary [&>button]:text-primary-foreground [&>button]:hover:bg-primary [&>button]:hover:text-primary-foreground',\n range_end:\n 'day-range-end !bg-secondary rounded-r-md [&>button]:bg-primary [&>button]:text-primary-foreground [&>button]:hover:bg-primary [&>button]:hover:text-primary-foreground',\n range_middle: 'aria-selected:bg-secondary aria-selected:text-secondary-foreground',\n selected: cn(\n props.mode === 'range'\n ? 'bg-primary hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground'\n : 'rounded-md [&>button]:bg-primary [&>button]:text-primary-foreground [&>button]:hover:bg-primary [&>button]:hover:text-primary-foreground',\n ),\n today: 'text-success italic [&>button]:underline [&>button]:font-semibold',\n outside:\n 'day-outside text-muted-foreground opacity-50 !aria-selected:bg-secondary/50 !aria-selected:text-muted-foreground !aria-selected:opacity-30',\n disabled: 'text-muted-foreground opacity-50',\n hidden: 'invisible',\n ...classNames,\n }}\n components={{\n Chevron: ({ ...props }) =>\n props.orientation === 'left' ? (\n <ChevronLeft {...props} className=\"h-4 w-4\" />\n ) : (\n <ChevronRight {...props} className=\"h-4 w-4\" />\n ),\n }}\n {...props}\n />\n );\n}\nCalendar.displayName = 'Calendar';\n\nexport { Calendar };\n"],"mappings":";;;;;;;;;;;;;AAEA,YAAY,WAAW;AAEvB,SAAS,aAAa,oBAAoB;AAC1C,SAAS,iBAAiB;AAO1B,SAAS,SAAS,IAA4E;AAA5E,eAAE,aAAW,YAAY,kBAAkB,KAZ7D,IAYkB,IAAoD,kBAApD,IAAoD,CAAlD,aAAW,cAAY;AACzC,QAAM,wBAAwB;AAAA,IAC5B,eAAe,EAAE,SAAS,QAAQ,CAAC;AAAA,IACnC;AAAA,EACF;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,GAAG,gBAAgB,SAAS;AAAA,MACvC,YAAY;AAAA,QACV,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,eAAe;AAAA,QACf,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,KAAK;AAAA,QACL,iBAAiB;AAAA,QACjB,aAAa;AAAA,QACb,OAAO;AAAA,QACP,UAAU;AAAA,QACV,SAAS;AAAA,QACT,MAAM;AAAA,QACN,KAAK;AAAA,QACL,YAAY;AAAA,UACV,eAAe,EAAE,SAAS,QAAQ,CAAC;AAAA,UACnC;AAAA,QACF;AAAA,QACA,aACE;AAAA,QACF,WACE;AAAA,QACF,cAAc;AAAA,QACd,UAAU;AAAA,UACR,MAAM,SAAS,UACX,6GACA;AAAA,QACN;AAAA,QACA,OAAO;AAAA,QACP,SACE;AAAA,QACF,UAAU;AAAA,QACV,QAAQ;AAAA,SACL;AAAA,MAEL,YAAY;AAAA,QACV,SAAS,CAACA,QAAc;AAAd,cAAKC,SAAA,UAALD,KAAK;AACb,iBAAAC,OAAM,gBAAgB,SACpB,oCAAC,8CAAgBA,SAAhB,EAAuB,WAAU,YAAU,IAE5C,oCAAC,+CAAiBA,SAAjB,EAAwB,WAAU,YAAU;AAAA;AAAA,MAEnD;AAAA,OACI;AAAA,EACN;AAEJ;AACA,SAAS,cAAc;","names":["_a","props"]}
@@ -0,0 +1,26 @@
1
+ // lib/date.ts
2
+ import { isEqual } from "date-fns/isEqual";
3
+ import _isNil from "lodash-es/isNil";
4
+ function isEqualDate(dt1, dt2) {
5
+ const nildt1 = _isNil(dt1);
6
+ const nildt2 = _isNil(dt2);
7
+ if (nildt1) dt1 = void 0;
8
+ if (nildt2) dt2 = void 0;
9
+ if (nildt1 || nildt2) {
10
+ return nildt1 === nildt2;
11
+ }
12
+ return isEqual(dt1, dt2);
13
+ }
14
+ function isEqualDates(dts1, dts2) {
15
+ const dts11 = dts1[0];
16
+ const dts12 = dts1[1];
17
+ const dts21 = dts2[0];
18
+ const dts22 = dts2[1];
19
+ return isEqualDate(dts11, dts21) && isEqualDate(dts12, dts22);
20
+ }
21
+
22
+ export {
23
+ isEqualDate,
24
+ isEqualDates
25
+ };
26
+ //# sourceMappingURL=chunk-SXP4Q3XZ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../lib/date.ts"],"sourcesContent":["import { isEqual } from 'date-fns/isEqual';\nimport _isNil from 'lodash-es/isNil';\n\nexport function isEqualDate(dt1: Date | undefined, dt2: Date | undefined) {\n const nildt1 = _isNil(dt1);\n const nildt2 = _isNil(dt2);\n\n if (nildt1) dt1 = undefined;\n if (nildt2) dt2 = undefined;\n\n if (nildt1 || nildt2) {\n return nildt1 === nildt2;\n }\n\n return isEqual(dt1 as Date, dt2 as Date);\n}\n\nexport function isEqualDates(dts1: [Date | undefined, Date | undefined], dts2: [Date | undefined, Date | undefined]) {\n const dts11 = dts1[0];\n const dts12 = dts1[1];\n const dts21 = dts2[0];\n const dts22 = dts2[1];\n\n return isEqualDate(dts11, dts21) && isEqualDate(dts12, dts22);\n}\n"],"mappings":";AAAA,SAAS,eAAe;AACxB,OAAO,YAAY;AAEZ,SAAS,YAAY,KAAuB,KAAuB;AACxE,QAAM,SAAS,OAAO,GAAG;AACzB,QAAM,SAAS,OAAO,GAAG;AAEzB,MAAI,OAAQ,OAAM;AAClB,MAAI,OAAQ,OAAM;AAElB,MAAI,UAAU,QAAQ;AACpB,WAAO,WAAW;AAAA,EACpB;AAEA,SAAO,QAAQ,KAAa,GAAW;AACzC;AAEO,SAAS,aAAa,MAA4C,MAA4C;AACnH,QAAM,QAAQ,KAAK,CAAC;AACpB,QAAM,QAAQ,KAAK,CAAC;AACpB,QAAM,QAAQ,KAAK,CAAC;AACpB,QAAM,QAAQ,KAAK,CAAC;AAEpB,SAAO,YAAY,OAAO,KAAK,KAAK,YAAY,OAAO,KAAK;AAC9D;","names":[]}
@@ -0,0 +1,18 @@
1
+ import React__default from 'react';
2
+
3
+ interface FormDatePickerProps {
4
+ id?: string;
5
+ name: string;
6
+ label?: string;
7
+ required?: boolean;
8
+ disabled?: boolean;
9
+ value?: Date;
10
+ onChange: (value?: Date) => void;
11
+ classNames?: {
12
+ wrapper?: string;
13
+ label?: string;
14
+ };
15
+ }
16
+ declare function FormDatePicker({ id, name, label, required, disabled, value: initialValue, onChange, classNames, }: FormDatePickerProps): React__default.JSX.Element;
17
+
18
+ export { FormDatePicker, type FormDatePickerProps };
@@ -0,0 +1,18 @@
1
+ import React__default from 'react';
2
+
3
+ interface FormDatePickerProps {
4
+ id?: string;
5
+ name: string;
6
+ label?: string;
7
+ required?: boolean;
8
+ disabled?: boolean;
9
+ value?: Date;
10
+ onChange: (value?: Date) => void;
11
+ classNames?: {
12
+ wrapper?: string;
13
+ label?: string;
14
+ };
15
+ }
16
+ declare function FormDatePicker({ id, name, label, required, disabled, value: initialValue, onChange, classNames, }: FormDatePickerProps): React__default.JSX.Element;
17
+
18
+ export { FormDatePicker, type FormDatePickerProps };
@@ -0,0 +1,16 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
2
+
3
+
4
+ var _chunkILE4M6FBjs = require('../../chunk-ILE4M6FB.js');
5
+ require('../../chunk-Z33UILCV.js');
6
+ require('../../chunk-73AY2MAQ.js');
7
+ require('../../chunk-Y2EVJJLM.js');
8
+ require('../../chunk-MKSF24CS.js');
9
+ require('../../chunk-AIRT3G2F.js');
10
+ require('../../chunk-AXZDZXCY.js');
11
+ require('../../chunk-B2G2EZ4P.js');
12
+ require('../../chunk-2NMEKWO5.js');
13
+
14
+
15
+ exports.FormDatePicker = _chunkILE4M6FBjs.FormDatePicker;
16
+ //# sourceMappingURL=date-picker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/ahnjun/projects/egose-shadcn/package/dist/components/form/date-picker.js"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACE;AACF,0DAAgC;AAChC,mCAAgC;AAChC,mCAAgC;AAChC,mCAAgC;AAChC,mCAAgC;AAChC,mCAAgC;AAChC,mCAAgC;AAChC,mCAAgC;AAChC,mCAAgC;AAChC;AACE;AACF,yDAAC","file":"/home/ahnjun/projects/egose-shadcn/package/dist/components/form/date-picker.js"}
@@ -0,0 +1,16 @@
1
+ "use client";
2
+ import {
3
+ FormDatePicker
4
+ } from "../../chunk-3FLLI3AT.mjs";
5
+ import "../../chunk-M2OVLURH.mjs";
6
+ import "../../chunk-K34Y62WO.mjs";
7
+ import "../../chunk-YFW7UI3E.mjs";
8
+ import "../../chunk-P2MQ6OUG.mjs";
9
+ import "../../chunk-SXP4Q3XZ.mjs";
10
+ import "../../chunk-7W42BHVK.mjs";
11
+ import "../../chunk-3ONILUYO.mjs";
12
+ import "../../chunk-YOSPWY5K.mjs";
13
+ export {
14
+ FormDatePicker
15
+ };
16
+ //# sourceMappingURL=date-picker.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,19 +1,18 @@
1
1
  import React__default from 'react';
2
2
  import { DateRange } from 'react-day-picker';
3
3
 
4
- declare function isEqualDate(dt1: Date | undefined, dt2: Date | undefined): boolean;
5
- declare function isEqualDates(dts1: [Date | undefined, Date | undefined], dts2: [Date | undefined, Date | undefined]): boolean;
6
4
  interface FormDateRangePickerProps {
7
5
  id?: string;
8
6
  name: string;
9
7
  label?: string;
10
8
  required?: boolean;
9
+ value?: DateRange;
11
10
  onChange: (value: DateRange | undefined) => void;
12
11
  classNames?: {
13
12
  wrapper?: string;
14
13
  label?: string;
15
14
  };
16
15
  }
17
- declare function FormDateRangePicker({ id, name, label, required, onChange, classNames, }: FormDateRangePickerProps): React__default.JSX.Element;
16
+ declare function FormDateRangePicker({ id, name, label, required, value: initialValue, onChange, classNames, }: FormDateRangePickerProps): React__default.JSX.Element;
18
17
 
19
- export { FormDateRangePicker, type FormDateRangePickerProps, isEqualDate, isEqualDates };
18
+ export { FormDateRangePicker, type FormDateRangePickerProps };
@@ -1,19 +1,18 @@
1
1
  import React__default from 'react';
2
2
  import { DateRange } from 'react-day-picker';
3
3
 
4
- declare function isEqualDate(dt1: Date | undefined, dt2: Date | undefined): boolean;
5
- declare function isEqualDates(dts1: [Date | undefined, Date | undefined], dts2: [Date | undefined, Date | undefined]): boolean;
6
4
  interface FormDateRangePickerProps {
7
5
  id?: string;
8
6
  name: string;
9
7
  label?: string;
10
8
  required?: boolean;
9
+ value?: DateRange;
11
10
  onChange: (value: DateRange | undefined) => void;
12
11
  classNames?: {
13
12
  wrapper?: string;
14
13
  label?: string;
15
14
  };
16
15
  }
17
- declare function FormDateRangePicker({ id, name, label, required, onChange, classNames, }: FormDateRangePickerProps): React__default.JSX.Element;
16
+ declare function FormDateRangePicker({ id, name, label, required, value: initialValue, onChange, classNames, }: FormDateRangePickerProps): React__default.JSX.Element;
18
17
 
19
- export { FormDateRangePicker, type FormDateRangePickerProps, isEqualDate, isEqualDates };
18
+ export { FormDateRangePicker, type FormDateRangePickerProps };
@@ -6,13 +6,16 @@
6
6
  var _chunkZ33UILCVjs = require('../../chunk-Z33UILCV.js');
7
7
 
8
8
 
9
- var _chunkCN2Y7Q7Tjs = require('../../chunk-CN2Y7Q7T.js');
9
+ var _chunk73AY2MAQjs = require('../../chunk-73AY2MAQ.js');
10
10
 
11
11
 
12
12
  var _chunkY2EVJJLMjs = require('../../chunk-Y2EVJJLM.js');
13
13
  require('../../chunk-MKSF24CS.js');
14
14
 
15
15
 
16
+ var _chunkAIRT3G2Fjs = require('../../chunk-AIRT3G2F.js');
17
+
18
+
16
19
  var _chunkAXZDZXCYjs = require('../../chunk-AXZDZXCY.js');
17
20
 
18
21
 
@@ -24,39 +27,35 @@ var _react = require('react'); var _react2 = _interopRequireDefault(_react);
24
27
  var _datefns = require('date-fns');
25
28
  var _lucidereact = require('lucide-react');
26
29
  var _kebabCase2 = require('lodash-es/kebabCase'); var _kebabCase3 = _interopRequireDefault(_kebabCase2);
27
- var _isNil2 = require('lodash-es/isNil'); var _isNil3 = _interopRequireDefault(_isNil2);
28
30
  function formatDate(date) {
29
31
  return _datefns.format.call(void 0, date, "LLL dd, y");
30
32
  }
31
- function isEqualDate(dt1, dt2) {
32
- const nildt1 = _isNil3.default.call(void 0, dt1);
33
- const nildt2 = _isNil3.default.call(void 0, dt2);
34
- if (nildt1) dt1 = void 0;
35
- if (nildt2) dt2 = void 0;
36
- if (nildt1 || nildt2) {
37
- return nildt1 === nildt2;
38
- }
39
- return _datefns.isEqual.call(void 0, dt1, dt2);
40
- }
41
- function isEqualDates(dts1, dts2) {
42
- const dts11 = dts1[0];
43
- const dts12 = dts1[1];
44
- const dts21 = dts2[0];
45
- const dts22 = dts2[1];
46
- return isEqualDate(dts11, dts21) && isEqualDate(dts12, dts22);
47
- }
48
33
  function FormDateRangePicker({
49
34
  id,
50
35
  name,
51
36
  label,
52
37
  required = false,
38
+ value: initialValue,
53
39
  onChange,
54
40
  classNames
55
41
  }) {
56
- const now = /* @__PURE__ */ new Date();
42
+ var _a, _b;
43
+ let initialFrom;
44
+ let initialTo;
45
+ if (initialValue) {
46
+ const from = (_a = initialValue.from) != null ? _a : /* @__PURE__ */ new Date();
47
+ const to = (_b = initialValue.to) != null ? _b : /* @__PURE__ */ new Date();
48
+ initialFrom = new Date(from.getFullYear(), from.getMonth(), from.getDate());
49
+ initialTo = new Date(to.getFullYear(), to.getMonth(), to.getDate());
50
+ } else {
51
+ const now = /* @__PURE__ */ new Date();
52
+ const startOfDay = new Date(now.getFullYear(), now.getMonth(), now.getDate());
53
+ initialFrom = startOfDay;
54
+ initialTo = startOfDay;
55
+ }
57
56
  const [value, setValue] = _react.useState.call(void 0, {
58
- from: now,
59
- to: now
57
+ from: initialFrom,
58
+ to: initialTo
60
59
  });
61
60
  _react.useEffect.call(void 0, () => {
62
61
  onChange(value);
@@ -72,13 +71,13 @@ function FormDateRangePicker({
72
71
  /* @__PURE__ */ _react2.default.createElement(_lucidereact.CalendarIcon, null),
73
72
  (value == null ? void 0 : value.from) ? value.to ? /* @__PURE__ */ _react2.default.createElement(_react2.default.Fragment, null, formatDate(value.from), " - ", formatDate(value.to)) : formatDate(value.from) : /* @__PURE__ */ _react2.default.createElement("span", null, "Pick a date")
74
73
  )), /* @__PURE__ */ _react2.default.createElement(_chunkZ33UILCVjs.PopoverContent, { className: "w-auto p-0", align: "start" }, /* @__PURE__ */ _react2.default.createElement(
75
- _chunkCN2Y7Q7Tjs.Calendar,
74
+ _chunk73AY2MAQjs.Calendar,
76
75
  {
77
76
  mode: "range",
78
77
  defaultMonth: value == null ? void 0 : value.from,
79
78
  selected: value,
80
79
  onSelect: (dateRange) => {
81
- if (!isEqualDates([value == null ? void 0 : value.from, value == null ? void 0 : value.to], [dateRange == null ? void 0 : dateRange.from, dateRange == null ? void 0 : dateRange.to])) {
80
+ if (!_chunkAIRT3G2Fjs.isEqualDates.call(void 0, [value == null ? void 0 : value.from, value == null ? void 0 : value.to], [dateRange == null ? void 0 : dateRange.from, dateRange == null ? void 0 : dateRange.to])) {
82
81
  setValue(dateRange);
83
82
  }
84
83
  },
@@ -88,7 +87,5 @@ function FormDateRangePicker({
88
87
  }
89
88
 
90
89
 
91
-
92
-
93
- exports.FormDateRangePicker = FormDateRangePicker; exports.isEqualDate = isEqualDate; exports.isEqualDates = isEqualDates;
90
+ exports.FormDateRangePicker = FormDateRangePicker;
94
91
  //# sourceMappingURL=date-range-picker.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/ahnjun/projects/egose-shadcn/package/dist/components/form/date-range-picker.js","../../../components/form/date-range-picker.tsx"],"names":[],"mappings":"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","file":"/home/ahnjun/projects/egose-shadcn/package/dist/components/form/date-range-picker.js","sourcesContent":[null,"'use client';\n\nimport React, { HTMLAttributes, useEffect, useState } from 'react';\nimport { addDays, format, isEqual } from 'date-fns';\nimport { CalendarIcon } from 'lucide-react';\nimport { DateRange } from 'react-day-picker';\nimport _kebabCase from 'lodash-es/kebabCase';\nimport _isNil from 'lodash-es/isNil';\n\nimport { cn } from '../../lib/utils';\nimport { Button } from '../ui/button';\nimport { Label } from '../ui/label';\nimport { Calendar } from '../ui/calendar';\nimport { Popover, PopoverContent, PopoverTrigger } from '../ui/popover';\n\nfunction formatDate(date: Date) {\n return format(date, 'LLL dd, y');\n}\n\nexport function isEqualDate(dt1: Date | undefined, dt2: Date | undefined) {\n const nildt1 = _isNil(dt1);\n const nildt2 = _isNil(dt2);\n\n if (nildt1) dt1 = undefined;\n if (nildt2) dt2 = undefined;\n\n if (nildt1 || nildt2) {\n return nildt1 === nildt2;\n }\n\n return isEqual(dt1 as Date, dt2 as Date);\n}\n\nexport function isEqualDates(dts1: [Date | undefined, Date | undefined], dts2: [Date | undefined, Date | undefined]) {\n const dts11 = dts1[0];\n const dts12 = dts1[1];\n const dts21 = dts2[0];\n const dts22 = dts2[1];\n\n return isEqualDate(dts11, dts21) && isEqualDate(dts12, dts22);\n}\n\nexport interface FormDateRangePickerProps {\n id?: string;\n name: string;\n label?: string;\n required?: boolean;\n onChange: (value: DateRange | undefined) => void;\n classNames?: {\n wrapper?: string;\n label?: string;\n };\n}\n\nexport function FormDateRangePicker({\n id,\n name,\n label,\n required = false,\n onChange,\n classNames,\n}: FormDateRangePickerProps) {\n const now = new Date();\n const [value, setValue] = useState<DateRange | undefined>({\n from: now,\n to: now,\n });\n\n useEffect(() => {\n onChange(value);\n }, [value]);\n\n if (!id) id = _kebabCase(name);\n\n return (\n <div className={cn('date-range-picker', classNames?.wrapper)}>\n {label && (\n <Label htmlFor={id} className={classNames?.label} required={required}>\n {label}\n </Label>\n )}\n <div className={cn('grid gap-2')}>\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant={value ? 'secondary' : 'muted'}\n outline\n className={cn('w-[300px] justify-start text-left font-normal')}\n >\n <CalendarIcon />\n {value?.from ? (\n value.to ? (\n <>\n {formatDate(value.from)} - {formatDate(value.to)}\n </>\n ) : (\n formatDate(value.from)\n )\n ) : (\n <span>Pick a date</span>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"range\"\n defaultMonth={value?.from}\n selected={value}\n onSelect={(dateRange) => {\n if (!isEqualDates([value?.from, value?.to], [dateRange?.from, dateRange?.to])) {\n setValue(dateRange);\n }\n }}\n numberOfMonths={2}\n />\n </PopoverContent>\n </Popover>\n </div>\n </div>\n );\n}\n"]}
1
+ {"version":3,"sources":["/home/ahnjun/projects/egose-shadcn/package/dist/components/form/date-range-picker.js","../../../components/form/date-range-picker.tsx"],"names":[],"mappings":"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","file":"/home/ahnjun/projects/egose-shadcn/package/dist/components/form/date-range-picker.js","sourcesContent":[null,"'use client';\n\nimport React, { HTMLAttributes, useEffect, useState } from 'react';\nimport { addDays, format, isEqual } from 'date-fns';\nimport { CalendarIcon } from 'lucide-react';\nimport { DateRange } from 'react-day-picker';\nimport _kebabCase from 'lodash-es/kebabCase';\nimport _isNil from 'lodash-es/isNil';\n\nimport { isEqualDates } from '../../lib/date';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../ui/button';\nimport { Label } from '../ui/label';\nimport { Calendar } from '../ui/calendar';\nimport { Popover, PopoverContent, PopoverTrigger } from '../ui/popover';\n\nfunction formatDate(date: Date) {\n return format(date, 'LLL dd, y');\n}\n\nexport interface FormDateRangePickerProps {\n id?: string;\n name: string;\n label?: string;\n required?: boolean;\n value?: DateRange;\n onChange: (value: DateRange | undefined) => void;\n classNames?: {\n wrapper?: string;\n label?: string;\n };\n}\n\nexport function FormDateRangePicker({\n id,\n name,\n label,\n required = false,\n value: initialValue,\n onChange,\n classNames,\n}: FormDateRangePickerProps) {\n let initialFrom!: Date;\n let initialTo!: Date;\n\n if (initialValue) {\n const from = initialValue.from ?? new Date();\n const to = initialValue.to ?? new Date();\n initialFrom = new Date(from.getFullYear(), from.getMonth(), from.getDate());\n initialTo = new Date(to.getFullYear(), to.getMonth(), to.getDate());\n } else {\n const now = new Date();\n const startOfDay = new Date(now.getFullYear(), now.getMonth(), now.getDate());\n initialFrom = startOfDay;\n initialTo = startOfDay;\n }\n\n const [value, setValue] = useState<DateRange | undefined>({\n from: initialFrom,\n to: initialTo,\n });\n\n useEffect(() => {\n onChange(value);\n }, [value]);\n\n if (!id) id = _kebabCase(name);\n\n return (\n <div className={cn('date-range-picker', classNames?.wrapper)}>\n {label && (\n <Label htmlFor={id} className={classNames?.label} required={required}>\n {label}\n </Label>\n )}\n <div className={cn('grid gap-2')}>\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant={value ? 'secondary' : 'muted'}\n outline\n className={cn('w-[300px] justify-start text-left font-normal')}\n >\n <CalendarIcon />\n {value?.from ? (\n value.to ? (\n <>\n {formatDate(value.from)} - {formatDate(value.to)}\n </>\n ) : (\n formatDate(value.from)\n )\n ) : (\n <span>Pick a date</span>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"range\"\n defaultMonth={value?.from}\n selected={value}\n onSelect={(dateRange) => {\n if (!isEqualDates([value?.from, value?.to], [dateRange?.from, dateRange?.to])) {\n setValue(dateRange);\n }\n }}\n numberOfMonths={2}\n />\n </PopoverContent>\n </Popover>\n </div>\n </div>\n );\n}\n"]}