@tribepad/themis 1.0.6 → 1.0.8

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 (98) hide show
  1. package/dist/elements/AlertDialog/index.js +1 -1
  2. package/dist/elements/AlertDialog/index.js.map +1 -1
  3. package/dist/elements/AlertDialog/index.mjs +1 -1
  4. package/dist/elements/AlertDialog/index.mjs.map +1 -1
  5. package/dist/elements/Chart/ChartContext.d.ts.map +1 -1
  6. package/dist/elements/Chart/ChartLineSeries.d.ts.map +1 -1
  7. package/dist/elements/Chart/index.js +1 -1
  8. package/dist/elements/Chart/index.js.map +1 -1
  9. package/dist/elements/Chart/index.mjs +1 -1
  10. package/dist/elements/Chart/index.mjs.map +1 -1
  11. package/dist/elements/DatePicker/index.js +1 -1
  12. package/dist/elements/DatePicker/index.js.map +1 -1
  13. package/dist/elements/DatePicker/index.mjs +1 -1
  14. package/dist/elements/DatePicker/index.mjs.map +1 -1
  15. package/dist/elements/FileField/index.js +1 -1
  16. package/dist/elements/FileField/index.js.map +1 -1
  17. package/dist/elements/FileField/index.mjs +1 -1
  18. package/dist/elements/FileField/index.mjs.map +1 -1
  19. package/dist/elements/Modal/Modal.styles.d.ts +2 -0
  20. package/dist/elements/Modal/Modal.styles.d.ts.map +1 -1
  21. package/dist/elements/Modal/index.js +1 -1
  22. package/dist/elements/Modal/index.js.map +1 -1
  23. package/dist/elements/Modal/index.mjs +1 -1
  24. package/dist/elements/Modal/index.mjs.map +1 -1
  25. package/dist/elements/NumberField/NumberField.d.ts.map +1 -1
  26. package/dist/elements/NumberField/NumberField.types.d.ts +12 -0
  27. package/dist/elements/NumberField/NumberField.types.d.ts.map +1 -1
  28. package/dist/elements/NumberField/index.js +1 -1
  29. package/dist/elements/NumberField/index.js.map +1 -1
  30. package/dist/elements/NumberField/index.mjs +1 -1
  31. package/dist/elements/NumberField/index.mjs.map +1 -1
  32. package/dist/elements/OTPInput/OTPInput.d.ts +1 -1
  33. package/dist/elements/Resizable/index.js +1 -1
  34. package/dist/elements/Resizable/index.js.map +1 -1
  35. package/dist/elements/Resizable/index.mjs +1 -1
  36. package/dist/elements/Resizable/index.mjs.map +1 -1
  37. package/dist/elements/Switch/Switch.d.ts +11 -4
  38. package/dist/elements/Switch/Switch.d.ts.map +1 -1
  39. package/dist/elements/Switch/Switch.types.d.ts +5 -0
  40. package/dist/elements/Switch/Switch.types.d.ts.map +1 -1
  41. package/dist/elements/Switch/index.js +1 -1
  42. package/dist/elements/Switch/index.js.map +1 -1
  43. package/dist/elements/Switch/index.mjs +1 -1
  44. package/dist/elements/Switch/index.mjs.map +1 -1
  45. package/dist/elements/Tabs/Tabs.d.ts +3 -3
  46. package/dist/elements/Tabs/Tabs.d.ts.map +1 -1
  47. package/dist/elements/Tabs/Tabs.types.d.ts +4 -0
  48. package/dist/elements/Tabs/Tabs.types.d.ts.map +1 -1
  49. package/dist/elements/Tabs/index.js +1 -1
  50. package/dist/elements/Tabs/index.js.map +1 -1
  51. package/dist/elements/Tabs/index.mjs +1 -1
  52. package/dist/elements/Tabs/index.mjs.map +1 -1
  53. package/dist/elements/index.js +1 -1
  54. package/dist/elements/index.js.map +1 -1
  55. package/dist/elements/index.mjs +1 -1
  56. package/dist/elements/index.mjs.map +1 -1
  57. package/dist/hooks/index.d.ts +2 -0
  58. package/dist/hooks/index.d.ts.map +1 -0
  59. package/dist/hooks/index.js +2 -0
  60. package/dist/hooks/index.js.map +1 -0
  61. package/dist/hooks/index.mjs +2 -0
  62. package/dist/hooks/index.mjs.map +1 -0
  63. package/dist/hooks/useReducedMotion.d.ts +9 -0
  64. package/dist/hooks/useReducedMotion.d.ts.map +1 -0
  65. package/dist/index.d.ts +2 -0
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +2 -2
  68. package/dist/index.js.map +1 -1
  69. package/dist/index.mjs +2 -2
  70. package/dist/index.mjs.map +1 -1
  71. package/dist/styles/animations.css +172 -0
  72. package/dist/styles/index.js +1 -1
  73. package/dist/styles/index.js.map +1 -1
  74. package/dist/styles/index.mjs +1 -1
  75. package/dist/styles/index.mjs.map +1 -1
  76. package/dist/styles/shared-variants.d.ts +23 -0
  77. package/dist/styles/shared-variants.d.ts.map +1 -1
  78. package/dist/tailwind-source.css +1 -0
  79. package/dist/types/animation.d.ts +24 -0
  80. package/dist/types/animation.d.ts.map +1 -0
  81. package/dist/types/index.d.ts +2 -0
  82. package/dist/types/index.d.ts.map +1 -0
  83. package/dist/types/index.js +2 -0
  84. package/dist/types/index.js.map +1 -0
  85. package/dist/types/index.mjs +2 -0
  86. package/dist/types/index.mjs.map +1 -0
  87. package/dist/utils/index.d.ts +1 -0
  88. package/dist/utils/index.d.ts.map +1 -1
  89. package/dist/utils/index.js +1 -1
  90. package/dist/utils/index.js.map +1 -1
  91. package/dist/utils/index.mjs +1 -1
  92. package/dist/utils/index.mjs.map +1 -1
  93. package/dist/utils/shouldAnimate.d.ts +12 -0
  94. package/dist/utils/shouldAnimate.d.ts.map +1 -0
  95. package/package.json +48 -16
  96. package/src/elements/NumberField/NumberField.stories.tsx +100 -0
  97. package/src/elements/Switch/Switch.stories.tsx +60 -0
  98. package/src/elements/Tabs/Tabs.stories.tsx +332 -2
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- 'use strict';var react=require('react'),reactAriaComponents=require('react-aria-components'),lucideReact=require('lucide-react'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),classVarianceAuthority=require('class-variance-authority'),jsxRuntime=require('react/jsx-runtime'),zod=require('zod'),date=require('@internationalized/date');function e(...o){return tailwindMerge.twMerge(clsx.clsx(o))}var w=["focus-within:outline-none","focus-within:ring-2","focus-within:ring-[var(--ring)]","focus-within:ring-offset-2"];var T=["focus:outline-none","focus:ring-2","focus:ring-[var(--ring)]"],M=["focus:outline-none","focus:bg-[var(--accent)]","focus:text-[var(--accent-foreground)]"],U=["disabled:pointer-events-none","disabled:opacity-50"],F=["data-[disabled]:pointer-events-none","data-[disabled]:opacity-50","data-[disabled]:cursor-not-allowed"],B={sm:"text-xs",default:"text-sm",lg:"text-base"},R={sm:"text-sm",default:"text-base",lg:"text-lg"};var _={sm:"h-9",default:"h-11",lg:"h-14"},Z=["flex","items-center","gap-1.5","text-[var(--destructive-background)]"];var q=["text-[var(--menu-muted)]"],j=["font-medium","text-[var(--content-foreground)]"];var z=["data-[entering]:animate-in","data-[entering]:fade-in-0","data-[entering]:zoom-in-95"],W=["data-[exiting]:animate-out","data-[exiting]:fade-out-0","data-[exiting]:zoom-out-95"],X=["motion-reduce:transition-none","motion-reduce:animate-none"];var h=["transition-colors","duration-150"],y=["hover:bg-[var(--accent)]","hover:text-[var(--accent-foreground)]"];function d(...o){return o.flatMap(i=>Array.isArray(i)?[...i]:[i])}var g=classVarianceAuthority.cva(d("flex items-center rounded-md border","bg-[var(--content-background)] text-[var(--content-foreground)]","transition-colors duration-200",w,F),{variants:{size:{sm:`${_.sm} px-3 text-sm gap-0.5`,default:`${_.default} px-4 text-base gap-1`,lg:`${_.lg} px-5 text-lg gap-1.5`},isInvalid:{true:"border-[var(--destructive-background)] focus-within:ring-[var(--destructive-background)]",false:"border-[var(--input-border)] hover:border-[var(--input-border)]/80"}},defaultVariants:{size:"default",isInvalid:false}}),p=classVarianceAuthority.cva(d("tabular-nums rounded px-0.5",M,"data-[placeholder]:text-[var(--menu-muted)]","data-[type=literal]:text-[var(--menu-muted)]"),{variants:{size:R},defaultVariants:{size:"default"}}),x=classVarianceAuthority.cva(d("flex items-center justify-center rounded-md cursor-pointer",h,y,T,"data-[selected]:bg-[var(--primary)] data-[selected]:text-[var(--primary-foreground)]","data-[selected]:hover:bg-[var(--primary)]/90 data-[selected]:font-semibold","data-[today]:border data-[today]:border-[var(--primary)]","data-[selection-start]:rounded-l-md data-[selection-start]:rounded-r-none","data-[selection-end]:rounded-r-md data-[selection-end]:rounded-l-none","data-[selected]:data-[selection-start]:rounded-l-md","data-[selected]:data-[selection-end]:rounded-r-md","data-[unavailable]:text-[var(--menu-muted)] data-[unavailable]:pointer-events-none data-[unavailable]:opacity-50 data-[unavailable]:line-through","data-[outside-month]:text-[var(--menu-muted)] data-[outside-month]:opacity-50","data-[disabled]:text-[var(--menu-muted)] data-[disabled]:pointer-events-none data-[disabled]:opacity-50"),{variants:{size:{sm:"h-9 w-9 text-sm",default:"h-11 w-11 text-base",lg:"h-14 w-14 text-lg"}},defaultVariants:{size:"default"}}),P=classVarianceAuthority.cva("flex items-center justify-between px-1 pb-4",{variants:{size:R},defaultVariants:{size:"default"}}),c=classVarianceAuthority.cva(d("inline-flex items-center justify-center rounded-md text-[var(--menu-muted)]",h,y,T,U),{variants:{size:{sm:"h-7 w-7",default:"h-9 w-9",lg:"h-11 w-11"}},defaultVariants:{size:"default"}}),V=classVarianceAuthority.cva("w-full border-collapse",{variants:{size:R},defaultVariants:{size:"default"}}),v=classVarianceAuthority.cva("text-center font-medium text-[var(--menu-muted)] pb-2",{variants:{size:{sm:"text-xs w-9",default:"text-sm w-11",lg:"text-base w-14"}},defaultVariants:{size:"default"}}),k=classVarianceAuthority.cva(d("z-50 rounded-md border p-3 shadow-md outline-none","bg-[var(--menu-background)] text-[var(--menu-foreground)]",z,W,X),{variants:{size:{sm:"w-[260px]",default:"w-[320px]",lg:"w-[380px]"}},defaultVariants:{size:"default"}}),O=classVarianceAuthority.cva(d("inline-flex items-center justify-center rounded-md text-[var(--menu-muted)]",h,y,T,F),{variants:{size:{sm:"h-7 w-7",default:"h-9 w-9",lg:"h-11 w-11"}},defaultVariants:{size:"default"}}),E=classVarianceAuthority.cva(d(q,"mt-1"),{variants:{size:B},defaultVariants:{size:"default"}}),N=classVarianceAuthority.cva(d(Z,"mt-1"),{variants:{size:B},defaultVariants:{size:"default"}}),S=classVarianceAuthority.cva(d(j,"block mb-1.5",'data-[required]:after:content-["*"] data-[required]:after:ml-0.5 data-[required]:after:text-[var(--destructive-background)]'),{variants:{size:{sm:"text-sm",default:"text-sm",lg:"text-base"}},defaultVariants:{size:"default"}});var ya=react.createContext({size:"default"});var J=react.memo(react.forwardRef(({label:o,description:i,errorMessage:f,size:t="default",className:u,placement:D="bottom",...s},b)=>{let I=react.useMemo(()=>({size:t,isInvalid:s.isInvalid,isDisabled:s.isDisabled}),[t,s.isInvalid,s.isDisabled]);return jsxRuntime.jsx(ya.Provider,{value:I,children:jsxRuntime.jsxs(reactAriaComponents.DatePicker,{ref:b,className:e("group flex flex-col gap-1",u),...s,children:[jsxRuntime.jsx(reactAriaComponents.Label,{className:e(S({size:t})),"data-required":s.isRequired||void 0,children:o}),jsxRuntime.jsxs(reactAriaComponents.Group,{className:e(g({size:t,isInvalid:s.isInvalid})),children:[jsxRuntime.jsx(reactAriaComponents.DateInput,{className:"flex flex-1 items-center",children:A=>jsxRuntime.jsx(reactAriaComponents.DateSegment,{segment:A,className:e(p({size:t}))})}),jsxRuntime.jsx(reactAriaComponents.Button,{className:e(O({size:t})),"aria-label":"Open calendar",children:jsxRuntime.jsx(lucideReact.Calendar,{className:"h-4 w-4"})})]}),i&&jsxRuntime.jsx(reactAriaComponents.Text,{slot:"description",className:e(E({size:t})),children:i}),jsxRuntime.jsx(reactAriaComponents.FieldError,{className:e(N({size:t})),children:f}),jsxRuntime.jsx(reactAriaComponents.Popover,{placement:D,className:e(k({size:t})),children:jsxRuntime.jsx(reactAriaComponents.Dialog,{className:"outline-none",children:jsxRuntime.jsxs(reactAriaComponents.Calendar,{className:"w-full",children:[jsxRuntime.jsxs("div",{className:e(P({size:t})),children:[jsxRuntime.jsx(reactAriaComponents.Button,{slot:"previous",className:e(c({size:t})),"aria-label":"Previous month",children:jsxRuntime.jsx(lucideReact.ChevronLeft,{className:"h-4 w-4"})}),jsxRuntime.jsx(reactAriaComponents.Heading,{className:"flex-1 text-center font-semibold"}),jsxRuntime.jsx(reactAriaComponents.Button,{slot:"next",className:e(c({size:t})),"aria-label":"Next month",children:jsxRuntime.jsx(lucideReact.ChevronRight,{className:"h-4 w-4"})})]}),jsxRuntime.jsxs(reactAriaComponents.CalendarGrid,{className:e(V({size:t})),children:[jsxRuntime.jsx(reactAriaComponents.CalendarGridHeader,{children:A=>jsxRuntime.jsx(reactAriaComponents.CalendarHeaderCell,{className:e(v({size:t})),children:A})}),jsxRuntime.jsx(reactAriaComponents.CalendarGridBody,{children:A=>jsxRuntime.jsx(reactAriaComponents.CalendarCell,{date:A,className:e(x({size:t}))})})]})]})})})]})})}));J.displayName="DatePicker";var ea=react.forwardRef(({label:o,description:i,errorMessage:f,size:t="default",className:u,placement:D="bottom",startName:s,endName:b,...I},A)=>jsxRuntime.jsxs(reactAriaComponents.DateRangePicker,{ref:A,className:e("group flex flex-col gap-1",u),startName:s,endName:b,...I,children:[jsxRuntime.jsx(reactAriaComponents.Label,{className:e(S({size:t})),"data-required":I.isRequired||void 0,children:o}),jsxRuntime.jsxs(reactAriaComponents.Group,{className:e(g({size:t,isInvalid:I.isInvalid})),children:[jsxRuntime.jsx(reactAriaComponents.DateInput,{slot:"start",className:"flex items-center",children:C=>jsxRuntime.jsx(reactAriaComponents.DateSegment,{segment:C,className:e(p({size:t}))})}),jsxRuntime.jsx("span",{"aria-hidden":"true",className:"px-2 text-[var(--menu-muted)]",children:"\u2013"}),jsxRuntime.jsx(reactAriaComponents.DateInput,{slot:"end",className:"flex items-center",children:C=>jsxRuntime.jsx(reactAriaComponents.DateSegment,{segment:C,className:e(p({size:t}))})}),jsxRuntime.jsx(reactAriaComponents.Button,{className:e(O({size:t})),"aria-label":"Open calendar",children:jsxRuntime.jsx(lucideReact.Calendar,{className:"h-4 w-4"})})]}),i&&jsxRuntime.jsx(reactAriaComponents.Text,{slot:"description",className:e(E({size:t})),children:i}),jsxRuntime.jsx(reactAriaComponents.FieldError,{className:e(N({size:t})),children:f}),jsxRuntime.jsx(reactAriaComponents.Popover,{placement:D,className:e(k({size:t})),children:jsxRuntime.jsx(reactAriaComponents.Dialog,{className:"outline-none",children:jsxRuntime.jsxs(reactAriaComponents.RangeCalendar,{className:"w-full",children:[jsxRuntime.jsxs("div",{className:e(P({size:t})),children:[jsxRuntime.jsx(reactAriaComponents.Button,{slot:"previous",className:e(c({size:t})),"aria-label":"Previous month",children:jsxRuntime.jsx(lucideReact.ChevronLeft,{className:"h-4 w-4"})}),jsxRuntime.jsx(reactAriaComponents.Heading,{className:"flex-1 text-center font-semibold"}),jsxRuntime.jsx(reactAriaComponents.Button,{slot:"next",className:e(c({size:t})),"aria-label":"Next month",children:jsxRuntime.jsx(lucideReact.ChevronRight,{className:"h-4 w-4"})})]}),jsxRuntime.jsxs(reactAriaComponents.CalendarGrid,{className:e(V({size:t})),children:[jsxRuntime.jsx(reactAriaComponents.CalendarGridHeader,{children:C=>jsxRuntime.jsx(reactAriaComponents.CalendarHeaderCell,{className:e(v({size:t})),children:C})}),jsxRuntime.jsx(reactAriaComponents.CalendarGridBody,{children:C=>jsxRuntime.jsx(reactAriaComponents.CalendarCell,{date:C,className:e(x({size:t}))})})]})]})})})]}));ea.displayName="DateRangePicker";var ta=react.forwardRef(({label:o,description:i,errorMessage:f,size:t="default",className:u,...D},s)=>jsxRuntime.jsxs(reactAriaComponents.DateField,{ref:s,className:e("group flex flex-col gap-1",u),...D,children:[jsxRuntime.jsx(reactAriaComponents.Label,{className:e(S({size:t})),"data-required":D.isRequired||void 0,children:o}),jsxRuntime.jsx(reactAriaComponents.DateInput,{className:e(g({size:t,isInvalid:D.isInvalid}),"w-fit"),children:b=>jsxRuntime.jsx(reactAriaComponents.DateSegment,{segment:b,className:e(p({size:t}))})}),i&&jsxRuntime.jsx(reactAriaComponents.Text,{slot:"description",className:e(E({size:t})),children:i}),jsxRuntime.jsx(reactAriaComponents.FieldError,{className:e(N({size:t})),children:f})]}));ta.displayName="DateField";var na=react.forwardRef(({size:o="default",className:i,...f},t)=>jsxRuntime.jsxs(reactAriaComponents.Calendar,{ref:t,className:e("w-fit",i),...f,children:[jsxRuntime.jsxs("div",{className:e(P({size:o})),children:[jsxRuntime.jsx(reactAriaComponents.Button,{slot:"previous",className:e(c({size:o})),"aria-label":"Previous month",children:jsxRuntime.jsx(lucideReact.ChevronLeft,{className:"h-4 w-4"})}),jsxRuntime.jsx(reactAriaComponents.Heading,{className:"flex-1 text-center font-semibold"}),jsxRuntime.jsx(reactAriaComponents.Button,{slot:"next",className:e(c({size:o})),"aria-label":"Next month",children:jsxRuntime.jsx(lucideReact.ChevronRight,{className:"h-4 w-4"})})]}),jsxRuntime.jsxs(reactAriaComponents.CalendarGrid,{className:e(V({size:o})),children:[jsxRuntime.jsx(reactAriaComponents.CalendarGridHeader,{children:u=>jsxRuntime.jsx(reactAriaComponents.CalendarHeaderCell,{className:e(v({size:o})),children:u})}),jsxRuntime.jsx(reactAriaComponents.CalendarGridBody,{children:u=>jsxRuntime.jsx(reactAriaComponents.CalendarCell,{date:u,className:e(x({size:o}))})})]})]}));na.displayName="Calendar";var oa=zod.z.object({value:zod.z.custom().optional(),defaultValue:zod.z.custom().optional(),placeholderValue:zod.z.custom().optional(),granularity:zod.z.enum(["day","hour","minute","second"]).default("day"),hourCycle:zod.z.union([zod.z.literal(12),zod.z.literal(24)]).optional(),hideTimeZone:zod.z.boolean().optional(),shouldForceLeadingZeros:zod.z.boolean().optional(),minValue:zod.z.custom().optional(),maxValue:zod.z.custom().optional(),isDateUnavailable:zod.z.function().optional(),isOpen:zod.z.boolean().optional(),defaultOpen:zod.z.boolean().optional(),isDisabled:zod.z.boolean().optional(),isReadOnly:zod.z.boolean().optional(),isRequired:zod.z.boolean().optional(),isInvalid:zod.z.boolean().optional(),validate:zod.z.function().optional(),validationBehavior:zod.z.enum(["native","aria"]).default("native"),label:zod.z.string(),description:zod.z.string().optional(),errorMessage:zod.z.union([zod.z.string(),zod.z.function()]).optional(),firstDayOfWeek:zod.z.enum(["sun","mon","tue","wed","thu","fri","sat"]).optional(),pageBehavior:zod.z.enum(["single","visible"]).optional(),name:zod.z.string().optional(),placement:zod.z.enum(["bottom","top","left","right"]).optional(),visibleDuration:zod.z.object({months:zod.z.number()}).optional(),size:zod.z.enum(["sm","default","lg"]).default("default"),onChange:zod.z.function().optional(),onOpenChange:zod.z.function().optional(),onFocus:zod.z.function().optional(),onBlur:zod.z.function().optional(),onFocusChange:zod.z.function().optional(),className:zod.z.string().optional(),children:zod.z.any().optional()}),De=oa.omit({value:true,defaultValue:true,onChange:true}).extend({value:zod.z.object({start:zod.z.custom(),end:zod.z.custom()}).optional(),defaultValue:zod.z.object({start:zod.z.custom(),end:zod.z.custom()}).optional(),startName:zod.z.string().optional(),endName:zod.z.string().optional(),onChange:zod.z.function().optional()}),Ae=zod.z.object({value:zod.z.custom().optional(),defaultValue:zod.z.custom().optional(),placeholderValue:zod.z.custom().optional(),granularity:zod.z.enum(["day","hour","minute","second"]).default("day"),hourCycle:zod.z.union([zod.z.literal(12),zod.z.literal(24)]).optional(),hideTimeZone:zod.z.boolean().optional(),shouldForceLeadingZeros:zod.z.boolean().optional(),minValue:zod.z.custom().optional(),maxValue:zod.z.custom().optional(),isDisabled:zod.z.boolean().optional(),isReadOnly:zod.z.boolean().optional(),isRequired:zod.z.boolean().optional(),isInvalid:zod.z.boolean().optional(),validate:zod.z.function().optional(),validationBehavior:zod.z.enum(["native","aria"]).default("native"),label:zod.z.string(),description:zod.z.string().optional(),errorMessage:zod.z.union([zod.z.string(),zod.z.function()]).optional(),name:zod.z.string().optional(),size:zod.z.enum(["sm","default","lg"]).default("default"),onChange:zod.z.function().optional(),onFocus:zod.z.function().optional(),onBlur:zod.z.function().optional(),onFocusChange:zod.z.function().optional(),className:zod.z.string().optional()}),ia=zod.z.object({value:zod.z.custom().optional(),defaultValue:zod.z.custom().optional(),focusedValue:zod.z.custom().optional(),defaultFocusedValue:zod.z.custom().optional(),minValue:zod.z.custom().optional(),maxValue:zod.z.custom().optional(),isDateUnavailable:zod.z.function().optional(),isDisabled:zod.z.boolean().optional(),isReadOnly:zod.z.boolean().optional(),firstDayOfWeek:zod.z.enum(["sun","mon","tue","wed","thu","fri","sat"]).optional(),pageBehavior:zod.z.enum(["single","visible"]).optional(),visibleDuration:zod.z.object({months:zod.z.number()}).optional(),size:zod.z.enum(["sm","default","lg"]).default("default"),onChange:zod.z.function().optional(),onFocusChange:zod.z.function().optional(),className:zod.z.string().optional()}),Ce=ia.omit({value:true,defaultValue:true,onChange:true}).extend({value:zod.z.object({start:zod.z.custom(),end:zod.z.custom()}).optional(),defaultValue:zod.z.object({start:zod.z.custom(),end:zod.z.custom()}).optional(),onChange:zod.z.function().optional()});Object.defineProperty(exports,"getLocalTimeZone",{enumerable:true,get:function(){return date.getLocalTimeZone}});Object.defineProperty(exports,"isWeekend",{enumerable:true,get:function(){return date.isWeekend}});Object.defineProperty(exports,"now",{enumerable:true,get:function(){return date.now}});Object.defineProperty(exports,"parseDate",{enumerable:true,get:function(){return date.parseDate}});Object.defineProperty(exports,"parseDateTime",{enumerable:true,get:function(){return date.parseDateTime}});Object.defineProperty(exports,"parseZonedDateTime",{enumerable:true,get:function(){return date.parseZonedDateTime}});Object.defineProperty(exports,"today",{enumerable:true,get:function(){return date.today}});exports.Calendar=na;exports.CalendarPropsSchema=ia;exports.DateField=ta;exports.DateFieldPropsSchema=Ae;exports.DatePicker=J;exports.DatePickerPropsSchema=oa;exports.DateRangePicker=ea;exports.DateRangePickerPropsSchema=De;exports.RangeCalendarPropsSchema=Ce;exports.calendarCellVariants=x;exports.calendarGridHeaderCellVariants=v;exports.calendarGridVariants=V;exports.calendarHeaderVariants=P;exports.calendarNavButtonVariants=c;exports.dateFieldVariants=g;exports.datePickerDescriptionVariants=E;exports.datePickerErrorVariants=N;exports.datePickerLabelVariants=S;exports.datePickerPopoverVariants=k;exports.datePickerTriggerVariants=O;exports.dateSegmentVariants=p;//# sourceMappingURL=index.js.map
2
+ 'use strict';var react=require('react'),reactAriaComponents=require('react-aria-components'),lucideReact=require('lucide-react'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),classVarianceAuthority=require('class-variance-authority'),jsxRuntime=require('react/jsx-runtime'),zod=require('zod'),date=require('@internationalized/date');function e(...o){return tailwindMerge.twMerge(clsx.clsx(o))}var w=["focus-within:outline-none","focus-within:ring-2","focus-within:ring-[var(--ring)]","focus-within:ring-offset-2"];var T=["focus:outline-none","focus:ring-2","focus:ring-[var(--ring)]"],M=["focus:outline-none","focus:bg-[var(--accent)]","focus:text-[var(--accent-foreground)]"],U=["disabled:pointer-events-none","disabled:opacity-50"],F=["data-[disabled]:pointer-events-none","data-[disabled]:opacity-50","data-[disabled]:cursor-not-allowed"],B={sm:"text-xs",default:"text-sm",lg:"text-base"},_={sm:"text-sm",default:"text-base",lg:"text-lg"};var R={sm:"h-9",default:"h-11",lg:"h-14"},Z=["flex","items-center","gap-1.5","text-[var(--destructive-background)]"];var q=["text-[var(--menu-muted)]"],z=["font-medium","text-[var(--content-foreground)]"];var j=["data-[entering]:animate-in","data-[entering]:fade-in-0","data-[entering]:zoom-in-95"],W=["data-[exiting]:animate-out","data-[exiting]:fade-out-0","data-[exiting]:zoom-out-95"];var Y=["motion-reduce:transition-none","motion-reduce:animate-none"];var h=["transition-colors","duration-150"],O=["hover:bg-[var(--accent)]","hover:text-[var(--accent-foreground)]"];function d(...o){return o.flatMap(i=>Array.isArray(i)?[...i]:[i])}var x=classVarianceAuthority.cva(d("flex items-center rounded-md border","bg-[var(--content-background)] text-[var(--content-foreground)]","transition-colors duration-200",w,F),{variants:{size:{sm:`${R.sm} px-3 text-sm gap-0.5`,default:`${R.default} px-4 text-base gap-1`,lg:`${R.lg} px-5 text-lg gap-1.5`},isInvalid:{true:"border-[var(--destructive-background)] focus-within:ring-[var(--destructive-background)]",false:"border-[var(--input-border)] hover:border-[var(--input-border)]/80"}},defaultVariants:{size:"default",isInvalid:false}}),p=classVarianceAuthority.cva(d("tabular-nums rounded px-0.5",M,"data-[placeholder]:text-[var(--menu-muted)]","data-[type=literal]:text-[var(--menu-muted)]"),{variants:{size:_},defaultVariants:{size:"default"}}),C=classVarianceAuthority.cva(d("flex items-center justify-center rounded-md cursor-pointer",h,O,T,"data-[selected]:bg-[var(--primary)] data-[selected]:text-[var(--primary-foreground)]","data-[selected]:hover:bg-[var(--primary)]/90 data-[selected]:font-semibold","data-[today]:border data-[today]:border-[var(--primary)]","data-[selection-start]:rounded-l-md data-[selection-start]:rounded-r-none","data-[selection-end]:rounded-r-md data-[selection-end]:rounded-l-none","data-[selected]:data-[selection-start]:rounded-l-md","data-[selected]:data-[selection-end]:rounded-r-md","data-[unavailable]:text-[var(--menu-muted)] data-[unavailable]:pointer-events-none data-[unavailable]:opacity-50 data-[unavailable]:line-through","data-[outside-month]:text-[var(--menu-muted)] data-[outside-month]:opacity-50","data-[disabled]:text-[var(--menu-muted)] data-[disabled]:pointer-events-none data-[disabled]:opacity-50"),{variants:{size:{sm:"h-9 w-9 text-sm",default:"h-11 w-11 text-base",lg:"h-14 w-14 text-lg"}},defaultVariants:{size:"default"}}),P=classVarianceAuthority.cva("flex items-center justify-between px-1 pb-4",{variants:{size:_},defaultVariants:{size:"default"}}),c=classVarianceAuthority.cva(d("inline-flex items-center justify-center rounded-md text-[var(--menu-muted)]",h,O,T,U),{variants:{size:{sm:"h-7 w-7",default:"h-9 w-9",lg:"h-11 w-11"}},defaultVariants:{size:"default"}}),V=classVarianceAuthority.cva("w-full border-collapse",{variants:{size:_},defaultVariants:{size:"default"}}),N=classVarianceAuthority.cva("text-center font-medium text-[var(--menu-muted)] pb-2",{variants:{size:{sm:"text-xs w-9",default:"text-sm w-11",lg:"text-base w-14"}},defaultVariants:{size:"default"}}),y=classVarianceAuthority.cva(d("z-50 rounded-md border p-3 shadow-md outline-none","bg-[var(--menu-background)] text-[var(--menu-foreground)]",j,W,Y),{variants:{size:{sm:"w-[260px]",default:"w-[320px]",lg:"w-[380px]"}},defaultVariants:{size:"default"}}),k=classVarianceAuthority.cva(d("inline-flex items-center justify-center rounded-md text-[var(--menu-muted)]",h,O,T,F),{variants:{size:{sm:"h-7 w-7",default:"h-9 w-9",lg:"h-11 w-11"}},defaultVariants:{size:"default"}}),v=classVarianceAuthority.cva(d(q,"mt-1"),{variants:{size:B},defaultVariants:{size:"default"}}),E=classVarianceAuthority.cva(d(Z,"mt-1"),{variants:{size:B},defaultVariants:{size:"default"}}),S=classVarianceAuthority.cva(d(z,"block mb-1.5",'data-[required]:after:content-["*"] data-[required]:after:ml-0.5 data-[required]:after:text-[var(--destructive-background)]'),{variants:{size:{sm:"text-sm",default:"text-sm",lg:"text-base"}},defaultVariants:{size:"default"}});var Oa=react.createContext({size:"default"});var J=react.memo(react.forwardRef(({label:o,description:i,errorMessage:f,size:t="default",className:u,placement:D="bottom",...s},I)=>{let b=react.useMemo(()=>({size:t,isInvalid:s.isInvalid,isDisabled:s.isDisabled}),[t,s.isInvalid,s.isDisabled]);return jsxRuntime.jsx(Oa.Provider,{value:b,children:jsxRuntime.jsxs(reactAriaComponents.DatePicker,{ref:I,className:e("group flex flex-col gap-1",u),...s,children:[jsxRuntime.jsx(reactAriaComponents.Label,{className:e(S({size:t})),"data-required":s.isRequired||void 0,children:o}),jsxRuntime.jsxs(reactAriaComponents.Group,{className:e(x({size:t,isInvalid:s.isInvalid})),children:[jsxRuntime.jsx(reactAriaComponents.DateInput,{className:"flex flex-1 items-center",children:g=>jsxRuntime.jsx(reactAriaComponents.DateSegment,{segment:g,className:e(p({size:t}))})}),jsxRuntime.jsx(reactAriaComponents.Button,{className:e(k({size:t})),"aria-label":"Open calendar",children:jsxRuntime.jsx(lucideReact.Calendar,{className:"h-4 w-4"})})]}),i&&jsxRuntime.jsx(reactAriaComponents.Text,{slot:"description",className:e(v({size:t})),children:i}),jsxRuntime.jsx(reactAriaComponents.FieldError,{className:e(E({size:t})),children:f}),jsxRuntime.jsx(reactAriaComponents.Popover,{placement:D,className:e(y({size:t})),children:jsxRuntime.jsx(reactAriaComponents.Dialog,{className:"outline-none",children:jsxRuntime.jsxs(reactAriaComponents.Calendar,{className:"w-full",children:[jsxRuntime.jsxs("div",{className:e(P({size:t})),children:[jsxRuntime.jsx(reactAriaComponents.Button,{slot:"previous",className:e(c({size:t})),"aria-label":"Previous month",children:jsxRuntime.jsx(lucideReact.ChevronLeft,{className:"h-4 w-4"})}),jsxRuntime.jsx(reactAriaComponents.Heading,{className:"flex-1 text-center font-semibold"}),jsxRuntime.jsx(reactAriaComponents.Button,{slot:"next",className:e(c({size:t})),"aria-label":"Next month",children:jsxRuntime.jsx(lucideReact.ChevronRight,{className:"h-4 w-4"})})]}),jsxRuntime.jsxs(reactAriaComponents.CalendarGrid,{className:e(V({size:t})),children:[jsxRuntime.jsx(reactAriaComponents.CalendarGridHeader,{children:g=>jsxRuntime.jsx(reactAriaComponents.CalendarHeaderCell,{className:e(N({size:t})),children:g})}),jsxRuntime.jsx(reactAriaComponents.CalendarGridBody,{children:g=>jsxRuntime.jsx(reactAriaComponents.CalendarCell,{date:g,className:e(C({size:t}))})})]})]})})})]})})}));J.displayName="DatePicker";var ea=react.forwardRef(({label:o,description:i,errorMessage:f,size:t="default",className:u,placement:D="bottom",startName:s,endName:I,...b},g)=>jsxRuntime.jsxs(reactAriaComponents.DateRangePicker,{ref:g,className:e("group flex flex-col gap-1",u),startName:s,endName:I,...b,children:[jsxRuntime.jsx(reactAriaComponents.Label,{className:e(S({size:t})),"data-required":b.isRequired||void 0,children:o}),jsxRuntime.jsxs(reactAriaComponents.Group,{className:e(x({size:t,isInvalid:b.isInvalid})),children:[jsxRuntime.jsx(reactAriaComponents.DateInput,{slot:"start",className:"flex items-center",children:A=>jsxRuntime.jsx(reactAriaComponents.DateSegment,{segment:A,className:e(p({size:t}))})}),jsxRuntime.jsx("span",{"aria-hidden":"true",className:"px-2 text-[var(--menu-muted)]",children:"\u2013"}),jsxRuntime.jsx(reactAriaComponents.DateInput,{slot:"end",className:"flex items-center",children:A=>jsxRuntime.jsx(reactAriaComponents.DateSegment,{segment:A,className:e(p({size:t}))})}),jsxRuntime.jsx(reactAriaComponents.Button,{className:e(k({size:t})),"aria-label":"Open calendar",children:jsxRuntime.jsx(lucideReact.Calendar,{className:"h-4 w-4"})})]}),i&&jsxRuntime.jsx(reactAriaComponents.Text,{slot:"description",className:e(v({size:t})),children:i}),jsxRuntime.jsx(reactAriaComponents.FieldError,{className:e(E({size:t})),children:f}),jsxRuntime.jsx(reactAriaComponents.Popover,{placement:D,className:e(y({size:t})),children:jsxRuntime.jsx(reactAriaComponents.Dialog,{className:"outline-none",children:jsxRuntime.jsxs(reactAriaComponents.RangeCalendar,{className:"w-full",children:[jsxRuntime.jsxs("div",{className:e(P({size:t})),children:[jsxRuntime.jsx(reactAriaComponents.Button,{slot:"previous",className:e(c({size:t})),"aria-label":"Previous month",children:jsxRuntime.jsx(lucideReact.ChevronLeft,{className:"h-4 w-4"})}),jsxRuntime.jsx(reactAriaComponents.Heading,{className:"flex-1 text-center font-semibold"}),jsxRuntime.jsx(reactAriaComponents.Button,{slot:"next",className:e(c({size:t})),"aria-label":"Next month",children:jsxRuntime.jsx(lucideReact.ChevronRight,{className:"h-4 w-4"})})]}),jsxRuntime.jsxs(reactAriaComponents.CalendarGrid,{className:e(V({size:t})),children:[jsxRuntime.jsx(reactAriaComponents.CalendarGridHeader,{children:A=>jsxRuntime.jsx(reactAriaComponents.CalendarHeaderCell,{className:e(N({size:t})),children:A})}),jsxRuntime.jsx(reactAriaComponents.CalendarGridBody,{children:A=>jsxRuntime.jsx(reactAriaComponents.CalendarCell,{date:A,className:e(C({size:t}))})})]})]})})})]}));ea.displayName="DateRangePicker";var ta=react.forwardRef(({label:o,description:i,errorMessage:f,size:t="default",className:u,...D},s)=>jsxRuntime.jsxs(reactAriaComponents.DateField,{ref:s,className:e("group flex flex-col gap-1",u),...D,children:[jsxRuntime.jsx(reactAriaComponents.Label,{className:e(S({size:t})),"data-required":D.isRequired||void 0,children:o}),jsxRuntime.jsx(reactAriaComponents.DateInput,{className:e(x({size:t,isInvalid:D.isInvalid}),"w-fit"),children:I=>jsxRuntime.jsx(reactAriaComponents.DateSegment,{segment:I,className:e(p({size:t}))})}),i&&jsxRuntime.jsx(reactAriaComponents.Text,{slot:"description",className:e(v({size:t})),children:i}),jsxRuntime.jsx(reactAriaComponents.FieldError,{className:e(E({size:t})),children:f})]}));ta.displayName="DateField";var na=react.forwardRef(({size:o="default",className:i,...f},t)=>jsxRuntime.jsxs(reactAriaComponents.Calendar,{ref:t,className:e("w-fit",i),...f,children:[jsxRuntime.jsxs("div",{className:e(P({size:o})),children:[jsxRuntime.jsx(reactAriaComponents.Button,{slot:"previous",className:e(c({size:o})),"aria-label":"Previous month",children:jsxRuntime.jsx(lucideReact.ChevronLeft,{className:"h-4 w-4"})}),jsxRuntime.jsx(reactAriaComponents.Heading,{className:"flex-1 text-center font-semibold"}),jsxRuntime.jsx(reactAriaComponents.Button,{slot:"next",className:e(c({size:o})),"aria-label":"Next month",children:jsxRuntime.jsx(lucideReact.ChevronRight,{className:"h-4 w-4"})})]}),jsxRuntime.jsxs(reactAriaComponents.CalendarGrid,{className:e(V({size:o})),children:[jsxRuntime.jsx(reactAriaComponents.CalendarGridHeader,{children:u=>jsxRuntime.jsx(reactAriaComponents.CalendarHeaderCell,{className:e(N({size:o})),children:u})}),jsxRuntime.jsx(reactAriaComponents.CalendarGridBody,{children:u=>jsxRuntime.jsx(reactAriaComponents.CalendarCell,{date:u,className:e(C({size:o}))})})]})]}));na.displayName="Calendar";var oa=zod.z.object({value:zod.z.custom().optional(),defaultValue:zod.z.custom().optional(),placeholderValue:zod.z.custom().optional(),granularity:zod.z.enum(["day","hour","minute","second"]).default("day"),hourCycle:zod.z.union([zod.z.literal(12),zod.z.literal(24)]).optional(),hideTimeZone:zod.z.boolean().optional(),shouldForceLeadingZeros:zod.z.boolean().optional(),minValue:zod.z.custom().optional(),maxValue:zod.z.custom().optional(),isDateUnavailable:zod.z.function().optional(),isOpen:zod.z.boolean().optional(),defaultOpen:zod.z.boolean().optional(),isDisabled:zod.z.boolean().optional(),isReadOnly:zod.z.boolean().optional(),isRequired:zod.z.boolean().optional(),isInvalid:zod.z.boolean().optional(),validate:zod.z.function().optional(),validationBehavior:zod.z.enum(["native","aria"]).default("native"),label:zod.z.string(),description:zod.z.string().optional(),errorMessage:zod.z.union([zod.z.string(),zod.z.function()]).optional(),firstDayOfWeek:zod.z.enum(["sun","mon","tue","wed","thu","fri","sat"]).optional(),pageBehavior:zod.z.enum(["single","visible"]).optional(),name:zod.z.string().optional(),placement:zod.z.enum(["bottom","top","left","right"]).optional(),visibleDuration:zod.z.object({months:zod.z.number()}).optional(),size:zod.z.enum(["sm","default","lg"]).default("default"),onChange:zod.z.function().optional(),onOpenChange:zod.z.function().optional(),onFocus:zod.z.function().optional(),onBlur:zod.z.function().optional(),onFocusChange:zod.z.function().optional(),className:zod.z.string().optional(),children:zod.z.any().optional()}),De=oa.omit({value:true,defaultValue:true,onChange:true}).extend({value:zod.z.object({start:zod.z.custom(),end:zod.z.custom()}).optional(),defaultValue:zod.z.object({start:zod.z.custom(),end:zod.z.custom()}).optional(),startName:zod.z.string().optional(),endName:zod.z.string().optional(),onChange:zod.z.function().optional()}),ge=zod.z.object({value:zod.z.custom().optional(),defaultValue:zod.z.custom().optional(),placeholderValue:zod.z.custom().optional(),granularity:zod.z.enum(["day","hour","minute","second"]).default("day"),hourCycle:zod.z.union([zod.z.literal(12),zod.z.literal(24)]).optional(),hideTimeZone:zod.z.boolean().optional(),shouldForceLeadingZeros:zod.z.boolean().optional(),minValue:zod.z.custom().optional(),maxValue:zod.z.custom().optional(),isDisabled:zod.z.boolean().optional(),isReadOnly:zod.z.boolean().optional(),isRequired:zod.z.boolean().optional(),isInvalid:zod.z.boolean().optional(),validate:zod.z.function().optional(),validationBehavior:zod.z.enum(["native","aria"]).default("native"),label:zod.z.string(),description:zod.z.string().optional(),errorMessage:zod.z.union([zod.z.string(),zod.z.function()]).optional(),name:zod.z.string().optional(),size:zod.z.enum(["sm","default","lg"]).default("default"),onChange:zod.z.function().optional(),onFocus:zod.z.function().optional(),onBlur:zod.z.function().optional(),onFocusChange:zod.z.function().optional(),className:zod.z.string().optional()}),ia=zod.z.object({value:zod.z.custom().optional(),defaultValue:zod.z.custom().optional(),focusedValue:zod.z.custom().optional(),defaultFocusedValue:zod.z.custom().optional(),minValue:zod.z.custom().optional(),maxValue:zod.z.custom().optional(),isDateUnavailable:zod.z.function().optional(),isDisabled:zod.z.boolean().optional(),isReadOnly:zod.z.boolean().optional(),firstDayOfWeek:zod.z.enum(["sun","mon","tue","wed","thu","fri","sat"]).optional(),pageBehavior:zod.z.enum(["single","visible"]).optional(),visibleDuration:zod.z.object({months:zod.z.number()}).optional(),size:zod.z.enum(["sm","default","lg"]).default("default"),onChange:zod.z.function().optional(),onFocusChange:zod.z.function().optional(),className:zod.z.string().optional()}),Ae=ia.omit({value:true,defaultValue:true,onChange:true}).extend({value:zod.z.object({start:zod.z.custom(),end:zod.z.custom()}).optional(),defaultValue:zod.z.object({start:zod.z.custom(),end:zod.z.custom()}).optional(),onChange:zod.z.function().optional()});Object.defineProperty(exports,"getLocalTimeZone",{enumerable:true,get:function(){return date.getLocalTimeZone}});Object.defineProperty(exports,"isWeekend",{enumerable:true,get:function(){return date.isWeekend}});Object.defineProperty(exports,"now",{enumerable:true,get:function(){return date.now}});Object.defineProperty(exports,"parseDate",{enumerable:true,get:function(){return date.parseDate}});Object.defineProperty(exports,"parseDateTime",{enumerable:true,get:function(){return date.parseDateTime}});Object.defineProperty(exports,"parseZonedDateTime",{enumerable:true,get:function(){return date.parseZonedDateTime}});Object.defineProperty(exports,"today",{enumerable:true,get:function(){return date.today}});exports.Calendar=na;exports.CalendarPropsSchema=ia;exports.DateField=ta;exports.DateFieldPropsSchema=ge;exports.DatePicker=J;exports.DatePickerPropsSchema=oa;exports.DateRangePicker=ea;exports.DateRangePickerPropsSchema=De;exports.RangeCalendarPropsSchema=Ae;exports.calendarCellVariants=C;exports.calendarGridHeaderCellVariants=N;exports.calendarGridVariants=V;exports.calendarHeaderVariants=P;exports.calendarNavButtonVariants=c;exports.dateFieldVariants=x;exports.datePickerDescriptionVariants=v;exports.datePickerErrorVariants=E;exports.datePickerLabelVariants=S;exports.datePickerPopoverVariants=y;exports.datePickerTriggerVariants=k;exports.dateSegmentVariants=p;//# sourceMappingURL=index.js.map
3
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/cn.ts","../../../src/styles/shared-variants.ts","../../../src/elements/DatePicker/DatePicker.variants.ts","../../../src/elements/DatePicker/DatePicker.tsx","../../../src/elements/DatePicker/DateRangePicker.tsx","../../../src/elements/DatePicker/DateField.tsx","../../../src/elements/DatePicker/Calendar.tsx","../../../src/elements/DatePicker/DatePicker.types.ts"],"names":["cn","inputs","twMerge","clsx","FOCUS_WITHIN_RING","FOCUS_RING","FOCUS_HIGHLIGHT","DISABLED_STANDARD","DISABLED_DATA_ATTR","TEXT_SIZE_SMALL_SCALE","TEXT_SIZE_MEDIUM_SCALE","FIELD_HEIGHTS","ERROR_MESSAGE_BASE","DESCRIPTION_BASE","LABEL_BASE","POPOVER_ANIMATION_IN","POPOVER_ANIMATION_OUT","REDUCED_MOTION","TRANSITION_FAST","HOVER_ACCENT","combineStyles","styles","s","dateFieldVariants","cva","dateSegmentVariants","calendarCellVariants","calendarHeaderVariants","calendarNavButtonVariants","calendarGridVariants","calendarGridHeaderCellVariants","datePickerPopoverVariants","datePickerTriggerVariants","datePickerDescriptionVariants","datePickerErrorVariants","datePickerLabelVariants","DatePickerContext","createContext","DatePicker","memo","forwardRef","label","description","errorMessage","size","className","placement","props","ref","contextValue","useMemo","jsx","jsxs","AriaDatePicker","AriaLabel","AriaGroup","AriaDateInput","segment","AriaDateSegment","AriaButton","CalendarIcon","AriaText","AriaFieldError","AriaPopover","AriaDialog","AriaCalendar","ChevronLeft","AriaHeading","ChevronRight","AriaCalendarGrid","AriaCalendarGridHeader","day","AriaCalendarHeaderCell","AriaCalendarGridBody","date","AriaCalendarCell","DateRangePicker","startName","endName","AriaDateRangePicker","AriaRangeCalendar","DateField","AriaDateField","Calendar","DatePickerPropsSchema","z","DateRangePickerPropsSchema","DateFieldPropsSchema","CalendarPropsSchema","RangeCalendarPropsSchema"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Class Name Utility\n * Merges Tailwind CSS classes with conflict resolution\n *\n * Combines clsx for conditional classes and tailwind-merge for deduplication\n *\n * @example\n * cn('px-2 py-1', 'px-4') // => 'py-1 px-4' (px-4 overrides px-2)\n * cn('text-red-500', condition && 'text-blue-500') // => conditional application\n */\n\nimport { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","/**\n * Shared CVA Variant Utilities\n *\n * Common patterns extracted from component variants for consistency and reduced bundle size.\n * Use these constants in CVA definitions to ensure consistent styling across Themis.\n *\n * @see interaction-states.ts for interaction-specific styles (focus, hover, pressed)\n */\n\n// =============================================================================\n// Focus Ring Patterns\n// =============================================================================\n\n/**\n * Focus-within ring (for container elements with focusable children)\n * Use when the container should show focus when any child is focused\n */\nexport const FOCUS_WITHIN_RING = [\n 'focus-within:outline-none',\n 'focus-within:ring-2',\n 'focus-within:ring-[var(--ring)]',\n 'focus-within:ring-offset-2',\n] as const;\n\n/**\n * Focus-visible ring (for directly focusable elements)\n * Use for buttons, inputs, and other interactive elements\n */\nexport const FOCUS_VISIBLE_RING = [\n 'focus-visible:outline-none',\n 'focus-visible:ring-2',\n 'focus-visible:ring-[var(--ring)]',\n 'focus-visible:ring-offset-2',\n] as const;\n\n/**\n * Standard focus ring (for elements using :focus pseudo-class)\n * Prefer focus-visible when possible for better UX\n */\nexport const FOCUS_RING = [\n 'focus:outline-none',\n 'focus:ring-2',\n 'focus:ring-[var(--ring)]',\n] as const;\n\n/**\n * Focus with background change (for segments, cells, menu items)\n */\nexport const FOCUS_HIGHLIGHT = [\n 'focus:outline-none',\n 'focus:bg-[var(--accent)]',\n 'focus:text-[var(--accent-foreground)]',\n] as const;\n\n// =============================================================================\n// Disabled State Patterns\n// =============================================================================\n\n/**\n * Standard disabled state using disabled attribute\n */\nexport const DISABLED_STANDARD = [\n 'disabled:pointer-events-none',\n 'disabled:opacity-50',\n] as const;\n\n/**\n * Disabled state using data attribute (React Aria pattern)\n */\nexport const DISABLED_DATA_ATTR = [\n 'data-[disabled]:pointer-events-none',\n 'data-[disabled]:opacity-50',\n 'data-[disabled]:cursor-not-allowed',\n] as const;\n\n// =============================================================================\n// Size-Based Text Variants\n// =============================================================================\n\n/**\n * Small text size scale (xs -> sm -> base)\n */\nexport const TEXT_SIZE_SMALL_SCALE = {\n sm: 'text-xs',\n default: 'text-sm',\n lg: 'text-base',\n} as const;\n\n/**\n * Medium text size scale (sm -> base -> lg)\n */\nexport const TEXT_SIZE_MEDIUM_SCALE = {\n sm: 'text-sm',\n default: 'text-base',\n lg: 'text-lg',\n} as const;\n\n// =============================================================================\n// Touch Target Utilities\n// =============================================================================\n\n/**\n * WCAG 2.2 AAA minimum touch target (44x44px)\n */\nexport const TOUCH_TARGET_MIN = [\n 'min-h-[44px]',\n 'min-w-[44px]',\n] as const;\n\n/**\n * Common button/cell sizes with touch target compliance\n */\nexport const INTERACTIVE_SIZES = {\n sm: 'h-9 w-9', // 36px - desktop only, NOT AAA compliant\n default: 'h-11 w-11', // 44px - AAA compliant\n lg: 'h-14 w-14', // 56px - AAA compliant, enhanced\n} as const;\n\n/**\n * Height-only sizes for fields and inputs\n */\nexport const FIELD_HEIGHTS = {\n sm: 'h-9', // 36px\n default: 'h-11', // 44px\n lg: 'h-14', // 56px\n} as const;\n\n// =============================================================================\n// Message/Feedback Patterns\n// =============================================================================\n\n/**\n * Error message styling\n */\nexport const ERROR_MESSAGE_BASE = [\n 'flex',\n 'items-center',\n 'gap-1.5',\n 'text-[var(--destructive-background)]',\n] as const;\n\n/**\n * Success message styling\n */\nexport const SUCCESS_MESSAGE_BASE = [\n 'flex',\n 'items-center',\n 'gap-1.5',\n 'text-[var(--success-background)]',\n] as const;\n\n/**\n * Description/helper text styling\n */\nexport const DESCRIPTION_BASE = [\n 'text-[var(--menu-muted)]',\n] as const;\n\n/**\n * Label base styling\n */\nexport const LABEL_BASE = [\n 'font-medium',\n 'text-[var(--content-foreground)]',\n] as const;\n\n/**\n * Required indicator pattern\n */\nexport const REQUIRED_INDICATOR = \"after:content-['*'] after:ml-0.5 after:text-[var(--destructive-background)]\";\n\n// =============================================================================\n// Animation Patterns\n// =============================================================================\n\n/**\n * Popover/dropdown entry animation\n */\nexport const POPOVER_ANIMATION_IN = [\n 'data-[entering]:animate-in',\n 'data-[entering]:fade-in-0',\n 'data-[entering]:zoom-in-95',\n] as const;\n\n/**\n * Popover/dropdown exit animation\n */\nexport const POPOVER_ANIMATION_OUT = [\n 'data-[exiting]:animate-out',\n 'data-[exiting]:fade-out-0',\n 'data-[exiting]:zoom-out-95',\n] as const;\n\n/**\n * Reduced motion support (WCAG 2.2)\n */\nexport const REDUCED_MOTION = [\n 'motion-reduce:transition-none',\n 'motion-reduce:animate-none',\n] as const;\n\n/**\n * Standard transition for colors\n */\nexport const TRANSITION_COLORS = [\n 'transition-colors',\n 'duration-200',\n] as const;\n\n/**\n * Fast transition for interactions\n */\nexport const TRANSITION_FAST = [\n 'transition-colors',\n 'duration-150',\n] as const;\n\n// =============================================================================\n// Hover State Patterns\n// =============================================================================\n\n/**\n * Accent background on hover (for interactive items)\n */\nexport const HOVER_ACCENT = [\n 'hover:bg-[var(--accent)]',\n 'hover:text-[var(--accent-foreground)]',\n] as const;\n\n// =============================================================================\n// Helper Functions\n// =============================================================================\n\n/**\n * Combines multiple style arrays into a flat array for CVA base styles\n */\nexport function combineStyles(...styles: (readonly string[] | string)[]): string[] {\n return styles.flatMap(s => Array.isArray(s) ? [...s] : [s]);\n}\n","/**\n * DatePicker CVA Variants\n * Uses shared utilities from styles/ for consistency and reduced bundle size.\n */\n\nimport { cva } from 'class-variance-authority';\nimport {\n FOCUS_WITHIN_RING,\n FOCUS_RING,\n FOCUS_HIGHLIGHT,\n DISABLED_DATA_ATTR,\n DISABLED_STANDARD,\n TEXT_SIZE_SMALL_SCALE,\n TEXT_SIZE_MEDIUM_SCALE,\n ERROR_MESSAGE_BASE,\n DESCRIPTION_BASE,\n LABEL_BASE,\n POPOVER_ANIMATION_IN,\n POPOVER_ANIMATION_OUT,\n REDUCED_MOTION,\n TRANSITION_FAST,\n HOVER_ACCENT,\n FIELD_HEIGHTS,\n combineStyles,\n} from '../../styles';\n\n// ============================================================================\n// Date Field Variants\n// ============================================================================\n\nexport const dateFieldVariants = cva(\n combineStyles(\n 'flex items-center rounded-md border',\n 'bg-[var(--content-background)] text-[var(--content-foreground)]',\n 'transition-colors duration-200',\n FOCUS_WITHIN_RING,\n DISABLED_DATA_ATTR\n ),\n {\n variants: {\n size: {\n sm: `${FIELD_HEIGHTS.sm} px-3 text-sm gap-0.5`,\n default: `${FIELD_HEIGHTS.default} px-4 text-base gap-1`,\n lg: `${FIELD_HEIGHTS.lg} px-5 text-lg gap-1.5`,\n },\n isInvalid: {\n true: 'border-[var(--destructive-background)] focus-within:ring-[var(--destructive-background)]',\n false: 'border-[var(--input-border)] hover:border-[var(--input-border)]/80',\n },\n },\n defaultVariants: {\n size: 'default',\n isInvalid: false,\n },\n }\n);\n\n// ============================================================================\n// Date Segment Variants\n// ============================================================================\n\nexport const dateSegmentVariants = cva(\n combineStyles(\n 'tabular-nums rounded px-0.5',\n FOCUS_HIGHLIGHT,\n 'data-[placeholder]:text-[var(--menu-muted)]',\n 'data-[type=literal]:text-[var(--menu-muted)]'\n ),\n {\n variants: {\n size: TEXT_SIZE_MEDIUM_SCALE,\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Calendar Cell Variants\n// ============================================================================\n\nexport const calendarCellVariants = cva(\n combineStyles(\n 'flex items-center justify-center rounded-md cursor-pointer',\n TRANSITION_FAST,\n HOVER_ACCENT,\n FOCUS_RING,\n // Selected state\n 'data-[selected]:bg-[var(--primary)] data-[selected]:text-[var(--primary-foreground)]',\n 'data-[selected]:hover:bg-[var(--primary)]/90 data-[selected]:font-semibold',\n // Today indicator\n 'data-[today]:border data-[today]:border-[var(--primary)]',\n // Range selection\n 'data-[selection-start]:rounded-l-md data-[selection-start]:rounded-r-none',\n 'data-[selection-end]:rounded-r-md data-[selection-end]:rounded-l-none',\n 'data-[selected]:data-[selection-start]:rounded-l-md',\n 'data-[selected]:data-[selection-end]:rounded-r-md',\n // Unavailable/outside/disabled states\n 'data-[unavailable]:text-[var(--menu-muted)] data-[unavailable]:pointer-events-none data-[unavailable]:opacity-50 data-[unavailable]:line-through',\n 'data-[outside-month]:text-[var(--menu-muted)] data-[outside-month]:opacity-50',\n 'data-[disabled]:text-[var(--menu-muted)] data-[disabled]:pointer-events-none data-[disabled]:opacity-50'\n ),\n {\n variants: {\n size: {\n sm: 'h-9 w-9 text-sm',\n default: 'h-11 w-11 text-base',\n lg: 'h-14 w-14 text-lg',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Calendar Header Variants\n// ============================================================================\n\nexport const calendarHeaderVariants = cva(\n 'flex items-center justify-between px-1 pb-4',\n {\n variants: {\n size: TEXT_SIZE_MEDIUM_SCALE,\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Calendar Navigation Button Variants\n// ============================================================================\n\nexport const calendarNavButtonVariants = cva(\n combineStyles(\n 'inline-flex items-center justify-center rounded-md text-[var(--menu-muted)]',\n TRANSITION_FAST,\n HOVER_ACCENT,\n FOCUS_RING,\n DISABLED_STANDARD\n ),\n {\n variants: {\n size: {\n sm: 'h-7 w-7',\n default: 'h-9 w-9',\n lg: 'h-11 w-11',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Calendar Grid Variants\n// ============================================================================\n\nexport const calendarGridVariants = cva(\n 'w-full border-collapse',\n {\n variants: {\n size: TEXT_SIZE_MEDIUM_SCALE,\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Calendar Grid Header Cell Variants\n// ============================================================================\n\nexport const calendarGridHeaderCellVariants = cva(\n 'text-center font-medium text-[var(--menu-muted)] pb-2',\n {\n variants: {\n size: {\n sm: 'text-xs w-9',\n default: 'text-sm w-11',\n lg: 'text-base w-14',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Popover Variants\n// ============================================================================\n\nexport const datePickerPopoverVariants = cva(\n combineStyles(\n 'z-50 rounded-md border p-3 shadow-md outline-none',\n 'bg-[var(--menu-background)] text-[var(--menu-foreground)]',\n POPOVER_ANIMATION_IN,\n POPOVER_ANIMATION_OUT,\n REDUCED_MOTION\n ),\n {\n variants: {\n size: {\n sm: 'w-[260px]',\n default: 'w-[320px]',\n lg: 'w-[380px]',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Trigger Button Variants\n// ============================================================================\n\nexport const datePickerTriggerVariants = cva(\n combineStyles(\n 'inline-flex items-center justify-center rounded-md text-[var(--menu-muted)]',\n TRANSITION_FAST,\n HOVER_ACCENT,\n FOCUS_RING,\n DISABLED_DATA_ATTR\n ),\n {\n variants: {\n size: {\n sm: 'h-7 w-7',\n default: 'h-9 w-9',\n lg: 'h-11 w-11',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Description and Error Variants\n// ============================================================================\n\nexport const datePickerDescriptionVariants = cva(\n combineStyles(DESCRIPTION_BASE, 'mt-1'),\n {\n variants: {\n size: TEXT_SIZE_SMALL_SCALE,\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\nexport const datePickerErrorVariants = cva(\n combineStyles(ERROR_MESSAGE_BASE, 'mt-1'),\n {\n variants: {\n size: TEXT_SIZE_SMALL_SCALE,\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Label Variants\n// ============================================================================\n\nexport const datePickerLabelVariants = cva(\n combineStyles(\n LABEL_BASE,\n 'block mb-1.5',\n 'data-[required]:after:content-[\"*\"] data-[required]:after:ml-0.5 data-[required]:after:text-[var(--destructive-background)]'\n ),\n {\n variants: {\n size: {\n sm: 'text-sm',\n default: 'text-sm',\n lg: 'text-base',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n","'use client';\n\n/**\n * DatePicker Component\n *\n * A fully accessible date picker combining keyboard-editable date segments\n * with a calendar popover for visual selection.\n *\n * Features:\n * - WCAG 2.2 AAA compliant (7:1 contrast, 44x44px touch targets)\n * - Keyboard-editable date segments with spinbutton behavior\n * - Calendar popover with month/year navigation\n * - Time selection with configurable granularity\n * - Internationalization and timezone support\n *\n * @see {@link ../../docs/prd/datepicker-prd.md} for requirements\n */\n\nimport { createContext, forwardRef, memo, useMemo, type ReactElement } from 'react';\nimport {\n DatePicker as AriaDatePicker,\n DateInput as AriaDateInput,\n DateSegment as AriaDateSegment,\n Button as AriaButton,\n Calendar as AriaCalendar,\n CalendarGrid as AriaCalendarGrid,\n CalendarCell as AriaCalendarCell,\n CalendarGridHeader as AriaCalendarGridHeader,\n CalendarHeaderCell as AriaCalendarHeaderCell,\n CalendarGridBody as AriaCalendarGridBody,\n Heading as AriaHeading,\n Popover as AriaPopover,\n Dialog as AriaDialog,\n Label as AriaLabel,\n Text as AriaText,\n Group as AriaGroup,\n FieldError as AriaFieldError,\n} from 'react-aria-components';\nimport { Calendar as CalendarIcon, ChevronLeft, ChevronRight } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport type { DatePickerProps, DatePickerContextValue } from './DatePicker.types';\nimport {\n dateFieldVariants,\n dateSegmentVariants,\n calendarCellVariants,\n calendarHeaderVariants,\n calendarNavButtonVariants,\n calendarGridVariants,\n calendarGridHeaderCellVariants,\n datePickerPopoverVariants,\n datePickerTriggerVariants,\n datePickerDescriptionVariants,\n datePickerErrorVariants,\n datePickerLabelVariants,\n} from './DatePicker.variants';\n\n// =============================================================================\n// Context\n// =============================================================================\n\nconst DatePickerContext = createContext<DatePickerContextValue>({\n size: 'default',\n});\n\n// Export for potential future use in compound components\nexport { DatePickerContext };\n\n// =============================================================================\n// DatePicker Component\n// =============================================================================\n\n/**\n * DatePicker component for selecting dates with keyboard input and calendar popup.\n *\n * @example\n * ```tsx\n * <DatePicker\n * label=\"Event Date\"\n * description=\"When will the event take place?\"\n * />\n * ```\n */\nexport const DatePicker = memo(forwardRef<HTMLDivElement, DatePickerProps>(\n (\n {\n label,\n description,\n errorMessage,\n size = 'default',\n className,\n placement = 'bottom',\n ...props\n },\n ref\n ): ReactElement => {\n // Memoize context value to prevent unnecessary re-renders of consumers\n const contextValue = useMemo<DatePickerContextValue>(\n () => ({\n size,\n isInvalid: props.isInvalid,\n isDisabled: props.isDisabled,\n }),\n [size, props.isInvalid, props.isDisabled]\n );\n\n return (\n <DatePickerContext.Provider value={contextValue}>\n <AriaDatePicker\n ref={ref}\n className={cn('group flex flex-col gap-1', className)}\n {...props}\n >\n {/* Label */}\n <AriaLabel\n className={cn(datePickerLabelVariants({ size }))}\n data-required={props.isRequired || undefined}\n >\n {label}\n </AriaLabel>\n\n {/* Date Field Group */}\n <AriaGroup\n className={cn(\n dateFieldVariants({\n size,\n isInvalid: props.isInvalid,\n })\n )}\n >\n <AriaDateInput className=\"flex flex-1 items-center\">\n {(segment) => (\n <AriaDateSegment\n segment={segment}\n className={cn(dateSegmentVariants({ size }))}\n />\n )}\n </AriaDateInput>\n\n {/* Calendar Trigger Button */}\n <AriaButton\n className={cn(datePickerTriggerVariants({ size }))}\n aria-label=\"Open calendar\"\n >\n <CalendarIcon className=\"h-4 w-4\" />\n </AriaButton>\n </AriaGroup>\n\n {/* Description */}\n {description && (\n <AriaText\n slot=\"description\"\n className={cn(datePickerDescriptionVariants({ size }))}\n >\n {description}\n </AriaText>\n )}\n\n {/* Error Message */}\n <AriaFieldError className={cn(datePickerErrorVariants({ size }))}>\n {errorMessage}\n </AriaFieldError>\n\n {/* Calendar Popover */}\n <AriaPopover\n placement={placement}\n className={cn(datePickerPopoverVariants({ size }))}\n >\n <AriaDialog className=\"outline-none\">\n <AriaCalendar className=\"w-full\">\n {/* Calendar Header - use div instead of header to avoid landmark a11y issues */}\n <div className={cn(calendarHeaderVariants({ size }))}>\n <AriaButton\n slot=\"previous\"\n className={cn(calendarNavButtonVariants({ size }))}\n aria-label=\"Previous month\"\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </AriaButton>\n\n <AriaHeading className=\"flex-1 text-center font-semibold\" />\n\n <AriaButton\n slot=\"next\"\n className={cn(calendarNavButtonVariants({ size }))}\n aria-label=\"Next month\"\n >\n <ChevronRight className=\"h-4 w-4\" />\n </AriaButton>\n </div>\n\n {/* Calendar Grid */}\n <AriaCalendarGrid className={cn(calendarGridVariants({ size }))}>\n <AriaCalendarGridHeader>\n {(day) => (\n <AriaCalendarHeaderCell\n className={cn(calendarGridHeaderCellVariants({ size }))}\n >\n {day}\n </AriaCalendarHeaderCell>\n )}\n </AriaCalendarGridHeader>\n <AriaCalendarGridBody>\n {(date) => (\n <AriaCalendarCell\n date={date}\n className={cn(calendarCellVariants({ size }))}\n />\n )}\n </AriaCalendarGridBody>\n </AriaCalendarGrid>\n </AriaCalendar>\n </AriaDialog>\n </AriaPopover>\n </AriaDatePicker>\n </DatePickerContext.Provider>\n );\n }\n));\n\nDatePicker.displayName = 'DatePicker';\n","'use client';\n\n/**\n * DateRangePicker Component\n *\n * A date range picker for selecting start and end dates with a shared calendar.\n *\n * Features:\n * - Start and end date fields with range separator\n * - RangeCalendar with highlighted selection\n * - Validates end date is after start date\n * - WCAG 2.2 AAA compliant\n *\n * @see {@link ../../docs/prd/datepicker-prd.md} for requirements\n */\n\nimport { forwardRef, type ReactElement } from 'react';\nimport {\n DateRangePicker as AriaDateRangePicker,\n DateInput as AriaDateInput,\n DateSegment as AriaDateSegment,\n Button as AriaButton,\n RangeCalendar as AriaRangeCalendar,\n CalendarGrid as AriaCalendarGrid,\n CalendarCell as AriaCalendarCell,\n CalendarGridHeader as AriaCalendarGridHeader,\n CalendarHeaderCell as AriaCalendarHeaderCell,\n CalendarGridBody as AriaCalendarGridBody,\n Heading as AriaHeading,\n Popover as AriaPopover,\n Dialog as AriaDialog,\n Label as AriaLabel,\n Text as AriaText,\n Group as AriaGroup,\n FieldError as AriaFieldError,\n} from 'react-aria-components';\nimport { Calendar as CalendarIcon, ChevronLeft, ChevronRight } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport type { DateRangePickerProps } from './DatePicker.types';\nimport {\n dateFieldVariants,\n dateSegmentVariants,\n calendarCellVariants,\n calendarHeaderVariants,\n calendarNavButtonVariants,\n calendarGridVariants,\n calendarGridHeaderCellVariants,\n datePickerPopoverVariants,\n datePickerTriggerVariants,\n datePickerDescriptionVariants,\n datePickerErrorVariants,\n datePickerLabelVariants,\n} from './DatePicker.variants';\n\n// =============================================================================\n// DateRangePicker Component\n// =============================================================================\n\n/**\n * DateRangePicker component for selecting date ranges.\n *\n * @example\n * ```tsx\n * <DateRangePicker\n * label=\"Stay Duration\"\n * description=\"Select check-in and check-out dates\"\n * />\n * ```\n */\nexport const DateRangePicker = forwardRef<HTMLDivElement, DateRangePickerProps>(\n (\n {\n label,\n description,\n errorMessage,\n size = 'default',\n className,\n placement = 'bottom',\n startName,\n endName,\n ...props\n },\n ref\n ): ReactElement => {\n return (\n <AriaDateRangePicker\n ref={ref}\n className={cn('group flex flex-col gap-1', className)}\n startName={startName}\n endName={endName}\n {...props}\n >\n {/* Label */}\n <AriaLabel\n className={cn(datePickerLabelVariants({ size }))}\n data-required={props.isRequired || undefined}\n >\n {label}\n </AriaLabel>\n\n {/* Date Range Field Group */}\n <AriaGroup\n className={cn(\n dateFieldVariants({\n size,\n isInvalid: props.isInvalid,\n })\n )}\n >\n {/* Start Date Input */}\n <AriaDateInput slot=\"start\" className=\"flex items-center\">\n {(segment) => (\n <AriaDateSegment\n segment={segment}\n className={cn(dateSegmentVariants({ size }))}\n />\n )}\n </AriaDateInput>\n\n {/* Range Separator */}\n <span\n aria-hidden=\"true\"\n className=\"px-2 text-[var(--menu-muted)]\"\n >\n –\n </span>\n\n {/* End Date Input */}\n <AriaDateInput slot=\"end\" className=\"flex items-center\">\n {(segment) => (\n <AriaDateSegment\n segment={segment}\n className={cn(dateSegmentVariants({ size }))}\n />\n )}\n </AriaDateInput>\n\n {/* Calendar Trigger Button */}\n <AriaButton\n className={cn(datePickerTriggerVariants({ size }))}\n aria-label=\"Open calendar\"\n >\n <CalendarIcon className=\"h-4 w-4\" />\n </AriaButton>\n </AriaGroup>\n\n {/* Description */}\n {description && (\n <AriaText\n slot=\"description\"\n className={cn(datePickerDescriptionVariants({ size }))}\n >\n {description}\n </AriaText>\n )}\n\n {/* Error Message */}\n <AriaFieldError className={cn(datePickerErrorVariants({ size }))}>\n {errorMessage}\n </AriaFieldError>\n\n {/* Range Calendar Popover */}\n <AriaPopover\n placement={placement}\n className={cn(datePickerPopoverVariants({ size }))}\n >\n <AriaDialog className=\"outline-none\">\n <AriaRangeCalendar className=\"w-full\">\n {/* Calendar Header - use div instead of header to avoid landmark a11y issues */}\n <div className={cn(calendarHeaderVariants({ size }))}>\n <AriaButton\n slot=\"previous\"\n className={cn(calendarNavButtonVariants({ size }))}\n aria-label=\"Previous month\"\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </AriaButton>\n\n <AriaHeading className=\"flex-1 text-center font-semibold\" />\n\n <AriaButton\n slot=\"next\"\n className={cn(calendarNavButtonVariants({ size }))}\n aria-label=\"Next month\"\n >\n <ChevronRight className=\"h-4 w-4\" />\n </AriaButton>\n </div>\n\n {/* Calendar Grid */}\n <AriaCalendarGrid className={cn(calendarGridVariants({ size }))}>\n <AriaCalendarGridHeader>\n {(day) => (\n <AriaCalendarHeaderCell\n className={cn(calendarGridHeaderCellVariants({ size }))}\n >\n {day}\n </AriaCalendarHeaderCell>\n )}\n </AriaCalendarGridHeader>\n <AriaCalendarGridBody>\n {(date) => (\n <AriaCalendarCell\n date={date}\n className={cn(calendarCellVariants({ size }))}\n />\n )}\n </AriaCalendarGridBody>\n </AriaCalendarGrid>\n </AriaRangeCalendar>\n </AriaDialog>\n </AriaPopover>\n </AriaDateRangePicker>\n );\n }\n);\n\nDateRangePicker.displayName = 'DateRangePicker';\n","'use client';\n\n/**\n * DateField Component\n *\n * A standalone keyboard-editable date field without calendar popover.\n * Useful for dense forms where a full DatePicker is not needed.\n *\n * Features:\n * - Keyboard-editable date segments with spinbutton behavior\n * - Full keyboard navigation (Tab, Arrow keys, number typing)\n * - Time selection with configurable granularity\n * - WCAG 2.2 AAA compliant\n *\n * @see {@link ../../docs/prd/datepicker-prd.md} for requirements\n */\n\nimport { forwardRef, type ReactElement } from 'react';\nimport {\n DateField as AriaDateField,\n DateInput as AriaDateInput,\n DateSegment as AriaDateSegment,\n Label as AriaLabel,\n Text as AriaText,\n FieldError as AriaFieldError,\n} from 'react-aria-components';\nimport { cn } from '../../utils/cn';\nimport type { DateFieldProps } from './DatePicker.types';\nimport {\n dateFieldVariants,\n dateSegmentVariants,\n datePickerDescriptionVariants,\n datePickerErrorVariants,\n datePickerLabelVariants,\n} from './DatePicker.variants';\n\n// =============================================================================\n// DateField Component\n// =============================================================================\n\n/**\n * DateField component for keyboard-editable date input.\n *\n * @example\n * ```tsx\n * <DateField\n * label=\"Birth Date\"\n * description=\"Enter your date of birth\"\n * />\n * ```\n */\nexport const DateField = forwardRef<HTMLDivElement, DateFieldProps>(\n (\n {\n label,\n description,\n errorMessage,\n size = 'default',\n className,\n ...props\n },\n ref\n ): ReactElement => {\n return (\n <AriaDateField\n ref={ref}\n className={cn('group flex flex-col gap-1', className)}\n {...props}\n >\n {/* Label */}\n <AriaLabel\n className={cn(datePickerLabelVariants({ size }))}\n data-required={props.isRequired || undefined}\n >\n {label}\n </AriaLabel>\n\n {/* Date Input */}\n <AriaDateInput\n className={cn(\n dateFieldVariants({\n size,\n isInvalid: props.isInvalid,\n }),\n 'w-fit'\n )}\n >\n {(segment) => (\n <AriaDateSegment\n segment={segment}\n className={cn(dateSegmentVariants({ size }))}\n />\n )}\n </AriaDateInput>\n\n {/* Description */}\n {description && (\n <AriaText\n slot=\"description\"\n className={cn(datePickerDescriptionVariants({ size }))}\n >\n {description}\n </AriaText>\n )}\n\n {/* Error Message */}\n <AriaFieldError className={cn(datePickerErrorVariants({ size }))}>\n {errorMessage}\n </AriaFieldError>\n </AriaDateField>\n );\n }\n);\n\nDateField.displayName = 'DateField';\n","'use client';\n\n/**\n * Calendar Component\n *\n * A standalone calendar grid for inline date selection.\n * Useful when the calendar should always be visible (not in a popover).\n *\n * Features:\n * - Full keyboard navigation (Arrow keys, Page Up/Down, Home/End)\n * - Month/year navigation\n * - Date constraints (min/max, unavailable dates)\n * - WCAG 2.2 AAA compliant (7:1 contrast, 44x44px touch targets)\n *\n * @see {@link ../../docs/prd/datepicker-prd.md} for requirements\n */\n\nimport { forwardRef, type ReactElement } from 'react';\nimport {\n Calendar as AriaCalendar,\n CalendarGrid as AriaCalendarGrid,\n CalendarCell as AriaCalendarCell,\n CalendarGridHeader as AriaCalendarGridHeader,\n CalendarHeaderCell as AriaCalendarHeaderCell,\n CalendarGridBody as AriaCalendarGridBody,\n Heading as AriaHeading,\n Button as AriaButton,\n} from 'react-aria-components';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport type { CalendarProps } from './DatePicker.types';\nimport {\n calendarCellVariants,\n calendarHeaderVariants,\n calendarNavButtonVariants,\n calendarGridVariants,\n calendarGridHeaderCellVariants,\n} from './DatePicker.variants';\n\n// =============================================================================\n// Calendar Component\n// =============================================================================\n\n/**\n * Calendar component for inline date selection.\n *\n * @example\n * ```tsx\n * <Calendar\n * value={selectedDate}\n * onChange={setSelectedDate}\n * minValue={today(getLocalTimeZone())}\n * />\n * ```\n */\nexport const Calendar = forwardRef<HTMLDivElement, CalendarProps>(\n ({ size = 'default', className, ...props }, ref): ReactElement => {\n return (\n <AriaCalendar\n ref={ref}\n className={cn('w-fit', className)}\n {...props}\n >\n {/* Calendar Header - use div instead of header to avoid landmark a11y issues */}\n <div className={cn(calendarHeaderVariants({ size }))}>\n <AriaButton\n slot=\"previous\"\n className={cn(calendarNavButtonVariants({ size }))}\n aria-label=\"Previous month\"\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </AriaButton>\n\n <AriaHeading className=\"flex-1 text-center font-semibold\" />\n\n <AriaButton\n slot=\"next\"\n className={cn(calendarNavButtonVariants({ size }))}\n aria-label=\"Next month\"\n >\n <ChevronRight className=\"h-4 w-4\" />\n </AriaButton>\n </div>\n\n {/* Calendar Grid */}\n <AriaCalendarGrid className={cn(calendarGridVariants({ size }))}>\n <AriaCalendarGridHeader>\n {(day) => (\n <AriaCalendarHeaderCell\n className={cn(calendarGridHeaderCellVariants({ size }))}\n >\n {day}\n </AriaCalendarHeaderCell>\n )}\n </AriaCalendarGridHeader>\n <AriaCalendarGridBody>\n {(date) => (\n <AriaCalendarCell\n date={date}\n className={cn(calendarCellVariants({ size }))}\n />\n )}\n </AriaCalendarGridBody>\n </AriaCalendarGrid>\n </AriaCalendar>\n );\n }\n);\n\nCalendar.displayName = 'Calendar';\n","/**\n * DatePicker Component Types\n *\n * Zod schemas and TypeScript types for DatePicker, DateRangePicker,\n * DateField, and Calendar components.\n *\n * @see {@link ../../docs/prd/datepicker-prd.md} for full requirements\n */\n\nimport { z } from 'zod';\nimport type {\n DatePickerProps as AriaDatePickerProps,\n DateRangePickerProps as AriaDateRangePickerProps,\n DateFieldProps as AriaDateFieldProps,\n CalendarProps as AriaCalendarProps,\n DateValue,\n RangeValue,\n} from 'react-aria-components';\nimport type { VariantProps } from 'class-variance-authority';\nimport type { dateFieldVariants, calendarCellVariants } from './DatePicker.variants';\n\n// ============================================================================\n// Date Value Types (re-exported for convenience)\n// ============================================================================\n\n/**\n * Union type for all date values supported by the DatePicker.\n * - CalendarDate: Date only (no time)\n * - CalendarDateTime: Date and time (no timezone)\n * - ZonedDateTime: Date, time, and timezone\n */\nexport type { DateValue } from 'react-aria-components';\n\n/**\n * Date range value type for DateRangePicker.\n */\nexport type DateRangeValue = RangeValue<DateValue>;\n\n// ============================================================================\n// Granularity Type\n// ============================================================================\n\n/**\n * Controls which date/time segments are displayed.\n * - 'day': Date only (MM/DD/YYYY)\n * - 'hour': Date + hour + AM/PM\n * - 'minute': Date + hour + minute + AM/PM\n * - 'second': Date + hour + minute + second + AM/PM\n */\nexport type Granularity = 'day' | 'hour' | 'minute' | 'second';\n\n// ============================================================================\n// Size Variant Type\n// ============================================================================\n\n/**\n * Size variants for DatePicker components.\n * - 'sm': Compact size (36px cells) - desktop-only, not AAA compliant\n * - 'default': Standard size (44px cells) - AAA compliant\n * - 'lg': Large size (56px cells) - AAA compliant\n */\nexport type DatePickerSize = 'sm' | 'default' | 'lg';\n\n// ============================================================================\n// Placement Type\n// ============================================================================\n\n/**\n * Popover placement options.\n */\nexport type PopoverPlacement = 'bottom' | 'top' | 'left' | 'right';\n\n// ============================================================================\n// First Day of Week Type\n// ============================================================================\n\n/**\n * First day of week options for calendar display.\n */\nexport type FirstDayOfWeek = 'sun' | 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat';\n\n// ============================================================================\n// Zod Schemas\n// ============================================================================\n\n/**\n * Zod schema for DatePicker props validation.\n * Used for runtime validation of component props.\n */\nexport const DatePickerPropsSchema = z.object({\n // Value props\n value: z.custom<DateValue>().optional(),\n defaultValue: z.custom<DateValue>().optional(),\n placeholderValue: z.custom<DateValue>().optional(),\n\n // Granularity props\n granularity: z.enum(['day', 'hour', 'minute', 'second']).default('day'),\n hourCycle: z.union([z.literal(12), z.literal(24)]).optional(),\n hideTimeZone: z.boolean().optional(),\n shouldForceLeadingZeros: z.boolean().optional(),\n\n // Constraint props\n minValue: z.custom<DateValue>().optional(),\n maxValue: z.custom<DateValue>().optional(),\n /** Callback to determine if a specific date is unavailable for selection */\n isDateUnavailable: z.function().optional(),\n\n // State props\n isOpen: z.boolean().optional(),\n defaultOpen: z.boolean().optional(),\n isDisabled: z.boolean().optional(),\n isReadOnly: z.boolean().optional(),\n isRequired: z.boolean().optional(),\n isInvalid: z.boolean().optional(),\n\n // Validation props\n /** Custom validation function that returns an error message or null */\n validate: z.function().optional(),\n validationBehavior: z.enum(['native', 'aria']).default('native'),\n\n // Display props\n label: z.string(),\n description: z.string().optional(),\n /** Error message string or render function */\n errorMessage: z.union([z.string(), z.function()]).optional(),\n\n // Calendar props\n firstDayOfWeek: z.enum(['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']).optional(),\n pageBehavior: z.enum(['single', 'visible']).optional(),\n\n // Form props\n name: z.string().optional(),\n\n // Popover props\n placement: z.enum(['bottom', 'top', 'left', 'right']).optional(),\n visibleDuration: z.object({ months: z.number() }).optional(),\n\n // Variant props\n size: z.enum(['sm', 'default', 'lg']).default('default'),\n\n // Event props\n /** Called when the date value changes */\n onChange: z.function().optional(),\n /** Called when the popover open state changes */\n onOpenChange: z.function().optional(),\n /** Called when the field gains focus */\n onFocus: z.function().optional(),\n /** Called when the field loses focus */\n onBlur: z.function().optional(),\n /** Called when focus state changes */\n onFocusChange: z.function().optional(),\n\n // Standard props\n className: z.string().optional(),\n children: z.any().optional(),\n});\n\n/**\n * Zod schema for DateRangePicker props validation.\n * Extends DatePickerPropsSchema with range-specific props.\n */\nexport const DateRangePickerPropsSchema = DatePickerPropsSchema.omit({\n value: true,\n defaultValue: true,\n onChange: true,\n}).extend({\n // Range value props\n value: z\n .object({\n start: z.custom<DateValue>(),\n end: z.custom<DateValue>(),\n })\n .optional(),\n defaultValue: z\n .object({\n start: z.custom<DateValue>(),\n end: z.custom<DateValue>(),\n })\n .optional(),\n\n // Form props for range\n startName: z.string().optional(),\n endName: z.string().optional(),\n\n // Range event props\n /** Called when the date range value changes */\n onChange: z.function().optional(),\n});\n\n/**\n * Zod schema for standalone DateField props validation.\n */\nexport const DateFieldPropsSchema = z.object({\n // Value props\n value: z.custom<DateValue>().optional(),\n defaultValue: z.custom<DateValue>().optional(),\n placeholderValue: z.custom<DateValue>().optional(),\n\n // Granularity props\n granularity: z.enum(['day', 'hour', 'minute', 'second']).default('day'),\n hourCycle: z.union([z.literal(12), z.literal(24)]).optional(),\n hideTimeZone: z.boolean().optional(),\n shouldForceLeadingZeros: z.boolean().optional(),\n\n // Constraint props\n minValue: z.custom<DateValue>().optional(),\n maxValue: z.custom<DateValue>().optional(),\n\n // State props\n isDisabled: z.boolean().optional(),\n isReadOnly: z.boolean().optional(),\n isRequired: z.boolean().optional(),\n isInvalid: z.boolean().optional(),\n\n // Validation props\n /** Custom validation function that returns an error message or null */\n validate: z.function().optional(),\n validationBehavior: z.enum(['native', 'aria']).default('native'),\n\n // Display props\n label: z.string(),\n description: z.string().optional(),\n /** Error message string or render function */\n errorMessage: z.union([z.string(), z.function()]).optional(),\n\n // Form props\n name: z.string().optional(),\n\n // Variant props\n size: z.enum(['sm', 'default', 'lg']).default('default'),\n\n // Event props\n /** Called when the date value changes */\n onChange: z.function().optional(),\n /** Called when the field gains focus */\n onFocus: z.function().optional(),\n /** Called when the field loses focus */\n onBlur: z.function().optional(),\n /** Called when focus state changes */\n onFocusChange: z.function().optional(),\n\n // Standard props\n className: z.string().optional(),\n});\n\n/**\n * Zod schema for standalone Calendar props validation.\n */\nexport const CalendarPropsSchema = z.object({\n // Value props\n value: z.custom<DateValue>().optional(),\n defaultValue: z.custom<DateValue>().optional(),\n focusedValue: z.custom<DateValue>().optional(),\n defaultFocusedValue: z.custom<DateValue>().optional(),\n\n // Constraint props\n minValue: z.custom<DateValue>().optional(),\n maxValue: z.custom<DateValue>().optional(),\n /** Callback to determine if a specific date is unavailable for selection */\n isDateUnavailable: z.function().optional(),\n\n // State props\n isDisabled: z.boolean().optional(),\n isReadOnly: z.boolean().optional(),\n\n // Calendar props\n firstDayOfWeek: z.enum(['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']).optional(),\n pageBehavior: z.enum(['single', 'visible']).optional(),\n visibleDuration: z.object({ months: z.number() }).optional(),\n\n // Variant props\n size: z.enum(['sm', 'default', 'lg']).default('default'),\n\n // Event props\n /** Called when the date value changes */\n onChange: z.function().optional(),\n /** Called when the focused date changes */\n onFocusChange: z.function().optional(),\n\n // Standard props\n className: z.string().optional(),\n});\n\n/**\n * Zod schema for RangeCalendar props validation.\n */\nexport const RangeCalendarPropsSchema = CalendarPropsSchema.omit({\n value: true,\n defaultValue: true,\n onChange: true,\n}).extend({\n // Range value props\n value: z\n .object({\n start: z.custom<DateValue>(),\n end: z.custom<DateValue>(),\n })\n .optional(),\n defaultValue: z\n .object({\n start: z.custom<DateValue>(),\n end: z.custom<DateValue>(),\n })\n .optional(),\n\n // Range event props\n /** Called when the date range value changes */\n onChange: z.function().optional(),\n});\n\n// ============================================================================\n// TypeScript Types (using React Aria types directly for proper function typing)\n// ============================================================================\n\n/**\n * Custom props added to DatePicker components (not from React Aria).\n */\nexport interface ThemisDatePickerCustomProps {\n /** Size variant: 'sm', 'default', or 'lg' */\n size?: DatePickerSize;\n /** Popover placement */\n placement?: PopoverPlacement;\n /** Field label */\n label?: string;\n /** Description text below the field */\n description?: string;\n /** Error message when field is invalid */\n errorMessage?: string;\n}\n\n/**\n * Props for the DatePicker component.\n * Uses React Aria's DatePickerProps directly to ensure correct function types.\n */\nexport type DatePickerProps = AriaDatePickerProps<DateValue> & ThemisDatePickerCustomProps;\n\n/**\n * Props for the DateRangePicker component.\n * Uses React Aria's DateRangePickerProps directly to ensure correct function types.\n */\nexport type DateRangePickerProps = AriaDateRangePickerProps<DateValue> & ThemisDatePickerCustomProps;\n\n/**\n * Props for the standalone DateField component.\n * Uses React Aria's DateFieldProps directly to ensure correct function types.\n */\nexport type DateFieldProps = AriaDateFieldProps<DateValue> & ThemisDatePickerCustomProps;\n\n/**\n * Props for the standalone Calendar component.\n * Uses React Aria's CalendarProps directly to ensure correct function types.\n */\nexport type CalendarProps = AriaCalendarProps<DateValue> & {\n /** Size variant: 'sm', 'default', or 'lg' */\n size?: DatePickerSize;\n};\n\n/**\n * Props for the RangeCalendar component.\n */\nexport type RangeCalendarProps = {\n /** Size variant: 'sm', 'default', or 'lg' */\n size?: DatePickerSize;\n /** Additional CSS class names */\n className?: string;\n};\n\n// ============================================================================\n// Variant Types (from CVA)\n// ============================================================================\n\n/**\n * Variant props for dateFieldVariants CVA function.\n */\nexport type DateFieldVariantProps = VariantProps<typeof dateFieldVariants>;\n\n/**\n * Variant props for calendarCellVariants CVA function.\n */\nexport type CalendarCellVariantProps = VariantProps<typeof calendarCellVariants>;\n\n// ============================================================================\n// Compound Component Types\n// ============================================================================\n\n/**\n * Context value for DatePicker compound components.\n */\nexport interface DatePickerContextValue {\n size: DatePickerSize;\n isInvalid?: boolean;\n isDisabled?: boolean;\n}\n\n/**\n * Context value for Calendar compound components.\n */\nexport interface CalendarContextValue {\n size: DatePickerSize;\n isDisabled?: boolean;\n isReadOnly?: boolean;\n}\n"]}
1
+ {"version":3,"sources":["../../../src/utils/cn.ts","../../../src/styles/shared-variants.ts","../../../src/elements/DatePicker/DatePicker.variants.ts","../../../src/elements/DatePicker/DatePicker.tsx","../../../src/elements/DatePicker/DateRangePicker.tsx","../../../src/elements/DatePicker/DateField.tsx","../../../src/elements/DatePicker/Calendar.tsx","../../../src/elements/DatePicker/DatePicker.types.ts"],"names":["cn","inputs","twMerge","clsx","FOCUS_WITHIN_RING","FOCUS_RING","FOCUS_HIGHLIGHT","DISABLED_STANDARD","DISABLED_DATA_ATTR","TEXT_SIZE_SMALL_SCALE","TEXT_SIZE_MEDIUM_SCALE","FIELD_HEIGHTS","ERROR_MESSAGE_BASE","DESCRIPTION_BASE","LABEL_BASE","POPOVER_ANIMATION_IN","POPOVER_ANIMATION_OUT","REDUCED_MOTION","TRANSITION_FAST","HOVER_ACCENT","combineStyles","styles","s","dateFieldVariants","cva","dateSegmentVariants","calendarCellVariants","calendarHeaderVariants","calendarNavButtonVariants","calendarGridVariants","calendarGridHeaderCellVariants","datePickerPopoverVariants","datePickerTriggerVariants","datePickerDescriptionVariants","datePickerErrorVariants","datePickerLabelVariants","DatePickerContext","createContext","DatePicker","memo","forwardRef","label","description","errorMessage","size","className","placement","props","ref","contextValue","useMemo","jsx","jsxs","AriaDatePicker","AriaLabel","AriaGroup","AriaDateInput","segment","AriaDateSegment","AriaButton","CalendarIcon","AriaText","AriaFieldError","AriaPopover","AriaDialog","AriaCalendar","ChevronLeft","AriaHeading","ChevronRight","AriaCalendarGrid","AriaCalendarGridHeader","day","AriaCalendarHeaderCell","AriaCalendarGridBody","date","AriaCalendarCell","DateRangePicker","startName","endName","AriaDateRangePicker","AriaRangeCalendar","DateField","AriaDateField","Calendar","DatePickerPropsSchema","z","DateRangePickerPropsSchema","DateFieldPropsSchema","CalendarPropsSchema","RangeCalendarPropsSchema"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Class Name Utility\n * Merges Tailwind CSS classes with conflict resolution\n *\n * Combines clsx for conditional classes and tailwind-merge for deduplication\n *\n * @example\n * cn('px-2 py-1', 'px-4') // => 'py-1 px-4' (px-4 overrides px-2)\n * cn('text-red-500', condition && 'text-blue-500') // => conditional application\n */\n\nimport { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","/**\n * Shared CVA Variant Utilities\n *\n * Common patterns extracted from component variants for consistency and reduced bundle size.\n * Use these constants in CVA definitions to ensure consistent styling across Themis.\n *\n * @see interaction-states.ts for interaction-specific styles (focus, hover, pressed)\n */\n\n// =============================================================================\n// Focus Ring Patterns\n// =============================================================================\n\n/**\n * Focus-within ring (for container elements with focusable children)\n * Use when the container should show focus when any child is focused\n */\nexport const FOCUS_WITHIN_RING = [\n 'focus-within:outline-none',\n 'focus-within:ring-2',\n 'focus-within:ring-[var(--ring)]',\n 'focus-within:ring-offset-2',\n] as const;\n\n/**\n * Focus-visible ring (for directly focusable elements)\n * Use for buttons, inputs, and other interactive elements\n */\nexport const FOCUS_VISIBLE_RING = [\n 'focus-visible:outline-none',\n 'focus-visible:ring-2',\n 'focus-visible:ring-[var(--ring)]',\n 'focus-visible:ring-offset-2',\n] as const;\n\n/**\n * Standard focus ring (for elements using :focus pseudo-class)\n * Prefer focus-visible when possible for better UX\n */\nexport const FOCUS_RING = [\n 'focus:outline-none',\n 'focus:ring-2',\n 'focus:ring-[var(--ring)]',\n] as const;\n\n/**\n * Focus with background change (for segments, cells, menu items)\n */\nexport const FOCUS_HIGHLIGHT = [\n 'focus:outline-none',\n 'focus:bg-[var(--accent)]',\n 'focus:text-[var(--accent-foreground)]',\n] as const;\n\n// =============================================================================\n// Disabled State Patterns\n// =============================================================================\n\n/**\n * Standard disabled state using disabled attribute\n */\nexport const DISABLED_STANDARD = [\n 'disabled:pointer-events-none',\n 'disabled:opacity-50',\n] as const;\n\n/**\n * Disabled state using data attribute (React Aria pattern)\n */\nexport const DISABLED_DATA_ATTR = [\n 'data-[disabled]:pointer-events-none',\n 'data-[disabled]:opacity-50',\n 'data-[disabled]:cursor-not-allowed',\n] as const;\n\n// =============================================================================\n// Size-Based Text Variants\n// =============================================================================\n\n/**\n * Small text size scale (xs -> sm -> base)\n */\nexport const TEXT_SIZE_SMALL_SCALE = {\n sm: 'text-xs',\n default: 'text-sm',\n lg: 'text-base',\n} as const;\n\n/**\n * Medium text size scale (sm -> base -> lg)\n */\nexport const TEXT_SIZE_MEDIUM_SCALE = {\n sm: 'text-sm',\n default: 'text-base',\n lg: 'text-lg',\n} as const;\n\n// =============================================================================\n// Touch Target Utilities\n// =============================================================================\n\n/**\n * WCAG 2.2 AAA minimum touch target (44x44px)\n */\nexport const TOUCH_TARGET_MIN = [\n 'min-h-[44px]',\n 'min-w-[44px]',\n] as const;\n\n/**\n * Common button/cell sizes with touch target compliance\n */\nexport const INTERACTIVE_SIZES = {\n sm: 'h-9 w-9', // 36px - desktop only, NOT AAA compliant\n default: 'h-11 w-11', // 44px - AAA compliant\n lg: 'h-14 w-14', // 56px - AAA compliant, enhanced\n} as const;\n\n/**\n * Height-only sizes for fields and inputs\n */\nexport const FIELD_HEIGHTS = {\n sm: 'h-9', // 36px\n default: 'h-11', // 44px\n lg: 'h-14', // 56px\n} as const;\n\n// =============================================================================\n// Message/Feedback Patterns\n// =============================================================================\n\n/**\n * Error message styling\n */\nexport const ERROR_MESSAGE_BASE = [\n 'flex',\n 'items-center',\n 'gap-1.5',\n 'text-[var(--destructive-background)]',\n] as const;\n\n/**\n * Success message styling\n */\nexport const SUCCESS_MESSAGE_BASE = [\n 'flex',\n 'items-center',\n 'gap-1.5',\n 'text-[var(--success-background)]',\n] as const;\n\n/**\n * Description/helper text styling\n */\nexport const DESCRIPTION_BASE = [\n 'text-[var(--menu-muted)]',\n] as const;\n\n/**\n * Label base styling\n */\nexport const LABEL_BASE = [\n 'font-medium',\n 'text-[var(--content-foreground)]',\n] as const;\n\n/**\n * Required indicator pattern\n */\nexport const REQUIRED_INDICATOR = \"after:content-['*'] after:ml-0.5 after:text-[var(--destructive-background)]\";\n\n// =============================================================================\n// Animation Patterns\n// =============================================================================\n\n/**\n * Popover/dropdown entry animation\n */\nexport const POPOVER_ANIMATION_IN = [\n 'data-[entering]:animate-in',\n 'data-[entering]:fade-in-0',\n 'data-[entering]:zoom-in-95',\n] as const;\n\n/**\n * Popover/dropdown exit animation\n */\nexport const POPOVER_ANIMATION_OUT = [\n 'data-[exiting]:animate-out',\n 'data-[exiting]:fade-out-0',\n 'data-[exiting]:zoom-out-95',\n] as const;\n\n/**\n * Modal content enter animation (fade + zoom)\n * Uses React Aria data-[entering]/data-[exiting] attributes\n */\nexport const MODAL_ANIMATION_IN = [\n 'data-[entering]:animate-in',\n 'data-[entering]:fade-in-0',\n 'data-[entering]:zoom-in-95',\n 'data-[entering]:duration-200',\n 'data-[entering]:ease-out',\n] as const;\n\n/**\n * Modal content exit animation (fade + zoom)\n * Uses React Aria data-[entering]/data-[exiting] attributes\n */\nexport const MODAL_ANIMATION_OUT = [\n 'data-[exiting]:animate-out',\n 'data-[exiting]:fade-out-0',\n 'data-[exiting]:zoom-out-95',\n 'data-[exiting]:duration-150',\n 'data-[exiting]:ease-in',\n] as const;\n\n/**\n * Modal slide enter animation (fade + slide up)\n */\nexport const MODAL_SLIDE_IN = [\n 'data-[entering]:animate-in',\n 'data-[entering]:fade-in-0',\n 'data-[entering]:slide-in-from-bottom-4',\n 'data-[entering]:duration-200',\n 'data-[entering]:ease-out',\n] as const;\n\n/**\n * Modal slide exit animation (fade + slide down)\n */\nexport const MODAL_SLIDE_OUT = [\n 'data-[exiting]:animate-out',\n 'data-[exiting]:fade-out-0',\n 'data-[exiting]:slide-out-to-bottom-4',\n 'data-[exiting]:duration-150',\n 'data-[exiting]:ease-in',\n] as const;\n\n/**\n * Modal overlay enter/exit animation (fade only)\n */\nexport const MODAL_OVERLAY_IN = [\n 'data-[entering]:animate-in',\n 'data-[entering]:fade-in-0',\n 'data-[entering]:duration-200',\n] as const;\n\nexport const MODAL_OVERLAY_OUT = [\n 'data-[exiting]:animate-out',\n 'data-[exiting]:fade-out-0',\n 'data-[exiting]:duration-150',\n] as const;\n\n/**\n * Reduced motion support (WCAG 2.2)\n */\nexport const REDUCED_MOTION = [\n 'motion-reduce:transition-none',\n 'motion-reduce:animate-none',\n] as const;\n\n/**\n * Standard transition for colors\n */\nexport const TRANSITION_COLORS = [\n 'transition-colors',\n 'duration-200',\n] as const;\n\n/**\n * Fast transition for interactions\n */\nexport const TRANSITION_FAST = [\n 'transition-colors',\n 'duration-150',\n] as const;\n\n// =============================================================================\n// Hover State Patterns\n// =============================================================================\n\n/**\n * Accent background on hover (for interactive items)\n */\nexport const HOVER_ACCENT = [\n 'hover:bg-[var(--accent)]',\n 'hover:text-[var(--accent-foreground)]',\n] as const;\n\n// =============================================================================\n// Helper Functions\n// =============================================================================\n\n/**\n * Combines multiple style arrays into a flat array for CVA base styles\n */\nexport function combineStyles(...styles: (readonly string[] | string)[]): string[] {\n return styles.flatMap(s => Array.isArray(s) ? [...s] : [s]);\n}\n","/**\n * DatePicker CVA Variants\n * Uses shared utilities from styles/ for consistency and reduced bundle size.\n */\n\nimport { cva } from 'class-variance-authority';\nimport {\n FOCUS_WITHIN_RING,\n FOCUS_RING,\n FOCUS_HIGHLIGHT,\n DISABLED_DATA_ATTR,\n DISABLED_STANDARD,\n TEXT_SIZE_SMALL_SCALE,\n TEXT_SIZE_MEDIUM_SCALE,\n ERROR_MESSAGE_BASE,\n DESCRIPTION_BASE,\n LABEL_BASE,\n POPOVER_ANIMATION_IN,\n POPOVER_ANIMATION_OUT,\n REDUCED_MOTION,\n TRANSITION_FAST,\n HOVER_ACCENT,\n FIELD_HEIGHTS,\n combineStyles,\n} from '../../styles';\n\n// ============================================================================\n// Date Field Variants\n// ============================================================================\n\nexport const dateFieldVariants = cva(\n combineStyles(\n 'flex items-center rounded-md border',\n 'bg-[var(--content-background)] text-[var(--content-foreground)]',\n 'transition-colors duration-200',\n FOCUS_WITHIN_RING,\n DISABLED_DATA_ATTR\n ),\n {\n variants: {\n size: {\n sm: `${FIELD_HEIGHTS.sm} px-3 text-sm gap-0.5`,\n default: `${FIELD_HEIGHTS.default} px-4 text-base gap-1`,\n lg: `${FIELD_HEIGHTS.lg} px-5 text-lg gap-1.5`,\n },\n isInvalid: {\n true: 'border-[var(--destructive-background)] focus-within:ring-[var(--destructive-background)]',\n false: 'border-[var(--input-border)] hover:border-[var(--input-border)]/80',\n },\n },\n defaultVariants: {\n size: 'default',\n isInvalid: false,\n },\n }\n);\n\n// ============================================================================\n// Date Segment Variants\n// ============================================================================\n\nexport const dateSegmentVariants = cva(\n combineStyles(\n 'tabular-nums rounded px-0.5',\n FOCUS_HIGHLIGHT,\n 'data-[placeholder]:text-[var(--menu-muted)]',\n 'data-[type=literal]:text-[var(--menu-muted)]'\n ),\n {\n variants: {\n size: TEXT_SIZE_MEDIUM_SCALE,\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Calendar Cell Variants\n// ============================================================================\n\nexport const calendarCellVariants = cva(\n combineStyles(\n 'flex items-center justify-center rounded-md cursor-pointer',\n TRANSITION_FAST,\n HOVER_ACCENT,\n FOCUS_RING,\n // Selected state\n 'data-[selected]:bg-[var(--primary)] data-[selected]:text-[var(--primary-foreground)]',\n 'data-[selected]:hover:bg-[var(--primary)]/90 data-[selected]:font-semibold',\n // Today indicator\n 'data-[today]:border data-[today]:border-[var(--primary)]',\n // Range selection\n 'data-[selection-start]:rounded-l-md data-[selection-start]:rounded-r-none',\n 'data-[selection-end]:rounded-r-md data-[selection-end]:rounded-l-none',\n 'data-[selected]:data-[selection-start]:rounded-l-md',\n 'data-[selected]:data-[selection-end]:rounded-r-md',\n // Unavailable/outside/disabled states\n 'data-[unavailable]:text-[var(--menu-muted)] data-[unavailable]:pointer-events-none data-[unavailable]:opacity-50 data-[unavailable]:line-through',\n 'data-[outside-month]:text-[var(--menu-muted)] data-[outside-month]:opacity-50',\n 'data-[disabled]:text-[var(--menu-muted)] data-[disabled]:pointer-events-none data-[disabled]:opacity-50'\n ),\n {\n variants: {\n size: {\n sm: 'h-9 w-9 text-sm',\n default: 'h-11 w-11 text-base',\n lg: 'h-14 w-14 text-lg',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Calendar Header Variants\n// ============================================================================\n\nexport const calendarHeaderVariants = cva(\n 'flex items-center justify-between px-1 pb-4',\n {\n variants: {\n size: TEXT_SIZE_MEDIUM_SCALE,\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Calendar Navigation Button Variants\n// ============================================================================\n\nexport const calendarNavButtonVariants = cva(\n combineStyles(\n 'inline-flex items-center justify-center rounded-md text-[var(--menu-muted)]',\n TRANSITION_FAST,\n HOVER_ACCENT,\n FOCUS_RING,\n DISABLED_STANDARD\n ),\n {\n variants: {\n size: {\n sm: 'h-7 w-7',\n default: 'h-9 w-9',\n lg: 'h-11 w-11',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Calendar Grid Variants\n// ============================================================================\n\nexport const calendarGridVariants = cva(\n 'w-full border-collapse',\n {\n variants: {\n size: TEXT_SIZE_MEDIUM_SCALE,\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Calendar Grid Header Cell Variants\n// ============================================================================\n\nexport const calendarGridHeaderCellVariants = cva(\n 'text-center font-medium text-[var(--menu-muted)] pb-2',\n {\n variants: {\n size: {\n sm: 'text-xs w-9',\n default: 'text-sm w-11',\n lg: 'text-base w-14',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Popover Variants\n// ============================================================================\n\nexport const datePickerPopoverVariants = cva(\n combineStyles(\n 'z-50 rounded-md border p-3 shadow-md outline-none',\n 'bg-[var(--menu-background)] text-[var(--menu-foreground)]',\n POPOVER_ANIMATION_IN,\n POPOVER_ANIMATION_OUT,\n REDUCED_MOTION\n ),\n {\n variants: {\n size: {\n sm: 'w-[260px]',\n default: 'w-[320px]',\n lg: 'w-[380px]',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Trigger Button Variants\n// ============================================================================\n\nexport const datePickerTriggerVariants = cva(\n combineStyles(\n 'inline-flex items-center justify-center rounded-md text-[var(--menu-muted)]',\n TRANSITION_FAST,\n HOVER_ACCENT,\n FOCUS_RING,\n DISABLED_DATA_ATTR\n ),\n {\n variants: {\n size: {\n sm: 'h-7 w-7',\n default: 'h-9 w-9',\n lg: 'h-11 w-11',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Description and Error Variants\n// ============================================================================\n\nexport const datePickerDescriptionVariants = cva(\n combineStyles(DESCRIPTION_BASE, 'mt-1'),\n {\n variants: {\n size: TEXT_SIZE_SMALL_SCALE,\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\nexport const datePickerErrorVariants = cva(\n combineStyles(ERROR_MESSAGE_BASE, 'mt-1'),\n {\n variants: {\n size: TEXT_SIZE_SMALL_SCALE,\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Label Variants\n// ============================================================================\n\nexport const datePickerLabelVariants = cva(\n combineStyles(\n LABEL_BASE,\n 'block mb-1.5',\n 'data-[required]:after:content-[\"*\"] data-[required]:after:ml-0.5 data-[required]:after:text-[var(--destructive-background)]'\n ),\n {\n variants: {\n size: {\n sm: 'text-sm',\n default: 'text-sm',\n lg: 'text-base',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n","'use client';\n\n/**\n * DatePicker Component\n *\n * A fully accessible date picker combining keyboard-editable date segments\n * with a calendar popover for visual selection.\n *\n * Features:\n * - WCAG 2.2 AAA compliant (7:1 contrast, 44x44px touch targets)\n * - Keyboard-editable date segments with spinbutton behavior\n * - Calendar popover with month/year navigation\n * - Time selection with configurable granularity\n * - Internationalization and timezone support\n *\n * @see {@link ../../docs/prd/datepicker-prd.md} for requirements\n */\n\nimport { createContext, forwardRef, memo, useMemo, type ReactElement } from 'react';\nimport {\n DatePicker as AriaDatePicker,\n DateInput as AriaDateInput,\n DateSegment as AriaDateSegment,\n Button as AriaButton,\n Calendar as AriaCalendar,\n CalendarGrid as AriaCalendarGrid,\n CalendarCell as AriaCalendarCell,\n CalendarGridHeader as AriaCalendarGridHeader,\n CalendarHeaderCell as AriaCalendarHeaderCell,\n CalendarGridBody as AriaCalendarGridBody,\n Heading as AriaHeading,\n Popover as AriaPopover,\n Dialog as AriaDialog,\n Label as AriaLabel,\n Text as AriaText,\n Group as AriaGroup,\n FieldError as AriaFieldError,\n} from 'react-aria-components';\nimport { Calendar as CalendarIcon, ChevronLeft, ChevronRight } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport type { DatePickerProps, DatePickerContextValue } from './DatePicker.types';\nimport {\n dateFieldVariants,\n dateSegmentVariants,\n calendarCellVariants,\n calendarHeaderVariants,\n calendarNavButtonVariants,\n calendarGridVariants,\n calendarGridHeaderCellVariants,\n datePickerPopoverVariants,\n datePickerTriggerVariants,\n datePickerDescriptionVariants,\n datePickerErrorVariants,\n datePickerLabelVariants,\n} from './DatePicker.variants';\n\n// =============================================================================\n// Context\n// =============================================================================\n\nconst DatePickerContext = createContext<DatePickerContextValue>({\n size: 'default',\n});\n\n// Export for potential future use in compound components\nexport { DatePickerContext };\n\n// =============================================================================\n// DatePicker Component\n// =============================================================================\n\n/**\n * DatePicker component for selecting dates with keyboard input and calendar popup.\n *\n * @example\n * ```tsx\n * <DatePicker\n * label=\"Event Date\"\n * description=\"When will the event take place?\"\n * />\n * ```\n */\nexport const DatePicker = memo(forwardRef<HTMLDivElement, DatePickerProps>(\n (\n {\n label,\n description,\n errorMessage,\n size = 'default',\n className,\n placement = 'bottom',\n ...props\n },\n ref\n ): ReactElement => {\n // Memoize context value to prevent unnecessary re-renders of consumers\n const contextValue = useMemo<DatePickerContextValue>(\n () => ({\n size,\n isInvalid: props.isInvalid,\n isDisabled: props.isDisabled,\n }),\n [size, props.isInvalid, props.isDisabled]\n );\n\n return (\n <DatePickerContext.Provider value={contextValue}>\n <AriaDatePicker\n ref={ref}\n className={cn('group flex flex-col gap-1', className)}\n {...props}\n >\n {/* Label */}\n <AriaLabel\n className={cn(datePickerLabelVariants({ size }))}\n data-required={props.isRequired || undefined}\n >\n {label}\n </AriaLabel>\n\n {/* Date Field Group */}\n <AriaGroup\n className={cn(\n dateFieldVariants({\n size,\n isInvalid: props.isInvalid,\n })\n )}\n >\n <AriaDateInput className=\"flex flex-1 items-center\">\n {(segment) => (\n <AriaDateSegment\n segment={segment}\n className={cn(dateSegmentVariants({ size }))}\n />\n )}\n </AriaDateInput>\n\n {/* Calendar Trigger Button */}\n <AriaButton\n className={cn(datePickerTriggerVariants({ size }))}\n aria-label=\"Open calendar\"\n >\n <CalendarIcon className=\"h-4 w-4\" />\n </AriaButton>\n </AriaGroup>\n\n {/* Description */}\n {description && (\n <AriaText\n slot=\"description\"\n className={cn(datePickerDescriptionVariants({ size }))}\n >\n {description}\n </AriaText>\n )}\n\n {/* Error Message */}\n <AriaFieldError className={cn(datePickerErrorVariants({ size }))}>\n {errorMessage}\n </AriaFieldError>\n\n {/* Calendar Popover */}\n <AriaPopover\n placement={placement}\n className={cn(datePickerPopoverVariants({ size }))}\n >\n <AriaDialog className=\"outline-none\">\n <AriaCalendar className=\"w-full\">\n {/* Calendar Header - use div instead of header to avoid landmark a11y issues */}\n <div className={cn(calendarHeaderVariants({ size }))}>\n <AriaButton\n slot=\"previous\"\n className={cn(calendarNavButtonVariants({ size }))}\n aria-label=\"Previous month\"\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </AriaButton>\n\n <AriaHeading className=\"flex-1 text-center font-semibold\" />\n\n <AriaButton\n slot=\"next\"\n className={cn(calendarNavButtonVariants({ size }))}\n aria-label=\"Next month\"\n >\n <ChevronRight className=\"h-4 w-4\" />\n </AriaButton>\n </div>\n\n {/* Calendar Grid */}\n <AriaCalendarGrid className={cn(calendarGridVariants({ size }))}>\n <AriaCalendarGridHeader>\n {(day) => (\n <AriaCalendarHeaderCell\n className={cn(calendarGridHeaderCellVariants({ size }))}\n >\n {day}\n </AriaCalendarHeaderCell>\n )}\n </AriaCalendarGridHeader>\n <AriaCalendarGridBody>\n {(date) => (\n <AriaCalendarCell\n date={date}\n className={cn(calendarCellVariants({ size }))}\n />\n )}\n </AriaCalendarGridBody>\n </AriaCalendarGrid>\n </AriaCalendar>\n </AriaDialog>\n </AriaPopover>\n </AriaDatePicker>\n </DatePickerContext.Provider>\n );\n }\n));\n\nDatePicker.displayName = 'DatePicker';\n","'use client';\n\n/**\n * DateRangePicker Component\n *\n * A date range picker for selecting start and end dates with a shared calendar.\n *\n * Features:\n * - Start and end date fields with range separator\n * - RangeCalendar with highlighted selection\n * - Validates end date is after start date\n * - WCAG 2.2 AAA compliant\n *\n * @see {@link ../../docs/prd/datepicker-prd.md} for requirements\n */\n\nimport { forwardRef, type ReactElement } from 'react';\nimport {\n DateRangePicker as AriaDateRangePicker,\n DateInput as AriaDateInput,\n DateSegment as AriaDateSegment,\n Button as AriaButton,\n RangeCalendar as AriaRangeCalendar,\n CalendarGrid as AriaCalendarGrid,\n CalendarCell as AriaCalendarCell,\n CalendarGridHeader as AriaCalendarGridHeader,\n CalendarHeaderCell as AriaCalendarHeaderCell,\n CalendarGridBody as AriaCalendarGridBody,\n Heading as AriaHeading,\n Popover as AriaPopover,\n Dialog as AriaDialog,\n Label as AriaLabel,\n Text as AriaText,\n Group as AriaGroup,\n FieldError as AriaFieldError,\n} from 'react-aria-components';\nimport { Calendar as CalendarIcon, ChevronLeft, ChevronRight } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport type { DateRangePickerProps } from './DatePicker.types';\nimport {\n dateFieldVariants,\n dateSegmentVariants,\n calendarCellVariants,\n calendarHeaderVariants,\n calendarNavButtonVariants,\n calendarGridVariants,\n calendarGridHeaderCellVariants,\n datePickerPopoverVariants,\n datePickerTriggerVariants,\n datePickerDescriptionVariants,\n datePickerErrorVariants,\n datePickerLabelVariants,\n} from './DatePicker.variants';\n\n// =============================================================================\n// DateRangePicker Component\n// =============================================================================\n\n/**\n * DateRangePicker component for selecting date ranges.\n *\n * @example\n * ```tsx\n * <DateRangePicker\n * label=\"Stay Duration\"\n * description=\"Select check-in and check-out dates\"\n * />\n * ```\n */\nexport const DateRangePicker = forwardRef<HTMLDivElement, DateRangePickerProps>(\n (\n {\n label,\n description,\n errorMessage,\n size = 'default',\n className,\n placement = 'bottom',\n startName,\n endName,\n ...props\n },\n ref\n ): ReactElement => {\n return (\n <AriaDateRangePicker\n ref={ref}\n className={cn('group flex flex-col gap-1', className)}\n startName={startName}\n endName={endName}\n {...props}\n >\n {/* Label */}\n <AriaLabel\n className={cn(datePickerLabelVariants({ size }))}\n data-required={props.isRequired || undefined}\n >\n {label}\n </AriaLabel>\n\n {/* Date Range Field Group */}\n <AriaGroup\n className={cn(\n dateFieldVariants({\n size,\n isInvalid: props.isInvalid,\n })\n )}\n >\n {/* Start Date Input */}\n <AriaDateInput slot=\"start\" className=\"flex items-center\">\n {(segment) => (\n <AriaDateSegment\n segment={segment}\n className={cn(dateSegmentVariants({ size }))}\n />\n )}\n </AriaDateInput>\n\n {/* Range Separator */}\n <span\n aria-hidden=\"true\"\n className=\"px-2 text-[var(--menu-muted)]\"\n >\n –\n </span>\n\n {/* End Date Input */}\n <AriaDateInput slot=\"end\" className=\"flex items-center\">\n {(segment) => (\n <AriaDateSegment\n segment={segment}\n className={cn(dateSegmentVariants({ size }))}\n />\n )}\n </AriaDateInput>\n\n {/* Calendar Trigger Button */}\n <AriaButton\n className={cn(datePickerTriggerVariants({ size }))}\n aria-label=\"Open calendar\"\n >\n <CalendarIcon className=\"h-4 w-4\" />\n </AriaButton>\n </AriaGroup>\n\n {/* Description */}\n {description && (\n <AriaText\n slot=\"description\"\n className={cn(datePickerDescriptionVariants({ size }))}\n >\n {description}\n </AriaText>\n )}\n\n {/* Error Message */}\n <AriaFieldError className={cn(datePickerErrorVariants({ size }))}>\n {errorMessage}\n </AriaFieldError>\n\n {/* Range Calendar Popover */}\n <AriaPopover\n placement={placement}\n className={cn(datePickerPopoverVariants({ size }))}\n >\n <AriaDialog className=\"outline-none\">\n <AriaRangeCalendar className=\"w-full\">\n {/* Calendar Header - use div instead of header to avoid landmark a11y issues */}\n <div className={cn(calendarHeaderVariants({ size }))}>\n <AriaButton\n slot=\"previous\"\n className={cn(calendarNavButtonVariants({ size }))}\n aria-label=\"Previous month\"\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </AriaButton>\n\n <AriaHeading className=\"flex-1 text-center font-semibold\" />\n\n <AriaButton\n slot=\"next\"\n className={cn(calendarNavButtonVariants({ size }))}\n aria-label=\"Next month\"\n >\n <ChevronRight className=\"h-4 w-4\" />\n </AriaButton>\n </div>\n\n {/* Calendar Grid */}\n <AriaCalendarGrid className={cn(calendarGridVariants({ size }))}>\n <AriaCalendarGridHeader>\n {(day) => (\n <AriaCalendarHeaderCell\n className={cn(calendarGridHeaderCellVariants({ size }))}\n >\n {day}\n </AriaCalendarHeaderCell>\n )}\n </AriaCalendarGridHeader>\n <AriaCalendarGridBody>\n {(date) => (\n <AriaCalendarCell\n date={date}\n className={cn(calendarCellVariants({ size }))}\n />\n )}\n </AriaCalendarGridBody>\n </AriaCalendarGrid>\n </AriaRangeCalendar>\n </AriaDialog>\n </AriaPopover>\n </AriaDateRangePicker>\n );\n }\n);\n\nDateRangePicker.displayName = 'DateRangePicker';\n","'use client';\n\n/**\n * DateField Component\n *\n * A standalone keyboard-editable date field without calendar popover.\n * Useful for dense forms where a full DatePicker is not needed.\n *\n * Features:\n * - Keyboard-editable date segments with spinbutton behavior\n * - Full keyboard navigation (Tab, Arrow keys, number typing)\n * - Time selection with configurable granularity\n * - WCAG 2.2 AAA compliant\n *\n * @see {@link ../../docs/prd/datepicker-prd.md} for requirements\n */\n\nimport { forwardRef, type ReactElement } from 'react';\nimport {\n DateField as AriaDateField,\n DateInput as AriaDateInput,\n DateSegment as AriaDateSegment,\n Label as AriaLabel,\n Text as AriaText,\n FieldError as AriaFieldError,\n} from 'react-aria-components';\nimport { cn } from '../../utils/cn';\nimport type { DateFieldProps } from './DatePicker.types';\nimport {\n dateFieldVariants,\n dateSegmentVariants,\n datePickerDescriptionVariants,\n datePickerErrorVariants,\n datePickerLabelVariants,\n} from './DatePicker.variants';\n\n// =============================================================================\n// DateField Component\n// =============================================================================\n\n/**\n * DateField component for keyboard-editable date input.\n *\n * @example\n * ```tsx\n * <DateField\n * label=\"Birth Date\"\n * description=\"Enter your date of birth\"\n * />\n * ```\n */\nexport const DateField = forwardRef<HTMLDivElement, DateFieldProps>(\n (\n {\n label,\n description,\n errorMessage,\n size = 'default',\n className,\n ...props\n },\n ref\n ): ReactElement => {\n return (\n <AriaDateField\n ref={ref}\n className={cn('group flex flex-col gap-1', className)}\n {...props}\n >\n {/* Label */}\n <AriaLabel\n className={cn(datePickerLabelVariants({ size }))}\n data-required={props.isRequired || undefined}\n >\n {label}\n </AriaLabel>\n\n {/* Date Input */}\n <AriaDateInput\n className={cn(\n dateFieldVariants({\n size,\n isInvalid: props.isInvalid,\n }),\n 'w-fit'\n )}\n >\n {(segment) => (\n <AriaDateSegment\n segment={segment}\n className={cn(dateSegmentVariants({ size }))}\n />\n )}\n </AriaDateInput>\n\n {/* Description */}\n {description && (\n <AriaText\n slot=\"description\"\n className={cn(datePickerDescriptionVariants({ size }))}\n >\n {description}\n </AriaText>\n )}\n\n {/* Error Message */}\n <AriaFieldError className={cn(datePickerErrorVariants({ size }))}>\n {errorMessage}\n </AriaFieldError>\n </AriaDateField>\n );\n }\n);\n\nDateField.displayName = 'DateField';\n","'use client';\n\n/**\n * Calendar Component\n *\n * A standalone calendar grid for inline date selection.\n * Useful when the calendar should always be visible (not in a popover).\n *\n * Features:\n * - Full keyboard navigation (Arrow keys, Page Up/Down, Home/End)\n * - Month/year navigation\n * - Date constraints (min/max, unavailable dates)\n * - WCAG 2.2 AAA compliant (7:1 contrast, 44x44px touch targets)\n *\n * @see {@link ../../docs/prd/datepicker-prd.md} for requirements\n */\n\nimport { forwardRef, type ReactElement } from 'react';\nimport {\n Calendar as AriaCalendar,\n CalendarGrid as AriaCalendarGrid,\n CalendarCell as AriaCalendarCell,\n CalendarGridHeader as AriaCalendarGridHeader,\n CalendarHeaderCell as AriaCalendarHeaderCell,\n CalendarGridBody as AriaCalendarGridBody,\n Heading as AriaHeading,\n Button as AriaButton,\n} from 'react-aria-components';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport type { CalendarProps } from './DatePicker.types';\nimport {\n calendarCellVariants,\n calendarHeaderVariants,\n calendarNavButtonVariants,\n calendarGridVariants,\n calendarGridHeaderCellVariants,\n} from './DatePicker.variants';\n\n// =============================================================================\n// Calendar Component\n// =============================================================================\n\n/**\n * Calendar component for inline date selection.\n *\n * @example\n * ```tsx\n * <Calendar\n * value={selectedDate}\n * onChange={setSelectedDate}\n * minValue={today(getLocalTimeZone())}\n * />\n * ```\n */\nexport const Calendar = forwardRef<HTMLDivElement, CalendarProps>(\n ({ size = 'default', className, ...props }, ref): ReactElement => {\n return (\n <AriaCalendar\n ref={ref}\n className={cn('w-fit', className)}\n {...props}\n >\n {/* Calendar Header - use div instead of header to avoid landmark a11y issues */}\n <div className={cn(calendarHeaderVariants({ size }))}>\n <AriaButton\n slot=\"previous\"\n className={cn(calendarNavButtonVariants({ size }))}\n aria-label=\"Previous month\"\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </AriaButton>\n\n <AriaHeading className=\"flex-1 text-center font-semibold\" />\n\n <AriaButton\n slot=\"next\"\n className={cn(calendarNavButtonVariants({ size }))}\n aria-label=\"Next month\"\n >\n <ChevronRight className=\"h-4 w-4\" />\n </AriaButton>\n </div>\n\n {/* Calendar Grid */}\n <AriaCalendarGrid className={cn(calendarGridVariants({ size }))}>\n <AriaCalendarGridHeader>\n {(day) => (\n <AriaCalendarHeaderCell\n className={cn(calendarGridHeaderCellVariants({ size }))}\n >\n {day}\n </AriaCalendarHeaderCell>\n )}\n </AriaCalendarGridHeader>\n <AriaCalendarGridBody>\n {(date) => (\n <AriaCalendarCell\n date={date}\n className={cn(calendarCellVariants({ size }))}\n />\n )}\n </AriaCalendarGridBody>\n </AriaCalendarGrid>\n </AriaCalendar>\n );\n }\n);\n\nCalendar.displayName = 'Calendar';\n","/**\n * DatePicker Component Types\n *\n * Zod schemas and TypeScript types for DatePicker, DateRangePicker,\n * DateField, and Calendar components.\n *\n * @see {@link ../../docs/prd/datepicker-prd.md} for full requirements\n */\n\nimport { z } from 'zod';\nimport type {\n DatePickerProps as AriaDatePickerProps,\n DateRangePickerProps as AriaDateRangePickerProps,\n DateFieldProps as AriaDateFieldProps,\n CalendarProps as AriaCalendarProps,\n DateValue,\n RangeValue,\n} from 'react-aria-components';\nimport type { VariantProps } from 'class-variance-authority';\nimport type { dateFieldVariants, calendarCellVariants } from './DatePicker.variants';\n\n// ============================================================================\n// Date Value Types (re-exported for convenience)\n// ============================================================================\n\n/**\n * Union type for all date values supported by the DatePicker.\n * - CalendarDate: Date only (no time)\n * - CalendarDateTime: Date and time (no timezone)\n * - ZonedDateTime: Date, time, and timezone\n */\nexport type { DateValue } from 'react-aria-components';\n\n/**\n * Date range value type for DateRangePicker.\n */\nexport type DateRangeValue = RangeValue<DateValue>;\n\n// ============================================================================\n// Granularity Type\n// ============================================================================\n\n/**\n * Controls which date/time segments are displayed.\n * - 'day': Date only (MM/DD/YYYY)\n * - 'hour': Date + hour + AM/PM\n * - 'minute': Date + hour + minute + AM/PM\n * - 'second': Date + hour + minute + second + AM/PM\n */\nexport type Granularity = 'day' | 'hour' | 'minute' | 'second';\n\n// ============================================================================\n// Size Variant Type\n// ============================================================================\n\n/**\n * Size variants for DatePicker components.\n * - 'sm': Compact size (36px cells) - desktop-only, not AAA compliant\n * - 'default': Standard size (44px cells) - AAA compliant\n * - 'lg': Large size (56px cells) - AAA compliant\n */\nexport type DatePickerSize = 'sm' | 'default' | 'lg';\n\n// ============================================================================\n// Placement Type\n// ============================================================================\n\n/**\n * Popover placement options.\n */\nexport type PopoverPlacement = 'bottom' | 'top' | 'left' | 'right';\n\n// ============================================================================\n// First Day of Week Type\n// ============================================================================\n\n/**\n * First day of week options for calendar display.\n */\nexport type FirstDayOfWeek = 'sun' | 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat';\n\n// ============================================================================\n// Zod Schemas\n// ============================================================================\n\n/**\n * Zod schema for DatePicker props validation.\n * Used for runtime validation of component props.\n */\nexport const DatePickerPropsSchema = z.object({\n // Value props\n value: z.custom<DateValue>().optional(),\n defaultValue: z.custom<DateValue>().optional(),\n placeholderValue: z.custom<DateValue>().optional(),\n\n // Granularity props\n granularity: z.enum(['day', 'hour', 'minute', 'second']).default('day'),\n hourCycle: z.union([z.literal(12), z.literal(24)]).optional(),\n hideTimeZone: z.boolean().optional(),\n shouldForceLeadingZeros: z.boolean().optional(),\n\n // Constraint props\n minValue: z.custom<DateValue>().optional(),\n maxValue: z.custom<DateValue>().optional(),\n /** Callback to determine if a specific date is unavailable for selection */\n isDateUnavailable: z.function().optional(),\n\n // State props\n isOpen: z.boolean().optional(),\n defaultOpen: z.boolean().optional(),\n isDisabled: z.boolean().optional(),\n isReadOnly: z.boolean().optional(),\n isRequired: z.boolean().optional(),\n isInvalid: z.boolean().optional(),\n\n // Validation props\n /** Custom validation function that returns an error message or null */\n validate: z.function().optional(),\n validationBehavior: z.enum(['native', 'aria']).default('native'),\n\n // Display props\n label: z.string(),\n description: z.string().optional(),\n /** Error message string or render function */\n errorMessage: z.union([z.string(), z.function()]).optional(),\n\n // Calendar props\n firstDayOfWeek: z.enum(['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']).optional(),\n pageBehavior: z.enum(['single', 'visible']).optional(),\n\n // Form props\n name: z.string().optional(),\n\n // Popover props\n placement: z.enum(['bottom', 'top', 'left', 'right']).optional(),\n visibleDuration: z.object({ months: z.number() }).optional(),\n\n // Variant props\n size: z.enum(['sm', 'default', 'lg']).default('default'),\n\n // Event props\n /** Called when the date value changes */\n onChange: z.function().optional(),\n /** Called when the popover open state changes */\n onOpenChange: z.function().optional(),\n /** Called when the field gains focus */\n onFocus: z.function().optional(),\n /** Called when the field loses focus */\n onBlur: z.function().optional(),\n /** Called when focus state changes */\n onFocusChange: z.function().optional(),\n\n // Standard props\n className: z.string().optional(),\n children: z.any().optional(),\n});\n\n/**\n * Zod schema for DateRangePicker props validation.\n * Extends DatePickerPropsSchema with range-specific props.\n */\nexport const DateRangePickerPropsSchema = DatePickerPropsSchema.omit({\n value: true,\n defaultValue: true,\n onChange: true,\n}).extend({\n // Range value props\n value: z\n .object({\n start: z.custom<DateValue>(),\n end: z.custom<DateValue>(),\n })\n .optional(),\n defaultValue: z\n .object({\n start: z.custom<DateValue>(),\n end: z.custom<DateValue>(),\n })\n .optional(),\n\n // Form props for range\n startName: z.string().optional(),\n endName: z.string().optional(),\n\n // Range event props\n /** Called when the date range value changes */\n onChange: z.function().optional(),\n});\n\n/**\n * Zod schema for standalone DateField props validation.\n */\nexport const DateFieldPropsSchema = z.object({\n // Value props\n value: z.custom<DateValue>().optional(),\n defaultValue: z.custom<DateValue>().optional(),\n placeholderValue: z.custom<DateValue>().optional(),\n\n // Granularity props\n granularity: z.enum(['day', 'hour', 'minute', 'second']).default('day'),\n hourCycle: z.union([z.literal(12), z.literal(24)]).optional(),\n hideTimeZone: z.boolean().optional(),\n shouldForceLeadingZeros: z.boolean().optional(),\n\n // Constraint props\n minValue: z.custom<DateValue>().optional(),\n maxValue: z.custom<DateValue>().optional(),\n\n // State props\n isDisabled: z.boolean().optional(),\n isReadOnly: z.boolean().optional(),\n isRequired: z.boolean().optional(),\n isInvalid: z.boolean().optional(),\n\n // Validation props\n /** Custom validation function that returns an error message or null */\n validate: z.function().optional(),\n validationBehavior: z.enum(['native', 'aria']).default('native'),\n\n // Display props\n label: z.string(),\n description: z.string().optional(),\n /** Error message string or render function */\n errorMessage: z.union([z.string(), z.function()]).optional(),\n\n // Form props\n name: z.string().optional(),\n\n // Variant props\n size: z.enum(['sm', 'default', 'lg']).default('default'),\n\n // Event props\n /** Called when the date value changes */\n onChange: z.function().optional(),\n /** Called when the field gains focus */\n onFocus: z.function().optional(),\n /** Called when the field loses focus */\n onBlur: z.function().optional(),\n /** Called when focus state changes */\n onFocusChange: z.function().optional(),\n\n // Standard props\n className: z.string().optional(),\n});\n\n/**\n * Zod schema for standalone Calendar props validation.\n */\nexport const CalendarPropsSchema = z.object({\n // Value props\n value: z.custom<DateValue>().optional(),\n defaultValue: z.custom<DateValue>().optional(),\n focusedValue: z.custom<DateValue>().optional(),\n defaultFocusedValue: z.custom<DateValue>().optional(),\n\n // Constraint props\n minValue: z.custom<DateValue>().optional(),\n maxValue: z.custom<DateValue>().optional(),\n /** Callback to determine if a specific date is unavailable for selection */\n isDateUnavailable: z.function().optional(),\n\n // State props\n isDisabled: z.boolean().optional(),\n isReadOnly: z.boolean().optional(),\n\n // Calendar props\n firstDayOfWeek: z.enum(['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']).optional(),\n pageBehavior: z.enum(['single', 'visible']).optional(),\n visibleDuration: z.object({ months: z.number() }).optional(),\n\n // Variant props\n size: z.enum(['sm', 'default', 'lg']).default('default'),\n\n // Event props\n /** Called when the date value changes */\n onChange: z.function().optional(),\n /** Called when the focused date changes */\n onFocusChange: z.function().optional(),\n\n // Standard props\n className: z.string().optional(),\n});\n\n/**\n * Zod schema for RangeCalendar props validation.\n */\nexport const RangeCalendarPropsSchema = CalendarPropsSchema.omit({\n value: true,\n defaultValue: true,\n onChange: true,\n}).extend({\n // Range value props\n value: z\n .object({\n start: z.custom<DateValue>(),\n end: z.custom<DateValue>(),\n })\n .optional(),\n defaultValue: z\n .object({\n start: z.custom<DateValue>(),\n end: z.custom<DateValue>(),\n })\n .optional(),\n\n // Range event props\n /** Called when the date range value changes */\n onChange: z.function().optional(),\n});\n\n// ============================================================================\n// TypeScript Types (using React Aria types directly for proper function typing)\n// ============================================================================\n\n/**\n * Custom props added to DatePicker components (not from React Aria).\n */\nexport interface ThemisDatePickerCustomProps {\n /** Size variant: 'sm', 'default', or 'lg' */\n size?: DatePickerSize;\n /** Popover placement */\n placement?: PopoverPlacement;\n /** Field label */\n label?: string;\n /** Description text below the field */\n description?: string;\n /** Error message when field is invalid */\n errorMessage?: string;\n}\n\n/**\n * Props for the DatePicker component.\n * Uses React Aria's DatePickerProps directly to ensure correct function types.\n */\nexport type DatePickerProps = AriaDatePickerProps<DateValue> & ThemisDatePickerCustomProps;\n\n/**\n * Props for the DateRangePicker component.\n * Uses React Aria's DateRangePickerProps directly to ensure correct function types.\n */\nexport type DateRangePickerProps = AriaDateRangePickerProps<DateValue> & ThemisDatePickerCustomProps;\n\n/**\n * Props for the standalone DateField component.\n * Uses React Aria's DateFieldProps directly to ensure correct function types.\n */\nexport type DateFieldProps = AriaDateFieldProps<DateValue> & ThemisDatePickerCustomProps;\n\n/**\n * Props for the standalone Calendar component.\n * Uses React Aria's CalendarProps directly to ensure correct function types.\n */\nexport type CalendarProps = AriaCalendarProps<DateValue> & {\n /** Size variant: 'sm', 'default', or 'lg' */\n size?: DatePickerSize;\n};\n\n/**\n * Props for the RangeCalendar component.\n */\nexport type RangeCalendarProps = {\n /** Size variant: 'sm', 'default', or 'lg' */\n size?: DatePickerSize;\n /** Additional CSS class names */\n className?: string;\n};\n\n// ============================================================================\n// Variant Types (from CVA)\n// ============================================================================\n\n/**\n * Variant props for dateFieldVariants CVA function.\n */\nexport type DateFieldVariantProps = VariantProps<typeof dateFieldVariants>;\n\n/**\n * Variant props for calendarCellVariants CVA function.\n */\nexport type CalendarCellVariantProps = VariantProps<typeof calendarCellVariants>;\n\n// ============================================================================\n// Compound Component Types\n// ============================================================================\n\n/**\n * Context value for DatePicker compound components.\n */\nexport interface DatePickerContextValue {\n size: DatePickerSize;\n isInvalid?: boolean;\n isDisabled?: boolean;\n}\n\n/**\n * Context value for Calendar compound components.\n */\nexport interface CalendarContextValue {\n size: DatePickerSize;\n isDisabled?: boolean;\n isReadOnly?: boolean;\n}\n"]}
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import {createContext,memo,forwardRef,useMemo}from'react';import {DatePicker,Label,Group,DateInput,DateSegment,Button,Text,FieldError,Popover,Dialog,Calendar as Calendar$1,Heading,CalendarGrid,CalendarGridHeader,CalendarHeaderCell,CalendarGridBody,CalendarCell,DateRangePicker,RangeCalendar,DateField}from'react-aria-components';import {Calendar,ChevronLeft,ChevronRight}from'lucide-react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {cva}from'class-variance-authority';import {jsx,jsxs}from'react/jsx-runtime';import {z as z$1}from'zod';export{getLocalTimeZone,isWeekend,now,parseDate,parseDateTime,parseZonedDateTime,today}from'@internationalized/date';function e(...o){return twMerge(clsx(o))}var w=["focus-within:outline-none","focus-within:ring-2","focus-within:ring-[var(--ring)]","focus-within:ring-offset-2"];var T=["focus:outline-none","focus:ring-2","focus:ring-[var(--ring)]"],M=["focus:outline-none","focus:bg-[var(--accent)]","focus:text-[var(--accent-foreground)]"],U=["disabled:pointer-events-none","disabled:opacity-50"],F=["data-[disabled]:pointer-events-none","data-[disabled]:opacity-50","data-[disabled]:cursor-not-allowed"],B={sm:"text-xs",default:"text-sm",lg:"text-base"},R={sm:"text-sm",default:"text-base",lg:"text-lg"};var _={sm:"h-9",default:"h-11",lg:"h-14"},Z=["flex","items-center","gap-1.5","text-[var(--destructive-background)]"];var q=["text-[var(--menu-muted)]"],j=["font-medium","text-[var(--content-foreground)]"];var z=["data-[entering]:animate-in","data-[entering]:fade-in-0","data-[entering]:zoom-in-95"],W=["data-[exiting]:animate-out","data-[exiting]:fade-out-0","data-[exiting]:zoom-out-95"],X=["motion-reduce:transition-none","motion-reduce:animate-none"];var h=["transition-colors","duration-150"],y=["hover:bg-[var(--accent)]","hover:text-[var(--accent-foreground)]"];function d(...o){return o.flatMap(i=>Array.isArray(i)?[...i]:[i])}var g=cva(d("flex items-center rounded-md border","bg-[var(--content-background)] text-[var(--content-foreground)]","transition-colors duration-200",w,F),{variants:{size:{sm:`${_.sm} px-3 text-sm gap-0.5`,default:`${_.default} px-4 text-base gap-1`,lg:`${_.lg} px-5 text-lg gap-1.5`},isInvalid:{true:"border-[var(--destructive-background)] focus-within:ring-[var(--destructive-background)]",false:"border-[var(--input-border)] hover:border-[var(--input-border)]/80"}},defaultVariants:{size:"default",isInvalid:false}}),p=cva(d("tabular-nums rounded px-0.5",M,"data-[placeholder]:text-[var(--menu-muted)]","data-[type=literal]:text-[var(--menu-muted)]"),{variants:{size:R},defaultVariants:{size:"default"}}),x=cva(d("flex items-center justify-center rounded-md cursor-pointer",h,y,T,"data-[selected]:bg-[var(--primary)] data-[selected]:text-[var(--primary-foreground)]","data-[selected]:hover:bg-[var(--primary)]/90 data-[selected]:font-semibold","data-[today]:border data-[today]:border-[var(--primary)]","data-[selection-start]:rounded-l-md data-[selection-start]:rounded-r-none","data-[selection-end]:rounded-r-md data-[selection-end]:rounded-l-none","data-[selected]:data-[selection-start]:rounded-l-md","data-[selected]:data-[selection-end]:rounded-r-md","data-[unavailable]:text-[var(--menu-muted)] data-[unavailable]:pointer-events-none data-[unavailable]:opacity-50 data-[unavailable]:line-through","data-[outside-month]:text-[var(--menu-muted)] data-[outside-month]:opacity-50","data-[disabled]:text-[var(--menu-muted)] data-[disabled]:pointer-events-none data-[disabled]:opacity-50"),{variants:{size:{sm:"h-9 w-9 text-sm",default:"h-11 w-11 text-base",lg:"h-14 w-14 text-lg"}},defaultVariants:{size:"default"}}),P=cva("flex items-center justify-between px-1 pb-4",{variants:{size:R},defaultVariants:{size:"default"}}),c=cva(d("inline-flex items-center justify-center rounded-md text-[var(--menu-muted)]",h,y,T,U),{variants:{size:{sm:"h-7 w-7",default:"h-9 w-9",lg:"h-11 w-11"}},defaultVariants:{size:"default"}}),V=cva("w-full border-collapse",{variants:{size:R},defaultVariants:{size:"default"}}),v=cva("text-center font-medium text-[var(--menu-muted)] pb-2",{variants:{size:{sm:"text-xs w-9",default:"text-sm w-11",lg:"text-base w-14"}},defaultVariants:{size:"default"}}),k=cva(d("z-50 rounded-md border p-3 shadow-md outline-none","bg-[var(--menu-background)] text-[var(--menu-foreground)]",z,W,X),{variants:{size:{sm:"w-[260px]",default:"w-[320px]",lg:"w-[380px]"}},defaultVariants:{size:"default"}}),O=cva(d("inline-flex items-center justify-center rounded-md text-[var(--menu-muted)]",h,y,T,F),{variants:{size:{sm:"h-7 w-7",default:"h-9 w-9",lg:"h-11 w-11"}},defaultVariants:{size:"default"}}),E=cva(d(q,"mt-1"),{variants:{size:B},defaultVariants:{size:"default"}}),N=cva(d(Z,"mt-1"),{variants:{size:B},defaultVariants:{size:"default"}}),S=cva(d(j,"block mb-1.5",'data-[required]:after:content-["*"] data-[required]:after:ml-0.5 data-[required]:after:text-[var(--destructive-background)]'),{variants:{size:{sm:"text-sm",default:"text-sm",lg:"text-base"}},defaultVariants:{size:"default"}});var ya=createContext({size:"default"});var J=memo(forwardRef(({label:o,description:i,errorMessage:f,size:t="default",className:u,placement:D="bottom",...s},b)=>{let I=useMemo(()=>({size:t,isInvalid:s.isInvalid,isDisabled:s.isDisabled}),[t,s.isInvalid,s.isDisabled]);return jsx(ya.Provider,{value:I,children:jsxs(DatePicker,{ref:b,className:e("group flex flex-col gap-1",u),...s,children:[jsx(Label,{className:e(S({size:t})),"data-required":s.isRequired||void 0,children:o}),jsxs(Group,{className:e(g({size:t,isInvalid:s.isInvalid})),children:[jsx(DateInput,{className:"flex flex-1 items-center",children:A=>jsx(DateSegment,{segment:A,className:e(p({size:t}))})}),jsx(Button,{className:e(O({size:t})),"aria-label":"Open calendar",children:jsx(Calendar,{className:"h-4 w-4"})})]}),i&&jsx(Text,{slot:"description",className:e(E({size:t})),children:i}),jsx(FieldError,{className:e(N({size:t})),children:f}),jsx(Popover,{placement:D,className:e(k({size:t})),children:jsx(Dialog,{className:"outline-none",children:jsxs(Calendar$1,{className:"w-full",children:[jsxs("div",{className:e(P({size:t})),children:[jsx(Button,{slot:"previous",className:e(c({size:t})),"aria-label":"Previous month",children:jsx(ChevronLeft,{className:"h-4 w-4"})}),jsx(Heading,{className:"flex-1 text-center font-semibold"}),jsx(Button,{slot:"next",className:e(c({size:t})),"aria-label":"Next month",children:jsx(ChevronRight,{className:"h-4 w-4"})})]}),jsxs(CalendarGrid,{className:e(V({size:t})),children:[jsx(CalendarGridHeader,{children:A=>jsx(CalendarHeaderCell,{className:e(v({size:t})),children:A})}),jsx(CalendarGridBody,{children:A=>jsx(CalendarCell,{date:A,className:e(x({size:t}))})})]})]})})})]})})}));J.displayName="DatePicker";var ea=forwardRef(({label:o,description:i,errorMessage:f,size:t="default",className:u,placement:D="bottom",startName:s,endName:b,...I},A)=>jsxs(DateRangePicker,{ref:A,className:e("group flex flex-col gap-1",u),startName:s,endName:b,...I,children:[jsx(Label,{className:e(S({size:t})),"data-required":I.isRequired||void 0,children:o}),jsxs(Group,{className:e(g({size:t,isInvalid:I.isInvalid})),children:[jsx(DateInput,{slot:"start",className:"flex items-center",children:C=>jsx(DateSegment,{segment:C,className:e(p({size:t}))})}),jsx("span",{"aria-hidden":"true",className:"px-2 text-[var(--menu-muted)]",children:"\u2013"}),jsx(DateInput,{slot:"end",className:"flex items-center",children:C=>jsx(DateSegment,{segment:C,className:e(p({size:t}))})}),jsx(Button,{className:e(O({size:t})),"aria-label":"Open calendar",children:jsx(Calendar,{className:"h-4 w-4"})})]}),i&&jsx(Text,{slot:"description",className:e(E({size:t})),children:i}),jsx(FieldError,{className:e(N({size:t})),children:f}),jsx(Popover,{placement:D,className:e(k({size:t})),children:jsx(Dialog,{className:"outline-none",children:jsxs(RangeCalendar,{className:"w-full",children:[jsxs("div",{className:e(P({size:t})),children:[jsx(Button,{slot:"previous",className:e(c({size:t})),"aria-label":"Previous month",children:jsx(ChevronLeft,{className:"h-4 w-4"})}),jsx(Heading,{className:"flex-1 text-center font-semibold"}),jsx(Button,{slot:"next",className:e(c({size:t})),"aria-label":"Next month",children:jsx(ChevronRight,{className:"h-4 w-4"})})]}),jsxs(CalendarGrid,{className:e(V({size:t})),children:[jsx(CalendarGridHeader,{children:C=>jsx(CalendarHeaderCell,{className:e(v({size:t})),children:C})}),jsx(CalendarGridBody,{children:C=>jsx(CalendarCell,{date:C,className:e(x({size:t}))})})]})]})})})]}));ea.displayName="DateRangePicker";var ta=forwardRef(({label:o,description:i,errorMessage:f,size:t="default",className:u,...D},s)=>jsxs(DateField,{ref:s,className:e("group flex flex-col gap-1",u),...D,children:[jsx(Label,{className:e(S({size:t})),"data-required":D.isRequired||void 0,children:o}),jsx(DateInput,{className:e(g({size:t,isInvalid:D.isInvalid}),"w-fit"),children:b=>jsx(DateSegment,{segment:b,className:e(p({size:t}))})}),i&&jsx(Text,{slot:"description",className:e(E({size:t})),children:i}),jsx(FieldError,{className:e(N({size:t})),children:f})]}));ta.displayName="DateField";var na=forwardRef(({size:o="default",className:i,...f},t)=>jsxs(Calendar$1,{ref:t,className:e("w-fit",i),...f,children:[jsxs("div",{className:e(P({size:o})),children:[jsx(Button,{slot:"previous",className:e(c({size:o})),"aria-label":"Previous month",children:jsx(ChevronLeft,{className:"h-4 w-4"})}),jsx(Heading,{className:"flex-1 text-center font-semibold"}),jsx(Button,{slot:"next",className:e(c({size:o})),"aria-label":"Next month",children:jsx(ChevronRight,{className:"h-4 w-4"})})]}),jsxs(CalendarGrid,{className:e(V({size:o})),children:[jsx(CalendarGridHeader,{children:u=>jsx(CalendarHeaderCell,{className:e(v({size:o})),children:u})}),jsx(CalendarGridBody,{children:u=>jsx(CalendarCell,{date:u,className:e(x({size:o}))})})]})]}));na.displayName="Calendar";var oa=z$1.object({value:z$1.custom().optional(),defaultValue:z$1.custom().optional(),placeholderValue:z$1.custom().optional(),granularity:z$1.enum(["day","hour","minute","second"]).default("day"),hourCycle:z$1.union([z$1.literal(12),z$1.literal(24)]).optional(),hideTimeZone:z$1.boolean().optional(),shouldForceLeadingZeros:z$1.boolean().optional(),minValue:z$1.custom().optional(),maxValue:z$1.custom().optional(),isDateUnavailable:z$1.function().optional(),isOpen:z$1.boolean().optional(),defaultOpen:z$1.boolean().optional(),isDisabled:z$1.boolean().optional(),isReadOnly:z$1.boolean().optional(),isRequired:z$1.boolean().optional(),isInvalid:z$1.boolean().optional(),validate:z$1.function().optional(),validationBehavior:z$1.enum(["native","aria"]).default("native"),label:z$1.string(),description:z$1.string().optional(),errorMessage:z$1.union([z$1.string(),z$1.function()]).optional(),firstDayOfWeek:z$1.enum(["sun","mon","tue","wed","thu","fri","sat"]).optional(),pageBehavior:z$1.enum(["single","visible"]).optional(),name:z$1.string().optional(),placement:z$1.enum(["bottom","top","left","right"]).optional(),visibleDuration:z$1.object({months:z$1.number()}).optional(),size:z$1.enum(["sm","default","lg"]).default("default"),onChange:z$1.function().optional(),onOpenChange:z$1.function().optional(),onFocus:z$1.function().optional(),onBlur:z$1.function().optional(),onFocusChange:z$1.function().optional(),className:z$1.string().optional(),children:z$1.any().optional()}),De=oa.omit({value:true,defaultValue:true,onChange:true}).extend({value:z$1.object({start:z$1.custom(),end:z$1.custom()}).optional(),defaultValue:z$1.object({start:z$1.custom(),end:z$1.custom()}).optional(),startName:z$1.string().optional(),endName:z$1.string().optional(),onChange:z$1.function().optional()}),Ae=z$1.object({value:z$1.custom().optional(),defaultValue:z$1.custom().optional(),placeholderValue:z$1.custom().optional(),granularity:z$1.enum(["day","hour","minute","second"]).default("day"),hourCycle:z$1.union([z$1.literal(12),z$1.literal(24)]).optional(),hideTimeZone:z$1.boolean().optional(),shouldForceLeadingZeros:z$1.boolean().optional(),minValue:z$1.custom().optional(),maxValue:z$1.custom().optional(),isDisabled:z$1.boolean().optional(),isReadOnly:z$1.boolean().optional(),isRequired:z$1.boolean().optional(),isInvalid:z$1.boolean().optional(),validate:z$1.function().optional(),validationBehavior:z$1.enum(["native","aria"]).default("native"),label:z$1.string(),description:z$1.string().optional(),errorMessage:z$1.union([z$1.string(),z$1.function()]).optional(),name:z$1.string().optional(),size:z$1.enum(["sm","default","lg"]).default("default"),onChange:z$1.function().optional(),onFocus:z$1.function().optional(),onBlur:z$1.function().optional(),onFocusChange:z$1.function().optional(),className:z$1.string().optional()}),ia=z$1.object({value:z$1.custom().optional(),defaultValue:z$1.custom().optional(),focusedValue:z$1.custom().optional(),defaultFocusedValue:z$1.custom().optional(),minValue:z$1.custom().optional(),maxValue:z$1.custom().optional(),isDateUnavailable:z$1.function().optional(),isDisabled:z$1.boolean().optional(),isReadOnly:z$1.boolean().optional(),firstDayOfWeek:z$1.enum(["sun","mon","tue","wed","thu","fri","sat"]).optional(),pageBehavior:z$1.enum(["single","visible"]).optional(),visibleDuration:z$1.object({months:z$1.number()}).optional(),size:z$1.enum(["sm","default","lg"]).default("default"),onChange:z$1.function().optional(),onFocusChange:z$1.function().optional(),className:z$1.string().optional()}),Ce=ia.omit({value:true,defaultValue:true,onChange:true}).extend({value:z$1.object({start:z$1.custom(),end:z$1.custom()}).optional(),defaultValue:z$1.object({start:z$1.custom(),end:z$1.custom()}).optional(),onChange:z$1.function().optional()});export{na as Calendar,ia as CalendarPropsSchema,ta as DateField,Ae as DateFieldPropsSchema,J as DatePicker,oa as DatePickerPropsSchema,ea as DateRangePicker,De as DateRangePickerPropsSchema,Ce as RangeCalendarPropsSchema,x as calendarCellVariants,v as calendarGridHeaderCellVariants,V as calendarGridVariants,P as calendarHeaderVariants,c as calendarNavButtonVariants,g as dateFieldVariants,E as datePickerDescriptionVariants,N as datePickerErrorVariants,S as datePickerLabelVariants,k as datePickerPopoverVariants,O as datePickerTriggerVariants,p as dateSegmentVariants};//# sourceMappingURL=index.mjs.map
2
+ import {createContext,memo,forwardRef,useMemo}from'react';import {DatePicker,Label,Group,DateInput,DateSegment,Button,Text,FieldError,Popover,Dialog,Calendar as Calendar$1,Heading,CalendarGrid,CalendarGridHeader,CalendarHeaderCell,CalendarGridBody,CalendarCell,DateRangePicker,RangeCalendar,DateField}from'react-aria-components';import {Calendar,ChevronLeft,ChevronRight}from'lucide-react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {cva}from'class-variance-authority';import {jsx,jsxs}from'react/jsx-runtime';import {z as z$1}from'zod';export{getLocalTimeZone,isWeekend,now,parseDate,parseDateTime,parseZonedDateTime,today}from'@internationalized/date';function e(...o){return twMerge(clsx(o))}var w=["focus-within:outline-none","focus-within:ring-2","focus-within:ring-[var(--ring)]","focus-within:ring-offset-2"];var T=["focus:outline-none","focus:ring-2","focus:ring-[var(--ring)]"],M=["focus:outline-none","focus:bg-[var(--accent)]","focus:text-[var(--accent-foreground)]"],U=["disabled:pointer-events-none","disabled:opacity-50"],F=["data-[disabled]:pointer-events-none","data-[disabled]:opacity-50","data-[disabled]:cursor-not-allowed"],B={sm:"text-xs",default:"text-sm",lg:"text-base"},_={sm:"text-sm",default:"text-base",lg:"text-lg"};var R={sm:"h-9",default:"h-11",lg:"h-14"},Z=["flex","items-center","gap-1.5","text-[var(--destructive-background)]"];var q=["text-[var(--menu-muted)]"],z=["font-medium","text-[var(--content-foreground)]"];var j=["data-[entering]:animate-in","data-[entering]:fade-in-0","data-[entering]:zoom-in-95"],W=["data-[exiting]:animate-out","data-[exiting]:fade-out-0","data-[exiting]:zoom-out-95"];var Y=["motion-reduce:transition-none","motion-reduce:animate-none"];var h=["transition-colors","duration-150"],O=["hover:bg-[var(--accent)]","hover:text-[var(--accent-foreground)]"];function d(...o){return o.flatMap(i=>Array.isArray(i)?[...i]:[i])}var x=cva(d("flex items-center rounded-md border","bg-[var(--content-background)] text-[var(--content-foreground)]","transition-colors duration-200",w,F),{variants:{size:{sm:`${R.sm} px-3 text-sm gap-0.5`,default:`${R.default} px-4 text-base gap-1`,lg:`${R.lg} px-5 text-lg gap-1.5`},isInvalid:{true:"border-[var(--destructive-background)] focus-within:ring-[var(--destructive-background)]",false:"border-[var(--input-border)] hover:border-[var(--input-border)]/80"}},defaultVariants:{size:"default",isInvalid:false}}),p=cva(d("tabular-nums rounded px-0.5",M,"data-[placeholder]:text-[var(--menu-muted)]","data-[type=literal]:text-[var(--menu-muted)]"),{variants:{size:_},defaultVariants:{size:"default"}}),C=cva(d("flex items-center justify-center rounded-md cursor-pointer",h,O,T,"data-[selected]:bg-[var(--primary)] data-[selected]:text-[var(--primary-foreground)]","data-[selected]:hover:bg-[var(--primary)]/90 data-[selected]:font-semibold","data-[today]:border data-[today]:border-[var(--primary)]","data-[selection-start]:rounded-l-md data-[selection-start]:rounded-r-none","data-[selection-end]:rounded-r-md data-[selection-end]:rounded-l-none","data-[selected]:data-[selection-start]:rounded-l-md","data-[selected]:data-[selection-end]:rounded-r-md","data-[unavailable]:text-[var(--menu-muted)] data-[unavailable]:pointer-events-none data-[unavailable]:opacity-50 data-[unavailable]:line-through","data-[outside-month]:text-[var(--menu-muted)] data-[outside-month]:opacity-50","data-[disabled]:text-[var(--menu-muted)] data-[disabled]:pointer-events-none data-[disabled]:opacity-50"),{variants:{size:{sm:"h-9 w-9 text-sm",default:"h-11 w-11 text-base",lg:"h-14 w-14 text-lg"}},defaultVariants:{size:"default"}}),P=cva("flex items-center justify-between px-1 pb-4",{variants:{size:_},defaultVariants:{size:"default"}}),c=cva(d("inline-flex items-center justify-center rounded-md text-[var(--menu-muted)]",h,O,T,U),{variants:{size:{sm:"h-7 w-7",default:"h-9 w-9",lg:"h-11 w-11"}},defaultVariants:{size:"default"}}),V=cva("w-full border-collapse",{variants:{size:_},defaultVariants:{size:"default"}}),N=cva("text-center font-medium text-[var(--menu-muted)] pb-2",{variants:{size:{sm:"text-xs w-9",default:"text-sm w-11",lg:"text-base w-14"}},defaultVariants:{size:"default"}}),y=cva(d("z-50 rounded-md border p-3 shadow-md outline-none","bg-[var(--menu-background)] text-[var(--menu-foreground)]",j,W,Y),{variants:{size:{sm:"w-[260px]",default:"w-[320px]",lg:"w-[380px]"}},defaultVariants:{size:"default"}}),k=cva(d("inline-flex items-center justify-center rounded-md text-[var(--menu-muted)]",h,O,T,F),{variants:{size:{sm:"h-7 w-7",default:"h-9 w-9",lg:"h-11 w-11"}},defaultVariants:{size:"default"}}),v=cva(d(q,"mt-1"),{variants:{size:B},defaultVariants:{size:"default"}}),E=cva(d(Z,"mt-1"),{variants:{size:B},defaultVariants:{size:"default"}}),S=cva(d(z,"block mb-1.5",'data-[required]:after:content-["*"] data-[required]:after:ml-0.5 data-[required]:after:text-[var(--destructive-background)]'),{variants:{size:{sm:"text-sm",default:"text-sm",lg:"text-base"}},defaultVariants:{size:"default"}});var Oa=createContext({size:"default"});var J=memo(forwardRef(({label:o,description:i,errorMessage:f,size:t="default",className:u,placement:D="bottom",...s},I)=>{let b=useMemo(()=>({size:t,isInvalid:s.isInvalid,isDisabled:s.isDisabled}),[t,s.isInvalid,s.isDisabled]);return jsx(Oa.Provider,{value:b,children:jsxs(DatePicker,{ref:I,className:e("group flex flex-col gap-1",u),...s,children:[jsx(Label,{className:e(S({size:t})),"data-required":s.isRequired||void 0,children:o}),jsxs(Group,{className:e(x({size:t,isInvalid:s.isInvalid})),children:[jsx(DateInput,{className:"flex flex-1 items-center",children:g=>jsx(DateSegment,{segment:g,className:e(p({size:t}))})}),jsx(Button,{className:e(k({size:t})),"aria-label":"Open calendar",children:jsx(Calendar,{className:"h-4 w-4"})})]}),i&&jsx(Text,{slot:"description",className:e(v({size:t})),children:i}),jsx(FieldError,{className:e(E({size:t})),children:f}),jsx(Popover,{placement:D,className:e(y({size:t})),children:jsx(Dialog,{className:"outline-none",children:jsxs(Calendar$1,{className:"w-full",children:[jsxs("div",{className:e(P({size:t})),children:[jsx(Button,{slot:"previous",className:e(c({size:t})),"aria-label":"Previous month",children:jsx(ChevronLeft,{className:"h-4 w-4"})}),jsx(Heading,{className:"flex-1 text-center font-semibold"}),jsx(Button,{slot:"next",className:e(c({size:t})),"aria-label":"Next month",children:jsx(ChevronRight,{className:"h-4 w-4"})})]}),jsxs(CalendarGrid,{className:e(V({size:t})),children:[jsx(CalendarGridHeader,{children:g=>jsx(CalendarHeaderCell,{className:e(N({size:t})),children:g})}),jsx(CalendarGridBody,{children:g=>jsx(CalendarCell,{date:g,className:e(C({size:t}))})})]})]})})})]})})}));J.displayName="DatePicker";var ea=forwardRef(({label:o,description:i,errorMessage:f,size:t="default",className:u,placement:D="bottom",startName:s,endName:I,...b},g)=>jsxs(DateRangePicker,{ref:g,className:e("group flex flex-col gap-1",u),startName:s,endName:I,...b,children:[jsx(Label,{className:e(S({size:t})),"data-required":b.isRequired||void 0,children:o}),jsxs(Group,{className:e(x({size:t,isInvalid:b.isInvalid})),children:[jsx(DateInput,{slot:"start",className:"flex items-center",children:A=>jsx(DateSegment,{segment:A,className:e(p({size:t}))})}),jsx("span",{"aria-hidden":"true",className:"px-2 text-[var(--menu-muted)]",children:"\u2013"}),jsx(DateInput,{slot:"end",className:"flex items-center",children:A=>jsx(DateSegment,{segment:A,className:e(p({size:t}))})}),jsx(Button,{className:e(k({size:t})),"aria-label":"Open calendar",children:jsx(Calendar,{className:"h-4 w-4"})})]}),i&&jsx(Text,{slot:"description",className:e(v({size:t})),children:i}),jsx(FieldError,{className:e(E({size:t})),children:f}),jsx(Popover,{placement:D,className:e(y({size:t})),children:jsx(Dialog,{className:"outline-none",children:jsxs(RangeCalendar,{className:"w-full",children:[jsxs("div",{className:e(P({size:t})),children:[jsx(Button,{slot:"previous",className:e(c({size:t})),"aria-label":"Previous month",children:jsx(ChevronLeft,{className:"h-4 w-4"})}),jsx(Heading,{className:"flex-1 text-center font-semibold"}),jsx(Button,{slot:"next",className:e(c({size:t})),"aria-label":"Next month",children:jsx(ChevronRight,{className:"h-4 w-4"})})]}),jsxs(CalendarGrid,{className:e(V({size:t})),children:[jsx(CalendarGridHeader,{children:A=>jsx(CalendarHeaderCell,{className:e(N({size:t})),children:A})}),jsx(CalendarGridBody,{children:A=>jsx(CalendarCell,{date:A,className:e(C({size:t}))})})]})]})})})]}));ea.displayName="DateRangePicker";var ta=forwardRef(({label:o,description:i,errorMessage:f,size:t="default",className:u,...D},s)=>jsxs(DateField,{ref:s,className:e("group flex flex-col gap-1",u),...D,children:[jsx(Label,{className:e(S({size:t})),"data-required":D.isRequired||void 0,children:o}),jsx(DateInput,{className:e(x({size:t,isInvalid:D.isInvalid}),"w-fit"),children:I=>jsx(DateSegment,{segment:I,className:e(p({size:t}))})}),i&&jsx(Text,{slot:"description",className:e(v({size:t})),children:i}),jsx(FieldError,{className:e(E({size:t})),children:f})]}));ta.displayName="DateField";var na=forwardRef(({size:o="default",className:i,...f},t)=>jsxs(Calendar$1,{ref:t,className:e("w-fit",i),...f,children:[jsxs("div",{className:e(P({size:o})),children:[jsx(Button,{slot:"previous",className:e(c({size:o})),"aria-label":"Previous month",children:jsx(ChevronLeft,{className:"h-4 w-4"})}),jsx(Heading,{className:"flex-1 text-center font-semibold"}),jsx(Button,{slot:"next",className:e(c({size:o})),"aria-label":"Next month",children:jsx(ChevronRight,{className:"h-4 w-4"})})]}),jsxs(CalendarGrid,{className:e(V({size:o})),children:[jsx(CalendarGridHeader,{children:u=>jsx(CalendarHeaderCell,{className:e(N({size:o})),children:u})}),jsx(CalendarGridBody,{children:u=>jsx(CalendarCell,{date:u,className:e(C({size:o}))})})]})]}));na.displayName="Calendar";var oa=z$1.object({value:z$1.custom().optional(),defaultValue:z$1.custom().optional(),placeholderValue:z$1.custom().optional(),granularity:z$1.enum(["day","hour","minute","second"]).default("day"),hourCycle:z$1.union([z$1.literal(12),z$1.literal(24)]).optional(),hideTimeZone:z$1.boolean().optional(),shouldForceLeadingZeros:z$1.boolean().optional(),minValue:z$1.custom().optional(),maxValue:z$1.custom().optional(),isDateUnavailable:z$1.function().optional(),isOpen:z$1.boolean().optional(),defaultOpen:z$1.boolean().optional(),isDisabled:z$1.boolean().optional(),isReadOnly:z$1.boolean().optional(),isRequired:z$1.boolean().optional(),isInvalid:z$1.boolean().optional(),validate:z$1.function().optional(),validationBehavior:z$1.enum(["native","aria"]).default("native"),label:z$1.string(),description:z$1.string().optional(),errorMessage:z$1.union([z$1.string(),z$1.function()]).optional(),firstDayOfWeek:z$1.enum(["sun","mon","tue","wed","thu","fri","sat"]).optional(),pageBehavior:z$1.enum(["single","visible"]).optional(),name:z$1.string().optional(),placement:z$1.enum(["bottom","top","left","right"]).optional(),visibleDuration:z$1.object({months:z$1.number()}).optional(),size:z$1.enum(["sm","default","lg"]).default("default"),onChange:z$1.function().optional(),onOpenChange:z$1.function().optional(),onFocus:z$1.function().optional(),onBlur:z$1.function().optional(),onFocusChange:z$1.function().optional(),className:z$1.string().optional(),children:z$1.any().optional()}),De=oa.omit({value:true,defaultValue:true,onChange:true}).extend({value:z$1.object({start:z$1.custom(),end:z$1.custom()}).optional(),defaultValue:z$1.object({start:z$1.custom(),end:z$1.custom()}).optional(),startName:z$1.string().optional(),endName:z$1.string().optional(),onChange:z$1.function().optional()}),ge=z$1.object({value:z$1.custom().optional(),defaultValue:z$1.custom().optional(),placeholderValue:z$1.custom().optional(),granularity:z$1.enum(["day","hour","minute","second"]).default("day"),hourCycle:z$1.union([z$1.literal(12),z$1.literal(24)]).optional(),hideTimeZone:z$1.boolean().optional(),shouldForceLeadingZeros:z$1.boolean().optional(),minValue:z$1.custom().optional(),maxValue:z$1.custom().optional(),isDisabled:z$1.boolean().optional(),isReadOnly:z$1.boolean().optional(),isRequired:z$1.boolean().optional(),isInvalid:z$1.boolean().optional(),validate:z$1.function().optional(),validationBehavior:z$1.enum(["native","aria"]).default("native"),label:z$1.string(),description:z$1.string().optional(),errorMessage:z$1.union([z$1.string(),z$1.function()]).optional(),name:z$1.string().optional(),size:z$1.enum(["sm","default","lg"]).default("default"),onChange:z$1.function().optional(),onFocus:z$1.function().optional(),onBlur:z$1.function().optional(),onFocusChange:z$1.function().optional(),className:z$1.string().optional()}),ia=z$1.object({value:z$1.custom().optional(),defaultValue:z$1.custom().optional(),focusedValue:z$1.custom().optional(),defaultFocusedValue:z$1.custom().optional(),minValue:z$1.custom().optional(),maxValue:z$1.custom().optional(),isDateUnavailable:z$1.function().optional(),isDisabled:z$1.boolean().optional(),isReadOnly:z$1.boolean().optional(),firstDayOfWeek:z$1.enum(["sun","mon","tue","wed","thu","fri","sat"]).optional(),pageBehavior:z$1.enum(["single","visible"]).optional(),visibleDuration:z$1.object({months:z$1.number()}).optional(),size:z$1.enum(["sm","default","lg"]).default("default"),onChange:z$1.function().optional(),onFocusChange:z$1.function().optional(),className:z$1.string().optional()}),Ae=ia.omit({value:true,defaultValue:true,onChange:true}).extend({value:z$1.object({start:z$1.custom(),end:z$1.custom()}).optional(),defaultValue:z$1.object({start:z$1.custom(),end:z$1.custom()}).optional(),onChange:z$1.function().optional()});export{na as Calendar,ia as CalendarPropsSchema,ta as DateField,ge as DateFieldPropsSchema,J as DatePicker,oa as DatePickerPropsSchema,ea as DateRangePicker,De as DateRangePickerPropsSchema,Ae as RangeCalendarPropsSchema,C as calendarCellVariants,N as calendarGridHeaderCellVariants,V as calendarGridVariants,P as calendarHeaderVariants,c as calendarNavButtonVariants,x as dateFieldVariants,v as datePickerDescriptionVariants,E as datePickerErrorVariants,S as datePickerLabelVariants,y as datePickerPopoverVariants,k as datePickerTriggerVariants,p as dateSegmentVariants};//# sourceMappingURL=index.mjs.map
3
3
  //# sourceMappingURL=index.mjs.map