@persona/design-system 0.1.6 → 0.1.7

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 (597) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/{Action-DSg3yZck.d.mts → Action-DkNqzc2X.d.mts} +3 -3
  3. package/dist/{Action-uduFOh2m.d.cts → Action-z1rV4qON.d.cts} +3 -3
  4. package/dist/Action.d.cts +1 -1
  5. package/dist/Action.d.mts +1 -1
  6. package/dist/Attribute.d.mts +3 -3
  7. package/dist/{Badge-CvdUyXSH.cjs → Badge-DAGPU4-e.cjs} +1 -4
  8. package/dist/{Badge-CvdUyXSH.cjs.map → Badge-DAGPU4-e.cjs.map} +1 -1
  9. package/dist/{Badge-pq6B-3ue.mjs → Badge-DRn_r6is.mjs} +1 -4
  10. package/dist/{Badge-pq6B-3ue.mjs.map → Badge-DRn_r6is.mjs.map} +1 -1
  11. package/dist/Breadcrumb-BOxfam3E.d.cts +31 -0
  12. package/dist/Breadcrumb-On7pOpgt.d.mts +31 -0
  13. package/dist/Breadcrumb.d.cts +2 -0
  14. package/dist/Breadcrumb.d.mts +2 -0
  15. package/dist/Breadcrumbs.d.cts +20 -0
  16. package/dist/Breadcrumbs.d.mts +20 -0
  17. package/dist/{Button-DcTUxRNI.d.mts → Button-DXsYU5qU.d.mts} +2 -2
  18. package/dist/Button.d.mts +1 -1
  19. package/dist/CalendarBase.d.mts +1 -1
  20. package/dist/{Card-CrQL0hXm.d.cts → Card-DnmrsQWi.d.cts} +2 -2
  21. package/dist/{Card-YzGS3nQI.d.mts → Card-IOBCsfke.d.mts} +3 -3
  22. package/dist/Card.d.cts +1 -1
  23. package/dist/Card.d.mts +1 -1
  24. package/dist/Card2.d.cts +1 -1
  25. package/dist/Card2.d.mts +1 -1
  26. package/dist/{Checkbox-UWdk4pqb.mjs → Checkbox-BghGF-iW.mjs} +2 -2
  27. package/dist/{Checkbox-UWdk4pqb.mjs.map → Checkbox-BghGF-iW.mjs.map} +1 -1
  28. package/dist/{Checkbox-BmjK0Wac.d.cts → Checkbox-DfI0Xp3y.d.cts} +1 -1
  29. package/dist/{Checkbox-B83WfsOZ.cjs → Checkbox-DhxpxzGp.cjs} +2 -2
  30. package/dist/{Checkbox-B83WfsOZ.cjs.map → Checkbox-DhxpxzGp.cjs.map} +1 -1
  31. package/dist/{Checkbox-Bc2kzl9q.d.mts → Checkbox-MUC37dLY.d.mts} +1 -1
  32. package/dist/Checkbox.d.cts +1 -1
  33. package/dist/Checkbox.d.mts +1 -1
  34. package/dist/CheckboxGroupField.d.cts +1 -1
  35. package/dist/CheckboxGroupField.d.mts +1 -1
  36. package/dist/{Combobox-R3_NDBi3.cjs → Combobox-4Bi9-N1p.cjs} +12 -7
  37. package/dist/Combobox-4Bi9-N1p.cjs.map +1 -0
  38. package/dist/{Combobox-Dx1u-L1A.d.cts → Combobox-5rAFq_52.d.cts} +3 -3
  39. package/dist/{Combobox-DtD1XXaf.d.mts → Combobox-Bedo_GIj.d.mts} +3 -3
  40. package/dist/{Combobox-I44W5oX0.mjs → Combobox-CeKMrlxy.mjs} +12 -7
  41. package/dist/Combobox-CeKMrlxy.mjs.map +1 -0
  42. package/dist/Combobox.d.cts +2 -2
  43. package/dist/Combobox.d.mts +2 -2
  44. package/dist/{ComboboxBase-d98GJD-k.d.cts → ComboboxBase-BoR9DVwe.d.cts} +6 -5
  45. package/dist/{ComboboxBase-sRVxlTJw.d.mts → ComboboxBase-DGZUdsQa.d.mts} +8 -7
  46. package/dist/ComboboxBase.d.cts +1 -1
  47. package/dist/ComboboxBase.d.mts +1 -1
  48. package/dist/{ComboboxMultiSelect-CRHf5TI-.d.cts → ComboboxMultiSelect-CnI6sFAF.d.cts} +2 -2
  49. package/dist/{ComboboxMultiSelect-CdLQDBMN.d.mts → ComboboxMultiSelect-DMWPiBrE.d.mts} +2 -2
  50. package/dist/ComboboxMultiSelect.d.cts +1 -1
  51. package/dist/ComboboxMultiSelect.d.mts +1 -1
  52. package/dist/{ComboboxSingleSelect-CxiQ2o6t.d.mts → ComboboxSingleSelect-CcppU_hq.d.mts} +4 -4
  53. package/dist/{ComboboxSingleSelect-DvK8QioK.d.cts → ComboboxSingleSelect-Japejm0g.d.cts} +4 -4
  54. package/dist/ComboboxSingleSelect.d.cts +1 -1
  55. package/dist/ComboboxSingleSelect.d.mts +1 -1
  56. package/dist/{CompactBar-k-rhZ5Z-.d.mts → CompactBar-2cpJD7qg.d.mts} +3 -3
  57. package/dist/{CompactBar-ODUl2Q6G.d.cts → CompactBar-DTsGo1zU.d.cts} +3 -3
  58. package/dist/CompactBar.d.cts +1 -1
  59. package/dist/CompactBar.d.mts +1 -1
  60. package/dist/{ConfigFormGroup-_yCksmZo.mjs → ConfigFormGroup-DISUwz5j.mjs} +2 -2
  61. package/dist/{ConfigFormGroup-_yCksmZo.mjs.map → ConfigFormGroup-DISUwz5j.mjs.map} +1 -1
  62. package/dist/{ConfigFormGroup-BhO9nm3P.cjs → ConfigFormGroup-DVRhkS2L.cjs} +2 -2
  63. package/dist/{ConfigFormGroup-BhO9nm3P.cjs.map → ConfigFormGroup-DVRhkS2L.cjs.map} +1 -1
  64. package/dist/{ControlBar-oT-I2y6E.d.cts → ControlBar-BGmXymCB.d.cts} +2 -2
  65. package/dist/{ControlBar-9m-DNImB.d.mts → ControlBar-DXyl1gjc.d.mts} +2 -2
  66. package/dist/ControlBar.d.cts +1 -1
  67. package/dist/ControlBar.d.mts +1 -1
  68. package/dist/DataTable.d.cts +3 -3
  69. package/dist/DataTable.d.mts +3 -3
  70. package/dist/DateField.d.cts +1 -1
  71. package/dist/DateField.d.mts +1 -1
  72. package/dist/DatePicker.d.cts +1 -1
  73. package/dist/DatePicker.d.mts +1 -1
  74. package/dist/DateRangePicker.d.cts +6 -1
  75. package/dist/DateRangePicker.d.mts +6 -1
  76. package/dist/{DropdownButton-BS1QfVX_.mjs → DropdownButton-B397h6ka.mjs} +2 -2
  77. package/dist/{DropdownButton-BS1QfVX_.mjs.map → DropdownButton-B397h6ka.mjs.map} +1 -1
  78. package/dist/{DropdownButton-Dpiy5v-R.cjs → DropdownButton-Du6dwZVL.cjs} +2 -2
  79. package/dist/{DropdownButton-Dpiy5v-R.cjs.map → DropdownButton-Du6dwZVL.cjs.map} +1 -1
  80. package/dist/DropdownButton.d.cts +1 -1
  81. package/dist/DropdownButton.d.mts +2 -2
  82. package/dist/{DropdownMenu-COkpUmIO.d.mts → DropdownMenu-5qIgQ14A.d.mts} +2 -2
  83. package/dist/{DropdownMenu-CeqZAxjs.cjs → DropdownMenu-CfJxgWN5.cjs} +2 -2
  84. package/dist/{DropdownMenu-CeqZAxjs.cjs.map → DropdownMenu-CfJxgWN5.cjs.map} +1 -1
  85. package/dist/{DropdownMenu-D1E1jpZu.d.cts → DropdownMenu-FIYz6oAo.d.cts} +2 -2
  86. package/dist/{DropdownMenu-cN_AnKAT.mjs → DropdownMenu-cnkoGc7C.mjs} +2 -2
  87. package/dist/{DropdownMenu-cN_AnKAT.mjs.map → DropdownMenu-cnkoGc7C.mjs.map} +1 -1
  88. package/dist/DropdownMenu.d.cts +1 -1
  89. package/dist/DropdownMenu.d.mts +1 -1
  90. package/dist/{ErrorProps-DBw1_Z0a.d.mts → ErrorProps-BosuK6zJ.d.cts} +1 -1
  91. package/dist/{ErrorProps-DLdVsYlk.d.cts → ErrorProps-iEj4BIVA.d.mts} +1 -1
  92. package/dist/ErrorProps.d.cts +1 -1
  93. package/dist/ErrorProps.d.mts +1 -1
  94. package/dist/{FormControl-fK4HA_yF.mjs → FormControl-ArDcvmir.mjs} +3 -3
  95. package/dist/{FormControl-fK4HA_yF.mjs.map → FormControl-ArDcvmir.mjs.map} +1 -1
  96. package/dist/{FormControl-OqBTbSwv.d.cts → FormControl-BrsML00L.d.cts} +2 -2
  97. package/dist/{FormControl-DjxkL5Ft.cjs → FormControl-Czt95h2L.cjs} +3 -3
  98. package/dist/{FormControl-DjxkL5Ft.cjs.map → FormControl-Czt95h2L.cjs.map} +1 -1
  99. package/dist/{FormControl-vfFzrYhv.d.mts → FormControl-DnsC4vTX.d.mts} +2 -2
  100. package/dist/FormControl.d.cts +1 -1
  101. package/dist/FormControl.d.mts +1 -1
  102. package/dist/FormControlLabel.d.mts +1 -1
  103. package/dist/{FormField-24UPuoL6.d.mts → FormField-BddCs6P0.d.mts} +2 -2
  104. package/dist/{FormField-Cqwi_PyR.d.cts → FormField-DoSXvnJ3.d.cts} +2 -2
  105. package/dist/FormField.d.cts +1 -1
  106. package/dist/FormField.d.mts +1 -1
  107. package/dist/{Header-WNGlG541.d.mts → Header-B-Us54dR.d.mts} +1 -1
  108. package/dist/{Header-D8oDtnIL.d.cts → Header-CkZvzbzL.d.cts} +1 -1
  109. package/dist/Header.d.cts +1 -1
  110. package/dist/Header.d.mts +1 -1
  111. package/dist/{HelperTooltip-oXdyk2At.d.cts → HelperTooltip-C1CYMpJP.d.cts} +2 -2
  112. package/dist/{HelperTooltip-Bd5pQLqL.d.mts → HelperTooltip-CofPKyZh.d.mts} +2 -2
  113. package/dist/HelperTooltip.d.cts +1 -1
  114. package/dist/HelperTooltip.d.mts +1 -1
  115. package/dist/{HoverCopyableField-DyW2iZuo.cjs → HoverCopyableField-B_WNB7Qp.cjs} +8 -8
  116. package/dist/HoverCopyableField-B_WNB7Qp.cjs.map +1 -0
  117. package/dist/{HoverCopyableField-DBkYvwii.mjs → HoverCopyableField-DR575ayC.mjs} +4 -4
  118. package/dist/HoverCopyableField-DR575ayC.mjs.map +1 -0
  119. package/dist/{IconButton-DggxojBH.d.mts → IconButton-Dnnlf9uO.d.mts} +2 -2
  120. package/dist/IconButton.d.mts +1 -1
  121. package/dist/ImageTile.d.cts +1 -1
  122. package/dist/ImageTile.d.mts +1 -1
  123. package/dist/InlineCombobox.d.mts +5 -2
  124. package/dist/InlineInput.d.mts +4 -1
  125. package/dist/{Input-DW7oacjc.d.mts → Input-4KeYlOWM.d.mts} +4 -4
  126. package/dist/{Input-DQS-BEym.cjs → Input-BDLUq-pK.cjs} +2 -2
  127. package/dist/{Input-DQS-BEym.cjs.map → Input-BDLUq-pK.cjs.map} +1 -1
  128. package/dist/{Input-XppkvfUf.d.cts → Input-CEcTvtX2.d.cts} +2 -2
  129. package/dist/{Input-Bl7633Ux.mjs → Input-PWfwMSJ7.mjs} +2 -2
  130. package/dist/{Input-Bl7633Ux.mjs.map → Input-PWfwMSJ7.mjs.map} +1 -1
  131. package/dist/Input.d.cts +1 -1
  132. package/dist/Input.d.mts +1 -1
  133. package/dist/{InputProps-DQpb2_E3.d.mts → InputProps-CTLG2Tr0.d.mts} +2 -2
  134. package/dist/{InputProps-7rEMxBED.d.cts → InputProps-DNlik5IZ.d.cts} +2 -2
  135. package/dist/InputProps.d.cts +1 -1
  136. package/dist/InputProps.d.mts +1 -1
  137. package/dist/{ListBox-B4uoo_PT.cjs → ListBox-BCscLcYL.cjs} +7 -7
  138. package/dist/ListBox-BCscLcYL.cjs.map +1 -0
  139. package/dist/{ListBox-B7sbubm5.mjs → ListBox-CDNOJmvz.mjs} +7 -7
  140. package/dist/{ListBox-B4uoo_PT.cjs.map → ListBox-CDNOJmvz.mjs.map} +1 -1
  141. package/dist/{ListBox-CVvKa5sc.d.mts → ListBox-DZIAlPbc.d.mts} +3 -3
  142. package/dist/{ListBox-DeVmbXeC.d.cts → ListBox-WyZvseo5.d.cts} +2 -2
  143. package/dist/ListBox.d.cts +1 -1
  144. package/dist/ListBox.d.mts +1 -1
  145. package/dist/ListBoxField.d.cts +2 -2
  146. package/dist/ListBoxField.d.mts +2 -2
  147. package/dist/{LoadingShimmer-b430vgof.mjs → LoadingShimmer-Bu6KtQ06.mjs} +1 -1
  148. package/dist/{LoadingShimmer-b430vgof.mjs.map → LoadingShimmer-Bu6KtQ06.mjs.map} +1 -1
  149. package/dist/{LoadingShimmer-uG2UzYQd.cjs → LoadingShimmer-CUjbAqGd.cjs} +1 -1
  150. package/dist/{LoadingShimmer-uG2UzYQd.cjs.map → LoadingShimmer-CUjbAqGd.cjs.map} +1 -1
  151. package/dist/LoadingShimmer.d.mts +1 -1
  152. package/dist/MaskedInput.d.cts +2 -2
  153. package/dist/MaskedInput.d.mts +1 -1
  154. package/dist/{Menu-CSgCXX0k.d.mts → Menu-BJ5c7HGD.d.mts} +2 -2
  155. package/dist/{Menu-C_NOsHAm.d.cts → Menu-BKMxOXkj.d.cts} +3 -3
  156. package/dist/{Menu-BLbEcodU.cjs → Menu-BXic-30n.cjs} +1 -1
  157. package/dist/{Menu-BLbEcodU.cjs.map → Menu-BXic-30n.cjs.map} +1 -1
  158. package/dist/{Menu-BbSyWxFD.mjs → Menu-CVuFAxl2.mjs} +1 -1
  159. package/dist/{Menu-BbSyWxFD.mjs.map → Menu-CVuFAxl2.mjs.map} +1 -1
  160. package/dist/Menu.d.cts +1 -1
  161. package/dist/Menu.d.mts +1 -1
  162. package/dist/Modal.d.cts +10 -5
  163. package/dist/Modal.d.mts +11 -6
  164. package/dist/{PageSelector-mn6q4SKY.d.mts → PageSelector-CMoV-cHa.d.mts} +3 -3
  165. package/dist/{PageSelector-COqR1tdA.d.cts → PageSelector-DoROR_Uh.d.cts} +3 -3
  166. package/dist/PageSelector.d.cts +1 -1
  167. package/dist/PageSelector.d.mts +1 -1
  168. package/dist/{Pagination-CeoHVtYD.d.cts → Pagination-B97xQ-Wk.d.cts} +2 -2
  169. package/dist/{Pagination-F8ofIWnG.mjs → Pagination-Cj08JRG9.mjs} +4 -3
  170. package/dist/{Pagination-F8ofIWnG.mjs.map → Pagination-Cj08JRG9.mjs.map} +1 -1
  171. package/dist/{Pagination-DEZFb552.cjs → Pagination-D4IVVj3S.cjs} +4 -3
  172. package/dist/Pagination-D4IVVj3S.cjs.map +1 -0
  173. package/dist/{Pagination-BUjpYIwq.d.mts → Pagination-QWNK_hH7.d.mts} +2 -2
  174. package/dist/Pagination.d.cts +1 -1
  175. package/dist/Pagination.d.mts +1 -1
  176. package/dist/{Pii-B_gBVAak.mjs → Pii-Bxh6_R4T.mjs} +1 -1
  177. package/dist/{Pii-B_gBVAak.mjs.map → Pii-Bxh6_R4T.mjs.map} +1 -1
  178. package/dist/{Pii--c8IxKI0.cjs → Pii-D-Ry7L0t.cjs} +1 -1
  179. package/dist/{Pii--c8IxKI0.cjs.map → Pii-D-Ry7L0t.cjs.map} +1 -1
  180. package/dist/{Popover-jHZICnQt.cjs → Popover-BAv7BujW.cjs} +1 -1
  181. package/dist/{Popover-jHZICnQt.cjs.map → Popover-BAv7BujW.cjs.map} +1 -1
  182. package/dist/{Popover-D4_aqKlm.mjs → Popover-D0QY5f-J.mjs} +1 -1
  183. package/dist/{Popover-D4_aqKlm.mjs.map → Popover-D0QY5f-J.mjs.map} +1 -1
  184. package/dist/{PseudoClassProps--MiDp2l2.d.mts → PseudoClassProps-ySXCGUEQ.d.mts} +1 -1
  185. package/dist/PseudoClassProps.d.mts +1 -1
  186. package/dist/{Radio-DnnJl87b.mjs → Radio-C9DevagH.mjs} +2 -2
  187. package/dist/{Radio-DnnJl87b.mjs.map → Radio-C9DevagH.mjs.map} +1 -1
  188. package/dist/{Radio-BN9FLRHy.cjs → Radio-nw846eRv.cjs} +2 -2
  189. package/dist/{Radio-BN9FLRHy.cjs.map → Radio-nw846eRv.cjs.map} +1 -1
  190. package/dist/{RadioGroup-BDHhFlmy.mjs → RadioGroup-B3hRbIWF.mjs} +2 -2
  191. package/dist/{RadioGroup-BDHhFlmy.mjs.map → RadioGroup-B3hRbIWF.mjs.map} +1 -1
  192. package/dist/{RadioGroup-BDO3pTgP.d.cts → RadioGroup-D_H1B7JV.d.cts} +1 -1
  193. package/dist/{RadioGroup-D28hdlhz.cjs → RadioGroup-DmGVJCgT.cjs} +2 -2
  194. package/dist/{RadioGroup-D28hdlhz.cjs.map → RadioGroup-DmGVJCgT.cjs.map} +1 -1
  195. package/dist/{RadioGroup-DfhvXpi3.d.mts → RadioGroup-nhMXEbCx.d.mts} +1 -1
  196. package/dist/RadioGroup.d.cts +1 -1
  197. package/dist/RadioGroup.d.mts +1 -1
  198. package/dist/{SearchInput-B6d2Qyzb.d.cts → SearchInput-CAHYPQVX.d.cts} +2 -2
  199. package/dist/{SearchInput-2lsv5_R6.d.mts → SearchInput-s6qGC2WZ.d.mts} +2 -2
  200. package/dist/SearchInput.d.cts +1 -1
  201. package/dist/SearchInput.d.mts +1 -1
  202. package/dist/Section.d.mts +1 -1
  203. package/dist/{SectionHeading-BLDimf5d.d.mts → SectionHeading-CDBQ4m9E.d.mts} +2 -2
  204. package/dist/{SectionHeading-DZyfNPn0.d.cts → SectionHeading-D-L4uPoX.d.cts} +2 -2
  205. package/dist/SectionHeading.d.cts +1 -1
  206. package/dist/SectionHeading.d.mts +1 -1
  207. package/dist/{SegmentedControl-pRkMcMXe.mjs → SegmentedControl-B1ZLgu61.mjs} +2 -2
  208. package/dist/{SegmentedControl-pRkMcMXe.mjs.map → SegmentedControl-B1ZLgu61.mjs.map} +1 -1
  209. package/dist/{SegmentedControl-1QD2zH3l.d.mts → SegmentedControl-BYuXohIp.d.cts} +1 -1
  210. package/dist/{SegmentedControl-C51htGBp.d.cts → SegmentedControl-CE845gnm.d.mts} +1 -1
  211. package/dist/{SegmentedControl-DTkFgjac.cjs → SegmentedControl-CIJz0oxY.cjs} +2 -2
  212. package/dist/{SegmentedControl-DTkFgjac.cjs.map → SegmentedControl-CIJz0oxY.cjs.map} +1 -1
  213. package/dist/SegmentedControl.d.cts +1 -1
  214. package/dist/SegmentedControl.d.mts +1 -1
  215. package/dist/{Select-BysJW9mH.d.mts → Select-BMEwCfbv.d.mts} +3 -3
  216. package/dist/{Select-Fg2z5J-p.mjs → Select-ByTgXOlU.mjs} +4 -4
  217. package/dist/{Select-Fg2z5J-p.mjs.map → Select-ByTgXOlU.mjs.map} +1 -1
  218. package/dist/{Select-CowngLd7.cjs → Select-C65bfYeT.cjs} +4 -4
  219. package/dist/{Select-CowngLd7.cjs.map → Select-C65bfYeT.cjs.map} +1 -1
  220. package/dist/{Select-XN23Ui_j.d.cts → Select-NcaURrGZ.d.cts} +3 -3
  221. package/dist/Select.d.cts +1 -1
  222. package/dist/Select.d.mts +1 -1
  223. package/dist/{Spinner-DaSlM4kU.cjs → Spinner-B6bx70yR.cjs} +1 -1
  224. package/dist/{Spinner-DaSlM4kU.cjs.map → Spinner-B6bx70yR.cjs.map} +1 -1
  225. package/dist/{Spinner-D9-u_5zS.mjs → Spinner-BEPF42RW.mjs} +1 -1
  226. package/dist/{Spinner-D9-u_5zS.mjs.map → Spinner-BEPF42RW.mjs.map} +1 -1
  227. package/dist/{Stack-B5VYkPBe.d.cts → Stack-D979gYU9.d.cts} +1 -1
  228. package/dist/{Stack-Du7tLSPC.d.mts → Stack-UMhJ6F_3.d.mts} +1 -1
  229. package/dist/Stack.d.cts +1 -1
  230. package/dist/Stack.d.mts +1 -1
  231. package/dist/{Sticker-XfyoDEod.d.mts → Sticker-DjF9VJQB.d.mts} +4 -4
  232. package/dist/{Sticker-D9HjFQ6e.d.cts → Sticker-N8XZnv7M.d.cts} +3 -3
  233. package/dist/Sticker.d.cts +1 -1
  234. package/dist/Sticker.d.mts +1 -1
  235. package/dist/Tab.d.mts +1 -1
  236. package/dist/{TabBar-D8WCGYd5.cjs → TabBar-BpHMYvNb.cjs} +4 -2
  237. package/dist/TabBar-BpHMYvNb.cjs.map +1 -0
  238. package/dist/{TabBar-CAv10XAF.mjs → TabBar-ByusqAXF.mjs} +4 -2
  239. package/dist/TabBar-ByusqAXF.mjs.map +1 -0
  240. package/dist/TabBarIconButton.d.mts +1 -1
  241. package/dist/{Table-B3FJsvXP.cjs → Table-C9rjUVpn.cjs} +2 -2
  242. package/dist/{Table-B3FJsvXP.cjs.map → Table-C9rjUVpn.cjs.map} +1 -1
  243. package/dist/{Table-CGtyWI6V.mjs → Table-CNs8p8hL.mjs} +2 -2
  244. package/dist/{Table-CGtyWI6V.mjs.map → Table-CNs8p8hL.mjs.map} +1 -1
  245. package/dist/{Table-D4SMuVIR.d.cts → Table-D3nyiZt0.d.mts} +1 -1
  246. package/dist/{Table-C8D4lpSa.d.mts → Table-DJZtluW3.d.cts} +1 -1
  247. package/dist/Table.d.cts +1 -1
  248. package/dist/Table.d.mts +1 -1
  249. package/dist/{TableBody-0cd50RuX.d.mts → TableBody-BFPF07n4.d.cts} +1 -1
  250. package/dist/{TableBody-BLmn5h3y.d.cts → TableBody-DpRjZgzU.d.mts} +1 -1
  251. package/dist/TableBody.d.cts +1 -1
  252. package/dist/TableBody.d.mts +1 -1
  253. package/dist/{TableBox-CPCWzwSl.mjs → TableBox-DIJffyts.mjs} +227 -59
  254. package/dist/TableBox-DIJffyts.mjs.map +1 -0
  255. package/dist/{TableBox-D_B9atn2.cjs → TableBox-DO-yToJk.cjs} +226 -58
  256. package/dist/TableBox-DO-yToJk.cjs.map +1 -0
  257. package/dist/TableBox.d.cts +2 -2
  258. package/dist/TableBox.d.mts +2 -2
  259. package/dist/{TableBoxCell-CEvOcGYa.d.mts → TableBoxCell-D1bjYv7b.d.mts} +27 -10
  260. package/dist/{TableBoxCell-DJz423uN.d.cts → TableBoxCell-DOQ8PnAT.d.cts} +27 -10
  261. package/dist/TableBoxCell.d.cts +1 -1
  262. package/dist/TableBoxCell.d.mts +1 -1
  263. package/dist/TableBoxField.d.cts +20 -5
  264. package/dist/TableBoxField.d.mts +19 -5
  265. package/dist/{TableBoxRow-CZwVgei6.d.cts → TableBoxRow-BUK5RjRA.d.cts} +12 -3
  266. package/dist/{TableBoxRow-LyHvITwZ.d.mts → TableBoxRow-CTR14HJF.d.mts} +12 -3
  267. package/dist/TableBoxRow.d.cts +1 -1
  268. package/dist/TableBoxRow.d.mts +1 -1
  269. package/dist/{TableBoxRowActions-C8SAxrYG.d.mts → TableBoxRowActions-BoMt5d0b.d.mts} +2 -2
  270. package/dist/{TableBoxRowActions-VDAOxNDG.d.cts → TableBoxRowActions-CKgUEH38.d.cts} +2 -2
  271. package/dist/TableBoxRowActions.d.cts +1 -1
  272. package/dist/TableBoxRowActions.d.mts +1 -1
  273. package/dist/TableBoxRowContext.d.mts +5 -3
  274. package/dist/TableCell.d.cts +1 -1
  275. package/dist/TableCell.d.mts +1 -1
  276. package/dist/{TableControls-B4gpAvl7.d.mts → TableControls-BZyiqk9V.d.mts} +3 -3
  277. package/dist/{TableControls-BG0OKwjj.d.cts → TableControls-Bkd3jhC1.d.cts} +3 -3
  278. package/dist/{TableControls-B2ZsNlr6.mjs → TableControls-BkdSeQvt.mjs} +8 -8
  279. package/dist/{TableControls-B2ZsNlr6.mjs.map → TableControls-BkdSeQvt.mjs.map} +1 -1
  280. package/dist/{TableControls-B7QEAzru.cjs → TableControls-DcbnNqeK.cjs} +8 -8
  281. package/dist/{TableControls-B7QEAzru.cjs.map → TableControls-DcbnNqeK.cjs.map} +1 -1
  282. package/dist/TableControls.d.cts +1 -1
  283. package/dist/TableControls.d.mts +1 -1
  284. package/dist/{TableControlsContext-NdzzGevw.d.mts → TableControlsContext-CleTWT7z.d.mts} +2 -2
  285. package/dist/{TableControlsContext-CanIAaLW.d.cts → TableControlsContext-D6XpuRVw.d.cts} +2 -2
  286. package/dist/TableControlsContext.d.cts +1 -1
  287. package/dist/TableControlsContext.d.mts +1 -1
  288. package/dist/{TableHead-CuHNOeCj.d.mts → TableHead-CTsZNRJm.d.cts} +1 -1
  289. package/dist/{TableHead-roexW17v.d.cts → TableHead-wl78HqPT.d.mts} +1 -1
  290. package/dist/TableHead.d.cts +1 -1
  291. package/dist/TableHead.d.mts +1 -1
  292. package/dist/{TableHeaderCell-Cflho9R2.d.mts → TableHeaderCell-B2yiOw4w.d.mts} +1 -1
  293. package/dist/{TableHeaderCell-BTGuqVXy.d.cts → TableHeaderCell-UoY92mzR.d.cts} +1 -1
  294. package/dist/TableHeaderCell.d.cts +1 -1
  295. package/dist/TableHeaderCell.d.mts +1 -1
  296. package/dist/{TableLayout-BvVsuUVb.d.cts → TableLayout-GyRS-Awa.d.cts} +1 -1
  297. package/dist/{TableLayout-D9BGrjRs.d.mts → TableLayout-_TWUnffx.d.mts} +1 -1
  298. package/dist/TableLayout.d.cts +1 -1
  299. package/dist/TableLayout.d.mts +1 -1
  300. package/dist/{TableRow-BfGJSGZH.d.cts → TableRow-BVzduO4G.d.cts} +1 -1
  301. package/dist/{TableRow-CjQmDmfx.d.mts → TableRow-C-faHbkL.d.mts} +2 -2
  302. package/dist/TableRow.d.cts +1 -1
  303. package/dist/TableRow.d.mts +1 -1
  304. package/dist/TableTH.d.cts +1 -1
  305. package/dist/TableTH.d.mts +1 -1
  306. package/dist/{TableViewConfigurationDropdown-DMeFkVUa.d.mts → TableViewConfigurationDropdown-D2TM2wCv.d.mts} +2 -2
  307. package/dist/{TableViewConfigurationDropdown-BaQ1IsYM.d.cts → TableViewConfigurationDropdown-u3-prEHJ.d.cts} +2 -2
  308. package/dist/TableViewConfigurationDropdown.d.cts +1 -1
  309. package/dist/TableViewConfigurationDropdown.d.mts +1 -1
  310. package/dist/{Text-CPd0r0w2.d.mts → Text-D3FXEnG6.d.mts} +3 -3
  311. package/dist/Text.d.mts +1 -1
  312. package/dist/{TextArea-CJJlw3rV.mjs → TextArea-DIPeBLkr.mjs} +2 -2
  313. package/dist/{TextArea-CJJlw3rV.mjs.map → TextArea-DIPeBLkr.mjs.map} +1 -1
  314. package/dist/{TextArea-p3oek3Zq.cjs → TextArea-DVHi0K7M.cjs} +2 -2
  315. package/dist/{TextArea-p3oek3Zq.cjs.map → TextArea-DVHi0K7M.cjs.map} +1 -1
  316. package/dist/{TextArea-Dl9_Zizx.d.cts → TextArea-KpDoXg-5.d.cts} +2 -2
  317. package/dist/{TextArea-J1MD_8rK.d.mts → TextArea-weASn4Hq.d.mts} +2 -2
  318. package/dist/TextArea.d.cts +1 -1
  319. package/dist/TextArea.d.mts +1 -1
  320. package/dist/{TextUnderlineTooltip-D8GFsk5C.d.mts → TextUnderlineTooltip-Cep5cgEQ.d.mts} +2 -2
  321. package/dist/{TextUnderlineTooltip-BDMs4iXn.d.cts → TextUnderlineTooltip-cSMjZOuB.d.cts} +2 -2
  322. package/dist/TextUnderlineTooltip.d.cts +1 -1
  323. package/dist/TextUnderlineTooltip.d.mts +1 -1
  324. package/dist/Tile.d.cts +1 -1
  325. package/dist/Tile.d.mts +1 -1
  326. package/dist/Toast.d.cts +1 -1
  327. package/dist/Toast.d.mts +1 -1
  328. package/dist/{Toggle-CY67yh4T.d.mts → Toggle-BQCOJZjZ.d.mts} +1 -1
  329. package/dist/{Toggle-7o-n5vF6.cjs → Toggle-CTtrhzsV.cjs} +2 -2
  330. package/dist/{Toggle-7o-n5vF6.cjs.map → Toggle-CTtrhzsV.cjs.map} +1 -1
  331. package/dist/{Toggle-Dw4hisXm.d.cts → Toggle-CYQE1Nk_.d.cts} +1 -1
  332. package/dist/{Toggle-DOo0cLmI.mjs → Toggle-CfjUQlcK.mjs} +2 -2
  333. package/dist/{Toggle-DOo0cLmI.mjs.map → Toggle-CfjUQlcK.mjs.map} +1 -1
  334. package/dist/Toggle.d.cts +1 -1
  335. package/dist/Toggle.d.mts +1 -1
  336. package/dist/{Tooltip-CE1oH6Iz.d.cts → Tooltip-BhGRP9QA.d.cts} +2 -2
  337. package/dist/{Tooltip-DtWJO_kU.d.mts → Tooltip-DRgufW3i.d.mts} +2 -2
  338. package/dist/Tooltip.d.cts +1 -1
  339. package/dist/Tooltip.d.mts +1 -1
  340. package/dist/{TruncatedText-BBoWmFii.d.mts → TruncatedText-Cy8NpHzm.d.mts} +1 -1
  341. package/dist/{TruncatedText-DMpR-yaJ.d.cts → TruncatedText-D8f3AiBL.d.cts} +1 -1
  342. package/dist/components/Attribute/index.cjs +2 -2
  343. package/dist/components/Attribute/index.mjs +4 -4
  344. package/dist/components/Attribute/index.mjs.map +1 -1
  345. package/dist/components/Badge/index.cjs +1 -1
  346. package/dist/components/Badge/index.mjs +1 -1
  347. package/dist/components/Breadcrumbs/index.cjs +275 -0
  348. package/dist/components/Breadcrumbs/index.cjs.map +1 -0
  349. package/dist/components/Breadcrumbs/index.d.cts +2 -0
  350. package/dist/components/Breadcrumbs/index.d.mts +2 -0
  351. package/dist/components/Breadcrumbs/index.mjs +268 -0
  352. package/dist/components/Breadcrumbs/index.mjs.map +1 -0
  353. package/dist/components/Button/index.d.mts +2 -2
  354. package/dist/components/ButtonGroup/index.cjs +1 -1
  355. package/dist/components/ButtonGroup/index.mjs +1 -1
  356. package/dist/components/Card/index.d.cts +2 -2
  357. package/dist/components/Card/index.d.mts +2 -2
  358. package/dist/components/CardV2/index.cjs +6 -23
  359. package/dist/components/CardV2/index.cjs.map +1 -1
  360. package/dist/components/CardV2/index.d.cts +1 -1
  361. package/dist/components/CardV2/index.d.mts +1 -1
  362. package/dist/components/CardV2/index.mjs +4 -21
  363. package/dist/components/CardV2/index.mjs.map +1 -1
  364. package/dist/components/Checkbox/index.cjs +1 -1
  365. package/dist/components/Checkbox/index.d.cts +1 -1
  366. package/dist/components/Checkbox/index.d.mts +1 -1
  367. package/dist/components/Checkbox/index.mjs +1 -1
  368. package/dist/components/Combobox/index.cjs +1 -1
  369. package/dist/components/Combobox/index.d.cts +2 -2
  370. package/dist/components/Combobox/index.d.mts +2 -2
  371. package/dist/components/Combobox/index.mjs +1 -1
  372. package/dist/components/ConfigFormGroup/index.cjs +2 -2
  373. package/dist/components/ConfigFormGroup/index.mjs +2 -2
  374. package/dist/components/DataTable/TableControls/index.cjs +1 -1
  375. package/dist/components/DataTable/TableControls/index.d.cts +5 -5
  376. package/dist/components/DataTable/TableControls/index.d.mts +5 -5
  377. package/dist/components/DataTable/TableControls/index.mjs +1 -1
  378. package/dist/components/DataTable/index.cjs +8 -9
  379. package/dist/components/DataTable/index.cjs.map +1 -1
  380. package/dist/components/DataTable/index.mjs +8 -9
  381. package/dist/components/DataTable/index.mjs.map +1 -1
  382. package/dist/components/DataTable/types.d.cts +2 -2
  383. package/dist/components/DataTable/types.d.mts +2 -2
  384. package/dist/components/DatePicker/index.cjs +54 -23
  385. package/dist/components/DatePicker/index.cjs.map +1 -1
  386. package/dist/components/DatePicker/index.mjs +54 -23
  387. package/dist/components/DatePicker/index.mjs.map +1 -1
  388. package/dist/components/DropdownButton/index.cjs +1 -1
  389. package/dist/components/DropdownButton/index.mjs +1 -1
  390. package/dist/components/DropdownMenu/index.cjs +1 -1
  391. package/dist/components/DropdownMenu/index.d.cts +1 -1
  392. package/dist/components/DropdownMenu/index.d.mts +1 -1
  393. package/dist/components/DropdownMenu/index.mjs +1 -1
  394. package/dist/components/FormControl/index.cjs +2 -2
  395. package/dist/components/FormControl/index.d.cts +2 -2
  396. package/dist/components/FormControl/index.d.mts +2 -2
  397. package/dist/components/FormControl/index.mjs +2 -2
  398. package/dist/components/FormField/index.cjs +44 -26
  399. package/dist/components/FormField/index.cjs.map +1 -1
  400. package/dist/components/FormField/index.d.cts +3 -3
  401. package/dist/components/FormField/index.d.mts +3 -3
  402. package/dist/components/FormField/index.mjs +45 -27
  403. package/dist/components/FormField/index.mjs.map +1 -1
  404. package/dist/components/HoverCopyableField/index.cjs +1 -1
  405. package/dist/components/HoverCopyableField/index.mjs +1 -1
  406. package/dist/components/ImageTile/index.cjs +3 -3
  407. package/dist/components/ImageTile/index.mjs +3 -3
  408. package/dist/components/Input/index.cjs +1 -1
  409. package/dist/components/Input/index.d.cts +1 -1
  410. package/dist/components/Input/index.d.mts +1 -1
  411. package/dist/components/Input/index.mjs +1 -1
  412. package/dist/components/ListBox/index.cjs +1 -1
  413. package/dist/components/ListBox/index.d.cts +1 -1
  414. package/dist/components/ListBox/index.d.mts +1 -1
  415. package/dist/components/ListBox/index.mjs +1 -1
  416. package/dist/components/LoadingShimmer/index.cjs +1 -1
  417. package/dist/components/LoadingShimmer/index.mjs +1 -1
  418. package/dist/components/MaskedInput/index.cjs +1 -1
  419. package/dist/components/MaskedInput/index.mjs +1 -1
  420. package/dist/components/Menu/index.cjs +1 -1
  421. package/dist/components/Menu/index.d.cts +1 -1
  422. package/dist/components/Menu/index.d.mts +1 -1
  423. package/dist/components/Menu/index.mjs +1 -1
  424. package/dist/components/Modal/index.cjs +7 -3
  425. package/dist/components/Modal/index.cjs.map +1 -1
  426. package/dist/components/Modal/index.d.cts +2 -2
  427. package/dist/components/Modal/index.d.mts +2 -2
  428. package/dist/components/Modal/index.mjs +7 -3
  429. package/dist/components/Modal/index.mjs.map +1 -1
  430. package/dist/components/Pagination/index.cjs +1 -1
  431. package/dist/components/Pagination/index.d.cts +3 -3
  432. package/dist/components/Pagination/index.d.mts +3 -3
  433. package/dist/components/Pagination/index.mjs +1 -1
  434. package/dist/components/Pii/index.cjs +1 -1
  435. package/dist/components/Pii/index.mjs +1 -1
  436. package/dist/components/Popover/index.cjs +1 -1
  437. package/dist/components/Popover/index.mjs +1 -1
  438. package/dist/components/Radio/index.cjs +1 -1
  439. package/dist/components/Radio/index.mjs +1 -1
  440. package/dist/components/RadioGroup/index.cjs +1 -1
  441. package/dist/components/RadioGroup/index.d.cts +1 -1
  442. package/dist/components/RadioGroup/index.d.mts +1 -1
  443. package/dist/components/RadioGroup/index.mjs +1 -1
  444. package/dist/components/SegmentedControl/index.cjs +1 -1
  445. package/dist/components/SegmentedControl/index.d.cts +1 -1
  446. package/dist/components/SegmentedControl/index.d.mts +1 -1
  447. package/dist/components/SegmentedControl/index.mjs +1 -1
  448. package/dist/components/Select/index.cjs +1 -1
  449. package/dist/components/Select/index.d.cts +1 -1
  450. package/dist/components/Select/index.d.mts +1 -1
  451. package/dist/components/Select/index.mjs +1 -1
  452. package/dist/components/Spinner/index.cjs +1 -1
  453. package/dist/components/Spinner/index.mjs +1 -1
  454. package/dist/components/Stack/index.d.cts +1 -1
  455. package/dist/components/Stack/index.d.mts +1 -1
  456. package/dist/components/Sticker/index.d.cts +1 -1
  457. package/dist/components/Sticker/index.d.mts +1 -1
  458. package/dist/components/TabBar/index.cjs +1 -1
  459. package/dist/components/TabBar/index.mjs +1 -1
  460. package/dist/components/Table/index.cjs +1 -1
  461. package/dist/components/Table/index.d.cts +7 -7
  462. package/dist/components/Table/index.d.mts +7 -7
  463. package/dist/components/Table/index.mjs +1 -1
  464. package/dist/components/TableBox/index.cjs +1 -1
  465. package/dist/components/TableBox/index.d.cts +2 -2
  466. package/dist/components/TableBox/index.d.mts +2 -2
  467. package/dist/components/TableBox/index.mjs +1 -1
  468. package/dist/components/Text/index.d.mts +1 -1
  469. package/dist/components/TextArea/index.cjs +1 -1
  470. package/dist/components/TextArea/index.d.cts +1 -1
  471. package/dist/components/TextArea/index.d.mts +1 -1
  472. package/dist/components/TextArea/index.mjs +1 -1
  473. package/dist/components/Toggle/index.cjs +1 -1
  474. package/dist/components/Toggle/index.d.cts +1 -1
  475. package/dist/components/Toggle/index.d.mts +1 -1
  476. package/dist/components/Toggle/index.mjs +1 -1
  477. package/dist/components/Tooltip/index.d.cts +3 -3
  478. package/dist/components/Tooltip/index.d.mts +3 -3
  479. package/dist/{constants-D5CkrHza.d.cts → constants-DVwPpTt5.d.mts} +1 -1
  480. package/dist/{constants-CnkpDWTv.d.mts → constants-kwVsjw8O.d.cts} +1 -1
  481. package/dist/constants.d.cts +1 -1
  482. package/dist/constants.d.mts +1 -1
  483. package/dist/helpers.d.cts +1 -1
  484. package/dist/helpers.d.mts +1 -1
  485. package/dist/{index-BwWgmaXZ.d.mts → index-BPnJP0jZ.d.mts} +3 -3
  486. package/dist/{index-Bp3vEph6.d.cts → index-_tQRydn9.d.cts} +3 -3
  487. package/dist/index.d.cts +1 -1
  488. package/dist/index.d.mts +1 -1
  489. package/dist/index2.d.cts +1 -1
  490. package/dist/index2.d.mts +1 -1
  491. package/dist/{input-Bm_anD8X.d.cts → input-BkzqXwn7.d.cts} +2 -2
  492. package/dist/{input-FEaQ66an.d.mts → input-DrG6mA0V.d.mts} +3 -3
  493. package/dist/inputFields.d.cts +10 -10
  494. package/dist/inputFields.d.mts +10 -10
  495. package/dist/intersperse-Gxwgpbk8.cjs +26 -0
  496. package/dist/intersperse-Gxwgpbk8.cjs.map +1 -0
  497. package/dist/intersperse-yd3oMrQl.mjs +21 -0
  498. package/dist/intersperse-yd3oMrQl.mjs.map +1 -0
  499. package/dist/lib/PDSProvider.d.mts +1 -1
  500. package/dist/lib/TruncatedText.d.cts +1 -1
  501. package/dist/lib/TruncatedText.d.mts +1 -1
  502. package/dist/lib/TruncatedTextWithTooltip.d.cts +1 -1
  503. package/dist/lib/TruncatedTextWithTooltip.d.mts +1 -1
  504. package/dist/lib/message.d.cts +1 -1
  505. package/dist/lib/message.d.mts +1 -1
  506. package/dist/lib/pseudoClass.d.mts +1 -1
  507. package/dist/{message-SITKO6JZ.d.mts → message-BfJ87aIU.d.mts} +1 -1
  508. package/dist/{message-CWEGi3Xg.d.cts → message-C2286H-r.d.cts} +1 -1
  509. package/dist/mixins/focus.d.mts +1 -1
  510. package/dist/mixins/hoverable.d.mts +2 -2
  511. package/dist/mixins/input.d.cts +1 -1
  512. package/dist/mixins/input.d.mts +1 -1
  513. package/dist/mixins/menuItem.d.mts +2 -2
  514. package/dist/mixins/text.d.mts +1 -1
  515. package/dist/{text-BEKhEWTa.d.mts → text-CtoDqqAO.d.mts} +1 -1
  516. package/dist/{theme-q9fNLtcA.d.mts → theme-Bx2sn3Lt.d.mts} +1 -1
  517. package/dist/theme.d.mts +1 -1
  518. package/dist/{types-BG21GgBe.d.cts → types-B34lbI2k.d.mts} +1 -1
  519. package/dist/{types-ChCqSD9N.d.mts → types-C_AUGurs.d.cts} +1 -1
  520. package/dist/{types-CmnKGG5I.d.cts → types-CuCT-YnX.d.cts} +1 -1
  521. package/dist/{types-DMjr-u_o.d.mts → types-DTak9UTv.d.mts} +1 -1
  522. package/dist/types.d.cts +1 -1
  523. package/dist/types.d.mts +1 -1
  524. package/dist/types2.d.cts +1 -1
  525. package/dist/types2.d.mts +1 -1
  526. package/dist/useColumnWidthLock.d.mts +2 -2
  527. package/dist/useDelayedInlineEditError.d.mts +12 -0
  528. package/dist/{useFormField-BpYf3CAW.cjs → useFormField-B98dmreO.cjs} +2 -2
  529. package/dist/{useFormField-BpYf3CAW.cjs.map → useFormField-B98dmreO.cjs.map} +1 -1
  530. package/dist/{useFormField-DLGEZ1kD.d.cts → useFormField-BE0rTBF1.d.mts} +2 -2
  531. package/dist/{useFormField-CVmt-ti2.d.mts → useFormField-CaIdE7JQ.d.cts} +2 -2
  532. package/dist/{useFormField-D0RTrPld.mjs → useFormField-eftOPiXj.mjs} +2 -2
  533. package/dist/{useFormField-D0RTrPld.mjs.map → useFormField-eftOPiXj.mjs.map} +1 -1
  534. package/dist/useFormField.d.cts +1 -1
  535. package/dist/useFormField.d.mts +1 -1
  536. package/dist/{useFormGroup-DQJdKaL9.cjs → useFormGroup-BE7v9eAj.cjs} +1 -1
  537. package/dist/{useFormGroup-DQJdKaL9.cjs.map → useFormGroup-BE7v9eAj.cjs.map} +1 -1
  538. package/dist/{useFormGroup-z0epBxXn.mjs → useFormGroup-BMukAMAd.mjs} +1 -1
  539. package/dist/{useFormGroup-z0epBxXn.mjs.map → useFormGroup-BMukAMAd.mjs.map} +1 -1
  540. package/dist/{useTableBoxDragAndDrop-DXqy_AMP.d.mts → useTableBoxDragAndDrop--QBq2FQh.d.cts} +1 -1
  541. package/dist/{useTableBoxDragAndDrop-hrESBhKb.d.cts → useTableBoxDragAndDrop-BTtv9PEt.d.mts} +1 -1
  542. package/dist/useTableBoxDragAndDrop.d.cts +1 -1
  543. package/dist/useTableBoxDragAndDrop.d.mts +1 -1
  544. package/dist/useTruncation.d.mts +1 -1
  545. package/dist/{utilities-C8Jf-xpi.d.cts → utilities-DqO6Sh94.d.cts} +1 -1
  546. package/dist/{utilities-DT-Hh45R.d.mts → utilities-SMbDe8oK.d.mts} +1 -1
  547. package/dist/utilities.d.cts +1 -1
  548. package/dist/utilities.d.mts +1 -1
  549. package/dist/variables/spacing.cjs +1 -1
  550. package/dist/variables/spacing.cjs.map +1 -1
  551. package/dist/variables/spacing.d.cts +1 -1
  552. package/dist/variables/spacing.d.mts +1 -1
  553. package/dist/variables/spacing.mjs +1 -1
  554. package/dist/variables/spacing.mjs.map +1 -1
  555. package/package.json +11 -2
  556. package/dist/Combobox-I44W5oX0.mjs.map +0 -1
  557. package/dist/Combobox-R3_NDBi3.cjs.map +0 -1
  558. package/dist/HoverCopyableField-DBkYvwii.mjs.map +0 -1
  559. package/dist/HoverCopyableField-DyW2iZuo.cjs.map +0 -1
  560. package/dist/ListBox-B7sbubm5.mjs.map +0 -1
  561. package/dist/Pagination-DEZFb552.cjs.map +0 -1
  562. package/dist/TabBar-CAv10XAF.mjs.map +0 -1
  563. package/dist/TabBar-D8WCGYd5.cjs.map +0 -1
  564. package/dist/TableBox-CPCWzwSl.mjs.map +0 -1
  565. package/dist/TableBox-D_B9atn2.cjs.map +0 -1
  566. /package/dist/{index-1-AkepUA.d.mts → index-B2KLYYkM.d.cts} +0 -0
  567. /package/dist/{index-BIAn8oQh.d.cts → index-B5cbLMbC2.d.cts} +0 -0
  568. /package/dist/{index-BlwcRiXv.d.cts → index-BCsiC0tv.d.cts} +0 -0
  569. /package/dist/{index-C4zERU4O.d.cts → index-BPiqSRRl.d.mts} +0 -0
  570. /package/dist/{index-CDAfh8Ew.d.cts → index-BR1oNnaF.d.cts} +0 -0
  571. /package/dist/{index-CIABef8t.d.mts → index-BTImeehL2.d.mts} +0 -0
  572. /package/dist/{index-CMuRFTR3.d.mts → index-C0NRIDsj2.d.cts} +0 -0
  573. /package/dist/{index-CP2eJYlK.d.mts → index-C3kE54DD.d.mts} +0 -0
  574. /package/dist/{index-CTBW75wG2.d.cts → index-C8k_zgEm.d.cts} +0 -0
  575. /package/dist/{index-CiBIKhMu.d.cts → index-CEqOS-7M.d.mts} +0 -0
  576. /package/dist/{index-Cii4Qb1X.d.mts → index-CROz1VSV.d.mts} +0 -0
  577. /package/dist/{index-CspKFJM1.d.cts → index-CWt1yJ75.d.cts} +0 -0
  578. /package/dist/{index-CswGToRr2.d.mts → index-CmCelmEL.d.cts} +0 -0
  579. /package/dist/{index-D4ELpJXS.d.cts → index-CmUzJ4E-2.d.cts} +0 -0
  580. /package/dist/{index-D6CnpA_r.d.cts → index-CsuikFeJ.d.mts} +0 -0
  581. /package/dist/{index-D9XihFV1.d.mts → index-CtCMUyZA.d.cts} +0 -0
  582. /package/dist/{index-DBQaKYAL2.d.cts → index-Cz6N-KeS.d.cts} +0 -0
  583. /package/dist/{index-DFKoAoY2.d.cts → index-D-BciAtf.d.cts} +0 -0
  584. /package/dist/{index-DLoAMD9J.d.cts → index-D2HUTZ-d.d.cts} +0 -0
  585. /package/dist/{index-DWfPppPU.d.mts → index-D5tSVhTd.d.mts} +0 -0
  586. /package/dist/{index-DZlqSwCF.d.mts → index-DeEmP3Jc.d.cts} +0 -0
  587. /package/dist/{index-Dflz2i1X.d.mts → index-DeVKzGce.d.mts} +0 -0
  588. /package/dist/{index-Dpmi5zcN.d.cts → index-DrZ2Dh-H.d.cts} +0 -0
  589. /package/dist/{index-DwBYcw1r.d.cts → index-DxSM7VXJ.d.cts} +0 -0
  590. /package/dist/{index-PWQavSPf.d.mts → index-FtE8MXJ_.d.mts} +0 -0
  591. /package/dist/{index-VmEFGBxN.d.cts → index-JuxZj_Qp2.d.mts} +0 -0
  592. /package/dist/{index-_1bfRgi2.d.cts → index-NKYLt_R9.d.mts} +0 -0
  593. /package/dist/{index-dC-i2r_u.d.cts → index-Oio5ygqN.d.mts} +0 -0
  594. /package/dist/{index-e6k85DKM.d.mts → index-VWno75SQ.d.mts} +0 -0
  595. /package/dist/{index-kDNN3kX_2.d.mts → index-_wQ5ClJU.d.cts} +0 -0
  596. /package/dist/{index-qCd8f7Um.d.cts → index-lQ_hGQ08.d.cts} +0 -0
  597. /package/dist/{index-uTS5iDq_.d.cts → index-zO0Ly4bS.d.cts} +0 -0
