@arc-ui/components 11.24.1 → 12.0.0-beta.3

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 (408) hide show
  1. package/dist/Alert/Alert.cjs.js +18 -29
  2. package/dist/Alert/Alert.esm.js +17 -28
  3. package/dist/Align/Align.cjs.js +6 -6
  4. package/dist/Align/Align.esm.js +2 -2
  5. package/dist/AppButton/AppButton.cjs.js +73 -0
  6. package/dist/AppButton/AppButton.esm.js +65 -0
  7. package/dist/AppButton/package.json +7 -0
  8. package/dist/Avatar/Avatar.cjs.js +7 -7
  9. package/dist/Avatar/Avatar.esm.js +7 -7
  10. package/dist/AvatarGroup/AvatarGroup.cjs.js +14 -14
  11. package/dist/AvatarGroup/AvatarGroup.esm.js +7 -7
  12. package/dist/Badge/Badge.cjs.js +5 -22
  13. package/dist/Badge/Badge.esm.js +5 -22
  14. package/dist/Box/Box.cjs.js +6 -6
  15. package/dist/Box/Box.esm.js +3 -3
  16. package/dist/BrandLogo/BrandLogo.cjs.js +4 -4
  17. package/dist/BrandLogo/BrandLogo.esm.js +4 -4
  18. package/dist/Breadcrumbs/Breadcrumbs.cjs.js +7 -7
  19. package/dist/Breadcrumbs/Breadcrumbs.esm.js +7 -7
  20. package/dist/Button/Button.cjs.js +7 -8
  21. package/dist/Button/Button.esm.js +7 -8
  22. package/dist/ButtonV2/ButtonV2.cjs.js +16 -0
  23. package/dist/ButtonV2/ButtonV2.esm.js +8 -0
  24. package/dist/ButtonV2/package.json +7 -0
  25. package/dist/Calendar/Calendar.cjs.js +11 -10
  26. package/dist/Calendar/Calendar.esm.js +11 -10
  27. package/dist/Checkbox/Checkbox.cjs.js +8 -10
  28. package/dist/Checkbox/Checkbox.esm.js +8 -10
  29. package/dist/Columns/Columns.cjs.js +3 -3
  30. package/dist/Columns/Columns.esm.js +3 -3
  31. package/dist/DatePicker/DatePicker.cjs.js +35 -563
  32. package/dist/DatePicker/DatePicker.esm.js +26 -554
  33. package/dist/Disclosure/Disclosure.cjs.js +10 -10
  34. package/dist/Disclosure/Disclosure.esm.js +6 -6
  35. package/dist/DisclosureMini/DisclosureMini.cjs.js +6 -6
  36. package/dist/DisclosureMini/DisclosureMini.esm.js +6 -6
  37. package/dist/Elevation/Elevation.cjs.js +5 -5
  38. package/dist/Elevation/Elevation.esm.js +1 -1
  39. package/dist/Filter/Filter.cjs.js +3 -3
  40. package/dist/Filter/Filter.esm.js +3 -3
  41. package/dist/FormControl/FormControl.cjs.js +7 -8
  42. package/dist/FormControl/FormControl.esm.js +7 -8
  43. package/dist/Grid/Grid.cjs.js +3 -3
  44. package/dist/Grid/Grid.esm.js +3 -3
  45. package/dist/Group/Group.cjs.js +3 -3
  46. package/dist/Group/Group.esm.js +3 -3
  47. package/dist/Heading/Heading.cjs.js +4 -4
  48. package/dist/Heading/Heading.esm.js +4 -4
  49. package/dist/HeroButton/HeroButton.cjs.js +16 -0
  50. package/dist/HeroButton/HeroButton.esm.js +8 -0
  51. package/dist/HeroButton/package.json +7 -0
  52. package/dist/Hidden/Hidden.cjs.js +5 -5
  53. package/dist/Hidden/Hidden.esm.js +1 -1
  54. package/dist/Icon/Icon.cjs.js +5 -5
  55. package/dist/Icon/Icon.esm.js +5 -5
  56. package/dist/Image/Image.cjs.js +3 -3
  57. package/dist/Image/Image.esm.js +3 -3
  58. package/dist/ImpactCard/ImpactCard.cjs.js +18 -16
  59. package/dist/ImpactCard/ImpactCard.esm.js +14 -12
  60. package/dist/InformationCard/InformationCard.cjs.js +28 -26
  61. package/dist/InformationCard/InformationCard.esm.js +20 -18
  62. package/dist/Link/Link.cjs.js +13 -13
  63. package/dist/Link/Link.esm.js +6 -6
  64. package/dist/Markup/Markup.cjs.js +6 -6
  65. package/dist/Markup/Markup.esm.js +2 -2
  66. package/dist/MediaCard/MediaCard.cjs.js +19 -47
  67. package/dist/MediaCard/MediaCard.esm.js +18 -46
  68. package/dist/Modal/Modal.cjs.js +1496 -250
  69. package/dist/Modal/Modal.esm.js +1475 -248
  70. package/dist/Pagination/Pagination.cjs.js +15 -20
  71. package/dist/Pagination/Pagination.esm.js +8 -13
  72. package/dist/PaginationSimple/PaginationSimple.cjs.js +12 -16
  73. package/dist/PaginationSimple/PaginationSimple.esm.js +7 -11
  74. package/dist/Poster/Poster.cjs.js +5 -5
  75. package/dist/Poster/Poster.esm.js +5 -5
  76. package/dist/ProgressBar/ProgressBar.cjs.js +17 -43
  77. package/dist/ProgressBar/ProgressBar.esm.js +13 -39
  78. package/dist/ProgressStepper/ProgressStepper.cjs.js +5 -5
  79. package/dist/ProgressStepper/ProgressStepper.esm.js +5 -5
  80. package/dist/RadioGroup/RadioGroup.cjs.js +8 -9
  81. package/dist/RadioGroup/RadioGroup.esm.js +8 -9
  82. package/dist/Rule/Rule.cjs.js +5 -5
  83. package/dist/Rule/Rule.esm.js +2 -2
  84. package/dist/ScrollToTop/ScrollToTop.cjs.js +14 -28
  85. package/dist/ScrollToTop/ScrollToTop.esm.js +10 -24
  86. package/dist/Section/Section.cjs.js +2 -2
  87. package/dist/Section/Section.esm.js +2 -2
  88. package/dist/Select/Select.cjs.js +58 -96
  89. package/dist/Select/Select.esm.js +25 -63
  90. package/dist/SiteFooter/SiteFooter.cjs.js +10 -34
  91. package/dist/SiteFooter/SiteFooter.esm.js +10 -34
  92. package/dist/SiteHeaderV2/SiteHeaderV2.cjs.js +14 -13
  93. package/dist/SiteHeaderV2/SiteHeaderV2.esm.js +14 -13
  94. package/dist/SkipLink/SkipLink.cjs.js +3 -3
  95. package/dist/SkipLink/SkipLink.esm.js +1 -1
  96. package/dist/Surface/Surface.cjs.js +2 -2
  97. package/dist/Surface/Surface.esm.js +2 -2
  98. package/dist/Switch/Switch.cjs.js +26 -399
  99. package/dist/Switch/Switch.esm.js +13 -386
  100. package/dist/Tabs/Tabs.cjs.js +10 -11
  101. package/dist/Tabs/Tabs.esm.js +10 -11
  102. package/dist/Tag/Tag.cjs.js +6 -5
  103. package/dist/Tag/Tag.esm.js +6 -5
  104. package/dist/Text/Text.cjs.js +4 -4
  105. package/dist/Text/Text.esm.js +4 -4
  106. package/dist/TextArea/TextArea.cjs.js +62 -57
  107. package/dist/TextArea/TextArea.esm.js +58 -53
  108. package/dist/TextInput/TextInput.cjs.js +9 -10
  109. package/dist/TextInput/TextInput.esm.js +9 -10
  110. package/dist/Theme/Theme.cjs.js +30 -0
  111. package/dist/Theme/Theme.esm.js +21 -0
  112. package/dist/Theme/package.json +7 -0
  113. package/dist/ThemeIcon/ThemeIcon.cjs.js +14 -0
  114. package/dist/ThemeIcon/ThemeIcon.esm.js +6 -0
  115. package/dist/ThemeIcon/package.json +7 -0
  116. package/dist/Toast/Toast.cjs.js +10 -14
  117. package/dist/Toast/Toast.esm.js +10 -14
  118. package/dist/Truncate/Truncate.cjs.js +3 -3
  119. package/dist/Truncate/Truncate.esm.js +1 -1
  120. package/dist/TypographyCard/TypographyCard.cjs.js +16 -14
  121. package/dist/TypographyCard/TypographyCard.esm.js +13 -11
  122. package/dist/UniversalHeader/UniversalHeader.cjs.js +3 -3
  123. package/dist/UniversalHeader/UniversalHeader.esm.js +3 -3
  124. package/dist/VerticalSpace/VerticalSpace.cjs.js +2 -2
  125. package/dist/VerticalSpace/VerticalSpace.esm.js +2 -2
  126. package/dist/VideoPlayer/VideoPlayer.cjs.js +3013 -0
  127. package/dist/VideoPlayer/VideoPlayer.esm.js +3005 -0
  128. package/dist/VideoPlayer/package.json +7 -0
  129. package/dist/Visible/Visible.cjs.js +5 -5
  130. package/dist/Visible/Visible.esm.js +1 -1
  131. package/dist/_shared/cjs/ArcIconEclipse.esm-ac777a76.js +28 -0
  132. package/dist/_shared/cjs/Avatar-fc0d9b8b.js +49 -0
  133. package/dist/_shared/cjs/{BrandLogo-aea340c8.js → BrandLogo-1d2ca2c7.js} +7 -7
  134. package/dist/_shared/cjs/{Breadcrumbs-c6eaf5c4.js → Breadcrumbs-7af0af2c.js} +15 -16
  135. package/dist/_shared/cjs/BtIconArrowRight.esm-5989f2ca.js +38 -0
  136. package/dist/_shared/cjs/{BtIconAlert.esm-1a0ff9f0.js → BtIconPlayFill.esm-b8997cfc.js} +4 -8
  137. package/dist/_shared/cjs/{Button-6ba21d3b.js → Button-7d891a89.js} +13 -16
  138. package/dist/_shared/cjs/ButtonV2-b2db3f46.js +48 -0
  139. package/dist/_shared/cjs/Calendar-780bb071.js +1927 -0
  140. package/dist/_shared/cjs/{CardFooter-ff015d7d.js → CardFooter-5414bc4f.js} +9 -12
  141. package/dist/_shared/cjs/Checkbox-0e423653.js +65 -0
  142. package/dist/_shared/cjs/{Columns-ae4f8cef.js → Columns-1224bdff.js} +9 -16
  143. package/dist/_shared/cjs/{index-77ab5c6a.js → Combination-3a639f6d.js} +877 -83
  144. package/dist/_shared/cjs/DatePicker-e27ea988.js +550 -0
  145. package/dist/_shared/cjs/{DisclosureMini-09c749e5.js → DisclosureMini-c01ecce0.js} +12 -14
  146. package/dist/_shared/cjs/{Filter-f9506dfa.js → Filter-3b897d92.js} +13 -13
  147. package/dist/_shared/cjs/{FormControl-68258ce1.js → FormControl-88d48f42.js} +21 -18
  148. package/dist/_shared/cjs/Grid-9e91fb3d.js +46 -0
  149. package/dist/_shared/cjs/{Group-0429741a.js → Group-3d5ea240.js} +9 -16
  150. package/dist/_shared/cjs/{Heading-27cba320.js → Heading-fb63844f.js} +7 -7
  151. package/dist/_shared/cjs/HeroButton-0586a7c4.js +126 -0
  152. package/dist/_shared/cjs/Icon-0ec0c1fb.js +37 -0
  153. package/dist/_shared/cjs/Image-e9a5a326.js +56 -0
  154. package/dist/_shared/cjs/MediaCard-e1648705.js +65 -0
  155. package/dist/_shared/cjs/{Poster-9b48fd61.js → Poster-b7242b37.js} +15 -15
  156. package/dist/_shared/cjs/Preview-0bf3f6e8.js +167 -0
  157. package/dist/_shared/cjs/{ProgressStepper-491f0286.js → ProgressStepper-fb8405c2.js} +40 -19
  158. package/dist/_shared/cjs/{RadioGroup-26dc00fc.js → RadioGroup-a4186267.js} +14 -14
  159. package/dist/_shared/cjs/{Section-59804166.js → Section-ecfc659b.js} +5 -5
  160. package/dist/_shared/cjs/{SiteFooter-20d5a9fa.js → SiteFooter-b4247527.js} +14 -15
  161. package/dist/_shared/cjs/{SiteHeaderV2-ce1c8737.js → SiteHeaderV2-c2d651bc.js} +115 -83
  162. package/dist/_shared/cjs/{Surface-038db6e1.js → Surface-8599dbe4.js} +23 -23
  163. package/dist/_shared/cjs/{Tabs-bc9fac46.js → Tabs-75c34f43.js} +31 -49
  164. package/dist/_shared/cjs/{Tag-73a59171.js → Tag-452048f6.js} +9 -49
  165. package/dist/_shared/cjs/{Text-606ca3a2.js → Text-1c1110a4.js} +7 -7
  166. package/dist/_shared/cjs/{TextInput-8d139489.js → TextInput-762e2309.js} +11 -11
  167. package/dist/_shared/cjs/ThemeIcon-ee814862.js +27 -0
  168. package/dist/_shared/cjs/{Toast-26207fef.js → Toast-d06a89e0.js} +34 -38
  169. package/dist/_shared/cjs/{UniversalHeader-b8389447.js → UniversalHeader-f6d9c63a.js} +7 -14
  170. package/dist/_shared/cjs/{VerticalSpace-dc53bb70.js → VerticalSpace-e128ec68.js} +5 -5
  171. package/dist/_shared/cjs/_commonjsHelpers-56412ec5.js +21 -0
  172. package/dist/_shared/cjs/component-df82bc05.js +505 -0
  173. package/dist/_shared/cjs/{debounce-123468fb.js → debounce-a74c28cf.js} +2 -2
  174. package/dist/_shared/cjs/{index-74004a9c.js → index-039a9d35.js} +1 -1
  175. package/dist/_shared/cjs/{index-9f99d686.js → index-0c6319ec.js} +1 -1
  176. package/dist/_shared/cjs/index-28447df0.js +23 -0
  177. package/dist/_shared/cjs/{index-a31e64a9.js → index-3d629205.js} +2 -3
  178. package/dist/_shared/cjs/{index-dd1d18ea.js → index-3dd54df1.js} +21 -6
  179. package/dist/_shared/cjs/index-41b09e85.js +53 -0
  180. package/dist/_shared/cjs/{index-6eb396a3.js → index-7aa7f96a.js} +1 -1
  181. package/dist/_shared/{esm/Calendar-ea232839.js → cjs/index-7e31a45b.js} +54 -1942
  182. package/dist/_shared/cjs/{index-d38f1bd0.js → index-996dec94.js} +3 -3
  183. package/dist/_shared/cjs/{filter-data-attrs-1c9a530c.js → index-df60851b.js} +17 -57
  184. package/dist/_shared/cjs/index.es-8b018b0d.js +13 -0
  185. package/dist/_shared/cjs/{suffix-modifier-64dcd338.js → suffix-modifier-c8a34402.js} +2 -2
  186. package/dist/_shared/cjs/{use-media-query-e61881d8.js → use-media-query-d34c83b9.js} +0 -11
  187. package/dist/_shared/esm/ArcIconEclipse.esm-bb48b82a.js +22 -0
  188. package/dist/_shared/esm/{Avatar-320313f0.js → Avatar-38cc0595.js} +6 -23
  189. package/dist/_shared/esm/{BrandLogo-1af78f76.js → BrandLogo-7ed8aeda.js} +3 -3
  190. package/dist/_shared/esm/{Breadcrumbs-7d55e1a6.js → Breadcrumbs-9078b68e.js} +5 -6
  191. package/dist/_shared/esm/BtIconArrowRight.esm-6a17d0ce.js +31 -0
  192. package/dist/_shared/esm/BtIconPlayFill.esm-05fc0344.js +24 -0
  193. package/dist/_shared/esm/{Button-a7d134c6.js → Button-dde2b46a.js} +7 -10
  194. package/dist/_shared/esm/ButtonV2-49cd0615.js +42 -0
  195. package/dist/_shared/esm/Calendar-f81052f4.js +1918 -0
  196. package/dist/_shared/esm/{CardFooter-e13f77b0.js → CardFooter-c79fb2db.js} +7 -10
  197. package/dist/_shared/esm/{Checkbox-588619c7.js → Checkbox-0baca464.js} +15 -12
  198. package/dist/_shared/esm/{Columns-d96b7425.js → Columns-6a8f6fbb.js} +3 -10
  199. package/dist/_shared/esm/{index-b84a20c6.js → Combination-ae3a3f08.js} +853 -66
  200. package/dist/_shared/esm/DatePicker-2260f260.js +539 -0
  201. package/dist/_shared/esm/{DisclosureMini-56719716.js → DisclosureMini-38f4c459.js} +8 -10
  202. package/dist/_shared/esm/{Filter-258ba675.js → Filter-49dcf5ce.js} +2 -2
  203. package/dist/_shared/esm/{FormControl-8e836656.js → FormControl-d873f7fa.js} +14 -11
  204. package/dist/_shared/esm/{Grid-07dbf4bd.js → Grid-fb9fc522.js} +5 -4
  205. package/dist/_shared/esm/{Group-73fdb896.js → Group-66196f07.js} +3 -10
  206. package/dist/_shared/esm/{Heading-d16e0e53.js → Heading-906c7c7c.js} +3 -3
  207. package/dist/_shared/esm/HeroButton-7ea692bf.js +120 -0
  208. package/dist/_shared/esm/{Icon-15799695.js → Icon-512f834f.js} +6 -23
  209. package/dist/_shared/esm/{Image-12fbd327.js → Image-57d08939.js} +15 -5
  210. package/dist/_shared/esm/MediaCard-01250268.js +59 -0
  211. package/dist/_shared/esm/{Poster-4ec2f679.js → Poster-e05a8b45.js} +7 -7
  212. package/dist/_shared/esm/Preview-43b2a75d.js +161 -0
  213. package/dist/_shared/esm/{ProgressStepper-7eba3a6a.js → ProgressStepper-189ed0f9.js} +33 -12
  214. package/dist/_shared/esm/{RadioGroup-427652ac.js → RadioGroup-8ff17cbb.js} +5 -5
  215. package/dist/_shared/esm/{Section-73781b56.js → Section-1acbc06a.js} +1 -1
  216. package/dist/_shared/esm/{SiteFooter-86f910b4.js → SiteFooter-ef6f0cdc.js} +11 -12
  217. package/dist/_shared/esm/{SiteHeaderV2-a7c1b1cb.js → SiteHeaderV2-a041b889.js} +64 -32
  218. package/dist/_shared/esm/{Surface-0ca6817d.js → Surface-71d21a9e.js} +17 -17
  219. package/dist/_shared/esm/{Tabs-9485cab6.js → Tabs-21ac7dfe.js} +11 -29
  220. package/dist/_shared/esm/{Tag-cb35d57b.js → Tag-2513c185.js} +6 -46
  221. package/dist/_shared/esm/{Text-14f586ac.js → Text-a46fb76b.js} +3 -3
  222. package/dist/_shared/esm/{TextInput-c0388103.js → TextInput-94c7b1a4.js} +4 -4
  223. package/dist/_shared/esm/ThemeIcon-c2dc41a6.js +21 -0
  224. package/dist/_shared/esm/{Toast-fcbfc194.js → Toast-de6ca2f3.js} +15 -19
  225. package/dist/_shared/esm/{UniversalHeader-80c7313f.js → UniversalHeader-456ad60c.js} +4 -11
  226. package/dist/_shared/esm/{VerticalSpace-43cd9138.js → VerticalSpace-b07cd8e6.js} +1 -1
  227. package/dist/_shared/esm/_commonjsHelpers-0109d574.js +18 -0
  228. package/dist/_shared/esm/component-d0a555cf.js +476 -0
  229. package/dist/_shared/esm/{debounce-6fed6b84.js → debounce-c8e41002.js} +1 -1
  230. package/dist/_shared/esm/{filter-data-attrs-ea8f4ed4.js → index-288c66b5.js} +17 -55
  231. package/dist/_shared/esm/index-4e58de24.js +51 -0
  232. package/dist/_shared/esm/{index-25a5b393.js → index-5113ed53.js} +1 -2
  233. package/dist/_shared/esm/{index-2cfab9f2.js → index-6028d797.js} +1 -1
  234. package/dist/_shared/{cjs/Calendar-b022545c.js → esm/index-605031ca.js} +44 -1954
  235. package/dist/_shared/esm/index-69089474.js +21 -0
  236. package/dist/_shared/esm/{index-efa9be1a.js → index-7740883c.js} +1 -1
  237. package/dist/_shared/esm/{index-7b531fa7.js → index-cace3545.js} +16 -2
  238. package/dist/_shared/esm/{index-044da8d0.js → index-f97466e9.js} +1 -1
  239. package/dist/_shared/esm/{index-ca72c9d5.js → index-fa93ec97.js} +1 -1
  240. package/dist/_shared/esm/index.es-3139cf9e.js +9 -0
  241. package/dist/_shared/esm/{suffix-modifier-3d548e45.js → suffix-modifier-1ce05abe.js} +2 -2
  242. package/dist/_shared/esm/{use-media-query-4c807227.js → use-media-query-d3622da8.js} +1 -9
  243. package/dist/index.es.js +17418 -40573
  244. package/dist/index.es.js.map +1 -1
  245. package/dist/index.js +17825 -40979
  246. package/dist/index.js.map +1 -1
  247. package/dist/styles.css +13 -11
  248. package/dist/types/components/Alert/Alert.d.ts +3 -5
  249. package/dist/types/components/AppButton/AppButton.d.ts +9 -0
  250. package/dist/types/components/AppButton/icons/AppStore.d.ts +2 -0
  251. package/dist/types/components/AppButton/icons/GooglePlay.d.ts +2 -0
  252. package/dist/types/components/AppButton/index.d.ts +1 -0
  253. package/dist/types/components/Avatar/types/avatar-image.d.ts +1 -1
  254. package/dist/types/components/Badge/Badge.d.ts +0 -8
  255. package/dist/types/components/BrandLogo/BrandLogo.d.ts +2 -2
  256. package/dist/types/components/ButtonV2/ButtonV2.d.ts +79 -0
  257. package/dist/types/components/ButtonV2/index.d.ts +1 -0
  258. package/dist/types/components/Checkbox/Checkbox.d.ts +7 -4
  259. package/dist/types/components/DatePicker/DatePicker.d.ts +1 -1
  260. package/dist/types/components/FormControl/FormControl.d.ts +1 -1
  261. package/dist/types/components/Grid/Grid.types.d.ts +2 -0
  262. package/dist/types/components/Grid/components/Col/Col.d.ts +2 -1
  263. package/dist/types/components/Grid/components/Row/Row.d.ts +2 -1
  264. package/dist/types/components/Grid/index.d.ts +1 -1
  265. package/dist/types/components/HeroButton/HeroButton.d.ts +66 -0
  266. package/dist/types/components/HeroButton/index.d.ts +1 -0
  267. package/dist/types/components/Image/Image.d.ts +4 -0
  268. package/dist/types/components/ImpactCard/ImpactCard.d.ts +8 -3
  269. package/dist/types/components/InformationCard/InformationCard.d.ts +5 -5
  270. package/dist/types/components/MediaCard/MediaCard.d.ts +7 -6
  271. package/dist/types/components/MediaCard/types/index.d.ts +2 -0
  272. package/dist/types/components/MediaCard/types/media-card-image.d.ts +4 -0
  273. package/dist/types/components/MediaCard/types/media-card-video.d.ts +4 -0
  274. package/dist/types/components/Modal/Modal.d.ts +2 -2
  275. package/dist/types/components/Poster/Poster.d.ts +2 -2
  276. package/dist/types/components/ProgressBar/constants/progress-bar-icon-map.d.ts +2 -2
  277. package/dist/types/components/RadioGroup/RadioGroup.d.ts +9 -1
  278. package/dist/types/components/SiteFooter/SiteFooter.d.ts +0 -4
  279. package/dist/types/components/SiteFooter/index.d.ts +0 -1
  280. package/dist/types/components/SiteHeaderV2/components/Panel/Panel.d.ts +1 -1
  281. package/dist/types/components/SiteHeaderV2/components/VerticalDivider/VerticalDivider.d.ts +1 -0
  282. package/dist/types/components/Surface/Surface.d.ts +3 -3
  283. package/dist/types/components/Switch/Switch.d.ts +1 -1
  284. package/dist/types/components/TextArea/TextArea.d.ts +8 -0
  285. package/dist/types/components/TextInput/TextInput.d.ts +4 -2
  286. package/dist/types/components/Theme/Theme.d.ts +21 -0
  287. package/dist/types/components/Theme/index.d.ts +1 -0
  288. package/dist/types/components/ThemeIcon/ThemeIcon.d.ts +18 -0
  289. package/dist/types/components/ThemeIcon/icon-names.d.ts +1 -0
  290. package/dist/types/components/ThemeIcon/index.d.ts +1 -0
  291. package/dist/types/components/TypographyCard/TypographyCard.d.ts +9 -4
  292. package/dist/types/components/VideoPlayer/VideoPlayer.d.ts +18 -0
  293. package/dist/types/components/VideoPlayer/index.d.ts +1 -0
  294. package/dist/types/components/index.d.ts +8 -6
  295. package/dist/types/helpers/get-theme-img.d.ts +6 -0
  296. package/dist/types/helpers/index.d.ts +1 -0
  297. package/dist/types/hooks/index.d.ts +2 -4
  298. package/dist/types/hooks/private/index.d.ts +5 -0
  299. package/dist/types/hooks/private/use-aria-describedby/index.d.ts +1 -0
  300. package/dist/types/hooks/private/use-interaction-mode/index.d.ts +1 -0
  301. package/dist/types/hooks/private/use-numeric-input/index.d.ts +1 -0
  302. package/dist/types/hooks/{use-numeric-input.d.ts → private/use-numeric-input/use-numeric-input.d.ts} +3 -3
  303. package/dist/types/hooks/private/use-pagination/index.d.ts +1 -0
  304. package/dist/types/hooks/private/use-theme-element/index.d.ts +1 -0
  305. package/dist/types/hooks/public/index.d.ts +1 -0
  306. package/dist/types/hooks/public/use-media-query/index.d.ts +1 -0
  307. package/dist/types/hooks/{use-media-query.d.ts → public/use-media-query/use-media-query.d.ts} +1 -1
  308. package/dist/types/index.d.ts +1 -0
  309. package/dist/types/private-components/CardFooter/CardFooter.d.ts +1 -1
  310. package/dist/types/private-components/CardFooter/index.d.ts +1 -1
  311. package/dist/types/private-components/CardHeading/CardHeading.d.ts +3 -3
  312. package/dist/types/private-components/index.d.ts +1 -2
  313. package/dist/types/styles.d.ts +7 -30
  314. package/dist/use-media-query/package.json +7 -0
  315. package/dist/use-media-query/use-media-query.cjs.js +10 -0
  316. package/dist/use-media-query/use-media-query.esm.js +2 -0
  317. package/package.json +48 -38
  318. package/dist/Base/Base.cjs.js +0 -11
  319. package/dist/Base/Base.esm.js +0 -3
  320. package/dist/Base/package.json +0 -7
  321. package/dist/Card/Card.cjs.js +0 -19
  322. package/dist/Card/Card.esm.js +0 -11
  323. package/dist/Card/package.json +0 -7
  324. package/dist/Clock/Clock.cjs.js +0 -48
  325. package/dist/Clock/Clock.esm.js +0 -39
  326. package/dist/Clock/package.json +0 -7
  327. package/dist/Curve/Curve.cjs.js +0 -13
  328. package/dist/Curve/Curve.esm.js +0 -5
  329. package/dist/Curve/package.json +0 -7
  330. package/dist/SiteHeader/SiteHeader.cjs.js +0 -25
  331. package/dist/SiteHeader/SiteHeader.esm.js +0 -16
  332. package/dist/SiteHeader/package.json +0 -7
  333. package/dist/_shared/cjs/Avatar-f1b1c129.js +0 -66
  334. package/dist/_shared/cjs/Base-f5a86eed.js +0 -22
  335. package/dist/_shared/cjs/BtIconArrowRight.esm-50d96943.js +0 -54
  336. package/dist/_shared/cjs/BtIconArrowRightFill.esm-435cf4bd.js +0 -26
  337. package/dist/_shared/cjs/BtIconChevronDown2Px.esm-39030ee0.js +0 -26
  338. package/dist/_shared/cjs/BtIconChevronLeftMid.esm-0aaa6770.js +0 -28
  339. package/dist/_shared/cjs/BtIconChevronRight2Px.esm-dbf8cbee.js +0 -44
  340. package/dist/_shared/cjs/BtIconCrossAlt2Px.esm-1452b14b.js +0 -26
  341. package/dist/_shared/cjs/BtIconTick.esm-844eac6c.js +0 -80
  342. package/dist/_shared/cjs/BtIconTickAlt2Px.esm-57c89acc.js +0 -26
  343. package/dist/_shared/cjs/Card-78a70e63.js +0 -126
  344. package/dist/_shared/cjs/Checkbox-0253327b.js +0 -62
  345. package/dist/_shared/cjs/Combination-9974f2e2.js +0 -1330
  346. package/dist/_shared/cjs/Curve-b5117889.js +0 -33
  347. package/dist/_shared/cjs/Grid-da776e77.js +0 -45
  348. package/dist/_shared/cjs/Icon-b46897a3.js +0 -54
  349. package/dist/_shared/cjs/Image-e873b8fc.js +0 -46
  350. package/dist/_shared/cjs/SiteHeader.rehydrator-9d8f3dad.js +0 -669
  351. package/dist/_shared/cjs/extends-8c5e4b48.js +0 -18
  352. package/dist/_shared/esm/Base-f200653c.js +0 -15
  353. package/dist/_shared/esm/BtIconAlert.esm-a4608d47.js +0 -28
  354. package/dist/_shared/esm/BtIconArrowRight.esm-9b181878.js +0 -46
  355. package/dist/_shared/esm/BtIconArrowRightFill.esm-99019d1a.js +0 -20
  356. package/dist/_shared/esm/BtIconChevronDown2Px.esm-217276c2.js +0 -20
  357. package/dist/_shared/esm/BtIconChevronLeftMid.esm-1ed8330b.js +0 -22
  358. package/dist/_shared/esm/BtIconChevronRight2Px.esm-75e92636.js +0 -37
  359. package/dist/_shared/esm/BtIconCrossAlt2Px.esm-7165ab1a.js +0 -20
  360. package/dist/_shared/esm/BtIconTick.esm-e265098f.js +0 -72
  361. package/dist/_shared/esm/BtIconTickAlt2Px.esm-0bc2ded0.js +0 -20
  362. package/dist/_shared/esm/Card-a4b78406.js +0 -120
  363. package/dist/_shared/esm/Combination-e9f7e64e.js +0 -1301
  364. package/dist/_shared/esm/Curve-e05b3c3f.js +0 -27
  365. package/dist/_shared/esm/SiteHeader.rehydrator-2ec02ee7.js +0 -662
  366. package/dist/_shared/esm/extends-8cc61aad.js +0 -16
  367. package/dist/types/components/Base/Base.d.ts +0 -16
  368. package/dist/types/components/Base/index.d.ts +0 -1
  369. package/dist/types/components/Card/Card.d.ts +0 -132
  370. package/dist/types/components/Card/index.d.ts +0 -1
  371. package/dist/types/components/Clock/Clock.d.ts +0 -17
  372. package/dist/types/components/Clock/Clock.rehydrator.d.ts +0 -2
  373. package/dist/types/components/Clock/index.d.ts +0 -2
  374. package/dist/types/components/Curve/Curve.d.ts +0 -34
  375. package/dist/types/components/Curve/index.d.ts +0 -1
  376. package/dist/types/components/SiteFooter/SiteFooter.rehydrator.d.ts +0 -2
  377. package/dist/types/components/SiteHeader/SiteHeader.d.ts +0 -79
  378. package/dist/types/components/SiteHeader/SiteHeader.rehydrator.d.ts +0 -8
  379. package/dist/types/components/SiteHeader/components/BackButton/BackButton.d.ts +0 -5
  380. package/dist/types/components/SiteHeader/components/BackButton/index.d.ts +0 -1
  381. package/dist/types/components/SiteHeader/components/Column/Column.d.ts +0 -8
  382. package/dist/types/components/SiteHeader/components/Column/index.d.ts +0 -1
  383. package/dist/types/components/SiteHeader/components/Item/Item.d.ts +0 -20
  384. package/dist/types/components/SiteHeader/components/Item/index.d.ts +0 -1
  385. package/dist/types/components/SiteHeader/components/ItemGroup/ItemGroup.d.ts +0 -26
  386. package/dist/types/components/SiteHeader/components/ItemGroup/ItemGroup.rehydrator.d.ts +0 -2
  387. package/dist/types/components/SiteHeader/components/ItemGroup/index.d.ts +0 -2
  388. package/dist/types/components/SiteHeader/components/MenuButton/MenuButton.d.ts +0 -6
  389. package/dist/types/components/SiteHeader/components/MenuButton/index.d.ts +0 -1
  390. package/dist/types/components/SiteHeader/components/NavItem/NavItem.d.ts +0 -42
  391. package/dist/types/components/SiteHeader/components/NavItem/NavItem.rehydrator.d.ts +0 -2
  392. package/dist/types/components/SiteHeader/components/NavItem/NavItemWithSubNav.d.ts +0 -47
  393. package/dist/types/components/SiteHeader/components/NavItem/NavItemWithSubNav.rehydrator.d.ts +0 -2
  394. package/dist/types/components/SiteHeader/components/NavItem/index.d.ts +0 -4
  395. package/dist/types/components/SiteHeader/components/NodeItem/NodeItem.d.ts +0 -8
  396. package/dist/types/components/SiteHeader/components/Panel/Panel.d.ts +0 -22
  397. package/dist/types/components/SiteHeader/components/Panel/index.d.ts +0 -1
  398. package/dist/types/components/SiteHeader/components/SubNavItem/SubNavItem.d.ts +0 -47
  399. package/dist/types/components/SiteHeader/components/SubNavItem/SubNavItem.rehydrator.d.ts +0 -2
  400. package/dist/types/components/SiteHeader/components/SubNavItem/index.d.ts +0 -2
  401. package/dist/types/components/SiteHeader/index.d.ts +0 -2
  402. package/dist/types/private-components/CardLabel/CardLabel.d.ts +0 -10
  403. package/dist/types/private-components/CardLabel/index.d.ts +0 -1
  404. /package/dist/_shared/cjs/{BtIconChevronRightMid.esm-d01ebbd4.js → BtIconChevronRightMid.esm-3e8d18a9.js} +0 -0
  405. /package/dist/_shared/esm/{BtIconChevronRightMid.esm-32268f1a.js → BtIconChevronRightMid.esm-4764708f.js} +0 -0
  406. /package/dist/types/hooks/{use-aria-describedby.d.ts → private/use-aria-describedby/use-aria-describedby.d.ts} +0 -0
  407. /package/dist/types/hooks/{use-interaction-mode.d.ts → private/use-interaction-mode/use-interaction-mode.d.ts} +0 -0
  408. /package/dist/types/hooks/{use-pagination.d.ts → private/use-pagination/use-pagination.d.ts} +0 -0
