react-day-picker 9.6.7 → 9.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (623) hide show
  1. package/README.md +9 -1
  2. package/dist/cjs/DayPicker.d.ts +4 -2
  3. package/dist/cjs/DayPicker.js +59 -8
  4. package/dist/cjs/DayPicker.js.map +1 -1
  5. package/dist/cjs/UI.d.ts +11 -23
  6. package/dist/cjs/UI.js +6 -8
  7. package/dist/cjs/UI.js.map +1 -1
  8. package/dist/cjs/classes/CalendarDay.d.ts +17 -14
  9. package/dist/cjs/classes/CalendarDay.js +9 -6
  10. package/dist/cjs/classes/CalendarDay.js.map +1 -1
  11. package/dist/cjs/classes/CalendarMonth.d.ts +8 -3
  12. package/dist/cjs/classes/CalendarMonth.js +6 -1
  13. package/dist/cjs/classes/CalendarMonth.js.map +1 -1
  14. package/dist/cjs/classes/CalendarWeek.d.ts +6 -2
  15. package/dist/cjs/classes/CalendarWeek.js +5 -1
  16. package/dist/cjs/classes/CalendarWeek.js.map +1 -1
  17. package/dist/cjs/classes/DateLib.d.ts +53 -52
  18. package/dist/cjs/classes/DateLib.js +26 -22
  19. package/dist/cjs/classes/DateLib.js.map +1 -1
  20. package/dist/cjs/components/Day.d.ts +4 -4
  21. package/dist/cjs/components/Day.js +4 -4
  22. package/dist/cjs/components/DayButton.d.ts +2 -2
  23. package/dist/cjs/components/DayButton.js +1 -1
  24. package/dist/cjs/components/Dropdown.d.ts +4 -6
  25. package/dist/cjs/components/Dropdown.js +1 -1
  26. package/dist/cjs/components/Dropdown.js.map +1 -1
  27. package/dist/cjs/components/DropdownNav.d.ts +1 -1
  28. package/dist/cjs/components/DropdownNav.js +1 -1
  29. package/dist/cjs/components/Footer.d.ts +1 -1
  30. package/dist/cjs/components/Footer.js +1 -1
  31. package/dist/cjs/components/Month.d.ts +3 -3
  32. package/dist/cjs/components/Month.js +1 -1
  33. package/dist/cjs/components/MonthCaption.d.ts +3 -3
  34. package/dist/cjs/components/MonthCaption.js +1 -1
  35. package/dist/cjs/components/MonthGrid.d.ts +1 -1
  36. package/dist/cjs/components/MonthGrid.js +1 -1
  37. package/dist/cjs/components/Months.d.ts +1 -1
  38. package/dist/cjs/components/Months.js +1 -1
  39. package/dist/cjs/components/MonthsDropdown.d.ts +1 -1
  40. package/dist/cjs/components/MonthsDropdown.js +1 -1
  41. package/dist/cjs/components/Nav.d.ts +5 -1
  42. package/dist/cjs/components/Nav.js +1 -1
  43. package/dist/cjs/components/Nav.js.map +1 -1
  44. package/dist/cjs/components/NextMonthButton.d.ts +1 -1
  45. package/dist/cjs/components/NextMonthButton.js +1 -1
  46. package/dist/cjs/components/Option.d.ts +1 -1
  47. package/dist/cjs/components/Option.js +1 -1
  48. package/dist/cjs/components/PreviousMonthButton.d.ts +1 -1
  49. package/dist/cjs/components/PreviousMonthButton.js +1 -1
  50. package/dist/cjs/components/Root.d.ts +2 -2
  51. package/dist/cjs/components/Root.js +1 -1
  52. package/dist/cjs/components/Select.d.ts +1 -1
  53. package/dist/cjs/components/Select.js +1 -1
  54. package/dist/cjs/components/Week.d.ts +2 -1
  55. package/dist/cjs/components/Week.js +1 -1
  56. package/dist/cjs/components/Week.js.map +1 -1
  57. package/dist/cjs/components/WeekNumber.d.ts +2 -2
  58. package/dist/cjs/components/WeekNumber.js +1 -1
  59. package/dist/cjs/components/WeekNumberHeader.d.ts +1 -1
  60. package/dist/cjs/components/WeekNumberHeader.js +1 -1
  61. package/dist/cjs/components/Weekday.d.ts +1 -1
  62. package/dist/cjs/components/Weekday.js +1 -1
  63. package/dist/cjs/components/Weekdays.d.ts +1 -1
  64. package/dist/cjs/components/Weekdays.js +1 -1
  65. package/dist/cjs/components/Weeks.d.ts +1 -1
  66. package/dist/cjs/components/Weeks.js +1 -1
  67. package/dist/cjs/components/YearsDropdown.d.ts +1 -1
  68. package/dist/cjs/components/YearsDropdown.js +1 -1
  69. package/dist/cjs/formatters/formatCaption.d.ts +7 -2
  70. package/dist/cjs/formatters/formatCaption.js +7 -2
  71. package/dist/cjs/formatters/formatCaption.js.map +1 -1
  72. package/dist/cjs/formatters/formatDay.d.ts +7 -2
  73. package/dist/cjs/formatters/formatDay.js +7 -2
  74. package/dist/cjs/formatters/formatDay.js.map +1 -1
  75. package/dist/cjs/formatters/formatMonthDropdown.d.ts +6 -2
  76. package/dist/cjs/formatters/formatMonthDropdown.js +6 -2
  77. package/dist/cjs/formatters/formatMonthDropdown.js.map +1 -1
  78. package/dist/cjs/formatters/formatWeekNumber.d.ts +7 -3
  79. package/dist/cjs/formatters/formatWeekNumber.js +10 -5
  80. package/dist/cjs/formatters/formatWeekNumber.js.map +1 -1
  81. package/dist/cjs/formatters/formatWeekNumberHeader.d.ts +3 -2
  82. package/dist/cjs/formatters/formatWeekNumberHeader.js +3 -2
  83. package/dist/cjs/formatters/formatWeekNumberHeader.js.map +1 -1
  84. package/dist/cjs/formatters/formatWeekdayName.d.ts +7 -2
  85. package/dist/cjs/formatters/formatWeekdayName.js +7 -2
  86. package/dist/cjs/formatters/formatWeekdayName.js.map +1 -1
  87. package/dist/cjs/formatters/formatYearDropdown.d.ts +5 -1
  88. package/dist/cjs/formatters/formatYearDropdown.js +5 -1
  89. package/dist/cjs/formatters/formatYearDropdown.js.map +1 -1
  90. package/dist/cjs/helpers/calculateFocusTarget.d.ts +14 -0
  91. package/dist/cjs/helpers/calculateFocusTarget.js +24 -1
  92. package/dist/cjs/helpers/calculateFocusTarget.js.map +1 -1
  93. package/dist/cjs/helpers/createGetModifiers.d.ts +16 -0
  94. package/dist/cjs/{useGetModifiers.js → helpers/createGetModifiers.js} +13 -7
  95. package/dist/cjs/helpers/createGetModifiers.js.map +1 -0
  96. package/dist/cjs/helpers/endOfBroadcastWeek.d.ts +7 -1
  97. package/dist/cjs/helpers/endOfBroadcastWeek.js +7 -1
  98. package/dist/cjs/helpers/endOfBroadcastWeek.js.map +1 -1
  99. package/dist/cjs/helpers/getBroadcastWeeksInMonth.d.ts +8 -1
  100. package/dist/cjs/helpers/getBroadcastWeeksInMonth.js +8 -1
  101. package/dist/cjs/helpers/getBroadcastWeeksInMonth.js.map +1 -1
  102. package/dist/cjs/helpers/getClassNamesForModifiers.d.ts +12 -0
  103. package/dist/cjs/helpers/getClassNamesForModifiers.js +12 -0
  104. package/dist/cjs/helpers/getClassNamesForModifiers.js.map +1 -1
  105. package/dist/cjs/helpers/getComponents.d.ts +10 -0
  106. package/dist/cjs/helpers/getComponents.js +10 -0
  107. package/dist/cjs/helpers/getComponents.js.map +1 -1
  108. package/dist/cjs/helpers/getDataAttributes.d.ts +9 -1
  109. package/dist/cjs/helpers/getDataAttributes.js +11 -2
  110. package/dist/cjs/helpers/getDataAttributes.js.map +1 -1
  111. package/dist/cjs/helpers/getDates.d.ts +12 -1
  112. package/dist/cjs/helpers/getDates.js +13 -2
  113. package/dist/cjs/helpers/getDates.js.map +1 -1
  114. package/dist/cjs/helpers/getDays.d.ts +4 -0
  115. package/dist/cjs/helpers/getDays.js +4 -1
  116. package/dist/cjs/helpers/getDays.js.map +1 -1
  117. package/dist/cjs/helpers/getDefaultClassNames.d.ts +5 -1
  118. package/dist/cjs/helpers/getDefaultClassNames.js +5 -1
  119. package/dist/cjs/helpers/getDefaultClassNames.js.map +1 -1
  120. package/dist/cjs/helpers/getDisplayMonths.d.ts +10 -0
  121. package/dist/cjs/helpers/getDisplayMonths.js +10 -0
  122. package/dist/cjs/helpers/getDisplayMonths.js.map +1 -1
  123. package/dist/cjs/helpers/getFocusableDate.d.ts +16 -1
  124. package/dist/cjs/helpers/getFocusableDate.js +17 -2
  125. package/dist/cjs/helpers/getFocusableDate.js.map +1 -1
  126. package/dist/cjs/helpers/getFormatters.d.ts +7 -1
  127. package/dist/cjs/helpers/getFormatters.js +7 -1
  128. package/dist/cjs/helpers/getFormatters.js.map +1 -1
  129. package/dist/cjs/helpers/getInitialMonth.d.ts +11 -1
  130. package/dist/cjs/helpers/getInitialMonth.js +14 -7
  131. package/dist/cjs/helpers/getInitialMonth.js.map +1 -1
  132. package/dist/cjs/helpers/getLabels.d.ts +6 -1
  133. package/dist/cjs/helpers/getLabels.js +6 -1
  134. package/dist/cjs/helpers/getLabels.js.map +1 -1
  135. package/dist/cjs/helpers/getMonthOptions.d.ts +15 -1
  136. package/dist/cjs/helpers/getMonthOptions.js +15 -1
  137. package/dist/cjs/helpers/getMonthOptions.js.map +1 -1
  138. package/dist/cjs/helpers/getMonths.d.ts +15 -8
  139. package/dist/cjs/helpers/getMonths.js +16 -9
  140. package/dist/cjs/helpers/getMonths.js.map +1 -1
  141. package/dist/cjs/helpers/getNavMonth.d.ts +7 -1
  142. package/dist/cjs/helpers/getNavMonth.js +7 -1
  143. package/dist/cjs/helpers/getNavMonth.js.map +1 -1
  144. package/dist/cjs/helpers/getNextFocus.d.ts +18 -3
  145. package/dist/cjs/helpers/getNextFocus.js +19 -5
  146. package/dist/cjs/helpers/getNextFocus.js.map +1 -1
  147. package/dist/cjs/helpers/getNextMonth.d.ts +13 -5
  148. package/dist/cjs/helpers/getNextMonth.js +13 -6
  149. package/dist/cjs/helpers/getNextMonth.js.map +1 -1
  150. package/dist/cjs/helpers/getPreviousMonth.d.ts +13 -5
  151. package/dist/cjs/helpers/getPreviousMonth.js +13 -5
  152. package/dist/cjs/helpers/getPreviousMonth.js.map +1 -1
  153. package/dist/cjs/helpers/getStyleForModifiers.d.ts +11 -0
  154. package/dist/cjs/helpers/getStyleForModifiers.js +11 -0
  155. package/dist/cjs/helpers/getStyleForModifiers.js.map +1 -1
  156. package/dist/cjs/helpers/getWeekdays.d.ts +9 -9
  157. package/dist/cjs/helpers/getWeekdays.js +9 -9
  158. package/dist/cjs/helpers/getWeekdays.js.map +1 -1
  159. package/dist/cjs/helpers/getWeeks.d.ts +6 -1
  160. package/dist/cjs/helpers/getWeeks.js +6 -1
  161. package/dist/cjs/helpers/getWeeks.js.map +1 -1
  162. package/dist/cjs/helpers/getYearOptions.d.ts +13 -1
  163. package/dist/cjs/helpers/getYearOptions.js +13 -1
  164. package/dist/cjs/helpers/getYearOptions.js.map +1 -1
  165. package/dist/cjs/helpers/startOfBroadcastWeek.d.ts +8 -1
  166. package/dist/cjs/helpers/startOfBroadcastWeek.js +8 -1
  167. package/dist/cjs/helpers/startOfBroadcastWeek.js.map +1 -1
  168. package/dist/cjs/helpers/useControlledValue.d.ts +10 -6
  169. package/dist/cjs/helpers/useControlledValue.js +10 -6
  170. package/dist/cjs/helpers/useControlledValue.js.map +1 -1
  171. package/dist/cjs/labels/labelDayButton.d.ts +9 -6
  172. package/dist/cjs/labels/labelDayButton.js +9 -6
  173. package/dist/cjs/labels/labelDayButton.js.map +1 -1
  174. package/dist/cjs/labels/labelGrid.d.ts +7 -3
  175. package/dist/cjs/labels/labelGrid.js +7 -3
  176. package/dist/cjs/labels/labelGrid.js.map +1 -1
  177. package/dist/cjs/labels/labelGridcell.d.ts +7 -4
  178. package/dist/cjs/labels/labelGridcell.js +7 -4
  179. package/dist/cjs/labels/labelGridcell.js.map +1 -1
  180. package/dist/cjs/labels/labelMonthDropdown.d.ts +3 -1
  181. package/dist/cjs/labels/labelMonthDropdown.js +3 -1
  182. package/dist/cjs/labels/labelMonthDropdown.js.map +1 -1
  183. package/dist/cjs/labels/labelNav.d.ts +2 -1
  184. package/dist/cjs/labels/labelNav.js +2 -1
  185. package/dist/cjs/labels/labelNav.js.map +1 -1
  186. package/dist/cjs/labels/labelNext.d.ts +5 -4
  187. package/dist/cjs/labels/labelNext.js +5 -4
  188. package/dist/cjs/labels/labelNext.js.map +1 -1
  189. package/dist/cjs/labels/labelPrevious.d.ts +5 -4
  190. package/dist/cjs/labels/labelPrevious.js +5 -4
  191. package/dist/cjs/labels/labelPrevious.js.map +1 -1
  192. package/dist/cjs/labels/labelWeekNumber.d.ts +4 -1
  193. package/dist/cjs/labels/labelWeekNumber.js +4 -1
  194. package/dist/cjs/labels/labelWeekNumber.js.map +1 -1
  195. package/dist/cjs/labels/labelWeekNumberHeader.d.ts +3 -1
  196. package/dist/cjs/labels/labelWeekNumberHeader.js +3 -1
  197. package/dist/cjs/labels/labelWeekNumberHeader.js.map +1 -1
  198. package/dist/cjs/labels/labelWeekday.d.ts +5 -1
  199. package/dist/cjs/labels/labelWeekday.js +5 -1
  200. package/dist/cjs/labels/labelWeekday.js.map +1 -1
  201. package/dist/cjs/labels/labelYearDropdown.d.ts +3 -1
  202. package/dist/cjs/labels/labelYearDropdown.js +3 -1
  203. package/dist/cjs/labels/labelYearDropdown.js.map +1 -1
  204. package/dist/cjs/persian.d.ts +15 -2
  205. package/dist/cjs/persian.js +15 -2
  206. package/dist/cjs/persian.js.map +1 -1
  207. package/dist/cjs/selection/useMulti.d.ts +9 -0
  208. package/dist/cjs/selection/useMulti.js +9 -0
  209. package/dist/cjs/selection/useMulti.js.map +1 -1
  210. package/dist/cjs/selection/useRange.d.ts +9 -0
  211. package/dist/cjs/selection/useRange.js +9 -0
  212. package/dist/cjs/selection/useRange.js.map +1 -1
  213. package/dist/cjs/selection/useSingle.d.ts +9 -0
  214. package/dist/cjs/selection/useSingle.js +9 -0
  215. package/dist/cjs/selection/useSingle.js.map +1 -1
  216. package/dist/cjs/types/deprecated.d.ts +8 -8
  217. package/dist/cjs/types/deprecated.js +1 -1
  218. package/dist/cjs/types/props.d.ts +57 -13
  219. package/dist/cjs/types/selection.d.ts +25 -0
  220. package/dist/cjs/types/shared.d.ts +29 -78
  221. package/dist/cjs/useAnimation.d.ts +11 -1
  222. package/dist/cjs/useAnimation.js +11 -1
  223. package/dist/cjs/useAnimation.js.map +1 -1
  224. package/dist/cjs/useCalendar.d.ts +9 -1
  225. package/dist/cjs/useCalendar.js +9 -1
  226. package/dist/cjs/useCalendar.js.map +1 -1
  227. package/dist/cjs/useDayPicker.d.ts +4 -6
  228. package/dist/cjs/useDayPicker.js +4 -6
  229. package/dist/cjs/useDayPicker.js.map +1 -1
  230. package/dist/cjs/useFocus.d.ts +14 -1
  231. package/dist/cjs/useFocus.js +14 -1
  232. package/dist/cjs/useFocus.js.map +1 -1
  233. package/dist/cjs/useSelection.d.ts +10 -0
  234. package/dist/cjs/useSelection.js +10 -0
  235. package/dist/cjs/useSelection.js.map +1 -1
  236. package/dist/cjs/utc.d.ts +6 -0
  237. package/dist/cjs/utc.js +6 -0
  238. package/dist/cjs/utc.js.map +1 -1
  239. package/dist/cjs/utils/addToRange.d.ts +10 -11
  240. package/dist/cjs/utils/addToRange.js +10 -11
  241. package/dist/cjs/utils/addToRange.js.map +1 -1
  242. package/dist/cjs/utils/dateMatchModifiers.d.ts +5 -15
  243. package/dist/cjs/utils/dateMatchModifiers.js +5 -15
  244. package/dist/cjs/utils/dateMatchModifiers.js.map +1 -1
  245. package/dist/cjs/utils/rangeContainsDayOfWeek.d.ts +7 -9
  246. package/dist/cjs/utils/rangeContainsDayOfWeek.js +7 -9
  247. package/dist/cjs/utils/rangeContainsDayOfWeek.js.map +1 -1
  248. package/dist/cjs/utils/rangeContainsModifiers.d.ts +5 -14
  249. package/dist/cjs/utils/rangeContainsModifiers.js +5 -14
  250. package/dist/cjs/utils/rangeContainsModifiers.js.map +1 -1
  251. package/dist/cjs/utils/rangeIncludesDate.d.ts +7 -4
  252. package/dist/cjs/utils/rangeIncludesDate.js +7 -4
  253. package/dist/cjs/utils/rangeIncludesDate.js.map +1 -1
  254. package/dist/cjs/utils/rangeOverlaps.d.ts +5 -1
  255. package/dist/cjs/utils/rangeOverlaps.js +5 -1
  256. package/dist/cjs/utils/rangeOverlaps.js.map +1 -1
  257. package/dist/cjs/utils/typeguards.d.ts +19 -6
  258. package/dist/cjs/utils/typeguards.js +19 -6
  259. package/dist/cjs/utils/typeguards.js.map +1 -1
  260. package/dist/esm/DayPicker.d.ts +4 -2
  261. package/dist/esm/DayPicker.js +59 -8
  262. package/dist/esm/DayPicker.js.map +1 -1
  263. package/dist/esm/UI.d.ts +11 -23
  264. package/dist/esm/UI.js +6 -8
  265. package/dist/esm/UI.js.map +1 -1
  266. package/dist/esm/classes/CalendarDay.d.ts +17 -14
  267. package/dist/esm/classes/CalendarDay.js +9 -6
  268. package/dist/esm/classes/CalendarDay.js.map +1 -1
  269. package/dist/esm/classes/CalendarMonth.d.ts +8 -3
  270. package/dist/esm/classes/CalendarMonth.js +6 -1
  271. package/dist/esm/classes/CalendarMonth.js.map +1 -1
  272. package/dist/esm/classes/CalendarWeek.d.ts +6 -2
  273. package/dist/esm/classes/CalendarWeek.js +5 -1
  274. package/dist/esm/classes/CalendarWeek.js.map +1 -1
  275. package/dist/esm/classes/DateLib.d.ts +53 -52
  276. package/dist/esm/classes/DateLib.js +26 -22
  277. package/dist/esm/classes/DateLib.js.map +1 -1
  278. package/dist/esm/components/Day.d.ts +4 -4
  279. package/dist/esm/components/Day.js +4 -4
  280. package/dist/esm/components/DayButton.d.ts +2 -2
  281. package/dist/esm/components/DayButton.js +1 -1
  282. package/dist/esm/components/Dropdown.d.ts +4 -6
  283. package/dist/esm/components/Dropdown.js +1 -1
  284. package/dist/esm/components/Dropdown.js.map +1 -1
  285. package/dist/esm/components/DropdownNav.d.ts +1 -1
  286. package/dist/esm/components/DropdownNav.js +1 -1
  287. package/dist/esm/components/Footer.d.ts +1 -1
  288. package/dist/esm/components/Footer.js +1 -1
  289. package/dist/esm/components/Month.d.ts +3 -3
  290. package/dist/esm/components/Month.js +1 -1
  291. package/dist/esm/components/MonthCaption.d.ts +3 -3
  292. package/dist/esm/components/MonthCaption.js +1 -1
  293. package/dist/esm/components/MonthGrid.d.ts +1 -1
  294. package/dist/esm/components/MonthGrid.js +1 -1
  295. package/dist/esm/components/Months.d.ts +1 -1
  296. package/dist/esm/components/Months.js +1 -1
  297. package/dist/esm/components/MonthsDropdown.d.ts +1 -1
  298. package/dist/esm/components/MonthsDropdown.js +1 -1
  299. package/dist/esm/components/Nav.d.ts +5 -1
  300. package/dist/esm/components/Nav.js +1 -1
  301. package/dist/esm/components/Nav.js.map +1 -1
  302. package/dist/esm/components/NextMonthButton.d.ts +1 -1
  303. package/dist/esm/components/NextMonthButton.js +1 -1
  304. package/dist/esm/components/Option.d.ts +1 -1
  305. package/dist/esm/components/Option.js +1 -1
  306. package/dist/esm/components/PreviousMonthButton.d.ts +1 -1
  307. package/dist/esm/components/PreviousMonthButton.js +1 -1
  308. package/dist/esm/components/Root.d.ts +2 -2
  309. package/dist/esm/components/Root.js +1 -1
  310. package/dist/esm/components/Select.d.ts +1 -1
  311. package/dist/esm/components/Select.js +1 -1
  312. package/dist/esm/components/Week.d.ts +2 -1
  313. package/dist/esm/components/Week.js +1 -1
  314. package/dist/esm/components/Week.js.map +1 -1
  315. package/dist/esm/components/WeekNumber.d.ts +2 -2
  316. package/dist/esm/components/WeekNumber.js +1 -1
  317. package/dist/esm/components/WeekNumberHeader.d.ts +1 -1
  318. package/dist/esm/components/WeekNumberHeader.js +1 -1
  319. package/dist/esm/components/Weekday.d.ts +1 -1
  320. package/dist/esm/components/Weekday.js +1 -1
  321. package/dist/esm/components/Weekdays.d.ts +1 -1
  322. package/dist/esm/components/Weekdays.js +1 -1
  323. package/dist/esm/components/Weeks.d.ts +1 -1
  324. package/dist/esm/components/Weeks.js +1 -1
  325. package/dist/esm/components/YearsDropdown.d.ts +1 -1
  326. package/dist/esm/components/YearsDropdown.js +1 -1
  327. package/dist/esm/formatters/formatCaption.d.ts +7 -2
  328. package/dist/esm/formatters/formatCaption.js +7 -2
  329. package/dist/esm/formatters/formatCaption.js.map +1 -1
  330. package/dist/esm/formatters/formatDay.d.ts +7 -2
  331. package/dist/esm/formatters/formatDay.js +7 -2
  332. package/dist/esm/formatters/formatDay.js.map +1 -1
  333. package/dist/esm/formatters/formatMonthDropdown.d.ts +6 -2
  334. package/dist/esm/formatters/formatMonthDropdown.js +6 -2
  335. package/dist/esm/formatters/formatMonthDropdown.js.map +1 -1
  336. package/dist/esm/formatters/formatWeekNumber.d.ts +7 -3
  337. package/dist/esm/formatters/formatWeekNumber.js +10 -5
  338. package/dist/esm/formatters/formatWeekNumber.js.map +1 -1
  339. package/dist/esm/formatters/formatWeekNumberHeader.d.ts +3 -2
  340. package/dist/esm/formatters/formatWeekNumberHeader.js +3 -2
  341. package/dist/esm/formatters/formatWeekNumberHeader.js.map +1 -1
  342. package/dist/esm/formatters/formatWeekdayName.d.ts +7 -2
  343. package/dist/esm/formatters/formatWeekdayName.js +7 -2
  344. package/dist/esm/formatters/formatWeekdayName.js.map +1 -1
  345. package/dist/esm/formatters/formatYearDropdown.d.ts +5 -1
  346. package/dist/esm/formatters/formatYearDropdown.js +5 -1
  347. package/dist/esm/formatters/formatYearDropdown.js.map +1 -1
  348. package/dist/esm/helpers/calculateFocusTarget.d.ts +14 -0
  349. package/dist/esm/helpers/calculateFocusTarget.js +24 -1
  350. package/dist/esm/helpers/calculateFocusTarget.js.map +1 -1
  351. package/dist/esm/helpers/createGetModifiers.d.ts +16 -0
  352. package/dist/esm/{useGetModifiers.js → helpers/createGetModifiers.js} +12 -6
  353. package/dist/esm/helpers/createGetModifiers.js.map +1 -0
  354. package/dist/esm/helpers/endOfBroadcastWeek.d.ts +7 -1
  355. package/dist/esm/helpers/endOfBroadcastWeek.js +7 -1
  356. package/dist/esm/helpers/endOfBroadcastWeek.js.map +1 -1
  357. package/dist/esm/helpers/getBroadcastWeeksInMonth.d.ts +8 -1
  358. package/dist/esm/helpers/getBroadcastWeeksInMonth.js +8 -1
  359. package/dist/esm/helpers/getBroadcastWeeksInMonth.js.map +1 -1
  360. package/dist/esm/helpers/getClassNamesForModifiers.d.ts +12 -0
  361. package/dist/esm/helpers/getClassNamesForModifiers.js +12 -0
  362. package/dist/esm/helpers/getClassNamesForModifiers.js.map +1 -1
  363. package/dist/esm/helpers/getComponents.d.ts +10 -0
  364. package/dist/esm/helpers/getComponents.js +10 -0
  365. package/dist/esm/helpers/getComponents.js.map +1 -1
  366. package/dist/esm/helpers/getDataAttributes.d.ts +9 -1
  367. package/dist/esm/helpers/getDataAttributes.js +11 -2
  368. package/dist/esm/helpers/getDataAttributes.js.map +1 -1
  369. package/dist/esm/helpers/getDates.d.ts +12 -1
  370. package/dist/esm/helpers/getDates.js +13 -2
  371. package/dist/esm/helpers/getDates.js.map +1 -1
  372. package/dist/esm/helpers/getDays.d.ts +4 -0
  373. package/dist/esm/helpers/getDays.js +4 -1
  374. package/dist/esm/helpers/getDays.js.map +1 -1
  375. package/dist/esm/helpers/getDefaultClassNames.d.ts +5 -1
  376. package/dist/esm/helpers/getDefaultClassNames.js +5 -1
  377. package/dist/esm/helpers/getDefaultClassNames.js.map +1 -1
  378. package/dist/esm/helpers/getDisplayMonths.d.ts +10 -0
  379. package/dist/esm/helpers/getDisplayMonths.js +10 -0
  380. package/dist/esm/helpers/getDisplayMonths.js.map +1 -1
  381. package/dist/esm/helpers/getFocusableDate.d.ts +16 -1
  382. package/dist/esm/helpers/getFocusableDate.js +17 -2
  383. package/dist/esm/helpers/getFocusableDate.js.map +1 -1
  384. package/dist/esm/helpers/getFormatters.d.ts +7 -1
  385. package/dist/esm/helpers/getFormatters.js +7 -1
  386. package/dist/esm/helpers/getFormatters.js.map +1 -1
  387. package/dist/esm/helpers/getInitialMonth.d.ts +11 -1
  388. package/dist/esm/helpers/getInitialMonth.js +14 -7
  389. package/dist/esm/helpers/getInitialMonth.js.map +1 -1
  390. package/dist/esm/helpers/getLabels.d.ts +6 -1
  391. package/dist/esm/helpers/getLabels.js +6 -1
  392. package/dist/esm/helpers/getLabels.js.map +1 -1
  393. package/dist/esm/helpers/getMonthOptions.d.ts +15 -1
  394. package/dist/esm/helpers/getMonthOptions.js +15 -1
  395. package/dist/esm/helpers/getMonthOptions.js.map +1 -1
  396. package/dist/esm/helpers/getMonths.d.ts +15 -8
  397. package/dist/esm/helpers/getMonths.js +16 -9
  398. package/dist/esm/helpers/getMonths.js.map +1 -1
  399. package/dist/esm/helpers/getNavMonth.d.ts +7 -1
  400. package/dist/esm/helpers/getNavMonth.js +7 -1
  401. package/dist/esm/helpers/getNavMonth.js.map +1 -1
  402. package/dist/esm/helpers/getNextFocus.d.ts +18 -3
  403. package/dist/esm/helpers/getNextFocus.js +19 -5
  404. package/dist/esm/helpers/getNextFocus.js.map +1 -1
  405. package/dist/esm/helpers/getNextMonth.d.ts +13 -5
  406. package/dist/esm/helpers/getNextMonth.js +13 -6
  407. package/dist/esm/helpers/getNextMonth.js.map +1 -1
  408. package/dist/esm/helpers/getPreviousMonth.d.ts +13 -5
  409. package/dist/esm/helpers/getPreviousMonth.js +13 -5
  410. package/dist/esm/helpers/getPreviousMonth.js.map +1 -1
  411. package/dist/esm/helpers/getStyleForModifiers.d.ts +11 -0
  412. package/dist/esm/helpers/getStyleForModifiers.js +11 -0
  413. package/dist/esm/helpers/getStyleForModifiers.js.map +1 -1
  414. package/dist/esm/helpers/getWeekdays.d.ts +9 -9
  415. package/dist/esm/helpers/getWeekdays.js +9 -9
  416. package/dist/esm/helpers/getWeekdays.js.map +1 -1
  417. package/dist/esm/helpers/getWeeks.d.ts +6 -1
  418. package/dist/esm/helpers/getWeeks.js +6 -1
  419. package/dist/esm/helpers/getWeeks.js.map +1 -1
  420. package/dist/esm/helpers/getYearOptions.d.ts +13 -1
  421. package/dist/esm/helpers/getYearOptions.js +13 -1
  422. package/dist/esm/helpers/getYearOptions.js.map +1 -1
  423. package/dist/esm/helpers/startOfBroadcastWeek.d.ts +8 -1
  424. package/dist/esm/helpers/startOfBroadcastWeek.js +8 -1
  425. package/dist/esm/helpers/startOfBroadcastWeek.js.map +1 -1
  426. package/dist/esm/helpers/useControlledValue.d.ts +10 -6
  427. package/dist/esm/helpers/useControlledValue.js +10 -6
  428. package/dist/esm/helpers/useControlledValue.js.map +1 -1
  429. package/dist/esm/labels/labelDayButton.d.ts +9 -6
  430. package/dist/esm/labels/labelDayButton.js +9 -6
  431. package/dist/esm/labels/labelDayButton.js.map +1 -1
  432. package/dist/esm/labels/labelGrid.d.ts +7 -3
  433. package/dist/esm/labels/labelGrid.js +7 -3
  434. package/dist/esm/labels/labelGrid.js.map +1 -1
  435. package/dist/esm/labels/labelGridcell.d.ts +7 -4
  436. package/dist/esm/labels/labelGridcell.js +7 -4
  437. package/dist/esm/labels/labelGridcell.js.map +1 -1
  438. package/dist/esm/labels/labelMonthDropdown.d.ts +3 -1
  439. package/dist/esm/labels/labelMonthDropdown.js +3 -1
  440. package/dist/esm/labels/labelMonthDropdown.js.map +1 -1
  441. package/dist/esm/labels/labelNav.d.ts +2 -1
  442. package/dist/esm/labels/labelNav.js +2 -1
  443. package/dist/esm/labels/labelNav.js.map +1 -1
  444. package/dist/esm/labels/labelNext.d.ts +5 -4
  445. package/dist/esm/labels/labelNext.js +5 -4
  446. package/dist/esm/labels/labelNext.js.map +1 -1
  447. package/dist/esm/labels/labelPrevious.d.ts +5 -4
  448. package/dist/esm/labels/labelPrevious.js +5 -4
  449. package/dist/esm/labels/labelPrevious.js.map +1 -1
  450. package/dist/esm/labels/labelWeekNumber.d.ts +4 -1
  451. package/dist/esm/labels/labelWeekNumber.js +4 -1
  452. package/dist/esm/labels/labelWeekNumber.js.map +1 -1
  453. package/dist/esm/labels/labelWeekNumberHeader.d.ts +3 -1
  454. package/dist/esm/labels/labelWeekNumberHeader.js +3 -1
  455. package/dist/esm/labels/labelWeekNumberHeader.js.map +1 -1
  456. package/dist/esm/labels/labelWeekday.d.ts +5 -1
  457. package/dist/esm/labels/labelWeekday.js +5 -1
  458. package/dist/esm/labels/labelWeekday.js.map +1 -1
  459. package/dist/esm/labels/labelYearDropdown.d.ts +3 -1
  460. package/dist/esm/labels/labelYearDropdown.js +3 -1
  461. package/dist/esm/labels/labelYearDropdown.js.map +1 -1
  462. package/dist/esm/persian.d.ts +15 -2
  463. package/dist/esm/persian.js +15 -2
  464. package/dist/esm/persian.js.map +1 -1
  465. package/dist/esm/selection/useMulti.d.ts +9 -0
  466. package/dist/esm/selection/useMulti.js +9 -0
  467. package/dist/esm/selection/useMulti.js.map +1 -1
  468. package/dist/esm/selection/useRange.d.ts +9 -0
  469. package/dist/esm/selection/useRange.js +9 -0
  470. package/dist/esm/selection/useRange.js.map +1 -1
  471. package/dist/esm/selection/useSingle.d.ts +9 -0
  472. package/dist/esm/selection/useSingle.js +9 -0
  473. package/dist/esm/selection/useSingle.js.map +1 -1
  474. package/dist/esm/types/deprecated.d.ts +8 -8
  475. package/dist/esm/types/deprecated.js +1 -1
  476. package/dist/esm/types/props.d.ts +57 -13
  477. package/dist/esm/types/selection.d.ts +25 -0
  478. package/dist/esm/types/shared.d.ts +29 -78
  479. package/dist/esm/useAnimation.d.ts +11 -1
  480. package/dist/esm/useAnimation.js +11 -1
  481. package/dist/esm/useAnimation.js.map +1 -1
  482. package/dist/esm/useCalendar.d.ts +9 -1
  483. package/dist/esm/useCalendar.js +9 -1
  484. package/dist/esm/useCalendar.js.map +1 -1
  485. package/dist/esm/useDayPicker.d.ts +4 -6
  486. package/dist/esm/useDayPicker.js +4 -6
  487. package/dist/esm/useDayPicker.js.map +1 -1
  488. package/dist/esm/useFocus.d.ts +14 -1
  489. package/dist/esm/useFocus.js +14 -1
  490. package/dist/esm/useFocus.js.map +1 -1
  491. package/dist/esm/useSelection.d.ts +10 -0
  492. package/dist/esm/useSelection.js +10 -0
  493. package/dist/esm/useSelection.js.map +1 -1
  494. package/dist/esm/utc.d.ts +6 -0
  495. package/dist/esm/utc.js +6 -0
  496. package/dist/esm/utc.js.map +1 -1
  497. package/dist/esm/utils/addToRange.d.ts +10 -11
  498. package/dist/esm/utils/addToRange.js +10 -11
  499. package/dist/esm/utils/addToRange.js.map +1 -1
  500. package/dist/esm/utils/dateMatchModifiers.d.ts +5 -15
  501. package/dist/esm/utils/dateMatchModifiers.js +5 -15
  502. package/dist/esm/utils/dateMatchModifiers.js.map +1 -1
  503. package/dist/esm/utils/rangeContainsDayOfWeek.d.ts +7 -9
  504. package/dist/esm/utils/rangeContainsDayOfWeek.js +7 -9
  505. package/dist/esm/utils/rangeContainsDayOfWeek.js.map +1 -1
  506. package/dist/esm/utils/rangeContainsModifiers.d.ts +5 -14
  507. package/dist/esm/utils/rangeContainsModifiers.js +5 -14
  508. package/dist/esm/utils/rangeContainsModifiers.js.map +1 -1
  509. package/dist/esm/utils/rangeIncludesDate.d.ts +7 -4
  510. package/dist/esm/utils/rangeIncludesDate.js +7 -4
  511. package/dist/esm/utils/rangeIncludesDate.js.map +1 -1
  512. package/dist/esm/utils/rangeOverlaps.d.ts +5 -1
  513. package/dist/esm/utils/rangeOverlaps.js +5 -1
  514. package/dist/esm/utils/rangeOverlaps.js.map +1 -1
  515. package/dist/esm/utils/typeguards.d.ts +19 -6
  516. package/dist/esm/utils/typeguards.js +19 -6
  517. package/dist/esm/utils/typeguards.js.map +1 -1
  518. package/package.json +1 -1
  519. package/src/DayPicker.test.tsx +34 -0
  520. package/src/DayPicker.tsx +105 -6
  521. package/src/UI.ts +11 -23
  522. package/src/classes/CalendarDay.ts +17 -14
  523. package/src/classes/CalendarMonth.ts +8 -3
  524. package/src/classes/CalendarWeek.ts +8 -2
  525. package/src/classes/DateLib.ts +65 -76
  526. package/src/components/Day.tsx +4 -4
  527. package/src/components/DayButton.tsx +2 -2
  528. package/src/components/Dropdown.tsx +4 -6
  529. package/src/components/DropdownNav.tsx +1 -1
  530. package/src/components/Footer.tsx +1 -1
  531. package/src/components/Month.tsx +3 -3
  532. package/src/components/MonthCaption.tsx +3 -3
  533. package/src/components/MonthGrid.tsx +1 -1
  534. package/src/components/Months.tsx +1 -1
  535. package/src/components/MonthsDropdown.tsx +1 -1
  536. package/src/components/Nav.tsx +5 -1
  537. package/src/components/NextMonthButton.tsx +1 -1
  538. package/src/components/Option.tsx +1 -1
  539. package/src/components/PreviousMonthButton.tsx +1 -1
  540. package/src/components/Root.tsx +2 -2
  541. package/src/components/Select.tsx +1 -1
  542. package/src/components/Week.tsx +2 -1
  543. package/src/components/WeekNumber.tsx +2 -2
  544. package/src/components/WeekNumberHeader.tsx +1 -1
  545. package/src/components/Weekday.tsx +1 -1
  546. package/src/components/Weekdays.tsx +1 -1
  547. package/src/components/Weeks.tsx +1 -1
  548. package/src/components/YearsDropdown.tsx +1 -1
  549. package/src/formatters/formatCaption.ts +7 -2
  550. package/src/formatters/formatDay.ts +7 -2
  551. package/src/formatters/formatMonthDropdown.ts +6 -2
  552. package/src/formatters/formatWeekNumber.test.ts +11 -0
  553. package/src/formatters/formatWeekNumber.ts +11 -5
  554. package/src/formatters/formatWeekNumberHeader.ts +3 -2
  555. package/src/formatters/formatWeekdayName.ts +7 -2
  556. package/src/formatters/formatYearDropdown.ts +5 -1
  557. package/src/helpers/calculateFocusTarget.ts +25 -2
  558. package/src/{useGetModifiers.test.tsx → helpers/createGetModifiers.test.ts} +7 -8
  559. package/src/{useGetModifiers.tsx → helpers/createGetModifiers.ts} +13 -7
  560. package/src/helpers/endOfBroadcastWeek.ts +7 -1
  561. package/src/helpers/getBroadcastWeeksInMonth.ts +8 -1
  562. package/src/helpers/getClassNamesForModifiers.ts +13 -1
  563. package/src/helpers/getComponents.ts +10 -0
  564. package/src/helpers/getDataAttributes.tsx +11 -2
  565. package/src/helpers/getDates.ts +13 -2
  566. package/src/helpers/getDays.ts +4 -1
  567. package/src/helpers/getDefaultClassNames.ts +5 -1
  568. package/src/helpers/getDisplayMonths.ts +11 -1
  569. package/src/helpers/getFocusableDate.ts +17 -2
  570. package/src/helpers/getFormatters.ts +7 -1
  571. package/src/helpers/getInitialMonth.ts +14 -9
  572. package/src/helpers/getLabels.ts +6 -1
  573. package/src/helpers/getMonthOptions.ts +15 -1
  574. package/src/helpers/getMonths.ts +16 -5
  575. package/src/helpers/getNavMonth.ts +7 -1
  576. package/src/helpers/getNextFocus.tsx +18 -2
  577. package/src/helpers/getNextMonth.ts +13 -6
  578. package/src/helpers/getPreviousMonth.ts +13 -5
  579. package/src/helpers/getStyleForModifiers.ts +12 -1
  580. package/src/helpers/getWeekdays.ts +8 -5
  581. package/src/helpers/getWeeks.ts +6 -1
  582. package/src/helpers/getYearOptions.ts +13 -1
  583. package/src/helpers/startOfBroadcastWeek.ts +8 -1
  584. package/src/helpers/useControlledValue.ts +10 -6
  585. package/src/labels/labelDayButton.ts +8 -4
  586. package/src/labels/labelGrid.ts +7 -3
  587. package/src/labels/labelGridcell.ts +6 -2
  588. package/src/labels/labelMonthDropdown.ts +3 -1
  589. package/src/labels/labelNav.ts +2 -1
  590. package/src/labels/labelNext.ts +5 -5
  591. package/src/labels/labelPrevious.ts +5 -5
  592. package/src/labels/labelWeekNumber.ts +4 -1
  593. package/src/labels/labelWeekNumberHeader.ts +3 -1
  594. package/src/labels/labelWeekday.ts +5 -1
  595. package/src/labels/labelYearDropdown.ts +3 -1
  596. package/src/persian.tsx +15 -2
  597. package/src/selection/useMulti.tsx +9 -0
  598. package/src/selection/useRange.tsx +9 -0
  599. package/src/selection/useSingle.tsx +9 -0
  600. package/src/style.css +29 -0
  601. package/src/style.module.css +29 -0
  602. package/src/types/deprecated.ts +8 -8
  603. package/src/types/props.ts +58 -13
  604. package/src/types/selection.ts +25 -0
  605. package/src/types/shared.ts +29 -78
  606. package/src/useAnimation.ts +11 -1
  607. package/src/useCalendar.ts +9 -1
  608. package/src/useDayPicker.ts +4 -6
  609. package/src/useFocus.ts +14 -1
  610. package/src/useSelection.ts +10 -0
  611. package/src/utc.tsx +6 -0
  612. package/src/utils/addToRange.ts +9 -7
  613. package/src/utils/dateMatchModifiers.ts +5 -15
  614. package/src/utils/rangeContainsDayOfWeek.ts +7 -9
  615. package/src/utils/rangeContainsModifiers.ts +5 -14
  616. package/src/utils/rangeIncludesDate.ts +6 -2
  617. package/src/utils/rangeOverlaps.ts +5 -1
  618. package/src/utils/typeguards.ts +19 -6
  619. package/dist/cjs/useGetModifiers.d.ts +0 -10
  620. package/dist/cjs/useGetModifiers.js.map +0 -1
  621. package/dist/esm/useGetModifiers.d.ts +0 -10
  622. package/dist/esm/useGetModifiers.js.map +0 -1
  623. /package/src/helpers/{getPossibleFocusDate.test.ts → getFocusableDate.test.ts} +0 -0