@@ -1,5 +1,5 @@
1
- import { o as StickerProps } from "../../Sticker-D9HjFQ6e.cjs";
2
- import { l as MenuItemProps } from "../../Menu-C_NOsHAm.cjs";
1
+ import { o as StickerProps } from "../../Sticker-N8XZnv7M.cjs";
2
+ import { l as MenuItemProps } from "../../Menu-BKMxOXkj.cjs";
3
3
  import { ReactNode } from "react";
4
4
  import { Column, DeepKeys, FilterFnOption, Header, RowData, SortingState, Table } from "@tanstack/react-table";
5
5
 
@@ -1,5 +1,5 @@
1
- import { o as StickerProps } from "../../Sticker-XfyoDEod.mjs";
2
- import { l as MenuItemProps } from "../../Menu-CSgCXX0k.mjs";
1
+ import { o as StickerProps } from "../../Sticker-DjF9VJQB.mjs";
2
+ import { l as MenuItemProps } from "../../Menu-BJ5c7HGD.mjs";
3
3
  import { ReactNode } from "react";
4
4
  import { Column, DeepKeys, FilterFnOption, Header, RowData, SortingState, Table } from "@tanstack/react-table";
5
5
 
@@ -9,10 +9,10 @@ const require_mixins_input = require("../../mixins/input.cjs");
9
9
  const require_Card = require("../../Card-CaOItkgL.cjs");