@@ -0,0 +1,1927 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var index = require('./index-7e31a45b.js');
5
+ var index_es = require('./index.es-8b018b0d.js');
6
+ var useMediaQuery = require('./use-media-query-d34c83b9.js');
7
+ var index$1 = require('./index-df60851b.js');
8
+ var index$2 = require('./index-9947ac13.js');
9
+ var Text = require('./Text-1c1110a4.js');
10
+ var VisuallyHidden = require('./VisuallyHidden-b0de4c7b.js');
11
+ var Surface = require('./Surface-8599dbe4.js');
12
+ var Heading = require('./Heading-fb63844f.js');
13
+ var BtIconChevronRightMid_esm = require('./BtIconChevronRightMid.esm-3e8d18a9.js');
14
+ var Icon = require('./Icon-0ec0c1fb.js');
15
+
16
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
17
+
18
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
19
+
20
+ /**
21
+ * @name addDays
22
+ * @category Day Helpers
23
+ * @summary Add the specified number of days to the given date.
24
+ *
25
+ * @description
26
+ * Add the specified number of days to the given date.
27
+ *
28
+ * @param {Date|Number} date - the date to be changed
29
+ * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
30
+ * @returns {Date} - the new date with the days added
31
+ * @throws {TypeError} - 2 arguments required
32
+ *
33
+ * @example
34
+ * // Add 10 days to 1 September 2014:
35
+ * const result = addDays(new Date(2014, 8, 1), 10)
36
+ * //=> Thu Sep 11 2014 00:00:00
37
+ */
38
+ function addDays(dirtyDate, dirtyAmount) {
39
+ index.requiredArgs(2, arguments);
40
+ var date = index.toDate(dirtyDate);
41
+ var amount = index.toInteger(dirtyAmount);
42
+ if (isNaN(amount)) {
43
+ return new Date(NaN);
44
+ }
45
+ if (!amount) {
46
+ // If 0 days, no-op to avoid changing times in the hour before end of DST
47
+ return date;
48
+ }
49
+ date.setDate(date.getDate() + amount);
50
+ return date;
51
+ }
52
+
53
+ /**
54
+ * @name addMonths
55
+ * @category Month Helpers
56
+ * @summary Add the specified number of months to the given date.
57
+ *
58
+ * @description
59
+ * Add the specified number of months to the given date.
60
+ *
61
+ * @param {Date|Number} date - the date to be changed
62
+ * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
63
+ * @returns {Date} the new date with the months added
64
+ * @throws {TypeError} 2 arguments required
65
+ *
66
+ * @example
67
+ * // Add 5 months to 1 September 2014:
68
+ * const result = addMonths(new Date(2014, 8, 1), 5)
69
+ * //=> Sun Feb 01 2015 00:00:00
70
+ */
71
+ function addMonths(dirtyDate, dirtyAmount) {
72
+ index.requiredArgs(2, arguments);
73
+ var date = index.toDate(dirtyDate);
74
+ var amount = index.toInteger(dirtyAmount);
75
+ if (isNaN(amount)) {
76
+ return new Date(NaN);
77
+ }
78
+ if (!amount) {
79
+ // If 0 months, no-op to avoid changing times in the hour before end of DST
80
+ return date;
81
+ }
82
+ var dayOfMonth = date.getDate();
83
+
84
+ // The JS Date object supports date math by accepting out-of-bounds values for
85
+ // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and
86
+ // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we
87
+ // want except that dates will wrap around the end of a month, meaning that
88
+ // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So
89
+ // we'll default to the end of the desired month by adding 1 to the desired
90
+ // month and using a date of 0 to back up one day to the end of the desired
91
+ // month.
92
+ var endOfDesiredMonth = new Date(date.getTime());
93
+ endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);
94
+ var daysInMonth = endOfDesiredMonth.getDate();
95
+ if (dayOfMonth >= daysInMonth) {
96
+ // If we're already at the end of the month, then this is the correct date
97
+ // and we're done.
98
+ return endOfDesiredMonth;
99
+ } else {
100
+ // Otherwise, we now know that setting the original day-of-month value won't
101
+ // cause an overflow, so set the desired day-of-month. Note that we can't
102
+ // just set the date of `endOfDesiredMonth` because that object may have had
103
+ // its time changed in the unusual case where where a DST transition was on
104
+ // the last day of the month and its local time was in the hour skipped or
105
+ // repeated next to a DST transition. So we use `date` instead which is
106
+ // guaranteed to still have the original time.
107
+ date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);
108
+ return date;
109
+ }
110
+ }
111
+
112
+ /**
113
+ * @name startOfWeek
114
+ * @category Week Helpers
115
+ * @summary Return the start of a week for the given date.
116
+ *
117
+ * @description
118
+ * Return the start of a week for the given date.
119
+ * The result will be in the local timezone.
120
+ *
121
+ * @param {Date|Number} date - the original date
122
+ * @param {Object} [options] - an object with options.
123
+ * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}
124
+ * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)
125
+ * @returns {Date} the start of a week
126
+ * @throws {TypeError} 1 argument required
127
+ * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6
128
+ *
129
+ * @example
130
+ * // The start of a week for 2 September 2014 11:55:00:
131
+ * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))
132
+ * //=> Sun Aug 31 2014 00:00:00
133
+ *
134
+ * @example
135
+ * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:
136
+ * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })
137
+ * //=> Mon Sep 01 2014 00:00:00
138
+ */
139
+ function startOfWeek(dirtyDate, options) {
140
+ var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;
141
+ index.requiredArgs(1, arguments);
142
+ var defaultOptions = index.getDefaultOptions();
143
+ var weekStartsOn = index.toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);
144
+
145
+ // Test if weekStartsOn is between 0 and 6 _and_ is not NaN
146
+ if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {
147
+ throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');
148
+ }
149
+ var date = index.toDate(dirtyDate);
150
+ var day = date.getDay();
151
+ var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;
152
+ date.setDate(date.getDate() - diff);
153
+ date.setHours(0, 0, 0, 0);
154
+ return date;
155
+ }
156
+
157
+ /**
158
+ * @name addWeeks
159
+ * @category Week Helpers
160
+ * @summary Add the specified number of weeks to the given date.
161
+ *
162
+ * @description
163
+ * Add the specified number of week to the given date.
164
+ *
165
+ * @param {Date|Number} date - the date to be changed
166
+ * @param {Number} amount - the amount of weeks to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
167
+ * @returns {Date} the new date with the weeks added
168
+ * @throws {TypeError} 2 arguments required
169
+ *
170
+ * @example
171
+ * // Add 4 weeks to 1 September 2014:
172
+ * const result = addWeeks(new Date(2014, 8, 1), 4)
173
+ * //=> Mon Sep 29 2014 00:00:00
174
+ */
175
+ function addWeeks(dirtyDate, dirtyAmount) {
176
+ index.requiredArgs(2, arguments);
177
+ var amount = index.toInteger(dirtyAmount);
178
+ var days = amount * 7;
179
+ return addDays(dirtyDate, days);
180
+ }
181
+
182
+ /**
183
+ * @name addYears
184
+ * @category Year Helpers
185
+ * @summary Add the specified number of years to the given date.
186
+ *
187
+ * @description
188
+ * Add the specified number of years to the given date.
189
+ *
190
+ * @param {Date|Number} date - the date to be changed
191
+ * @param {Number} amount - the amount of years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
192
+ * @returns {Date} the new date with the years added
193
+ * @throws {TypeError} 2 arguments required
194
+ *
195
+ * @example
196
+ * // Add 5 years to 1 September 2014:
197
+ * const result = addYears(new Date(2014, 8, 1), 5)
198
+ * //=> Sun Sep 01 2019 00:00:00
199
+ */
200
+ function addYears(dirtyDate, dirtyAmount) {
201
+ index.requiredArgs(2, arguments);
202
+ var amount = index.toInteger(dirtyAmount);
203
+ return addMonths(dirtyDate, amount * 12);
204
+ }
205
+
206
+ /**
207
+ * @name compareAsc
208
+ * @category Common Helpers
209
+ * @summary Compare the two dates and return -1, 0 or 1.
210
+ *
211
+ * @description
212
+ * Compare the two dates and return 1 if the first date is after the second,
213
+ * -1 if the first date is before the second or 0 if dates are equal.
214
+ *
215
+ * @param {Date|Number} dateLeft - the first date to compare
216
+ * @param {Date|Number} dateRight - the second date to compare
217
+ * @returns {Number} the result of the comparison
218
+ * @throws {TypeError} 2 arguments required
219
+ *
220
+ * @example
221
+ * // Compare 11 February 1987 and 10 July 1989:
222
+ * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))
223
+ * //=> -1
224
+ *
225
+ * @example
226
+ * // Sort the array of dates:
227
+ * const result = [
228
+ * new Date(1995, 6, 2),
229
+ * new Date(1987, 1, 11),
230
+ * new Date(1989, 6, 10)
231
+ * ].sort(compareAsc)
232
+ * //=> [
233
+ * // Wed Feb 11 1987 00:00:00,
234
+ * // Mon Jul 10 1989 00:00:00,
235
+ * // Sun Jul 02 1995 00:00:00
236
+ * // ]
237
+ */
238
+ function compareAsc(dirtyDateLeft, dirtyDateRight) {
239
+ index.requiredArgs(2, arguments);
240
+ var dateLeft = index.toDate(dirtyDateLeft);
241
+ var dateRight = index.toDate(dirtyDateRight);
242
+ var diff = dateLeft.getTime() - dateRight.getTime();
243
+ if (diff < 0) {
244
+ return -1;
245
+ } else if (diff > 0) {
246
+ return 1;
247
+ // Return 0 if diff is 0; return NaN if diff is NaN
248
+ } else {
249
+ return diff;
250
+ }
251
+ }
252
+
253
+ /**
254
+ * @name endOfDay
255
+ * @category Day Helpers
256
+ * @summary Return the end of a day for the given date.
257
+ *
258
+ * @description
259
+ * Return the end of a day for the given date.
260
+ * The result will be in the local timezone.
261
+ *
262
+ * @param {Date|Number} date - the original date
263
+ * @returns {Date} the end of a day
264
+ * @throws {TypeError} 1 argument required
265
+ *
266
+ * @example
267
+ * // The end of a day for 2 September 2014 11:55:00:
268
+ * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))
269
+ * //=> Tue Sep 02 2014 23:59:59.999
270
+ */
271
+ function endOfDay(dirtyDate) {
272
+ index.requiredArgs(1, arguments);
273
+ var date = index.toDate(dirtyDate);
274
+ date.setHours(23, 59, 59, 999);
275
+ return date;
276
+ }
277
+
278
+ /**
279
+ * @name endOfMonth
280
+ * @category Month Helpers
281
+ * @summary Return the end of a month for the given date.
282
+ *
283
+ * @description
284
+ * Return the end of a month for the given date.
285
+ * The result will be in the local timezone.
286
+ *
287
+ * @param {Date|Number} date - the original date
288
+ * @returns {Date} the end of a month
289
+ * @throws {TypeError} 1 argument required
290
+ *
291
+ * @example
292
+ * // The end of a month for 2 September 2014 11:55:00:
293
+ * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))
294
+ * //=> Tue Sep 30 2014 23:59:59.999
295
+ */
296
+ function endOfMonth(dirtyDate) {
297
+ index.requiredArgs(1, arguments);
298
+ var date = index.toDate(dirtyDate);
299
+ var month = date.getMonth();
300
+ date.setFullYear(date.getFullYear(), month + 1, 0);
301
+ date.setHours(23, 59, 59, 999);
302
+ return date;
303
+ }
304
+
305
+ /**
306
+ * @name isLastDayOfMonth
307
+ * @category Month Helpers
308
+ * @summary Is the given date the last day of a month?
309
+ *
310
+ * @description
311
+ * Is the given date the last day of a month?
312
+ *
313
+ * @param {Date|Number} date - the date to check
314
+ * @returns {Boolean} the date is the last day of a month
315
+ * @throws {TypeError} 1 argument required
316
+ *
317
+ * @example
318
+ * // Is 28 February 2014 the last day of a month?
319
+ * const result = isLastDayOfMonth(new Date(2014, 1, 28))
320
+ * //=> true
321
+ */
322
+ function isLastDayOfMonth(dirtyDate) {
323
+ index.requiredArgs(1, arguments);
324
+ var date = index.toDate(dirtyDate);
325
+ return endOfDay(date).getTime() === endOfMonth(date).getTime();
326
+ }
327
+
328
+ /**
329
+ * @name eachDayOfInterval
330
+ * @category Interval Helpers
331
+ * @summary Return the array of dates within the specified time interval.
332
+ *
333
+ * @description
334
+ * Return the array of dates within the specified time interval.
335
+ *
336
+ * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}
337
+ * @param {Object} [options] - an object with options.
338
+ * @param {Number} [options.step=1] - the step to increment by. The value should be more than 1.
339
+ * @returns {Date[]} the array with starts of days from the day of the interval start to the day of the interval end
340
+ * @throws {TypeError} 1 argument required
341
+ * @throws {RangeError} `options.step` must be a number greater than 1
342
+ * @throws {RangeError} The start of an interval cannot be after its end
343
+ * @throws {RangeError} Date in interval cannot be `Invalid Date`
344
+ *
345
+ * @example
346
+ * // Each day between 6 October 2014 and 10 October 2014:
347
+ * const result = eachDayOfInterval({
348
+ * start: new Date(2014, 9, 6),
349
+ * end: new Date(2014, 9, 10)
350
+ * })
351
+ * //=> [
352
+ * // Mon Oct 06 2014 00:00:00,
353
+ * // Tue Oct 07 2014 00:00:00,
354
+ * // Wed Oct 08 2014 00:00:00,
355
+ * // Thu Oct 09 2014 00:00:00,
356
+ * // Fri Oct 10 2014 00:00:00
357
+ * // ]
358
+ */
359
+ function eachDayOfInterval(dirtyInterval, options) {
360
+ var _options$step;
361
+ index.requiredArgs(1, arguments);
362
+ var interval = dirtyInterval || {};
363
+ var startDate = index.toDate(interval.start);
364
+ var endDate = index.toDate(interval.end);
365
+ var endTime = endDate.getTime();
366
+
367
+ // Throw an exception if start date is after end date or if any date is `Invalid Date`
368
+ if (!(startDate.getTime() <= endTime)) {
369
+ throw new RangeError('Invalid interval');
370
+ }
371
+ var dates = [];
372
+ var currentDate = startDate;
373
+ currentDate.setHours(0, 0, 0, 0);
374
+ var step = Number((_options$step = options === null || options === void 0 ? void 0 : options.step) !== null && _options$step !== void 0 ? _options$step : 1);
375
+ if (step < 1 || isNaN(step)) throw new RangeError('`options.step` must be a number greater than 1');
376
+ while (currentDate.getTime() <= endTime) {
377
+ dates.push(index.toDate(currentDate));
378
+ currentDate.setDate(currentDate.getDate() + step);
379
+ currentDate.setHours(0, 0, 0, 0);
380
+ }
381
+ return dates;
382
+ }
383
+
384
+ /**
385
+ * @name eachWeekOfInterval
386
+ * @category Interval Helpers
387
+ * @summary Return the array of weeks within the specified time interval.
388
+ *
389
+ * @description
390
+ * Return the array of weeks within the specified time interval.
391
+ *
392
+ * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}
393
+ * @param {Object} [options] - an object with options.
394
+ * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}
395
+ * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)
396
+ * @returns {Date[]} the array with starts of weeks from the week of the interval start to the week of the interval end
397
+ * @throws {TypeError} 1 argument required
398
+ * @throws {RangeError} `options.weekStartsOn` must be 0, 1, ..., 6
399
+ * @throws {RangeError} The start of an interval cannot be after its end
400
+ * @throws {RangeError} Date in interval cannot be `Invalid Date`
401
+ *
402
+ * @example
403
+ * // Each week within interval 6 October 2014 - 23 November 2014:
404
+ * const result = eachWeekOfInterval({
405
+ * start: new Date(2014, 9, 6),
406
+ * end: new Date(2014, 10, 23)
407
+ * })
408
+ * //=> [
409
+ * // Sun Oct 05 2014 00:00:00,
410
+ * // Sun Oct 12 2014 00:00:00,
411
+ * // Sun Oct 19 2014 00:00:00,
412
+ * // Sun Oct 26 2014 00:00:00,
413
+ * // Sun Nov 02 2014 00:00:00,
414
+ * // Sun Nov 09 2014 00:00:00,
415
+ * // Sun Nov 16 2014 00:00:00,
416
+ * // Sun Nov 23 2014 00:00:00
417
+ * // ]
418
+ */
419
+ function eachWeekOfInterval(dirtyInterval, options) {
420
+ index.requiredArgs(1, arguments);
421
+ var interval = dirtyInterval || {};
422
+ var startDate = index.toDate(interval.start);
423
+ var endDate = index.toDate(interval.end);
424
+ var endTime = endDate.getTime();
425
+
426
+ // Throw an exception if start date is after end date or if any date is `Invalid Date`
427
+ if (!(startDate.getTime() <= endTime)) {
428
+ throw new RangeError('Invalid interval');
429
+ }
430
+ var startDateWeek = startOfWeek(startDate, options);
431
+ var endDateWeek = startOfWeek(endDate, options);
432
+
433
+ // Some timezones switch DST at midnight, making start of day unreliable in these timezones, 3pm is a safe bet
434
+ startDateWeek.setHours(15);
435
+ endDateWeek.setHours(15);
436
+ endTime = endDateWeek.getTime();
437
+ var weeks = [];
438
+ var currentWeek = startDateWeek;
439
+ while (currentWeek.getTime() <= endTime) {
440
+ currentWeek.setHours(0);
441
+ weeks.push(index.toDate(currentWeek));
442
+ currentWeek = addWeeks(currentWeek, 1);
443
+ currentWeek.setHours(15);
444
+ }
445
+ return weeks;
446
+ }
447
+
448
+ /**
449
+ * @name startOfMonth
450
+ * @category Month Helpers
451
+ * @summary Return the start of a month for the given date.
452
+ *
453
+ * @description
454
+ * Return the start of a month for the given date.
455
+ * The result will be in the local timezone.
456
+ *
457
+ * @param {Date|Number} date - the original date
458
+ * @returns {Date} the start of a month
459
+ * @throws {TypeError} 1 argument required
460
+ *
461
+ * @example
462
+ * // The start of a month for 2 September 2014 11:55:00:
463
+ * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))
464
+ * //=> Mon Sep 01 2014 00:00:00
465
+ */
466
+ function startOfMonth(dirtyDate) {
467
+ index.requiredArgs(1, arguments);
468
+ var date = index.toDate(dirtyDate);
469
+ date.setDate(1);
470
+ date.setHours(0, 0, 0, 0);
471
+ return date;
472
+ }
473
+
474
+ /**
475
+ * @name endOfWeek
476
+ * @category Week Helpers
477
+ * @summary Return the end of a week for the given date.
478
+ *
479
+ * @description
480
+ * Return the end of a week for the given date.
481
+ * The result will be in the local timezone.
482
+ *
483
+ * @param {Date|Number} date - the original date
484
+ * @param {Object} [options] - an object with options.
485
+ * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}
486
+ * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)
487
+ * @returns {Date} the end of a week
488
+ * @throws {TypeError} 1 argument required
489
+ * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6
490
+ *
491
+ * @example
492
+ * // The end of a week for 2 September 2014 11:55:00:
493
+ * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))
494
+ * //=> Sat Sep 06 2014 23:59:59.999
495
+ *
496
+ * @example
497
+ * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:
498
+ * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })
499
+ * //=> Sun Sep 07 2014 23:59:59.999
500
+ */
501
+ function endOfWeek(dirtyDate, options) {
502
+ var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;
503
+ index.requiredArgs(1, arguments);
504
+ var defaultOptions = index.getDefaultOptions();
505
+ var weekStartsOn = index.toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);
506
+
507
+ // Test if weekStartsOn is between 0 and 6 _and_ is not NaN
508
+ if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {
509
+ throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');
510
+ }
511
+ var date = index.toDate(dirtyDate);
512
+ var day = date.getDay();
513
+ var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);
514
+ date.setDate(date.getDate() + diff);
515
+ date.setHours(23, 59, 59, 999);
516
+ return date;
517
+ }
518
+
519
+ /**
520
+ * @name getDate
521
+ * @category Day Helpers
522
+ * @summary Get the day of the month of the given date.
523
+ *
524
+ * @description
525
+ * Get the day of the month of the given date.
526
+ *
527
+ * @param {Date|Number} date - the given date
528
+ * @returns {Number} the day of month
529
+ * @throws {TypeError} 1 argument required
530
+ *
531
+ * @example
532
+ * // Which day of the month is 29 February 2012?
533
+ * const result = getDate(new Date(2012, 1, 29))
534
+ * //=> 29
535
+ */
536
+ function getDate(dirtyDate) {
537
+ index.requiredArgs(1, arguments);
538
+ var date = index.toDate(dirtyDate);
539
+ var dayOfMonth = date.getDate();
540
+ return dayOfMonth;
541
+ }
542
+
543
+ /**
544
+ * @name getDay
545
+ * @category Weekday Helpers
546
+ * @summary Get the day of the week of the given date.
547
+ *
548
+ * @description
549
+ * Get the day of the week of the given date.
550
+ *
551
+ * @param {Date|Number} date - the given date
552
+ * @returns {0|1|2|3|4|5|6} the day of week, 0 represents Sunday
553
+ * @throws {TypeError} 1 argument required
554
+ *
555
+ * @example
556
+ * // Which day of the week is 29 February 2012?
557
+ * const result = getDay(new Date(2012, 1, 29))
558
+ * //=> 3
559
+ */
560
+ function getDay(dirtyDate) {
561
+ index.requiredArgs(1, arguments);
562
+ var date = index.toDate(dirtyDate);
563
+ var day = date.getDay();
564
+ return day;
565
+ }
566
+
567
+ /**
568
+ * @name getDaysInMonth
569
+ * @category Month Helpers
570
+ * @summary Get the number of days in a month of the given date.
571
+ *
572
+ * @description
573
+ * Get the number of days in a month of the given date.
574
+ *
575
+ * @param {Date|Number} date - the given date
576
+ * @returns {Number} the number of days in a month
577
+ * @throws {TypeError} 1 argument required
578
+ *
579
+ * @example
580
+ * // How many days are in February 2000?
581
+ * const result = getDaysInMonth(new Date(2000, 1))
582
+ * //=> 29
583
+ */
584
+ function getDaysInMonth(dirtyDate) {
585
+ index.requiredArgs(1, arguments);
586
+ var date = index.toDate(dirtyDate);
587
+ var year = date.getFullYear();
588
+ var monthIndex = date.getMonth();
589
+ var lastDayOfMonth = new Date(0);
590
+ lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);
591
+ lastDayOfMonth.setHours(0, 0, 0, 0);
592
+ return lastDayOfMonth.getDate();
593
+ }
594
+
595
+ /**
596
+ * @name getMonth
597
+ * @category Month Helpers
598
+ * @summary Get the month of the given date.
599
+ *
600
+ * @description
601
+ * Get the month of the given date.
602
+ *
603
+ * @param {Date|Number} date - the given date
604
+ * @returns {Number} the month
605
+ * @throws {TypeError} 1 argument required
606
+ *
607
+ * @example
608
+ * // Which month is 29 February 2012?
609
+ * const result = getMonth(new Date(2012, 1, 29))
610
+ * //=> 1
611
+ */
612
+ function getMonth(dirtyDate) {
613
+ index.requiredArgs(1, arguments);
614
+ var date = index.toDate(dirtyDate);
615
+ var month = date.getMonth();
616
+ return month;
617
+ }
618
+
619
+ /**
620
+ * @name getYear
621
+ * @category Year Helpers
622
+ * @summary Get the year of the given date.
623
+ *
624
+ * @description
625
+ * Get the year of the given date.
626
+ *
627
+ * @param {Date|Number} date - the given date
628
+ * @returns {Number} the year
629
+ * @throws {TypeError} 1 argument required
630
+ *
631
+ * @example
632
+ * // Which year is 2 July 2014?
633
+ * const result = getYear(new Date(2014, 6, 2))
634
+ * //=> 2014
635
+ */
636
+ function getYear(dirtyDate) {
637
+ index.requiredArgs(1, arguments);
638
+ return index.toDate(dirtyDate).getFullYear();
639
+ }
640
+
641
+ /**
642
+ * @name isAfter
643
+ * @category Common Helpers
644
+ * @summary Is the first date after the second one?
645
+ *
646
+ * @description
647
+ * Is the first date after the second one?
648
+ *
649
+ * @param {Date|Number} date - the date that should be after the other one to return true
650
+ * @param {Date|Number} dateToCompare - the date to compare with
651
+ * @returns {Boolean} the first date is after the second date
652
+ * @throws {TypeError} 2 arguments required
653
+ *
654
+ * @example
655
+ * // Is 10 July 1989 after 11 February 1987?
656
+ * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))
657
+ * //=> true
658
+ */
659
+ function isAfter(dirtyDate, dirtyDateToCompare) {
660
+ index.requiredArgs(2, arguments);
661
+ var date = index.toDate(dirtyDate);
662
+ var dateToCompare = index.toDate(dirtyDateToCompare);
663
+ return date.getTime() > dateToCompare.getTime();
664
+ }
665
+
666
+ /**
667
+ * @name isBefore
668
+ * @category Common Helpers
669
+ * @summary Is the first date before the second one?
670
+ *
671
+ * @description
672
+ * Is the first date before the second one?
673
+ *
674
+ * @param {Date|Number} date - the date that should be before the other one to return true
675
+ * @param {Date|Number} dateToCompare - the date to compare with
676
+ * @returns {Boolean} the first date is before the second date
677
+ * @throws {TypeError} 2 arguments required
678
+ *
679
+ * @example
680
+ * // Is 10 July 1989 before 11 February 1987?
681
+ * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))
682
+ * //=> false
683
+ */
684
+ function isBefore(dirtyDate, dirtyDateToCompare) {
685
+ index.requiredArgs(2, arguments);
686
+ var date = index.toDate(dirtyDate);
687
+ var dateToCompare = index.toDate(dirtyDateToCompare);
688
+ return date.getTime() < dateToCompare.getTime();
689
+ }
690
+
691
+ /**
692
+ * @name isEqual
693
+ * @category Common Helpers
694
+ * @summary Are the given dates equal?
695
+ *
696
+ * @description
697
+ * Are the given dates equal?
698
+ *
699
+ * @param {Date|Number} dateLeft - the first date to compare
700
+ * @param {Date|Number} dateRight - the second date to compare
701
+ * @returns {Boolean} the dates are equal
702
+ * @throws {TypeError} 2 arguments required
703
+ *
704
+ * @example
705
+ * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?
706
+ * const result = isEqual(
707
+ * new Date(2014, 6, 2, 6, 30, 45, 0),
708
+ * new Date(2014, 6, 2, 6, 30, 45, 500)
709
+ * )
710
+ * //=> false
711
+ */
712
+ function isEqual(dirtyLeftDate, dirtyRightDate) {
713
+ index.requiredArgs(2, arguments);
714
+ var dateLeft = index.toDate(dirtyLeftDate);
715
+ var dateRight = index.toDate(dirtyRightDate);
716
+ return dateLeft.getTime() === dateRight.getTime();
717
+ }
718
+
719
+ /**
720
+ * @name isFirstDayOfMonth
721
+ * @category Month Helpers
722
+ * @summary Is the given date the first day of a month?
723
+ *
724
+ * @description
725
+ * Is the given date the first day of a month?
726
+ *
727
+ * @param {Date|Number} date - the date to check
728
+ * @returns {Boolean} the date is the first day of a month
729
+ * @throws {TypeError} 1 argument required
730
+ *
731
+ * @example
732
+ * // Is 1 September 2014 the first day of a month?
733
+ * const result = isFirstDayOfMonth(new Date(2014, 8, 1))
734
+ * //=> true
735
+ */
736
+ function isFirstDayOfMonth(dirtyDate) {
737
+ index.requiredArgs(1, arguments);
738
+ return index.toDate(dirtyDate).getDate() === 1;
739
+ }
740
+
741
+ /**
742
+ * @name isSameMonth
743
+ * @category Month Helpers
744
+ * @summary Are the given dates in the same month (and year)?
745
+ *
746
+ * @description
747
+ * Are the given dates in the same month (and year)?
748
+ *
749
+ * @param {Date|Number} dateLeft - the first date to check
750
+ * @param {Date|Number} dateRight - the second date to check
751
+ * @returns {Boolean} the dates are in the same month (and year)
752
+ * @throws {TypeError} 2 arguments required
753
+ *
754
+ * @example
755
+ * // Are 2 September 2014 and 25 September 2014 in the same month?
756
+ * const result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))
757
+ * //=> true
758
+ *
759
+ * @example
760
+ * // Are 2 September 2014 and 25 September 2015 in the same month?
761
+ * const result = isSameMonth(new Date(2014, 8, 2), new Date(2015, 8, 25))
762
+ * //=> false
763
+ */
764
+ function isSameMonth(dirtyDateLeft, dirtyDateRight) {
765
+ index.requiredArgs(2, arguments);
766
+ var dateLeft = index.toDate(dirtyDateLeft);
767
+ var dateRight = index.toDate(dirtyDateRight);
768
+ return dateLeft.getFullYear() === dateRight.getFullYear() && dateLeft.getMonth() === dateRight.getMonth();
769
+ }
770
+
771
+ /**
772
+ * @name isWithinInterval
773
+ * @category Interval Helpers
774
+ * @summary Is the given date within the interval?
775
+ *
776
+ * @description
777
+ * Is the given date within the interval? (Including start and end.)
778
+ *
779
+ * @param {Date|Number} date - the date to check
780
+ * @param {Interval} interval - the interval to check
781
+ * @returns {Boolean} the date is within the interval
782
+ * @throws {TypeError} 2 arguments required
783
+ * @throws {RangeError} The start of an interval cannot be after its end
784
+ * @throws {RangeError} Date in interval cannot be `Invalid Date`
785
+ *
786
+ * @example
787
+ * // For the date within the interval:
788
+ * isWithinInterval(new Date(2014, 0, 3), {
789
+ * start: new Date(2014, 0, 1),
790
+ * end: new Date(2014, 0, 7)
791
+ * })
792
+ * //=> true
793
+ *
794
+ * @example
795
+ * // For the date outside of the interval:
796
+ * isWithinInterval(new Date(2014, 0, 10), {
797
+ * start: new Date(2014, 0, 1),
798
+ * end: new Date(2014, 0, 7)
799
+ * })
800
+ * //=> false
801
+ *
802
+ * @example
803
+ * // For date equal to interval start:
804
+ * isWithinInterval(date, { start, end: date }) // => true
805
+ *
806
+ * @example
807
+ * // For date equal to interval end:
808
+ * isWithinInterval(date, { start: date, end }) // => true
809
+ */
810
+ function isWithinInterval(dirtyDate, interval) {
811
+ index.requiredArgs(2, arguments);
812
+ var time = index.toDate(dirtyDate).getTime();
813
+ var startTime = index.toDate(interval.start).getTime();
814
+ var endTime = index.toDate(interval.end).getTime();
815
+
816
+ // Throw an exception if start date is after end date or if any date is `Invalid Date`
817
+ if (!(startTime <= endTime)) {
818
+ throw new RangeError('Invalid interval');
819
+ }
820
+ return time >= startTime && time <= endTime;
821
+ }
822
+
823
+ /**
824
+ * @name subDays
825
+ * @category Day Helpers
826
+ * @summary Subtract the specified number of days from the given date.
827
+ *
828
+ * @description
829
+ * Subtract the specified number of days from the given date.
830
+ *
831
+ * @param {Date|Number} date - the date to be changed
832
+ * @param {Number} amount - the amount of days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
833
+ * @returns {Date} the new date with the days subtracted
834
+ * @throws {TypeError} 2 arguments required
835
+ *
836
+ * @example
837
+ * // Subtract 10 days from 1 September 2014:
838
+ * const result = subDays(new Date(2014, 8, 1), 10)
839
+ * //=> Fri Aug 22 2014 00:00:00
840
+ */
841
+ function subDays(dirtyDate, dirtyAmount) {
842
+ index.requiredArgs(2, arguments);
843
+ var amount = index.toInteger(dirtyAmount);
844
+ return addDays(dirtyDate, -amount);
845
+ }
846
+
847
+ /**
848
+ * @name setMonth
849
+ * @category Month Helpers
850
+ * @summary Set the month to the given date.
851
+ *
852
+ * @description
853
+ * Set the month to the given date.
854
+ *
855
+ * @param {Date|Number} date - the date to be changed
856
+ * @param {Number} month - the month of the new date
857
+ * @returns {Date} the new date with the month set
858
+ * @throws {TypeError} 2 arguments required
859
+ *
860
+ * @example
861
+ * // Set February to 1 September 2014:
862
+ * const result = setMonth(new Date(2014, 8, 1), 1)
863
+ * //=> Sat Feb 01 2014 00:00:00
864
+ */
865
+ function setMonth(dirtyDate, dirtyMonth) {
866
+ index.requiredArgs(2, arguments);
867
+ var date = index.toDate(dirtyDate);
868
+ var month = index.toInteger(dirtyMonth);
869
+ var year = date.getFullYear();
870
+ var day = date.getDate();
871
+ var dateWithDesiredMonth = new Date(0);
872
+ dateWithDesiredMonth.setFullYear(year, month, 15);
873
+ dateWithDesiredMonth.setHours(0, 0, 0, 0);
874
+ var daysInMonth = getDaysInMonth(dateWithDesiredMonth);
875
+ // Set the last day of the new month
876
+ // if the original date was the last day of the longer month
877
+ date.setMonth(month, Math.min(day, daysInMonth));
878
+ return date;
879
+ }
880
+
881
+ /**
882
+ * @name set
883
+ * @category Common Helpers
884
+ * @summary Set date values to a given date.
885
+ *
886
+ * @description
887
+ * Set date values to a given date.
888
+ *
889
+ * Sets time values to date from object `values`.
890
+ * A value is not set if it is undefined or null or doesn't exist in `values`.
891
+ *
892
+ * Note about bundle size: `set` does not internally use `setX` functions from date-fns but instead opts
893
+ * to use native `Date#setX` methods. If you use this function, you may not want to include the
894
+ * other `setX` functions that date-fns provides if you are concerned about the bundle size.
895
+ *
896
+ * @param {Date|Number} date - the date to be changed
897
+ * @param {Object} values - an object with options
898
+ * @param {Number} [values.year] - the number of years to be set
899
+ * @param {Number} [values.month] - the number of months to be set
900
+ * @param {Number} [values.date] - the number of days to be set
901
+ * @param {Number} [values.hours] - the number of hours to be set
902
+ * @param {Number} [values.minutes] - the number of minutes to be set
903
+ * @param {Number} [values.seconds] - the number of seconds to be set
904
+ * @param {Number} [values.milliseconds] - the number of milliseconds to be set
905
+ * @returns {Date} the new date with options set
906
+ * @throws {TypeError} 2 arguments required
907
+ * @throws {RangeError} `values` must be an object
908
+ *
909
+ * @example
910
+ * // Transform 1 September 2014 into 20 October 2015 in a single line:
911
+ * const result = set(new Date(2014, 8, 20), { year: 2015, month: 9, date: 20 })
912
+ * //=> Tue Oct 20 2015 00:00:00
913
+ *
914
+ * @example
915
+ * // Set 12 PM to 1 September 2014 01:23:45 to 1 September 2014 12:00:00:
916
+ * const result = set(new Date(2014, 8, 1, 1, 23, 45), { hours: 12 })
917
+ * //=> Mon Sep 01 2014 12:23:45
918
+ */
919
+ function set(dirtyDate, values) {
920
+ index.requiredArgs(2, arguments);
921
+ if (index._typeof(values) !== 'object' || values === null) {
922
+ throw new RangeError('values parameter must be an object');
923
+ }
924
+ var date = index.toDate(dirtyDate);
925
+
926
+ // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date
927
+ if (isNaN(date.getTime())) {
928
+ return new Date(NaN);
929
+ }
930
+ if (values.year != null) {
931
+ date.setFullYear(values.year);
932
+ }
933
+ if (values.month != null) {
934
+ date = setMonth(date, values.month);
935
+ }
936
+ if (values.date != null) {
937
+ date.setDate(index.toInteger(values.date));
938
+ }
939
+ if (values.hours != null) {
940
+ date.setHours(index.toInteger(values.hours));
941
+ }
942
+ if (values.minutes != null) {
943
+ date.setMinutes(index.toInteger(values.minutes));
944
+ }
945
+ if (values.seconds != null) {
946
+ date.setSeconds(index.toInteger(values.seconds));
947
+ }
948
+ if (values.milliseconds != null) {
949
+ date.setMilliseconds(index.toInteger(values.milliseconds));
950
+ }
951
+ return date;
952
+ }
953
+
954
+ /**
955
+ * @name setYear
956
+ * @category Year Helpers
957
+ * @summary Set the year to the given date.
958
+ *
959
+ * @description
960
+ * Set the year to the given date.
961
+ *
962
+ * @param {Date|Number} date - the date to be changed
963
+ * @param {Number} year - the year of the new date
964
+ * @returns {Date} the new date with the year set
965
+ * @throws {TypeError} 2 arguments required
966
+ *
967
+ * @example
968
+ * // Set year 2013 to 1 September 2014:
969
+ * const result = setYear(new Date(2014, 8, 1), 2013)
970
+ * //=> Sun Sep 01 2013 00:00:00
971
+ */
972
+ function setYear(dirtyDate, dirtyYear) {
973
+ index.requiredArgs(2, arguments);
974
+ var date = index.toDate(dirtyDate);
975
+ var year = index.toInteger(dirtyYear);
976
+
977
+ // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date
978
+ if (isNaN(date.getTime())) {
979
+ return new Date(NaN);
980
+ }
981
+ date.setFullYear(year);
982
+ return date;
983
+ }
984
+
985
+ /**
986
+ * @name subMonths
987
+ * @category Month Helpers
988
+ * @summary Subtract the specified number of months from the given date.
989
+ *
990
+ * @description
991
+ * Subtract the specified number of months from the given date.
992
+ *
993
+ * @param {Date|Number} date - the date to be changed
994
+ * @param {Number} amount - the amount of months to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
995
+ * @returns {Date} the new date with the months subtracted
996
+ * @throws {TypeError} 2 arguments required
997
+ *
998
+ * @example
999
+ * // Subtract 5 months from 1 February 2015:
1000
+ * const result = subMonths(new Date(2015, 1, 1), 5)
1001
+ * //=> Mon Sep 01 2014 00:00:00
1002
+ */
1003
+ function subMonths(dirtyDate, dirtyAmount) {
1004
+ index.requiredArgs(2, arguments);
1005
+ var amount = index.toInteger(dirtyAmount);
1006
+ return addMonths(dirtyDate, -amount);
1007
+ }
1008
+
1009
+ /**
1010
+ * @name subWeeks
1011
+ * @category Week Helpers
1012
+ * @summary Subtract the specified number of weeks from the given date.
1013
+ *
1014
+ * @description
1015
+ * Subtract the specified number of weeks from the given date.
1016
+ *
1017
+ * @param {Date|Number} date - the date to be changed
1018
+ * @param {Number} amount - the amount of weeks to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
1019
+ * @returns {Date} the new date with the weeks subtracted
1020
+ * @throws {TypeError} 2 arguments required
1021
+ *
1022
+ * @example
1023
+ * // Subtract 4 weeks from 1 September 2014:
1024
+ * const result = subWeeks(new Date(2014, 8, 1), 4)
1025
+ * //=> Mon Aug 04 2014 00:00:00
1026
+ */
1027
+ function subWeeks(dirtyDate, dirtyAmount) {
1028
+ index.requiredArgs(2, arguments);
1029
+ var amount = index.toInteger(dirtyAmount);
1030
+ return addWeeks(dirtyDate, -amount);
1031
+ }
1032
+
1033
+ /**
1034
+ * @name subYears
1035
+ * @category Year Helpers
1036
+ * @summary Subtract the specified number of years from the given date.
1037
+ *
1038
+ * @description
1039
+ * Subtract the specified number of years from the given date.
1040
+ *
1041
+ * @param {Date|Number} date - the date to be changed
1042
+ * @param {Number} amount - the amount of years to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
1043
+ * @returns {Date} the new date with the years subtracted
1044
+ * @throws {TypeError} 2 arguments required
1045
+ *
1046
+ * @example
1047
+ * // Subtract 5 years from 1 September 2014:
1048
+ * const result = subYears(new Date(2014, 8, 1), 5)
1049
+ * //=> Tue Sep 01 2009 00:00:00
1050
+ */
1051
+ function subYears(dirtyDate, dirtyAmount) {
1052
+ index.requiredArgs(2, arguments);
1053
+ var amount = index.toInteger(dirtyAmount);
1054
+ return addYears(dirtyDate, -amount);
1055
+ }
1056
+
1057
+ var containsDate = function (dates, compareDate) {
1058
+ return dates.map(function (date) { return date.getTime(); }).includes(compareDate.getTime());
1059
+ };
1060
+
1061
+ var dateWithoutTime = function (date) {
1062
+ return set(new Date(date), {
1063
+ hours: 0,
1064
+ minutes: 0,
1065
+ milliseconds: 0,
1066
+ seconds: 0
1067
+ });
1068
+ };
1069
+
1070
+ var getDatesInMonth = function (date) {
1071
+ var dateYear = getYear(date);
1072
+ var dateMonth = getMonth(date);
1073
+ return Array.from({ length: getDaysInMonth(date) }, function (_, i) {
1074
+ return dateWithoutTime(new Date(dateYear, dateMonth, i + 1));
1075
+ });
1076
+ };
1077
+
1078
+ var WeekDaysAbbr;
1079
+ (function (WeekDaysAbbr) {
1080
+ WeekDaysAbbr["MON"] = "Mon";
1081
+ WeekDaysAbbr["TUE"] = "Tue";
1082
+ WeekDaysAbbr["WED"] = "Wed";
1083
+ WeekDaysAbbr["THUR"] = "Thur";
1084
+ WeekDaysAbbr["FRI"] = "Fri";
1085
+ WeekDaysAbbr["SAT"] = "Sat";
1086
+ WeekDaysAbbr["SUN"] = "Sun";
1087
+ })(WeekDaysAbbr || (WeekDaysAbbr = {}));
1088
+ var WeekDays;
1089
+ (function (WeekDays) {
1090
+ WeekDays["MONDAY"] = "Monday";
1091
+ WeekDays["TUESDAY"] = "Tuesday";
1092
+ WeekDays["WEDNESDAY"] = "Wednesday";
1093
+ WeekDays["THURSDAY"] = "Thursday";
1094
+ WeekDays["FRIDAY"] = "Friday";
1095
+ WeekDays["SATURDAY"] = "Saturday";
1096
+ WeekDays["SUNDAY"] = "Sunday";
1097
+ })(WeekDays || (WeekDays = {}));
1098
+
1099
+ var isDay = function (date, day) {
1100
+ var _a;
1101
+ var dayMap = (_a = {},
1102
+ _a[WeekDays.MONDAY] = 1,
1103
+ _a[WeekDays.TUESDAY] = 2,
1104
+ _a[WeekDays.WEDNESDAY] = 3,
1105
+ _a[WeekDays.THURSDAY] = 4,
1106
+ _a[WeekDays.FRIDAY] = 5,
1107
+ _a[WeekDays.SATURDAY] = 6,
1108
+ _a[WeekDays.SUNDAY] = 0,
1109
+ _a);
1110
+ return getDay(date) === dayMap[day];
1111
+ };
1112
+
1113
+ var isDisabledDate = function (date, disabledDates, minDate, maxDate) {
1114
+ return ((minDate && isBefore(date, minDate)) ||
1115
+ (maxDate && isAfter(date, maxDate)) ||
1116
+ (disabledDates && containsDate(disabledDates, date)));
1117
+ };
1118
+
1119
+ var isMonthBeforeMinDate = function (month, minDate) {
1120
+ return getDatesInMonth(month).every(function (date) {
1121
+ return isBefore(date, minDate);
1122
+ });
1123
+ };
1124
+
1125
+ var isMonthAfterMaxDate = function (date, maxDate) {
1126
+ return getDatesInMonth(date).every(function (date) {
1127
+ return isAfter(date, maxDate);
1128
+ });
1129
+ };
1130
+
1131
+ var processSelectedRange = function (_a) {
1132
+ var range = _a.range, value = _a.value, disabledDates = _a.disabledDates;
1133
+ var exisitingRange = range.filter(function (date) { return Boolean(date); });
1134
+ var newRange = index$1.__spreadArray(index$1.__spreadArray([], (exisitingRange.length === 2 ? [] : exisitingRange), true), [
1135
+ value,
1136
+ ], false).sort(compareAsc);
1137
+ var isSelectionComplete = newRange.length === 2;
1138
+ var allDaysInRange = isSelectionComplete
1139
+ ? eachDayOfInterval({
1140
+ start: newRange[0],
1141
+ end: newRange[1]
1142
+ })
1143
+ : [];
1144
+ var rangeOnChangeValue = {
1145
+ dates: allDaysInRange.map(function (date) { return ({
1146
+ value: date,
1147
+ disabled: disabledDates ? containsDate(disabledDates, date) : false
1148
+ }); }),
1149
+ selectedDate: value,
1150
+ start: newRange[0],
1151
+ end: newRange[1],
1152
+ isSelectionComplete: isSelectionComplete
1153
+ };
1154
+ return {
1155
+ rangeValue: newRange,
1156
+ rangeOnChangeValue: rangeOnChangeValue
1157
+ };
1158
+ };
1159
+
1160
+ var getCalendarType = function (type, isDesktop) {
1161
+ if (type === "double" && !isDesktop) {
1162
+ return "month";
1163
+ }
1164
+ if (type === "double" && isDesktop) {
1165
+ return "double";
1166
+ }
1167
+ return type;
1168
+ };
1169
+
1170
+ var getDoubleMonthDisplayRange = function (date) {
1171
+ var firstMonth = getMonth(date) % 2 !== 0 ? subMonths(date, 1) : date;
1172
+ var secondMonth = addMonths(firstMonth, 1);
1173
+ return [firstMonth, secondMonth];
1174
+ };
1175
+
1176
+ var getFocusDate = function (_a) {
1177
+ var minDate = _a.minDate, maxDate = _a.maxDate, date = _a.date;
1178
+ var isFocusDateBeforeMinDate = minDate && isBefore(date, minDate);
1179
+ var isFocusDateAfterMaxDate = maxDate && isAfter(date, maxDate);
1180
+ if (isFocusDateBeforeMinDate) {
1181
+ return minDate;
1182
+ }
1183
+ if (isFocusDateAfterMaxDate) {
1184
+ return maxDate;
1185
+ }
1186
+ return date;
1187
+ };
1188
+
1189
+ var getHighlightRange = function (_a) {
1190
+ var date = _a.date, minDate = _a.minDate, maxDate = _a.maxDate, range = _a.range;
1191
+ var existingRange = range.filter(function (date) { return Boolean(date); });
1192
+ if (existingRange.filter(function (date) { return Boolean(date); }).length === 1) {
1193
+ var isDateBeforeMinDate = minDate && isBefore(date, minDate);
1194
+ var isDateAfterMaxDate = maxDate && isAfter(date, maxDate);
1195
+ if (isDateBeforeMinDate) {
1196
+ return [minDate, existingRange[0]].sort(compareAsc);
1197
+ }
1198
+ if (isDateAfterMaxDate) {
1199
+ return [maxDate, existingRange[0]].sort(compareAsc);
1200
+ }
1201
+ return [date, existingRange[0]].sort(compareAsc);
1202
+ }
1203
+ return existingRange;
1204
+ };
1205
+
1206
+ var KeyNames;
1207
+ (function (KeyNames) {
1208
+ KeyNames["ArrowUp"] = "ArrowUp";
1209
+ KeyNames["ArrowDown"] = "ArrowDown";
1210
+ KeyNames["ArrowLeft"] = "ArrowLeft";
1211
+ KeyNames["ArrowRight"] = "ArrowRight";
1212
+ KeyNames["Home"] = "Home";
1213
+ KeyNames["End"] = "End";
1214
+ KeyNames["PageUp"] = "PageUp";
1215
+ KeyNames["PageDown"] = "PageDown";
1216
+ KeyNames["Tab"] = "Tab";
1217
+ KeyNames["Enter"] = "Enter";
1218
+ KeyNames["Space"] = " ";
1219
+ })(KeyNames || (KeyNames = {}));
1220
+
1221
+ var getKeyDownDate = function (_a) {
1222
+ var key = _a.key, shiftKey = _a.shiftKey, focusDate = _a.focusDate;
1223
+ switch (key) {
1224
+ case KeyNames.ArrowDown:
1225
+ return addWeeks(focusDate, 1);
1226
+ case KeyNames.ArrowLeft:
1227
+ return subDays(focusDate, 1);
1228
+ case KeyNames.ArrowRight:
1229
+ return addDays(focusDate, 1);
1230
+ case KeyNames.ArrowUp:
1231
+ return subWeeks(focusDate, 1);
1232
+ case KeyNames.Home:
1233
+ return dateWithoutTime(startOfWeek(focusDate, { weekStartsOn: 1 }));
1234
+ case KeyNames.End:
1235
+ return dateWithoutTime(endOfWeek(focusDate, { weekStartsOn: 1 }));
1236
+ case KeyNames.PageUp:
1237
+ return shiftKey ? subYears(focusDate, 1) : subMonths(focusDate, 1);
1238
+ case KeyNames.PageDown:
1239
+ return shiftKey ? addYears(focusDate, 1) : addMonths(focusDate, 1);
1240
+ default:
1241
+ return focusDate;
1242
+ }
1243
+ };
1244
+
1245
+ var ArcCalendarContext = React.createContext(null);
1246
+
1247
+ var CalendarDayNumber = React.forwardRef(function (_a, autoFocusRef) {
1248
+ var date = _a.date, shouldRender = _a.shouldRender, isFocusWithinDayGrid = _a.isFocusWithinDayGrid;
1249
+ var context = React.useContext(ArcCalendarContext);
1250
+ var isFocusDate = context && isEqual(date, context.focusDate);
1251
+ var tableCellRef = React.useCallback(function (el) {
1252
+ if (el && isFocusDate && isFocusWithinDayGrid) {
1253
+ el.focus();
1254
+ }
1255
+ }, [isFocusDate, isFocusWithinDayGrid]);
1256
+ if (!context) {
1257
+ return null;
1258
+ }
1259
+ var handleRefs = function (el) {
1260
+ tableCellRef(el);
1261
+ if (autoFocusRef && typeof autoFocusRef === "function") {
1262
+ autoFocusRef(el);
1263
+ }
1264
+ };
1265
+ var disabledDates = context.disabledDates, selectedDate = context.selectedDate, selectionType = context.selectionType, selectedRange = context.selectedRange, highlightedRange = context.highlightedRange, todayDate = context.todayDate, onDayNumberClick = context.onDayNumberClick, onDayNumberHover = context.onDayNumberHover, minDate = context.minDate, maxDate = context.maxDate;
1266
+ var highlightedRangeStart = highlightedRange[0];
1267
+ var highlightedRangeEnd = highlightedRange[1];
1268
+ var isSelectedDate = selectionType === "single"
1269
+ ? isEqual(date, selectedDate)
1270
+ : selectedRange.length &&
1271
+ containsDate(selectedRange.filter(function (date) { return Boolean(date); }), date);
1272
+ var isTodayDate = isEqual(date, todayDate);
1273
+ var dateIsWithinHighlightedRange = selectionType === "range" &&
1274
+ highlightedRange.length === 2 &&
1275
+ !isAfter(date, highlightedRangeEnd) &&
1276
+ !isBefore(date, highlightedRangeStart);
1277
+ var isRoundedLeft = selectionType === "range" &&
1278
+ (isDay(date, WeekDays.MONDAY) ||
1279
+ isFirstDayOfMonth(date) ||
1280
+ isEqual(date, highlightedRangeStart));
1281
+ var isRoundedRight = selectionType === "range" &&
1282
+ (isDay(date, WeekDays.SUNDAY) ||
1283
+ isLastDayOfMonth(date) ||
1284
+ isEqual(date, highlightedRangeEnd));
1285
+ var conditionalClasses = {
1286
+ "arc-CalendarDayNumber--selected": isSelectedDate,
1287
+ "arc-CalendarDayNumber--todayDate": isTodayDate,
1288
+ "arc-CalendarDayNumber--hightlightedRange": dateIsWithinHighlightedRange,
1289
+ "arc-CalendarDayNumber--hightlightedRangeRoundedLeft": isRoundedLeft,
1290
+ "arc-CalendarDayNumber--hightlightedRangeRoundedRight": isRoundedRight
1291
+ };
1292
+ var isAriaSelected = isSelectedDate ||
1293
+ (dateIsWithinHighlightedRange && selectedRange.length === 2);
1294
+ var tableCellProps = {
1295
+ className: index$2.classNames("arc-CalendarDayNumber", conditionalClasses),
1296
+ tabIndex: isFocusDate && shouldRender ? 0 : -1,
1297
+ "aria-current": isTodayDate ? "date" : undefined,
1298
+ "aria-selected": isAriaSelected,
1299
+ "aria-disabled": isDisabledDate(date, disabledDates, minDate, maxDate),
1300
+ onClick: onDayNumberClick(date),
1301
+ onMouseEnter: onDayNumberHover(date)
1302
+ };
1303
+ return (React__default["default"].createElement("td", index$1.__assign({ ref: handleRefs, "data-date": date.getTime() }, (shouldRender ? tableCellProps : {})), shouldRender && (React__default["default"].createElement(React__default["default"].Fragment, null,
1304
+ React__default["default"].createElement(VisuallyHidden.VisuallyHidden, null, index.format(date, "MMMM do, yyyy")),
1305
+ React__default["default"].createElement("div", { className: "arc-CalendarDayNumber-buttonOuter" },
1306
+ React__default["default"].createElement("div", { className: "arc-CalendarDayNumber-buttonInner" },
1307
+ React__default["default"].createElement(Text.Text, { size: "s" },
1308
+ React__default["default"].createElement("span", { "aria-hidden": true }, getDate(date)))))))));
1309
+ });
1310
+
1311
+ const BtIconChevronDownMid = (props) =>
1312
+ /*#__PURE__*/ React__default["default"].createElement(
1313
+ "svg",
1314
+ Object.assign(
1315
+ {
1316
+ viewBox: "0 0 32 32",
1317
+ fill: "none",
1318
+ xmlns: "http://www.w3.org/2000/svg",
1319
+ },
1320
+ props,
1321
+ ),
1322
+ /*#__PURE__*/ React__default["default"].createElement("path", {
1323
+ fillRule: "evenodd",
1324
+ clipRule: "evenodd",
1325
+ d: "M16.0001 18.0909L21.7041 12.3935C21.9566 12.1415 22.2987 12 22.6554 12C23.0121 12 23.3543 12.1415 23.6068 12.3935C23.7316 12.5181 23.8306 12.6661 23.8982 12.829C23.9657 12.9919 24.0005 13.1665 24.0005 13.3429C24.0005 13.5192 23.9657 13.6938 23.8982 13.8567C23.8306 14.0196 23.7316 14.1676 23.6068 14.2922L16.9508 20.9402C16.6983 21.1918 16.3565 21.3331 16.0001 21.3331C15.6437 21.3331 15.3018 21.1918 15.0494 20.9402L8.39342 14.2922C8.26861 14.1676 8.16959 14.0196 8.10202 13.8567C8.03446 13.6938 7.99969 13.5192 7.99969 13.3429C7.99969 13.1665 8.03446 12.9919 8.10202 12.829C8.16959 12.6661 8.26861 12.5181 8.39342 12.3935C8.6459 12.1415 8.98804 12 9.34475 12C9.70147 12 10.0436 12.1415 10.2961 12.3935L16.0001 18.0909Z",
1326
+ fill: "currentColor",
1327
+ }),
1328
+ );
1329
+
1330
+ var CalendarDateSelect = function (_a) {
1331
+ var ariaLabel = _a.ariaLabel, onChange = _a.onChange, name = _a.name, value = _a.value, displayValue = _a.displayValue, options = _a.options;
1332
+ return (React__default["default"].createElement("div", { className: "arc-CalendarDateSelect-wrapper" },
1333
+ React__default["default"].createElement("select", { "aria-label": ariaLabel, onChange: onChange, className: "arc-CalendarDateSelect", value: value, name: name }, options.map(function (_a) {
1334
+ var text = _a.text, value = _a.value;
1335
+ return (React__default["default"].createElement("option", { className: "arc-CalendarDateSelect-option", key: "arc-calendar-year-select-".concat(value), value: value }, text));
1336
+ })),
1337
+ React__default["default"].createElement("div", { "aria-hidden": true, className: "arc-CalendarDateSelect-label" },
1338
+ React__default["default"].createElement(Heading.Heading, { size: "s" }, displayValue || value),
1339
+ React__default["default"].createElement("div", { className: "arc-CalendarDateSelect-icon" },
1340
+ React__default["default"].createElement(Icon.Icon, { size: 24, icon: BtIconChevronDownMid })))));
1341
+ };
1342
+
1343
+ var DAY_NAMES = [
1344
+ {
1345
+ value: WeekDays.MONDAY,
1346
+ displayValue: WeekDaysAbbr.MON
1347
+ },
1348
+ {
1349
+ value: WeekDays.TUESDAY,
1350
+ displayValue: WeekDaysAbbr.TUE
1351
+ },
1352
+ {
1353
+ value: WeekDays.WEDNESDAY,
1354
+ displayValue: WeekDaysAbbr.WED
1355
+ },
1356
+ {
1357
+ value: WeekDays.THURSDAY,
1358
+ displayValue: WeekDaysAbbr.THUR
1359
+ },
1360
+ {
1361
+ value: WeekDays.FRIDAY,
1362
+ displayValue: WeekDaysAbbr.FRI
1363
+ },
1364
+ {
1365
+ value: WeekDays.SATURDAY,
1366
+ displayValue: WeekDaysAbbr.SAT
1367
+ },
1368
+ {
1369
+ value: WeekDays.SUNDAY,
1370
+ displayValue: WeekDaysAbbr.SUN
1371
+ },
1372
+ ];
1373
+
1374
+ var CalendarDayGrid = function (_a) {
1375
+ var displayRange = _a.displayRange;
1376
+ var hasAutoFocused = React.useRef(false);
1377
+ var dayNumberGridRef = React.useRef(null);
1378
+ var context = React.useContext(ArcCalendarContext);
1379
+ var autoFocusRef = React.useCallback(function (el) {
1380
+ if (el &&
1381
+ el.tabIndex === 0 &&
1382
+ (context === null || context === void 0 ? void 0 : context.autoFocusOnMount) &&
1383
+ !hasAutoFocused.current) {
1384
+ el.focus();
1385
+ }
1386
+ if (document.activeElement === el) {
1387
+ hasAutoFocused.current = true;
1388
+ }
1389
+ }, [context === null || context === void 0 ? void 0 : context.autoFocusOnMount]);
1390
+ if (!context) {
1391
+ return null;
1392
+ }
1393
+ var onKeyboardNavigate = context.onKeyboardNavigate, onDayNumberClick = context.onDayNumberClick, onDayGridLeave = context.onDayGridLeave;
1394
+ var isFocusWithinDayGrid = Boolean(dayNumberGridRef &&
1395
+ dayNumberGridRef.current &&
1396
+ dayNumberGridRef.current.contains(document.activeElement));
1397
+ var handleKeyDown = function (e) {
1398
+ var key = e.key;
1399
+ var newDate = e.target.getAttribute("data-date");
1400
+ if (key === KeyNames.Tab) {
1401
+ return;
1402
+ }
1403
+ if (Object.values(KeyNames).includes(key)) {
1404
+ e.preventDefault();
1405
+ }
1406
+ if ([KeyNames.Space, KeyNames.Enter].includes(key) && newDate) {
1407
+ onDayNumberClick(dateWithoutTime(new Date(parseInt(newDate))))();
1408
+ }
1409
+ else {
1410
+ onKeyboardNavigate(e.key, e.shiftKey);
1411
+ }
1412
+ };
1413
+ var getWeeksInMonth = function (month) {
1414
+ return eachWeekOfInterval({ start: startOfMonth(month), end: endOfMonth(month) }, { weekStartsOn: 1 }).map(function (week) { return eachDayOfInterval({ start: week, end: addDays(week, 6) }); });
1415
+ };
1416
+ return (React__default["default"].createElement("div", { ref: dayNumberGridRef, onMouseLeave: onDayGridLeave, className: index$2.classNames("arc-CalendarDayGrid", {
1417
+ "arc-CalendarDayGrid--dual": displayRange.length > 1
1418
+ }) }, displayRange.map(function (month) { return (React__default["default"].createElement("div", { key: month.getTime(), className: "arc-CalendarDayGrid-month" },
1419
+ React__default["default"].createElement("table", { className: "arc-CalendarDayGrid-table" },
1420
+ React__default["default"].createElement("thead", null,
1421
+ React__default["default"].createElement("tr", null, DAY_NAMES.map(function (dayName) { return (React__default["default"].createElement("th", { key: "".concat(month.getTime(), "-").concat(dayName.displayValue) },
1422
+ React__default["default"].createElement(Text.Text, { key: dayName.displayValue, size: "s" },
1423
+ React__default["default"].createElement("b", { "aria-hidden": true }, dayName.displayValue)),
1424
+ React__default["default"].createElement(VisuallyHidden.VisuallyHidden, null, dayName.value))); }))),
1425
+ React__default["default"].createElement("tbody", { onKeyDown: handleKeyDown }, getWeeksInMonth(month).map(function (week, i) { return (React__default["default"].createElement("tr", { key: "".concat(month.getTime(), "-week-").concat(i) }, week.map(function (day) { return (React__default["default"].createElement(CalendarDayNumber, { ref: autoFocusRef, shouldRender: isSameMonth(month, day), key: day.getTime(), date: day, isFocusWithinDayGrid: isFocusWithinDayGrid })); }))); }))))); })));
1426
+ };
1427
+
1428
+ const BtIconChevronLeftMid = (props) =>
1429
+ /*#__PURE__*/ React__default["default"].createElement(
1430
+ "svg",
1431
+ Object.assign(
1432
+ {
1433
+ viewBox: "0 0 16 16",
1434
+ fill: "none",
1435
+ xmlns: "http://www.w3.org/2000/svg",
1436
+ },
1437
+ props,
1438
+ ),
1439
+ /*#__PURE__*/ React__default["default"].createElement("path", {
1440
+ fillRule: "evenodd",
1441
+ clipRule: "evenodd",
1442
+ d: "M7.62107 8.00023L10.4697 10.8522C10.5957 10.9785 10.6665 11.1495 10.6665 11.3279C10.6665 11.5063 10.5957 11.6773 10.4697 11.8036C10.4074 11.866 10.3335 11.9155 10.252 11.9493C10.1706 11.983 10.0833 12.0004 9.99507 12.0004C9.9069 12.0004 9.81959 11.983 9.73814 11.9493C9.65669 11.9155 9.5827 11.866 9.52041 11.8036L6.19641 8.47556C6.07061 8.34935 5.99998 8.17842 5.99998 8.00023C5.99998 7.82203 6.07061 7.6511 6.19641 7.52489L9.52041 4.19689C9.5827 4.13449 9.65669 4.08498 9.73814 4.0512C9.81959 4.01741 9.9069 4.00003 9.99507 4.00003C10.0832 4.00003 10.1706 4.01741 10.252 4.0512C10.3335 4.08498 10.4074 4.13449 10.4697 4.19689C10.5957 4.32313 10.6665 4.4942 10.6665 4.67256C10.6665 4.85092 10.5957 5.02199 10.4697 5.14823L7.62107 8.00023Z",
1443
+ fill: "currentColor",
1444
+ }),
1445
+ );
1446
+
1447
+ var CalendarNavButton = function (_a) {
1448
+ var isDisabled = _a.isDisabled, onClick = _a.onClick, direction = _a.direction, ariaLabel = _a.ariaLabel;
1449
+ var icons = {
1450
+ previous: BtIconChevronLeftMid,
1451
+ next: BtIconChevronRightMid_esm.BtIconChevronRightMid
1452
+ };
1453
+ return (React__default["default"].createElement("button", { "aria-label": ariaLabel, disabled: isDisabled, onClick: onClick, type: "button", className: index$2.classNames("arc-CalendarNavButton", {
1454
+ "arc-CalendarNavButton--previous": direction === "previous",
1455
+ "arc-CalendarNavButton--next": direction === "next"
1456
+ }) },
1457
+ React__default["default"].createElement(Icon.Icon, { size: 32, icon: icons[direction] })));
1458
+ };
1459
+
1460
+ var CalendarDoubleMonthView = function (_a) {
1461
+ var isPreviousMonthDisabled = _a.isPreviousMonthDisabled, isNextMonthDisabled = _a.isNextMonthDisabled, onNextMonthClick = _a.onNextMonthClick, onPreviousMonthClick = _a.onPreviousMonthClick;
1462
+ var context = React.useContext(ArcCalendarContext);
1463
+ if (!context) {
1464
+ return null;
1465
+ }
1466
+ var displayDate = context.displayDate;
1467
+ var displayRange = getDoubleMonthDisplayRange(displayDate);
1468
+ var getAriaLabel = function (date) {
1469
+ var months = getDoubleMonthDisplayRange(date);
1470
+ return "show ".concat(index.format(months[0], "MMMM yyyy"), " to ").concat(index.format(months[1], "MMMM yyyy"));
1471
+ };
1472
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
1473
+ React__default["default"].createElement(VisuallyHidden.VisuallyHidden, null,
1474
+ React__default["default"].createElement(Heading.Heading, { level: "2" },
1475
+ React__default["default"].createElement("span", { "aria-live": "polite" },
1476
+ "showing ",
1477
+ index.format(displayRange[0], "MMMM yyyy"),
1478
+ " to",
1479
+ " ",
1480
+ index.format(displayRange[1], "MMMM yyyy")))),
1481
+ React__default["default"].createElement("div", { className: "arc-CalendarDoubleMonthView-header" },
1482
+ React__default["default"].createElement("div", { className: "arc-CalendarDoubleMonthView-headerMonth" },
1483
+ React__default["default"].createElement("div", { className: "arc-CalendarDoubleMonthView-headerMonthItem" },
1484
+ React__default["default"].createElement(CalendarNavButton, { ariaLabel: getAriaLabel(subMonths(displayDate, 2)), direction: "previous", isDisabled: isPreviousMonthDisabled, onClick: onPreviousMonthClick })),
1485
+ React__default["default"].createElement("div", { "aria-hidden": true, className: "arc-CalendarDoubleMonthView-headerMonthItem" },
1486
+ React__default["default"].createElement(Heading.Heading, { level: "2", size: "s" }, index.format(displayRange[0], "MMM yyyy")))),
1487
+ React__default["default"].createElement("div", { className: "arc-CalendarDoubleMonthView-headerMonth" },
1488
+ React__default["default"].createElement("div", { "aria-hidden": true, className: "arc-CalendarDoubleMonthView-headerMonthItem" },
1489
+ React__default["default"].createElement(Heading.Heading, { level: "2", size: "s" }, index.format(displayRange[1], "MMM yyyy"))),
1490
+ React__default["default"].createElement("div", { className: "arc-CalendarDoubleMonthView-headerMonthItem" },
1491
+ React__default["default"].createElement(CalendarNavButton, { ariaLabel: getAriaLabel(addMonths(displayDate, 2)), direction: "next", isDisabled: isNextMonthDisabled, onClick: onNextMonthClick })))),
1492
+ React__default["default"].createElement(CalendarDayGrid, { displayRange: displayRange })));
1493
+ };
1494
+
1495
+ var CalendarMonthView = function (_a) {
1496
+ var isPreviousMonthDisabled = _a.isPreviousMonthDisabled, isNextMonthDisabled = _a.isNextMonthDisabled, onNextMonthClick = _a.onNextMonthClick, onPreviousMonthClick = _a.onPreviousMonthClick;
1497
+ var context = React.useContext(ArcCalendarContext);
1498
+ if (!context) {
1499
+ return null;
1500
+ }
1501
+ var displayDate = context.displayDate;
1502
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
1503
+ React__default["default"].createElement("div", { className: "arc-CalendarMonthView-header" },
1504
+ React__default["default"].createElement(CalendarNavButton, { ariaLabel: "Show ".concat(index.format(subMonths(displayDate, 1), "MMMM yyyy")), direction: "previous", isDisabled: isPreviousMonthDisabled, onClick: onPreviousMonthClick }),
1505
+ React__default["default"].createElement("div", { className: "arc-CalendarMonthView-headingContainer" },
1506
+ React__default["default"].createElement(VisuallyHidden.VisuallyHidden, null,
1507
+ React__default["default"].createElement(Heading.Heading, { level: "2" },
1508
+ React__default["default"].createElement("span", { "aria-live": "polite" },
1509
+ "showing ",
1510
+ index.format(displayDate, "MMMM yyyy")))),
1511
+ React__default["default"].createElement("div", { "aria-hidden": true },
1512
+ React__default["default"].createElement(Heading.Heading, { size: "s", level: "2" }, index.format(displayDate, "MMM yyyy")))),
1513
+ React__default["default"].createElement(CalendarNavButton, { direction: "next", ariaLabel: "Show ".concat(index.format(addMonths(displayDate, 1), "MMMM yyyy")), isDisabled: isNextMonthDisabled, onClick: onNextMonthClick })),
1514
+ React__default["default"].createElement(CalendarDayGrid, { displayRange: [displayDate] })));
1515
+ };
1516
+
1517
+ var CalendarMonthYearView = function (_a) {
1518
+ var isPreviousMonthDisabled = _a.isPreviousMonthDisabled, isNextMonthDisabled = _a.isNextMonthDisabled, onMonthChange = _a.onMonthChange, onYearChange = _a.onYearChange, onNextMonthClick = _a.onNextMonthClick, onPreviousMonthClick = _a.onPreviousMonthClick;
1519
+ var context = React.useContext(ArcCalendarContext);
1520
+ if (!context) {
1521
+ return null;
1522
+ }
1523
+ var displayDate = context.displayDate, minDate = context.minDate, maxDate = context.maxDate;
1524
+ var monthOptions = Array.from({ length: 12 })
1525
+ .map(function (_, i) { return ({
1526
+ value: i,
1527
+ text: index.format(new Date(2023, i, 1), "MMMM")
1528
+ }); })
1529
+ .filter(function (_a) {
1530
+ var value = _a.value;
1531
+ var currentDateYear = getYear(displayDate);
1532
+ var date = dateWithoutTime(new Date(currentDateYear, value, 1));
1533
+ return ((!minDate || !isMonthBeforeMinDate(date, minDate)) &&
1534
+ (!maxDate || !isMonthAfterMaxDate(date, maxDate)));
1535
+ });
1536
+ var yearOptions = Array.from({ length: 21 }, function (_, i) {
1537
+ var value = getYear(displayDate) - 10 + i;
1538
+ return {
1539
+ value: value,
1540
+ text: value
1541
+ };
1542
+ }).filter(function (_a) {
1543
+ var value = _a.value;
1544
+ return ((minDate ? value >= getYear(minDate) : true) &&
1545
+ (maxDate ? value <= getYear(maxDate) : true));
1546
+ });
1547
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
1548
+ React__default["default"].createElement("div", { className: "arc-CalendarMonthYearView-header" },
1549
+ React__default["default"].createElement(VisuallyHidden.VisuallyHidden, null,
1550
+ React__default["default"].createElement(Heading.Heading, { level: "2" },
1551
+ React__default["default"].createElement("span", { "aria-live": "polite" },
1552
+ "showing ",
1553
+ index.format(displayDate, "MMMM yyyy")))),
1554
+ React__default["default"].createElement("div", { className: "arc-CalendarMonthYearView-selectWrapper" },
1555
+ React__default["default"].createElement("div", null,
1556
+ React__default["default"].createElement(CalendarDateSelect, { options: monthOptions, ariaLabel: "month", onChange: function (e) { return onMonthChange(parseInt(e.target.value)); }, name: "arc-CalendarMonthYearView-monthSelect", displayValue: index.format(displayDate, "MMM"), value: "".concat(getMonth(displayDate)) })),
1557
+ React__default["default"].createElement("div", { className: "arc-CalendarMonthYearView-yearSelectContainer" },
1558
+ React__default["default"].createElement(CalendarDateSelect, { options: yearOptions, ariaLabel: "year", onChange: function (e) { return onYearChange(parseInt(e.target.value)); }, name: "arc-CalendarMonthYearView-yearSelect", value: getYear(displayDate) }))),
1559
+ React__default["default"].createElement("div", { className: "arc-CalendarMonthYearView-navButtonContainer" },
1560
+ React__default["default"].createElement(CalendarNavButton, { direction: "previous", ariaLabel: "Show ".concat(index.format(subMonths(displayDate, 1), "MMMM yyyy")), isDisabled: isPreviousMonthDisabled, onClick: onPreviousMonthClick }),
1561
+ React__default["default"].createElement(CalendarNavButton, { direction: "next", ariaLabel: "Show ".concat(index.format(addMonths(displayDate, 1), "MMMM yyyy")), isDisabled: isNextMonthDisabled, onClick: onNextMonthClick }))),
1562
+ React__default["default"].createElement(CalendarDayGrid, { displayRange: [displayDate] })));
1563
+ };
1564
+
1565
+ var showPreviousMonthHandler = function (payload, state) {
1566
+ return index$1.__assign(index$1.__assign({}, state), { focusDate: getFocusDate({
1567
+ date: subMonths(state.focusDate, 1),
1568
+ minDate: payload.minDate
1569
+ }), displayDate: subMonths(state.displayDate, 1) });
1570
+ };
1571
+
1572
+ var showNextMonthHandler = function (payload, state) {
1573
+ return index$1.__assign(index$1.__assign({}, state), { focusDate: getFocusDate({
1574
+ date: addMonths(state.focusDate, 1),
1575
+ maxDate: payload.maxDate
1576
+ }), displayDate: addMonths(state.displayDate, 1) });
1577
+ };
1578
+
1579
+ var showPreviousDoubleMonthHandler = function (payload, state) {
1580
+ return index$1.__assign(index$1.__assign({}, state), { focusDate: getFocusDate({
1581
+ date: subMonths(state.focusDate, 2),
1582
+ minDate: payload.minDate
1583
+ }), displayDate: subMonths(state.displayDate, 2) });
1584
+ };
1585
+
1586
+ var showNextDoubleMonthHandler = function (payload, state) {
1587
+ return index$1.__assign(index$1.__assign({}, state), { focusDate: getFocusDate({
1588
+ date: addMonths(state.focusDate, 2),
1589
+ maxDate: payload.maxDate
1590
+ }), displayDate: addMonths(state.displayDate, 2) });
1591
+ };
1592
+
1593
+ var rangeSelectHandler = function (payload, state) {
1594
+ return index$1.__assign(index$1.__assign({}, state), { focusDate: payload.date, highlightedRange: payload.range });
1595
+ };
1596
+
1597
+ var highlightRangeHandler = function (payload, state) {
1598
+ return index$1.__assign(index$1.__assign({}, state), { highlightedRange: getHighlightRange({
1599
+ date: payload.date,
1600
+ range: payload.range,
1601
+ minDate: payload.minDate,
1602
+ maxDate: payload.maxDate
1603
+ }) });
1604
+ };
1605
+
1606
+ var dayNumberSelectHandler = function (payload, state) {
1607
+ return index$1.__assign(index$1.__assign({}, state), { focusDate: payload });
1608
+ };
1609
+
1610
+ var dayGridLeaveHandler = function (payload, state) {
1611
+ if (payload.selectionType === "range" &&
1612
+ payload.range.filter(function (date) { return Boolean(date); }).length === 1) {
1613
+ return index$1.__assign(index$1.__assign({}, state), { highlightedRange: [] });
1614
+ }
1615
+ return index$1.__assign({}, state);
1616
+ };
1617
+
1618
+ var dropDownChangeYearHandler = function (payload, state) {
1619
+ var year = payload.year, minDate = payload.minDate, maxDate = payload.maxDate;
1620
+ var yearsToAdd = year - getYear(state.displayDate);
1621
+ var newDisplayDate = addYears(state.displayDate, yearsToAdd);
1622
+ var focusDate = getFocusDate({
1623
+ date: addYears(state.focusDate, yearsToAdd),
1624
+ minDate: payload.minDate,
1625
+ maxDate: payload.maxDate
1626
+ });
1627
+ if (minDate && isBefore(newDisplayDate, minDate)) {
1628
+ return index$1.__assign(index$1.__assign({}, state), { focusDate: focusDate, displayDate: minDate });
1629
+ }
1630
+ if (maxDate && isAfter(newDisplayDate, maxDate)) {
1631
+ return index$1.__assign(index$1.__assign({}, state), { focusDate: focusDate, displayDate: maxDate });
1632
+ }
1633
+ return index$1.__assign(index$1.__assign({}, state), { focusDate: focusDate, displayDate: newDisplayDate });
1634
+ };
1635
+
1636
+ var dropDownChangeMonthHandler = function (payload, state) {
1637
+ return index$1.__assign(index$1.__assign({}, state), { focusDate: getFocusDate({
1638
+ date: setMonth(state.focusDate, payload.month),
1639
+ minDate: payload.minDate,
1640
+ maxDate: payload.maxDate
1641
+ }), displayDate: setMonth(state.displayDate, payload.month) });
1642
+ };
1643
+
1644
+ var calendarKeydownHandler = function (payload, state) {
1645
+ var displayDate = state.displayDate, focusDate = state.focusDate, highlightedRange = state.highlightedRange;
1646
+ var minDate = payload.minDate, maxDate = payload.maxDate, calendarType = payload.calendarType, key = payload.key, shiftKey = payload.shiftKey, range = payload.range, selectionType = payload.selectionType;
1647
+ var isNavigatingByYear = shiftKey && [KeyNames.PageUp, KeyNames.PageDown].includes(key);
1648
+ var keyDownDate = getKeyDownDate({
1649
+ focusDate: focusDate,
1650
+ key: key,
1651
+ shiftKey: shiftKey
1652
+ });
1653
+ var newFocusDate = getFocusDate({
1654
+ minDate: minDate,
1655
+ maxDate: maxDate,
1656
+ date: keyDownDate
1657
+ });
1658
+ var newHighlightedRange = selectionType === "range"
1659
+ ? getHighlightRange({
1660
+ date: keyDownDate,
1661
+ range: range,
1662
+ minDate: minDate,
1663
+ maxDate: maxDate
1664
+ })
1665
+ : highlightedRange;
1666
+ var focusDateIsMinOrMax = (maxDate && isEqual(newFocusDate, maxDate)) ||
1667
+ (minDate && isEqual(newFocusDate, minDate));
1668
+ var _a = getDoubleMonthDisplayRange(displayDate), doubleMonthFirstMonth = _a[0], doubleMonthSecondMonth = _a[1];
1669
+ var doubleMonthVisibleRange = {
1670
+ start: startOfMonth(doubleMonthFirstMonth),
1671
+ end: endOfMonth(doubleMonthSecondMonth)
1672
+ };
1673
+ var singleMonthVisibleRange = {
1674
+ start: startOfMonth(displayDate),
1675
+ end: endOfMonth(displayDate)
1676
+ };
1677
+ var isNewFocusDateVisible = isWithinInterval(newFocusDate, calendarType === "double"
1678
+ ? doubleMonthVisibleRange
1679
+ : singleMonthVisibleRange);
1680
+ var commonState = index$1.__assign(index$1.__assign({}, state), { focusDate: newFocusDate, highlightedRange: newHighlightedRange });
1681
+ if (!isNewFocusDateVisible &&
1682
+ !focusDateIsMinOrMax &&
1683
+ isNavigatingByYear &&
1684
+ calendarType === "double") {
1685
+ return index$1.__assign(index$1.__assign({}, commonState), { displayDate: setYear(displayDate, getYear(newFocusDate)) });
1686
+ }
1687
+ if (!isNewFocusDateVisible) {
1688
+ return index$1.__assign(index$1.__assign({}, commonState), { displayDate: startOfMonth(newFocusDate) });
1689
+ }
1690
+ return commonState;
1691
+ };
1692
+
1693
+ var defaultHandler = function (state) {
1694
+ return index$1.__assign({}, state);
1695
+ };
1696
+
1697
+ var reducer = function (state, action) {
1698
+ switch (action.type) {
1699
+ case "DAY_NUMBER_SELECT":
1700
+ return dayNumberSelectHandler(action.payload, state);
1701
+ case "RANGE_SELECT":
1702
+ return rangeSelectHandler(action.payload, state);
1703
+ case "HIGHLIGHT_RANGE":
1704
+ return highlightRangeHandler(action.payload, state);
1705
+ case "DAY_GRID_LEAVE":
1706
+ return dayGridLeaveHandler(action.payload, state);
1707
+ case "SHOW_PREVIOUS_MONTH":
1708
+ return showPreviousMonthHandler(action.payload, state);
1709
+ case "SHOW_NEXT_MONTH":
1710
+ return showNextMonthHandler(action.payload, state);
1711
+ case "SHOW_PREVIOUS_DOUBLE_MONTH":
1712
+ return showPreviousDoubleMonthHandler(action.payload, state);
1713
+ case "SHOW_NEXT_DOUBLE_MONTH":
1714
+ return showNextDoubleMonthHandler(action.payload, state);
1715
+ case "DROPDOWN_CHANGE_YEAR":
1716
+ return dropDownChangeYearHandler(action.payload, state);
1717
+ case "DROPDOWN_CHANGE_MONTH":
1718
+ return dropDownChangeMonthHandler(action.payload, state);
1719
+ case "CALENDAR_KEYDOWN":
1720
+ return calendarKeydownHandler(action.payload, state);
1721
+ default:
1722
+ return defaultHandler(state);
1723
+ }
1724
+ };
1725
+
1726
+ var CalendarFooter = function (_a) {
1727
+ var onCancelClick = _a.onCancelClick;
1728
+ return (React__default["default"].createElement("div", { className: "arc-CalendarFooter" },
1729
+ React__default["default"].createElement("button", { type: "button", className: "arc-CalendarFooter-button", onClick: onCancelClick }, "Cancel")));
1730
+ };
1731
+
1732
+ var CalendarWrapper = function (_a) {
1733
+ var children = _a.children;
1734
+ return (React__default["default"].createElement("div", { className: "arc-CalendarWrapper" },
1735
+ React__default["default"].createElement(Surface.Surface, { background: "light-white" },
1736
+ React__default["default"].createElement("div", { className: "arc-CalendarWrapper-inner" }, children))));
1737
+ };
1738
+
1739
+ /** Use `Calendar` to clearly present available dates and allowing users to choose a way to enter information. */
1740
+ var Calendar = function (_a) {
1741
+ var _b = _a.type, type = _b === void 0 ? "month" : _b, _c = _a.selectionType, selectionType = _c === void 0 ? "single" : _c, _d = _a.autoFocusOnMount, autoFocusOnMount = _d === void 0 ? false : _d, _e = _a.selectedRange, rawSelectedRange = _e === void 0 ? [] : _e, _f = _a.selectedDate, rawSelectedDate = _f === void 0 ? new Date() : _f, rawDisabledDates = _a.disabledDates, rawMinDate = _a.minDate, rawMaxDate = _a.maxDate, onCancelClick = _a.onCancelClick, onDateSelect = _a.onDateSelect, onRangeSelect = _a.onRangeSelect;
1742
+ var todayDate = dateWithoutTime(new Date());
1743
+ var selectedDate = dateWithoutTime(rawSelectedDate);
1744
+ var selectedRange = rawSelectedRange
1745
+ .filter(function (rangeDate) { return Boolean(rangeDate); })
1746
+ .map(function (rangeDate) { return dateWithoutTime(rangeDate); });
1747
+ var _g = React.useState(false), isClientLoaded = _g[0], setIsClientLoaded = _g[1];
1748
+ var _h = React.useReducer(reducer, {
1749
+ displayDate: selectionType === "single"
1750
+ ? startOfMonth(selectedDate)
1751
+ : startOfMonth(selectedRange[0] || todayDate),
1752
+ focusDate: selectionType === "single"
1753
+ ? selectedDate
1754
+ : selectedRange[0] || todayDate,
1755
+ highlightedRange: selectedRange
1756
+ }), _j = _h[0], displayDate = _j.displayDate, focusDate = _j.focusDate, highlightedRange = _j.highlightedRange, dispatch = _h[1];
1757
+ var isMinWidthArcBreakpointM = useMediaQuery.useMediaQuery("(min-width: ".concat(index_es.SemSizeBreakpointsM, ")"));
1758
+ React.useEffect(function () {
1759
+ setIsClientLoaded(true);
1760
+ }, []);
1761
+ var disabledDates = rawDisabledDates === null || rawDisabledDates === void 0 ? void 0 : rawDisabledDates.map(function (date) { return dateWithoutTime(date); });
1762
+ var minDate = rawMinDate && dateWithoutTime(rawMinDate);
1763
+ var maxDate = rawMaxDate && dateWithoutTime(rawMaxDate);
1764
+ var calendarType = getCalendarType(type, isMinWidthArcBreakpointM);
1765
+ var doubleMonthDisplayRange = getDoubleMonthDisplayRange(displayDate);
1766
+ var isPreviousMonthDisabled = minDate
1767
+ ? isMonthBeforeMinDate(subMonths(displayDate, 1), minDate)
1768
+ : false;
1769
+ var isNextMonthDisabled = maxDate
1770
+ ? isMonthAfterMaxDate(addMonths(displayDate, 1), maxDate)
1771
+ : false;
1772
+ var isDoubleMonthPreviousDisabled = minDate
1773
+ ? isMonthBeforeMinDate(subMonths(doubleMonthDisplayRange[0], 1), minDate)
1774
+ : false;
1775
+ var isDoubleMonthNextDisabled = maxDate
1776
+ ? isMonthAfterMaxDate(addMonths(doubleMonthDisplayRange[1], 1), maxDate)
1777
+ : false;
1778
+ var setDateRange = function (value) {
1779
+ var _a = processSelectedRange({
1780
+ value: value,
1781
+ range: selectedRange,
1782
+ disabledDates: disabledDates
1783
+ }), rangeOnChangeValue = _a.rangeOnChangeValue, rangeValue = _a.rangeValue;
1784
+ dispatch({
1785
+ type: "RANGE_SELECT",
1786
+ payload: {
1787
+ date: value,
1788
+ range: rangeValue
1789
+ }
1790
+ });
1791
+ onRangeSelect && onRangeSelect(rangeOnChangeValue);
1792
+ };
1793
+ var setNewDate = function (value) {
1794
+ dispatch({
1795
+ type: "DAY_NUMBER_SELECT",
1796
+ payload: value
1797
+ });
1798
+ onDateSelect && onDateSelect(value);
1799
+ };
1800
+ var onDayNumberHover = function (date) { return function () {
1801
+ selectionType === "range" &&
1802
+ dispatch({
1803
+ type: "HIGHLIGHT_RANGE",
1804
+ payload: {
1805
+ date: date,
1806
+ minDate: minDate,
1807
+ maxDate: maxDate,
1808
+ range: selectedRange
1809
+ }
1810
+ });
1811
+ }; };
1812
+ var handleDateSelection = function (date) {
1813
+ var isDisabled = isDisabledDate(date, disabledDates, minDate, maxDate);
1814
+ if (isDisabled)
1815
+ return;
1816
+ selectionType === "single" ? setNewDate(date) : setDateRange(date);
1817
+ };
1818
+ var onDayNumberClick = function (date) { return function () {
1819
+ handleDateSelection(date);
1820
+ }; };
1821
+ var onCancelButtonClick = function () {
1822
+ onCancelClick && onCancelClick();
1823
+ };
1824
+ var onDayGridLeave = function () {
1825
+ dispatch({
1826
+ type: "DAY_GRID_LEAVE",
1827
+ payload: {
1828
+ selectionType: selectionType,
1829
+ range: selectedRange
1830
+ }
1831
+ });
1832
+ };
1833
+ var onPreviousMonthClick = function () {
1834
+ dispatch({
1835
+ type: "SHOW_PREVIOUS_MONTH",
1836
+ payload: {
1837
+ minDate: minDate
1838
+ }
1839
+ });
1840
+ };
1841
+ var onNextMonthClick = function () {
1842
+ dispatch({
1843
+ type: "SHOW_NEXT_MONTH",
1844
+ payload: {
1845
+ maxDate: maxDate
1846
+ }
1847
+ });
1848
+ };
1849
+ var onDoubleViewPreviousClick = function () {
1850
+ dispatch({
1851
+ type: "SHOW_PREVIOUS_DOUBLE_MONTH",
1852
+ payload: {
1853
+ minDate: minDate
1854
+ }
1855
+ });
1856
+ };
1857
+ var onDoubleViewNextClick = function () {
1858
+ dispatch({
1859
+ type: "SHOW_NEXT_DOUBLE_MONTH",
1860
+ payload: {
1861
+ maxDate: maxDate
1862
+ }
1863
+ });
1864
+ };
1865
+ var onYearChange = function (year) {
1866
+ dispatch({
1867
+ type: "DROPDOWN_CHANGE_YEAR",
1868
+ payload: {
1869
+ year: year,
1870
+ minDate: minDate,
1871
+ maxDate: maxDate
1872
+ }
1873
+ });
1874
+ };
1875
+ var onMonthChange = function (month) {
1876
+ dispatch({
1877
+ type: "DROPDOWN_CHANGE_MONTH",
1878
+ payload: {
1879
+ month: month,
1880
+ minDate: minDate,
1881
+ maxDate: maxDate
1882
+ }
1883
+ });
1884
+ };
1885
+ var onKeyboardNavigate = function (key, shiftKey) {
1886
+ dispatch({
1887
+ type: "CALENDAR_KEYDOWN",
1888
+ payload: {
1889
+ minDate: minDate,
1890
+ maxDate: maxDate,
1891
+ selectionType: selectionType,
1892
+ calendarType: calendarType,
1893
+ key: key,
1894
+ shiftKey: shiftKey,
1895
+ range: selectedRange
1896
+ }
1897
+ });
1898
+ };
1899
+ return (React__default["default"].createElement(ArcCalendarContext.Provider, { value: {
1900
+ minDate: minDate,
1901
+ maxDate: maxDate,
1902
+ focusDate: focusDate,
1903
+ todayDate: todayDate,
1904
+ displayDate: displayDate,
1905
+ onDayGridLeave: onDayGridLeave,
1906
+ disabledDates: disabledDates,
1907
+ selectedDate: selectedDate,
1908
+ selectionType: selectionType,
1909
+ selectedRange: selectedRange,
1910
+ highlightedRange: highlightedRange,
1911
+ onDayNumberClick: onDayNumberClick,
1912
+ onDayNumberHover: onDayNumberHover,
1913
+ onKeyboardNavigate: onKeyboardNavigate,
1914
+ autoFocusOnMount: autoFocusOnMount
1915
+ } },
1916
+ React__default["default"].createElement("div", { style: { display: isClientLoaded ? "block" : "none" } },
1917
+ React__default["default"].createElement(CalendarWrapper, null,
1918
+ calendarType === "year" && (React__default["default"].createElement(CalendarMonthYearView, { isPreviousMonthDisabled: isPreviousMonthDisabled, isNextMonthDisabled: isNextMonthDisabled, onPreviousMonthClick: onPreviousMonthClick, onNextMonthClick: onNextMonthClick, onMonthChange: onMonthChange, onYearChange: onYearChange })),
1919
+ calendarType === "month" && (React__default["default"].createElement(CalendarMonthView, { isPreviousMonthDisabled: isPreviousMonthDisabled, isNextMonthDisabled: isNextMonthDisabled, onPreviousMonthClick: onPreviousMonthClick, onNextMonthClick: onNextMonthClick })),
1920
+ calendarType === "double" && (React__default["default"].createElement(CalendarDoubleMonthView, { isPreviousMonthDisabled: isDoubleMonthPreviousDisabled, isNextMonthDisabled: isDoubleMonthNextDisabled, onPreviousMonthClick: onDoubleViewPreviousClick, onNextMonthClick: onDoubleViewNextClick })),
1921
+ onCancelClick && (React__default["default"].createElement(CalendarFooter, { onCancelClick: onCancelButtonClick }))))));
1922
+ };
1923
+
1924
+ exports.Calendar = Calendar;
1925
+ exports.compareAsc = compareAsc;
1926
+ exports.isAfter = isAfter;
1927
+ exports.isBefore = isBefore;