@servicetitan/anvil2 3.16.0 → 3.17.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 (296) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/dist/{AiMark-BfmK30vL.js → AiMark-CYXbKuCA.js} +2 -2
  3. package/dist/{AiMark-BfmK30vL.js.map → AiMark-CYXbKuCA.js.map} +1 -1
  4. package/dist/AiMark.js +1 -1
  5. package/dist/{Alert-lLo1N7Tj.js → Alert-CYpl0czJ.js} +3 -3
  6. package/dist/{Alert-lLo1N7Tj.js.map → Alert-CYpl0czJ.js.map} +1 -1
  7. package/dist/Alert.js +1 -1
  8. package/dist/{Announcement-PfnsVVz1.js → Announcement-AN9HnhZ-.js} +2 -2
  9. package/dist/{Announcement-PfnsVVz1.js.map → Announcement-AN9HnhZ-.js.map} +1 -1
  10. package/dist/Announcement.js +1 -1
  11. package/dist/{Breadcrumbs-RdL4Fvmu.js → Breadcrumbs-C0CXs9Ma.js} +2 -2
  12. package/dist/{Breadcrumbs-RdL4Fvmu.js.map → Breadcrumbs-C0CXs9Ma.js.map} +1 -1
  13. package/dist/Breadcrumbs.js +1 -1
  14. package/dist/{Button-Dn6-01xl.js → Button-B_E6ybA-.js} +3 -3
  15. package/dist/{Button-Dn6-01xl.js.map → Button-B_E6ybA-.js.map} +1 -1
  16. package/dist/Button.js +1 -1
  17. package/dist/{ButtonToggle-BSU8GBxr.js → ButtonToggle-D0eXySEM.js} +2 -2
  18. package/dist/{ButtonToggle-BSU8GBxr.js.map → ButtonToggle-D0eXySEM.js.map} +1 -1
  19. package/dist/ButtonToggle.js +1 -1
  20. package/dist/{luxon-wpz4A-OQ.js → Calendar-BAIyDHX9.js} +1761 -3
  21. package/dist/Calendar-BAIyDHX9.js.map +1 -0
  22. package/dist/{Calendar-DoLRAWLp.js → Calendar-C_NPqjx3.js} +2 -2
  23. package/dist/{Calendar-DoLRAWLp.js.map → Calendar-C_NPqjx3.js.map} +1 -1
  24. package/dist/Calendar.js +2 -2
  25. package/dist/{Checkbox-U-kuWhgc.js → Checkbox-4Ow8rCbD.js} +2 -2
  26. package/dist/{Checkbox-U-kuWhgc.js.map → Checkbox-4Ow8rCbD.js.map} +1 -1
  27. package/dist/{Checkbox-CVxbe-iN.js → Checkbox-f1vutjn0.js} +3 -3
  28. package/dist/{Checkbox-CVxbe-iN.js.map → Checkbox-f1vutjn0.js.map} +1 -1
  29. package/dist/Checkbox.js +1 -1
  30. package/dist/{Chip-2OydLs66.js → Chip-AIF0WiNS.js} +2 -2
  31. package/dist/{Chip-2OydLs66.js.map → Chip-AIF0WiNS.js.map} +1 -1
  32. package/dist/Chip.js +1 -1
  33. package/dist/Combobox.js +1 -1
  34. package/dist/{DataTable-DIXP9-Bx.js → DataTableEditColumnsDrawer-DRgJgso9.js} +1288 -263
  35. package/dist/DataTableEditColumnsDrawer-DRgJgso9.js.map +1 -0
  36. package/dist/{DataTable.css → DataTableEditColumnsDrawer.css} +41 -0
  37. package/dist/{DateFieldRange-X2jdOTYY.js → DateFieldRange-D9PA985Z.js} +6 -7
  38. package/dist/{DateFieldRange-X2jdOTYY.js.map → DateFieldRange-D9PA985Z.js.map} +1 -1
  39. package/dist/DateFieldRange.js +1 -1
  40. package/dist/{DateFieldSingle-BJ16tpOz.js → DateFieldSingle-CMLojOb3.js} +6 -7
  41. package/dist/{DateFieldSingle-BJ16tpOz.js.map → DateFieldSingle-CMLojOb3.js.map} +1 -1
  42. package/dist/DateFieldSingle.js +1 -1
  43. package/dist/{DateFieldYearless-CMm8vtz_.js → DateFieldYearless-B5IyR75v.js} +4 -4
  44. package/dist/{DateFieldYearless-CMm8vtz_.js.map → DateFieldYearless-B5IyR75v.js.map} +1 -1
  45. package/dist/DateFieldYearless.js +1 -1
  46. package/dist/{DateFieldYearlessRange-BHHs-Z1Q.js → DateFieldYearlessRange-8yXILjx7.js} +3 -3
  47. package/dist/{DateFieldYearlessRange-BHHs-Z1Q.js.map → DateFieldYearlessRange-8yXILjx7.js.map} +1 -1
  48. package/dist/DateFieldYearlessRange.js +1 -1
  49. package/dist/{DaysOfTheWeek-BHXxs0Bo.js → DaysOfTheWeek-Cxp5VdYK.js} +3 -3
  50. package/dist/{DaysOfTheWeek-BHXxs0Bo.js.map → DaysOfTheWeek-Cxp5VdYK.js.map} +1 -1
  51. package/dist/DaysOfTheWeek.js +1 -1
  52. package/dist/{Dialog-_tHqOsbr.js → Dialog-KDAJphrA.js} +8 -7
  53. package/dist/Dialog-KDAJphrA.js.map +1 -0
  54. package/dist/Dialog.js +1 -1
  55. package/dist/{DialogCancelButton-C0r8hJ8Z.js → DialogCancelButton-CplrFu69.js} +2 -2
  56. package/dist/{DialogCancelButton-C0r8hJ8Z.js.map → DialogCancelButton-CplrFu69.js.map} +1 -1
  57. package/dist/Dnd.js +2 -2
  58. package/dist/{DndHandleButton-BRlodkDO.js → DndHandleButton-BJqj2hc0.js} +6 -4
  59. package/dist/DndHandleButton-BJqj2hc0.js.map +1 -0
  60. package/dist/DndSort.js +2 -2
  61. package/dist/{Drawer-D-ThWNp0.js → Drawer-C7E2NNnH.js} +9 -8
  62. package/dist/Drawer-C7E2NNnH.js.map +1 -0
  63. package/dist/Drawer.js +1 -1
  64. package/dist/DrillDown.css +41 -34
  65. package/dist/DrillDown.js +1 -1
  66. package/dist/DrillDown.module-BFE5BcJB.js +28 -0
  67. package/dist/DrillDown.module-BFE5BcJB.js.map +1 -0
  68. package/dist/{EditCard-B6l2vhBS.js → EditCard-CutlsXfK.js} +3 -3
  69. package/dist/{EditCard-B6l2vhBS.js.map → EditCard-CutlsXfK.js.map} +1 -1
  70. package/dist/EditCard.js +1 -1
  71. package/dist/{FieldLabel-ThEmUiAq.js → FieldLabel-DYcUS3A4.js} +2 -2
  72. package/dist/{FieldLabel-ThEmUiAq.js.map → FieldLabel-DYcUS3A4.js.map} +1 -1
  73. package/dist/FieldLabel.js +1 -1
  74. package/dist/{FilterBar-jFn8O7v7.js → FilterBar-DbDfZph-.js} +7 -7
  75. package/dist/{FilterBar-jFn8O7v7.js.map → FilterBar-DbDfZph-.js.map} +1 -1
  76. package/dist/FilterBar.js +1 -1
  77. package/dist/{InputMask-BQigi5oW.js → InputMask-BxdQc1ld.js} +3 -3
  78. package/dist/{InputMask-BQigi5oW.js.map → InputMask-BxdQc1ld.js.map} +1 -1
  79. package/dist/InputMask.js +1 -1
  80. package/dist/{ListView-YJscfG4x.js → ListView-BVanVvBk.js} +87 -108
  81. package/dist/ListView-BVanVvBk.js.map +1 -0
  82. package/dist/ListView.js +1 -1
  83. package/dist/{Listbox-CD9ZptSZ.js → Listbox-BR0YQIee.js} +2 -2
  84. package/dist/{Listbox-CD9ZptSZ.js.map → Listbox-BR0YQIee.js.map} +1 -1
  85. package/dist/Listbox.js +1 -1
  86. package/dist/{Menu-Da2OEN0o.js → Menu-DqP7YQgE.js} +2 -2
  87. package/dist/{Menu-Da2OEN0o.js.map → Menu-DqP7YQgE.js.map} +1 -1
  88. package/dist/Menu.js +1 -1
  89. package/dist/{MenuFooter-D__gg92C.js → MenuFooter-Dzhv0EfD.js} +2 -2
  90. package/dist/{MenuFooter-D__gg92C.js.map → MenuFooter-Dzhv0EfD.js.map} +1 -1
  91. package/dist/MultiSelectField.js +1 -1
  92. package/dist/{MultiSelectFieldSync-DuImKXuj.js → MultiSelectFieldSync-9253tott.js} +29 -29
  93. package/dist/{MultiSelectFieldSync-DuImKXuj.js.map → MultiSelectFieldSync-9253tott.js.map} +1 -1
  94. package/dist/MultiSelectFieldSync.css +71 -70
  95. package/dist/MultiSelectMenu.js +1 -1
  96. package/dist/{MultiSelectMenuSync-BhNXsgAN.js → MultiSelectMenuSync-BUJbWN2I.js} +5 -5
  97. package/dist/{MultiSelectMenuSync-BhNXsgAN.js.map → MultiSelectMenuSync-BUJbWN2I.js.map} +1 -1
  98. package/dist/{useNumberField-CXFYUZ_n.js → NumberField-DhxywJVp.js} +251 -5
  99. package/dist/NumberField-DhxywJVp.js.map +1 -0
  100. package/dist/NumberField.js +1 -1
  101. package/dist/{Page-ZSHNJs7z.js → Page-D_KL2tdK.js} +14 -13
  102. package/dist/{Page-ZSHNJs7z.js.map → Page-D_KL2tdK.js.map} +1 -1
  103. package/dist/Page.js +1 -1
  104. package/dist/{Pagination-Bsl99RRI.js → Pagination-DYpUtMha.js} +5 -5
  105. package/dist/{Pagination-Bsl99RRI.js.map → Pagination-DYpUtMha.js.map} +1 -1
  106. package/dist/Pagination.js +1 -1
  107. package/dist/{Popover-CIh1CsoJ.js → Popover-B2ix8Ji4.js} +2 -2
  108. package/dist/{Popover-CIh1CsoJ.js.map → Popover-B2ix8Ji4.js.map} +1 -1
  109. package/dist/Popover.js +1 -1
  110. package/dist/{ProgressBar-zPKYv4Il.js → ProgressBar-CjoOuJCi.js} +2 -2
  111. package/dist/{ProgressBar-zPKYv4Il.js.map → ProgressBar-CjoOuJCi.js.map} +1 -1
  112. package/dist/ProgressBar.js +1 -1
  113. package/dist/{Radio-C1VnatcL.js → Radio-Bz36_d0V.js} +2 -2
  114. package/dist/{Radio-C1VnatcL.js.map → Radio-Bz36_d0V.js.map} +1 -1
  115. package/dist/{Radio-BYowelK2.js → Radio-DOD1d9Vw.js} +3 -3
  116. package/dist/{Radio-BYowelK2.js.map → Radio-DOD1d9Vw.js.map} +1 -1
  117. package/dist/Radio.js +1 -1
  118. package/dist/{RichTextEditor-DcAVqd2d.js → RichTextEditor-BORVXVDw.js} +11 -11
  119. package/dist/{RichTextEditor-DcAVqd2d.js.map → RichTextEditor-BORVXVDw.js.map} +1 -1
  120. package/dist/RichTextEditor.js +1 -1
  121. package/dist/{SavedFiltersButton-Bl8mr-LB.js → SavedFiltersButton-vq_Kt4Qc.js} +10 -10
  122. package/dist/{SavedFiltersButton-Bl8mr-LB.js.map → SavedFiltersButton-vq_Kt4Qc.js.map} +1 -1
  123. package/dist/SavedFiltersButton.js +1 -1
  124. package/dist/{SegmentedControl-BHVJmmTH.js → SegmentedControl-BCqWq65N.js} +3 -3
  125. package/dist/{SegmentedControl-BHVJmmTH.js.map → SegmentedControl-BCqWq65N.js.map} +1 -1
  126. package/dist/SegmentedControl.js +1 -1
  127. package/dist/{SelectCard-DrmMU_GD.js → SelectCard-CJwetC1k.js} +3 -3
  128. package/dist/{SelectCard-DrmMU_GD.js.map → SelectCard-CJwetC1k.js.map} +1 -1
  129. package/dist/SelectCard.js +1 -1
  130. package/dist/SelectField.js +1 -1
  131. package/dist/{SelectFieldLabel-BxsKvfqo.js → SelectFieldLabel-BTKqybZm.js} +2 -2
  132. package/dist/{SelectFieldLabel-BxsKvfqo.js.map → SelectFieldLabel-BTKqybZm.js.map} +1 -1
  133. package/dist/{SelectFieldSync-SS7FELT3.js → SelectFieldSync-CoUi-BYw.js} +38 -11
  134. package/dist/SelectFieldSync-CoUi-BYw.js.map +1 -0
  135. package/dist/SelectMenu.js +1 -1
  136. package/dist/{SelectMenuSync-CPpE6vUG.js → SelectMenuSync-CvXx-6uU.js} +5 -5
  137. package/dist/{SelectMenuSync-CPpE6vUG.js.map → SelectMenuSync-CvXx-6uU.js.map} +1 -1
  138. package/dist/{SelectOptions-BDAu_9dv.js → SelectOptions-CGRUCyf4.js} +2 -2
  139. package/dist/{SelectOptions-BDAu_9dv.js.map → SelectOptions-CGRUCyf4.js.map} +1 -1
  140. package/dist/{SelectTrigger-B5h-aqhl.js → SelectTrigger-CRbl804u.js} +2 -2
  141. package/dist/{SelectTrigger-B5h-aqhl.js.map → SelectTrigger-CRbl804u.js.map} +1 -1
  142. package/dist/SelectTrigger.js +1 -1
  143. package/dist/{SelectTriggerBase-SML2Mlt-.js → SelectTriggerBase-BRUW_Zgc.js} +5 -5
  144. package/dist/{SelectTriggerBase-SML2Mlt-.js.map → SelectTriggerBase-BRUW_Zgc.js.map} +1 -1
  145. package/dist/SelectTriggerBase.css +51 -50
  146. package/dist/SelectTriggerBase.module-Dt4-6YvC.js +40 -0
  147. package/dist/SelectTriggerBase.module-Dt4-6YvC.js.map +1 -0
  148. package/dist/{Stepper-l_P6VPOv.js → Stepper-D3SHXfX1.js} +3 -3
  149. package/dist/{Stepper-l_P6VPOv.js.map → Stepper-D3SHXfX1.js.map} +1 -1
  150. package/dist/Stepper.js +1 -1
  151. package/dist/{Switch-1iNdXTik.js → Switch-rPPL4yEa.js} +2 -2
  152. package/dist/{Switch-1iNdXTik.js.map → Switch-rPPL4yEa.js.map} +1 -1
  153. package/dist/Switch.js +1 -1
  154. package/dist/{Tab-DR5YYXkq.js → Tab-CXwVQ5-G.js} +11 -7
  155. package/dist/Tab-CXwVQ5-G.js.map +1 -0
  156. package/dist/Tab.js +1 -1
  157. package/dist/Table.js +1 -1
  158. package/dist/{Text-rihxXHSe.js → Text-BRbkPr5s.js} +2 -2
  159. package/dist/{Text-rihxXHSe.js.map → Text-BRbkPr5s.js.map} +1 -1
  160. package/dist/Text.js +1 -1
  161. package/dist/{TextField-vuS7xeo-.js → TextField-B9hivHsD.js} +3 -3
  162. package/dist/{TextField-vuS7xeo-.js.map → TextField-B9hivHsD.js.map} +1 -1
  163. package/dist/{TextField-Bxd-Qzoi.js → TextField-DGRVg_Cw.js} +2 -2
  164. package/dist/{TextField-Bxd-Qzoi.js.map → TextField-DGRVg_Cw.js.map} +1 -1
  165. package/dist/TextField.js +1 -1
  166. package/dist/{Textarea-ppapJUwh.js → Textarea-DNqfV8rJ.js} +3 -3
  167. package/dist/{Textarea-ppapJUwh.js.map → Textarea-DNqfV8rJ.js.map} +1 -1
  168. package/dist/Textarea.js +1 -1
  169. package/dist/{TimeField-Hwt_oRbg.js → TimeField-DldMBNAj.js} +5 -5
  170. package/dist/{TimeField-Hwt_oRbg.js.map → TimeField-DldMBNAj.js.map} +1 -1
  171. package/dist/TimeField.js +1 -1
  172. package/dist/{TimezoneMessage-BrKB_psP.js → TimezoneMessage-CgVNxYpM.js} +2 -2
  173. package/dist/{TimezoneMessage-BrKB_psP.js.map → TimezoneMessage-CgVNxYpM.js.map} +1 -1
  174. package/dist/Toast.js +2 -2
  175. package/dist/{Toaster-dVGVVcat.js → Toaster-Bcy9XN3c.js} +2 -2
  176. package/dist/{Toaster-dVGVVcat.js.map → Toaster-Bcy9XN3c.js.map} +1 -1
  177. package/dist/{Toaster-SqkX0Kes.js → Toaster-C66ra4BK.js} +6 -8
  178. package/dist/Toaster-C66ra4BK.js.map +1 -0
  179. package/dist/{Toolbar-CMulzswf.js → Toolbar-Br-5yBxq.js} +5 -5
  180. package/dist/{Toolbar-CMulzswf.js.map → Toolbar-Br-5yBxq.js.map} +1 -1
  181. package/dist/{Toolbar-DGHZpFi9.js → Toolbar-DgPah7M3.js} +5 -5
  182. package/dist/{Toolbar-DGHZpFi9.js.map → Toolbar-DgPah7M3.js.map} +1 -1
  183. package/dist/Toolbar.js +2 -2
  184. package/dist/{ToolbarButtonToggle-T8YnSJ5x.js → ToolbarButtonToggle-BDfoHeie.js} +2 -2
  185. package/dist/{ToolbarButtonToggle-T8YnSJ5x.js.map → ToolbarButtonToggle-BDfoHeie.js.map} +1 -1
  186. package/dist/TreeSelectField.js +1 -1
  187. package/dist/{TreeSelectFieldSync-C0mXwYZL.js → TreeSelectFieldSync-1psUeqtG.js} +22 -22
  188. package/dist/{TreeSelectFieldSync-C0mXwYZL.js.map → TreeSelectFieldSync-1psUeqtG.js.map} +1 -1
  189. package/dist/TreeSelectFieldSync.css +36 -35
  190. package/dist/TreeSelectMenu.js +1 -1
  191. package/dist/{TreeSelectMenuSync-D2TvKxP-.js → TreeSelectMenuSync-DIPSYUnE.js} +4 -4
  192. package/dist/{TreeSelectMenuSync-D2TvKxP-.js.map → TreeSelectMenuSync-DIPSYUnE.js.map} +1 -1
  193. package/dist/{TypeaheadTextField-DgazozK7.js → TypeaheadTextField-Di9ulOBl.js} +3 -3
  194. package/dist/{TypeaheadTextField-DgazozK7.js.map → TypeaheadTextField-Di9ulOBl.js.map} +1 -1
  195. package/dist/TypeaheadTextField.js +1 -1
  196. package/dist/{YearlessDateInputWithPicker-Bc8a33D5.js → YearlessDateInputWithPicker-CQ2-6Uj4.js} +3 -3
  197. package/dist/{YearlessDateInputWithPicker-Bc8a33D5.js.map → YearlessDateInputWithPicker-CQ2-6Uj4.js.map} +1 -1
  198. package/dist/assets/icons/st/gnav_messages_active.svg +1 -0
  199. package/dist/assets/icons/st/gnav_messages_inactive.svg +1 -0
  200. package/dist/assets/icons/st.ts +2 -0
  201. package/dist/beta.js +17 -17
  202. package/dist/{bulkActionTypes-SukoplGV.js → bulkActionTypes-B71ZHjVu.js} +2 -2
  203. package/dist/{bulkActionTypes-SukoplGV.js.map → bulkActionTypes-B71ZHjVu.js.map} +1 -1
  204. package/dist/{filter-state-hDtCUggM.js → filter-state-Lw9qL0zP.js} +23 -23
  205. package/dist/{filter-state-hDtCUggM.js.map → filter-state-Lw9qL0zP.js.map} +1 -1
  206. package/dist/{index-C2dOrf4N.js → index-B3WhDZeI.js} +2 -2
  207. package/dist/{index-C2dOrf4N.js.map → index-B3WhDZeI.js.map} +1 -1
  208. package/dist/{index-Bldaza5t.js → index-CyN5oapA.js} +2 -2
  209. package/dist/{index-Bldaza5t.js.map → index-CyN5oapA.js.map} +1 -1
  210. package/dist/index-DfZCfS0S.js +36 -0
  211. package/dist/index-DfZCfS0S.js.map +1 -0
  212. package/dist/{index.esm-C2ZhC_8d.js → index.esm-CQXMoq5w.js} +2 -2
  213. package/dist/{index.esm-C2ZhC_8d.js.map → index.esm-CQXMoq5w.js.map} +1 -1
  214. package/dist/index.js +55 -53
  215. package/dist/index.js.map +1 -1
  216. package/dist/{react-ORV84FjM.js → react-CG1BUt2y.js} +5 -38
  217. package/dist/react-CG1BUt2y.js.map +1 -0
  218. package/dist/src/beta/components/Table/DataTable/DataTable.d.ts +31 -4
  219. package/dist/src/beta/components/Table/DataTable/DataTableEditColumnsDrawer.d.ts +18 -0
  220. package/dist/src/beta/components/Table/DataTable/index.d.ts +1 -0
  221. package/dist/src/beta/components/Table/DataTable/internal/DataTableAddRow.d.ts +11 -0
  222. package/dist/src/beta/components/Table/DataTable/internal/DataTableBulkActionBar.d.ts +23 -0
  223. package/dist/src/beta/components/Table/DataTable/internal/DataTableFilterToolbar.d.ts +12 -0
  224. package/dist/src/beta/components/Table/DataTable/internal/columnEditing/EditColumnsDrawer.d.ts +29 -0
  225. package/dist/src/beta/components/Table/DataTable/internal/columnEditing/columnLayout.d.ts +43 -0
  226. package/dist/src/beta/components/Table/DataTable/internal/columnEditing/toEditColumnsSection.d.ts +7 -0
  227. package/dist/src/beta/components/Table/DataTable/parts.d.ts +17 -0
  228. package/dist/src/beta/components/Table/DataTable/types.d.ts +245 -2
  229. package/dist/src/beta/components/Table/types.d.ts +6 -0
  230. package/dist/src/components/DrillDown/DrillDownHeader.d.ts +11 -2
  231. package/dist/src/components/DrillDown/index.d.ts +1 -1
  232. package/dist/src/components/DrillDown/internal/DrillDownContext.d.ts +7 -2
  233. package/dist/src/components/DrillDown/internal/useDrillDownContextState.d.ts +6 -3
  234. package/dist/src/hooks/usePrefersReducedMotion/index.d.ts +2 -0
  235. package/dist/src/hooks/usePrefersReducedMotion/prefersReducedMotion.d.ts +6 -0
  236. package/dist/src/hooks/usePrefersReducedMotion/useReducedMotion.d.ts +5 -0
  237. package/dist/{stripInlineMarkdown-BhYLEiXu.js → stripInlineMarkdown-B6lAJb4-.js} +2 -2
  238. package/dist/{stripInlineMarkdown-BhYLEiXu.js.map → stripInlineMarkdown-B6lAJb4-.js.map} +1 -1
  239. package/dist/{syncFilterUtils-SMop8ckR.js → syncFilterUtils-DnhuqY1S.js} +4 -4
  240. package/dist/{syncFilterUtils-SMop8ckR.js.map → syncFilterUtils-DnhuqY1S.js.map} +1 -1
  241. package/dist/token/core/component-variables.scss +49 -49
  242. package/dist/token/core/component.js +49 -49
  243. package/dist/token/core/component.scss +40 -40
  244. package/dist/token.js +49 -49
  245. package/dist/token.js.map +1 -1
  246. package/dist/{treeSync-B38r1dRQ.js → treeSync-BDwht_1r.js} +3 -3
  247. package/dist/{treeSync-B38r1dRQ.js.map → treeSync-BDwht_1r.js.map} +1 -1
  248. package/dist/{use-reduced-motion-yYB9Tb0D.js → use-reduced-motion-CUshwaEW.js} +2 -2
  249. package/dist/{use-reduced-motion-yYB9Tb0D.js.map → use-reduced-motion-CUshwaEW.js.map} +1 -1
  250. package/dist/{useDrillDownContext-D5_NjqY4.js → useDrillDownContext-BLDjyNEt.js} +2 -2
  251. package/dist/{useDrillDownContext-D5_NjqY4.js.map → useDrillDownContext-BLDjyNEt.js.map} +1 -1
  252. package/dist/{useDrilldown-BOeeNUsy.js → useDrilldown-CGdhHs8L.js} +54 -21
  253. package/dist/{useDrilldown-BOeeNUsy.js.map → useDrilldown-CGdhHs8L.js.map} +1 -1
  254. package/dist/{useInfiniteCombobox-7oIT2Mzn.js → useInfiniteCombobox-Db0kaxCj.js} +4 -4
  255. package/dist/{useInfiniteCombobox-7oIT2Mzn.js.map → useInfiniteCombobox-Db0kaxCj.js.map} +1 -1
  256. package/dist/{useInitialFocus-CGybEc6x.js → useInitialFocus-fBiTU9l8.js} +7 -4
  257. package/dist/useInitialFocus-fBiTU9l8.js.map +1 -0
  258. package/dist/{useInvalidateOnOptionsChange-BD2VBpbK.js → useInvalidateOnOptionsChange-PweyDORd.js} +4 -4
  259. package/dist/{useInvalidateOnOptionsChange-BD2VBpbK.js.map → useInvalidateOnOptionsChange-PweyDORd.js.map} +1 -1
  260. package/dist/{usePrefersReducedMotion-DR9B_D6w.js → usePrefersReducedMotion-BLoVFiJL.js} +11 -3
  261. package/dist/usePrefersReducedMotion-BLoVFiJL.js.map +1 -0
  262. package/dist/usePrefersReducedMotion.js +2 -1
  263. package/dist/usePrefersReducedMotion.js.map +1 -1
  264. package/package.json +3 -3
  265. package/dist/Calendar-IzXG1aJw.js +0 -1761
  266. package/dist/Calendar-IzXG1aJw.js.map +0 -1
  267. package/dist/DataTable-DIXP9-Bx.js.map +0 -1
  268. package/dist/Dialog-_tHqOsbr.js.map +0 -1
  269. package/dist/DndHandleButton-BRlodkDO.js.map +0 -1
  270. package/dist/Drawer-D-ThWNp0.js.map +0 -1
  271. package/dist/DrillDown.module-1VBKDZRA.js +0 -27
  272. package/dist/DrillDown.module-1VBKDZRA.js.map +0 -1
  273. package/dist/Lato.css +0 -24
  274. package/dist/ListView-YJscfG4x.js.map +0 -1
  275. package/dist/NumberField-CxmJx4gs.js +0 -252
  276. package/dist/NumberField-CxmJx4gs.js.map +0 -1
  277. package/dist/SelectFieldSync-SS7FELT3.js.map +0 -1
  278. package/dist/SelectTriggerBase.module-mYOfdBGA.js +0 -40
  279. package/dist/SelectTriggerBase.module-mYOfdBGA.js.map +0 -1
  280. package/dist/Tab-DR5YYXkq.js.map +0 -1
  281. package/dist/Toaster-SqkX0Kes.js.map +0 -1
  282. package/dist/app-css.379821199ec8105f2efd.bundle.css +0 -57579
  283. package/dist/bugfix-71.1orion.css +0 -491
  284. package/dist/design-system.859a127fc3b66175f0f0.bundle.css +0 -34599
  285. package/dist/drag_indicator-BRHAPLSJ.js +0 -6
  286. package/dist/drag_indicator-BRHAPLSJ.js.map +0 -1
  287. package/dist/favicon.ico +0 -0
  288. package/dist/kendo-css.ed976099efbbcc8b0639.bundle.css +0 -20601
  289. package/dist/luxon-wpz4A-OQ.js.map +0 -1
  290. package/dist/main.e26f249642be9a4bd747.bundle.css +0 -50386
  291. package/dist/react-ORV84FjM.js.map +0 -1
  292. package/dist/sui.a9dc22e36a27b7ea1ee8.bundle.css +0 -41149
  293. package/dist/useInitialFocus-CGybEc6x.js.map +0 -1
  294. package/dist/useNumberField-CXFYUZ_n.js.map +0 -1
  295. package/dist/usePrefersReducedMotion-DR9B_D6w.js.map +0 -1
  296. package/dist/vite.svg +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"Calendar-IzXG1aJw.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 /** When true, view changes move focus only while a day cell has focus. */\n disableAutofocus: boolean;\n /** Active keyboard-navigation date and source of the visible month. */\n focusedDate: DateTime;\n /** Updates the active keyboard-navigation date. */\n setFocusedDate: Dispatch<\n SetStateAction<CalendarContextCommonProps[\"focusedDate\"]>\n >;\n /** Month shown by the month control. */\n selectedMonth: DateTime[\"month\"];\n /** Updates the month control and month-selection state. */\n setSelectedMonth: Dispatch<\n SetStateAction<CalendarContextCommonProps[\"selectedMonth\"]>\n >;\n /** Year shown by the year control. */\n selectedYear: DateTime[\"year\"];\n /** Updates the year control and year-selection state. */\n setSelectedYear: Dispatch<\n SetStateAction<CalendarContextCommonProps[\"selectedYear\"]>\n >;\n /** Endpoint used to preview an incomplete range. */\n hoveredDate: DateTime;\n /** Updates the pending range-preview endpoint. */\n setHoveredDate: Dispatch<\n SetStateAction<CalendarContextCommonProps[\"hoveredDate\"] | undefined>\n >;\n /** Zone used for parsing, comparison, and today. */\n defaultTimeZone: IanaZone;\n /** Normalized earliest selectable date. */\n minDate: DateTime | null;\n /** Normalized latest selectable date. */\n maxDate: DateTime | null;\n /** Normalized recurring weekdays and individual dates excluded from selection. */\n unavailable: {\n /** Excluded ISO dates. */\n dates: Set<string>;\n /** Excluded Luxon weekday numbers. */\n daysOfWeek: Set<number>;\n };\n /** Locale for visible and accessible date labels. */\n locale: Exclude<CalendarProps[\"locale\"], undefined>;\n /** Prefix for day-cell IDs and focus lookup. */\n id: string;\n /** Format shared by day labels and range announcements. */\n dateFormat: Intl.DateTimeFormatOptions;\n /** First column in each rendered week. */\n startDay: \"Sunday\" | \"Monday\";\n /** Prevents internal selection updates when the value is controlled. */\n controlled?: boolean;\n /** Accessible metadata and pip content keyed by ISO date. */\n dateMetadata?: Map<string, string>;\n};\n\nexport type CalendarSingleContextProps = CalendarContextCommonProps & {\n /** Normalized single-date selection. */\n value: DateTime | null;\n /** Updates the internal single-date selection. */\n setValue: Dispatch<SetStateAction<CalendarSingleContextProps[\"value\"]>>;\n /** Notifies the consumer after a single-date selection changes. */\n onSelection?: (data: { value: CalendarValue }) => void;\n /** Identifies single-date context. */\n range?: false;\n};\nexport type CalendarRangeContextProps = CalendarContextCommonProps & {\n /** Normalized range selection; `end` may be absent while incomplete. */\n value: { start?: DateTime | null; end?: DateTime | null };\n /** Updates the internal range selection. */\n setValue: Dispatch<SetStateAction<CalendarRangeContextProps[\"value\"]>>;\n /** Notifies the consumer after either endpoint changes. */\n onSelection?: (data: { value: CalendarRangeValue }) => void;\n /** Identifies range context. */\n range: true;\n};\n\n/** State shared by Calendar's single-date and range subcomponents. */\nexport type CalendarContextProps =\n | CalendarSingleContextProps\n | CalendarRangeContextProps;\n\n/** Context consumed by Calendar's compound subcomponents. */\nexport const CalendarContext = createContext<CalendarContextProps | null>(null);\n\n/** Returns Calendar state or throws when called outside a Calendar. */\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\n/** Starts, restarts, or completes a range with the selected date. */\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();\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 /** @deprecated Ignored. Use `onClickFixed` instead. */\n onClick?: (e: MouseEvent<HTMLButtonElement>, date: string | null) => void;\n /** Called before Calendar navigates to and selects today. */\n onClickFixed?: MouseEventHandler<HTMLButtonElement> | undefined;\n} & Omit<ButtonProps, \"onClick\">;\n\n/** Moves today into view and selects it or applies it as the next range endpoint. */\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 /** Controls whether the chevron indicates that year selection is open. */\n calendarSelectionState: \"day\" | \"month\" | \"year\";\n};\n\n/** Displays the active year and toggles Calendar's year-selection view. */\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/** Moves Calendar to the previous month while respecting `minDate`. */\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 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/** Moves Calendar to the next month while respecting `maxDate`. */\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 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 /** Controls whether the chevron indicates that month selection is open. */\n calendarSelectionState: \"day\" | \"month\" | \"year\";\n};\n\n/** Displays the active month and toggles Calendar's month-selection view. */\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 /** Luxon date used for labels, availability, and selection state. */\n date: DateTime;\n};\n\n/** Calendar grid cell that manages pointer and keyboard date selection. */\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 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\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 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 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 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 -- hover renders replace `date`; depending on it would retrigger this focus effect indefinitely\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 /** @deprecated Ignored by the calendar row. */\n className?: ComponentPropsWithoutRef<\"tr\">[\"className\"];\n /** Seven dates rendered as Calendar day cells. */\n week: DateTime[];\n};\n\n/** Renders one week row in Calendar's month grid. */\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 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 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/** Month grid for the active Calendar view. */\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 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 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 /** Called with a Luxon month number after selection. */\n onMonthSelection: (month: DateTime[\"month\"]) => void;\n};\n\n/** Keyboard-navigable month picker for Calendar's active year. */\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 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 // Label-based cards otherwise blur to body on mousedown, closing a popover\n // host before selection can return focus to the month button.\n const preventBlur = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n }, []);\n\n const [focusedIndex, setFocusedIndex] = useState(selectedMonth - 1);\n\n useEffect(() => {\n if (minDate || maxDate) {\n // When min/max are set, start roving focus on 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\n/** Carries beta-only props into the stable Calendar implementation. */\nexport const CalendarBetaPropsContext = createContext<CalendarBetaProps>({});\n","import { useContext } from \"react\";\nimport { CalendarBetaPropsContext } from \"./CalendarBetaPropsContext\";\n\n/** Reads beta-only props from the nearest Calendar provider. */\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\n/** Selected date as an ISO string, or `undefined` when cleared. */\nexport type CalendarValue = string | undefined;\n\n/** Selected ISO date range; `end` is absent while the range is incomplete. */\nexport type CalendarRangeValue = { start?: string; end?: string } | undefined;\n\nconst toolbarFocusStates = [\"month\", \"year\", \"next\", \"prev\", \"now\"] as const;\n\ntype CalendarCommonProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"value\" | \"defaultValue\"\n> & {\n /** @deprecated Ignored because Calendar renders its own contents. */\n children?: ComponentPropsWithoutRef<\"div\">[\"children\"];\n /**\n * Establishes the visible month and year independently of the selection.\n * Updates also move the visible view.\n */\n defaultFocusedDate?: string | null;\n /**\n * @deprecated Use `defaultFocusedDate`. This prop does not reliably control\n * the initial view and will be removed in a future major release.\n */\n focusedDate?: string | null;\n /** Earliest selectable date; navigation stops at its month. */\n minDate?: string;\n /** Latest selectable date; navigation stops at its month. */\n maxDate?: string;\n /** Recurring weekdays and individual dates excluded from selection. */\n unavailable?: {\n /** Luxon weekday numbers excluded every week. */\n daysOfWeek?: WeekdayNumbers[];\n /** ISO dates excluded in addition to recurring weekdays. */\n dates?: string[];\n };\n /** Locale for month, weekday, and accessible date labels. Defaults to the browser locale. */\n locale?: Locale;\n /** Zone used to parse dates and determine today. Defaults to the browser time zone. */\n defaultTimeZone?: IanaZone;\n /** First column in the month grid. Defaults to `Sunday`. */\n startDay?: \"Sunday\" | \"Monday\";\n\n /** When true, view changes move focus only while a day cell has focus. @internal */\n _disableAutofocus?: boolean;\n /** Removes the navigation toolbar from the tab order. @internal */\n _disableFocus?: boolean;\n};\n\ntype CalendarSingleProps = CalendarCommonProps & {\n /** Called with the selected ISO date, or `undefined` when it is cleared. */\n onSelection?: (data: { value: CalendarValue }) => void;\n /** Initial uncontrolled selection. Omit or pass `false` to initialize to today. */\n defaultValue?: string | false;\n /** Controlled ISO date selection. */\n value?: string;\n /** Uses single-date selection when omitted or `false`. */\n range?: false;\n};\n\ntype CalendarRangeProps = CalendarCommonProps & {\n /** Called after either endpoint changes; `end` is absent until completed. */\n onSelection?: (data: { value: CalendarRangeValue }) => void;\n /** Initial uncontrolled range; either endpoint may be omitted. */\n defaultValue?: { start?: string; end?: string };\n /** Controlled ISO date range; either endpoint may be omitted. */\n value?: { start?: string; end?: string };\n /** Enables range values and range-selection behavior. */\n range: true;\n};\n\n/**\n * Set `range` to `true` for range values and callbacks; otherwise Calendar\n * uses single-date values.\n */\nexport type CalendarProps = LayoutUtilProps &\n (CalendarSingleProps | CalendarRangeProps);\n\n/**\n * Calendar for selecting a single date or date range. Includes keyboard\n * navigation and month, year, and today controls.\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 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 // eslint-disable-next-line react-hooks/exhaustive-deps -- changing the parsing zone should not resync the visible date\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 // eslint-disable-next-line react-hooks/exhaustive-deps -- changing the parsing zone should not resync the controlled value\n }, [iValue]);\n\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 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 <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 /** Selects today and moves it into view. */\n Now: CalendarNow,\n /** Displays the current month grid. */\n Month: CalendarMonth,\n /** Moves the calendar to the next month. */\n Next: CalendarNext,\n /** Moves the calendar to the previous month. */\n Prev: CalendarPrev,\n /** Opens or closes month selection. */\n MonthButton: CalendarMonthButton,\n /** Opens or closes year selection. */\n YearButton: CalendarYearButton,\n },\n);\nCalendar.displayName = \"Calendar\";\nexport const CalendarElement = Calendar;\n"],"names":["IconKeyboardArrowUp","IconKeyboardArrowDown","styles","Prev","Next","date"],"mappings":"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"}