@servicetitan/anvil2 3.13.6 → 3.14.0

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 (414) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/{AiMark-D8dx3b1Q.js → AiMark-CWufA6pV.js} +7 -62
  3. package/dist/{AiMark-D8dx3b1Q.js.map → AiMark-CWufA6pV.js.map} +1 -1
  4. package/dist/AiMark.js +1 -1
  5. package/dist/{Alert-N-Es76Om.js → Alert-RkvFtmRP.js} +2 -2
  6. package/dist/{Alert-N-Es76Om.js.map → Alert-RkvFtmRP.js.map} +1 -1
  7. package/dist/Alert.js +1 -1
  8. package/dist/{AnvilProvider-DcYAaAvs.js → AnvilProvider-DagOuc9c.js} +13 -7
  9. package/dist/AnvilProvider-DagOuc9c.js.map +1 -0
  10. package/dist/AnvilProvider.js +1 -1
  11. package/dist/{Avatar-D31JDNrs.js → Avatar-DZxHhMTP.js} +2 -4
  12. package/dist/Avatar-DZxHhMTP.js.map +1 -0
  13. package/dist/{Avatar-DXI-w1Vi.js → Avatar-DkWoRhJu.js} +2 -2
  14. package/dist/{Avatar-DXI-w1Vi.js.map → Avatar-DkWoRhJu.js.map} +1 -1
  15. package/dist/Avatar.js +2 -2
  16. package/dist/{Breadcrumbs-Di0HJmcH.js → Breadcrumbs-DbOrdao2.js} +2 -2
  17. package/dist/{Breadcrumbs-Di0HJmcH.js.map → Breadcrumbs-DbOrdao2.js.map} +1 -1
  18. package/dist/Breadcrumbs.js +1 -1
  19. package/dist/Button-Dwh_Nd4l.js.map +1 -1
  20. package/dist/{Calendar-DnK6UwPE.js → Calendar-CK-AAaSG.js} +33 -41
  21. package/dist/Calendar-CK-AAaSG.js.map +1 -0
  22. package/dist/{Calendar-C1mgmbWt.js → Calendar-DLnn6dJE.js} +2 -2
  23. package/dist/{Calendar-C1mgmbWt.js.map → Calendar-DLnn6dJE.js.map} +1 -1
  24. package/dist/Calendar.css +50 -48
  25. package/dist/Calendar.js +2 -2
  26. package/dist/{Checkbox-CknwM231.js → Checkbox-CboZhOtU.js} +3 -3
  27. package/dist/{Checkbox-CknwM231.js.map → Checkbox-CboZhOtU.js.map} +1 -1
  28. package/dist/{Checkbox-FvMXGsgi.js → Checkbox-Cn4iNLW_.js} +2 -2
  29. package/dist/{Checkbox-FvMXGsgi.js.map → Checkbox-Cn4iNLW_.js.map} +1 -1
  30. package/dist/Checkbox.js +1 -1
  31. package/dist/{Chip-AILbiVZ6.js → Chip-UbrxYEqs.js} +4 -6
  32. package/dist/Chip-UbrxYEqs.js.map +1 -0
  33. package/dist/Chip.js +1 -1
  34. package/dist/Combobox.js +1 -1
  35. package/dist/{DataTable-BE1YvSto.js → DataTable-COExZbOC.js} +11 -25
  36. package/dist/DataTable-COExZbOC.js.map +1 -0
  37. package/dist/{DateFieldRange-VK82YRwV.js → DateFieldRange-CpTxlASD.js} +5 -5
  38. package/dist/{DateFieldRange-VK82YRwV.js.map → DateFieldRange-CpTxlASD.js.map} +1 -1
  39. package/dist/DateFieldRange.js +1 -1
  40. package/dist/{DateFieldSingle-BikPSISX.js → DateFieldSingle-DR2kfrzh.js} +5 -5
  41. package/dist/{DateFieldSingle-BikPSISX.js.map → DateFieldSingle-DR2kfrzh.js.map} +1 -1
  42. package/dist/DateFieldSingle.js +1 -1
  43. package/dist/{DateFieldYearless-DQIEBYKe.js → DateFieldYearless-4mS_2Mgw.js} +5 -5
  44. package/dist/{DateFieldYearless-DQIEBYKe.js.map → DateFieldYearless-4mS_2Mgw.js.map} +1 -1
  45. package/dist/DateFieldYearless.js +1 -1
  46. package/dist/{DateFieldYearlessRange-BpQqvD9U.js → DateFieldYearlessRange-C-yvKBkJ.js} +4 -4
  47. package/dist/{DateFieldYearlessRange-BpQqvD9U.js.map → DateFieldYearlessRange-C-yvKBkJ.js.map} +1 -1
  48. package/dist/DateFieldYearlessRange.js +1 -1
  49. package/dist/{DaysOfTheWeek-Re26vN8g.js → DaysOfTheWeek-Bo4w8SsT.js} +2 -2
  50. package/dist/{DaysOfTheWeek-Re26vN8g.js.map → DaysOfTheWeek-Bo4w8SsT.js.map} +1 -1
  51. package/dist/DaysOfTheWeek.js +1 -1
  52. package/dist/{Dialog-BMPFoRQh.js → Dialog-Ds25dKQp.js} +4 -4
  53. package/dist/{Dialog-BMPFoRQh.js.map → Dialog-Ds25dKQp.js.map} +1 -1
  54. package/dist/Dialog.js +1 -1
  55. package/dist/{Drawer-BCw_ZHSD.js → Drawer-Da-bj_6o.js} +4 -4
  56. package/dist/{Drawer-BCw_ZHSD.js.map → Drawer-Da-bj_6o.js.map} +1 -1
  57. package/dist/Drawer.js +1 -1
  58. package/dist/DrillDown.js +1 -1
  59. package/dist/{EditCard-CTEk64eN.js → EditCard-CocV93gS.js} +2 -2
  60. package/dist/{EditCard-CTEk64eN.js.map → EditCard-CocV93gS.js.map} +1 -1
  61. package/dist/EditCard.js +1 -1
  62. package/dist/{FieldLabel-CYCk2rz-.js → FieldLabel-6aFKQfyD.js} +2 -2
  63. package/dist/FieldLabel-6aFKQfyD.js.map +1 -0
  64. package/dist/FieldLabel.js +1 -1
  65. package/dist/{FilterBar-XMZ-Q-aW.js → FilterBar-CZT1ryz_.js} +6 -7
  66. package/dist/FilterBar-CZT1ryz_.js.map +1 -0
  67. package/dist/FilterBar.js +1 -1
  68. package/dist/Helper-BHpOgh7k.js.map +1 -1
  69. package/dist/Icon-B5zwN7GD.js.map +1 -1
  70. package/dist/{InputMask-Bm7ZYtQy.js → InputMask-CNV0Ucli.js} +3 -3
  71. package/dist/{InputMask-Bm7ZYtQy.js.map → InputMask-CNV0Ucli.js.map} +1 -1
  72. package/dist/InputMask.js +1 -1
  73. package/dist/{ListView-Bkv1ZCSu.js → ListView-DFAWrwzi.js} +2 -2
  74. package/dist/ListView-DFAWrwzi.js.map +1 -0
  75. package/dist/ListView.js +1 -1
  76. package/dist/{Listbox-BWy_uBqm.js → Listbox-BErqErNN.js} +2 -2
  77. package/dist/Listbox-BErqErNN.js.map +1 -0
  78. package/dist/Listbox.js +1 -1
  79. package/dist/LocalizationContext-UsmB5mnR.js.map +1 -1
  80. package/dist/LocalizationProvider-BPcOU7YX.js.map +1 -1
  81. package/dist/{MenuFooter--lBF8OjJ.js → MenuFooter-fGSZYh8e.js} +2 -2
  82. package/dist/MenuFooter-fGSZYh8e.js.map +1 -0
  83. package/dist/MultiSelectField.js +1 -1
  84. package/dist/{MultiSelectFieldSync-C57Hms2z.js → MultiSelectFieldSync-CqWUidCm.js} +8 -8
  85. package/dist/MultiSelectFieldSync-CqWUidCm.js.map +1 -0
  86. package/dist/MultiSelectMenu.js +1 -1
  87. package/dist/{MultiSelectMenuSync-DxU1AtCL.js → MultiSelectMenuSync-DG3rKyQc.js} +6 -6
  88. package/dist/{MultiSelectMenuSync-DxU1AtCL.js.map → MultiSelectMenuSync-DG3rKyQc.js.map} +1 -1
  89. package/dist/{NumberField-BOLMhpdk.js → NumberField-DRYYJHec.js} +3 -3
  90. package/dist/{NumberField-BOLMhpdk.js.map → NumberField-DRYYJHec.js.map} +1 -1
  91. package/dist/NumberField.js +1 -1
  92. package/dist/{Page-CBmCe-YR.js → Page-BmpojvuI.js} +8 -8
  93. package/dist/{Page-CBmCe-YR.js.map → Page-BmpojvuI.js.map} +1 -1
  94. package/dist/Page.js +1 -1
  95. package/dist/{Pagination-Hjalx9ZX.js → Pagination-Bc4fhdNm.js} +3 -3
  96. package/dist/{Pagination-Hjalx9ZX.js.map → Pagination-Bc4fhdNm.js.map} +1 -1
  97. package/dist/Pagination.js +1 -1
  98. package/dist/{Popover-BQ-R2hs0.js → Popover-BgVOsP4J.js} +2 -2
  99. package/dist/{Popover-BQ-R2hs0.js.map → Popover-BgVOsP4J.js.map} +1 -1
  100. package/dist/Popover.js +1 -1
  101. package/dist/PortalProvider-Cj_y3gbC.js.map +1 -1
  102. package/dist/{ProgressBar-BUmYFa81.js → ProgressBar-Chb0uKfL.js} +2 -2
  103. package/dist/{ProgressBar-BUmYFa81.js.map → ProgressBar-Chb0uKfL.js.map} +1 -1
  104. package/dist/ProgressBar.js +1 -1
  105. package/dist/{Radio-BgbBIhPS.js → Radio-DcNlFfSu.js} +3 -3
  106. package/dist/{Radio-BgbBIhPS.js.map → Radio-DcNlFfSu.js.map} +1 -1
  107. package/dist/{Radio-C2pWQ84U.js → Radio-gpMEsFss.js} +2 -2
  108. package/dist/{Radio-C2pWQ84U.js.map → Radio-gpMEsFss.js.map} +1 -1
  109. package/dist/Radio.js +1 -1
  110. package/dist/{RichTextEditor-Chzl-zeW.js → RichTextEditor-DeO4p-S-.js} +8 -8
  111. package/dist/{RichTextEditor-Chzl-zeW.js.map → RichTextEditor-DeO4p-S-.js.map} +1 -1
  112. package/dist/RichTextEditor.js +1 -1
  113. package/dist/{SavedFiltersButton-DFy_R8yv.js → SavedFiltersButton-Cvf1mJk8.js} +10 -10
  114. package/dist/{SavedFiltersButton-DFy_R8yv.js.map → SavedFiltersButton-Cvf1mJk8.js.map} +1 -1
  115. package/dist/SavedFiltersButton.js +1 -1
  116. package/dist/{SelectCard-BGTB3ay0.js → SelectCard-bp5hRyHK.js} +3 -3
  117. package/dist/{SelectCard-BGTB3ay0.js.map → SelectCard-bp5hRyHK.js.map} +1 -1
  118. package/dist/SelectCard.js +1 -1
  119. package/dist/SelectField.js +1 -1
  120. package/dist/{SelectFieldLabel-CcX2GAym.js → SelectFieldLabel-DZqxaZsp.js} +2 -2
  121. package/dist/SelectFieldLabel-DZqxaZsp.js.map +1 -0
  122. package/dist/{SelectFieldSync-CLpTOgdr.js → SelectFieldSync-Wkx6DGpg.js} +7 -7
  123. package/dist/{SelectFieldSync-CLpTOgdr.js.map → SelectFieldSync-Wkx6DGpg.js.map} +1 -1
  124. package/dist/SelectMenu.js +1 -1
  125. package/dist/{SelectMenuSync-DqUIPJtu.js → SelectMenuSync-O55TODxn.js} +6 -6
  126. package/dist/{SelectMenuSync-DqUIPJtu.js.map → SelectMenuSync-O55TODxn.js.map} +1 -1
  127. package/dist/{SelectOptions-BkqBzRiG.js → SelectOptions-0A8BYx1q.js} +2 -2
  128. package/dist/SelectOptions-0A8BYx1q.js.map +1 -0
  129. package/dist/{SelectTrigger-DdIvzkNw.js → SelectTrigger-BfJ7DWYq.js} +3 -3
  130. package/dist/{SelectTrigger-DdIvzkNw.js.map → SelectTrigger-BfJ7DWYq.js.map} +1 -1
  131. package/dist/SelectTrigger.js +1 -1
  132. package/dist/{SelectTriggerBase-f2z0XQDf.js → SelectTriggerBase-DvsI-kSG.js} +3 -3
  133. package/dist/{SelectTriggerBase-f2z0XQDf.js.map → SelectTriggerBase-DvsI-kSG.js.map} +1 -1
  134. package/dist/StatusIcon-BqorkNJf.js.map +1 -1
  135. package/dist/{Switch-DWaFomvP.js → Switch-CrDmBj4D.js} +2 -2
  136. package/dist/{Switch-DWaFomvP.js.map → Switch-CrDmBj4D.js.map} +1 -1
  137. package/dist/Switch.js +1 -1
  138. package/dist/Table.js +1 -1
  139. package/dist/{Text-D2TIPmZ2.js → Text-CZccJAnm.js} +2 -2
  140. package/dist/{Text-D2TIPmZ2.js.map → Text-CZccJAnm.js.map} +1 -1
  141. package/dist/Text.js +1 -1
  142. package/dist/{TextField-wIc7ic0E.js → TextField-D0f9LwgQ.js} +3 -3
  143. package/dist/{TextField-wIc7ic0E.js.map → TextField-D0f9LwgQ.js.map} +1 -1
  144. package/dist/{TextField-DJaBZ4Je.js → TextField-DX5qyWPo.js} +2 -2
  145. package/dist/{TextField-DJaBZ4Je.js.map → TextField-DX5qyWPo.js.map} +1 -1
  146. package/dist/TextField.js +1 -1
  147. package/dist/{Textarea-D4c6VjNs.js → Textarea-CdTcekFd.js} +3 -3
  148. package/dist/{Textarea-D4c6VjNs.js.map → Textarea-CdTcekFd.js.map} +1 -1
  149. package/dist/Textarea.js +1 -1
  150. package/dist/ThemeProvider-DW-Mflv6.js.map +1 -1
  151. package/dist/ThemeProviderContext-l52GohYT.js.map +1 -1
  152. package/dist/{TimeField-DpnX_t31.js → TimeField-BxNglWQt.js} +4 -4
  153. package/dist/TimeField-BxNglWQt.js.map +1 -0
  154. package/dist/TimeField.js +1 -1
  155. package/dist/Toast.js +2 -2
  156. package/dist/{Toaster-Cl9BSxHs.js → Toaster-C-Z_FMbW.js} +3 -3
  157. package/dist/{Toaster-Cl9BSxHs.js.map → Toaster-C-Z_FMbW.js.map} +1 -1
  158. package/dist/{Toaster-11pmgwx5.js → Toaster-nyQgF9Ki.js} +2 -2
  159. package/dist/{Toaster-11pmgwx5.js.map → Toaster-nyQgF9Ki.js.map} +1 -1
  160. package/dist/{Toolbar-C9_Z1wAt.js → Toolbar-BUbMtBVz.js} +4 -4
  161. package/dist/{Toolbar-C9_Z1wAt.js.map → Toolbar-BUbMtBVz.js.map} +1 -1
  162. package/dist/{Toolbar-Dq9KOJoH.js → Toolbar-BxAFPvbn.js} +5 -5
  163. package/dist/{Toolbar-Dq9KOJoH.js.map → Toolbar-BxAFPvbn.js.map} +1 -1
  164. package/dist/Toolbar.js +2 -2
  165. package/dist/{ToolbarButtonToggle-BGnYIt6-.js → ToolbarButtonToggle-NSJ2XfXT.js} +2 -2
  166. package/dist/{ToolbarButtonToggle-BGnYIt6-.js.map → ToolbarButtonToggle-NSJ2XfXT.js.map} +1 -1
  167. package/dist/TrackingProvider-Co4lyoI9.js.map +1 -1
  168. package/dist/TrackingProviderContext-CrVA7KHv.js.map +1 -1
  169. package/dist/TreeSelectField.js +1 -1
  170. package/dist/{TreeSelectFieldSync-nD0qctC8.js → TreeSelectFieldSync-DpvwlM7B.js} +6 -6
  171. package/dist/{TreeSelectFieldSync-nD0qctC8.js.map → TreeSelectFieldSync-DpvwlM7B.js.map} +1 -1
  172. package/dist/TreeSelectMenu.js +1 -1
  173. package/dist/{TreeSelectMenuSync-B8pwy4dA.js → TreeSelectMenuSync-BDitYX_k.js} +5 -5
  174. package/dist/{TreeSelectMenuSync-B8pwy4dA.js.map → TreeSelectMenuSync-BDitYX_k.js.map} +1 -1
  175. package/dist/{TypeaheadTextField-2kW-oCMo.js → TypeaheadTextField-Cj09sEji.js} +3 -3
  176. package/dist/{TypeaheadTextField-2kW-oCMo.js.map → TypeaheadTextField-Cj09sEji.js.map} +1 -1
  177. package/dist/TypeaheadTextField.js +1 -1
  178. package/dist/{YearlessDateInputWithPicker-CuHWd_Vp.js → YearlessDateInputWithPicker-CoomgSEK.js} +8 -6
  179. package/dist/YearlessDateInputWithPicker-CoomgSEK.js.map +1 -0
  180. package/dist/anvParts-DFVq7-Cm.js +25 -0
  181. package/dist/anvParts-DFVq7-Cm.js.map +1 -0
  182. package/dist/arrayIdsEqual-DnevhwqN.js.map +1 -1
  183. package/dist/assets/icons/st/gnav_automations_active.svg +1 -0
  184. package/dist/assets/icons/st/gnav_automations_inactive.svg +1 -0
  185. package/dist/assets/icons/st/gnav_command_center_active.svg +1 -0
  186. package/dist/assets/icons/st/gnav_command_center_inactive.svg +1 -0
  187. package/dist/assets/icons/st.ts +4 -0
  188. package/dist/beta.js +17 -17
  189. package/dist/{bulkActionTypes-cnslVUIT.js → bulkActionTypes-DAo3_ECS.js} +2 -2
  190. package/dist/bulkActionTypes-DAo3_ECS.js.map +1 -0
  191. package/dist/childrenToString-Bz9MqbHb.js.map +1 -1
  192. package/dist/confirmationTypes-DeRtO_Cw.js.map +1 -1
  193. package/dist/{downshift.esm-xtSnQp44.js → downshift.esm-U4VMqrF-.js} +3 -1
  194. package/dist/downshift.esm-U4VMqrF-.js.map +1 -0
  195. package/dist/{filter-state-B7lCzjsR.js → filter-state-CZcczj37.js} +21 -21
  196. package/dist/{filter-state-B7lCzjsR.js.map → filter-state-CZcczj37.js.map} +1 -1
  197. package/dist/floating-ui.react-dom-BIKT960u.js.map +1 -1
  198. package/dist/getActiveElement-BcSyVE7S.js.map +1 -1
  199. package/dist/getKeyboardFocusableElements-B_U9rt6y.js.map +1 -1
  200. package/dist/{index-BHztJ8H6.js → index-BFxzUzoz.js} +2 -2
  201. package/dist/{index-BHztJ8H6.js.map → index-BFxzUzoz.js.map} +1 -1
  202. package/dist/index.js +44 -45
  203. package/dist/index.js.map +1 -1
  204. package/dist/portalScopeClassNames-DA28LrXe.js.map +1 -1
  205. package/dist/src/components/DateFieldYearless/internal/YearlessDateSelectionPopover.d.ts +2 -2
  206. package/dist/src/hooks/useAccessibleColor/useAccessibleColor.d.ts +3 -28
  207. package/dist/src/hooks/useBreakpoint/useBreakpoint.d.ts +15 -60
  208. package/dist/src/hooks/useMergeRefs/useMergeRefs.d.ts +3 -20
  209. package/dist/src/hooks/usePrefersColorScheme/usePrefersColorScheme.d.ts +2 -11
  210. package/dist/src/hooks/usePrefersReducedMotion/usePrefersReducedMotion.d.ts +2 -10
  211. package/dist/src/hooks/useSize/index.d.ts +2 -13
  212. package/dist/src/hooks/useSwipe/useSwipe.d.ts +3 -20
  213. package/dist/src/hooks/useTrackingId/index.d.ts +6 -17
  214. package/dist/src/internal/components/AddNewItemButton.d.ts +4 -30
  215. package/dist/src/internal/components/Helper/Helper.d.ts +12 -8
  216. package/dist/src/internal/components/InView.d.ts +4 -24
  217. package/dist/src/internal/components/InlineMarkdown/InlineMarkdown.d.ts +2 -19
  218. package/dist/src/internal/components/Label/Label.d.ts +12 -51
  219. package/dist/src/internal/components/ManualTestLayout/ManualTestLayout.d.ts +3 -2
  220. package/dist/src/internal/components/MenuFooter/MenuFooter.d.ts +11 -17
  221. package/dist/src/internal/components/MultiSelectOptions.d.ts +15 -0
  222. package/dist/src/internal/components/OptionCheckbox.d.ts +2 -0
  223. package/dist/src/internal/components/OptionContentArea.d.ts +4 -0
  224. package/dist/src/internal/components/OptionRow.d.ts +4 -0
  225. package/dist/src/internal/components/OptionsDialog/OptionsDialog.d.ts +13 -1
  226. package/dist/src/internal/components/OptionsPanel.d.ts +16 -0
  227. package/dist/src/internal/components/OptionsPopover/OptionsPopover.d.ts +9 -14
  228. package/dist/src/internal/components/Popover/Popover.d.ts +45 -180
  229. package/dist/src/internal/components/Popover/PopoverButton.d.ts +0 -20
  230. package/dist/src/internal/components/Popover/PopoverClose.d.ts +0 -20
  231. package/dist/src/internal/components/Popover/PopoverContent.d.ts +4 -25
  232. package/dist/src/internal/components/Popover/PopoverTrigger.d.ts +1 -23
  233. package/dist/src/internal/components/Popover/internal/PopoverContext.d.ts +0 -21
  234. package/dist/src/internal/components/Popover/internal/usePopoverContext.d.ts +1 -3
  235. package/dist/src/internal/components/SelectOption.d.ts +8 -0
  236. package/dist/src/internal/components/SelectOptions.d.ts +15 -0
  237. package/dist/src/internal/components/Shadow/Shadow.d.ts +1 -0
  238. package/dist/src/internal/components/StatusIcon/StatusIcon.d.ts +4 -33
  239. package/dist/src/internal/components/Surface/Surface.d.ts +40 -73
  240. package/dist/src/internal/components/Surface/surfaceGeometry.d.ts +12 -0
  241. package/dist/src/internal/components/VirtualizedOptionsPanel.d.ts +1 -0
  242. package/dist/src/internal/components/YearSelector/YearSelector.d.ts +14 -48
  243. package/dist/src/internal/components/YearSelector/internal/YearItem.d.ts +1 -0
  244. package/dist/src/internal/components/YearSelector/internal/useYearSelectorKeys.d.ts +4 -0
  245. package/dist/src/internal/constants/anvParts.d.ts +3 -55
  246. package/dist/src/internal/flubber/a2c.d.ts +0 -4
  247. package/dist/src/internal/flubber/arc.d.ts +0 -4
  248. package/dist/src/internal/flubber/bezier.d.ts +0 -4
  249. package/dist/src/internal/flubber/errors.d.ts +0 -4
  250. package/dist/src/internal/flubber/index.d.ts +0 -4
  251. package/dist/src/internal/flubber/interpolate.d.ts +3 -0
  252. package/dist/src/internal/flubber/linear.d.ts +0 -4
  253. package/dist/src/internal/flubber/parse.d.ts +0 -4
  254. package/dist/src/internal/flubber/path-properties.d.ts +0 -4
  255. package/dist/src/internal/functions/areOptionsValueEqual.d.ts +2 -5
  256. package/dist/src/internal/functions/buildSelectItems.d.ts +2 -4
  257. package/dist/src/internal/functions/childrenToString.d.ts +3 -21
  258. package/dist/src/internal/functions/getActiveElement.d.ts +4 -0
  259. package/dist/src/internal/functions/getInitial.d.ts +3 -13
  260. package/dist/src/internal/functions/getKeyboardFocusableElements.d.ts +6 -30
  261. package/dist/src/internal/functions/inlineMarkdown.d.ts +3 -16
  262. package/dist/src/internal/functions/isThenable.d.ts +1 -1
  263. package/dist/src/internal/functions/kebabize.d.ts +3 -13
  264. package/dist/src/internal/functions/mapOrder.d.ts +4 -0
  265. package/dist/src/internal/functions/popoverTargetDomProps.d.ts +1 -1
  266. package/dist/src/internal/functions/portalScopeClassNames.d.ts +6 -13
  267. package/dist/src/internal/functions/safePopover.d.ts +2 -0
  268. package/dist/src/internal/functions/sizeToToken.d.ts +1 -0
  269. package/dist/src/internal/functions/stripInlineMarkdown.d.ts +3 -5
  270. package/dist/src/internal/functions/syncFilterUtils.d.ts +4 -2
  271. package/dist/src/internal/functions/warnOnce.d.ts +1 -2
  272. package/dist/src/internal/hooks/useBulkActionRunner.d.ts +4 -27
  273. package/dist/src/internal/hooks/useCommitSelectionIfChanged.d.ts +7 -14
  274. package/dist/src/internal/hooks/useConfirmationDraft.d.ts +4 -4
  275. package/dist/src/internal/hooks/useContainerQuery/useContainerQuery.d.ts +2 -33
  276. package/dist/src/internal/hooks/useDebouncedCallback/useDebouncedCallback.d.ts +3 -25
  277. package/dist/src/internal/hooks/useDialogScrollLock/useDialogScrollLock.d.ts +6 -31
  278. package/dist/src/internal/hooks/useDialogTransitionStates/useDialogTransitionStates.d.ts +2 -27
  279. package/dist/src/internal/hooks/useDownshiftEnvironment/useDownshiftEnvironment.d.ts +8 -24
  280. package/dist/src/internal/hooks/useFocusWithin/useFocusWithin.d.ts +3 -14
  281. package/dist/src/internal/hooks/useGroupedOptions.d.ts +4 -22
  282. package/dist/src/internal/hooks/useIntersectionObserver/useIntersectionObserver.d.ts +4 -47
  283. package/dist/src/internal/hooks/useInvalidateOnOptionsChange.d.ts +2 -7
  284. package/dist/src/internal/hooks/useIsScrollable/useIsScrollable.d.ts +1 -5
  285. package/dist/src/internal/hooks/useKeyboardFocusables/useKeyboardFocusables.d.ts +1 -38
  286. package/dist/src/internal/hooks/useLayoutPropsUtil/useLayoutPropsUtil.d.ts +2 -38
  287. package/dist/src/internal/hooks/useNumberField/internal/createNumberMaskOptions.d.ts +2 -5
  288. package/dist/src/internal/hooks/useNumberField/internal/createTrailingZerosHandlers.d.ts +1 -2
  289. package/dist/src/internal/hooks/useNumberField/internal/numberMaskUtils.d.ts +0 -6
  290. package/dist/src/internal/hooks/useNumberField/internal/useNumberFieldInputMode.d.ts +2 -17
  291. package/dist/src/internal/hooks/useNumberField/internal/useNumberFieldKeys.d.ts +4 -30
  292. package/dist/src/internal/hooks/useNumberField/useNumberField.d.ts +19 -65
  293. package/dist/src/internal/hooks/useOnClickOutside/useOnClickOutside.d.ts +5 -33
  294. package/dist/src/internal/hooks/useOpenCloseTransitionStates/useOpenCloseTransitionStates.d.ts +4 -28
  295. package/dist/src/internal/hooks/useOptionallyControlledState/useOptionallyControlledState.d.ts +2 -46
  296. package/dist/src/internal/hooks/useOptionsSections.d.ts +4 -9
  297. package/dist/src/internal/hooks/usePinnedOptions.d.ts +4 -24
  298. package/dist/src/internal/hooks/usePlatform/usePlatform.d.ts +3 -50
  299. package/dist/src/internal/hooks/usePopoverCloseDelayWorkaround/usePopoverCloseDelayWorkaround.d.ts +4 -0
  300. package/dist/src/internal/hooks/usePopoverTransitionStates/usePopoverTransitionStates.d.ts +1 -21
  301. package/dist/src/internal/hooks/usePrevious/usePrevious.d.ts +1 -0
  302. package/dist/src/internal/hooks/useProcessedOptions.d.ts +2 -3
  303. package/dist/src/internal/hooks/useSelectFieldLoading/useSelectFieldLoading.d.ts +18 -61
  304. package/dist/src/internal/hooks/useSelectOrchestration.d.ts +4 -3
  305. package/dist/src/internal/hooks/useToggleSelection.d.ts +3 -3
  306. package/dist/src/internal/hooks/useTypeAhead/useTypeAhead.d.ts +3 -11
  307. package/dist/src/internal/testing/anvPartsContract.d.ts +9 -9
  308. package/dist/src/internal/testing/prefersColorScheme.d.ts +7 -0
  309. package/dist/src/internal/testing/reactHostProps.d.ts +2 -2
  310. package/dist/src/internal/types/addNewItemTypes.d.ts +14 -16
  311. package/dist/src/internal/types/argTypes.d.ts +2 -0
  312. package/dist/src/internal/types/bulkActionTypes.d.ts +12 -41
  313. package/dist/src/internal/types/confirmationTypes.d.ts +6 -7
  314. package/dist/src/internal/types/optionContent.d.ts +6 -9
  315. package/dist/src/internal/types/props.d.ts +6 -1
  316. package/dist/src/internal/types/selectFieldInternalTypes.d.ts +10 -12
  317. package/dist/src/internal/utils/arrayIdsEqual.d.ts +1 -5
  318. package/dist/src/internal/utils/generateChromaticStickersheetProps.d.ts +4 -8
  319. package/dist/src/internal/utils/inlineMarkdownRegex.d.ts +0 -4
  320. package/dist/src/internal/utils/layerManager.d.ts +5 -28
  321. package/dist/src/internal/utils/uniquifySvgDomIds.d.ts +0 -2
  322. package/dist/src/providers/AnvilProvider/AnvilProvider.d.ts +4 -0
  323. package/dist/src/providers/AnvilProvider/AnvilProviderContext.d.ts +16 -6
  324. package/dist/src/providers/LocalizationProvider/LocalizationContext.d.ts +7 -0
  325. package/dist/src/providers/LocalizationProvider/LocalizationProvider.d.ts +6 -0
  326. package/dist/src/providers/LocalizationProvider/LocalizationStoryWrapper.d.ts +1 -0
  327. package/dist/src/providers/LocalizationProvider/useTranslations.d.ts +6 -0
  328. package/dist/src/providers/PortalProvider/PortalProvider.d.ts +1 -0
  329. package/dist/src/providers/PortalProvider/PortalProviderContext.d.ts +3 -0
  330. package/dist/src/providers/ThemeProvider/ThemeProvider.d.ts +16 -0
  331. package/dist/src/providers/ThemeProvider/index.d.ts +1 -1
  332. package/dist/src/providers/ThemeProvider/internal/ThemeProviderContext.d.ts +2 -0
  333. package/dist/src/providers/ThemeProvider/themeToCssVars.d.ts +3 -4
  334. package/dist/src/providers/ThemeProvider/useTheme.d.ts +5 -0
  335. package/dist/src/providers/TrackingProvider/TrackingProvider.d.ts +1 -0
  336. package/dist/src/providers/TrackingProvider/TrackingProviderContext.d.ts +7 -0
  337. package/dist/src/providers/TrackingProvider/useTrackingContext.d.ts +5 -0
  338. package/dist/src/themes/carto.d.ts +3 -43
  339. package/dist/src/types/DataTrackingId.d.ts +1 -0
  340. package/dist/src/types/DistributiveOmit.d.ts +1 -14
  341. package/dist/src/types/MaxLengthCounterProps.d.ts +4 -0
  342. package/dist/src/types/PassThroughProps.d.ts +3 -0
  343. package/dist/src/types/ai-marks.d.ts +14 -45
  344. package/dist/src/types/ianaZones.d.ts +2 -0
  345. package/dist/src/types/locales.d.ts +1 -0
  346. package/dist/src/types/props.d.ts +14 -16
  347. package/dist/{stripInlineMarkdown-82hVO9EP.js → stripInlineMarkdown-CosQSmBr.js} +2 -2
  348. package/dist/stripInlineMarkdown-CosQSmBr.js.map +1 -0
  349. package/dist/{syncFilterUtils-CMH8ApTo.js → syncFilterUtils-_uwyt6FD.js} +20 -19
  350. package/dist/syncFilterUtils-_uwyt6FD.js.map +1 -0
  351. package/dist/themes.js.map +1 -1
  352. package/dist/token/core/component-variables.scss +156 -0
  353. package/dist/token/core/component.d.ts +78 -0
  354. package/dist/token/core/component.js +1018 -0
  355. package/dist/token/core/component.scss +82 -0
  356. package/dist/token.js +1096 -0
  357. package/dist/token.js.map +1 -1
  358. package/dist/{treeSync-8byHuYib.js → treeSync-Bp80Xduj.js} +4 -4
  359. package/dist/{treeSync-8byHuYib.js.map → treeSync-Bp80Xduj.js.map} +1 -1
  360. package/dist/useAccessibleColor-BYKjkGRg.js.map +1 -1
  361. package/dist/useBreakpoint-BBNRlMGZ.js.map +1 -1
  362. package/dist/useDebouncedCallback-DLkapjcP.js.map +1 -1
  363. package/dist/useDialogScrollLock-BW-aVboo.js.map +1 -1
  364. package/dist/{useDrilldown-CicFEJpD.js → useDrilldown-D5XGfAUT.js} +3 -3
  365. package/dist/{useDrilldown-CicFEJpD.js.map → useDrilldown-D5XGfAUT.js.map} +1 -1
  366. package/dist/useFocusWithin-hi77jsrB.js.map +1 -1
  367. package/dist/{useInfiniteCombobox-BS7W8JkW.js → useInfiniteCombobox-ORhH44Rp.js} +7 -7
  368. package/dist/{useInfiniteCombobox-BS7W8JkW.js.map → useInfiniteCombobox-ORhH44Rp.js.map} +1 -1
  369. package/dist/{useInitialFocus-BIvXK1Rp.js → useInitialFocus-CGybEc6x.js} +2 -6
  370. package/dist/useInitialFocus-CGybEc6x.js.map +1 -0
  371. package/dist/useIntersectionObserver-BEmMDO3P.js.map +1 -1
  372. package/dist/{useInvalidateOnOptionsChange-BKKS9HXb.js → useInvalidateOnOptionsChange-ieSgbkwT.js} +5 -5
  373. package/dist/useInvalidateOnOptionsChange-ieSgbkwT.js.map +1 -0
  374. package/dist/useLayoutPropsUtil-DjqeAJZ9.js.map +1 -1
  375. package/dist/useMergeRefs-Dfmtq9cI.js.map +1 -1
  376. package/dist/useNumberField-CXFYUZ_n.js.map +1 -1
  377. package/dist/useOnClickOutside-Zw5vzxSq.js.map +1 -1
  378. package/dist/useOptionallyControlledState-DbDuos5L.js.map +1 -1
  379. package/dist/{usePopoverTransitionStates-B1opfxxn.js → usePopoverTransitionStates-CDXCdyKa.js} +2 -1
  380. package/dist/usePopoverTransitionStates-CDXCdyKa.js.map +1 -0
  381. package/dist/usePrefersColorScheme-CwOF0TjZ.js.map +1 -1
  382. package/dist/usePrefersReducedMotion-DR9B_D6w.js.map +1 -1
  383. package/dist/usePrevious-Bvq-5auG.js.map +1 -1
  384. package/dist/useSize.js.map +1 -1
  385. package/dist/useSwipe-Cp-CJxLU.js.map +1 -1
  386. package/dist/useTheme-B4i6a3bM.js.map +1 -1
  387. package/dist/useTrackingContext-C522P4sv.js.map +1 -1
  388. package/dist/useTrackingId.js.map +1 -1
  389. package/dist/warnOnce-Y9PRHcU4.js.map +1 -1
  390. package/package.json +3 -3
  391. package/dist/AnvilProvider-DcYAaAvs.js.map +0 -1
  392. package/dist/Avatar-D31JDNrs.js.map +0 -1
  393. package/dist/Calendar-DnK6UwPE.js.map +0 -1
  394. package/dist/Chip-AILbiVZ6.js.map +0 -1
  395. package/dist/DataTable-BE1YvSto.js.map +0 -1
  396. package/dist/FieldLabel-CYCk2rz-.js.map +0 -1
  397. package/dist/FilterBar-XMZ-Q-aW.js.map +0 -1
  398. package/dist/ListView-Bkv1ZCSu.js.map +0 -1
  399. package/dist/Listbox-BWy_uBqm.js.map +0 -1
  400. package/dist/MenuFooter--lBF8OjJ.js.map +0 -1
  401. package/dist/MultiSelectFieldSync-C57Hms2z.js.map +0 -1
  402. package/dist/SelectFieldLabel-CcX2GAym.js.map +0 -1
  403. package/dist/SelectOptions-BkqBzRiG.js.map +0 -1
  404. package/dist/TimeField-DpnX_t31.js.map +0 -1
  405. package/dist/YearlessDateInputWithPicker-CuHWd_Vp.js.map +0 -1
  406. package/dist/anvParts-BGg5dgfl.js +0 -43
  407. package/dist/anvParts-BGg5dgfl.js.map +0 -1
  408. package/dist/bulkActionTypes-cnslVUIT.js.map +0 -1
  409. package/dist/downshift.esm-xtSnQp44.js.map +0 -1
  410. package/dist/stripInlineMarkdown-82hVO9EP.js.map +0 -1
  411. package/dist/syncFilterUtils-CMH8ApTo.js.map +0 -1
  412. package/dist/useInitialFocus-BIvXK1Rp.js.map +0 -1
  413. package/dist/useInvalidateOnOptionsChange-BKKS9HXb.js.map +0 -1
  414. package/dist/usePopoverTransitionStates-B1opfxxn.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { D as DateTime, I as Info } from './luxon-wpz4A-OQ.js';