10
10
  const require_lib_zindex = require("../../lib/zindex.cjs");
11
11
  const require_IconButton = require("../../IconButton-DNy7g5zh.cjs");
12
- const require_Menu = require("../../Menu-BLbEcodU.cjs");
13
- const require_Input = require("../../Input-DQS-BEym.cjs");
14
- const require_Popover = require("../../Popover-jHZICnQt.cjs");
15
- const require_FormControl = require("../../FormControl-DjxkL5Ft.cjs");
12
+ const require_Input = require("../../Input-BDLUq-pK.cjs");
13
+ const require_Menu = require("../../Menu-BXic-30n.cjs");
14
+ const require_Popover = require("../../Popover-BAv7BujW.cjs");
15
+ const require_FormControl = require("../../FormControl-Czt95h2L.cjs");
16
16
  let _persona_design_tokens = require("@persona/design-tokens");
17
17
  let styled_components = require("styled-components");
18
18
  let styled_components$1 = require_chunk.__toESM(styled_components, 1);
@@ -20,8 +20,8 @@ styled_components = require_chunk.__toESM(styled_components);
20
20
  let react = require("react");
21
21
  let react_jsx_runtime = require("react/jsx-runtime");
22
22
  let _persona_icons = require("@persona/icons");
23
- let react_aria = require("react-aria");
24
23
  let lodash_fp_js = require("lodash/fp.js");
24
+ let react_aria = require("react-aria");
25
25
  let react_stately = require("react-stately");
26
26
  let luxon = require("luxon");
27
27
  let _react_aria_utils = require("@react-aria/utils");
