react-day-picker 9.0.0-beta.5 → 9.0.0-rc.2

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 (701) hide show
  1. package/README.md +7 -6
  2. package/dist/cjs/DayPicker.d.ts +4 -7
  3. package/dist/cjs/DayPicker.js +4 -7
  4. package/dist/cjs/DayPicker.js.map +1 -1
  5. package/dist/cjs/UI.d.ts +25 -14
  6. package/dist/cjs/UI.js +35 -23
  7. package/dist/cjs/UI.js.map +1 -1
  8. package/dist/cjs/classes/CalendarDay.d.ts +4 -1
  9. package/dist/cjs/classes/CalendarDay.js +6 -6
  10. package/dist/cjs/classes/CalendarDay.js.map +1 -1
  11. package/dist/cjs/components/Button.d.ts +2 -2
  12. package/dist/cjs/components/Button.js +1 -1
  13. package/dist/cjs/components/Button.js.map +1 -1
  14. package/dist/cjs/components/Calendar.d.ts +1 -1
  15. package/dist/cjs/components/Calendar.js +7 -8
  16. package/dist/cjs/components/Calendar.js.map +1 -1
  17. package/dist/cjs/components/Chevron.d.ts +1 -1
  18. package/dist/cjs/components/Chevron.js +5 -5
  19. package/dist/cjs/components/Chevron.js.map +1 -1
  20. package/dist/cjs/components/Day.d.ts +3 -3
  21. package/dist/cjs/components/Day.js +1 -1
  22. package/dist/cjs/components/DayDate.d.ts +13 -3
  23. package/dist/cjs/components/DayDate.js +7 -2
  24. package/dist/cjs/components/DayDate.js.map +1 -1
  25. package/dist/cjs/components/DayWrapper.js +38 -22
  26. package/dist/cjs/components/DayWrapper.js.map +1 -1
  27. package/dist/cjs/components/Dropdown.d.ts +3 -4
  28. package/dist/cjs/components/Dropdown.js +3 -3
  29. package/dist/cjs/components/Dropdown.js.map +1 -1
  30. package/dist/cjs/components/DropdownNav.d.ts +1 -1
  31. package/dist/cjs/components/DropdownNav.js +5 -5
  32. package/dist/cjs/components/DropdownNav.js.map +1 -1
  33. package/dist/cjs/components/Footer.d.ts +2 -2
  34. package/dist/cjs/components/Footer.js +1 -1
  35. package/dist/cjs/components/Footer.js.map +1 -1
  36. package/dist/cjs/components/Month.d.ts +1 -1
  37. package/dist/cjs/components/Month.js +7 -27
  38. package/dist/cjs/components/Month.js.map +1 -1
  39. package/dist/cjs/components/MonthCaption.d.ts +1 -1
  40. package/dist/cjs/components/MonthCaption.js +4 -4
  41. package/dist/cjs/components/MonthCaption.js.map +1 -1
  42. package/dist/cjs/components/Months.d.ts +1 -1
  43. package/dist/cjs/components/Months.js +1 -1
  44. package/dist/cjs/components/MonthsDropdown.d.ts +1 -1
  45. package/dist/cjs/components/MonthsDropdown.js +6 -9
  46. package/dist/cjs/components/MonthsDropdown.js.map +1 -1
  47. package/dist/cjs/components/Nav.d.ts +1 -1
  48. package/dist/cjs/components/Nav.js +4 -5
  49. package/dist/cjs/components/Nav.js.map +1 -1
  50. package/dist/cjs/components/Option.d.ts +1 -1
  51. package/dist/cjs/components/Option.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 +1 -1
  55. package/dist/cjs/components/Week.js +4 -5
  56. package/dist/cjs/components/Week.js.map +1 -1
  57. package/dist/cjs/components/WeekNumber.d.ts +1 -1
  58. package/dist/cjs/components/WeekNumber.js +5 -5
  59. package/dist/cjs/components/WeekNumber.js.map +1 -1
  60. package/dist/cjs/components/Weekday.d.ts +1 -1
  61. package/dist/cjs/components/Weekday.js +7 -5
  62. package/dist/cjs/components/Weekday.js.map +1 -1
  63. package/dist/cjs/components/Weekdays.d.ts +1 -1
  64. package/dist/cjs/components/Weekdays.js +4 -4
  65. package/dist/cjs/components/Weekdays.js.map +1 -1
  66. package/dist/cjs/components/YearsDropdown.d.ts +1 -1
  67. package/dist/cjs/components/YearsDropdown.js +6 -9
  68. package/dist/cjs/components/YearsDropdown.js.map +1 -1
  69. package/dist/cjs/contexts/index.d.ts +4 -0
  70. package/dist/cjs/contexts/index.js +21 -0
  71. package/dist/cjs/contexts/index.js.map +1 -0
  72. package/dist/cjs/contexts/providers.d.ts +9 -0
  73. package/dist/cjs/contexts/providers.js +33 -0
  74. package/dist/cjs/contexts/providers.js.map +1 -0
  75. package/dist/cjs/contexts/{calendar.d.ts → useCalendar.d.ts} +20 -33
  76. package/dist/cjs/contexts/useCalendar.js +154 -0
  77. package/dist/cjs/contexts/useCalendar.js.map +1 -0
  78. package/dist/{esm/contexts/focus.d.ts → cjs/contexts/useFocus.d.ts} +23 -18
  79. package/dist/cjs/contexts/{focus.js → useFocus.js} +41 -34
  80. package/dist/cjs/contexts/useFocus.js.map +1 -0
  81. package/dist/cjs/contexts/useModifiers.d.ts +24 -0
  82. package/dist/cjs/contexts/useModifiers.js +187 -0
  83. package/dist/cjs/contexts/useModifiers.js.map +1 -0
  84. package/dist/cjs/contexts/useProps.d.ts +45 -0
  85. package/dist/cjs/contexts/useProps.js +98 -0
  86. package/dist/cjs/contexts/useProps.js.map +1 -0
  87. package/dist/cjs/formatters/formatCaption.d.ts +4 -2
  88. package/dist/cjs/formatters/formatCaption.js +4 -3
  89. package/dist/cjs/formatters/formatCaption.js.map +1 -1
  90. package/dist/cjs/formatters/formatDay.d.ts +3 -2
  91. package/dist/cjs/formatters/formatDay.js +3 -3
  92. package/dist/cjs/formatters/formatDay.js.map +1 -1
  93. package/dist/cjs/formatters/formatMonthDropdown.d.ts +5 -2
  94. package/dist/cjs/formatters/formatMonthDropdown.js +8 -3
  95. package/dist/cjs/formatters/formatMonthDropdown.js.map +1 -1
  96. package/dist/cjs/formatters/formatWeekNumber.d.ts +1 -2
  97. package/dist/cjs/formatters/formatWeekNumber.js +1 -3
  98. package/dist/cjs/formatters/formatWeekNumber.js.map +1 -1
  99. package/dist/cjs/formatters/formatWeekdayName.d.ts +3 -2
  100. package/dist/cjs/formatters/formatWeekdayName.js +3 -3
  101. package/dist/cjs/formatters/formatWeekdayName.js.map +1 -1
  102. package/dist/cjs/formatters/formatYearDropdown.d.ts +1 -0
  103. package/dist/cjs/formatters/formatYearDropdown.js +1 -0
  104. package/dist/cjs/formatters/formatYearDropdown.js.map +1 -1
  105. package/dist/cjs/helpers/debounce.js.map +1 -1
  106. package/dist/cjs/helpers/getClassNamesForModifiers.d.ts +2 -2
  107. package/dist/cjs/helpers/getClassNamesForModifiers.js +7 -4
  108. package/dist/cjs/helpers/getClassNamesForModifiers.js.map +1 -1
  109. package/dist/cjs/helpers/getDataAttributes.d.ts +2 -2
  110. package/dist/cjs/helpers/getDataAttributes.js.map +1 -1
  111. package/dist/cjs/helpers/getDates.d.ts +3 -14
  112. package/dist/cjs/helpers/getDates.js +13 -32
  113. package/dist/cjs/helpers/getDates.js.map +1 -1
  114. package/dist/cjs/helpers/getDefaultClassNames.js +7 -3
  115. package/dist/cjs/helpers/getDefaultClassNames.js.map +1 -1
  116. package/dist/cjs/helpers/getDisplayMonths.d.ts +2 -5
  117. package/dist/cjs/helpers/getDisplayMonths.js +4 -6
  118. package/dist/cjs/helpers/getDisplayMonths.js.map +1 -1
  119. package/dist/cjs/helpers/getDropdownMonths.d.ts +2 -5
  120. package/dist/cjs/helpers/getDropdownMonths.js +12 -16
  121. package/dist/cjs/helpers/getDropdownMonths.js.map +1 -1
  122. package/dist/cjs/helpers/getDropdownYears.d.ts +2 -5
  123. package/dist/cjs/helpers/getDropdownYears.js +12 -19
  124. package/dist/cjs/helpers/getDropdownYears.js.map +1 -1
  125. package/dist/cjs/helpers/getFormatters.d.ts +2 -2
  126. package/dist/cjs/helpers/getFormatters.js.map +1 -1
  127. package/dist/cjs/helpers/getInitialMonth.d.ts +3 -0
  128. package/dist/cjs/helpers/getInitialMonth.js +21 -0
  129. package/dist/cjs/helpers/getInitialMonth.js.map +1 -0
  130. package/dist/cjs/helpers/getMonths.d.ts +4 -2
  131. package/dist/cjs/helpers/getMonths.js +24 -29
  132. package/dist/cjs/helpers/getMonths.js.map +1 -1
  133. package/dist/cjs/helpers/getNextFocus.d.ts +4 -5
  134. package/dist/cjs/helpers/getNextFocus.js +5 -3
  135. package/dist/cjs/helpers/getNextFocus.js.map +1 -1
  136. package/dist/cjs/helpers/getNextMonth.d.ts +2 -8
  137. package/dist/cjs/helpers/getNextMonth.js +9 -11
  138. package/dist/cjs/helpers/getNextMonth.js.map +1 -1
  139. package/dist/cjs/helpers/getPossibleFocusDate.d.ts +3 -3
  140. package/dist/cjs/helpers/getPossibleFocusDate.js +10 -19
  141. package/dist/cjs/helpers/getPossibleFocusDate.js.map +1 -1
  142. package/dist/cjs/helpers/getPreviousMonth.d.ts +2 -8
  143. package/dist/cjs/helpers/getPreviousMonth.js +9 -11
  144. package/dist/cjs/helpers/getPreviousMonth.js.map +1 -1
  145. package/dist/cjs/helpers/getStartEndMonths.d.ts +2 -2
  146. package/dist/cjs/helpers/getStartEndMonths.js +11 -12
  147. package/dist/cjs/helpers/getStartEndMonths.js.map +1 -1
  148. package/dist/cjs/helpers/getStyleForModifiers.d.ts +2 -2
  149. package/dist/cjs/helpers/getStyleForModifiers.js.map +1 -1
  150. package/dist/cjs/helpers/getWeekdays.d.ts +5 -4
  151. package/dist/cjs/helpers/getWeekdays.js +5 -7
  152. package/dist/cjs/helpers/getWeekdays.js.map +1 -1
  153. package/dist/cjs/index.d.ts +4 -7
  154. package/dist/cjs/index.js +4 -7
  155. package/dist/cjs/index.js.map +1 -1
  156. package/dist/cjs/jalali.d.ts +3 -0
  157. package/dist/cjs/jalali.js +37 -0
  158. package/dist/cjs/jalali.js.map +1 -0
  159. package/dist/cjs/labels/labelCaption.d.ts +3 -2
  160. package/dist/cjs/labels/labelCaption.js +2 -1
  161. package/dist/cjs/labels/labelCaption.js.map +1 -1
  162. package/dist/cjs/labels/labelDay.d.ts +4 -3
  163. package/dist/cjs/labels/labelDay.js +2 -1
  164. package/dist/cjs/labels/labelDay.js.map +1 -1
  165. package/dist/cjs/labels/labelGrid.d.ts +3 -2
  166. package/dist/cjs/labels/labelGrid.js +3 -3
  167. package/dist/cjs/labels/labelGrid.js.map +1 -1
  168. package/dist/cjs/labels/labelMonthDropdown.d.ts +2 -2
  169. package/dist/cjs/labels/labelMonthDropdown.js.map +1 -1
  170. package/dist/cjs/labels/labelNext.d.ts +2 -2
  171. package/dist/cjs/labels/labelNext.js.map +1 -1
  172. package/dist/cjs/labels/labelPrevious.d.ts +2 -2
  173. package/dist/cjs/labels/labelPrevious.js.map +1 -1
  174. package/dist/cjs/labels/labelWeekNumber.d.ts +2 -2
  175. package/dist/cjs/labels/labelWeekNumber.js.map +1 -1
  176. package/dist/cjs/labels/labelWeekNumberHeader.d.ts +2 -2
  177. package/dist/cjs/labels/labelWeekNumberHeader.js.map +1 -1
  178. package/dist/cjs/labels/labelWeekday.d.ts +3 -2
  179. package/dist/cjs/labels/labelWeekday.js +3 -3
  180. package/dist/cjs/labels/labelWeekday.js.map +1 -1
  181. package/dist/cjs/labels/labelYearDropdown.d.ts +2 -2
  182. package/dist/cjs/labels/labelYearDropdown.js.map +1 -1
  183. package/dist/cjs/lib/dateLib.d.ts +70 -0
  184. package/dist/cjs/lib/dateLib.js +67 -0
  185. package/dist/cjs/lib/dateLib.js.map +1 -0
  186. package/dist/cjs/lib/index.d.ts +1 -0
  187. package/dist/cjs/lib/index.js +18 -0
  188. package/dist/cjs/lib/index.js.map +1 -0
  189. package/dist/cjs/lib/locales.d.ts +1 -0
  190. package/dist/cjs/lib/locales.js +6 -0
  191. package/dist/cjs/lib/locales.js.map +1 -0
  192. package/dist/cjs/selection/index.d.ts +3 -0
  193. package/dist/cjs/selection/index.js +20 -0
  194. package/dist/cjs/selection/index.js.map +1 -0
  195. package/dist/cjs/selection/useMulti.d.ts +25 -0
  196. package/dist/cjs/selection/useMulti.js +86 -0
  197. package/dist/cjs/selection/useMulti.js.map +1 -0
  198. package/dist/cjs/selection/useRange.d.ts +25 -0
  199. package/dist/cjs/selection/useRange.js +86 -0
  200. package/dist/cjs/selection/useRange.js.map +1 -0
  201. package/dist/cjs/selection/useSingle.d.ts +23 -0
  202. package/dist/cjs/selection/useSingle.js +63 -0
  203. package/dist/cjs/selection/useSingle.js.map +1 -0
  204. package/dist/{esm/types-deprecated.d.ts → cjs/types/deprecated.d.ts} +23 -22
  205. package/dist/cjs/{types-deprecated.js → types/deprecated.js} +12 -12
  206. package/dist/cjs/types/deprecated.js.map +1 -0
  207. package/dist/cjs/types/index.d.ts +3 -0
  208. package/dist/cjs/types/index.js +20 -0
  209. package/dist/cjs/types/index.js.map +1 -0
  210. package/dist/cjs/types/props.d.ts +376 -0
  211. package/dist/cjs/{types.js → types/props.js} +1 -1
  212. package/dist/cjs/types/props.js.map +1 -0
  213. package/dist/cjs/types/shared.d.ts +218 -0
  214. package/dist/cjs/types/shared.js +3 -0
  215. package/dist/cjs/types/shared.js.map +1 -0
  216. package/dist/cjs/utc.d.ts +3 -0
  217. package/dist/cjs/utc.js +14 -0
  218. package/dist/cjs/utc.js.map +1 -0
  219. package/dist/cjs/utils/addToRange.d.ts +2 -2
  220. package/dist/cjs/utils/addToRange.js +12 -13
  221. package/dist/cjs/utils/addToRange.js.map +1 -1
  222. package/dist/cjs/utils/dateMatchModifiers.d.ts +2 -2
  223. package/dist/cjs/utils/dateMatchModifiers.js +12 -14
  224. package/dist/cjs/utils/dateMatchModifiers.js.map +1 -1
  225. package/dist/cjs/utils/isDateInRange.d.ts +2 -2
  226. package/dist/cjs/utils/isDateInRange.js +8 -8
  227. package/dist/cjs/utils/isDateInRange.js.map +1 -1
  228. package/dist/cjs/utils/typeguards.d.ts +34 -1
  229. package/dist/cjs/utils/typeguards.js +43 -1
  230. package/dist/cjs/utils/typeguards.js.map +1 -1
  231. package/dist/esm/DayPicker.d.ts +4 -7
  232. package/dist/esm/DayPicker.js +3 -6
  233. package/dist/esm/DayPicker.js.map +1 -1
  234. package/dist/esm/UI.d.ts +25 -14
  235. package/dist/esm/UI.js +34 -22
  236. package/dist/esm/UI.js.map +1 -1
  237. package/dist/esm/classes/CalendarDay.d.ts +4 -1
  238. package/dist/esm/classes/CalendarDay.js +6 -6
  239. package/dist/esm/classes/CalendarDay.js.map +1 -1
  240. package/dist/esm/components/Button.d.ts +2 -2
  241. package/dist/esm/components/Button.js +1 -1
  242. package/dist/esm/components/Button.js.map +1 -1
  243. package/dist/esm/components/Calendar.d.ts +1 -1
  244. package/dist/esm/components/Calendar.js +5 -6
  245. package/dist/esm/components/Calendar.js.map +1 -1
  246. package/dist/esm/components/Chevron.d.ts +1 -1
  247. package/dist/esm/components/Chevron.js +4 -4
  248. package/dist/esm/components/Chevron.js.map +1 -1
  249. package/dist/esm/components/Day.d.ts +3 -3
  250. package/dist/esm/components/Day.js +1 -1
  251. package/dist/esm/components/DayDate.d.ts +13 -3
  252. package/dist/esm/components/DayDate.js +6 -1
  253. package/dist/esm/components/DayDate.js.map +1 -1
  254. package/dist/esm/components/DayWrapper.js +37 -21
  255. package/dist/esm/components/DayWrapper.js.map +1 -1
  256. package/dist/esm/components/Dropdown.d.ts +3 -4
  257. package/dist/esm/components/Dropdown.js +2 -2
  258. package/dist/esm/components/Dropdown.js.map +1 -1
  259. package/dist/esm/components/DropdownNav.d.ts +1 -1
  260. package/dist/esm/components/DropdownNav.js +5 -5
  261. package/dist/esm/components/DropdownNav.js.map +1 -1
  262. package/dist/esm/components/Footer.d.ts +2 -2
  263. package/dist/esm/components/Footer.js +1 -1
  264. package/dist/esm/components/Footer.js.map +1 -1
  265. package/dist/esm/components/Month.d.ts +1 -1
  266. package/dist/esm/components/Month.js +4 -4
  267. package/dist/esm/components/Month.js.map +1 -1
  268. package/dist/esm/components/MonthCaption.d.ts +1 -1
  269. package/dist/esm/components/MonthCaption.js +4 -4
  270. package/dist/esm/components/MonthCaption.js.map +1 -1
  271. package/dist/esm/components/Months.d.ts +1 -1
  272. package/dist/esm/components/Months.js +1 -1
  273. package/dist/esm/components/MonthsDropdown.d.ts +1 -1
  274. package/dist/esm/components/MonthsDropdown.js +5 -8
  275. package/dist/esm/components/MonthsDropdown.js.map +1 -1
  276. package/dist/esm/components/Nav.d.ts +1 -1
  277. package/dist/esm/components/Nav.js +2 -3
  278. package/dist/esm/components/Nav.js.map +1 -1
  279. package/dist/esm/components/Option.d.ts +1 -1
  280. package/dist/esm/components/Option.js +1 -1
  281. package/dist/esm/components/Select.d.ts +1 -1
  282. package/dist/esm/components/Select.js +1 -1
  283. package/dist/esm/components/Week.d.ts +1 -1
  284. package/dist/esm/components/Week.js +3 -4
  285. package/dist/esm/components/Week.js.map +1 -1
  286. package/dist/esm/components/WeekNumber.d.ts +1 -1
  287. package/dist/esm/components/WeekNumber.js +4 -4
  288. package/dist/esm/components/WeekNumber.js.map +1 -1
  289. package/dist/esm/components/Weekday.d.ts +1 -1
  290. package/dist/esm/components/Weekday.js +7 -5
  291. package/dist/esm/components/Weekday.js.map +1 -1
  292. package/dist/esm/components/Weekdays.d.ts +1 -1
  293. package/dist/esm/components/Weekdays.js +4 -4
  294. package/dist/esm/components/Weekdays.js.map +1 -1
  295. package/dist/esm/components/YearsDropdown.d.ts +1 -1
  296. package/dist/esm/components/YearsDropdown.js +5 -8
  297. package/dist/esm/components/YearsDropdown.js.map +1 -1
  298. package/dist/esm/contexts/index.d.ts +4 -0
  299. package/dist/esm/contexts/index.js +5 -0
  300. package/dist/esm/contexts/index.js.map +1 -0
  301. package/dist/esm/contexts/providers.d.ts +9 -0
  302. package/dist/esm/contexts/providers.js +26 -0
  303. package/dist/esm/contexts/providers.js.map +1 -0
  304. package/dist/esm/contexts/{calendar.d.ts → useCalendar.d.ts} +20 -33
  305. package/dist/esm/contexts/{calendar.js → useCalendar.js} +45 -37
  306. package/dist/esm/contexts/useCalendar.js.map +1 -0
  307. package/dist/{cjs/contexts/focus.d.ts → esm/contexts/useFocus.d.ts} +23 -18
  308. package/dist/esm/contexts/{focus.js → useFocus.js} +40 -33
  309. package/dist/esm/contexts/useFocus.js.map +1 -0
  310. package/dist/esm/contexts/useModifiers.d.ts +24 -0
  311. package/dist/esm/contexts/useModifiers.js +159 -0
  312. package/dist/esm/contexts/useModifiers.js.map +1 -0
  313. package/dist/esm/contexts/useProps.d.ts +45 -0
  314. package/dist/esm/contexts/useProps.js +67 -0
  315. package/dist/esm/contexts/useProps.js.map +1 -0
  316. package/dist/esm/formatters/formatCaption.d.ts +4 -2
  317. package/dist/esm/formatters/formatCaption.js +4 -3
  318. package/dist/esm/formatters/formatCaption.js.map +1 -1
  319. package/dist/esm/formatters/formatDay.d.ts +3 -2
  320. package/dist/esm/formatters/formatDay.js +3 -3
  321. package/dist/esm/formatters/formatDay.js.map +1 -1
  322. package/dist/esm/formatters/formatMonthDropdown.d.ts +5 -2
  323. package/dist/esm/formatters/formatMonthDropdown.js +8 -3
  324. package/dist/esm/formatters/formatMonthDropdown.js.map +1 -1
  325. package/dist/esm/formatters/formatWeekNumber.d.ts +1 -2
  326. package/dist/esm/formatters/formatWeekNumber.js +1 -3
  327. package/dist/esm/formatters/formatWeekNumber.js.map +1 -1
  328. package/dist/esm/formatters/formatWeekdayName.d.ts +3 -2
  329. package/dist/esm/formatters/formatWeekdayName.js +3 -3
  330. package/dist/esm/formatters/formatWeekdayName.js.map +1 -1
  331. package/dist/esm/formatters/formatYearDropdown.d.ts +1 -0
  332. package/dist/esm/formatters/formatYearDropdown.js +1 -0
  333. package/dist/esm/formatters/formatYearDropdown.js.map +1 -1
  334. package/dist/esm/helpers/debounce.js.map +1 -1
  335. package/dist/esm/helpers/getClassNamesForModifiers.d.ts +2 -2
  336. package/dist/esm/helpers/getClassNamesForModifiers.js +8 -5
  337. package/dist/esm/helpers/getClassNamesForModifiers.js.map +1 -1
  338. package/dist/esm/helpers/getDataAttributes.d.ts +2 -2
  339. package/dist/esm/helpers/getDataAttributes.js.map +1 -1
  340. package/dist/esm/helpers/getDates.d.ts +3 -14
  341. package/dist/esm/helpers/getDates.js +4 -23
  342. package/dist/esm/helpers/getDates.js.map +1 -1
  343. package/dist/esm/helpers/getDefaultClassNames.js +8 -4
  344. package/dist/esm/helpers/getDefaultClassNames.js.map +1 -1
  345. package/dist/esm/helpers/getDisplayMonths.d.ts +2 -5
  346. package/dist/esm/helpers/getDisplayMonths.js +4 -6
  347. package/dist/esm/helpers/getDisplayMonths.js.map +1 -1
  348. package/dist/esm/helpers/getDropdownMonths.d.ts +2 -5
  349. package/dist/esm/helpers/getDropdownMonths.js +10 -14
  350. package/dist/esm/helpers/getDropdownMonths.js.map +1 -1
  351. package/dist/esm/helpers/getDropdownYears.d.ts +2 -5
  352. package/dist/esm/helpers/getDropdownYears.js +10 -17
  353. package/dist/esm/helpers/getDropdownYears.js.map +1 -1
  354. package/dist/esm/helpers/getFormatters.d.ts +2 -2
  355. package/dist/esm/helpers/getFormatters.js.map +1 -1
  356. package/dist/esm/helpers/getInitialMonth.d.ts +3 -0
  357. package/dist/esm/helpers/{getStartMonth.js → getInitialMonth.js} +4 -6
  358. package/dist/esm/helpers/getInitialMonth.js.map +1 -0
  359. package/dist/esm/helpers/getMonths.d.ts +4 -2
  360. package/dist/esm/helpers/getMonths.js +17 -22
  361. package/dist/esm/helpers/getMonths.js.map +1 -1
  362. package/dist/esm/helpers/getNextFocus.d.ts +4 -5
  363. package/dist/esm/helpers/getNextFocus.js +5 -3
  364. package/dist/esm/helpers/getNextFocus.js.map +1 -1
  365. package/dist/esm/helpers/getNextMonth.d.ts +2 -8
  366. package/dist/esm/helpers/getNextMonth.js +7 -9
  367. package/dist/esm/helpers/getNextMonth.js.map +1 -1
  368. package/dist/esm/helpers/getPossibleFocusDate.d.ts +3 -3
  369. package/dist/esm/helpers/getPossibleFocusDate.js +1 -10
  370. package/dist/esm/helpers/getPossibleFocusDate.js.map +1 -1
  371. package/dist/esm/helpers/getPreviousMonth.d.ts +2 -8
  372. package/dist/esm/helpers/getPreviousMonth.js +6 -8
  373. package/dist/esm/helpers/getPreviousMonth.js.map +1 -1
  374. package/dist/esm/helpers/getStartEndMonths.d.ts +2 -2
  375. package/dist/esm/helpers/getStartEndMonths.js +5 -6
  376. package/dist/esm/helpers/getStartEndMonths.js.map +1 -1
  377. package/dist/esm/helpers/getStyleForModifiers.d.ts +2 -2
  378. package/dist/esm/helpers/getStyleForModifiers.js.map +1 -1
  379. package/dist/esm/helpers/getWeekdays.d.ts +5 -4
  380. package/dist/esm/helpers/getWeekdays.js +5 -7
  381. package/dist/esm/helpers/getWeekdays.js.map +1 -1
  382. package/dist/esm/index.d.ts +4 -7
  383. package/dist/esm/index.js +4 -7
  384. package/dist/esm/index.js.map +1 -1
  385. package/dist/esm/jalali.d.ts +3 -0
  386. package/dist/esm/jalali.js +7 -0
  387. package/dist/esm/jalali.js.map +1 -0
  388. package/dist/esm/labels/labelCaption.d.ts +3 -2
  389. package/dist/esm/labels/labelCaption.js +2 -1
  390. package/dist/esm/labels/labelCaption.js.map +1 -1
  391. package/dist/esm/labels/labelDay.d.ts +4 -3
  392. package/dist/esm/labels/labelDay.js +2 -1
  393. package/dist/esm/labels/labelDay.js.map +1 -1
  394. package/dist/esm/labels/labelGrid.d.ts +3 -2
  395. package/dist/esm/labels/labelGrid.js +3 -3
  396. package/dist/esm/labels/labelGrid.js.map +1 -1
  397. package/dist/esm/labels/labelMonthDropdown.d.ts +2 -2
  398. package/dist/esm/labels/labelMonthDropdown.js.map +1 -1
  399. package/dist/esm/labels/labelNext.d.ts +2 -2
  400. package/dist/esm/labels/labelNext.js.map +1 -1
  401. package/dist/esm/labels/labelPrevious.d.ts +2 -2
  402. package/dist/esm/labels/labelPrevious.js.map +1 -1
  403. package/dist/esm/labels/labelWeekNumber.d.ts +2 -2
  404. package/dist/esm/labels/labelWeekNumber.js.map +1 -1
  405. package/dist/esm/labels/labelWeekNumberHeader.d.ts +2 -2
  406. package/dist/esm/labels/labelWeekNumberHeader.js.map +1 -1
  407. package/dist/esm/labels/labelWeekday.d.ts +3 -2
  408. package/dist/esm/labels/labelWeekday.js +3 -3
  409. package/dist/esm/labels/labelWeekday.js.map +1 -1
  410. package/dist/esm/labels/labelYearDropdown.d.ts +2 -2
  411. package/dist/esm/labels/labelYearDropdown.js.map +1 -1
  412. package/dist/esm/lib/dateLib.d.ts +70 -0
  413. package/dist/esm/lib/dateLib.js +64 -0
  414. package/dist/esm/lib/dateLib.js.map +1 -0
  415. package/dist/esm/lib/index.d.ts +1 -0
  416. package/dist/esm/lib/index.js +2 -0
  417. package/dist/esm/lib/index.js.map +1 -0
  418. package/dist/esm/lib/locales.d.ts +1 -0
  419. package/dist/esm/lib/locales.js +2 -0
  420. package/dist/esm/lib/locales.js.map +1 -0
  421. package/dist/esm/selection/index.d.ts +3 -0
  422. package/dist/esm/selection/index.js +4 -0
  423. package/dist/esm/selection/index.js.map +1 -0
  424. package/dist/esm/selection/useMulti.d.ts +25 -0
  425. package/dist/esm/selection/useMulti.js +78 -0
  426. package/dist/esm/selection/useMulti.js.map +1 -0
  427. package/dist/esm/selection/useRange.d.ts +25 -0
  428. package/dist/esm/selection/useRange.js +78 -0
  429. package/dist/esm/selection/useRange.js.map +1 -0
  430. package/dist/esm/selection/useSingle.d.ts +23 -0
  431. package/dist/esm/selection/useSingle.js +55 -0
  432. package/dist/esm/selection/useSingle.js.map +1 -0
  433. package/dist/{cjs/types-deprecated.d.ts → esm/types/deprecated.d.ts} +23 -22
  434. package/dist/esm/{types-deprecated.js → types/deprecated.js} +10 -10
  435. package/dist/esm/types/deprecated.js.map +1 -0
  436. package/dist/esm/types/index.d.ts +3 -0
  437. package/dist/esm/types/index.js +4 -0
  438. package/dist/esm/types/index.js.map +1 -0
  439. package/dist/esm/types/props.d.ts +376 -0
  440. package/dist/esm/types/props.js +2 -0
  441. package/dist/esm/types/props.js.map +1 -0
  442. package/dist/esm/types/shared.d.ts +218 -0
  443. package/dist/esm/types/shared.js +2 -0
  444. package/dist/esm/types/shared.js.map +1 -0
  445. package/dist/esm/utc.d.ts +3 -0
  446. package/dist/esm/utc.js +7 -0
  447. package/dist/esm/utc.js.map +1 -0
  448. package/dist/esm/utils/addToRange.d.ts +2 -2
  449. package/dist/esm/utils/addToRange.js +5 -6
  450. package/dist/esm/utils/addToRange.js.map +1 -1
  451. package/dist/esm/utils/dateMatchModifiers.d.ts +2 -2
  452. package/dist/esm/utils/dateMatchModifiers.js +6 -8
  453. package/dist/esm/utils/dateMatchModifiers.js.map +1 -1
  454. package/dist/esm/utils/isDateInRange.d.ts +2 -2
  455. package/dist/esm/utils/isDateInRange.js +3 -3
  456. package/dist/esm/utils/isDateInRange.js.map +1 -1
  457. package/dist/esm/utils/typeguards.d.ts +34 -1
  458. package/dist/esm/utils/typeguards.js +39 -0
  459. package/dist/esm/utils/typeguards.js.map +1 -1
  460. package/examples/Controlled.test.tsx +4 -3
  461. package/examples/CssModules.tsx +1 -1
  462. package/examples/CustomCaption.tsx +5 -1
  463. package/examples/CustomDayDate.test.tsx +3 -2
  464. package/examples/CustomDayDate.tsx +5 -6
  465. package/examples/CustomMultiple.test.tsx +3 -1
  466. package/examples/CustomMultiple.tsx +5 -2
  467. package/examples/CustomSingle.test.tsx +6 -4
  468. package/examples/CustomSingle.tsx +2 -2
  469. package/examples/CustomWeek.test.tsx +6 -4
  470. package/examples/DefaultMonth.test.tsx +3 -1
  471. package/examples/Dialog.tsx +2 -2
  472. package/examples/Disabled.test.tsx +6 -4
  473. package/examples/Dropdown.test.tsx +3 -1
  474. package/examples/DropdownMultipleMonths.test.tsx +3 -1
  475. package/examples/FixedWeeks.test.tsx +3 -1
  476. package/examples/FocusRecursive.test.tsx +10 -9
  477. package/examples/Formatters.test.tsx +3 -1
  478. package/examples/FromToMonth.test.tsx +2 -2
  479. package/examples/FromToYear.test.tsx +5 -3
  480. package/examples/Input.test.tsx +9 -1
  481. package/examples/Jalali.test.tsx +16 -0
  482. package/examples/Jalali.tsx +8 -0
  483. package/examples/Keyboard.test.tsx +26 -24
  484. package/examples/Keyboard.tsx +6 -2
  485. package/examples/ModifiersClassnames.test.tsx +3 -1
  486. package/examples/ModifiersClassnames.tsx +3 -1
  487. package/examples/ModifiersDisabled.tsx +1 -1
  488. package/examples/ModifiersHidden.test.tsx +3 -1
  489. package/examples/ModifiersStyle.test.tsx +3 -1
  490. package/examples/ModifiersToday.test.tsx +3 -1
  491. package/examples/Multiple.test.tsx +11 -1
  492. package/examples/MultipleMinMax.test.tsx +3 -1
  493. package/examples/MultipleMinMax.tsx +2 -9
  494. package/examples/MultipleMonths.test.tsx +3 -1
  495. package/examples/MultipleMonthsId.test.tsx +3 -1
  496. package/examples/MultipleMonthsPaged.test.tsx +3 -1
  497. package/examples/None.tsx +1 -1
  498. package/examples/NumberingSystem.test.tsx +3 -1
  499. package/examples/OutsideDays.test.tsx +3 -1
  500. package/examples/Range.test.tsx +5 -5
  501. package/examples/Range.tsx +5 -5
  502. package/examples/RangeMinMax.test.tsx +55 -0
  503. package/examples/RangeMinMax.tsx +12 -9
  504. package/examples/RangeShiftKey.test.tsx +7 -5
  505. package/examples/RangeShiftKey.tsx +3 -3
  506. package/examples/Rtl.test.tsx +3 -1
  507. package/examples/Single.test.tsx +8 -3
  508. package/examples/Spanish.test.tsx +3 -1
  509. package/examples/Start.test.tsx +3 -1
  510. package/examples/StylingCss.test.tsx +3 -1
  511. package/examples/StylingCssModules.test.tsx +3 -1
  512. package/examples/StylingInline.test.tsx +3 -1
  513. package/examples/TestCase2047.tsx +1 -1
  514. package/examples/Testcase1567.tsx +2 -4
  515. package/examples/Utc.tsx +19 -0
  516. package/examples/Weeknumber.test.tsx +7 -4
  517. package/examples/__snapshots__/Range.test.tsx.snap +97 -97
  518. package/examples/__snapshots__/StylingCssModules.test.tsx.snap +33 -33
  519. package/examples/index.ts +2 -0
  520. package/package.json +36 -6
  521. package/src/DayPicker.tsx +5 -11
  522. package/src/UI.ts +26 -14
  523. package/src/classes/CalendarDay.ts +16 -6
  524. package/src/components/Button.tsx +2 -5
  525. package/src/components/Calendar.tsx +5 -6
  526. package/src/components/Chevron.tsx +4 -4
  527. package/src/components/Day.tsx +4 -4
  528. package/src/components/DayDate.tsx +14 -3
  529. package/src/components/DayWrapper.tsx +59 -44
  530. package/src/components/Dropdown.tsx +4 -6
  531. package/src/components/DropdownNav.tsx +21 -5
  532. package/src/components/Footer.tsx +2 -2
  533. package/src/components/Month.tsx +4 -4
  534. package/src/components/MonthCaption.tsx +7 -4
  535. package/src/components/Months.tsx +1 -1
  536. package/src/components/MonthsDropdown.tsx +5 -8
  537. package/src/components/Nav.tsx +3 -4
  538. package/src/components/Option.tsx +1 -1
  539. package/src/components/Select.tsx +1 -1
  540. package/src/components/Week.tsx +9 -5
  541. package/src/components/WeekNumber.tsx +4 -4
  542. package/src/components/Weekday.tsx +7 -4
  543. package/src/components/Weekdays.tsx +4 -3
  544. package/src/components/YearsDropdown.tsx +5 -8
  545. package/src/contexts/index.ts +4 -0
  546. package/src/contexts/providers.tsx +46 -0
  547. package/src/contexts/{calendar.test.tsx → useCalendar.test.ts} +1 -3
  548. package/src/contexts/{calendar.tsx → useCalendar.tsx} +75 -73
  549. package/src/contexts/{focus.test.tsx → useFocus.test.tsx} +2 -4
  550. package/src/contexts/{focus.tsx → useFocus.tsx} +73 -59
  551. package/src/contexts/useModifiers.tsx +221 -0
  552. package/src/contexts/useProps.tsx +128 -0
  553. package/src/formatters/formatCaption.test.ts +6 -2
  554. package/src/formatters/formatCaption.ts +6 -3
  555. package/src/formatters/formatDay.ts +9 -3
  556. package/src/formatters/formatMonthDropdown.test.ts +2 -5
  557. package/src/formatters/formatMonthDropdown.ts +12 -4
  558. package/src/formatters/formatWeekNumber.ts +1 -7
  559. package/src/formatters/formatWeekdayName.ts +6 -3
  560. package/src/formatters/formatYearDropdown.ts +1 -0
  561. package/src/helpers/debounce.ts +0 -2
  562. package/src/helpers/getClassNamesForModifiers.ts +8 -11
  563. package/src/helpers/getDataAttributes.tsx +4 -4
  564. package/src/helpers/getDates.test.ts +21 -10
  565. package/src/helpers/getDates.ts +19 -28
  566. package/src/helpers/getDefaultClassNames.ts +11 -5
  567. package/src/helpers/getDisplayMonths.test.ts +17 -10
  568. package/src/helpers/getDisplayMonths.ts +6 -11
  569. package/src/helpers/getDropdownMonths.test.ts +32 -63
  570. package/src/helpers/getDropdownMonths.ts +17 -27
  571. package/src/helpers/getDropdownYears.test.ts +36 -56
  572. package/src/helpers/getDropdownYears.ts +25 -23
  573. package/src/helpers/getFormatters.test.ts +9 -5
  574. package/src/helpers/getFormatters.ts +2 -2
  575. package/src/helpers/{getStartMonth.test.ts → getInitialMonth.test.ts} +35 -8
  576. package/src/helpers/{getStartMonth.ts → getInitialMonth.ts} +15 -19
  577. package/src/helpers/getMonths.test.ts +84 -87
  578. package/src/helpers/getMonths.ts +29 -26
  579. package/src/helpers/getNextFocus.test.tsx +15 -12
  580. package/src/helpers/getNextFocus.tsx +14 -10
  581. package/src/helpers/getNextMonth.test.ts +17 -6
  582. package/src/helpers/getNextMonth.ts +20 -17
  583. package/src/helpers/getPossibleFocusDate.test.ts +7 -6
  584. package/src/helpers/getPossibleFocusDate.ts +21 -17
  585. package/src/helpers/getPreviousMonth.test.ts +57 -63
  586. package/src/helpers/getPreviousMonth.ts +14 -15
  587. package/src/helpers/getStartEndMonths.ts +17 -11
  588. package/src/helpers/getStyleForModifiers.test.ts +6 -6
  589. package/src/helpers/getStyleForModifiers.ts +2 -2
  590. package/src/helpers/getWeekdays.test.ts +5 -9
  591. package/src/helpers/getWeekdays.ts +10 -10
  592. package/src/helpers/useControlledValue.test.ts +2 -2
  593. package/src/index.ts +7 -7
  594. package/src/jalali.tsx +9 -0
  595. package/src/labels/labelCaption.ts +5 -2
  596. package/src/labels/labelDay.test.ts +2 -2
  597. package/src/labels/labelDay.ts +7 -5
  598. package/src/labels/labelGrid.ts +10 -3
  599. package/src/labels/labelMonthDropdown.ts +2 -2
  600. package/src/labels/labelNext.ts +2 -2
  601. package/src/labels/labelPrevious.ts +2 -2
  602. package/src/labels/labelWeekNumber.ts +2 -2
  603. package/src/labels/labelWeekNumberHeader.ts +2 -2
  604. package/src/labels/labelWeekday.test.ts +1 -1
  605. package/src/labels/labelWeekday.ts +6 -3
  606. package/src/labels/labelYearDropdown.ts +2 -2
  607. package/src/lib/dateLib.ts +72 -0
  608. package/src/lib/index.ts +1 -0
  609. package/src/lib/locales.ts +1 -0
  610. package/src/selection/index.ts +3 -0
  611. package/src/selection/useMulti.tsx +120 -0
  612. package/src/selection/useRange.tsx +125 -0
  613. package/src/selection/useSingle.tsx +96 -0
  614. package/src/style.css +11 -6
  615. package/src/style.module.css +10 -6
  616. package/src/{types-deprecated.ts → types/deprecated.ts} +27 -30
  617. package/src/types/index.ts +3 -0
  618. package/src/types/props.test.tsx +65 -0
  619. package/src/types/props.ts +439 -0
  620. package/src/types/shared.ts +291 -0
  621. package/src/utc.tsx +9 -0
  622. package/src/utils/addToRange.test.ts +3 -3
  623. package/src/utils/addToRange.ts +8 -9
  624. package/src/utils/dateMatchModifiers.test.ts +13 -12
  625. package/src/utils/dateMatchModifiers.ts +8 -10
  626. package/src/utils/isDateInRange.test.ts +1 -1
  627. package/src/utils/isDateInRange.ts +8 -5
  628. package/src/utils/typeguards.ts +56 -1
  629. package/website/README.md +0 -16
  630. package/website/docs/advanced-guides/custom-components.mdx +18 -15
  631. package/website/docs/advanced-guides/custom-modifiers.mdx +54 -69
  632. package/website/docs/changelog.mdx +0 -1
  633. package/website/docs/{intro.md → intro.mdx} +10 -9
  634. package/website/docs/upgrading.mdx +7 -7
  635. package/website/docs/using-daypicker/customization.mdx +14 -19
  636. package/website/docs/using-daypicker/localization.mdx +93 -0
  637. package/website/docs/using-daypicker/selection-modes.mdx +45 -36
  638. package/website/docs/using-daypicker/styling.mdx +16 -10
  639. package/dist/cjs/contexts/calendar.js +0 -126
  640. package/dist/cjs/contexts/calendar.js.map +0 -1
  641. package/dist/cjs/contexts/focus.js.map +0 -1
  642. package/dist/cjs/contexts/modifiers.d.ts +0 -31
  643. package/dist/cjs/contexts/modifiers.js +0 -152
  644. package/dist/cjs/contexts/modifiers.js.map +0 -1
  645. package/dist/cjs/contexts/props.d.ts +0 -51
  646. package/dist/cjs/contexts/props.js +0 -84
  647. package/dist/cjs/contexts/props.js.map +0 -1
  648. package/dist/cjs/contexts/root.d.ts +0 -8
  649. package/dist/cjs/contexts/root.js +0 -27
  650. package/dist/cjs/contexts/root.js.map +0 -1
  651. package/dist/cjs/contexts/selection.d.ts +0 -49
  652. package/dist/cjs/contexts/selection.js +0 -206
  653. package/dist/cjs/contexts/selection.js.map +0 -1
  654. package/dist/cjs/helpers/calculateMonthWeeks.d.ts +0 -9
  655. package/dist/cjs/helpers/calculateMonthWeeks.js +0 -36
  656. package/dist/cjs/helpers/calculateMonthWeeks.js.map +0 -1
  657. package/dist/cjs/helpers/getMonthWeeks.d.ts +0 -19
  658. package/dist/cjs/helpers/getMonthWeeks.js +0 -26
  659. package/dist/cjs/helpers/getMonthWeeks.js.map +0 -1
  660. package/dist/cjs/helpers/getStartMonth.d.ts +0 -3
  661. package/dist/cjs/helpers/getStartMonth.js +0 -23
  662. package/dist/cjs/helpers/getStartMonth.js.map +0 -1
  663. package/dist/cjs/types-deprecated.js.map +0 -1
  664. package/dist/cjs/types.d.ts +0 -606
  665. package/dist/cjs/types.js.map +0 -1
  666. package/dist/esm/contexts/calendar.js.map +0 -1
  667. package/dist/esm/contexts/focus.js.map +0 -1
  668. package/dist/esm/contexts/modifiers.d.ts +0 -31
  669. package/dist/esm/contexts/modifiers.js +0 -124
  670. package/dist/esm/contexts/modifiers.js.map +0 -1
  671. package/dist/esm/contexts/props.d.ts +0 -51
  672. package/dist/esm/contexts/props.js +0 -56
  673. package/dist/esm/contexts/props.js.map +0 -1
  674. package/dist/esm/contexts/root.d.ts +0 -8
  675. package/dist/esm/contexts/root.js +0 -20
  676. package/dist/esm/contexts/root.js.map +0 -1
  677. package/dist/esm/contexts/selection.d.ts +0 -49
  678. package/dist/esm/contexts/selection.js +0 -178
  679. package/dist/esm/contexts/selection.js.map +0 -1
  680. package/dist/esm/helpers/calculateMonthWeeks.d.ts +0 -9
  681. package/dist/esm/helpers/calculateMonthWeeks.js +0 -32
  682. package/dist/esm/helpers/calculateMonthWeeks.js.map +0 -1
  683. package/dist/esm/helpers/getMonthWeeks.d.ts +0 -19
  684. package/dist/esm/helpers/getMonthWeeks.js +0 -22
  685. package/dist/esm/helpers/getMonthWeeks.js.map +0 -1
  686. package/dist/esm/helpers/getStartMonth.d.ts +0 -3
  687. package/dist/esm/helpers/getStartMonth.js.map +0 -1
  688. package/dist/esm/types-deprecated.js.map +0 -1
  689. package/dist/esm/types.d.ts +0 -606
  690. package/dist/esm/types.js +0 -2
  691. package/dist/esm/types.js.map +0 -1
  692. package/src/contexts/modifiers.tsx +0 -177
  693. package/src/contexts/props.tsx +0 -129
  694. package/src/contexts/root.tsx +0 -33
  695. package/src/contexts/selection.tsx +0 -264
  696. package/src/helpers/calculateMonthWeeks.test.ts +0 -47
  697. package/src/helpers/calculateMonthWeeks.ts +0 -60
  698. package/src/helpers/getMonthWeeks.test.ts +0 -100
  699. package/src/helpers/getMonthWeeks.ts +0 -55
  700. package/src/types.test.tsx +0 -52
  701. package/src/types.ts +0 -699