3
- import { createContext, useContext, forwardRef, useState, useEffect, useRef, useCallback, useMemo, useId } from 'react';
3
+ import { createContext, useContext, forwardRef, useRef, useCallback, useEffect, useState, useMemo, useId } from 'react';
4
4
  import { B as Button } from './Button-Dwh_Nd4l.js';
5
5
  import { S as SvgKeyboardArrowDown } from './keyboard_arrow_down-C8WQ38p1.js';
6
6
  import { S as SvgKeyboardArrowUp } from './keyboard_arrow_up-CxzK6LAl.js';
@@ -10,7 +10,7 @@ import { S as SvgKeyboardArrowRight } from './keyboard_arrow_right-DMloHg_F.js';
10
10
  import { S as SrOnly } from './SrOnly-pnf8ajnh.js';
11
11
  import { u as useSwipe } from './useSwipe-Cp-CJxLU.js';
12
12
  import { G as Grid } from './Grid-CvGQrIhE.js';
13
- import { S as SelectCard } from './SelectCard-BGTB3ay0.js';
13
+ import { S as SelectCard } from './SelectCard-bp5hRyHK.js';
14
14
  import { u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
15
15
  import { w as warnOnce } from './warnOnce-Y9PRHcU4.js';
16
16
  import { u as useVirtualizer } from './index-DXeGMe23.js';
@@ -191,42 +191,42 @@ const CalendarYearButton = forwardRef((props, ref) => {
191
191
  });
192
192
  CalendarYearButton.displayName = "CalendarYearButton";
193
193
 
194
- const calendar = "_calendar_vutdc_1";
195
- const grid = "_grid_vutdc_18";
196
- const header = "_header_vutdc_23";
197
- const controller = "_controller_vutdc_46";
198
- const spacer = "_spacer_vutdc_59";
199
- const cell = "_cell_vutdc_74";
200
- const weekday = "_weekday_vutdc_119";
201
- const range = "_range_vutdc_162";
202
- const overflow = "_overflow_vutdc_168";
203
- const selected = "_selected_vutdc_172";
204
- const pip = "_pip_vutdc_254";
194
+ const calendar = "_calendar_uesx5_1";
195
+ const grid = "_grid_uesx5_18";
196
+ const header = "_header_uesx5_23";
197
+ const controller = "_controller_uesx5_46";
198
+ const spacer = "_spacer_uesx5_62";
199
+ const cell = "_cell_uesx5_77";
200
+ const weekday = "_weekday_uesx5_122";
201
+ const range = "_range_uesx5_165";
202
+ const overflow = "_overflow_uesx5_171";
203
+ const selected = "_selected_uesx5_175";
204
+ const pip = "_pip_uesx5_257";
205
205
  const styles$1 = {
206
206
  calendar: calendar,
207
207
  grid: grid,
208
208
  header: header,
209
209
  controller: controller,
210
- "controller-button": "_controller-button_vutdc_55",
210
+ "controller-button": "_controller-button_uesx5_55",
211
211
  spacer: spacer,
212
- "day-grid": "_day-grid_vutdc_63",
212
+ "day-grid": "_day-grid_uesx5_66",
213
213
  cell: cell,
214
214
  weekday: weekday,
215
- "month-selection": "_month-selection_vutdc_133",
216
- "selection-checkbox": "_selection-checkbox_vutdc_133",
217
- "selection-card": "_selection-card_vutdc_143",
218
- "year-selector": "_year-selector_vutdc_155",
219
- "range-first": "_range-first_vutdc_162",
220
- "range-last": "_range-last_vutdc_162",
215
+ "month-selection": "_month-selection_uesx5_136",
216
+ "selection-checkbox": "_selection-checkbox_uesx5_136",
217
+ "selection-card": "_selection-card_uesx5_146",
218
+ "year-selector": "_year-selector_uesx5_158",
219
+ "range-first": "_range-first_uesx5_165",
220
+ "range-last": "_range-last_uesx5_165",
221
221
  range: range,
222
222
  overflow: overflow,
223
223
  selected: selected,
224
- "is-unavailable": "_is-unavailable_vutdc_181",
225
- "hover-last": "_hover-last_vutdc_206",
226
- "has-metadata": "_has-metadata_vutdc_249",
224
+ "is-unavailable": "_is-unavailable_uesx5_184",
225
+ "hover-last": "_hover-last_uesx5_209",
226
+ "has-metadata": "_has-metadata_uesx5_252",
227
227
  pip: pip,
228
- "range-fill": "_range-fill_vutdc_267",
229
- "range-disabled": "_range-disabled_vutdc_278"
228
+ "range-fill": "_range-fill_uesx5_270",
229
+ "range-disabled": "_range-disabled_uesx5_281"
230
230
  };
231
231
 
232
232
  const CalendarPrev = forwardRef(
@@ -239,13 +239,9 @@ const CalendarPrev = forwardRef(
239
239
  setSelectedMonth,
240
240
  setSelectedYear
241
241
  } = useCalendar();
242
- const [disabled, setDisabled] = useState(false);
243
- useEffect(() => {
244
- setDisabled(
245
- minDate != null && focusedDate.minus({ month: 1 }).endOf("month") < minDate
246
- );
247
- }, [minDate, focusedDate]);
242
+ const isDisabled = minDate != null && focusedDate.minus({ month: 1 }).endOf("month") < minDate;
248
243
  const onClickHandler = (e) => {
244
+ if (isDisabled) return;
249
245
  onClick?.(e);
250
246
  const targetMonth = focusedDate.minus({ month: 1 }).endOf("month");
251
247
  const targetDate = focusedDate.minus({ month: 1 });
@@ -286,7 +282,7 @@ const CalendarPrev = forwardRef(
286
282
  "data-anv": "calendar-prev",
287
283
  "aria-label": "Previous Month",
288
284
  ...rest,
289
- disabled
285
+ "aria-disabled": isDisabled || void 0
290
286
  }
291
287
  );
292
288
  }
@@ -303,13 +299,9 @@ const CalendarNext = forwardRef(
303
299
  setSelectedMonth,
304
300
  setSelectedYear
305
301
  } = useCalendar();
306
- const [disabled, setDisabled] = useState(false);
307
- useEffect(() => {
308
- setDisabled(
309
- maxDate != null && focusedDate.plus({ month: 1 }).startOf("month") > maxDate
310
- );
311
- }, [maxDate, focusedDate]);
302
+ const isDisabled = maxDate != null && focusedDate.plus({ month: 1 }).startOf("month") > maxDate;
312
303
  const onClickHandler = (e) => {
304
+ if (isDisabled) return;
313
305
  onClick?.(e);
314
306
  const targetMonth = focusedDate.plus({ month: 1 }).startOf("month");
315
307
  const targetDate = focusedDate.plus({ month: 1 });
@@ -350,7 +342,7 @@ const CalendarNext = forwardRef(
350
342
  "data-anv": "calendar-next",
351
343
  ref,
352
344
  ...rest,
353
- disabled
345
+ "aria-disabled": isDisabled || void 0
354
346
  }
355
347
  );
356
348
  }