@@ -683,13 +683,15 @@ const CustomFormLabel = (0, styled_components.default)(require_FormControl.FormL
683
683
  margin-bottom: ${_persona_design_tokens.Spacing[2]};
684
684
  ${_persona_design_tokens.Typography.TextMediumBold};
685
685
  `;
686
- const OpenButton = ({ calendarRef }) => {
687
- const openCalBtnRef = (0, react.useRef)();
688
- const { buttonProps } = (0, react_aria.useButton)({ onPress: () => {
689
- if (calendarRef.current) calendarRef.current.querySelector("button[aria-label=\"Previous\"]").focus();
690
- } }, openCalBtnRef);
686
+ const OpenButton = ({ onOpen, disabled }) => {
687
+ const openCalBtnRef = (0, react.useRef)(null);
688
+ const { buttonProps } = (0, react_aria.useButton)({
689
+ isDisabled: disabled,
690
+ onPress: onOpen
691
+ }, openCalBtnRef);
691
692
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
692
693
  ...buttonProps,
694
+ type: "button",
693
695
  ref: openCalBtnRef,
694
696
  "aria-label": "Open calendar",
695
697
  tabIndex: -1
@@ -704,7 +706,7 @@ const ClearRangeButton = (0, styled_components.default)(require_Input.ClearButto
704
706
  background-color: transparent;
705
707
  }
706
708
  `;
707
- const DateRangePicker = ({ granularity = "day", hideTimeZone = true, className, calendarZIndex, ...props }) => {
709
+ const DateRangePicker = ({ granularity = "day", hideTimeZone = true, className, calendarZIndex, portalContainer, ...props }) => {
708
710
  const state = (0, react_stately.useDateRangePickerState)({
709
711
  granularity,
710
712
  hideTimeZone,
@@ -713,12 +715,30 @@ const DateRangePicker = ({ granularity = "day", hideTimeZone = true, className,
713
715
  const ref = (0, react.useRef)(null);
714
716
  const startFieldRef = (0, react.useRef)(null);
715
717
  const endFieldRef = (0, react.useRef)(null);
718
+ const calendarRef = (0, react.useRef)(null);
716
719
  const [dateMode, setDateMode] = (0, react.useState)(null);
720
+ const [isClosing, setIsClosing] = (0, react.useState)(false);
717
721
  const { groupProps, startFieldProps, endFieldProps, calendarProps, labelProps } = (0, react_aria.useDateRangePicker)({
718
722
  granularity,
719
723
  hideTimeZone,
720
724
  ...props
721
725
  }, state, ref);
726
+ const focusCalendar = (0, react.useCallback)(() => {
727
+ requestAnimationFrame(() => {
728
+ (calendarRef.current?.querySelector("[role=\"menuitem\"], button:not(:disabled), [tabindex=\"0\"]"))?.focus();
729
+ });
730
+ }, []);
731
+ const openCalendar = (0, react.useCallback)(() => {
732
+ if (!props.disabled && !state.isOpen && !isClosing) state.setOpen(true);
733
+ }, [
734
+ isClosing,
735
+ props.disabled,
736
+ state
737
+ ]);
738
+ const openCalendarWithFocus = (0, react.useCallback)(() => {
739
+ openCalendar();
740
+ focusCalendar();
741
+ }, [focusCalendar, openCalendar]);
722
742
  (0, react.useEffect)(() => {
723
743
  if (!props.dateRange.startDate || !props.dateRange.endDate) return;
724
744
  if (!props.dateRange.startDate.isValid || !props.dateRange.endDate.isValid) return;
@@ -745,21 +765,23 @@ const DateRangePicker = ({ granularity = "day", hideTimeZone = true, className,
745
765
  const datesAreDifferent = currentValue?.start && currentValue?.end && currentValue.start.compare(currentValue.end) !== 0;
746
766
  if (state.isOpen && startChanged && endChanged && datesAreDifferent) state.setOpen(false);
747
767
  }, [state.value, state.isOpen]);
748
- const calendarRef = (0, react.useRef)(null);
749
- const [isClosing, setIsClosing] = (0, react.useState)(false);
750
768
  const { focusWithinProps: startFocusWithinProps } = (0, react_aria.useFocusWithin)({ onFocusWithin: () => {
751
769
  setDateMode("start");
752
- if (!state.isOpen && !isClosing) state.setOpen(true);
770
+ openCalendar();
753
771
  } });
754
772
  const { focusWithinProps: endFocusWithinProps } = (0, react_aria.useFocusWithin)({ onFocusWithin: () => {
755
773
  setDateMode("end");
756
- if (!state.isOpen && !isClosing) state.setOpen(true);
774
+ openCalendar();
757
775
  } });
758
- const { focusWithinProps: containerFocusProps } = (0, react_aria.useFocusWithin)({ onBlurWithin: (e) => {
759
- if (!calendarRef?.current?.contains(e.relatedTarget)) {
776
+ const { focusWithinProps: containerFocusProps } = (0, react_aria.useFocusWithin)({ onBlurWithin: () => {
777
+ requestAnimationFrame(() => {
778
+ const activeElement = document.activeElement;
779
+ const isFocusInDateRangeInput = activeElement instanceof Node && ref.current?.contains(activeElement);
780
+ const isFocusInCalendar = activeElement instanceof Node && calendarRef.current?.contains(activeElement);
781
+ if (isFocusInDateRangeInput || isFocusInCalendar) return;
760
782
  setDateMode(null);
761
783
  if (state.isOpen) state.setOpen(false);
762
- }
784
+ });
763
785
  } });
764
786
  const handleOutsideClick = (e) => {
765
787
  const target = e.target;
@@ -774,11 +796,11 @@ const DateRangePicker = ({ granularity = "day", hideTimeZone = true, className,
774
796
  if (props.onClear) props.onClear();
775
797
  } });
776
798
  const handleKeyDown = (0, react.useCallback)((event) => {
777
- if (event.key === "Enter" && !state.isOpen) {
799
+ if (event.key === "Enter") {
778
800
  event.preventDefault();
779
- state.setOpen(true);
801
+ openCalendarWithFocus();
780
802
  }
781
- }, [state]);
803
+ }, [openCalendarWithFocus]);
782
804
  const isValueNull = state.value && state.value.start == null && state.value.end == null;
783
805
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(DateRangeContainer, {
784
806
  "data-test": props.dataTest,
@@ -789,11 +811,15 @@ const DateRangePicker = ({ granularity = "day", hideTimeZone = true, className,
789
811
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_Popover.Popover_default, {
790
812
  open: state.isOpen,
791
813
  modal: false,
814
+ portalProps: portalContainer ? { container: portalContainer } : void 0,
792
815
  contentProps: {
793
816
  align: "start",
794
817
  "aria-modal": true,
795
818
  "aria-label": props["aria-label"] ?? void 0,
796
819
  onInteractOutside: handleOutsideClick,
820
+ onOpenAutoFocus: (e) => {
821
+ e.preventDefault();
822
+ },
797
823
  onEscapeKeyDown: () => {
798
824
  state.setOpen(false);
799
825
  if (dateMode) {
@@ -807,7 +833,8 @@ const DateRangePicker = ({ granularity = "day", hideTimeZone = true, className,
807
833
  requestAnimationFrame(() => setIsClosing(false));
808
834
  },
809
835
  noPadding: true,
810
- style: { zIndex: calendarZIndex }
836
+ style: { zIndex: calendarZIndex },
837
+ zIndex: calendarZIndex
811
838
  },
812
839
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Popover.Popover_default.Trigger, {
813
840
  asChild: true,
@@ -833,11 +860,15 @@ const DateRangePicker = ({ granularity = "day", hideTimeZone = true, className,
833
860
  }),
834
861
  props.showClear && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ClearRangeButton, {
835
862
  ...pressClearProps,
863
+ type: "button",
836
864
  disabled: isValueNull,
837
865
  "aria-label": "Clear date range",
838
866
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_persona_icons.CircleXInverseIcon, {})
839
867
  }),
840
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_aria.VisuallyHidden, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(OpenButton, { calendarRef }) })
868
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_aria.VisuallyHidden, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(OpenButton, {
869
+ onOpen: openCalendarWithFocus,
870
+ disabled: props.disabled
871
+ }) })
841
872
  ]
842
873
  })
843
874
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RangeCalendar, {
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["Spacing","Typography","IconButton","Typography","Color","BorderRadius","Color","Typography","GregorianCalendar","ArrowLeftIcon","ArrowRightIcon","isFocused","Color","Spacing","inputMixin","isFocusedVisible","isNotDisabled","focusWithinOutline","OpenButton","Popover","Z_INDICES","VisuallyHidden","MenuItem","isNotDisabled","isHovered","isFocused","Color","Settings","MenuList","Spacing","BorderRadius","Card","Color","Settings","ArrowLeftIcon","ArrowRightIcon","RangeCalendarPresets","VisuallyHidden","FormLabel","Spacing","Typography","ClearButton","isDisabled","Settings","CalendarDate","Popover","CircleXInverseIcon","VisuallyHidden"],"sources":["../../../components/DatePicker/Calendar/CalendarBase.tsx","../../../components/DatePicker/Calendar/CalendarCell.tsx","../../../components/DatePicker/Calendar/CalendarGrid.tsx","../../../components/DatePicker/common.ts","../../../components/DatePicker/Calendar/Calendar.tsx","../../../components/DatePicker/DateField.tsx","../../../components/DatePicker/DatePicker.tsx","../../../components/DatePicker/Calendar/RangeCalendarPresets.tsx","../../../components/DatePicker/Calendar/RangeCalendar.tsx","../../../components/DatePicker/DateRangePicker.tsx"],"sourcesContent":["import { useRef } from 'react';\nimport { useButton } from 'react-aria';\nimport styled from 'styled-components';\n\nimport { Spacing, Typography } from '@persona/design-tokens';\nimport { IconButton } from 'design-system/components/Button';\nimport type { IconButtonProps } from 'design-system/components/Button/IconButton';\n\nexport const CalendarContainer = styled.div`\n display: inline-block;\n`;\n\nexport const CalendarHeader = styled.div`\n display: flex;\n align-items: center;\n margin-bottom: ${Spacing[2]};\n`;\n\nexport const CalendarHeading = styled.div`\n ${Typography.TextLargeBold};\n flex: 1;\n text-align: center;\n`;\n\nconst StyledCalendarButton = styled(IconButton)`\n width: 32px;\n height: 32px;\n`;\n\nexport const CalendarButton = (props: IconButtonProps) => {\n const ref = useRef();\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n const { buttonProps } = useButton(props, ref);\n\n return (\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n <StyledCalendarButton {...buttonProps} className={props.className} ref={ref}>\n {props.children}\n </StyledCalendarButton>\n );\n};\n","import { type CalendarDate, type DateValue, isSameDay, isSameMonth } from '@internationalized/date';\nimport { useRef } from 'react';\nimport { useCalendarCell } from 'react-aria';\nimport type { CalendarState, RangeCalendarState } from 'react-stately';\nimport styled, { css } from 'styled-components';\n\nimport { BorderRadius, Color, Typography } from '@persona/design-tokens';\n\nconst CalendarCellContainer = styled.td`\n text-align: center;\n width: 38px;\n height: 38px;\n padding: 0px;\n`;\n\ninterface CalendarCellButtonProps {\n isSelected?: boolean;\n isSelectionStart?: boolean;\n isSelectionEnd?: boolean;\n isInvalid?: boolean;\n isDisabled?: boolean;\n}\n\nconst CalendarCellButton = styled.button<CalendarCellButtonProps>`\n ${Typography.TextMedium};\n border-style: none;\n padding: 0;\n background: none;\n width: 100%;\n height: 100%;\n cursor: pointer;\n position: relative;\n\n ${({ isSelected }) =>\n isSelected &&\n css`\n background: ${Color.CorePurple100};\n `}\n\n ${({ isSelectionStart }) =>\n isSelectionStart &&\n css`\n background: ${Color.BackgroundButtonPrimary};\n color: ${Color.TextInverse};\n border-top-left-radius: ${BorderRadius.Sm};\n border-bottom-left-radius: ${BorderRadius.Sm};\n `}\n\n ${({ isSelectionEnd }) =>\n isSelectionEnd &&\n css`\n background: ${Color.BackgroundButtonPrimary};\n color: ${Color.TextInverse};\n border-top-right-radius: ${BorderRadius.Sm};\n border-bottom-right-radius: ${BorderRadius.Sm};\n `}\n\n ${({ isDisabled }) =>\n isDisabled &&\n css`\n color: ${Color.CoreSlate300};\n `}\n\n ${({ isInvalid }) =>\n isInvalid &&\n css`\n background: ${Color.BackgroundButtonDanger};\n color: ${Color.TextInverse};\n `}\n\n &:focus-visible {\n outline: 2px solid ${Color.BorderFocus};\n outline-offset: -2px;\n box-shadow: ${Color.PrimaryWhite} 0px 0px 0px 3px inset;\n z-index: 1;\n }\n`;\n\ninterface CalendarCellProps {\n state: CalendarState | RangeCalendarState;\n date: CalendarDate;\n currentMonth: DateValue;\n}\n\nconst CalendarCell = ({ state, date, currentMonth }: CalendarCellProps) => {\n const ref = useRef();\n const { cellProps, buttonProps, isSelected, isInvalid, isDisabled, formattedDate } =\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n useCalendarCell({ date }, state, ref);\n\n const highlightedRange = 'highlightedRange' in state && state.highlightedRange;\n\n const isOutsideMonth = !isSameMonth(currentMonth, date);\n const isSelectionStart = highlightedRange ? isSameDay(date, highlightedRange.start) : isSelected;\n const isSelectionEnd = highlightedRange ? isSameDay(date, highlightedRange.end) : isSelected;\n\n return (\n <CalendarCellContainer {...cellProps}>\n <CalendarCellButton\n {...buttonProps}\n hidden={isOutsideMonth}\n isSelected={isSelected}\n isSelectionStart={isSelectionStart}\n isSelectionEnd={isSelectionEnd}\n isInvalid={isInvalid}\n isDisabled={isDisabled}\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n ref={ref}\n >\n {formattedDate}\n </CalendarCellButton>\n </CalendarCellContainer>\n );\n};\n\nexport default CalendarCell;\n","import { type DateDuration, endOfMonth, getWeeksInMonth } from '@internationalized/date';\nimport { useCalendarGrid, useLocale } from 'react-aria';\nimport type { CalendarState, RangeCalendarState } from 'react-stately';\nimport styled from 'styled-components';\n\nimport { Color, Typography } from '@persona/design-tokens';\n\nimport CalendarCell from './CalendarCell';\n\nconst CalendarGridContainer = styled.table`\n width: 266px;\n border-spacing: 0px;\n border-collapse: collapse;\n\n &:focus-visible {\n outline: 2px solid ${Color.BorderFocus};\n outline-offset: 1px;\n }\n`;\n\nconst CalendarGridDayHeader = styled.th`\n ${Typography.TextMedium};\n color: ${Color.TextSecondary};\n`;\n\ninterface CalendarGridProps {\n state: CalendarState | RangeCalendarState;\n offset?: DateDuration;\n skipFromTabOrder?: boolean;\n}\n\nconst CalendarGrid = ({ state, offset = {}, skipFromTabOrder = false }: CalendarGridProps) => {\n const { locale } = useLocale();\n const startDate = state.visibleRange.start.add(offset);\n const endDate = endOfMonth(startDate);\n\n const { gridProps, headerProps, weekDays } = useCalendarGrid(\n {\n startDate,\n endDate,\n },\n state,\n );\n\n const weeksInMonth = getWeeksInMonth(startDate, locale);\n\n // Remove second calendar grid from tab order - use arrow keys to navigate between months\n const modifiedGridProps = skipFromTabOrder ? { ...gridProps, tabIndex: -1 } : gridProps;\n\n return (\n <CalendarGridContainer {...modifiedGridProps}>\n <thead {...headerProps}>\n <tr>\n {weekDays.map((day, index) => (\n <CalendarGridDayHeader key={index}>{day}</CalendarGridDayHeader>\n ))}\n </tr>\n </thead>\n <tbody>\n {[...new Array(weeksInMonth).keys()].map((weekIndex) => (\n <tr key={weekIndex}>\n {state\n .getDatesInWeek(weekIndex, startDate)\n .map((date, i) =>\n date ? (\n <CalendarCell key={i} state={state} date={date} currentMonth={startDate} />\n ) : (\n <td key={i} />\n ),\n )}\n </tr>\n ))}\n </tbody>\n </CalendarGridContainer>\n );\n};\n\nexport default CalendarGrid;\n","import { GregorianCalendar } from '@internationalized/date';\n\nexport const createCalendar = () => new GregorianCalendar();\n","import type { Ref } from 'react';\nimport { type AriaCalendarProps, type DateValue, useCalendar, useLocale } from 'react-aria';\nimport { useCalendarState } from 'react-stately';\n\nimport { ArrowLeftIcon, ArrowRightIcon } from '@persona/icons';\nimport {\n CalendarButton,\n CalendarContainer,\n CalendarHeader,\n CalendarHeading,\n} from 'design-system/components/DatePicker/Calendar/CalendarBase';\nimport CalendarGrid from 'design-system/components/DatePicker/Calendar/CalendarGrid';\nimport { createCalendar } from 'design-system/components/DatePicker/common';\n\ninterface CalendarProps extends AriaCalendarProps<DateValue> {\n calendarRef?: Ref<HTMLDivElement>;\n}\n\nconst Calendar = (props: CalendarProps) => {\n const { locale } = useLocale();\n const state = useCalendarState({ ...props, locale, createCalendar });\n const { calendarProps, prevButtonProps, nextButtonProps, title } = useCalendar(props, state);\n\n return (\n <CalendarContainer {...calendarProps} ref={props.calendarRef}>\n <CalendarHeader>\n <CalendarButton {...prevButtonProps}>\n <ArrowLeftIcon />\n </CalendarButton>\n <CalendarHeading>{title}</CalendarHeading>\n <CalendarButton {...nextButtonProps}>\n <ArrowRightIcon />\n </CalendarButton>\n </CalendarHeader>\n <CalendarGrid state={state} />\n </CalendarContainer>\n );\n};\n\nexport default Calendar;\n","import type { DateValue } from '@internationalized/date';\nimport { type AriaDateFieldProps, useDateField, useDateSegment } from '@react-aria/datepicker';\nimport { useLocale } from '@react-aria/i18n';\nimport { mergeRefs } from '@react-aria/utils';\nimport {\n type DateFieldState,\n type DateSegment as DateSegmentObj,\n type SegmentType,\n useDateFieldState,\n} from '@react-stately/datepicker';\nimport { forwardRef, useRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Color, Spacing } from '@persona/design-tokens';\nimport { createCalendar } from 'design-system/components/DatePicker/common';\nimport { isFocused, isFocusedVisible, isNotDisabled } from 'design-system/lib/pseudoClass';\nimport { focusWithinOutline } from 'design-system/mixins/focus';\nimport inputMixin, { type InputMixinProps, type InputSizes } from 'design-system/mixins/input';\nimport type PseudoClassProps from 'design-system/types/PseudoClassProps';\n\ntype DateSegmentContainerProps = { $isComma?: boolean; $isTimezone?: boolean } & PseudoClassProps;\nconst DateSegmentContainer = styled.div<DateSegmentContainerProps>`\n font-variant-numeric: tabular-nums;\n box-sizing: content-box;\n text-align: end;\n\n ${isFocused} {\n outline: 2px solid ${Color.BorderFocus};\n outline-offset: 1px;\n background-color: ${Color.CorePurple200};\n }\n\n ${({ $isComma, $isTimezone }) =>\n ($isComma || $isTimezone) &&\n css`\n margin-left: 0.25ch;\n margin-right: 0.25ch;\n `}\n\n ${({ $isTimezone }) =>\n $isTimezone &&\n css`\n color: ${Color.TextSecondary};\n pointer-events: none;\n\n &:focus {\n outline: none;\n background-color: transparent;\n }\n `}\n`;\n\ntype DateSegmentPlaceholderProps = { isPlaceholder?: boolean; type: SegmentType };\nconst DateSegmentPlaceholder = styled.span<DateSegmentPlaceholderProps>`\n display: block;\n width: 100%;\n pointer-events: none;\n\n &:focus {\n outline: none;\n }\n\n ${({ isPlaceholder }) =>\n isPlaceholder\n ? css`\n height: 100%;\n color: ${({ theme }) => theme.color.text.tertiary};\n `\n : css`\n visibility: hidden;\n height: 0;\n `}\n ${({ type }) =>\n type === 'literal' &&\n css`\n padding-left: ${Spacing[1]};\n padding-right: ${Spacing[1]};\n `}\n ${({ type, isPlaceholder }) =>\n type === 'month' &&\n isPlaceholder &&\n css`\n width: 3ch;\n `}\n`;\n\ninterface DateSegmentProps {\n segment: DateSegmentObj;\n state: DateFieldState;\n}\n\nfunction DateSegment({ segment, state }: DateSegmentProps) {\n const ref = useRef();\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n const { segmentProps } = useDateSegment(segment, state, ref);\n\n let minWidth: string;\n\n switch (segment.type) {\n case 'dayPeriod': {\n minWidth = '2.75ch';\n break;\n }\n default: {\n minWidth = `${segment.maxValue != null && String(segment.maxValue).length + 0.25}ch`;\n break;\n }\n }\n\n const isComma = segment.type === 'literal' && segment.text === ', ';\n const isTimezone = segment.type === 'timeZoneName';\n\n return (\n <DateSegmentContainer\n {...segmentProps}\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n ref={ref}\n style={{\n ...segmentProps.style,\n minWidth,\n }}\n $isComma={isComma}\n $isTimezone={isTimezone}\n {...(isTimezone && { tabIndex: -1, role: 'presentation' })}\n >\n {/* Always reserve space for the placeholder, to prevent layout shift when editing. */}\n {segment.placeholder && (\n <DateSegmentPlaceholder\n aria-hidden='true'\n isPlaceholder={segment.isPlaceholder}\n type={segment.type}\n >\n {segment.placeholder}\n </DateSegmentPlaceholder>\n )}\n {segment.isPlaceholder ? '' : segment.text}\n </DateSegmentContainer>\n );\n}\n\nconst InputBox = styled.div<InputMixinProps & { $inputPosition: 'start' | 'end' }>`\n ${inputMixin};\n display: flex;\n padding-left: ${Spacing[2]};\n padding-right: ${Spacing[2]};\n line-height: 1;\n position: relative;\n\n &${isFocusedVisible}${isNotDisabled} {\n position: relative;\n z-index: 1;\n }\n\n ${focusWithinOutline}\n\n ${({ $inputPosition }) => {\n switch ($inputPosition) {\n case 'start': {\n return css`\n border-top-right-radius: 0px;\n border-bottom-right-radius: 0px;\n `;\n }\n case 'end': {\n return css`\n margin-left: -1px;\n border-top-left-radius: 0px;\n border-bottom-left-radius: 0px;\n `;\n }\n }\n }}\n`;\n\ninterface DateFieldProps extends AriaDateFieldProps<DateValue> {\n inputPosition?: 'start' | 'end';\n focused?: boolean;\n readOnly?: boolean;\n value?: DateValue;\n disabled?: boolean;\n size?: InputSizes;\n style?: React.CSSProperties;\n dateFieldProps?: {\n style?: React.CSSProperties;\n };\n hasError?: boolean;\n}\n\nexport const DateField = forwardRef<HTMLDivElement, DateFieldProps>(function DateField(\n props: DateFieldProps,\n forwardedRef,\n) {\n const { locale } = useLocale();\n const state = useDateFieldState({\n ...props,\n locale,\n createCalendar,\n });\n\n const ref = useRef<HTMLDivElement>();\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n const { fieldProps } = useDateField(props, state, ref);\n\n return (\n <InputBox\n {...fieldProps}\n {...(props.dateFieldProps || {})}\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n ref={mergeRefs<HTMLDivElement>(ref, forwardedRef)}\n focused={props.focused}\n disabled={props.disabled}\n aria-label={props['aria-label']}\n $size={props.size ?? 'md'}\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n $inputPosition={props.inputPosition}\n hasError={props.hasError}\n >\n {state.segments.map((segment, i) => (\n <DateSegment key={i} segment={segment} state={state} />\n ))}\n </InputBox>\n );\n});\n\nexport default DateField;\n","import type { DateValue } from '@internationalized/date';\nimport type { DatePickerProps as DatePickerBase } from '@react-types/datepicker';\nimport { type RefObject, useCallback, useRef, useState } from 'react';\nimport { mergeProps, useButton, useDatePicker, useFocusWithin, VisuallyHidden } from 'react-aria';\nimport { useDatePickerState } from 'react-stately';\n\nimport Calendar from 'design-system/components/DatePicker/Calendar/Calendar';\nimport DateField from 'design-system/components/DatePicker/DateField';\nimport Popover from 'design-system/components/Popover';\nimport { Z_INDICES } from 'design-system/lib/zindex';\nimport type { InputSizes } from 'design-system/mixins/input';\n\nexport interface DatePickerProps extends DatePickerBase<DateValue> {\n id?: string;\n dateFieldProps?: {\n style?: React.CSSProperties;\n };\n disabled?: boolean;\n size?: InputSizes;\n useModalZIndex?: boolean;\n}\n\nconst OpenButton = ({ calendarRef }: { calendarRef: RefObject<HTMLElement> }) => {\n const openCalBtnRef = useRef<HTMLButtonElement>(null);\n const { buttonProps } = useButton(\n {\n onPress: () => {\n if (calendarRef.current) {\n (\n calendarRef.current.querySelector('button[aria-label=\"Previous\"]') as HTMLButtonElement\n ).focus();\n }\n },\n },\n openCalBtnRef,\n );\n\n return <button {...buttonProps} ref={openCalBtnRef} aria-label='Open calendar' />;\n};\n\nexport const DatePicker = (props: DatePickerProps) => {\n const state = useDatePickerState(props);\n const ref = useRef<HTMLDivElement>(null);\n const fieldRef = useRef<HTMLDivElement>(null);\n const { groupProps, fieldProps, calendarProps } = useDatePicker(props, state, ref);\n const calendarRef = useRef<HTMLDivElement>(null);\n const [isClosing, setIsClosing] = useState(false);\n\n const { focusWithinProps } = useFocusWithin({\n onFocusWithin: () => {\n if (!state.isOpen && !isClosing) {\n state.setOpen(true);\n }\n },\n onBlurWithin: (e) => {\n // Close calendar if next target is not within the calendar\n if (e.relatedTarget && !calendarRef?.current?.contains(e.relatedTarget) && state.isOpen) {\n state.setOpen(false);\n }\n },\n });\n\n const handleOutsideClick = (e: Event) => {\n const target = e.target as Node;\n // Don't close if clicking on the date input itself\n if (ref.current?.contains(target)) {\n return;\n }\n if (state.isOpen) {\n state.setOpen(false);\n }\n };\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n if (event.key === 'Enter' && !state.isOpen) {\n event.preventDefault();\n state.setOpen(true);\n }\n },\n [state],\n );\n\n return (\n <div style={{ display: 'flex', flexDirection: 'column' }}>\n <Popover\n open={state.isOpen}\n modal={false}\n contentProps={{\n style: { zIndex: props.useModalZIndex ? Z_INDICES.modalDropdown : Z_INDICES.dropdown },\n align: 'start',\n 'aria-modal': true,\n onInteractOutside: handleOutsideClick,\n onEscapeKeyDown: () => {\n state.setOpen(false);\n },\n onCloseAutoFocus: (e: Event) => {\n // Prevent Radix's default focus restoration\n e.preventDefault();\n setIsClosing(true);\n\n // Manually restore focus to the date field\n if (fieldRef.current) {\n const firstEditableSegment = fieldRef.current.querySelector('[tabindex=\"0\"]');\n if (firstEditableSegment instanceof HTMLElement) {\n firstEditableSegment.focus();\n }\n }\n\n // Reset flag after focus is done\n requestAnimationFrame(() => setIsClosing(false));\n },\n noPadding: true,\n }}\n >\n <Popover.Trigger asChild>\n <div\n {...mergeProps(groupProps, focusWithinProps)}\n ref={ref}\n style={{ display: 'flex', position: 'relative' }}\n >\n <DateField\n ref={fieldRef}\n id={props.id}\n dateFieldProps={props.dateFieldProps}\n disabled={props.disabled}\n size={props.size}\n {...mergeProps(fieldProps, { onKeyDown: handleKeyDown })}\n value={fieldProps.value ?? undefined}\n />\n <VisuallyHidden>\n <OpenButton calendarRef={calendarRef} />\n </VisuallyHidden>\n </div>\n </Popover.Trigger>\n <Calendar\n {...{ ...calendarProps, autoFocus: undefined }}\n calendarRef={calendarRef}\n id='calendar-popover'\n />\n </Popover>\n </div>\n );\n};\n\nexport default DatePicker;\n","import {\n type CalendarDate,\n type DateValue,\n endOfMonth,\n endOfYear,\n startOfMonth,\n startOfYear,\n today,\n} from '@internationalized/date';\nimport type { RangeValue } from '@react-types/shared';\nimport { Settings } from 'luxon';\nimport { memo, useRef } from 'react';\nimport { mergeProps, useButton } from 'react-aria';\nimport type { RangeCalendarState } from 'react-stately';\nimport styled, { css } from 'styled-components';\n\nimport { Color } from '@persona/design-tokens';\nimport { MenuItem, MenuList } from 'design-system/components/Menu';\nimport { isFocused, isHovered, isNotDisabled } from 'design-system/lib/pseudoClass';\n\ninterface DateRangePreset {\n label: string;\n range: RangeValue<CalendarDate>;\n}\n\nconst getDefaultPresets = (tz: string) => {\n const now = today(tz);\n return [\n {\n label: 'Last 7 days',\n range: {\n start: now.subtract({ days: 7 }),\n end: now,\n },\n },\n {\n label: 'Last 14 days',\n range: {\n start: now.subtract({ days: 14 }),\n end: now,\n },\n },\n {\n label: 'Last 30 days',\n range: {\n start: now.subtract({ days: 30 }),\n end: now,\n },\n },\n {\n label: 'This month',\n range: {\n start: startOfMonth(now),\n // Effectively, this should always be today, since we can't look forward\n end: now,\n },\n },\n {\n label: 'Last month',\n range: {\n start: startOfMonth(now.subtract({ months: 1 })),\n end: endOfMonth(now.subtract({ months: 1 })),\n },\n },\n {\n label: 'This year',\n range: {\n start: startOfYear(now),\n end: now,\n },\n },\n {\n label: 'Last year',\n range: {\n start: startOfYear(now.subtract({ years: 1 })),\n end: endOfYear(now.subtract({ years: 1 })),\n },\n },\n ];\n};\n\n/**\n * Compare two date values by year/month/day only, ignoring time components.\n */\nconst datesMatchByDay = (a: CalendarDate, b: DateValue): boolean =>\n a.year === b.year && a.month === b.month && a.day === b.day;\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\ninterface PresetButtonProps {\n state: RangeCalendarState;\n preset: DateRangePreset;\n isSelected: boolean;\n setDateMode: (mode: 'start' | 'end' | null) => void;\n}\n\nconst StyledPresetButton = styled(MenuItem)`\n ${({ selected }) =>\n !selected &&\n css`\n &${isNotDisabled}${isHovered}, &${isNotDisabled}${isFocused} {\n background-color: transparent;\n }\n `}\n\n &:focus-visible {\n // MenuItems default to outline: none, so we need to override it here.\n outline: 2px solid ${Color.BorderFocus} !important;\n outline-offset: 1px;\n }\n`;\n\ninterface DateRangePickerPresetsProps {\n presetsFn?: (tz: string) => DateRangePreset[];\n state: RangeCalendarState;\n setDateMode: (mode: 'start' | 'end' | null) => void;\n}\n\nconst PresetButton = ({ state, preset, isSelected, setDateMode, ...props }: PresetButtonProps) => {\n const ref = useRef<HTMLDivElement>();\n const { buttonProps } = useButton(\n {\n onPress: () => {\n state.setValue(preset.range);\n setDateMode(null);\n },\n },\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n ref,\n );\n\n // Strip aria-current from useButton's props so it doesn't override MenuItem's.\n const { 'aria-current': _ariaCurrent, ...mergedProps } = mergeProps(props, buttonProps);\n\n return (\n <StyledPresetButton\n selected={isSelected}\n {...mergedProps}\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n ref={ref}\n >\n {preset.label}\n </StyledPresetButton>\n );\n};\n\nconst DateRangePickerPresets = ({\n presetsFn = getDefaultPresets,\n state,\n setDateMode,\n ...props\n}: DateRangePickerPresetsProps) => {\n // The reason that we need to do this at render time is because the default timezone for moment is set after\n // the current User's timezone is loaded. Thus we woudln't be getting the right timezone unless if we defer getting\n // the timezone.\n const presets = presetsFn(Settings.defaultZone.name);\n\n // First match wins — prevents multiple presets appearing selected when ranges overlap.\n const { value } = state;\n const selectedPresetIndex = value\n ? presets.findIndex(\n (preset) =>\n datesMatchByDay(preset.range.start, value.start) &&\n datesMatchByDay(preset.range.end, value.end),\n )\n : -1;\n\n return (\n <Container {...props}>\n <MenuList aria-label='Date range presets'>\n {presets.map((preset, i) => (\n <PresetButton\n key={i}\n preset={preset}\n state={state}\n setDateMode={setDateMode}\n isSelected={i === selectedPresetIndex}\n />\n ))}\n </MenuList>\n </Container>\n );\n};\n\n// Memoize to prevent re-renders when irrelevant state properties change\n// Only re-render when the actual selected date range (state.value) changes\nconst arePropsEqual = (\n prevProps: DateRangePickerPresetsProps,\n nextProps: DateRangePickerPresetsProps,\n) => {\n // Only care about the selected date range, not internal calendar state like isInvalid, visibleRange, etc.\n const prevValue = prevProps.state.value;\n const nextValue = nextProps.state.value;\n\n // If both are null/undefined, they're equal\n if (!prevValue && !nextValue) {\n return true;\n }\n // If only one is null/undefined, they're different\n if (!prevValue || !nextValue) {\n return false;\n }\n\n // Compare the actual date values\n return (\n prevValue.start.compare(nextValue.start) === 0 && prevValue.end.compare(nextValue.end) === 0\n );\n};\n\nexport default memo(DateRangePickerPresets, arePropsEqual);\n","import { type CalendarDate, type DateValue, toCalendarDateTime } from '@internationalized/date';\nimport { range } from 'lodash/fp';\nimport { Settings } from 'luxon';\nimport { type Ref, useRef } from 'react';\nimport {\n type DateRange,\n type RangeCalendarProps as RangeCalendarBaseProps,\n useDateFormatter,\n useLocale,\n useRangeCalendar,\n VisuallyHidden,\n} from 'react-aria';\nimport { type RangeCalendarState, useRangeCalendarState } from 'react-stately';\nimport styled from 'styled-components';\n\nimport { BorderRadius, Color, Spacing } from '@persona/design-tokens';\nimport { ArrowLeftIcon, ArrowRightIcon } from '@persona/icons';\nimport Card from 'design-system/components/Card';\nimport {\n CalendarButton,\n CalendarContainer,\n CalendarHeader,\n CalendarHeading,\n} from 'design-system/components/DatePicker/Calendar/CalendarBase';\nimport CalendarGrid from 'design-system/components/DatePicker/Calendar/CalendarGrid';\nimport RangeCalendarPresets from 'design-system/components/DatePicker/Calendar/RangeCalendarPresets';\nimport { createCalendar } from 'design-system/components/DatePicker/common';\n\nconst RangeCalendarHeader = styled(CalendarHeader)`\n gap: ${Spacing[5]};\n`;\n\nconst CalendarHeaderMonth = styled.div`\n display: grid;\n grid-template-columns: minmax(auto, 1fr) auto minmax(auto, 1fr);\n grid-template-areas: 'prev title next';\n width: 266px;\n align-items: center;\n`;\n\nconst CalendarGrids = styled.div`\n display: flex;\n gap: ${Spacing[5]};\n align-items: start;\n`;\n\nconst PrevButton = styled(CalendarButton)`\n grid-area: prev;\n justify-self: start;\n border-radius: ${BorderRadius.Sm};\n`;\n\nconst NextButton = styled(CalendarButton)`\n grid-area: next;\n justify-self: end;\n border-radius: ${BorderRadius.Sm};\n`;\n\nconst RangeCalendarHeading = styled(CalendarHeading)`\n grid-area: title;\n`;\n\nconst RangeCalendarContainer = styled.div`\n display: flex;\n`;\n\nconst PresetsContainer = styled(Card.Body)`\n border-right: 1px solid ${Color.BorderHairline};\n`;\n\nexport interface RangeCalendarProps extends RangeCalendarBaseProps<DateValue> {\n minDate?: RangeCalendarBaseProps<DateValue>['minValue'];\n maxDate?: RangeCalendarBaseProps<DateValue>['maxValue'];\n calendarRef?: Ref<HTMLDivElement>;\n hidePresets?: boolean;\n onSelectDate?: (d: CalendarDate) => void;\n setDateMode: (mode: 'start' | 'end' | null) => void;\n /**\n * From setValue of DateRangePicker\n */\n setValue: (value: DateRange | null) => void;\n granularity: 'day' | 'hour' | 'minute' | 'second';\n}\n\nconst RangeCalendar = ({\n calendarRef,\n onSelectDate,\n minDate,\n maxDate,\n hidePresets,\n setDateMode,\n setValue,\n granularity,\n ...props\n}: RangeCalendarProps) => {\n const visibleMonths = 2;\n const { locale } = useLocale();\n // Must gather the TZ from the user's settings.\n const timezoneName = Settings.defaultZone.name;\n const rangeCalendarState = useRangeCalendarState({\n ...props,\n minValue: minDate,\n maxValue: maxDate,\n visibleDuration: {\n months: visibleMonths,\n },\n locale,\n createCalendar,\n });\n\n const state: RangeCalendarState = {\n ...rangeCalendarState,\n setValue: (value) => {\n if (!value || granularity === 'day') {\n rangeCalendarState.setValue(value);\n return;\n }\n\n setValue({\n start: toCalendarDateTime(value.start),\n end: toCalendarDateTime(value.end),\n });\n },\n selectDate: (date) => {\n if (onSelectDate) {\n onSelectDate(date);\n rangeCalendarState.setAnchorDate(null);\n } else {\n rangeCalendarState.selectDate(date);\n }\n },\n };\n\n const ref = useRef();\n\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n const { calendarProps, prevButtonProps, nextButtonProps } = useRangeCalendar(props, state, ref);\n\n const monthDateFormatter = useDateFormatter({\n month: 'long',\n year: 'numeric',\n timeZone: timezoneName,\n });\n\n const monthHeaders = range(0, visibleMonths).map((i) => {\n return (\n <CalendarHeaderMonth key={`calendar-month-${i}`}>\n {i === 0 && (\n <PrevButton {...prevButtonProps}>\n <ArrowLeftIcon />\n </PrevButton>\n )}\n <RangeCalendarHeading aria-hidden>\n {monthDateFormatter.format(\n state.visibleRange.start.add({ months: i }).toDate(timezoneName),\n )}\n </RangeCalendarHeading>\n {i === visibleMonths - 1 && (\n <NextButton {...nextButtonProps}>\n <ArrowRightIcon />\n </NextButton>\n )}\n </CalendarHeaderMonth>\n );\n });\n\n const monthGrids = range(0, visibleMonths).map((i) => {\n return (\n <CalendarGrid\n key={`calendar-grid-${i}`}\n state={state}\n offset={{ months: i }}\n skipFromTabOrder={i > 0}\n />\n );\n });\n\n return (\n <RangeCalendarContainer ref={calendarRef}>\n {!hidePresets && (\n <PresetsContainer padding={Spacing[3]}>\n <RangeCalendarPresets state={state} setDateMode={setDateMode} />\n </PresetsContainer>\n )}\n <Card.Body padding={Spacing[3]}>\n {/* @ts-expect-error [strict-migration] The following line is not strict; please fix! */}\n <CalendarContainer {...calendarProps} ref={ref}>\n {/* Calendar header is separate from grid like this to facilitate a11y. */}\n <RangeCalendarHeader>\n <VisuallyHidden isFocusable={false}>{calendarProps['aria-label']}</VisuallyHidden>\n {monthHeaders}\n </RangeCalendarHeader>\n <CalendarGrids>{monthGrids}</CalendarGrids>\n </CalendarContainer>\n </Card.Body>\n </RangeCalendarContainer>\n );\n};\n\nexport default RangeCalendar;\n","import {\n CalendarDate,\n type DateValue,\n parseAbsolute,\n toCalendarDateTime,\n} from '@internationalized/date';\nimport type { DateRangePickerProps as DateRangePickerBase } from '@react-types/datepicker';\nimport type { AriaLabelingProps, RangeValue } from '@react-types/shared';\nimport { type DateTime, Settings } from 'luxon';\nimport { type MutableRefObject, useCallback, useEffect, useRef, useState } from 'react';\nimport {\n mergeProps,\n useButton,\n useDateRangePicker,\n useFocusWithin,\n usePress,\n VisuallyHidden,\n} from 'react-aria';\nimport { useDateRangePickerState } from 'react-stately';\nimport styled from 'styled-components';\n\nimport { Spacing, Typography } from '@persona/design-tokens';\nimport { CircleXInverseIcon } from '@persona/icons';\nimport RangeCalendar from 'design-system/components/DatePicker/Calendar/RangeCalendar';\nimport DateField from 'design-system/components/DatePicker/DateField';\nimport { FormLabel } from 'design-system/components/FormControl';\nimport { ClearButton } from 'design-system/components/Input';\nimport Popover from 'design-system/components/Popover';\nimport { isDisabled } from 'design-system/lib/pseudoClass';\nimport type { InputSizes } from 'design-system/mixins/input';\n\nconst DateRangeContainer = styled.div`\n display: inline-flex;\n flex-direction: column;\n width: 100%;\n`;\n\nconst DateRangeInputs = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst CustomFormLabel = styled(FormLabel)`\n margin-bottom: ${Spacing[2]};\n ${Typography.TextMediumBold};\n`;\n\nexport type DateRange = {\n startDate?: DateTime;\n endDate?: DateTime;\n};\n\nexport interface DateRangePickerProps extends DateRangePickerBase<DateValue>, AriaLabelingProps {\n dateRange: DateRange;\n onChange: (range: RangeValue<DateValue> | null) => void;\n disabled?: boolean;\n size?: InputSizes;\n minDate?: DateValue;\n maxDate?: DateValue;\n label?: string | null;\n dataTest?: string;\n id?: string;\n hidePresets?: boolean;\n className?: string;\n /**\n * Whether or not to display clear button\n */\n showClear?: boolean;\n /**\n * Called when the clear button is clicked/pressed\n */\n onClear?: () => void;\n /**\n * z-index of the calendar popover\n */\n calendarZIndex?: number;\n}\n\nconst OpenButton = ({ calendarRef }: { calendarRef: MutableRefObject<HTMLElement | null> }) => {\n const openCalBtnRef = useRef();\n const { buttonProps } = useButton(\n {\n onPress: () => {\n if (calendarRef.current) {\n (\n calendarRef.current.querySelector('button[aria-label=\"Previous\"]') as HTMLButtonElement\n ).focus();\n }\n },\n },\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n openCalBtnRef,\n );\n\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n return <button {...buttonProps} ref={openCalBtnRef} aria-label='Open calendar' tabIndex={-1} />;\n};\n\nconst ClearRangeButton = styled(ClearButton)`\n height: 16px;\n width: 16px;\n margin-left: ${Spacing[2]};\n\n &${isDisabled}, &:disabled {\n background-color: transparent;\n }\n`;\n\nconst DateRangePicker = ({\n granularity = 'day',\n hideTimeZone = true,\n className,\n calendarZIndex,\n ...props\n}: DateRangePickerProps) => {\n const state = useDateRangePickerState({ granularity, hideTimeZone, ...props });\n const ref = useRef<HTMLDivElement>(null);\n const startFieldRef = useRef<HTMLDivElement>(null);\n const endFieldRef = useRef<HTMLDivElement>(null);\n const [dateMode, setDateMode] = useState<'start' | 'end' | null>(null);\n const { groupProps, startFieldProps, endFieldProps, calendarProps, labelProps } =\n useDateRangePicker({ granularity, hideTimeZone, ...props }, state, ref);\n\n useEffect(() => {\n // If not set, return early\n if (!props.dateRange.startDate || !props.dateRange.endDate) {\n return;\n }\n\n if (!props.dateRange.startDate.isValid || !props.dateRange.endDate.isValid) {\n return;\n }\n\n // Find out the real time by adjusting the date to the user's timezone\n const startDate = props.dateRange.startDate.setZone(Settings.defaultZone);\n const endDate = props.dateRange.endDate.setZone(Settings.defaultZone);\n\n if (!startDate.isValid || !endDate.isValid) {\n return;\n }\n\n // Months are 1-indexed, no translations need to happen to CalendarDates\n const startCalendar = state.hasTime\n ? parseAbsolute(startDate.toISO(), Settings.defaultZone.name)\n : new CalendarDate(startDate.year, startDate.month, startDate.day);\n const endCalendar = state.hasTime\n ? parseAbsolute(endDate.toISO(), Settings.defaultZone.name)\n : new CalendarDate(endDate.year, endDate.month, endDate.day);\n\n const dateRangeV2: RangeValue<DateValue> = {\n start: startCalendar,\n end: endCalendar,\n };\n\n state.setValue(dateRangeV2);\n }, [props.dateRange.startDate, props.dateRange.endDate, granularity]);\n\n // Auto-close overlay when a complete range is selected (e.g., from presets with time enabled)\n const prevValueRef = useRef<RangeValue<DateValue | null> | null>(state.value);\n useEffect(() => {\n const prevValue = prevValueRef.current;\n const currentValue = state.value;\n\n // Update ref for next comparison\n prevValueRef.current = currentValue;\n\n // Close overlay only if BOTH start and end changed simultaneously to DIFFERENT dates (e.g., preset selection)\n // Do not close during manual date selection where:\n // 1. Only one date changes at a time, OR\n // 2. Both dates are set to the same value (initial selection from empty state)\n // Use value comparison (.compare) instead of object identity to handle controlled component re-renders\n const startChanged =\n prevValue?.start && currentValue?.start\n ? prevValue.start.compare(currentValue.start) !== 0\n : prevValue?.start !== currentValue?.start;\n const endChanged =\n prevValue?.end && currentValue?.end\n ? prevValue.end.compare(currentValue.end) !== 0\n : prevValue?.end !== currentValue?.end;\n const datesAreDifferent =\n currentValue?.start &&\n currentValue?.end &&\n currentValue.start.compare(currentValue.end) !== 0;\n\n if (state.isOpen && startChanged && endChanged && datesAreDifferent) {\n state.setOpen(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [state.value, state.isOpen]);\n\n const calendarRef = useRef<HTMLDivElement>(null);\n const [isClosing, setIsClosing] = useState(false);\n\n const { focusWithinProps: startFocusWithinProps } = useFocusWithin({\n onFocusWithin: () => {\n setDateMode('start');\n if (!state.isOpen && !isClosing) {\n state.setOpen(true);\n }\n },\n });\n\n const { focusWithinProps: endFocusWithinProps } = useFocusWithin({\n onFocusWithin: () => {\n setDateMode('end');\n if (!state.isOpen && !isClosing) {\n state.setOpen(true);\n }\n },\n });\n\n const { focusWithinProps: containerFocusProps } = useFocusWithin({\n onBlurWithin: (e) => {\n // Clear dateMode when focus leaves the entire date range picker\n // This prevents the blue outline from persisting after Tab\n if (!calendarRef?.current?.contains(e.relatedTarget)) {\n setDateMode(null);\n // Close overlay when focus leaves the component entirely\n // Provides intuitive UX: user tabs away = done with date selection\n if (state.isOpen) {\n state.setOpen(false);\n }\n }\n },\n });\n\n const handleOutsideClick = (e: Event) => {\n const target = e.target as Node;\n // Don't close if clicking on the date inputs themselves\n if (ref.current?.contains(target)) {\n return;\n }\n\n // When there's a click outside of the containers + calendars, reset the highlighted date\n // Only close the calendar if it's open\n // Note: Radix UI's onInteractOutside already ensures the interaction is outside the popover content\n if (state.isOpen) {\n setDateMode(null);\n state.setOpen(false);\n }\n };\n\n const { pressProps: pressClearProps } = usePress({\n onPress: () => {\n state.setValue(null);\n\n if (props.onClear) {\n props.onClear();\n }\n },\n });\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n if (event.key === 'Enter' && !state.isOpen) {\n event.preventDefault(); // Prevent form submission\n state.setOpen(true);\n }\n },\n [state],\n );\n\n const isValueNull = state.value && state.value.start == null && state.value.end == null;\n\n return (\n <DateRangeContainer data-test={props.dataTest} className={className}>\n {props.label && <CustomFormLabel {...labelProps}>{props.label}</CustomFormLabel>}\n <Popover\n open={state.isOpen}\n modal={false}\n contentProps={{\n align: 'start',\n 'aria-modal': true,\n 'aria-label': props['aria-label'] ?? undefined,\n onInteractOutside: handleOutsideClick,\n onEscapeKeyDown: () => {\n state.setOpen(false);\n // Restore focus to the date field for keyboard users\n if (dateMode) {\n const fieldRef = dateMode === 'start' ? startFieldRef : endFieldRef;\n const seg = fieldRef.current?.querySelector('[tabindex=\"0\"]');\n if (seg instanceof HTMLElement) {\n seg.focus();\n }\n }\n },\n onCloseAutoFocus: (e: Event) => {\n // Prevent Radix's default focus restoration — Escape handles its own above.\n e.preventDefault();\n setIsClosing(true);\n requestAnimationFrame(() => setIsClosing(false));\n },\n noPadding: true,\n style: { zIndex: calendarZIndex },\n }}\n >\n <Popover.Trigger asChild>\n <DateRangeInputs {...mergeProps(groupProps, containerFocusProps)} ref={ref}>\n {/* @ts-expect-error [strict-migration] The following line is not strict; please fix! */}\n <DateField\n ref={startFieldRef}\n inputPosition='start'\n focused={dateMode === 'start'}\n disabled={props.disabled}\n size={props.size}\n {...mergeProps(startFieldProps, startFocusWithinProps, { onKeyDown: handleKeyDown })}\n />\n {/* @ts-expect-error [strict-migration] The following line is not strict; please fix! */}\n <DateField\n ref={endFieldRef}\n inputPosition='end'\n focused={dateMode === 'end'}\n disabled={props.disabled}\n size={props.size}\n {...mergeProps(endFieldProps, endFocusWithinProps, { onKeyDown: handleKeyDown })}\n />\n {props.showClear && (\n <ClearRangeButton\n {...pressClearProps}\n disabled={isValueNull}\n aria-label='Clear date range'\n >\n <CircleXInverseIcon />\n </ClearRangeButton>\n )}\n <VisuallyHidden>\n <OpenButton calendarRef={calendarRef} />\n </VisuallyHidden>\n </DateRangeInputs>\n </Popover.Trigger>\n <RangeCalendar\n {...{ ...calendarProps, autoFocus: undefined }}\n calendarRef={calendarRef}\n setDateMode={setDateMode}\n setValue={state.setValue}\n granularity={granularity}\n hidePresets={props.hidePresets}\n onSelectDate={(dateVal) => {\n /**\n * Please use caution when editing the logic below.\n * It is specific to react-aria's date picker and can be brittle.\n */\n if (dateVal) {\n const date = state.hasTime ? toCalendarDateTime(dateVal) : dateVal;\n\n if (dateMode === 'start') {\n // Handle a case where we've deleted both dates\n if (state.value.end == null && state.value.start == null) {\n state.setValue({\n start: date,\n end: date,\n });\n }\n // If end becomes the start\n else if (state.value.end && date.compare(state.value.end) > 0) {\n state.setValue({\n start: state.value.end,\n end: state.value.end.set(dateVal), // Preserve time\n });\n } else {\n state.setValue({\n // if start is not set, set it to the date or date + time value, otherwise set the dateVal to preserve time\n start: state.value.start == null ? date : state.value.start.set(dateVal),\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n\n end: state.value.end,\n });\n }\n setDateMode('end');\n } else {\n // Handle a case where we've deleted both dates\n if (state.value.end == null && state.value.start == null) {\n state.setValue({\n start: date,\n end: date,\n });\n }\n // If start becomes the end\n else if (state.value.start && date.compare(state.value.start) < 0) {\n state.setValue({\n start: state.value.start.set(dateVal),\n end: state.value.start,\n });\n } else {\n state.setValue({\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n start: state.value.start,\n // if end is not set, set it to the date or date + time value, otherwise set the dateVal to preserve time\n end: state.value.end == null ? date : state.value.end.set(dateVal),\n });\n }\n // Close popover and keep focus on end field\n state.setOpen(false);\n }\n }\n }}\n minDate={props.minDate}\n maxDate={props.maxDate}\n />\n </Popover>\n </DateRangeContainer>\n );\n};\n\nexport default DateRangePicker;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["Spacing","Typography","IconButton","Typography","Color","BorderRadius","Color","Typography","GregorianCalendar","ArrowLeftIcon","ArrowRightIcon","isFocused","Color","Spacing","inputMixin","isFocusedVisible","isNotDisabled","focusWithinOutline","OpenButton","Popover","Z_INDICES","VisuallyHidden","MenuItem","isNotDisabled","isHovered","isFocused","Color","Settings","MenuList","Spacing","BorderRadius","Card","Color","Settings","ArrowLeftIcon","ArrowRightIcon","RangeCalendarPresets","VisuallyHidden","FormLabel","Spacing","Typography","ClearButton","isDisabled","Settings","CalendarDate","Popover","CircleXInverseIcon","VisuallyHidden"],"sources":["../../../components/DatePicker/Calendar/CalendarBase.tsx","../../../components/DatePicker/Calendar/CalendarCell.tsx","../../../components/DatePicker/Calendar/CalendarGrid.tsx","../../../components/DatePicker/common.ts","../../../components/DatePicker/Calendar/Calendar.tsx","../../../components/DatePicker/DateField.tsx","../../../components/DatePicker/DatePicker.tsx","../../../components/DatePicker/Calendar/RangeCalendarPresets.tsx","../../../components/DatePicker/Calendar/RangeCalendar.tsx","../../../components/DatePicker/DateRangePicker.tsx"],"sourcesContent":["import { useRef } from 'react';\nimport { useButton } from 'react-aria';\nimport styled from 'styled-components';\n\nimport { Spacing, Typography } from '@persona/design-tokens';\nimport { IconButton } from 'design-system/components/Button';\nimport type { IconButtonProps } from 'design-system/components/Button/IconButton';\n\nexport const CalendarContainer = styled.div`\n display: inline-block;\n`;\n\nexport const CalendarHeader = styled.div`\n display: flex;\n align-items: center;\n margin-bottom: ${Spacing[2]};\n`;\n\nexport const CalendarHeading = styled.div`\n ${Typography.TextLargeBold};\n flex: 1;\n text-align: center;\n`;\n\nconst StyledCalendarButton = styled(IconButton)`\n width: 32px;\n height: 32px;\n`;\n\nexport const CalendarButton = (props: IconButtonProps) => {\n const ref = useRef();\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n const { buttonProps } = useButton(props, ref);\n\n return (\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n <StyledCalendarButton {...buttonProps} className={props.className} ref={ref}>\n {props.children}\n </StyledCalendarButton>\n );\n};\n","import { type CalendarDate, type DateValue, isSameDay, isSameMonth } from '@internationalized/date';\nimport { useRef } from 'react';\nimport { useCalendarCell } from 'react-aria';\nimport type { CalendarState, RangeCalendarState } from 'react-stately';\nimport styled, { css } from 'styled-components';\n\nimport { BorderRadius, Color, Typography } from '@persona/design-tokens';\n\nconst CalendarCellContainer = styled.td`\n text-align: center;\n width: 38px;\n height: 38px;\n padding: 0px;\n`;\n\ninterface CalendarCellButtonProps {\n isSelected?: boolean;\n isSelectionStart?: boolean;\n isSelectionEnd?: boolean;\n isInvalid?: boolean;\n isDisabled?: boolean;\n}\n\nconst CalendarCellButton = styled.button<CalendarCellButtonProps>`\n ${Typography.TextMedium};\n border-style: none;\n padding: 0;\n background: none;\n width: 100%;\n height: 100%;\n cursor: pointer;\n position: relative;\n\n ${({ isSelected }) =>\n isSelected &&\n css`\n background: ${Color.CorePurple100};\n `}\n\n ${({ isSelectionStart }) =>\n isSelectionStart &&\n css`\n background: ${Color.BackgroundButtonPrimary};\n color: ${Color.TextInverse};\n border-top-left-radius: ${BorderRadius.Sm};\n border-bottom-left-radius: ${BorderRadius.Sm};\n `}\n\n ${({ isSelectionEnd }) =>\n isSelectionEnd &&\n css`\n background: ${Color.BackgroundButtonPrimary};\n color: ${Color.TextInverse};\n border-top-right-radius: ${BorderRadius.Sm};\n border-bottom-right-radius: ${BorderRadius.Sm};\n `}\n\n ${({ isDisabled }) =>\n isDisabled &&\n css`\n color: ${Color.CoreSlate300};\n `}\n\n ${({ isInvalid }) =>\n isInvalid &&\n css`\n background: ${Color.BackgroundButtonDanger};\n color: ${Color.TextInverse};\n `}\n\n &:focus-visible {\n outline: 2px solid ${Color.BorderFocus};\n outline-offset: -2px;\n box-shadow: ${Color.PrimaryWhite} 0px 0px 0px 3px inset;\n z-index: 1;\n }\n`;\n\ninterface CalendarCellProps {\n state: CalendarState | RangeCalendarState;\n date: CalendarDate;\n currentMonth: DateValue;\n}\n\nconst CalendarCell = ({ state, date, currentMonth }: CalendarCellProps) => {\n const ref = useRef();\n const { cellProps, buttonProps, isSelected, isInvalid, isDisabled, formattedDate } =\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n useCalendarCell({ date }, state, ref);\n\n const highlightedRange = 'highlightedRange' in state && state.highlightedRange;\n\n const isOutsideMonth = !isSameMonth(currentMonth, date);\n const isSelectionStart = highlightedRange ? isSameDay(date, highlightedRange.start) : isSelected;\n const isSelectionEnd = highlightedRange ? isSameDay(date, highlightedRange.end) : isSelected;\n\n return (\n <CalendarCellContainer {...cellProps}>\n <CalendarCellButton\n {...buttonProps}\n hidden={isOutsideMonth}\n isSelected={isSelected}\n isSelectionStart={isSelectionStart}\n isSelectionEnd={isSelectionEnd}\n isInvalid={isInvalid}\n isDisabled={isDisabled}\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n ref={ref}\n >\n {formattedDate}\n </CalendarCellButton>\n </CalendarCellContainer>\n );\n};\n\nexport default CalendarCell;\n","import { type DateDuration, endOfMonth, getWeeksInMonth } from '@internationalized/date';\nimport { useCalendarGrid, useLocale } from 'react-aria';\nimport type { CalendarState, RangeCalendarState } from 'react-stately';\nimport styled from 'styled-components';\n\nimport { Color, Typography } from '@persona/design-tokens';\n\nimport CalendarCell from './CalendarCell';\n\nconst CalendarGridContainer = styled.table`\n width: 266px;\n border-spacing: 0px;\n border-collapse: collapse;\n\n &:focus-visible {\n outline: 2px solid ${Color.BorderFocus};\n outline-offset: 1px;\n }\n`;\n\nconst CalendarGridDayHeader = styled.th`\n ${Typography.TextMedium};\n color: ${Color.TextSecondary};\n`;\n\ninterface CalendarGridProps {\n state: CalendarState | RangeCalendarState;\n offset?: DateDuration;\n skipFromTabOrder?: boolean;\n}\n\nconst CalendarGrid = ({ state, offset = {}, skipFromTabOrder = false }: CalendarGridProps) => {\n const { locale } = useLocale();\n const startDate = state.visibleRange.start.add(offset);\n const endDate = endOfMonth(startDate);\n\n const { gridProps, headerProps, weekDays } = useCalendarGrid(\n {\n startDate,\n endDate,\n },\n state,\n );\n\n const weeksInMonth = getWeeksInMonth(startDate, locale);\n\n // Remove second calendar grid from tab order - use arrow keys to navigate between months\n const modifiedGridProps = skipFromTabOrder ? { ...gridProps, tabIndex: -1 } : gridProps;\n\n return (\n <CalendarGridContainer {...modifiedGridProps}>\n <thead {...headerProps}>\n <tr>\n {weekDays.map((day, index) => (\n <CalendarGridDayHeader key={index}>{day}</CalendarGridDayHeader>\n ))}\n </tr>\n </thead>\n <tbody>\n {[...new Array(weeksInMonth).keys()].map((weekIndex) => (\n <tr key={weekIndex}>\n {state\n .getDatesInWeek(weekIndex, startDate)\n .map((date, i) =>\n date ? (\n <CalendarCell key={i} state={state} date={date} currentMonth={startDate} />\n ) : (\n <td key={i} />\n ),\n )}\n </tr>\n ))}\n </tbody>\n </CalendarGridContainer>\n );\n};\n\nexport default CalendarGrid;\n","import { GregorianCalendar } from '@internationalized/date';\n\nexport const createCalendar = () => new GregorianCalendar();\n","import type { Ref } from 'react';\nimport { type AriaCalendarProps, type DateValue, useCalendar, useLocale } from 'react-aria';\nimport { useCalendarState } from 'react-stately';\n\nimport { ArrowLeftIcon, ArrowRightIcon } from '@persona/icons';\nimport {\n CalendarButton,\n CalendarContainer,\n CalendarHeader,\n CalendarHeading,\n} from 'design-system/components/DatePicker/Calendar/CalendarBase';\nimport CalendarGrid from 'design-system/components/DatePicker/Calendar/CalendarGrid';\nimport { createCalendar } from 'design-system/components/DatePicker/common';\n\ninterface CalendarProps extends AriaCalendarProps<DateValue> {\n calendarRef?: Ref<HTMLDivElement>;\n}\n\nconst Calendar = (props: CalendarProps) => {\n const { locale } = useLocale();\n const state = useCalendarState({ ...props, locale, createCalendar });\n const { calendarProps, prevButtonProps, nextButtonProps, title } = useCalendar(props, state);\n\n return (\n <CalendarContainer {...calendarProps} ref={props.calendarRef}>\n <CalendarHeader>\n <CalendarButton {...prevButtonProps}>\n <ArrowLeftIcon />\n </CalendarButton>\n <CalendarHeading>{title}</CalendarHeading>\n <CalendarButton {...nextButtonProps}>\n <ArrowRightIcon />\n </CalendarButton>\n </CalendarHeader>\n <CalendarGrid state={state} />\n </CalendarContainer>\n );\n};\n\nexport default Calendar;\n","import type { DateValue } from '@internationalized/date';\nimport { type AriaDateFieldProps, useDateField, useDateSegment } from '@react-aria/datepicker';\nimport { useLocale } from '@react-aria/i18n';\nimport { mergeRefs } from '@react-aria/utils';\nimport {\n type DateFieldState,\n type DateSegment as DateSegmentObj,\n type SegmentType,\n useDateFieldState,\n} from '@react-stately/datepicker';\nimport { forwardRef, useRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Color, Spacing } from '@persona/design-tokens';\nimport { createCalendar } from 'design-system/components/DatePicker/common';\nimport { isFocused, isFocusedVisible, isNotDisabled } from 'design-system/lib/pseudoClass';\nimport { focusWithinOutline } from 'design-system/mixins/focus';\nimport inputMixin, { type InputMixinProps, type InputSizes } from 'design-system/mixins/input';\nimport type PseudoClassProps from 'design-system/types/PseudoClassProps';\n\ntype DateSegmentContainerProps = { $isComma?: boolean; $isTimezone?: boolean } & PseudoClassProps;\nconst DateSegmentContainer = styled.div<DateSegmentContainerProps>`\n font-variant-numeric: tabular-nums;\n box-sizing: content-box;\n text-align: end;\n\n ${isFocused} {\n outline: 2px solid ${Color.BorderFocus};\n outline-offset: 1px;\n background-color: ${Color.CorePurple200};\n }\n\n ${({ $isComma, $isTimezone }) =>\n ($isComma || $isTimezone) &&\n css`\n margin-left: 0.25ch;\n margin-right: 0.25ch;\n `}\n\n ${({ $isTimezone }) =>\n $isTimezone &&\n css`\n color: ${Color.TextSecondary};\n pointer-events: none;\n\n &:focus {\n outline: none;\n background-color: transparent;\n }\n `}\n`;\n\ntype DateSegmentPlaceholderProps = { isPlaceholder?: boolean; type: SegmentType };\nconst DateSegmentPlaceholder = styled.span<DateSegmentPlaceholderProps>`\n display: block;\n width: 100%;\n pointer-events: none;\n\n &:focus {\n outline: none;\n }\n\n ${({ isPlaceholder }) =>\n isPlaceholder\n ? css`\n height: 100%;\n color: ${({ theme }) => theme.color.text.tertiary};\n `\n : css`\n visibility: hidden;\n height: 0;\n `}\n ${({ type }) =>\n type === 'literal' &&\n css`\n padding-left: ${Spacing[1]};\n padding-right: ${Spacing[1]};\n `}\n ${({ type, isPlaceholder }) =>\n type === 'month' &&\n isPlaceholder &&\n css`\n width: 3ch;\n `}\n`;\n\ninterface DateSegmentProps {\n segment: DateSegmentObj;\n state: DateFieldState;\n}\n\nfunction DateSegment({ segment, state }: DateSegmentProps) {\n const ref = useRef();\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n const { segmentProps } = useDateSegment(segment, state, ref);\n\n let minWidth: string;\n\n switch (segment.type) {\n case 'dayPeriod': {\n minWidth = '2.75ch';\n break;\n }\n default: {\n minWidth = `${segment.maxValue != null && String(segment.maxValue).length + 0.25}ch`;\n break;\n }\n }\n\n const isComma = segment.type === 'literal' && segment.text === ', ';\n const isTimezone = segment.type === 'timeZoneName';\n\n return (\n <DateSegmentContainer\n {...segmentProps}\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n ref={ref}\n style={{\n ...segmentProps.style,\n minWidth,\n }}\n $isComma={isComma}\n $isTimezone={isTimezone}\n {...(isTimezone && { tabIndex: -1, role: 'presentation' })}\n >\n {/* Always reserve space for the placeholder, to prevent layout shift when editing. */}\n {segment.placeholder && (\n <DateSegmentPlaceholder\n aria-hidden='true'\n isPlaceholder={segment.isPlaceholder}\n type={segment.type}\n >\n {segment.placeholder}\n </DateSegmentPlaceholder>\n )}\n {segment.isPlaceholder ? '' : segment.text}\n </DateSegmentContainer>\n );\n}\n\nconst InputBox = styled.div<InputMixinProps & { $inputPosition: 'start' | 'end' }>`\n ${inputMixin};\n display: flex;\n padding-left: ${Spacing[2]};\n padding-right: ${Spacing[2]};\n line-height: 1;\n position: relative;\n\n &${isFocusedVisible}${isNotDisabled} {\n position: relative;\n z-index: 1;\n }\n\n ${focusWithinOutline}\n\n ${({ $inputPosition }) => {\n switch ($inputPosition) {\n case 'start': {\n return css`\n border-top-right-radius: 0px;\n border-bottom-right-radius: 0px;\n `;\n }\n case 'end': {\n return css`\n margin-left: -1px;\n border-top-left-radius: 0px;\n border-bottom-left-radius: 0px;\n `;\n }\n }\n }}\n`;\n\ninterface DateFieldProps extends AriaDateFieldProps<DateValue> {\n inputPosition?: 'start' | 'end';\n focused?: boolean;\n readOnly?: boolean;\n value?: DateValue;\n disabled?: boolean;\n size?: InputSizes;\n style?: React.CSSProperties;\n dateFieldProps?: {\n style?: React.CSSProperties;\n };\n hasError?: boolean;\n}\n\nexport const DateField = forwardRef<HTMLDivElement, DateFieldProps>(function DateField(\n props: DateFieldProps,\n forwardedRef,\n) {\n const { locale } = useLocale();\n const state = useDateFieldState({\n ...props,\n locale,\n createCalendar,\n });\n\n const ref = useRef<HTMLDivElement>();\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n const { fieldProps } = useDateField(props, state, ref);\n\n return (\n <InputBox\n {...fieldProps}\n {...(props.dateFieldProps || {})}\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n ref={mergeRefs<HTMLDivElement>(ref, forwardedRef)}\n focused={props.focused}\n disabled={props.disabled}\n aria-label={props['aria-label']}\n $size={props.size ?? 'md'}\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n $inputPosition={props.inputPosition}\n hasError={props.hasError}\n >\n {state.segments.map((segment, i) => (\n <DateSegment key={i} segment={segment} state={state} />\n ))}\n </InputBox>\n );\n});\n\nexport default DateField;\n","import type { DateValue } from '@internationalized/date';\nimport type { DatePickerProps as DatePickerBase } from '@react-types/datepicker';\nimport { type RefObject, useCallback, useRef, useState } from 'react';\nimport { mergeProps, useButton, useDatePicker, useFocusWithin, VisuallyHidden } from 'react-aria';\nimport { useDatePickerState } from 'react-stately';\n\nimport Calendar from 'design-system/components/DatePicker/Calendar/Calendar';\nimport DateField from 'design-system/components/DatePicker/DateField';\nimport Popover from 'design-system/components/Popover';\nimport { Z_INDICES } from 'design-system/lib/zindex';\nimport type { InputSizes } from 'design-system/mixins/input';\n\nexport interface DatePickerProps extends DatePickerBase<DateValue> {\n id?: string;\n dateFieldProps?: {\n style?: React.CSSProperties;\n };\n disabled?: boolean;\n size?: InputSizes;\n useModalZIndex?: boolean;\n}\n\nconst OpenButton = ({ calendarRef }: { calendarRef: RefObject<HTMLElement> }) => {\n const openCalBtnRef = useRef<HTMLButtonElement>(null);\n const { buttonProps } = useButton(\n {\n onPress: () => {\n if (calendarRef.current) {\n (\n calendarRef.current.querySelector('button[aria-label=\"Previous\"]') as HTMLButtonElement\n ).focus();\n }\n },\n },\n openCalBtnRef,\n );\n\n return <button {...buttonProps} ref={openCalBtnRef} aria-label='Open calendar' />;\n};\n\nexport const DatePicker = (props: DatePickerProps) => {\n const state = useDatePickerState(props);\n const ref = useRef<HTMLDivElement>(null);\n const fieldRef = useRef<HTMLDivElement>(null);\n const { groupProps, fieldProps, calendarProps } = useDatePicker(props, state, ref);\n const calendarRef = useRef<HTMLDivElement>(null);\n const [isClosing, setIsClosing] = useState(false);\n\n const { focusWithinProps } = useFocusWithin({\n onFocusWithin: () => {\n if (!state.isOpen && !isClosing) {\n state.setOpen(true);\n }\n },\n onBlurWithin: (e) => {\n // Close calendar if next target is not within the calendar\n if (e.relatedTarget && !calendarRef?.current?.contains(e.relatedTarget) && state.isOpen) {\n state.setOpen(false);\n }\n },\n });\n\n const handleOutsideClick = (e: Event) => {\n const target = e.target as Node;\n // Don't close if clicking on the date input itself\n if (ref.current?.contains(target)) {\n return;\n }\n if (state.isOpen) {\n state.setOpen(false);\n }\n };\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n if (event.key === 'Enter' && !state.isOpen) {\n event.preventDefault();\n state.setOpen(true);\n }\n },\n [state],\n );\n\n return (\n <div style={{ display: 'flex', flexDirection: 'column' }}>\n <Popover\n open={state.isOpen}\n modal={false}\n contentProps={{\n style: { zIndex: props.useModalZIndex ? Z_INDICES.modalDropdown : Z_INDICES.dropdown },\n align: 'start',\n 'aria-modal': true,\n onInteractOutside: handleOutsideClick,\n onEscapeKeyDown: () => {\n state.setOpen(false);\n },\n onCloseAutoFocus: (e: Event) => {\n // Prevent Radix's default focus restoration\n e.preventDefault();\n setIsClosing(true);\n\n // Manually restore focus to the date field\n if (fieldRef.current) {\n const firstEditableSegment = fieldRef.current.querySelector('[tabindex=\"0\"]');\n if (firstEditableSegment instanceof HTMLElement) {\n firstEditableSegment.focus();\n }\n }\n\n // Reset flag after focus is done\n requestAnimationFrame(() => setIsClosing(false));\n },\n noPadding: true,\n }}\n >\n <Popover.Trigger asChild>\n <div\n {...mergeProps(groupProps, focusWithinProps)}\n ref={ref}\n style={{ display: 'flex', position: 'relative' }}\n >\n <DateField\n ref={fieldRef}\n id={props.id}\n dateFieldProps={props.dateFieldProps}\n disabled={props.disabled}\n size={props.size}\n {...mergeProps(fieldProps, { onKeyDown: handleKeyDown })}\n value={fieldProps.value ?? undefined}\n />\n <VisuallyHidden>\n <OpenButton calendarRef={calendarRef} />\n </VisuallyHidden>\n </div>\n </Popover.Trigger>\n <Calendar\n {...{ ...calendarProps, autoFocus: undefined }}\n calendarRef={calendarRef}\n id='calendar-popover'\n />\n </Popover>\n </div>\n );\n};\n\nexport default DatePicker;\n","import {\n type CalendarDate,\n type DateValue,\n endOfMonth,\n endOfYear,\n startOfMonth,\n startOfYear,\n today,\n} from '@internationalized/date';\nimport type { RangeValue } from '@react-types/shared';\nimport { Settings } from 'luxon';\nimport { memo, useRef } from 'react';\nimport { mergeProps, useButton } from 'react-aria';\nimport type { RangeCalendarState } from 'react-stately';\nimport styled, { css } from 'styled-components';\n\nimport { Color } from '@persona/design-tokens';\nimport { MenuItem, MenuList } from 'design-system/components/Menu';\nimport { isFocused, isHovered, isNotDisabled } from 'design-system/lib/pseudoClass';\n\ninterface DateRangePreset {\n label: string;\n range: RangeValue<CalendarDate>;\n}\n\nconst getDefaultPresets = (tz: string) => {\n const now = today(tz);\n return [\n {\n label: 'Last 7 days',\n range: {\n start: now.subtract({ days: 7 }),\n end: now,\n },\n },\n {\n label: 'Last 14 days',\n range: {\n start: now.subtract({ days: 14 }),\n end: now,\n },\n },\n {\n label: 'Last 30 days',\n range: {\n start: now.subtract({ days: 30 }),\n end: now,\n },\n },\n {\n label: 'This month',\n range: {\n start: startOfMonth(now),\n // Effectively, this should always be today, since we can't look forward\n end: now,\n },\n },\n {\n label: 'Last month',\n range: {\n start: startOfMonth(now.subtract({ months: 1 })),\n end: endOfMonth(now.subtract({ months: 1 })),\n },\n },\n {\n label: 'This year',\n range: {\n start: startOfYear(now),\n end: now,\n },\n },\n {\n label: 'Last year',\n range: {\n start: startOfYear(now.subtract({ years: 1 })),\n end: endOfYear(now.subtract({ years: 1 })),\n },\n },\n ];\n};\n\n/**\n * Compare two date values by year/month/day only, ignoring time components.\n */\nconst datesMatchByDay = (a: CalendarDate, b: DateValue): boolean =>\n a.year === b.year && a.month === b.month && a.day === b.day;\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\ninterface PresetButtonProps {\n state: RangeCalendarState;\n preset: DateRangePreset;\n isSelected: boolean;\n setDateMode: (mode: 'start' | 'end' | null) => void;\n}\n\nconst StyledPresetButton = styled(MenuItem)`\n ${({ selected }) =>\n !selected &&\n css`\n &${isNotDisabled}${isHovered}, &${isNotDisabled}${isFocused} {\n background-color: transparent;\n }\n `}\n\n &:focus-visible {\n // MenuItems default to outline: none, so we need to override it here.\n outline: 2px solid ${Color.BorderFocus} !important;\n outline-offset: 1px;\n }\n`;\n\ninterface DateRangePickerPresetsProps {\n presetsFn?: (tz: string) => DateRangePreset[];\n state: RangeCalendarState;\n setDateMode: (mode: 'start' | 'end' | null) => void;\n}\n\nconst PresetButton = ({ state, preset, isSelected, setDateMode, ...props }: PresetButtonProps) => {\n const ref = useRef<HTMLDivElement>();\n const { buttonProps } = useButton(\n {\n onPress: () => {\n state.setValue(preset.range);\n setDateMode(null);\n },\n },\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n ref,\n );\n\n // Strip aria-current from useButton's props so it doesn't override MenuItem's.\n const { 'aria-current': _ariaCurrent, ...mergedProps } = mergeProps(props, buttonProps);\n\n return (\n <StyledPresetButton\n selected={isSelected}\n {...mergedProps}\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n ref={ref}\n >\n {preset.label}\n </StyledPresetButton>\n );\n};\n\nconst DateRangePickerPresets = ({\n presetsFn = getDefaultPresets,\n state,\n setDateMode,\n ...props\n}: DateRangePickerPresetsProps) => {\n // The reason that we need to do this at render time is because the default timezone for moment is set after\n // the current User's timezone is loaded. Thus we woudln't be getting the right timezone unless if we defer getting\n // the timezone.\n const presets = presetsFn(Settings.defaultZone.name);\n\n // First match wins — prevents multiple presets appearing selected when ranges overlap.\n const { value } = state;\n const selectedPresetIndex = value\n ? presets.findIndex(\n (preset) =>\n datesMatchByDay(preset.range.start, value.start) &&\n datesMatchByDay(preset.range.end, value.end),\n )\n : -1;\n\n return (\n <Container {...props}>\n <MenuList aria-label='Date range presets'>\n {presets.map((preset, i) => (\n <PresetButton\n key={i}\n preset={preset}\n state={state}\n setDateMode={setDateMode}\n isSelected={i === selectedPresetIndex}\n />\n ))}\n </MenuList>\n </Container>\n );\n};\n\n// Memoize to prevent re-renders when irrelevant state properties change\n// Only re-render when the actual selected date range (state.value) changes\nconst arePropsEqual = (\n prevProps: DateRangePickerPresetsProps,\n nextProps: DateRangePickerPresetsProps,\n) => {\n // Only care about the selected date range, not internal calendar state like isInvalid, visibleRange, etc.\n const prevValue = prevProps.state.value;\n const nextValue = nextProps.state.value;\n\n // If both are null/undefined, they're equal\n if (!prevValue && !nextValue) {\n return true;\n }\n // If only one is null/undefined, they're different\n if (!prevValue || !nextValue) {\n return false;\n }\n\n // Compare the actual date values\n return (\n prevValue.start.compare(nextValue.start) === 0 && prevValue.end.compare(nextValue.end) === 0\n );\n};\n\nexport default memo(DateRangePickerPresets, arePropsEqual);\n","import { type CalendarDate, type DateValue, toCalendarDateTime } from '@internationalized/date';\nimport { range } from 'lodash/fp';\nimport { Settings } from 'luxon';\nimport { type Ref, useRef } from 'react';\nimport {\n type DateRange,\n type RangeCalendarProps as RangeCalendarBaseProps,\n useDateFormatter,\n useLocale,\n useRangeCalendar,\n VisuallyHidden,\n} from 'react-aria';\nimport { type RangeCalendarState, useRangeCalendarState } from 'react-stately';\nimport styled from 'styled-components';\n\nimport { BorderRadius, Color, Spacing } from '@persona/design-tokens';\nimport { ArrowLeftIcon, ArrowRightIcon } from '@persona/icons';\nimport Card from 'design-system/components/Card';\nimport {\n CalendarButton,\n CalendarContainer,\n CalendarHeader,\n CalendarHeading,\n} from 'design-system/components/DatePicker/Calendar/CalendarBase';\nimport CalendarGrid from 'design-system/components/DatePicker/Calendar/CalendarGrid';\nimport RangeCalendarPresets from 'design-system/components/DatePicker/Calendar/RangeCalendarPresets';\nimport { createCalendar } from 'design-system/components/DatePicker/common';\n\nconst RangeCalendarHeader = styled(CalendarHeader)`\n gap: ${Spacing[5]};\n`;\n\nconst CalendarHeaderMonth = styled.div`\n display: grid;\n grid-template-columns: minmax(auto, 1fr) auto minmax(auto, 1fr);\n grid-template-areas: 'prev title next';\n width: 266px;\n align-items: center;\n`;\n\nconst CalendarGrids = styled.div`\n display: flex;\n gap: ${Spacing[5]};\n align-items: start;\n`;\n\nconst PrevButton = styled(CalendarButton)`\n grid-area: prev;\n justify-self: start;\n border-radius: ${BorderRadius.Sm};\n`;\n\nconst NextButton = styled(CalendarButton)`\n grid-area: next;\n justify-self: end;\n border-radius: ${BorderRadius.Sm};\n`;\n\nconst RangeCalendarHeading = styled(CalendarHeading)`\n grid-area: title;\n`;\n\nconst RangeCalendarContainer = styled.div`\n display: flex;\n`;\n\nconst PresetsContainer = styled(Card.Body)`\n border-right: 1px solid ${Color.BorderHairline};\n`;\n\nexport interface RangeCalendarProps extends RangeCalendarBaseProps<DateValue> {\n minDate?: RangeCalendarBaseProps<DateValue>['minValue'];\n maxDate?: RangeCalendarBaseProps<DateValue>['maxValue'];\n calendarRef?: Ref<HTMLDivElement>;\n hidePresets?: boolean;\n onSelectDate?: (d: CalendarDate) => void;\n setDateMode: (mode: 'start' | 'end' | null) => void;\n /**\n * From setValue of DateRangePicker\n */\n setValue: (value: DateRange | null) => void;\n granularity: 'day' | 'hour' | 'minute' | 'second';\n}\n\nconst RangeCalendar = ({\n calendarRef,\n onSelectDate,\n minDate,\n maxDate,\n hidePresets,\n setDateMode,\n setValue,\n granularity,\n ...props\n}: RangeCalendarProps) => {\n const visibleMonths = 2;\n const { locale } = useLocale();\n // Must gather the TZ from the user's settings.\n const timezoneName = Settings.defaultZone.name;\n const rangeCalendarState = useRangeCalendarState({\n ...props,\n minValue: minDate,\n maxValue: maxDate,\n visibleDuration: {\n months: visibleMonths,\n },\n locale,\n createCalendar,\n });\n\n const state: RangeCalendarState = {\n ...rangeCalendarState,\n setValue: (value) => {\n if (!value || granularity === 'day') {\n rangeCalendarState.setValue(value);\n return;\n }\n\n setValue({\n start: toCalendarDateTime(value.start),\n end: toCalendarDateTime(value.end),\n });\n },\n selectDate: (date) => {\n if (onSelectDate) {\n onSelectDate(date);\n rangeCalendarState.setAnchorDate(null);\n } else {\n rangeCalendarState.selectDate(date);\n }\n },\n };\n\n const ref = useRef();\n\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n const { calendarProps, prevButtonProps, nextButtonProps } = useRangeCalendar(props, state, ref);\n\n const monthDateFormatter = useDateFormatter({\n month: 'long',\n year: 'numeric',\n timeZone: timezoneName,\n });\n\n const monthHeaders = range(0, visibleMonths).map((i) => {\n return (\n <CalendarHeaderMonth key={`calendar-month-${i}`}>\n {i === 0 && (\n <PrevButton {...prevButtonProps}>\n <ArrowLeftIcon />\n </PrevButton>\n )}\n <RangeCalendarHeading aria-hidden>\n {monthDateFormatter.format(\n state.visibleRange.start.add({ months: i }).toDate(timezoneName),\n )}\n </RangeCalendarHeading>\n {i === visibleMonths - 1 && (\n <NextButton {...nextButtonProps}>\n <ArrowRightIcon />\n </NextButton>\n )}\n </CalendarHeaderMonth>\n );\n });\n\n const monthGrids = range(0, visibleMonths).map((i) => {\n return (\n <CalendarGrid\n key={`calendar-grid-${i}`}\n state={state}\n offset={{ months: i }}\n skipFromTabOrder={i > 0}\n />\n );\n });\n\n return (\n <RangeCalendarContainer ref={calendarRef}>\n {!hidePresets && (\n <PresetsContainer padding={Spacing[3]}>\n <RangeCalendarPresets state={state} setDateMode={setDateMode} />\n </PresetsContainer>\n )}\n <Card.Body padding={Spacing[3]}>\n {/* @ts-expect-error [strict-migration] The following line is not strict; please fix! */}\n <CalendarContainer {...calendarProps} ref={ref}>\n {/* Calendar header is separate from grid like this to facilitate a11y. */}\n <RangeCalendarHeader>\n <VisuallyHidden isFocusable={false}>{calendarProps['aria-label']}</VisuallyHidden>\n {monthHeaders}\n </RangeCalendarHeader>\n <CalendarGrids>{monthGrids}</CalendarGrids>\n </CalendarContainer>\n </Card.Body>\n </RangeCalendarContainer>\n );\n};\n\nexport default RangeCalendar;\n","import {\n CalendarDate,\n type DateValue,\n parseAbsolute,\n toCalendarDateTime,\n} from '@internationalized/date';\nimport type { DateRangePickerProps as DateRangePickerBase } from '@react-types/datepicker';\nimport type { AriaLabelingProps, RangeValue } from '@react-types/shared';\nimport { type DateTime, Settings } from 'luxon';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport {\n mergeProps,\n useButton,\n useDateRangePicker,\n useFocusWithin,\n usePress,\n VisuallyHidden,\n} from 'react-aria';\nimport { useDateRangePickerState } from 'react-stately';\nimport styled from 'styled-components';\n\nimport { Spacing, Typography } from '@persona/design-tokens';\nimport { CircleXInverseIcon } from '@persona/icons';\nimport RangeCalendar from 'design-system/components/DatePicker/Calendar/RangeCalendar';\nimport DateField from 'design-system/components/DatePicker/DateField';\nimport { FormLabel } from 'design-system/components/FormControl';\nimport { ClearButton } from 'design-system/components/Input';\nimport Popover from 'design-system/components/Popover';\nimport { isDisabled } from 'design-system/lib/pseudoClass';\nimport type { InputSizes } from 'design-system/mixins/input';\n\nconst DateRangeContainer = styled.div`\n display: inline-flex;\n flex-direction: column;\n width: 100%;\n`;\n\nconst DateRangeInputs = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst CustomFormLabel = styled(FormLabel)`\n margin-bottom: ${Spacing[2]};\n ${Typography.TextMediumBold};\n`;\n\nexport type DateRange = {\n startDate?: DateTime;\n endDate?: DateTime;\n};\n\nexport interface DateRangePickerProps extends DateRangePickerBase<DateValue>, AriaLabelingProps {\n dateRange: DateRange;\n onChange: (range: RangeValue<DateValue> | null) => void;\n disabled?: boolean;\n size?: InputSizes;\n minDate?: DateValue;\n maxDate?: DateValue;\n label?: string | null;\n dataTest?: string;\n id?: string;\n hidePresets?: boolean;\n className?: string;\n /**\n * Whether or not to display clear button\n */\n showClear?: boolean;\n /**\n * Called when the clear button is clicked/pressed\n */\n onClear?: () => void;\n /**\n * z-index of the calendar popover\n */\n calendarZIndex?: number;\n /**\n * Element that should contain the calendar portal.\n */\n portalContainer?: HTMLElement | null;\n}\n\nconst OpenButton = ({ onOpen, disabled }: { onOpen: () => void; disabled?: boolean }) => {\n const openCalBtnRef = useRef<HTMLButtonElement>(null);\n const { buttonProps } = useButton(\n {\n isDisabled: disabled,\n onPress: onOpen,\n },\n openCalBtnRef,\n );\n\n return (\n <button\n {...buttonProps}\n type='button'\n ref={openCalBtnRef}\n aria-label='Open calendar'\n tabIndex={-1}\n />\n );\n};\n\nconst ClearRangeButton = styled(ClearButton)`\n height: 16px;\n width: 16px;\n margin-left: ${Spacing[2]};\n\n &${isDisabled}, &:disabled {\n background-color: transparent;\n }\n`;\n\nconst DateRangePicker = ({\n granularity = 'day',\n hideTimeZone = true,\n className,\n calendarZIndex,\n portalContainer,\n ...props\n}: DateRangePickerProps) => {\n const state = useDateRangePickerState({ granularity, hideTimeZone, ...props });\n const ref = useRef<HTMLDivElement>(null);\n const startFieldRef = useRef<HTMLDivElement>(null);\n const endFieldRef = useRef<HTMLDivElement>(null);\n const calendarRef = useRef<HTMLDivElement>(null);\n const [dateMode, setDateMode] = useState<'start' | 'end' | null>(null);\n const [isClosing, setIsClosing] = useState(false);\n const { groupProps, startFieldProps, endFieldProps, calendarProps, labelProps } =\n useDateRangePicker({ granularity, hideTimeZone, ...props }, state, ref);\n\n const focusCalendar = useCallback(() => {\n requestAnimationFrame(() => {\n const firstFocusableCalendarElement = calendarRef.current?.querySelector<HTMLElement>(\n '[role=\"menuitem\"], button:not(:disabled), [tabindex=\"0\"]',\n );\n firstFocusableCalendarElement?.focus();\n });\n }, []);\n\n const openCalendar = useCallback(() => {\n if (!props.disabled && !state.isOpen && !isClosing) {\n state.setOpen(true);\n }\n }, [isClosing, props.disabled, state]);\n\n const openCalendarWithFocus = useCallback(() => {\n openCalendar();\n focusCalendar();\n }, [focusCalendar, openCalendar]);\n\n useEffect(() => {\n // If not set, return early\n if (!props.dateRange.startDate || !props.dateRange.endDate) {\n return;\n }\n\n if (!props.dateRange.startDate.isValid || !props.dateRange.endDate.isValid) {\n return;\n }\n\n // Find out the real time by adjusting the date to the user's timezone\n const startDate = props.dateRange.startDate.setZone(Settings.defaultZone);\n const endDate = props.dateRange.endDate.setZone(Settings.defaultZone);\n\n if (!startDate.isValid || !endDate.isValid) {\n return;\n }\n\n // Months are 1-indexed, no translations need to happen to CalendarDates\n const startCalendar = state.hasTime\n ? parseAbsolute(startDate.toISO(), Settings.defaultZone.name)\n : new CalendarDate(startDate.year, startDate.month, startDate.day);\n const endCalendar = state.hasTime\n ? parseAbsolute(endDate.toISO(), Settings.defaultZone.name)\n : new CalendarDate(endDate.year, endDate.month, endDate.day);\n\n const dateRangeV2: RangeValue<DateValue> = {\n start: startCalendar,\n end: endCalendar,\n };\n\n state.setValue(dateRangeV2);\n }, [props.dateRange.startDate, props.dateRange.endDate, granularity]);\n\n // Auto-close overlay when a complete range is selected (e.g., from presets with time enabled)\n const prevValueRef = useRef<RangeValue<DateValue | null> | null>(state.value);\n useEffect(() => {\n const prevValue = prevValueRef.current;\n const currentValue = state.value;\n\n // Update ref for next comparison\n prevValueRef.current = currentValue;\n\n // Close overlay only if BOTH start and end changed simultaneously to DIFFERENT dates (e.g., preset selection)\n // Do not close during manual date selection where:\n // 1. Only one date changes at a time, OR\n // 2. Both dates are set to the same value (initial selection from empty state)\n // Use value comparison (.compare) instead of object identity to handle controlled component re-renders\n const startChanged =\n prevValue?.start && currentValue?.start\n ? prevValue.start.compare(currentValue.start) !== 0\n : prevValue?.start !== currentValue?.start;\n const endChanged =\n prevValue?.end && currentValue?.end\n ? prevValue.end.compare(currentValue.end) !== 0\n : prevValue?.end !== currentValue?.end;\n const datesAreDifferent =\n currentValue?.start &&\n currentValue?.end &&\n currentValue.start.compare(currentValue.end) !== 0;\n\n if (state.isOpen && startChanged && endChanged && datesAreDifferent) {\n state.setOpen(false);\n }\n }, [state.value, state.isOpen]);\n\n const { focusWithinProps: startFocusWithinProps } = useFocusWithin({\n onFocusWithin: () => {\n setDateMode('start');\n openCalendar();\n },\n });\n\n const { focusWithinProps: endFocusWithinProps } = useFocusWithin({\n onFocusWithin: () => {\n setDateMode('end');\n openCalendar();\n },\n });\n\n const { focusWithinProps: containerFocusProps } = useFocusWithin({\n onBlurWithin: () => {\n requestAnimationFrame(() => {\n // Wait for popover focus transitions to settle before closing.\n const activeElement = document.activeElement;\n const isFocusInDateRangeInput =\n activeElement instanceof Node && ref.current?.contains(activeElement);\n const isFocusInCalendar =\n activeElement instanceof Node && calendarRef.current?.contains(activeElement);\n\n if (isFocusInDateRangeInput || isFocusInCalendar) {\n return;\n }\n\n setDateMode(null);\n if (state.isOpen) {\n state.setOpen(false);\n }\n });\n },\n });\n\n const handleOutsideClick = (e: Event) => {\n const target = e.target as Node;\n // Don't close if clicking on the date inputs themselves\n if (ref.current?.contains(target)) {\n return;\n }\n\n // When there's a click outside of the containers + calendars, reset the highlighted date\n // Only close the calendar if it's open\n // Note: Radix UI's onInteractOutside already ensures the interaction is outside the popover content\n if (state.isOpen) {\n setDateMode(null);\n state.setOpen(false);\n }\n };\n\n const { pressProps: pressClearProps } = usePress({\n onPress: () => {\n state.setValue(null);\n\n if (props.onClear) {\n props.onClear();\n }\n },\n });\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n if (event.key === 'Enter') {\n event.preventDefault(); // Prevent form submission\n openCalendarWithFocus();\n }\n },\n [openCalendarWithFocus],\n );\n\n const isValueNull = state.value && state.value.start == null && state.value.end == null;\n\n return (\n <DateRangeContainer data-test={props.dataTest} className={className}>\n {props.label && <CustomFormLabel {...labelProps}>{props.label}</CustomFormLabel>}\n <Popover\n open={state.isOpen}\n modal={false}\n portalProps={portalContainer ? { container: portalContainer } : undefined}\n contentProps={{\n align: 'start',\n 'aria-modal': true,\n 'aria-label': props['aria-label'] ?? undefined,\n onInteractOutside: handleOutsideClick,\n onOpenAutoFocus: (e: Event) => {\n // Field focus opens the calendar for editing, while Enter/Open calendar moves focus inside.\n e.preventDefault();\n },\n onEscapeKeyDown: () => {\n state.setOpen(false);\n // Restore focus to the date field for keyboard users\n if (dateMode) {\n const fieldRef = dateMode === 'start' ? startFieldRef : endFieldRef;\n const seg = fieldRef.current?.querySelector('[tabindex=\"0\"]');\n if (seg instanceof HTMLElement) {\n seg.focus();\n }\n }\n },\n onCloseAutoFocus: (e: Event) => {\n // Prevent Radix's default focus restoration — Escape handles its own above.\n e.preventDefault();\n setIsClosing(true);\n requestAnimationFrame(() => setIsClosing(false));\n },\n noPadding: true,\n style: { zIndex: calendarZIndex },\n zIndex: calendarZIndex,\n }}\n >\n <Popover.Trigger asChild>\n <DateRangeInputs {...mergeProps(groupProps, containerFocusProps)} ref={ref}>\n {/* @ts-expect-error [strict-migration] The following line is not strict; please fix! */}\n <DateField\n ref={startFieldRef}\n inputPosition='start'\n focused={dateMode === 'start'}\n disabled={props.disabled}\n size={props.size}\n {...mergeProps(startFieldProps, startFocusWithinProps, { onKeyDown: handleKeyDown })}\n />\n {/* @ts-expect-error [strict-migration] The following line is not strict; please fix! */}\n <DateField\n ref={endFieldRef}\n inputPosition='end'\n focused={dateMode === 'end'}\n disabled={props.disabled}\n size={props.size}\n {...mergeProps(endFieldProps, endFocusWithinProps, { onKeyDown: handleKeyDown })}\n />\n {props.showClear && (\n <ClearRangeButton\n {...pressClearProps}\n type='button'\n disabled={isValueNull}\n aria-label='Clear date range'\n >\n <CircleXInverseIcon />\n </ClearRangeButton>\n )}\n <VisuallyHidden>\n <OpenButton onOpen={openCalendarWithFocus} disabled={props.disabled} />\n </VisuallyHidden>\n </DateRangeInputs>\n </Popover.Trigger>\n <RangeCalendar\n {...{ ...calendarProps, autoFocus: undefined }}\n calendarRef={calendarRef}\n setDateMode={setDateMode}\n setValue={state.setValue}\n granularity={granularity}\n hidePresets={props.hidePresets}\n onSelectDate={(dateVal) => {\n /**\n * Please use caution when editing the logic below.\n * It is specific to react-aria's date picker and can be brittle.\n */\n if (dateVal) {\n const date = state.hasTime ? toCalendarDateTime(dateVal) : dateVal;\n\n if (dateMode === 'start') {\n // Handle a case where we've deleted both dates\n if (state.value.end == null && state.value.start == null) {\n state.setValue({\n start: date,\n end: date,\n });\n }\n // If end becomes the start\n else if (state.value.end && date.compare(state.value.end) > 0) {\n state.setValue({\n start: state.value.end,\n end: state.value.end.set(dateVal), // Preserve time\n });\n } else {\n state.setValue({\n // if start is not set, set it to the date or date + time value, otherwise set the dateVal to preserve time\n start: state.value.start == null ? date : state.value.start.set(dateVal),\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n\n end: state.value.end,\n });\n }\n setDateMode('end');\n } else {\n // Handle a case where we've deleted both dates\n if (state.value.end == null && state.value.start == null) {\n state.setValue({\n start: date,\n end: date,\n });\n }\n // If start becomes the end\n else if (state.value.start && date.compare(state.value.start) < 0) {\n state.setValue({\n start: state.value.start.set(dateVal),\n end: state.value.start,\n });\n } else {\n state.setValue({\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n start: state.value.start,\n // if end is not set, set it to the date or date + time value, otherwise set the dateVal to preserve time\n end: state.value.end == null ? date : state.value.end.set(dateVal),\n });\n }\n // Close popover and keep focus on end field\n state.setOpen(false);\n }\n }\n }}\n minDate={props.minDate}\n maxDate={props.maxDate}\n />\n </Popover>\n </DateRangeContainer>\n );\n};\n\nexport default DateRangePicker;\n"],"mappings":"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"}