@@ -198,6 +198,35 @@
198
198
  font-size: large;
199
199
  }
200
200
 
201
+ .root[data-nav-layout="around"] .month,
202
+ .root[data-nav-layout="after"] .month {
203
+ position: relative;
204
+ }
205
+
206
+ .root[data-nav-layout="around"] .month_caption {
207
+ justify-content: center;
208
+ margin-inline-start: var(--rdp-nav_button-width);
209
+ margin-inline-end: var(--rdp-nav_button-width);
210
+ position: relative;
211
+ }
212
+
213
+ .root[data-nav-layout="around"] .button_previous {
214
+ position: absolute;
215
+ inset-inline-start: 0;
216
+ top: 0;
217
+ height: var(--rdp-nav-height);
218
+ display: inline-flex;
219
+ }
220
+
221
+ .root[data-nav-layout="around"] .button_next {
222
+ position: absolute;
223
+ inset-inline-end: 0;
224
+ top: 0;
225
+ height: var(--rdp-nav-height);
226
+ display: inline-flex;
227
+ justify-content: center;
228
+ }
229
+
201
230
  .months {
202
231
  position: relative;
203
232
  display: flex;
@@ -84,7 +84,7 @@ export type DayPickerRangeProps = PropsRange;
84
84
 
85
85
  /**
86
86
  * @ignore
87
- * @deprecated This type will be removed. Use `NonNullable<unknown>` instead
87
+ * @deprecated This type will be removed. Use `NonNullable<unknown>` instead.
88
88
  */
89
89
  export type DayPickerDefaultProps = NonNullable<unknown>;
90
90
 
@@ -96,7 +96,7 @@ export type DaySelectionMode = Mode;
96
96
 
97
97
  /**
98
98
  * @ignore
99
- * @deprecated This type will be removed. Use `string` instead;
99
+ * @deprecated This type will be removed. Use `string` instead.
100
100
  */
101
101
  export type Modifier = string;
102
102
 
@@ -116,21 +116,21 @@ export type InternalModifier =
116
116
 
117
117
  /**
118
118
  * @ignore
119
- * @deprecated This type will be removed. Use `SelectHandler<{mode: "single"}>`
120
- * instead.
119
+ * @deprecated This type will be removed. Use `SelectHandler<{ mode: "single"
120
+ * }>` instead.
121
121
  */
122
122
  export type SelectSingleEventHandler = PropsSingle["onSelect"];
123
123
 
124
124
  /**
125
125
  * @ignore
126
- * @deprecated This type will be removed. Use `SelectHandler<{mode:
127
- * "multiple"}>` instead.
126
+ * @deprecated This type will be removed. Use `SelectHandler<{ mode: "multiple"
127
+ * }>` instead.
128
128
  */
129
129
  export type SelectMultipleEventHandler = PropsMulti["onSelect"];
130
130
 
131
131
  /**
132
132
  * @ignore
133
- * @deprecated This type will be removed. Use `SelectHandler<{mode: "range"}>`
133
+ * @deprecated This type will be removed. Use `SelectHandler<{ mode: "range" }>`
134
134
  * instead.
135
135
  */
136
136
  export type SelectRangeEventHandler = PropsRange["onSelect"];
@@ -143,7 +143,7 @@ export type DayPickerProviderProps = any;
143
143
 
144
144
  /**
145
145
  * @ignore
146
- * @deprecated This type has been removed to `useDayPicker`.
146
+ * @deprecated This type has been moved to `useDayPicker`.
147
147
  * @group Hooks
148
148
  */
149
149
  export const useNavigation = useDayPicker;
@@ -209,13 +209,29 @@ export interface PropsBase {
209
209
  * - `month`: display only the dropdown for the months
210
210
  * - `year`: display only the dropdown for the years
211
211
  *
212
- * **Note:** showing the dropdown will set the start/end months
213
- * {@link startMonth} to 100 years ago, and {@link endMonth} to the end of the
214
- * current year.
212
+ * **Note:** By default, showing the dropdown will set the {@link startMonth}
213
+ * to 100 years ago and {@link endMonth} to the end of the current year. You
214
+ * can override this behavior by explicitly setting `startMonth` and
215
+ * `endMonth`.
215
216
  *
216
217
  * @see https://daypicker.dev/docs/customization#caption-layouts
217
218
  */
218
219
  captionLayout?: "label" | "dropdown" | "dropdown-months" | "dropdown-years";
220
+
221
+ /**
222
+ * Adjust the positioning of the navigation buttons.
223
+ *
224
+ * - `around`: Displays the buttons on either side of the caption.
225
+ * - `after`: Displays the buttons after the caption. This ensures the tab order
226
+ * matches the visual order.
227
+ *
228
+ * If not set, the buttons default to being displayed after the caption, but
229
+ * the tab order may not align with the visual order.
230
+ *
231
+ * @since 9.7.0
232
+ * @see https://daypicker.dev/docs/customization#navigation-layouts
233
+ */
234
+ navLayout?: "around" | "after" | undefined;
219
235
  /**
220
236
  * Display always 6 weeks per each month, regardless of the month’s number of
221
237
  * weeks. Weeks will be filled with the days from the next month.
@@ -272,16 +288,12 @@ export interface PropsBase {
272
288
  ISOWeek?: boolean;
273
289
  /**
274
290
  * The time zone (IANA or UTC offset) to use in the calendar (experimental).
291
+ *
275
292
  * See
276
293
  * [Wikipedia](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)
277
294
  * for the possible values.
278
295
  *
279
- * Time zones are supported by the `TZDate` object by the
280
- * [@date-fns/tz](https://github.com/date-fns/tz) package. Please refer to the
281
- * package documentation for more information.
282
- *
283
296
  * @since 9.1.1
284
- * @experimental
285
297
  * @see https://daypicker.dev/docs/time-zone
286
298
  */
287
299
  timeZone?: string | undefined;
@@ -316,9 +328,10 @@ export interface PropsBase {
316
328
  */
317
329
  initialFocus?: boolean;
318
330
  /**
319
- * Apply the `disabled` modifier to the matching days.
331
+ * Apply the `disabled` modifier to the matching days. Disabled days cannot be
332
+ * selected when in a selection mode is set.
320
333
  *
321
- * @see https://daypicker.dev/docs/selection-modes#disabling-dates
334
+ * @see https://daypicker.dev/docs/selection-modes#disabled
322
335
  */
323
336
  disabled?: Matcher | Matcher[] | undefined;
324
337
  /**
@@ -338,6 +351,13 @@ export interface PropsBase {
338
351
  /**
339
352
  * Add modifiers to the matching days.
340
353
  *
354
+ * @example
355
+ * const modifiers = {
356
+ * weekend: { dayOfWeek: [0, 6] }, // Match weekends
357
+ * holiday: [new Date(2023, 11, 25)] // Match Christmas
358
+ * };
359
+ * <DayPicker modifiers={modifiers} />
360
+ *
341
361
  * @see https://daypicker.dev/guides/custom-modifiers
342
362
  */
343
363
  modifiers?: Record<string, Matcher | Matcher[] | undefined> | undefined;
@@ -420,13 +440,13 @@ export interface PropsBase {
420
440
  numerals?: Numerals | undefined;
421
441
  /**
422
442
  * The index of the first day of the week (0 - Sunday). Overrides the locale's
423
- * one.
443
+ * default.
424
444
  *
425
445
  * @see https://daypicker.dev/docs/localization#first-date-of-the-week
426
446
  */
427
447
  weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined;
428
448
  /**
429
- * The day of January, which is always in the first week of the year.
449
+ * The day of January that is always in the first week of the year.
430
450
  *
431
451
  * @see https://daypicker.dev/docs/localization#first-week-contains-date
432
452
  */
@@ -542,10 +562,22 @@ export interface PropsBase {
542
562
  /**
543
563
  * Shared handler type for `onSelect` callback when a selection mode is set.
544
564
  *
565
+ * @example
566
+ * const handleSelect: OnSelectHandler<Date> = (
567
+ * selected,
568
+ * triggerDate,
569
+ * modifiers,
570
+ * e
571
+ * ) => {
572
+ * console.log("Selected:", selected);
573
+ * console.log("Triggered by:", triggerDate);
574
+ * };
575
+ *
545
576
  * @template T - The type of the selected item.
546
577
  * @callback OnSelectHandler
547
578
  * @param {T} selected - The selected item after the event.
548
- * @param {Date} triggerDate - The date when the event was triggered.
579
+ * @param {Date} triggerDate - The date when the event was triggered. This is
580
+ * typically the day clicked or interacted with.
549
581
  * @param {Modifiers} modifiers - The modifiers associated with the event.
550
582
  * @param {React.MouseEvent | React.KeyboardEvent} e - The event object.
551
583
  */
@@ -632,6 +664,12 @@ export interface PropsMulti {
632
664
  export interface PropsRangeRequired {
633
665
  mode: "range";
634
666
  required: true;
667
+ /**
668
+ * Apply the `disabled` modifier to the matching days. Disabled days cannot be
669
+ * selected when in a selection mode is set.
670
+ *
671
+ * @see https://daypicker.dev/docs/selection-modes#disabled
672
+ */
635
673
  disabled?: Matcher | Matcher[] | undefined;
636
674
  /**
637
675
  * When `true`, the range will reset when including a disabled day.
@@ -657,11 +695,18 @@ export interface PropsRangeRequired {
657
695
  export interface PropsRange {
658
696
  mode: "range";
659
697
  required?: false | undefined;
698
+ /**
699
+ * Apply the `disabled` modifier to the matching days. Disabled days cannot be
700
+ * selected when in a selection mode is set.
701
+ *
702
+ * @see https://daypicker.dev/docs/selection-modes#disabled
703
+ */
660
704
  disabled?: Matcher | Matcher[] | undefined;
661
705
  /**
662
706
  * When `true`, the range will reset when including a disabled day.
663
707
  *
664
708
  * @since V9.0.2
709
+ * @see https://daypicker.dev/docs/selection-modes#exclude-disabled
665
710
  */
666
711
  excludeDisabled?: boolean | undefined;
667
712
  /** The selected range. */
@@ -17,6 +17,19 @@ export type SelectedMulti<T extends { required?: boolean }> =
17
17
  export type SelectedRange<T extends { required?: boolean }> =
18
18
  T["required"] extends true ? DateRange : DateRange | undefined;
19
19
 
20
+ /**
21
+ * Represents the selected value based on the selection mode.
22
+ *
23
+ * @example
24
+ * // Single selection mode
25
+ * const selected: SelectedValue<{ mode: "single" }> = new Date();
26
+ *
27
+ * // Multiple selection mode
28
+ * const selected: SelectedValue<{ mode: "multiple" }> = [new Date(), new Date()];
29
+ *
30
+ * // Range selection mode
31
+ * const selected: SelectedValue<{ mode: "range" }> = { from: new Date(), to: new Date() };
32
+ */
20
33
  export type SelectedValue<T> = T extends { mode: "single"; required?: boolean }
21
34
  ? SelectedSingle<T>
22
35
  : T extends { mode: "multiple"; required?: boolean }
@@ -44,6 +57,18 @@ export type SelectHandlerRange<T extends { required?: boolean | undefined }> = (
44
57
  e: React.MouseEvent | React.KeyboardEvent
45
58
  ) => T["required"] extends true ? DateRange : DateRange | undefined;
46
59
 
60
+ /**
61
+ * The handler to set a selection based on the mode.
62
+ *
63
+ * @example
64
+ * const handleSelect: SelectHandler<{ mode: "single" }> = (
65
+ * triggerDate,
66
+ * modifiers,
67
+ * e
68
+ * ) => {
69
+ * console.log("Selected date:", triggerDate);
70
+ * };
71
+ */
47
72
  export type SelectHandler<
48
73
  T extends { mode?: Mode | undefined; required?: boolean | undefined }
49
74
  > = T extends {
@@ -30,16 +30,16 @@ import {
30
30
  /**
31
31
  * Selection modes supported by DayPicker.
32
32
  *
33
- * - `single`: use DayPicker to select single days.
34
- * - `multiple`: allow selecting multiple days.
35
- * - `range`: use DayPicker to select a range of days.
33
+ * - `single`: Select a single day.
34
+ * - `multiple`: Select multiple days.
35
+ * - `range`: Select a range of days.
36
36
  *
37
37
  * @see https://daypicker.dev/docs/selection-modes
38
38
  */
39
39
  export type Mode = "single" | "multiple" | "range";
40
40
 
41
41
  /**
42
- * The components that can be changed using the `components` prop.
42
+ * The components that can be customized using the `components` prop.
43
43
  *
44
44
  * @see https://daypicker.dev/guides/custom-components
45
45
  */
@@ -97,13 +97,13 @@ export type CustomComponents = {
97
97
  WeekNumber: typeof components.WeekNumber;
98
98
  /** Render the header of the week number column. */
99
99
  WeekNumberHeader: typeof components.WeekNumberHeader;
100
- /** Render the dropdown with the months. */
100
+ /** Render the dropdown for selecting months. */
101
101
  MonthsDropdown: typeof components.MonthsDropdown;
102
- /** Render the dropdown with the years. */
102
+ /** Render the dropdown for selecting years. */
103
103
  YearsDropdown: typeof components.YearsDropdown;
104
104
  };
105
105
 
106
- /** Represent a map of formatters used to render localized content. */
106
+ /** Represents a map of formatters used to render localized content. */
107
107
  export type Formatters = {
108
108
  /** Format the caption of a month grid. */
109
109
  formatCaption: typeof formatCaption;
@@ -114,6 +114,8 @@ export type Formatters = {
114
114
  /**
115
115
  * @ignore
116
116
  * @deprecated Use {@link Formatters.formatCaption} instead.
117
+ *
118
+ * **Note:** This formatter will be removed in version 10.0.0.
117
119
  */
118
120
  formatMonthCaption: typeof formatMonthCaption;
119
121
  /** Format the week number. */
@@ -131,7 +133,7 @@ export type Formatters = {
131
133
  formatYearCaption: typeof formatYearCaption;
132
134
  };
133
135
 
134
- /** Map of functions to translate ARIA labels for the relative elements. */
136
+ /** A map of functions to translate ARIA labels for various elements. */
135
137
  export type Labels = {
136
138
  /** The label for the navigation toolbar. */
137
139
  labelNav: typeof labelNav;
@@ -158,57 +160,19 @@ export type Labels = {
158
160
  labelWeekday: typeof labelWeekday;
159
161
  /** The label for the week number. */
160
162
  labelWeekNumber: typeof labelWeekNumber;
161
- /**
162
- * Return the label for the column of the week number.
163
- *
164
- * @since 9.0.0
165
- */
163
+ /** The label for the column of week numbers. */
166
164
  labelWeekNumberHeader: typeof labelWeekNumberHeader;
167
165
  };
168
166
 
169
167
  /**
170
- * A value or a function that matches a specific day.
168
+ * A value or a function that matches specific days.
171
169
  *
172
170
  * @example
173
- * // will always match the day
174
- * const booleanMatcher: Matcher = true;
175
- *
176
- * // will match the today's date
177
- * const dateMatcher: Matcher = new Date();
178
- *
179
- * // will match the days in the array
180
- * const arrayMatcher: Matcher = [
181
- * new Date(2019, 1, 2),
182
- * new Date(2019, 1, 4)
171
+ * // Match weekends and specific holidays
172
+ * const matcher: Matcher = [
173
+ * { dayOfWeek: [0, 6] }, // Weekends
174
+ * { from: new Date(2023, 11, 24), to: new Date(2023, 11, 26) } // Christmas
183
175
  * ];
184
- *
185
- * // will match days after the 2nd of February 2019
186
- * const afterMatcher: DateAfter = { after: new Date(2019, 1, 2) };
187
- *
188
- * // will match days before the 2nd of February 2019 }
189
- * const beforeMatcher: DateBefore = { before: new Date(2019, 1, 2) };
190
- *
191
- * // will match Sundays
192
- * const dayOfWeekMatcher: DayOfWeek = {
193
- * dayOfWeek: 0
194
- * };
195
- *
196
- * // will match the included days, except the two dates
197
- * const intervalMatcher: DateInterval = {
198
- * after: new Date(2019, 1, 2),
199
- * before: new Date(2019, 1, 5)
200
- * };
201
- *
202
- * // will match the included days, including the two dates
203
- * const rangeMatcher: DateRange = {
204
- * from: new Date(2019, 1, 2),
205
- * to: new Date(2019, 1, 5)
206
- * };
207
- *
208
- * // will match when the function return true
209
- * const functionMatcher: Matcher = (day: Date) => {
210
- * return day.getMonth() === 2; // match when month is March
211
- * };
212
176
  */
213
177
  export type Matcher =
214
178
  | boolean
@@ -222,29 +186,29 @@ export type Matcher =
222
186
  | DayOfWeek;
223
187
 
224
188
  /**
225
- * Match a day falling after the specified date, with the date not included.
189
+ * Match a day falling after the specified date (exclusive).
226
190
  *
227
191
  * @example
228
- * // Match days after the 2nd of February 2019
192
+ * // Match days after February 2, 2019
229
193
  * const matcher: DateAfter = { after: new Date(2019, 1, 2) };
230
194
  */
231
195
  export type DateAfter = { after: Date };
232
196
 
233
197
  /**
234
- * Match a day falling before the specified date, with the date not included.
198
+ * Match a day falling before the specified date (exclusive).
235
199
  *
236
200
  * @example
237
- * // Match days before the 2nd of February 2019
201
+ * // Match days before February 2, 2019
238
202
  * const matcher: DateBefore = { before: new Date(2019, 1, 2) };
239
203
  */
240
204
  export type DateBefore = { before: Date };
241
205
 
242
206
  /**
243
- * An interval of dates. Differently from {@link DateRange}, the range ends here
244
- * are not included.
207
+ * An interval of dates. Unlike {@link DateRange}, the range ends are not
208
+ * included.
245
209
  *
246
210
  * @example
247
- * // Match the days between the 2nd and the 5th of February 2019
211
+ * // Match days between February 2 and February 5, 2019
248
212
  * const matcher: DateInterval = {
249
213
  * after: new Date(2019, 1, 2),
250
214
  * before: new Date(2019, 1, 5)
@@ -253,11 +217,10 @@ export type DateBefore = { before: Date };
253
217
  export type DateInterval = { before: Date; after: Date };
254
218
 
255
219
  /**
256
- * A range of dates. The range can be open. Differently from
257
- * {@link DateInterval}, the range ends here are included.
220
+ * A range of dates. Unlike {@link DateInterval}, the range ends are included.
258
221
  *
259
222
  * @example
260
- * // Match the days between the 2nd and the 5th of February 2019
223
+ * // Match days between February 2 and February 5, 2019
261
224
  * const matcher: DateRange = {
262
225
  * from: new Date(2019, 1, 2),
263
226
  * to: new Date(2019, 1, 5)
@@ -266,8 +229,7 @@ export type DateInterval = { before: Date; after: Date };
266
229
  export type DateRange = { from: Date | undefined; to?: Date | undefined };
267
230
 
268
231
  /**
269
- * Match dates being one of the specified days of the week (`0-6`, where `0` is
270
- * Sunday).
232
+ * Match days of the week (`0-6`, where `0` is Sunday).
271
233
  *
272
234
  * @example
273
235
  * // Match Sundays
@@ -330,22 +292,11 @@ export type Styles = {
330
292
  /**
331
293
  * Represents the modifiers that match a specific day in the calendar.
332
294
  *
333
- * - Retrieve modifiers using the {@link OnSelectHandler} via the `onSelect` prop,
334
- * or within custom components using the {@link useDayPicker} hook.
335
- * - Includes built-in modifiers from {@link DayFlag} and {@link SelectionState}.
336
- * - Add custom modifiers using the `modifiers` prop.
337
- *
338
295
  * @example
339
296
  * const modifiers: Modifiers = {
340
- * today: false, // the day is not today
341
- * selected: true, // the day is selected
342
- * disabled: false, // the day is not disabled
343
- * outside: false, // the day is not outside the month
344
- * focused: false, // the day is not focused
345
- *
346
- * weekend: false // custom modifier example for matching a weekend
347
- * booked: true // custom modifier example for matching a booked day
348
- * available: false // custom modifier example for matching an available day
297
+ * today: true, // The day is today
298
+ * selected: false, // The day is not selected
299
+ * weekend: true // Custom modifier for weekends
349
300
  * };
350
301
  *
351
302
  * @see https://daypicker.dev/guides/custom-modifiers
@@ -25,7 +25,17 @@ const queryNavEl = (element: HTMLElement) =>
25
25
  const queryWeekdaysEl = (element: HTMLElement) =>
26
26
  asHtmlElement(element.querySelector("[data-animated-weekdays]"));
27
27
 
28
- /** @private */
28
+ /**
29
+ * Handles animations for transitioning between months in the DayPicker
30
+ * component.
31
+ *
32
+ * @private
33
+ * @param rootElRef - A reference to the root element of the DayPicker
34
+ * component.
35
+ * @param enabled - Whether animations are enabled.
36
+ * @param options - Configuration options for the animation, including class
37
+ * names, months, focused day, and the date utility library.
38
+ */
29
39
  export function useAnimation(
30
40
  rootElRef: React.RefObject<HTMLDivElement | null>,
31
41
  enabled: boolean,
@@ -65,7 +65,15 @@ export interface Calendar {
65
65
  goToDay: (day: CalendarDay) => void;
66
66
  }
67
67
 
68
- /** @private */
68
+ /**
69
+ * Provides the calendar object to work with the calendar in custom components.
70
+ *
71
+ * @private
72
+ * @param props - The DayPicker props related to calendar configuration.
73
+ * @param dateLib - The date utility library instance.
74
+ * @returns The calendar object containing displayed days, weeks, months, and
75
+ * navigation methods.
76
+ */
69
77
  export function useCalendar(
70
78
  props: Pick<
71
79
  DayPickerProps,
@@ -69,15 +69,13 @@ export type DayPickerContext<
69
69
  };
70
70
 
71
71
  /**
72
- * Returns the context to work with `<DayPicker />` inside custom components.
73
- *
74
- * This hook provides access to the DayPicker context, which includes various
75
- * properties and methods to interact with the DayPicker component. It must be
76
- * used within a custom component.
72
+ * Provides access to the DayPicker context, which includes properties and
73
+ * methods to interact with the DayPicker component. This hook must be used
74
+ * within a custom component.
77
75
  *
78
76
  * @template T - Use this type to refine the returned context type with a
79
77
  * specific selection mode.
80
- * @returns {DayPickerContext<T>} The context to work with DayPicker.
78
+ * @returns The context to work with DayPicker.
81
79
  * @throws {Error} If the hook is used outside of a DayPicker provider.
82
80
  * @group Hooks
83
81
  * @see https://daypicker.dev/guides/custom-components
package/src/useFocus.ts CHANGED
@@ -28,7 +28,20 @@ export type UseFocus = {
28
28
  moveFocus: (moveBy: MoveFocusBy, moveDir: MoveFocusDir) => void;
29
29
  };
30
30
 
31
- /** @private */
31
+ /**
32
+ * Manages focus behavior for the DayPicker component, including setting,
33
+ * moving, and blurring focus on calendar days.
34
+ *
35
+ * @template T - The type of DayPicker props.
36
+ * @param props - The DayPicker props.
37
+ * @param calendar - The calendar object containing the displayed days and
38
+ * months.
39
+ * @param getModifiers - A function to retrieve modifiers for a given day.
40
+ * @param isSelected - A function to check if a date is selected.
41
+ * @param dateLib - The date utility library instance.
42
+ * @returns An object containing focus-related methods and the currently focused
43
+ * day.
44
+ */
32
45
  export function useFocus<T extends DayPickerProps>(
33
46
  props: T,
34
47
  calendar: Calendar,
@@ -5,6 +5,16 @@ import { useSingle } from "./selection/useSingle.js";
5
5
  import type { DayPickerProps } from "./types/index.js";
6
6
  import { Selection } from "./types/selection.js";
7
7
 
8
+ /**
9
+ * Determines the appropriate selection hook to use based on the selection mode
10
+ * and returns the corresponding selection object.
11
+ *
12
+ * @template T - The type of DayPicker props.
13
+ * @param props - The DayPicker props.
14
+ * @param dateLib - The date utility library instance.
15
+ * @returns The selection object for the specified mode, or `undefined` if no
16
+ * mode is set.
17
+ */
8
18
  export function useSelection<T extends DayPickerProps>(
9
19
  props: T,
10
20
  dateLib: DateLib
package/src/utc.tsx CHANGED
@@ -5,6 +5,12 @@ import {
5
5
  type DayPickerProps
6
6
  } from "./index.js";
7
7
 
8
+ /**
9
+ * @deprecated Use the `timeZone` prop instead of this function. This function
10
+ * wraps the DayPicker component and sets the `timeZone` to "utc".
11
+ * @param props - The props to pass to the DayPicker component.
12
+ * @returns The DayPicker component with the `timeZone` set to "utc".
13
+ */
8
14
  export function DayPicker(props: DayPickerProps) {
9
15
  return <DayPickerComponent timeZone="utc" {...props} />;
10
16
  }
@@ -2,22 +2,24 @@ import { defaultDateLib, type DateLib } from "../classes/DateLib.js";
2
2
  import type { DateRange } from "../types/index.js";
3
3
 
4
4
  /**
5
- * Add a day to an existing range.
6
- *
7
- * The returned range takes in account the `undefined` values and if the added
8
- * day is already present in the range.
5
+ * Adds a date to an existing range, considering constraints like minimum and
6
+ * maximum range size.
9
7
  *
8
+ * @param date - The date to add to the range.
9
+ * @param initialRange - The initial range to which the date will be added.
10
+ * @param min - The minimum number of days in the range.
11
+ * @param max - The maximum number of days in the range.
12
+ * @param required - Whether the range must always include at least one date.
13
+ * @param dateLib - The date utility library instance.
14
+ * @returns The updated date range, or `undefined` if the range is cleared.
10
15
  * @group Utilities
11
16
  */
12
17
  export function addToRange(
13
- /** The date to add to the range. */
14
18
  date: Date,
15
- /** The range where to add `date`. */
16
19
  initialRange: DateRange | undefined,
17
20
  min = 0,
18
21
  max = 0,
19
22
  required = false,
20
- /** @ignore */
21
23
  dateLib: DateLib = defaultDateLib
22
24
  ): DateRange | undefined {
23
25
  const { from, to } = initialRange || {};
@@ -12,22 +12,12 @@ import {
12
12
  } from "./typeguards.js";
13
13
 
14
14
  /**
15
- * Returns whether a day matches against at least one of the given
16
- * {@link Matcher}.
17
- *
18
- * ```tsx
19
- * const date = new Date(2022, 5, 19);
20
- * const matcher1: DateRange = {
21
- * from: new Date(2021, 12, 21),
22
- * to: new Date(2021, 12, 30)
23
- * };
24
- * const matcher2: DateRange = {
25
- * from: new Date(2022, 5, 1),
26
- * to: new Date(2022, 5, 23)
27
- * };
28
- * dateMatchModifiers(date, [matcher1, matcher2]); // true, since day is in the matcher1 range.
29
- * ```
15
+ * Checks if a given date matches at least one of the specified {@link Matcher}.
30
16
  *
17
+ * @param date - The date to check.
18
+ * @param matchers - The matchers to check against.
19
+ * @param dateLib - The date utility library instance.
20
+ * @returns `true` if the date matches any of the matchers, otherwise `false`.
31
21
  * @group Utilities
32
22
  */
33
23
  export function dateMatchModifiers(