@@ -1834,4 +1826,4 @@ const Calendar = Object.assign(
1834
1826
  Calendar.displayName = "Calendar";
1835
1827
 
1836
1828
  export { CalendarBetaPropsContext as C, Calendar as a, CalendarNow as b, CalendarYearButton as c, CalendarPrev as d, CalendarNext as e, CalendarMonthButton as f, CalendarMonth as g, useCalendarBetaProps as u };
1837
- //# sourceMappingURL=Calendar-DnK6UwPE.js.map
1829
+ //# sourceMappingURL=Calendar-CK-AAaSG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Calendar-CK-AAaSG.js","sources":["../src/components/Calendar/CalendarContext.tsx","../src/components/Calendar/internal/utils.ts","../src/components/Calendar/CalendarNowButton.tsx","../src/components/Calendar/CalendarYearButton.tsx","../src/components/Calendar/CalendarPrevButton.tsx","../src/components/Calendar/CalendarNextButton.tsx","../src/components/Calendar/CalendarMonthButton.tsx","../src/components/Calendar/internal/CalendarDay.tsx","../src/components/Calendar/internal/CalendarWeek.tsx","../src/components/Calendar/CalendarMonth.tsx","../src/internal/components/YearSelector/internal/useYearSelectorKeys.ts","../src/internal/components/YearSelector/internal/YearItem.tsx","../src/internal/components/YearSelector/YearSelector.tsx","../src/components/Calendar/internal/CalendarMonthSelection.tsx","../src/beta/components/Calendar/CalendarBetaPropsContext.tsx","../src/beta/components/Calendar/useCalendarBetaProps.tsx","../src/components/Calendar/Calendar.tsx"],"sourcesContent":["import {\n createContext,\n type Dispatch,\n type SetStateAction,\n useContext,\n} from \"react\";\nimport type {\n CalendarProps,\n CalendarRangeValue,\n CalendarValue,\n} from \"./Calendar\";\nimport type { DateTime } from \"luxon\";\nimport type { IanaZone } from \"../../types\";\n\ntype CalendarContextCommonProps = {\n /**\n * Whether the calendar should focus on the focused date.\n */\n disableAutofocus: boolean;\n /**\n * The focused date. Used to determine what month and year is currently selected.\n */\n focusedDate: DateTime;\n /**\n * The function to call when the focused date changes.\n *\n * @param date - The date that is focused.\n */\n setFocusedDate: Dispatch<\n SetStateAction<CalendarContextCommonProps[\"focusedDate\"]>\n >;\n /**\n * The selected month. Used to determine what month is currently selected in the month button.\n */\n selectedMonth: DateTime[\"month\"];\n /**\n * The function to call when the selected month changes.\n *\n * @param month - The month that is selected.\n */\n setSelectedMonth: Dispatch<\n SetStateAction<CalendarContextCommonProps[\"selectedMonth\"]>\n >;\n /**\n * The selected year. Used to determine what year is currently selected in the year button.\n */\n selectedYear: DateTime[\"year\"];\n /**\n * The function to call when the selected year changes.\n *\n * @param year - The year that is selected.\n */\n setSelectedYear: Dispatch<\n SetStateAction<CalendarContextCommonProps[\"selectedYear\"]>\n >;\n /**\n * The hovered date. Used to determine what date is currently hovered over.\n */\n hoveredDate: DateTime;\n setHoveredDate: Dispatch<\n SetStateAction<CalendarContextCommonProps[\"hoveredDate\"] | undefined>\n >;\n /**\n * The default time zone to use for the calendar.\n */\n defaultTimeZone: IanaZone;\n /**\n * The minimum date allowed.\n */\n minDate: DateTime | null;\n /**\n * The maximum date allowed.\n */\n maxDate: DateTime | null;\n /**\n * The days of the week and dates that are unavailable.\n */\n unavailable: {\n /**\n * The specific dates that are unavailable.\n */\n dates: Set<string>;\n /**\n * The days of the week that are unavailable.\n */\n daysOfWeek: Set<number>;\n };\n /**\n * The locale to use for the calendar.\n */\n locale: Exclude<CalendarProps[\"locale\"], undefined>;\n /**\n * The id of the calendar.\n */\n id: string;\n /**\n * The date format to use for the calendar.\n */\n dateFormat: Intl.DateTimeFormatOptions;\n /**\n * The day of the week to start the calendar on.\n */\n startDay: \"Sunday\" | \"Monday\";\n /**\n * Whether the calendar is controlled.\n */\n controlled?: boolean;\n /**\n * The date metadata to determine if a date has a pip associated with it.\n */\n dateMetadata?: Map<string, string>;\n};\n\nexport type CalendarSingleContextProps = CalendarContextCommonProps & {\n /**\n * The value of the calendar.\n */\n value: DateTime | null;\n /**\n * The function to call when the value changes.\n */\n setValue: Dispatch<SetStateAction<CalendarSingleContextProps[\"value\"]>>;\n /**\n * The function to call when the selection changes.\n *\n * @param data - The data to pass to the function.\n */\n onSelection?: (data: { value: CalendarValue }) => void;\n /**\n * Whether the calendar is in range mode.\n */\n range?: false;\n};\nexport type CalendarRangeContextProps = CalendarContextCommonProps & {\n /**\n * The value of the calendar.\n */\n value: { start?: DateTime | null; end?: DateTime | null };\n /**\n * The function to call when the value changes.\n */\n setValue: Dispatch<SetStateAction<CalendarRangeContextProps[\"value\"]>>;\n /**\n * The function to call when the selection changes.\n *\n * @param data - The data to pass to the function.\n */\n onSelection?: (data: { value: CalendarRangeValue }) => void;\n /**\n * Whether the calendar is in range mode.\n */\n range: true;\n};\n\nexport type CalendarContextProps =\n | CalendarSingleContextProps\n | CalendarRangeContextProps;\n\n/**\n * The context for the calendar.\n */\nexport const CalendarContext = createContext<CalendarContextProps | null>(null);\n\n/**\n * A hook to access the calendar context.\n *\n * @returns The calendar context.\n */\nexport function useCalendar(): CalendarContextProps {\n const context = useContext(CalendarContext);\n if (!context) {\n throw new Error(\"useCalendar must be used within a <Calendar>\");\n }\n return context;\n}\n","import type {\n CalendarContextProps,\n CalendarRangeContextProps,\n} from \"../CalendarContext\";\nimport { DateTime } from \"luxon\";\n\nexport const isSameDay = (d1?: DateTime | null, d2?: DateTime | null) => {\n if (!d1 || !d2) return undefined;\n try {\n if (\n d1.hasSame(d2, \"month\") &&\n d1.hasSame(d2, \"year\") &&\n d1.hasSame(d2, \"day\")\n ) {\n return true;\n }\n return false;\n } catch {\n return false;\n }\n};\n\nexport const isSameMonth = (d1?: DateTime | null, d2?: DateTime | null) => {\n if (!d1 || !d2) return undefined;\n if (d1.hasSame(d2, \"month\") && d1.hasSame(d2, \"year\")) return true;\n return false;\n};\n\nexport const isSameYear = (d1?: DateTime | null, d2?: DateTime | null) => {\n if (!d1 || !d2) return undefined;\n if (d1.hasSame(d2, \"year\")) return true;\n return false;\n};\n\nexport const isUnavailableDate = (\n n: DateTime,\n unavailable: CalendarContextProps[\"unavailable\"],\n timeZone: string,\n) => {\n const tmpSet = new Set();\n unavailable.dates?.forEach((date) => {\n tmpSet.add(toDateString(DateTime.fromISO(date, { zone: timeZone })));\n });\n if (unavailable.daysOfWeek?.has(n.weekday)) {\n return true;\n }\n const dateISO = n.toISO();\n if (!dateISO) return;\n return tmpSet.has(\n toDateString(DateTime.fromISO(dateISO, { zone: timeZone })),\n );\n};\n\nexport const isBeyondMinDate = (\n n: DateTime,\n minDate: CalendarContextProps[\"minDate\"],\n) => minDate && minDate.toMillis() > n.toMillis();\n\nexport const isBeyondMaxDate = (\n n: DateTime,\n maxDate: CalendarContextProps[\"maxDate\"],\n) => maxDate && maxDate.toMillis() < n.toMillis();\n\nexport const isValidDate = (\n n: DateTime | undefined,\n minDate = \"\",\n maxDate = \"\",\n unavailable: CalendarContextProps[\"unavailable\"],\n timeZone: string,\n) => {\n if (!n) return false;\n const normalizedMinDate = normalizeDate(minDate, timeZone);\n const normalizedMaxDate = normalizeDate(maxDate, timeZone);\n if (normalizedMinDate && isBeyondMinDate(n, normalizedMinDate)) return false;\n if (normalizedMaxDate && isBeyondMaxDate(n, normalizedMaxDate)) return false;\n return !isUnavailableDate(n, unavailable, timeZone);\n};\n\nexport const normalizeDate = (date: string, defaultTimeZone: string) => {\n return DateTime.fromISO(date, { zone: defaultTimeZone }).startOf(\"day\");\n};\n\nexport const toDateString = (date: DateTime<boolean>) =>\n date.startOf(\"day\").toISO();\n\nexport function rangeUpdater(\n value: CalendarRangeContextProps[\"value\"],\n newDate: DateTime,\n setValue: CalendarRangeContextProps[\"setValue\"],\n onSelection: CalendarRangeContextProps[\"onSelection\"],\n) {\n if (value.start && isSameDay(value.start, newDate) && !value.end) {\n setValue((prev) => {\n return { ...prev, end: newDate };\n });\n onSelection?.({\n value: {\n start: toDateString(value.start) ?? undefined,\n end: toDateString(newDate) ?? undefined,\n },\n });\n return;\n }\n if (\n (!value.start && !value.end) ||\n (value.start && value.end) ||\n (value.start &&\n !value.end &&\n value.start.startOf(\"day\").toMillis() > newDate.startOf(\"day\").toMillis())\n ) {\n setValue({ start: newDate, end: null });\n onSelection?.({\n value: {\n start: toDateString(newDate) ?? undefined,\n end: undefined,\n },\n });\n return;\n }\n if (\n value.start &&\n !value.end &&\n value.start.startOf(\"day\").toMillis() < newDate.startOf(\"day\").toMillis()\n ) {\n setValue((prev) => {\n return { ...prev, end: newDate };\n });\n onSelection?.({\n value: {\n start: toDateString(value.start) ?? undefined,\n end: toDateString(newDate) ?? undefined,\n },\n });\n return;\n }\n if (!value.start && value.end) {\n setValue((prev) => {\n return { ...prev, start: newDate };\n });\n onSelection?.({\n value: {\n start: toDateString(newDate) ?? undefined,\n end: toDateString(value.end) ?? undefined,\n },\n });\n return;\n }\n}\n\nexport const getDateMetadata = (\n date: DateTime,\n dateMetadata: Map<string, string> | undefined,\n): string | undefined => {\n if (!dateMetadata) return undefined;\n const dateString = date.toISODate(); // Returns \"2024-01-15\" format\n return dateString ? dateMetadata.get(dateString) : undefined;\n};\n","import { DateTime } from \"luxon\";\nimport { Button, type ButtonProps } from \"../Button\";\nimport { useCalendar } from \"./CalendarContext\";\nimport { type MouseEvent, type MouseEventHandler, forwardRef } from \"react\";\nimport {\n isBeyondMaxDate,\n isBeyondMinDate,\n isUnavailableDate,\n rangeUpdater,\n toDateString,\n} from \"./internal/utils\";\n\nexport type CalendarNowProps = {\n /**\n * @deprecated This is overridden internally\n */\n onClick?: (e: MouseEvent<HTMLButtonElement>, date: string | null) => void;\n onClickFixed?: MouseEventHandler<HTMLButtonElement> | undefined;\n} & Omit<ButtonProps, \"onClick\">;\n\n/**\n * A button that displays the current date and allows the user to select it.\n *\n * @param props - The rest of the props for the Button component.\n * @returns A button that displays the current date and allows the user to select it.\n */\nexport const CalendarNow = forwardRef<HTMLButtonElement, CalendarNowProps>(\n (props, ref) => {\n const { onClick, onClickFixed, ...rest } = props;\n const {\n setFocusedDate,\n setSelectedMonth,\n setSelectedYear,\n value,\n setValue,\n defaultTimeZone,\n unavailable,\n onSelection,\n minDate,\n maxDate,\n controlled,\n range,\n } = useCalendar();\n\n const nToday = DateTime.fromISO(DateTime.now().toISO(), {\n zone: defaultTimeZone,\n }).startOf(\"day\");\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n onClickFixed?.(e);\n setFocusedDate(nToday);\n setSelectedMonth(nToday.month);\n setSelectedYear(nToday.year);\n if (!range) {\n onSelection?.({\n value: toDateString(nToday) ?? undefined,\n });\n if (!controlled) {\n setValue(nToday);\n }\n return;\n }\n rangeUpdater(value, nToday, setValue, onSelection);\n };\n\n const isDisabled =\n isBeyondMaxDate(nToday, maxDate) ||\n isBeyondMinDate(nToday, minDate) ||\n isUnavailableDate(nToday, unavailable, defaultTimeZone);\n\n return (\n <Button\n ref={ref}\n onClick={onClickHandler}\n appearance=\"ghost\"\n disabled={isDisabled}\n data-anv=\"calendar-now\"\n size=\"small\"\n {...rest}\n >\n Today\n </Button>\n );\n },\n);\n\nCalendarNow.displayName = \"CalendarNowButton\";\n","import { Button, type ButtonProps } from \"../Button\";\nimport { useCalendar } from \"./CalendarContext\";\nimport { forwardRef } from \"react\";\nimport IconKeyboardArrowDown from \"@servicetitan/hammer-icon/mdi/round/keyboard_arrow_down.svg\";\nimport IconKeyboardArrowUp from \"@servicetitan/hammer-icon/mdi/round/keyboard_arrow_up.svg\";\nimport { DateTime } from \"luxon\";\n\nexport type CalendarYearButtonProps = ButtonProps & {\n /**\n * The current selection state of the calendar.\n */\n calendarSelectionState: \"day\" | \"month\" | \"year\";\n};\n\n/**\n * A button that displays the current year and allows the user to select a different year.\n *\n * @param props.calendarSelectionState - The current selection state of the calendar.\n * @param props - The rest of the props for the Button component.\n * @returns A button that displays the current year and allows the user to select a different year.\n */\nexport const CalendarYearButton = forwardRef<\n HTMLButtonElement,\n CalendarYearButtonProps\n>((props, ref) => {\n const { calendarSelectionState, ...rest } = props;\n const { selectedYear, locale } = useCalendar();\n\n const currentYear = DateTime.fromObject({ year: selectedYear })\n .setLocale(locale)\n .toLocaleString({ year: \"numeric\" });\n\n return (\n <Button\n ref={ref}\n appearance=\"ghost\"\n size=\"small\"\n icon={{\n after:\n calendarSelectionState === \"year\"\n ? IconKeyboardArrowUp\n : IconKeyboardArrowDown,\n }}\n {...rest}\n >\n {currentYear}\n </Button>\n );\n});\n\nCalendarYearButton.displayName = \"CalendarYearButton\";\n","import { Button, type ButtonProps } from \"../Button\";\nimport { useCalendar } from \"./CalendarContext\";\nimport { type MouseEvent, forwardRef } from \"react\";\nimport Prev from \"@servicetitan/hammer-icon/mdi/round/keyboard_arrow_left.svg\";\nimport styles from \"./Calendar.module.scss\";\nimport { isSameMonth } from \"./internal/utils\";\nimport cx from \"classnames\";\n\nexport type CalendarPrevProps = ButtonProps;\n\n/**\n * A button that displays the previous month and allows the user to select a different month.\n *\n * @param props.onClick - The function to call when the button is clicked.\n * @param props.className - The class name to apply to the button.\n * @param props - The rest of the props for the Button component.\n * @returns A button that displays the previous month and allows the user to select a different month.\n */\nexport const CalendarPrev = forwardRef<HTMLButtonElement, CalendarPrevProps>(\n (props, ref) => {\n const { onClick, className, ...rest } = props;\n const {\n focusedDate,\n setFocusedDate,\n minDate,\n setSelectedMonth,\n setSelectedYear,\n } = useCalendar();\n\n const isDisabled =\n minDate != null &&\n focusedDate.minus({ month: 1 }).endOf(\"month\") < minDate;\n\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n if (isDisabled) return;\n\n onClick?.(e);\n\n const targetMonth = focusedDate.minus({ month: 1 }).endOf(\"month\");\n const targetDate = focusedDate.minus({ month: 1 });\n\n // Check if we're crossing year boundary (January to December)\n const isCrossingYearBoundary =\n focusedDate.month === 1 && targetDate.month === 12;\n\n if (minDate !== null) {\n if (targetDate.toMillis() >= minDate?.toMillis()) {\n setFocusedDate(targetDate);\n setSelectedMonth(targetDate.month);\n if (isCrossingYearBoundary) {\n setSelectedYear(targetDate.year);\n }\n return;\n }\n\n if (!isSameMonth(targetMonth, focusedDate)) {\n setFocusedDate(minDate);\n setSelectedMonth(minDate.month);\n if (isCrossingYearBoundary) {\n setSelectedYear(minDate.year);\n }\n }\n return;\n }\n setFocusedDate(targetDate);\n setSelectedMonth(targetDate.month);\n if (isCrossingYearBoundary) {\n setSelectedYear(targetDate.year);\n }\n };\n\n return (\n <Button\n ref={ref}\n onClick={onClickHandler}\n className={cx(styles[\"controller-button\"], className)}\n appearance=\"ghost\"\n size=\"small\"\n icon={Prev}\n data-anv=\"calendar-prev\"\n aria-label=\"Previous Month\"\n {...rest}\n aria-disabled={isDisabled || undefined}\n />\n );\n },\n);\n\nCalendarPrev.displayName = \"CalendarPrevButton\";\n","import { Button, type ButtonProps } from \"../Button\";\nimport { useCalendar } from \"./CalendarContext\";\nimport { type MouseEvent, forwardRef } from \"react\";\nimport Next from \"@servicetitan/hammer-icon/mdi/round/keyboard_arrow_right.svg\";\nimport { isSameMonth } from \"./internal/utils\";\nimport cx from \"classnames\";\nimport styles from \"./Calendar.module.scss\";\n\nexport type CalendarNextProps = ButtonProps;\n\n/**\n * A button that displays the next month and allows the user to select a different month.\n *\n * @param props.onClick - The function to call when the button is clicked.\n * @param props.className - The class name to apply to the button.\n * @param props - The rest of the props for the Button component.\n * @returns A button that displays the next month and allows the user to select a different month.\n */\nexport const CalendarNext = forwardRef<HTMLButtonElement, CalendarNextProps>(\n (props, ref) => {\n const { onClick, className, ...rest } = props;\n const {\n focusedDate,\n setFocusedDate,\n maxDate,\n setSelectedMonth,\n setSelectedYear,\n } = useCalendar();\n\n const isDisabled =\n maxDate != null &&\n focusedDate.plus({ month: 1 }).startOf(\"month\") > maxDate;\n\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n if (isDisabled) return;\n\n onClick?.(e);\n\n const targetMonth = focusedDate.plus({ month: 1 }).startOf(\"month\");\n const targetDate = focusedDate.plus({ month: 1 });\n\n // Check if we're crossing year boundary (December to January)\n const isCrossingYearBoundary =\n focusedDate.month === 12 && targetDate.month === 1;\n\n if (maxDate !== null) {\n if (targetDate.toMillis() <= maxDate?.toMillis()) {\n setFocusedDate(targetDate);\n setSelectedMonth(targetDate.month);\n if (isCrossingYearBoundary) {\n setSelectedYear(targetDate.year);\n }\n return;\n }\n\n if (!isSameMonth(targetMonth, focusedDate)) {\n setFocusedDate(maxDate);\n setSelectedMonth(maxDate.month);\n if (isCrossingYearBoundary) {\n setSelectedYear(maxDate.year);\n }\n }\n return;\n }\n setFocusedDate(targetDate);\n setSelectedMonth(targetDate.month);\n if (isCrossingYearBoundary) {\n setSelectedYear(targetDate.year);\n }\n };\n\n return (\n <Button\n onClick={onClickHandler}\n appearance=\"ghost\"\n size=\"small\"\n className={cx(styles[\"controller-button\"], className)}\n icon={Next}\n aria-label=\"Next Month\"\n data-anv=\"calendar-next\"\n ref={ref}\n {...rest}\n aria-disabled={isDisabled || undefined}\n />\n );\n },\n);\n\nCalendarNext.displayName = \"CalendarNextButton\";\n","import { Button, type ButtonProps } from \"../Button\";\nimport { useCalendar } from \"./CalendarContext\";\nimport { forwardRef } from \"react\";\nimport IconKeyboardArrowDown from \"@servicetitan/hammer-icon/mdi/round/keyboard_arrow_down.svg\";\nimport IconKeyboardArrowUp from \"@servicetitan/hammer-icon/mdi/round/keyboard_arrow_up.svg\";\nimport { DateTime } from \"luxon\";\n\nexport type CalendarMonthButtonProps = ButtonProps & {\n /**\n * The current selection state of the calendar.\n */\n calendarSelectionState: \"day\" | \"month\" | \"year\";\n};\n\n/**\n * A button that displays the current month and allows the user to select a different month.\n *\n * @param props.calendarSelectionState - The current selection state of the calendar.\n * @param props.onClick - The function to call when the button is clicked.\n * @param props - The rest of the props for the Button component.\n * @returns A button that displays the current month and allows the user to select a different month.\n */\nexport const CalendarMonthButton = forwardRef<\n HTMLButtonElement,\n CalendarMonthButtonProps\n>((props, ref) => {\n const { calendarSelectionState, onClick, ...rest } = props;\n const { selectedMonth, locale } = useCalendar();\n\n const currentMonth = DateTime.fromObject({ month: selectedMonth })\n .setLocale(locale)\n .toFormat(\"MMM\");\n\n return (\n <Button\n ref={ref}\n appearance=\"ghost\"\n size=\"small\"\n onClick={onClick}\n icon={{\n after:\n calendarSelectionState === \"month\"\n ? IconKeyboardArrowUp\n : IconKeyboardArrowDown,\n }}\n {...rest}\n >\n {currentMonth}\n </Button>\n );\n});\n\nCalendarMonthButton.displayName = \"CalendarMonthButton\";\n","import { useCalendar } from \"../CalendarContext\";\nimport {\n type ComponentPropsWithoutRef,\n type KeyboardEvent,\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport cx from \"classnames\";\nimport styles from \"../Calendar.module.scss\";\nimport { type DateTime, Info } from \"luxon\";\nimport {\n isBeyondMaxDate,\n isBeyondMinDate,\n isSameDay,\n isSameMonth,\n isUnavailableDate,\n rangeUpdater,\n toDateString,\n getDateMetadata,\n} from \"./utils\";\n\nexport type CalendarDayProps = ComponentPropsWithoutRef<\"td\"> & {\n /**\n * The date to display.\n */\n date: DateTime;\n};\n\n/**\n * A component that displays a day in the calendar.\n *\n * @param props.date - The date to display.\n * @param props - The rest of the props for the td element.\n * @returns A component that displays a day in the calendar.\n */\nexport const CalendarDay = forwardRef<HTMLTableCellElement, CalendarDayProps>(\n (props, ref) => {\n const { className, date, ...rest } = props;\n const context = useCalendar();\n const {\n disableAutofocus,\n value,\n setValue,\n focusedDate,\n setFocusedDate,\n hoveredDate,\n setHoveredDate,\n onSelection,\n locale,\n minDate,\n maxDate,\n unavailable,\n defaultTimeZone,\n controlled,\n id: uid,\n range,\n dateFormat,\n startDay,\n setSelectedMonth,\n setSelectedYear,\n dateMetadata,\n } = context;\n\n const initialized = useRef(false);\n\n const futureDateSelection = useCallback(\n (targetDate: DateTime) => {\n if (maxDate !== null && targetDate.toMillis() > maxDate?.toMillis()) {\n return;\n }\n\n if (isUnavailableDate(targetDate, unavailable, defaultTimeZone)) {\n let nextFocusDate = targetDate.plus({ days: 1 });\n for (let i = 0; i < 365; i++) {\n if (\n maxDate !== null &&\n nextFocusDate.toMillis() > maxDate?.toMillis()\n ) {\n break;\n }\n if (\n isUnavailableDate(nextFocusDate, unavailable, defaultTimeZone)\n ) {\n nextFocusDate = nextFocusDate.plus({ days: 1 });\n } else {\n // setHoveredDate(nextFocusDate);\n setFocusedDate(nextFocusDate);\n break;\n }\n }\n return;\n }\n\n setFocusedDate(targetDate);\n\n if (targetDate.month !== focusedDate.month) {\n setSelectedMonth(targetDate.month);\n if (targetDate.year !== focusedDate.year) {\n setSelectedYear(targetDate.year);\n }\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps -- we don't need to re-render when the selected month or year changes\n [maxDate, setFocusedDate, defaultTimeZone, unavailable],\n );\n\n const pastDateSelection = (targetDate: DateTime) => {\n if (minDate !== null && targetDate.toMillis() < minDate?.toMillis()) {\n return;\n }\n\n if (isUnavailableDate(targetDate, unavailable, defaultTimeZone)) {\n let prevFocusDate = targetDate.minus({ days: 1 });\n for (let i = 0; i < 365; i++) {\n if (\n minDate !== null &&\n prevFocusDate.toMillis() < minDate?.toMillis()\n ) {\n break;\n }\n if (isUnavailableDate(prevFocusDate, unavailable, defaultTimeZone)) {\n prevFocusDate = prevFocusDate.minus({ days: 1 });\n } else {\n // setHoveredDate(prevFocusDate);\n setFocusedDate(prevFocusDate);\n break;\n }\n }\n return;\n }\n\n setFocusedDate(targetDate);\n\n if (targetDate.month !== focusedDate.month) {\n setSelectedMonth(targetDate.month);\n if (targetDate.year !== focusedDate.year) {\n setSelectedYear(targetDate.year);\n }\n }\n };\n\n const isSelectedDate = (date: DateTime, compareDate?: DateTime) => {\n if (!range) {\n return isSameDay(date, compareDate ?? value);\n }\n if (value.start && value.end) {\n return (\n date.toMillis() >= value.start.startOf(\"day\").toMillis() &&\n date.toMillis() <= value.end.endOf(\"day\").toMillis()\n );\n }\n\n return isSameDay(date, value.start);\n };\n\n const isRange = (date: DateTime) => {\n if (!range) {\n return false;\n }\n if (value.start && value.end) {\n return (\n date.toMillis() >= value.start.startOf(\"day\").toMillis() &&\n date.toMillis() <= value.end.endOf(\"day\").toMillis() &&\n !isSameDay(value.start, date) &&\n !isSameDay(value.end, date)\n );\n }\n\n return false;\n };\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLButtonElement>) => {\n switch (e.code) {\n case \"Space\":\n case \"Enter\":\n e.preventDefault();\n if (!range) {\n if (!controlled) {\n setValue(isSameDay(value, focusedDate) ? null : focusedDate);\n }\n onSelection?.({\n value: isSameDay(value, focusedDate)\n ? undefined\n : (focusedDate\n .setZone(defaultTimeZone)\n .startOf(\"day\")\n .toISO() ?? undefined),\n });\n break;\n }\n rangeUpdater(value, focusedDate, setValue, onSelection);\n break;\n case \"ArrowLeft\":\n e.preventDefault();\n pastDateSelection(focusedDate.minus({ days: 1 }));\n break;\n case \"ArrowRight\":\n e.preventDefault();\n futureDateSelection(focusedDate.plus({ days: 1 }));\n break;\n case \"ArrowUp\":\n e.preventDefault();\n pastDateSelection(focusedDate.minus({ days: 7 }));\n break;\n case \"ArrowDown\":\n e.preventDefault();\n futureDateSelection(focusedDate.plus({ days: 7 }));\n break;\n case \"PageUp\":\n e.preventDefault();\n if (e.shiftKey) {\n pastDateSelection(focusedDate.minus({ years: 1 }));\n break;\n }\n pastDateSelection(focusedDate.minus({ months: 1 }));\n break;\n case \"PageDown\":\n e.preventDefault();\n if (e.shiftKey) {\n futureDateSelection(focusedDate.plus({ years: 1 }));\n break;\n }\n futureDateSelection(focusedDate.plus({ months: 1 }));\n break;\n\n default:\n break;\n }\n };\n\n let startDayIndex = 6;\n switch (startDay) {\n case \"Monday\":\n startDayIndex = 0;\n break;\n case \"Sunday\":\n default:\n startDayIndex = 6;\n }\n\n const weekdaysArr: string[] = [];\n for (let i = 0; i < 7; i++) {\n const dayIndex = (startDayIndex + i) % 7;\n weekdaysArr.push(Info.weekdays(\"narrow\", { locale })[dayIndex]);\n }\n\n const firstDay = focusedDate.startOf(\"month\");\n\n const prevArr: DateTime<boolean>[] = [];\n if (firstDay.weekday !== startDayIndex + 1) {\n // Complete the first row with the previous month's dates.\n for (let i = 1; i < 8; i++) {\n const prevDay = firstDay.minus({ days: i });\n prevArr.push(prevDay);\n if (prevDay.weekday === startDayIndex + 1) break;\n }\n }\n prevArr.reverse();\n\n const onClickHandler = (d: DateTime) => {\n setFocusedDate(d);\n if (!range) {\n onSelection?.({\n value: toDateString(d.setZone(defaultTimeZone)) ?? undefined,\n });\n if (!controlled) {\n setValue(d);\n }\n return;\n }\n\n rangeUpdater(value, d, setValue, onSelection);\n };\n\n const onFocusHandler = (d: DateTime) => {\n setHoveredDate(d);\n };\n const onBlurHandler = () => {\n setHoveredDate(undefined);\n };\n\n const onMouseEnterHandler = (d: DateTime) => {\n setHoveredDate(d);\n };\n\n useEffect(() => {\n if (!initialized.current) {\n initialized.current = true;\n return;\n }\n // Skip all cells except the focused date.\n if (!isSameDay(date, focusedDate)) return;\n requestAnimationFrame(() => {\n const dateId = `${uid}-${focusedDate.toISODate()}`;\n const targetElement =\n document.getElementById(dateId) ||\n document.activeElement?.shadowRoot?.getElementById(dateId);\n // In DateField context, only move focus when a day cell is already\n // focused — prevents stealing from the input or toolbar.\n // In Shadow DOM, document.activeElement is the host; traverse into the\n // shadow root to find the actual focused element.\n const deepActiveEl =\n document.activeElement?.shadowRoot?.activeElement ??\n document.activeElement;\n const isDayFocused = !!deepActiveEl?.id?.startsWith(`${uid}-`);\n if (!disableAutofocus || isDayFocused) {\n targetElement?.focus();\n }\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps -- `date` is intentionally omitted: including it causes an infinite loop because Calendar re-renders on hover create new DateTime references, retriggering this effect. The isSameDay guard above reads `date` from the closure, which is always current at effect-run time.\n }, [focusedDate, uid, disableAutofocus]);\n\n useEffect(() => {\n if (!isUnavailableDate(focusedDate, unavailable, defaultTimeZone)) return;\n futureDateSelection(focusedDate.plus({ days: 1 }));\n }, [focusedDate, futureDateSelection, defaultTimeZone, unavailable]);\n\n const isDisabled =\n !isSameMonth(date, focusedDate) ||\n isBeyondMinDate(date, minDate) ||\n isBeyondMaxDate(date, maxDate) ||\n isUnavailableDate(date, unavailable, defaultTimeZone);\n const isUnavailable = isUnavailableDate(date, unavailable, defaultTimeZone);\n\n const hasMetadata = getDateMetadata(date, dateMetadata);\n\n const hoverRange =\n range &&\n hoveredDate &&\n value.start &&\n !value.end &&\n date.toMillis() > value.start.toMillis() &&\n date.toMillis() <= hoveredDate.toMillis();\n\n const cellCx = cx(styles[\"cell\"], {\n [styles[\"selected\"]]: !isUnavailable && isSelectedDate(date),\n [styles[\"range-first\"]]:\n range &&\n value.start &&\n (value.end || hoveredDate) &&\n isSameDay(date, value.start),\n [styles[\"range-last\"]]:\n range &&\n ((value.start && value.end && isSameDay(date, value.end)) ||\n (hoverRange && isSameDay(date, hoveredDate))),\n [styles[\"range\"]]: isRange(date) || hoverRange,\n [styles[\"is-unavailable\"]]: isUnavailable,\n [styles[\"overflow\"]]: !isSameMonth(date, focusedDate),\n [styles[\"hover-last\"]]: hoverRange && isSameDay(date, hoveredDate),\n [styles[\"has-metadata\"]]: hasMetadata,\n });\n const isMinDate =\n minDate !== null && date.toMillis() <= minDate?.toMillis();\n const isMaxDate =\n maxDate !== null && date.toMillis() >= maxDate?.toMillis();\n\n return (\n <td key={date.toISODate()} role=\"gridcell\" {...rest} ref={ref}>\n {!isUnavailable && (isRange(date) || hoverRange) ? (\n <div\n role=\"presentation\"\n className={cx(styles[\"range-fill\"], {\n [styles[\"range-disabled\"]]: isDisabled,\n [styles[\"hover-last\"]]:\n hoverRange && isSameDay(date, hoveredDate),\n })}\n />\n ) : null}\n <button\n onClick={() => onClickHandler(date)}\n onFocus={() => onFocusHandler(date)}\n onBlur={() => onBlurHandler()}\n className={cellCx}\n onKeyDown={onKeyDownHandler}\n onMouseEnter={() => onMouseEnterHandler(date)}\n tabIndex={\n disableAutofocus ? -1 : isSameDay(date, focusedDate) ? 0 : -1\n }\n disabled={isDisabled ? true : undefined}\n aria-label={`${date.toLocaleString(dateFormat)}${isSelectedDate(date) ? \" selected\" : \"\"}${hasMetadata ? `, ${hasMetadata}` : \"\"}${isMinDate ? \", You are on the first available date\" : \"\"}${isMaxDate ? \", You are on the last available date\" : \"\"}`}\n id={`${uid}-${date.toISODate()}`}\n >\n {date.day}\n {hasMetadata && <span className={styles[\"pip\"]} aria-hidden=\"true\" />}\n </button>\n </td>\n );\n },\n);\n\nCalendarDay.displayName = \"CalendarDay\";\n","import { useCalendar } from \"../CalendarContext\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport { type DateTime, Info } from \"luxon\";\nimport { isUnavailableDate } from \"./utils\";\nimport { CalendarDay } from \"./CalendarDay\";\n\nexport type CalendarWeekProps = ComponentPropsWithoutRef<\"tr\"> & {\n /**\n * @deprecated This is overridden internally\n */\n className?: ComponentPropsWithoutRef<\"tr\">[\"className\"];\n /**\n * The dates for the week.\n */\n week: DateTime[];\n};\n\n/**\n * A component that displays a week in the calendar.\n *\n * @param props - The props for the tr element.\n * @returns A component that displays a week in the calendar.\n */\nexport const CalendarWeek = forwardRef<HTMLTableRowElement, CalendarWeekProps>(\n (props, ref) => {\n const { className, week, ...rest } = props;\n const context = useCalendar();\n const {\n focusedDate,\n setFocusedDate,\n locale,\n maxDate,\n unavailable,\n defaultTimeZone,\n id: uid,\n startDay,\n } = context;\n\n const initialized = useRef(false);\n\n const futureDateSelection = useCallback(\n (targetDate: DateTime) => {\n if (maxDate !== null && targetDate.toMillis() > maxDate?.toMillis()) {\n return;\n }\n\n if (isUnavailableDate(targetDate, unavailable, defaultTimeZone)) {\n let nextFocusDate = targetDate.plus({ days: 1 });\n for (let i = 0; i < 365; i++) {\n if (\n maxDate !== null &&\n nextFocusDate.toMillis() > maxDate?.toMillis()\n ) {\n break;\n }\n if (\n isUnavailableDate(nextFocusDate, unavailable, defaultTimeZone)\n ) {\n nextFocusDate = nextFocusDate.plus({ days: 1 });\n } else {\n // setHoveredDate(nextFocusDate);\n setFocusedDate(nextFocusDate);\n break;\n }\n }\n return;\n }\n\n setFocusedDate(targetDate);\n },\n [maxDate, setFocusedDate, defaultTimeZone, unavailable],\n );\n\n let startDayIndex = 6;\n switch (startDay) {\n case \"Monday\":\n startDayIndex = 0;\n break;\n case \"Sunday\":\n default:\n startDayIndex = 6;\n }\n\n const weekdaysArr: string[] = [];\n for (let i = 0; i < 7; i++) {\n const dayIndex = (startDayIndex + i) % 7;\n weekdaysArr.push(Info.weekdays(\"narrow\", { locale })[dayIndex]);\n }\n\n const firstDay = focusedDate.startOf(\"month\");\n\n const prevArr: DateTime<boolean>[] = [];\n if (firstDay.weekday !== startDayIndex + 1) {\n // Complete the first row with the previous month's dates.\n for (let i = 1; i < 8; i++) {\n const prevDay = firstDay.minus({ days: i });\n prevArr.push(prevDay);\n if (prevDay.weekday === startDayIndex + 1) break;\n }\n }\n prevArr.reverse();\n\n useEffect(() => {\n if (!initialized.current) return;\n setTimeout(() => {\n const targetElement = document.getElementById(\n `${uid}-${focusedDate.toISODate()}`,\n );\n targetElement?.focus();\n }, 100);\n }, [focusedDate, uid]);\n\n useEffect(() => {\n if (!isUnavailableDate(focusedDate, unavailable, defaultTimeZone)) return;\n futureDateSelection(focusedDate.plus({ days: 1 }));\n }, [focusedDate, futureDateSelection, defaultTimeZone, unavailable]);\n\n return (\n <tr {...rest} ref={ref}>\n {week.map((n) => {\n return <CalendarDay date={n} key={n.toISODate()} />;\n })}\n </tr>\n );\n },\n);\n\nCalendarWeek.displayName = \"CalendarWeek\";\n","import { useCalendar } from \"./CalendarContext\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport cx from \"classnames\";\nimport styles from \"./Calendar.module.scss\";\nimport { type DateTime, Info } from \"luxon\";\nimport {\n isBeyondMaxDate,\n isBeyondMinDate,\n isUnavailableDate,\n} from \"./internal/utils\";\nimport { useSwipe, type UseSwipeFn } from \"../../hooks\";\nimport { SrOnly } from \"../SrOnly\";\nimport { CalendarWeek } from \"./internal/CalendarWeek\";\n\nexport type CalendarMonthProps = ComponentPropsWithoutRef<\"table\">;\n\n/**\n * A component that displays a month in the calendar.\n *\n * @param props - The props for the table element.\n * @returns A component that displays a month in the calendar.\n */\nexport const CalendarMonth = forwardRef<HTMLTableElement, CalendarMonthProps>(\n (props, ref) => {\n const { className, ...rest } = props;\n const context = useCalendar();\n const {\n value,\n focusedDate,\n setFocusedDate,\n setHoveredDate,\n locale,\n minDate,\n maxDate,\n unavailable,\n defaultTimeZone,\n id: uid,\n range,\n dateFormat,\n startDay,\n } = context;\n\n const initialized = useRef(false);\n\n const ViewCX = cx(styles[\"grid\"], className);\n const futureDateSelection = useCallback(\n (targetDate: DateTime) => {\n if (maxDate !== null && targetDate.toMillis() > maxDate?.toMillis()) {\n return;\n }\n\n if (isUnavailableDate(targetDate, unavailable, defaultTimeZone)) {\n let nextFocusDate = targetDate.plus({ days: 1 });\n for (let i = 0; i < 365; i++) {\n if (\n maxDate !== null &&\n nextFocusDate.toMillis() > maxDate?.toMillis()\n ) {\n break;\n }\n if (\n isUnavailableDate(nextFocusDate, unavailable, defaultTimeZone)\n ) {\n nextFocusDate = nextFocusDate.plus({ days: 1 });\n } else {\n // setHoveredDate(nextFocusDate);\n setFocusedDate(nextFocusDate);\n break;\n }\n }\n return;\n }\n\n setFocusedDate(targetDate);\n },\n [maxDate, setFocusedDate, defaultTimeZone, unavailable],\n );\n\n let startDayIndex = 6;\n switch (startDay) {\n case \"Monday\":\n startDayIndex = 0;\n break;\n case \"Sunday\":\n default:\n startDayIndex = 6;\n }\n\n const weekdaysArr: string[] = [];\n for (let i = 0; i < 7; i++) {\n const dayIndex = (startDayIndex + i) % 7;\n weekdaysArr.push(Info.weekdays(\"narrow\", { locale })[dayIndex]);\n }\n\n const firstDay = focusedDate.startOf(\"month\");\n const lastDay = focusedDate.endOf(\"month\");\n\n const monthArr = Array.from(new Array(firstDay.daysInMonth)).map((_, i) => {\n return firstDay.plus({ days: i });\n });\n\n const prevArr: DateTime<boolean>[] = [];\n if (firstDay.weekday !== startDayIndex + 1) {\n // Complete the first row with the previous month's dates.\n for (let i = 1; i < 8; i++) {\n const prevDay = firstDay.minus({ days: i });\n prevArr.push(prevDay);\n if (prevDay.weekday === startDayIndex + 1) break;\n }\n }\n prevArr.reverse();\n\n const nextArr = Array.from(new Array(14)).map((_, i) => {\n return lastDay.plus({ days: i + 1 });\n });\n\n const fullArr: DateTime[] = [...prevArr, ...monthArr, ...nextArr];\n\n const splitArr = [...Array(Math.ceil(fullArr.length / 7))]\n .map((_, i) => fullArr.slice(7 * i, 7 + 7 * i))\n .slice(0, 6);\n\n const onMouseLeaveHandler = () => {\n setHoveredDate(undefined);\n };\n\n const onSwipe = (dir: UseSwipeFn[\"direction\"]) => {\n if (dir === \"left\") {\n const targetMonth = focusedDate.plus({ month: 1 });\n if (\n isBeyondMinDate(targetMonth, minDate) ||\n isBeyondMaxDate(targetMonth, maxDate)\n )\n return;\n setFocusedDate(targetMonth);\n return;\n }\n if (dir === \"right\") {\n const targetMonth = focusedDate.minus({ month: 1 });\n if (\n isBeyondMinDate(targetMonth, minDate) ||\n isBeyondMaxDate(targetMonth, maxDate)\n )\n return;\n setFocusedDate(targetMonth);\n return;\n }\n };\n\n const { direction, ...touchProps } = useSwipe(onSwipe);\n\n useEffect(() => {\n if (!initialized.current) return;\n setTimeout(() => {\n const targetElement = document.getElementById(\n `${uid}-${focusedDate.toISODate()}`,\n );\n targetElement?.focus();\n }, 100);\n }, [focusedDate, uid]);\n\n useEffect(() => {\n if (!isUnavailableDate(focusedDate, unavailable, defaultTimeZone)) return;\n futureDateSelection(focusedDate.plus({ days: 1 }));\n }, [focusedDate, futureDateSelection, defaultTimeZone, unavailable]);\n\n return (\n <>\n <table\n ref={ref}\n data-anv=\"calendar-month\"\n onFocus={() => {\n initialized.current = true;\n }}\n onBlur={() => {\n initialized.current = false;\n }}\n className={ViewCX}\n onMouseLeave={onMouseLeaveHandler}\n role=\"grid\"\n {...rest}\n {...touchProps}\n >\n <thead aria-hidden className={styles[\"weekdays\"]}>\n <tr>\n {weekdaysArr.map((weekday, i) => {\n return (\n <th\n scope=\"col\"\n key={`${weekday}${i}`}\n className={styles[\"weekday\"]}\n >\n {weekday}\n </th>\n );\n })}\n </tr>\n <tr className={styles[\"spacer\"]}>\n <td colSpan={7} />\n </tr>\n </thead>\n <tbody\n className={styles[\"day-grid\"]}\n key={focusedDate.startOf(\"month\").toMillis()}\n >\n {splitArr.map((week, i) => {\n return <CalendarWeek week={week} key={i} />;\n })}\n </tbody>\n </table>\n {range && value ? (\n <SrOnly aria-live=\"polite\">\n {`Range starts at ${\n value.start && value.start.toLocaleString(dateFormat)\n }, ${\n value.end\n ? `ends at ${value.end.toLocaleString(dateFormat)}`\n : \"select an end date\"\n }`}\n </SrOnly>\n ) : null}\n </>\n );\n },\n);\n\nCalendarMonth.displayName = \"CalendarMonth\";\n","import { useEffect, useRef } from \"react\";\n\nexport type UseYearSelectorKeysParams = {\n columns: number;\n scrollToYear: (year: number, { focus }: { focus?: boolean }) => void;\n initialFocus: number;\n onSelect: (year: number | null) => void;\n onConfirm: () => void;\n min: number;\n max: number;\n disabled: boolean;\n pseudoFocused: number;\n setPseudoFocused: (year: number) => void;\n required: boolean;\n};\n\nexport type UseYearSelectorKeysReturn = {\n listRef: React.RefObject<HTMLDivElement>;\n};\n\n/**\n * Binds arrow / page / home keys to move-and-select, Enter and Space to\n * confirm, and Backspace / Delete to clear when not required.\n */\nexport const useYearSelectorKeys = ({\n columns,\n scrollToYear,\n initialFocus,\n onSelect,\n onConfirm,\n pseudoFocused,\n setPseudoFocused,\n min,\n max,\n disabled,\n required,\n}: UseYearSelectorKeysParams): UseYearSelectorKeysReturn => {\n const listRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const list = listRef.current;\n const handleKeyDown = (e: KeyboardEvent) => {\n if (pseudoFocused === null) return;\n if (\n [\n \"ArrowLeft\",\n \"ArrowRight\",\n \"ArrowUp\",\n \"ArrowDown\",\n \"Home\",\n \"PageUp\",\n \"PageDown\",\n \"Enter\",\n \" \",\n \"Backspace\",\n \"Delete\",\n ].includes(e.key)\n ) {\n e.preventDefault();\n if (\n e.key === \"ArrowLeft\" ||\n e.key === \"ArrowRight\" ||\n e.key === \"ArrowUp\" ||\n e.key === \"ArrowDown\"\n ) {\n const newYear =\n e.key === \"ArrowLeft\" || e.key === \"ArrowUp\"\n ? pseudoFocused - 1\n : pseudoFocused + 1;\n const clampedYear = Math.min(Math.max(newYear, min), max);\n scrollToYear(newYear, { focus: true });\n setPseudoFocused(newYear);\n if (!disabled) {\n onSelect(clampedYear);\n }\n return;\n }\n if (!required && (e.key === \"Backspace\" || e.key === \"Delete\")) {\n onSelect(null);\n return;\n }\n if (e.key === \"PageUp\" || e.key === \"PageDown\") {\n const newYear = e.key === \"PageUp\" ? min : max;\n scrollToYear(newYear, { focus: true });\n setPseudoFocused(newYear);\n if (!disabled) {\n onSelect(newYear);\n }\n return;\n }\n if (e.key === \"Home\") {\n scrollToYear(initialFocus, { focus: true });\n setPseudoFocused(initialFocus);\n if (!disabled) {\n onSelect(initialFocus);\n }\n return;\n }\n if (e.key === \"Enter\" || e.key === \" \") {\n if (!disabled) {\n onConfirm();\n }\n return;\n }\n }\n };\n list?.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n list?.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [\n pseudoFocused,\n columns,\n scrollToYear,\n onSelect,\n min,\n max,\n initialFocus,\n disabled,\n setPseudoFocused,\n required,\n onConfirm,\n ]);\n\n return { listRef };\n};\n","import styles from \"../YearSelector.module.scss\";\nimport cx from \"classnames\";\nimport type { ComponentPropsWithoutRef } from \"react\";\nimport SelectCard from \"../../../../components/SelectCard\";\n\ntype YearItemProps = Omit<ComponentPropsWithoutRef<\"div\">, \"onChange\"> & {\n year: number;\n onChange: (year: number) => void;\n selected: boolean;\n pseudoFocused: boolean;\n disabled: boolean;\n};\n\n/** One year cell in the virtualized grid. */\nexport const YearItem = ({\n year,\n onChange,\n selected,\n pseudoFocused,\n disabled,\n onFocus,\n ...rest\n}: YearItemProps) => {\n return (\n <SelectCard\n disabled={disabled}\n id={year}\n onChange={!disabled ? () => onChange(year) : () => {}}\n // Keep focus on the (focusable) year list container on click. Without\n // this, mousedown on the label-based card blurs to document.body, which\n // fires focusout on popover hosts (e.g. FilterBar's OptionsPopover) and\n // closes them before the year is applied. Mirrors MenuFooter's preventBlur.\n onMouseDown={(e) => e.preventDefault()}\n checked={selected}\n checkboxProps={{\n tabIndex: -1,\n onFocus,\n ...(pseudoFocused && { \"data-interactive\": \"focus-visible\" }),\n }}\n flexGrow={1}\n className={cx(styles[\"year-item\"], {\n [styles[\"pseudo-focused\"]]: pseudoFocused,\n })}\n data-year={year}\n tabIndex={-1}\n {...rest}\n >\n {year}\n </SelectCard>\n );\n};\n","import { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { forwardRef, useCallback, useEffect, useRef, useState } from \"react\";\nimport styles from \"./YearSelector.module.scss\";\nimport cx from \"classnames\";\nimport { useYearSelectorKeys } from \"./internal/useYearSelectorKeys\";\nimport { useOptionallyControlledState, usePrevious } from \"../../hooks\";\nimport { useMergeRefs } from \"../../../hooks\";\nimport { YearItem } from \"./internal/YearItem\";\nimport type { PassThroughProps } from \"../../../types\";\n\nconst DEFAULT_MIN = 1900;\nconst DEFAULT_MAX = 2200;\n\nexport interface YearSelectorProps {\n /** Inclusive lower bound. Defaults to `1900`. */\n min?: number;\n /** Inclusive upper bound. Defaults to `2200`. */\n max?: number;\n /** Controlled selected year. `null` means none. */\n value?: number | null;\n /** Uncontrolled initial selection. Defaults to none. */\n defaultValue?: number;\n /** Fires when the selected year changes, including keyboard moves. */\n onChange?: (year: number | null) => void;\n /** Fires on click, Enter, or Space — not on arrow-key moves. */\n onConfirm?: (year: number | null) => void;\n /**\n * Scroll and roving-focus target when nothing is selected.\n * Defaults to the current calendar year.\n */\n startingYear?: number;\n /** Grid column count. Values below `1` become `1`. Defaults to `2`. */\n columns?: number;\n className?: string;\n /** When true, the selection cannot be cleared to `null`. Defaults to `false`. */\n required?: boolean;\n /** Blocks selection changes; the list still scrolls and receives keys. Defaults to `false`. */\n disabled?: boolean;\n /** Accessible name on the spinbutton. Defaults to `\"Year selection\"`. */\n ariaLabel?: string;\n /** Merged last onto the spinbutton, so it can override the built-in ARIA. */\n rootProps?: PassThroughProps<\"div\">;\n}\nconst currentYear = new Date().getFullYear();\n\n/** Virtualized year grid with spinbutton keyboard behavior. */\nexport const YearSelector = forwardRef<HTMLDivElement, YearSelectorProps>(\n (\n {\n min = DEFAULT_MIN,\n max = DEFAULT_MAX,\n value: valueProp,\n defaultValue: defaultValueProp,\n onChange,\n onConfirm,\n startingYear = currentYear,\n columns: columnsProp,\n className,\n required = false,\n disabled = false,\n ariaLabel = \"Year selection\",\n rootProps,\n },\n ref,\n ) => {\n const columns = Math.max(columnsProp ?? 2, 1);\n const [value, setValue] = useOptionallyControlledState<number | null>({\n controlledValue: valueProp,\n defaultValue: defaultValueProp ?? null,\n onChange,\n });\n const previousValue = usePrevious(value);\n const initialFocusYear = value ?? startingYear;\n const [pseudoFocused, setPseudoFocused] =\n useState<number>(initialFocusYear);\n\n const handleChange = (year: number | null) => {\n if (!required && value === year) {\n setValue(null);\n return;\n }\n setValue(year);\n if (year !== null) {\n setPseudoFocused(year);\n }\n };\n\n const handleItemChange = (year: number) => {\n handleChange(year);\n onConfirm?.(year);\n };\n\n const gap = 12;\n const rowHeight = 58;\n const rowCount = Math.ceil((max - min + 1) / columns);\n const initialOffset =\n ((initialFocusYear - min) * (rowHeight + gap)) / columns + gap / 2;\n\n const rowVirtualizer = useVirtualizer({\n count: rowCount,\n getScrollElement: () => parentRef.current,\n estimateSize: () => rowHeight,\n gap,\n initialOffset,\n paddingEnd: gap / 2,\n });\n\n const scrollToYear = useCallback(\n (year: number, { focus }: { focus?: boolean } = {}) => {\n const index = Math.floor((year - min) / columns);\n rowVirtualizer.scrollToIndex(index, { align: \"center\" });\n if (focus) {\n setPseudoFocused(year);\n }\n },\n [min, columns, rowVirtualizer, setPseudoFocused],\n );\n\n const parentRef = useRef(null);\n const { listRef } = useYearSelectorKeys({\n columns,\n scrollToYear,\n initialFocus: initialFocusYear,\n onSelect: handleChange,\n onConfirm: () => onConfirm?.(value),\n min,\n max,\n disabled,\n pseudoFocused,\n setPseudoFocused,\n required,\n });\n\n useEffect(() => {\n if (value !== null && previousValue !== value) {\n scrollToYear(value, { focus: true });\n }\n }, [value, previousValue, scrollToYear, listRef]);\n\n const jointRef = useMergeRefs([parentRef, listRef, ref]);\n\n return (\n <>\n <div\n ref={jointRef}\n aria-label={ariaLabel}\n tabIndex={0}\n className={cx(styles[\"year-selector\"], className)}\n role=\"spinbutton\"\n aria-valuenow={value ?? undefined}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuetext={value ? `${value}` : \"No year selected\"}\n data-test={rowVirtualizer.options.paddingEnd}\n style={{\n maxHeight: `${rowVirtualizer.getTotalSize() + 8}px`,\n }}\n {...rootProps}\n >\n <div\n style={{\n height: `${rowVirtualizer.getTotalSize()}px`,\n width: \"100%\",\n position: \"relative\",\n }}\n >\n {rowVirtualizer.getVirtualItems().map((virtualItem) => {\n const years = Array.from(\n { length: columns },\n (_, i) => virtualItem.index * columns + i + min,\n );\n return (\n <div\n key={virtualItem.key}\n data-testid=\"v-row\"\n className={styles[\"year-grid\"]}\n style={{\n transform: `translateY(${virtualItem.start}px)`,\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n }}\n >\n {years.map((year) => {\n if (year > max) return <div key={year} />;\n return (\n <YearItem\n key={year}\n disabled={disabled}\n year={year}\n onChange={handleItemChange}\n selected={value === year}\n pseudoFocused={pseudoFocused === year}\n onFocus={() => {\n listRef.current?.focus();\n setPseudoFocused(year);\n }}\n />\n );\n })}\n </div>\n );\n })}\n </div>\n </div>\n </>\n );\n },\n);\n\nYearSelector.displayName = \"YearSelector\";\n","import { DateTime } from \"luxon\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { Grid } from \"../../Grid\";\nimport { SelectCard } from \"../../SelectCard\";\nimport { useCalendar } from \"../CalendarContext\";\nimport styles from \"../Calendar.module.scss\";\nimport cx from \"classnames\";\nimport { useMergeRefs } from \"../../../hooks\";\n\nexport type CalendarMonthSelectionProps = ComponentPropsWithoutRef<\"div\"> & {\n /**\n * The function to call when a month is selected.\n *\n * @param month - The month that is selected.\n */\n onMonthSelection: (month: DateTime[\"month\"]) => void;\n};\n\n/**\n * A component that displays a grid of month cards and allows the user to select a month.\n *\n * @param props.onMonthSelection - The function to call when a month is selected.\n * @param props - The rest of the props for the div wrapper.\n * @returns A component that displays a grid of month cards and allows the user to select a month.\n */\nexport const CalendarMonthSelection = forwardRef<\n HTMLDivElement,\n CalendarMonthSelectionProps\n>(({ onMonthSelection, ...props }, ref) => {\n const { defaultTimeZone, maxDate, minDate, selectedMonth, selectedYear } =\n useCalendar();\n\n const monthSelectionRef = useRef<HTMLDivElement>(null);\n const combinedRef = useMergeRefs([ref, monthSelectionRef]);\n\n const currentDate = useMemo(\n () =>\n DateTime.fromObject({ year: selectedYear, month: selectedMonth })\n .setZone(defaultTimeZone)\n .startOf(\"day\"),\n [defaultTimeZone, selectedYear, selectedMonth],\n );\n\n const dates = useMemo(\n () =>\n Array.from({ length: 12 }, (_, i) => {\n const date = DateTime.fromObject({\n year: selectedYear,\n month: 1,\n }).plus({\n month: i,\n });\n\n // disable the select card if outside the min or max date\n const disabled =\n (minDate && date < minDate && !date.hasSame(minDate, \"month\")) ||\n (maxDate && date > maxDate && !date.hasSame(maxDate, \"month\"));\n\n return {\n month: date.month,\n disabled: disabled ?? false,\n };\n }),\n [maxDate, minDate, selectedYear],\n );\n\n const classes = cx(styles[\"month-selection\"], props.className);\n\n // The month cards are label-based (not natively focusable). On mousedown the\n // browser would blur the currently focused element and move focus to\n // document.body, which fires a focusout on popover hosts (e.g. FilterBar's\n // OptionsPopover) and closes them before the month is applied. Preventing the\n // default keeps focus where it is; handleMonthSelection then moves focus back\n // to the month button after the selection. Mirrors MenuFooter's preventBlur.\n const preventBlur = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n }, []);\n\n const [focusedIndex, setFocusedIndex] = useState(selectedMonth - 1);\n\n // reset focused index when current date changes\n useEffect(() => {\n if (minDate || maxDate) {\n // find the next enabled month\n let index = dates.findIndex(({ month }) => month === selectedMonth);\n while (dates[index].disabled && index < 11) {\n index++;\n }\n setFocusedIndex(index);\n } else {\n setFocusedIndex(selectedMonth - 1);\n }\n }, [selectedMonth, minDate, maxDate, dates]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n const target = e.target as HTMLElement;\n const cards = monthSelectionRef.current?.querySelectorAll(\n \"input[type='checkbox']\",\n );\n if (!cards || cards.length === 0) {\n return;\n }\n\n const cardArray = Array.from(cards);\n const currentIndex = cardArray.indexOf(target as HTMLButtonElement);\n\n if (currentIndex === -1) return;\n\n const updateFocusedIndex = (index: number) => {\n e.preventDefault();\n (cardArray[index] as HTMLButtonElement).focus();\n setFocusedIndex(index);\n };\n\n let newIndex: number;\n switch (e.key) {\n case \"ArrowLeft\":\n newIndex = currentIndex > 0 ? currentIndex - 1 : 11;\n while (dates[newIndex].disabled) {\n newIndex = newIndex > 0 ? newIndex - 1 : 11;\n }\n updateFocusedIndex(newIndex);\n break;\n\n case \"ArrowRight\":\n newIndex = currentIndex < 11 ? currentIndex + 1 : 0;\n while (dates[newIndex].disabled) {\n newIndex = newIndex < 11 ? newIndex + 1 : 0;\n }\n updateFocusedIndex(newIndex);\n break;\n\n case \"ArrowUp\":\n if (currentIndex < 3) {\n newIndex = currentIndex + 9;\n } else {\n newIndex = currentIndex - 3;\n }\n while (dates[newIndex].disabled) {\n if (newIndex > 2) {\n newIndex -= 3;\n } else {\n newIndex += 9;\n }\n }\n updateFocusedIndex(newIndex);\n break;\n\n case \"ArrowDown\":\n if (currentIndex > 8) {\n newIndex = currentIndex - 9;\n } else {\n newIndex = currentIndex + 3;\n }\n while (dates[newIndex].disabled) {\n if (newIndex < 9) {\n newIndex += 3;\n } else {\n newIndex -= 9;\n }\n }\n updateFocusedIndex(newIndex);\n break;\n\n case \"Enter\":\n case \" \":\n e.preventDefault();\n if (!dates[currentIndex].disabled) {\n onMonthSelection(dates[currentIndex].month);\n }\n break;\n }\n },\n [dates, onMonthSelection],\n );\n\n return (\n <div\n ref={combinedRef}\n data-anv=\"calendar-month-selection\"\n className={classes}\n {...props}\n >\n <div role=\"grid\" aria-label=\"Calendar month selection\">\n <Grid\n templateColumns=\"repeat(3, minmax(0, 1fr))\"\n gap={3}\n onKeyDown={handleKeyDown}\n role=\"row\"\n >\n {dates.map(({ month, disabled }, index) => (\n <div role=\"gridcell\" key={month.toString()}>\n <SelectCard\n id={month.toString()}\n disabled={disabled}\n onMouseDown={preventBlur}\n onChange={() => onMonthSelection(month)}\n checked={\n selectedMonth === month && selectedYear === currentDate.year\n }\n checkboxProps={{\n className: styles[\"selection-checkbox\"],\n tabIndex: focusedIndex === index ? 0 : -1,\n }}\n className={styles[\"selection-card\"]}\n >\n {DateTime.fromObject({ month }).toFormat(\"MMMM\")}\n </SelectCard>\n </div>\n ))}\n </Grid>\n </div>\n </div>\n );\n});\n\nCalendarMonthSelection.displayName = \"CalendarMonthSelection\";\n","import { createContext } from \"react\";\nimport type { CalendarBetaProps } from \"./Calendar\";\n\nexport const CalendarBetaPropsContext = createContext<CalendarBetaProps>({});\n","import { useContext } from \"react\";\nimport { CalendarBetaPropsContext } from \"./CalendarBetaPropsContext\";\n\nexport const useCalendarBetaProps = () => {\n return useContext(CalendarBetaPropsContext);\n};\n","import { DateTime, type WeekdayNumbers } from \"luxon\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type { IanaZone, LayoutUtilProps, Locale } from \"../../types\";\nimport { CalendarNow } from \"./CalendarNowButton\";\nimport { CalendarYearButton } from \"./CalendarYearButton\";\nimport { CalendarPrev } from \"./CalendarPrevButton\";\nimport { CalendarNext } from \"./CalendarNextButton\";\nimport { CalendarMonthButton } from \"./CalendarMonthButton\";\nimport { CalendarMonth } from \"./CalendarMonth\";\nimport {\n CalendarContext,\n type CalendarContextProps,\n type CalendarRangeContextProps,\n} from \"./CalendarContext\";\nimport { useMergeRefs } from \"../../hooks\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport styles from \"./Calendar.module.scss\";\nimport cx from \"classnames\";\nimport { normalizeDate } from \"./internal/utils\";\nimport { CalendarMonthSelection } from \"./internal/CalendarMonthSelection\";\nimport { YearSelector } from \"../../internal/components/YearSelector\";\nimport { useCalendarBetaProps } from \"../../beta\";\nimport { warnOnce } from \"../../internal/functions/warnOnce\";\n\nconst FOCUSED_DATE_DEPRECATION_MESSAGE =\n \"[Anvil2 Calendar] The `focusedDate` prop is deprecated and will be removed in a future major release. Use `defaultFocusedDate` to set the initially visible month instead.\";\n\nexport type CalendarValue = string | undefined;\n\nexport type CalendarRangeValue = { start?: string; end?: string } | undefined;\n\nconst toolbarFocusStates = [\"month\", \"year\", \"next\", \"prev\", \"now\"] as const;\n\n/**\n * Props for the Calendar component\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"value\" | \"defaultValue\">\n * @extends LayoutUtilProps\n */\ntype CalendarCommonProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"value\" | \"defaultValue\"\n> & {\n /**\n * @deprecated children will be overridden internally\n */\n children?: ComponentPropsWithoutRef<\"div\">[\"children\"];\n /**\n * The default focused date. Used to determine what month and year is shown on initial render.\n * Prefer this over `focusedDate`, which is deprecated.\n */\n defaultFocusedDate?: string | null;\n /**\n * The focused date. Used to determine what month and year is currently shown.\n * @deprecated Use `defaultFocusedDate` instead. `focusedDate` does not reliably control the initial view and will be removed in a future major release.\n */\n focusedDate?: string | null;\n /**\n * The minimum date allowed.\n */\n minDate?: string;\n /**\n * The maximum date allowed.\n */\n maxDate?: string;\n /**\n * The days of the week and dates that are unavailable.\n */\n unavailable?: {\n /**\n * The days of the week that are unavailable.\n */\n daysOfWeek?: WeekdayNumbers[];\n /**\n * The specific dates that are unavailable.\n */\n dates?: string[];\n };\n /**\n * The locale to use for the calendar.\n */\n locale?: Locale;\n /**\n * The time zone to use for the calendar.\n */\n defaultTimeZone?: IanaZone;\n /**\n * The day of the week to start the calendar on.\n */\n startDay?: \"Sunday\" | \"Monday\";\n\n /**\n * Whether the calendar should focus on the focused date.\n * @internal - Do not use this prop directly.\n */\n _disableAutofocus?: boolean;\n /** Whether the calendar should set all tab indexes to -1.\n * @internal - Do not use this prop directly.\n */\n _disableFocus?: boolean;\n};\n\ntype CalendarSingleProps = CalendarCommonProps & {\n /**\n * The function to call when the value changes.\n *\n * @param data - The data to pass to the function.\n */\n onSelection?: (data: { value: CalendarValue }) => void;\n /**\n * The default date value for uncontrolled mode.\n */\n defaultValue?: string | false;\n /**\n * The value for controlled mode.\n */\n value?: string;\n /**\n * Whether the calendar is in range mode.\n */\n range?: false;\n};\n\ntype CalendarRangeProps = CalendarCommonProps & {\n /**\n * The function to call when the value changes.\n *\n * @param data.value - The date value that is selected.\n */\n onSelection?: (data: { value: CalendarRangeValue }) => void;\n /**\n * The default date value for uncontrolled mode.\n */\n defaultValue?: { start?: string; end?: string };\n /**\n * The date value for controlled mode.\n */\n value?: { start?: string; end?: string };\n /**\n * Whether the calendar is in range mode.\n */\n range: true;\n};\n\nexport type CalendarProps = LayoutUtilProps &\n (CalendarSingleProps | CalendarRangeProps);\n\n/**\n * Calendar component for viewing and selecting a date or range of dates.\n *\n * Features:\n * - Single date and date range selection modes\n * - Month and year navigation with header buttons\n * - Configurable start day (Sunday or Monday)\n * - Date range restrictions with min/max dates\n * - Unavailable dates and days of week support\n * - Locale and timezone customization\n * - Full accessibility support with ARIA attributes\n * - Keyboard navigation support\n * - Responsive design with automatic width detection\n * - Month and year selection views\n * - Today button for quick navigation\n *\n * @example\n * <Calendar\n * value=\"2024-01-15\"\n * onSelection={({ value }) => console.log('Selected:', value)}\n * minDate=\"2024-01-01\"\n * maxDate=\"2024-12-31\"\n * />\n */\nexport const Calendar = Object.assign(\n forwardRef<HTMLDivElement, CalendarProps>(function CalendarInner(props, ref) {\n const uid = useId();\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n children,\n focusedDate: focusProp,\n defaultFocusedDate,\n locale = Intl.DateTimeFormat().resolvedOptions().locale as Locale,\n defaultTimeZone = Intl.DateTimeFormat().resolvedOptions()\n .timeZone as IanaZone,\n startDay = \"Sunday\",\n minDate,\n maxDate,\n unavailable = {\n dates: [],\n daysOfWeek: [],\n },\n id,\n style,\n value: iValue,\n defaultValue: iDefaultValue,\n onSelection,\n range,\n className,\n _disableAutofocus,\n _disableFocus,\n ...remainingProps\n } = componentProps;\n\n useEffect(() => {\n if (focusProp !== undefined) {\n warnOnce(FOCUSED_DATE_DEPRECATION_MESSAGE);\n }\n }, [focusProp]);\n\n const { dateMetadata, onMonthView } = useCalendarBetaProps();\n\n const calendarRef = useRef<HTMLDivElement>(null);\n const combinedRef = useMergeRefs([ref, calendarRef]);\n const lastIValue = useRef(iValue);\n const yearButtonRef = useRef<HTMLButtonElement>(null);\n const monthButtonRef = useRef<HTMLButtonElement>(null);\n const headerRef = useRef<HTMLSpanElement>(null);\n const [toolbarFocus, setToolbarFocus] = useState<\n (typeof toolbarFocusStates)[number]\n >(toolbarFocusStates[0]);\n\n const [calendarWidth, setCalendarWidth] = useState<number | undefined>(\n undefined,\n );\n\n const [calendarSelectionState, setCalendarSelectionState] = useState<\n \"day\" | \"month\" | \"year\"\n >(\"day\");\n\n const visibleHeaderButtons = useMemo(() => {\n if (calendarSelectionState !== \"day\") {\n return toolbarFocusStates.slice(0, 2);\n }\n return toolbarFocusStates;\n }, [calendarSelectionState]);\n\n useEffect(() => {\n if (!calendarRef.current || style?.width != null) return;\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const width = entry.contentRect.width;\n if (calendarSelectionState === \"day\" && width > 100) {\n setCalendarWidth(width);\n }\n }\n });\n\n resizeObserver.observe(calendarRef.current);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [calendarSelectionState, style?.width]);\n\n // Common\n const styleCombined = {\n width: calendarWidth,\n ...style,\n ...layoutStyles,\n };\n\n const classNameCombined = cx(styles[\"calendar\"], className);\n\n const { nDate, nDefaultDate, nToday } = useMemo(\n () => ({\n nDate: iValue\n ? typeof iValue === \"string\"\n ? normalizeDate(iValue, defaultTimeZone)\n : {\n start: iValue.start\n ? normalizeDate(iValue.start, defaultTimeZone)\n : null,\n end: iValue.end\n ? normalizeDate(iValue.end, defaultTimeZone)\n : null,\n }\n : null,\n nDefaultDate: iDefaultValue\n ? typeof iDefaultValue === \"string\"\n ? normalizeDate(iDefaultValue, defaultTimeZone)\n : {\n start: iDefaultValue.start\n ? normalizeDate(iDefaultValue.start, defaultTimeZone)\n : null,\n end: iDefaultValue?.end\n ? normalizeDate(iDefaultValue.end, defaultTimeZone)\n : null,\n }\n : null,\n nToday:\n typeof iValue === \"string\"\n ? normalizeDate(DateTime.now().toISO(), defaultTimeZone)\n : {\n start: normalizeDate(DateTime.now().toISO(), defaultTimeZone),\n end: normalizeDate(DateTime.now().toISO(), defaultTimeZone),\n },\n }),\n [iValue, iDefaultValue, defaultTimeZone],\n );\n\n const [value, setValue] = useState<\n | CalendarContextProps[\"value\"]\n | CalendarRangeContextProps[\"value\"]\n | undefined\n >(nDate ?? nDefaultDate ?? nToday);\n\n const getInitialDate = useMemo(() => {\n if (defaultFocusedDate) {\n return normalizeDate(defaultFocusedDate, defaultTimeZone);\n }\n if (iDefaultValue) {\n const date =\n typeof iDefaultValue === \"string\"\n ? normalizeDate(iDefaultValue, defaultTimeZone)\n : normalizeDate(\n iDefaultValue.start ?? iDefaultValue.end ?? \"\",\n defaultTimeZone,\n );\n return date;\n }\n if (\n !DateTime.isDateTime(nDate) &&\n !DateTime.isDateTime(nDefaultDate) &&\n !DateTime.isDateTime(nToday)\n ) {\n return nDate?.start ?? nDefaultDate?.start ?? nToday?.start;\n }\n\n return (nDate ?? nDefaultDate ?? nToday) as DateTime;\n }, [\n defaultFocusedDate,\n iDefaultValue,\n nDate,\n nDefaultDate,\n nToday,\n defaultTimeZone,\n ]);\n\n const initialDate = getInitialDate ?? DateTime.now();\n\n const [focusedDate, setFocusedDate] = useState<\n | CalendarContextProps[\"focusedDate\"]\n | CalendarRangeContextProps[\"focusedDate\"]\n | undefined\n >(initialDate);\n\n const [hoveredDate, setHoveredDate] = useState<\n | CalendarContextProps[\"hoveredDate\"]\n | CalendarRangeContextProps[\"hoveredDate\"]\n >();\n\n const [selectedMonth, setSelectedMonth] = useState<DateTime[\"month\"]>(\n initialDate.month,\n );\n const [selectedYear, setSelectedYear] = useState<DateTime[\"year\"]>(\n initialDate.year,\n );\n\n const currentVisibleMonth = useMemo(() => {\n return {\n year: focusedDate?.year ?? selectedYear,\n month: focusedDate?.month ?? selectedMonth,\n };\n }, [focusedDate?.month, focusedDate?.year, selectedYear, selectedMonth]);\n\n useEffect(\n () => onMonthView?.(currentVisibleMonth),\n // eslint-disable-next-line react-hooks/exhaustive-deps -- omit onMonthView from deps because we don't want to trigger infinite re-renders\n [currentVisibleMonth],\n );\n\n useEffect(() => {\n if (!focusProp && !defaultFocusedDate) return;\n if (focusProp) {\n setFocusedDate(normalizeDate(focusProp, defaultTimeZone));\n } else if (defaultFocusedDate) {\n setFocusedDate(normalizeDate(defaultFocusedDate, defaultTimeZone));\n setSelectedMonth(\n normalizeDate(defaultFocusedDate, defaultTimeZone).month,\n );\n setSelectedYear(\n normalizeDate(defaultFocusedDate, defaultTimeZone).year,\n );\n }\n // defaultTimeZone should not rerender\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [focusProp, defaultFocusedDate]);\n\n useEffect(() => {\n if (!iValue) {\n lastIValue.current = iValue;\n return;\n }\n if (typeof iValue === \"string\") {\n setValue(normalizeDate(iValue, defaultTimeZone));\n setFocusedDate(normalizeDate(iValue, defaultTimeZone));\n } else if (\n iValue.end &&\n (typeof lastIValue.current !== \"object\" ||\n lastIValue?.current?.end !== iValue.end)\n ) {\n setValue({\n start: iValue.start\n ? normalizeDate(iValue.start, defaultTimeZone)\n : null,\n end: iValue.end ? normalizeDate(iValue.end, defaultTimeZone) : null,\n });\n setFocusedDate(normalizeDate(iValue.end, defaultTimeZone));\n } else if (\n iValue.start &&\n (typeof lastIValue.current !== \"object\" ||\n lastIValue?.current?.start !== iValue.start)\n ) {\n setFocusedDate(normalizeDate(iValue.start, defaultTimeZone));\n }\n lastIValue.current = iValue;\n // defaultTimeZone should not rerender\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [iValue]);\n\n // Memoize normalized minDate and maxDate to avoid new references on every render\n const normalizedMinDate = useMemo(\n () => (minDate ? normalizeDate(minDate, defaultTimeZone) : null),\n [minDate, defaultTimeZone],\n );\n const normalizedMaxDate = useMemo(\n () => (maxDate ? normalizeDate(maxDate, defaultTimeZone) : null),\n [maxDate, defaultTimeZone],\n );\n\n const dateMetadataMap = useMemo(() => {\n if (!dateMetadata) return undefined;\n return new Map(dateMetadata.map((item) => [item.date, item.context]));\n }, [dateMetadata]);\n\n const providerValue = useMemo(() => {\n // TODO FUTURE: Hookup with dateformat from localization provider\n const format = {\n weekday: \"long\",\n month: \"long\",\n day: \"2-digit\",\n year: \"numeric\",\n } as const;\n\n return {\n disableAutofocus: _disableAutofocus ?? false,\n focusedDate,\n setFocusedDate,\n selectedMonth,\n setSelectedMonth,\n selectedYear,\n setSelectedYear,\n hoveredDate,\n setHoveredDate,\n value,\n setValue,\n defaultTimeZone,\n id: id ?? uid,\n onSelection,\n controlled: !!iValue,\n range,\n minDate: normalizedMinDate,\n maxDate: normalizedMaxDate,\n unavailable: {\n dates: new Set(unavailable.dates),\n daysOfWeek: new Set(unavailable.daysOfWeek),\n },\n locale,\n dateFormat: format,\n startDay,\n dateMetadata: dateMetadataMap,\n };\n }, [\n focusedDate,\n selectedMonth,\n selectedYear,\n hoveredDate,\n id,\n locale,\n normalizedMaxDate,\n normalizedMinDate,\n iValue,\n onSelection,\n range,\n defaultTimeZone,\n uid,\n unavailable,\n value,\n startDay,\n dateMetadataMap,\n _disableAutofocus,\n ]);\n\n const handleHeaderKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n switch (e.key) {\n case \"ArrowDown\": {\n e.preventDefault();\n if (calendarSelectionState === \"day\") {\n const focusedDayId = `${id ?? uid}-${focusedDate?.toISODate()}`;\n const root =\n (e.currentTarget.getRootNode() as Document | ShadowRoot) ??\n document;\n root.getElementById(focusedDayId)?.focus();\n }\n break;\n }\n case \"ArrowLeft\":\n e.preventDefault();\n setToolbarFocus((previousToolbarFocus) => {\n const newToolbarFocus =\n previousToolbarFocus === visibleHeaderButtons[0]\n ? visibleHeaderButtons[visibleHeaderButtons.length - 1]\n : (visibleHeaderButtons[\n visibleHeaderButtons.indexOf(previousToolbarFocus) - 1\n ] ?? visibleHeaderButtons[visibleHeaderButtons.length - 1]);\n const button = headerRef.current?.querySelector(\n `[data-calendar-header-button-name=\"${newToolbarFocus}\"]`,\n );\n if (\n button &&\n \"focus\" in button &&\n typeof (button as HTMLElement).focus === \"function\"\n ) {\n (button as HTMLElement).focus();\n }\n return newToolbarFocus;\n });\n\n break;\n case \"ArrowRight\":\n e.preventDefault();\n setToolbarFocus((previousToolbarFocus) => {\n const newToolbarFocus =\n previousToolbarFocus ===\n visibleHeaderButtons[visibleHeaderButtons.length - 1]\n ? visibleHeaderButtons[0]\n : (visibleHeaderButtons[\n visibleHeaderButtons.indexOf(previousToolbarFocus) + 1\n ] ?? visibleHeaderButtons[0]);\n const button = headerRef.current?.querySelector(\n `[data-calendar-header-button-name=\"${newToolbarFocus}\"]`,\n );\n if (\n button &&\n \"focus\" in button &&\n typeof (button as HTMLElement).focus === \"function\"\n ) {\n (button as HTMLElement).focus();\n }\n return newToolbarFocus;\n });\n }\n },\n [visibleHeaderButtons, calendarSelectionState, focusedDate, id, uid],\n );\n\n const handleMonthSelection = useCallback(\n (month: DateTime[\"month\"]) => {\n monthButtonRef.current?.focus();\n setToolbarFocus(toolbarFocusStates[0]);\n setSelectedMonth(month);\n setFocusedDate(\n DateTime.fromObject(\n {\n year: focusedDate?.year ?? 1,\n month: month,\n day: 1,\n },\n { zone: defaultTimeZone },\n ).startOf(\"day\"),\n );\n setCalendarSelectionState(\"day\");\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [focusedDate],\n );\n\n const handleYearSelection = useCallback(\n (year: number | null) => {\n if (year === null) return;\n yearButtonRef.current?.focus();\n setToolbarFocus(toolbarFocusStates[1]);\n setSelectedYear(year);\n setFocusedDate(\n DateTime.fromObject(\n {\n year: year,\n month: focusedDate?.month ?? 1,\n day: 1,\n },\n { zone: defaultTimeZone },\n ).startOf(\"day\"),\n );\n setCalendarSelectionState(\"day\");\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [focusedDate?.month],\n );\n\n return (\n <CalendarContext.Provider value={providerValue as CalendarContextProps}>\n <div\n ref={combinedRef}\n id={id ?? uid}\n style={styleCombined}\n className={classNameCombined}\n data-anv=\"calendar\"\n {...remainingProps}\n >\n <div className={styles[\"header\"]}>\n <span\n ref={headerRef}\n aria-label=\"Calendar navigation\"\n role=\"toolbar\"\n tabIndex={-1}\n onKeyDown={handleHeaderKeyDown}\n className={styles[\"controller\"]}\n >\n <CalendarMonthButton\n ref={monthButtonRef}\n tabIndex={\n _disableFocus\n ? -1\n : toolbarFocus === toolbarFocusStates[0]\n ? 0\n : -1\n }\n data-calendar-header-button\n data-calendar-header-button-name={toolbarFocusStates[0]}\n calendarSelectionState={calendarSelectionState}\n onClick={() => {\n setCalendarSelectionState((prev) =>\n prev === \"month\" ? \"day\" : \"month\",\n );\n setToolbarFocus(toolbarFocusStates[0]);\n }}\n />\n <CalendarYearButton\n ref={yearButtonRef}\n tabIndex={\n _disableFocus\n ? -1\n : toolbarFocus === toolbarFocusStates[1]\n ? 0\n : -1\n }\n data-calendar-header-button\n data-calendar-header-button-name={toolbarFocusStates[1]}\n calendarSelectionState={calendarSelectionState}\n onClick={() => {\n setCalendarSelectionState((prev) =>\n prev === \"year\" ? \"day\" : \"year\",\n );\n setToolbarFocus(toolbarFocusStates[1]);\n }}\n />\n {calendarSelectionState === \"day\" && (\n <>\n <CalendarPrev\n tabIndex={\n _disableFocus\n ? -1\n : toolbarFocus === toolbarFocusStates[2]\n ? 0\n : -1\n }\n data-calendar-header-button\n data-calendar-header-button-name={toolbarFocusStates[2]}\n onClick={() => setToolbarFocus(toolbarFocusStates[2])}\n />\n <CalendarNext\n tabIndex={\n _disableFocus\n ? -1\n : toolbarFocus === toolbarFocusStates[3]\n ? 0\n : -1\n }\n data-calendar-header-button\n data-calendar-header-button-name={toolbarFocusStates[3]}\n onClick={() => setToolbarFocus(toolbarFocusStates[3])}\n />\n <CalendarNow\n tabIndex={\n _disableFocus\n ? -1\n : toolbarFocus === toolbarFocusStates[4]\n ? 0\n : -1\n }\n data-calendar-header-button\n data-calendar-header-button-name={toolbarFocusStates[4]}\n onClickFixed={() => setToolbarFocus(toolbarFocusStates[4])}\n />\n </>\n )}\n </span>\n </div>\n {calendarSelectionState === \"day\" && <CalendarMonth />}\n {calendarSelectionState === \"month\" && (\n <CalendarMonthSelection onMonthSelection={handleMonthSelection} />\n )}\n {calendarSelectionState === \"year\" && (\n // Wrapper div provides some manual offsetting to account for internal padding of the year selector\n <div className={styles[\"year-selector\"]}>\n <YearSelector\n onConfirm={handleYearSelection}\n required\n defaultValue={selectedYear}\n min={normalizedMinDate?.year}\n max={normalizedMaxDate?.year}\n />\n </div>\n )}\n </div>\n </CalendarContext.Provider>\n );\n }),\n {\n /**\n * Calendar.Now component for navigating to today's date.\n *\n * Features:\n * - Quick navigation to current date\n * - Accessible button with proper ARIA labels\n * - Integrates with calendar context\n * - Data tracking integration for analytics\n *\n * @example\n * <Calendar.Now />\n */\n Now: CalendarNow,\n /**\n * Calendar.Month component for displaying the month grid.\n *\n * Features:\n * - Displays calendar days in a table format\n * - Handles day selection and navigation\n * - Supports range selection mode\n * - Accessible with proper ARIA attributes\n * - Data tracking integration for analytics\n *\n * @example\n * <Calendar.Month />\n */\n Month: CalendarMonth,\n /**\n * Calendar.Next component for navigating to the next month.\n *\n * Features:\n * - Navigation to next month\n * - Accessible button with proper ARIA labels\n * - Integrates with calendar context\n * - Data tracking integration for analytics\n *\n * @example\n * <Calendar.Next />\n */\n Next: CalendarNext,\n /**\n * Calendar.Prev component for navigating to the previous month.\n *\n * Features:\n * - Navigation to previous month\n * - Accessible button with proper ARIA labels\n * - Integrates with calendar context\n * - Data tracking integration for analytics\n *\n * @example\n * <Calendar.Prev />\n */\n Prev: CalendarPrev,\n /**\n * Calendar.MonthButton component for switching to month selection view.\n *\n * Features:\n * - Switches calendar to month selection mode\n * - Accessible button with proper ARIA labels\n * - Integrates with calendar context\n * - Data tracking integration for analytics\n *\n * @example\n * <Calendar.MonthButton />\n */\n MonthButton: CalendarMonthButton,\n /**\n * Calendar.YearButton component for switching to year selection view.\n *\n * Features:\n * - Switches calendar to year selection mode\n * - Accessible button with proper ARIA labels\n * - Integrates with calendar context\n * - Data tracking integration for analytics\n *\n * @example\n * <Calendar.YearButton />\n */\n YearButton: CalendarYearButton,\n },\n);\nCalendar.displayName = \"Calendar\";\n// export const useCalendar = useCoreCalendar;\nexport const CalendarElement = Calendar;\n"],"names":["IconKeyboardArrowUp","IconKeyboardArrowDown","styles","Prev","Next","date"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import { C as CalendarBetaPropsContext, a as Calendar$1 } from './Calendar-DnK6UwPE.js';
2
+ import { C as CalendarBetaPropsContext, a as Calendar$1 } from './Calendar-CK-AAaSG.js';
3
3
 
4
4
  const Calendar = (props) => {
5
5
  const { dateMetadata, onMonthView, ...stableProps } = props;
@@ -7,4 +7,4 @@ const Calendar = (props) => {
7
7
  };
8
8
 
9
9
  export { Calendar as C };
10
- //# sourceMappingURL=Calendar-C1mgmbWt.js.map
10
+ //# sourceMappingURL=Calendar-DLnn6dJE.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Calendar-C1mgmbWt.js","sources":["../src/beta/components/Calendar/Calendar.tsx"],"sourcesContent":["import {\n Calendar as StableCalendar,\n type CalendarProps as StableCalendarProps,\n} from \"../../../components\";\nimport { CalendarBetaPropsContext } from \"./CalendarBetaPropsContext\";\n\nexport interface CalendarBetaProps {\n dateMetadata?: {\n date: string;\n context: string;\n }[];\n onMonthView?: ({ month, year }: { month: number; year: number }) => void;\n}\n\n/**\n * Beta Calendar component — wraps the stable Calendar with per-date\n * annotations and month-view tracking, on top of its single/range date\n * selection.\n *\n * Features:\n * - All stable Calendar props and behavior (see `Calendar` in `components`)\n * - `dateMetadata` to annotate specific dates with contextual text (e.g.\n * \"3 available time slots\"), surfaced via `Calendar.Month`'s day pips\n * - `onMonthView` callback fired whenever the visible month/year changes\n *\n * @example\n * <Calendar\n * value=\"2024-01-15\"\n * onSelection={({ value }) => console.log('Selected:', value)}\n * dateMetadata={[{ date: \"2024-01-20\", context: \"3 available slots\" }]}\n * onMonthView={({ month, year }) => console.log('Viewing:', month, year)}\n * />\n */\nexport const Calendar = (props: CalendarBetaProps & StableCalendarProps) => {\n const { dateMetadata, onMonthView, ...stableProps } = props;\n return (\n <CalendarBetaPropsContext.Provider value={{ dateMetadata, onMonthView }}>\n <StableCalendar {...stableProps} />\n </CalendarBetaPropsContext.Provider>\n );\n};\n"],"names":["StableCalendar"],"mappings":";;;AAiCO,MAAM,QAAA,GAAW,CAAC,KAAA,KAAmD;AAC1E,EAAA,MAAM,EAAE,YAAA,EAAc,WAAA,EAAa,GAAG,aAAY,GAAI,KAAA;AACtD,EAAA,uBACE,GAAA,CAAC,wBAAA,CAAyB,QAAA,EAAzB,EAAkC,KAAA,EAAO,EAAE,YAAA,EAAc,WAAA,EAAY,EACpE,QAAA,kBAAA,GAAA,CAACA,UAAA,EAAA,EAAgB,GAAG,aAAa,CAAA,EACnC,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"Calendar-DLnn6dJE.js","sources":["../src/beta/components/Calendar/Calendar.tsx"],"sourcesContent":["import {\n Calendar as StableCalendar,\n type CalendarProps as StableCalendarProps,\n} from \"../../../components\";\nimport { CalendarBetaPropsContext } from \"./CalendarBetaPropsContext\";\n\nexport interface CalendarBetaProps {\n dateMetadata?: {\n date: string;\n context: string;\n }[];\n onMonthView?: ({ month, year }: { month: number; year: number }) => void;\n}\n\n/**\n * Beta Calendar component — wraps the stable Calendar with per-date\n * annotations and month-view tracking, on top of its single/range date\n * selection.\n *\n * Features:\n * - All stable Calendar props and behavior (see `Calendar` in `components`)\n * - `dateMetadata` to annotate specific dates with contextual text (e.g.\n * \"3 available time slots\"), surfaced via `Calendar.Month`'s day pips\n * - `onMonthView` callback fired whenever the visible month/year changes\n *\n * @example\n * <Calendar\n * value=\"2024-01-15\"\n * onSelection={({ value }) => console.log('Selected:', value)}\n * dateMetadata={[{ date: \"2024-01-20\", context: \"3 available slots\" }]}\n * onMonthView={({ month, year }) => console.log('Viewing:', month, year)}\n * />\n */\nexport const Calendar = (props: CalendarBetaProps & StableCalendarProps) => {\n const { dateMetadata, onMonthView, ...stableProps } = props;\n return (\n <CalendarBetaPropsContext.Provider value={{ dateMetadata, onMonthView }}>\n <StableCalendar {...stableProps} />\n </CalendarBetaPropsContext.Provider>\n );\n};\n"],"names":["StableCalendar"],"mappings":";;;AAiCO,MAAM,QAAA,GAAW,CAAC,KAAA,KAAmD;AAC1E,EAAA,MAAM,EAAE,YAAA,EAAc,WAAA,EAAa,GAAG,aAAY,GAAI,KAAA;AACtD,EAAA,uBACE,GAAA,CAAC,wBAAA,CAAyB,QAAA,EAAzB,EAAkC,KAAA,EAAO,EAAE,YAAA,EAAc,WAAA,EAAY,EACpE,QAAA,kBAAA,GAAA,CAACA,UAAA,EAAA,EAAgB,GAAG,aAAa,CAAA,EACnC,CAAA;AAEJ;;;;"}