@@ -13,7 +13,7 @@ Use the `components` prop to swap the components used to render DayPicker.
13
13
  - Make sure you don't break [accessibility](../using-daypicker/accessibility.mdx) when customizing components.
14
14
  - Custom components may not have a stable API yet and may break in a minor release.
15
15
 
16
- :::
16
+ :::
17
17
 
18
18
  ## List of Custom Components
19
19
 
@@ -23,20 +23,20 @@ See the [Components API Reference](../api#components) for a list of components y
23
23
 
24
24
  For example, if you need to customize the component displaying the date, replace the [`DayDate`](../api/functions//DayDate.md) component:
25
25
 
26
- ```tsx title="./CustomDayDate.tsx"
26
+ ```tsx title="./MyDatePicker.tsx"
27
27
  import { DayPicker, type DayDateProps } from "react-day-picker";
28
28
 
29
- function CustomDate(props: DayDateProps) {
29
+ /** When the date is 19, will display an emoji. */
30
+ function HighlightDay(props: DayDateProps) {
30
31
  return (
31
- <span {...props.rootProps}>
32
- {props.day.date.getDate() === 19 && ` 🎉`}
33
- {props.formattedDate}
32
+ <span {...props.rootProps} style={{ whiteSpace: "nowrap" }}>
33
+ {props.day.date.getDate() === 19 ? `🎉` : props.formattedDate}
34
34
  </span>
35
35
  );
36
36
  }
37
37
 
38
38
  export function MyDatePicker() {
39
- return <DayPicker mode="single" components={{ DayDate: CustomDate }} />;
39
+ return <DayPicker mode="single" components={{ DayDate: HighlightDay }} />;
40
40
  }
41
41
  ```
42
42
 
@@ -70,12 +70,15 @@ export function MyDatePicker() {
70
70
 
71
71
  When creating custom components, you will find useful the [DayPicker hooks](../api/index.md#hooks). These utilities provide access to the internal state and methods of the DayPicker component.
72
72
 
73
- | Hooks | Description |
74
- | :------------------------------------------------- | :------------------------------------------------------------------------- |
75
- | [`useCalendar`](../api/functions/useCalendar.md) | Return the calendar state and navigation methods to navigate the calendar. |
76
- | [`useFocus`](../api/functions/useFocus.md) | Share the focused day and the methods to move the focus. |
77
- | [`useProps`](../api/functions/useProps.md) | Access to the props passed to DayPicker. |
78
- | [`useSelection`](../api/functions/useSelection.md) | Access and change the currently selected values. |
73
+ | Function | Description |
74
+ | :----------------------------------------------- | :------------------------------------------------------------------------ |
75
+ | [useCalendar](../api/functions/useCalendar.md) | Access to the props passed to `DayPicker`, with some meaningful defaults. |
76
+ | [useFocus](../api/functions/useFocus.md) | Share the focused day and the methods to move the focus. |
77
+ | [useModifiers](../api/functions/useModifiers.md) | - |
78
+ | [useMulti](../api/functions/useMulti.md) | Access to the multi context to get the selected dates or update them. |
79
+ | [useProps](../api/functions/useProps.md) | Access to the props passed to `DayPicker`, with some meaningful defaults. |
80
+ | [useRange](../api/functions/useRange.md) | Access to the range context to get the selected range or update it. |
81
+ | [useSingle](../api/functions/useSingle.md) | Access to the single context to get the selected date or update it. |
79
82
 
80
83
  ### Example: Range with Shift Key
81
84
 
@@ -88,11 +91,11 @@ import {
88
91
  DateRange,
89
92
  DayPicker,
90
93
  type DayProps,
91
- useSelection
94
+ useRange
92
95
  } from "react-day-picker";
93
96
 
94
97
  function DayWithShiftKey(props: DayProps) {
95
- const { selected } = useSelection<"range">();
98
+ const { selected } = useRange();
96
99
  const onClick = props.htmlAttributes?.onClick;
97
100
 
98
101
  const handleClick: MouseEventHandler<HTMLElement> = (e) => {
@@ -4,29 +4,39 @@ sidebar_position: 3
4
4
 
5
5
  # Custom Modifiers
6
6
 
7
- :::info Draft
7
+ In DayPicker, a **custom modifier** is added to a day when the day matches a specific condition, called [`Matcher`](../api/type-aliases/Matcher.md).
8
8
 
9
- This documentation is still a work in progress. If you have any questions, ask to the [discussions](https://github.com/gpbl/react-day-picker/discussions) page on Github.
9
+ Modifiers are set using the `modifiers` prop. When matching a date, modifiers are passed to the `onSelect` event and to other [DayEventHandler](../api/type-aliases/DayEventHandler.md) (`onDayClick` etc.) to inspect the days the user has interacted with.
10
10
 
11
- :::
12
-
13
- # Modifiers
14
-
15
- In DayPicker, a **modifier** is added to a day when the day matches a specific condition, called [`Matcher`](../api/type-aliases/Matcher.md). For example, selected days have the `selected` modifiers, disabled days the `disabled` modifier, the today's date matches the `today` modifier, etc.
11
+ For example, you can use a custom modifier to mark days as already booked in a booking app.
16
12
 
17
13
  ```tsx
18
- <DayPicker selected={new Date()} />
19
- <DayPicker disabled={new Date()} />
20
- <DayPicker hidden={new Date()} />
14
+ <DayPicker
15
+ modifiers={{
16
+ booked: [
17
+ new Date(2022, 5, 8),
18
+ new Date(2022, 5, 9),
19
+ new Date(2022, 5, 10),
20
+ { from: new Date(2022, 5, 15), to: new Date(2022, 5, 20) }
21
+ ]
22
+ }}
23
+ onDayClick={(date, modifiers) => {
24
+ if (modifiers.booked) {
25
+ alert("This day is already booked.");
26
+ }
27
+ }}
28
+ />
21
29
  ```
22
30
 
23
- ### Understanding Modifiers
31
+ ## Understanding Modifiers
24
32
 
25
33
  - Use modifiers to change the appearance of the days in the calendar or to inspect the days the user has interacted with (e.g. picking a day)
26
- - DayPicker comes with some [pre-built modifiers](../api/type-aliases/InternalModifier.md), such as `disabled`, `selected`, `hidden`, `today`, `range_start`, etc. designed to cover the most common use cases.
34
+ - DayPicker comes with some [pre-built modifiers](../api/type-aliases/Modifiers.md), such as `disabled`, `selected`, `hidden`, `today`, `range_start`, etc. designed to cover the most common use cases.
27
35
  - It is possible to implement custom modifiers, extending the behavior of DayPicker: see [Custom Modifiers](#custom-modifiers) below for more details.
28
36
 
29
- ## The `selected` Modifier
37
+ ## Built-in Modifiers
38
+
39
+ ### `selected` Modifier
30
40
 
31
41
  ```tsx
32
42
  <DayPicker selected={new Date()} />
@@ -34,20 +44,20 @@ In DayPicker, a **modifier** is added to a day when the day matches a specific c
34
44
 
35
45
  When in selection mode, use the `selected` prop to add the `selected` modifier to the selected dates, and style them accordingly. To see how to implement the `selected` modifier, see the [Selecting days guide](../using-daypicker/selection-modes.mdx).
36
46
 
37
- ## Disabling Days
47
+ ### `disabled` Modifier
38
48
 
39
49
  Use the `disabled` modifier to disable one or more days. Pass a [`Matcher`](../api/type-aliases/Matcher.md) or an array of `Matchers` to choose the disabled days:
40
50
 
41
51
  ```tsx
42
52
  // Disable Sundays and Saturdays
43
- <DayPicker disabled={{ dayOfWeek: [0, 6] }} />
53
+ <DayPicker mode="range" disabled={{ dayOfWeek: [0, 6] }} />
44
54
  ```
45
55
 
46
56
  <BrowserWindow>
47
57
  <Examples.ModifiersDisabled />
48
58
  </BrowserWindow>
49
59
 
50
- ## Hidden days
60
+ ### `hidden` Modifier
51
61
 
52
62
  The `hidden` modifier removes the day from the calendar. Set the hidden days using the `hidden` prop.
53
63
 
@@ -65,23 +75,20 @@ const hiddenDays = [
65
75
  <Examples.ModifiersHidden />
66
76
  </BrowserWindow>
67
77
 
68
- ## The `today` Modifier
78
+ ### `today` Modifier
69
79
 
70
- The `today` modifier is added to the current date:
80
+ The `today` modifier is a special modifier added to the current date. You can also change the current date using the `today` prop.
71
81
 
72
82
  ```tsx
73
- function ModifiersToday() {
74
- const initialFooter = <p>Try clicking the today’s date.</p>;
75
- const [footer, setFooter] = useState(initialFooter);
76
-
83
+ function Example() {
77
84
  const handleDayClick: DayMouseEventHandler = (day, modifiers) => {
78
85
  if (modifiers.today) {
79
- setFooter(<p>You clicked the today’s date.</p>);
80
- } else {
81
- setFooter(initialFooter);
86
+ alert("You clicked the today’s date.");
82
87
  }
83
88
  };
84
- return <DayPicker onDayClick={handleDayClick} footer={footer} />;
89
+ return (
90
+ <DayPicker onDayClick={handleDayClick} today={new Date(2019, 12, 22)} />
91
+ );
85
92
  }
86
93
  ```
87
94
 
@@ -89,63 +96,41 @@ function ModifiersToday() {
89
96
  <Examples.ModifiersToday />
90
97
  </BrowserWindow>
91
98
 
92
- :::info
93
-
94
- You can change the current date using the `today` prop.
95
-
96
- :::
97
-
98
- ## Custom Modifiers {#custom-modifiers}
99
-
100
- Add new modifiers according to your app’s requirements. For example, a booking app may use a `booked` modifier to mark days as already booked.
99
+ ## Styling Modifiers
101
100
 
102
- Use the `modifiers` prop to pass an object with custom modifiers and their matcher. Change the inline-style of the cell with `modifiersStyles` or with `modifiersClassNames`.
101
+ A day can be styled according to its modifiers using CSS or inline styles. See [Styling DayPicker](../using-daypicker/styling.mdx) for more details.
103
102
 
104
103
  ```tsx
105
104
  const bookedDays = [
106
- new Date(2024, 5, 8),
107
- new Date(2024, 5, 9),
108
- new Date(2024, 5, 10),
109
- { from: new Date(2024, 5, 15), to: new Date(2024, 5, 20) }
105
+ new Date(2021, 5, 8),
106
+ new Date(2021, 5, 9),
107
+ new Date(2021, 5, 11)
110
108
  ];
111
- export function ModifiersCustom() {
112
- const handleDayClick: DayMouseEventHandler = (day, { booked }) => {
113
- alert(`Day ${day.toLocaleDateString()} is booked? ` + booked);
114
- };
115
-
109
+ export function ModifiersWithClassnames() {
116
110
  return (
117
111
  <DayPicker
118
- defaultMonth={new Date(2024, 5)}
119
- modifiers={{ booked: bookedDays }}
120
- modifiersClassNames={{ booked: "booked" }}
121
- onDayClick={handleDayClick}
112
+ defaultMonth={bookedDays[0]}
113
+ modifiers={{
114
+ booked: bookedDays
115
+ }}
116
+ modifiersClassNames={{
117
+ booked: "my-booked-class"
118
+ }}
122
119
  />
123
120
  );
124
121
  }
125
122
  ```
126
123
 
127
- ```css
128
- .booked {
129
- position: relative;
130
- }
131
- /* Strikeout */
132
- .booked::before {
133
- content: "";
134
- position: absolute;
135
- top: 50%;
136
- left: 0;
137
- right: 0;
138
- height: 2px;
139
- background: currentColor;
140
- z-index: 1;
141
- transform: rotate(-45deg);
124
+ Add the `my-booked-class` class to your CSS:
125
+
126
+ ```postcss
127
+ .my-booked-class {
128
+ background-color: tomato;
129
+ color: white;
130
+ border-radius: 50%;
142
131
  }
143
132
  ```
144
133
 
145
134
  <BrowserWindow>
146
- <Examples.ModifiersCustom />
135
+ <Examples.ModifiersClassnames />
147
136
  </BrowserWindow>
148
-
149
- ## Styling Modifiers
150
-
151
- A day can be styled according to its modifiers – using CSS or inline styles. See [Styling DayPicker](../using-daypicker/styling.mdx) for more details.
@@ -7,4 +7,3 @@ sidebar_position: 4
7
7
  import Changelog from "../../CHANGELOG.md";
8
8
 
9
9
  <Changelog />
10
- s
@@ -5,29 +5,30 @@ sidebar_position: 1
5
5
  slug: /
6
6
  ---
7
7
 
8
- # Introduction to DayPicker
8
+ # DayPicker
9
9
 
10
10
  DayPicker is a [React](https://react.dev) component to create date pickers, calendars, and date inputs for web applications.
11
11
 
12
12
  ## Features
13
13
 
14
- - Minimal design for easy customization.
15
- - Extensive props for configuring the calendar.
16
- - Supports selection of a single day, multiple days, ranges, or custom selections.
17
- - Can be localized in any language.
18
- - Complies with WCAG 2.1 AA requirements for accessibility.
19
- - Includes customizable internal components for complex use cases.
14
+ - 🛠 An extensive set of props for [customizing](./using-daypicker/customization.mdx) the calendar.
15
+ - 🎨 Minimal design that can be [easily styled](./using-daypicker/styling.mdx) with CSS or any CSS framework.
16
+ - 📅 Supports [selections](./using-daypicker/selection-modes.mdx) of single day, multiple days, ranges of days, or [custom selections](./advanced-guides/custom-selections.mdx).
17
+ - 🌍 Can be [localized](./using-daypicker/localization.mdx) into any language, supports [ISO 8601 dates](./using-daypicker/localization.mdx#iso-week-dates), [UTC dates](./using-daypicker/localization.mdx#utc-dates), and [Jalali calendar](./using-daypicker/localization.mdx#jalali-calendar).
18
+ - Complies with WCAG 2.1 AA requirements for [accessibility](./using-daypicker/accessibility.mdx).
19
+ - ⚙️ [Customizable components](./advanced-guides/custom-components.mdx) for more complex use cases.
20
+ - 🔤 Unopinionated integration [with input fields](./advanced-guides/input-fields.mdx).
20
21
 
21
22
  DayPicker is written in TypeScript and compiled to CommonJS and ESM. It requires [date-fns](https://date-fns.org) as a peer dependency.
22
23
 
23
24
  ## Example
24
25
 
25
- ```tsx
26
+ ```tsx title="./MyDatePicker.jsx"
26
27
  import { DayPicker } from "react-day-picker";
27
28
  import "react-day-picker/style.css";
28
29
 
29
30
  function MyDatePicker() {
30
- const [selected, setSelected] = useState<Date>();
31
+ const [selected, setSelected] = useState();
31
32
  return <DayPicker mode="single" selected={selected} onSelect={setSelected} />;
32
33
  }
33
34
  ```
@@ -91,7 +91,7 @@ Many typings have been deprecated in favor of clarity and shorter names. If you
91
91
 
92
92
  ```diff
93
93
  - import type { DayPickerDefaultProps } from 'react-day-picker';
94
- + import type { PropsDefault } from 'react-day-picker';
94
+ + import type { PropsBase } from 'react-day-picker';
95
95
  ```
96
96
 
97
97
  See also the source of [types-deprecated.ts](https://github.com/gpbl/react-day-picker/blob/next/src/types-deprecated.ts).
@@ -104,12 +104,12 @@ See also the source of [types-deprecated.ts](https://github.com/gpbl/react-day-p
104
104
  | ~`DayPickerSingleProps`~ | This type has been renamed. Use [`PropsSingle`](./api/interfaces/PropsSingle.md) instead. |
105
105
  | ~`DayPickerMultipleProps`~ | This type has been renamed. Use [`PropsMulti`](./api/interfaces/PropsMulti.md) instead. |
106
106
  | ~`DayPickerRangeProps`~ | This type has been renamed. Use [`PropsRange`](./api/interfaces/PropsRange.md) instead. |
107
- | ~`DayPickerDefaultProps`~ | This type has been renamed. Use [`PropsDefault`](./api/interfaces/PropsDefault.md) instead. |
107
+ | ~`DayPickerDefaultProps`~ | This type has been renamed. Use [`PropsBase`](./api/interfaces/PropsBase.md) instead. |
108
108
  | ~`DaySelectionMode`~ | This type has been renamed. Use [`Mode`](./api/type-aliases/Mode.md) instead. |
109
109
  | ~`Modifier`~ | This type will be removed. Use `string` instead. |
110
- | ~`SelectSingleEventHandler`~ | This type will be removed. Use [`SelectHandler<"single">`](./api/type-aliases/SelectHandler.md) instead. |
111
- | ~`SelectMultipleEventHandler`~ | This type will be removed. Use [`SelectHandler<"multiple">`](./api/type-aliases/SelectHandler.md) instead. |
112
- | ~`SelectRangeEventHandler`~ | This type will be removed. Use [`SelectHandler<"range">`](./api/type-aliases/SelectHandler.md) instead. |
110
+ | ~`SelectSingleEventHandler`~ | This type will be removed. Use [`PropsSingle["onSelect]`](./api/interfaces/PropsSingle.md) instead. |
111
+ | ~`SelectMultipleEventHandler`~ | This type will be removed. Use [`PropsMulti["onSelect]`](./api/interfaces/PropsMulti.md) instead. |
112
+ | ~`SelectRangeEventHandler`~ | This type will be removed. Use [`PropsRange["onSelect]`](./api/interfaces/PropsRange.md) instead. |
113
113
  | ~`DayPickerProviderProps`~ | This type is not used anymore. |
114
114
  | ~`useDayPicker`~ | This type has been renamed to [`useProps`](./api/functions/useProps.md). |
115
115
  | ~`useNavigation`~ | This type has been renamed to [`useCalendar`](./api/functions/useCalendar.md). |
@@ -120,7 +120,7 @@ See also the source of [types-deprecated.ts](https://github.com/gpbl/react-day-p
120
120
  | ~`WeekdayLabel`~ | Use `typeof labelWeekday` instead. |
121
121
  | ~`WeekNumberLabel`~ | Use `typeof labelWeekNumber` instead. |
122
122
  | ~`DayClickEventHandler`~ | Use `DayMouseEventHandler` instead. |
123
- | ~`DayFocusEventHandler`~ | This type will be removed. Use `DayEventHandlerReact.FocusEvent \| React.KeyboardEvent>` instead. |
123
+ | ~`DayFocusEventHandler`~ | This type will be removed. Use `DayEventHandler<React.FocusEvent \| React.KeyboardEvent>` instead. |
124
124
  | ~`DayKeyboardEventHandler`~ | This type will be removed. Use `DayEventHandler<React.KeyboardEvent>` instead. |
125
125
  | ~`DayMouseEventHandler`~ | This type will be removed. Use `DayEventHandler<React.MouseEvent>` instead. |
126
126
  | ~`DayPointerEventHandler`~ | This type will be removed. Use `DayEventHandler<React.PointerEvent>` instead. |
@@ -128,4 +128,4 @@ See also the source of [types-deprecated.ts](https://github.com/gpbl/react-day-p
128
128
 
129
129
  ## Upgrade from v7 to v8
130
130
 
131
- See the [migration guide](https://react-day-picker.js.org/upgrading) for the changes introduced in v8.
131
+ See the [migration guide](https://daypicker.dev/upgrading) for the changes introduced in v8.
@@ -6,15 +6,19 @@ sidebar_position: 3
6
6
 
7
7
  Use the customization props to customize the appearance of the calendar.
8
8
 
9
- ## Layout Props
9
+ ### Customization Props Summary
10
10
 
11
- | Prop Name | Type | Description |
12
- | ----------------- | ------------------------------------------------------------------------------------- | ----------------------------------------------------------- |
13
- | `captionLayout` | \| `label`<br/> \| `"dropdown"`<br/> \| `"dropdown-months"`<br/> \|`"dropdown-years"` | Choose the layout of the month caption. Default is `label`. |
14
- | `showOutsideDays` | `boolean` | Display the days falling into the other months. |
15
- | `fixedWeeks` | `boolean` | Display 6 weeks per months. |
16
- | `hideWeekdayRow` | `boolean` | Hide the row displaying the weekday names. |
17
- | `footer` | `ReactNode` | Displays a footer below the calendar. |
11
+ See below for more details on each prop.
12
+
13
+ | Prop Name | Type | Description |
14
+ | ----------------- | ---------------------------------------------------------------------------------------- | ----------------------------------------------------------- |
15
+ | `captionLayout` | \| `"label"`<br/> \| `"dropdown"`<br/> \| `"dropdown-months"`<br/> \| `"dropdown-years"` | Choose the layout of the month caption. Default is `label`. |
16
+ | `fixedWeeks` | `boolean` | Display 6 weeks per months. |
17
+ | `footer` | `ReactNode` | Displays a footer below the calendar. |
18
+ | `hideWeekdayRow` | `boolean` | Hide the row displaying the weekday names. |
19
+ | `numberOfMonths` | `number` | The number of displayed months. Default is `1`. |
20
+ | `showOutsideDays` | `boolean` | Display the days falling into the other months. |
21
+ | `showWeekNumber` | `boolean` | Display the column with the week numbers. |
18
22
 
19
23
  ## Caption Layouts
20
24
 
@@ -53,7 +57,7 @@ Without specifing the `from*` and `to*` properties, the dropdown will show the l
53
57
 
54
58
  :::
55
59
 
56
- ### Outside Days
60
+ ## Outside Days
57
61
 
58
62
  By default, DayPicker hides the days falling into the other months. Use `showOutsideDays` to display them.
59
63
 
@@ -65,7 +69,7 @@ By default, DayPicker hides the days falling into the other months. Use `showOut
65
69
  <Examples.OutsideDays />
66
70
  </BrowserWindow>
67
71
 
68
- ### Fixed Weeks
72
+ ## Fixed Weeks
69
73
 
70
74
  In a year, months can have between 4 an 6 weeks. Use `fixedWeeks` to always display 6 weeks per month. This will prevent the grid changing its height while navigating the calendar.
71
75
 
@@ -124,15 +128,6 @@ To display the column with the week numbers, use the `showWeekNumber` prop. Use
124
128
  <Examples.Weeknumber />
125
129
  </BrowserWindow>
126
130
 
127
- ## Formatters and Labels
128
-
129
- Use the [formatters](./localization.mdx#formatters) and the [ARIA labels](./localization.mdx#aria-labels) to customize the format of the dates and the ARIA labels.
130
-
131
- | Prop Name | Type | Description |
132
- | ------------ | ------------------------------------------------- | ---------------------------------------------- |
133
- | `formatters` | [`Formatters`](../api/type-aliases/Formatters.md) | Format of the dates displayed in the calendar. |
134
- | `labels` | [`Labels`](../api/type-aliases/Labels.md) | Set the ARIA labels used in the calendar. |
135
-
136
131
  ## Footer
137
132
 
138
133
  Use the `footer` prop to display a footer below the calendar.
@@ -75,6 +75,57 @@ Use `ISOWeek` to switch using [ISO Week Dates](https://en.wikipedia.org/wiki/ISO
75
75
  <Examples.WeeknumberIso />
76
76
  </BrowserWindow>
77
77
 
78
+ ## UTC Dates
79
+
80
+ DayPicker uses the local time zone by default. To switch to UTC dates, add [@date-fns/utc](https://www.npmjs.com/package/@date-fns/utc) to your dependencies and import `DayPicker` from `react-day-picker/utc` instead.
81
+
82
+ :::note Experimental feature
83
+
84
+ The UTC mode is an experimental feature. [Please report](https://github.com/gpbl/react-day-picker/issues) any issues you may encounter, thanks!
85
+
86
+ :::
87
+
88
+ #### 1. Install the `@date-fns/utc` package
89
+
90
+ ```bash npm2yarn
91
+ npm install @date-fns/utc
92
+ ```
93
+
94
+ #### 2. Import `DayPicker` from `react-day-picker/utc`
95
+
96
+ ```diff
97
+ - import { DayPicker } from 'react-day-picker';
98
+ + import { DayPicker } from 'react-day-picker/utc';
99
+ ```
100
+
101
+ #### 3. Use DayPicker as usual
102
+
103
+ ```tsx
104
+ import { UTCDate } from "@date-fns/utc";
105
+ import { DayPicker } from "react-day-picker/utc";
106
+
107
+ export function Utc() {
108
+ const [selected, setSelected] = React.useState<Date>(new UTCDate());
109
+ return (
110
+ <DayPicker
111
+ mode="single"
112
+ required
113
+ selected={selected}
114
+ onSelect={(date: Date) => {
115
+ setSelected(date);
116
+ }}
117
+ footer={selected ? `Selected: ${selected.toUTCString()}` : null}
118
+ />
119
+ );
120
+ }
121
+ ```
122
+
123
+ Observe how dates are always GMT.
124
+
125
+ <BrowserWindow>
126
+ <Examples.Utc />
127
+ </BrowserWindow>
128
+
78
129
  ## Translate DayPicker
79
130
 
80
131
  These props will assist in translating the labels and formatters utilized in DayPicker.
@@ -185,3 +236,45 @@ export function NumberingSystemExample() {
185
236
  <BrowserWindow>
186
237
  <Examples.NumberingSystem />
187
238
  </BrowserWindow>
239
+
240
+ ## Jalali Calendar
241
+
242
+ DayPicker supports the Jalali calendar thanks to the [date-fns-jalali](https://www.npmjs.com/package/date-fns-jalali) package. To switch to the Jalali calendar, add `date-fns-jalali` to your dependencies and import `DayPicker` from `react-day-picker/jalali` instead.
243
+
244
+ :::note Experimental feature
245
+
246
+ The support for the Jalali calendar is an experimental feature. [Please report](https://github.com/gpbl/react-day-picker/issues) any issues you may encounter, thanks!
247
+
248
+ :::
249
+
250
+ #### 1. Install the `date-fns-jalali` package
251
+
252
+ ```bash npm2yarn
253
+ npm install date-fns-jalali
254
+ ```
255
+
256
+ #### 2. Import `DayPicker` from `react-day-picker/jalali`
257
+
258
+ ```diff
259
+ - import { DayPicker } from 'react-day-picker';
260
+ + import { DayPicker } from 'react-day-picker/jalali';
261
+ ```
262
+
263
+ #### 3. Use DayPicker as usual
264
+
265
+ Note that you can set the right-to-left direction and change the locale.
266
+
267
+ ```tsx title="./JalaliCalendar.jsx"
268
+ import React from "react";
269
+
270
+ import { faIR } from "date-fns/locale";
271
+ import { DayPicker } from "react-day-picker/jalali";
272
+
273
+ export function Jalali() {
274
+ return <DayPicker mode="single" locale={faIR} dir="rtl" />;
275
+ }
276
+ ```
277
+
278
+ <BrowserWindow>
279
+ <Examples.Jalali />
280
+ </BrowserWindow>