@timmbr/ui 1.17.7 → 1.19.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 (228) hide show
  1. package/dist/components/Calendar/Calendar.d.ts +4 -0
  2. package/dist/components/Calendar/Calendar.d.ts.map +1 -0
  3. package/dist/components/Calendar/Calendar.helpers.d.ts +31 -0
  4. package/dist/components/Calendar/Calendar.helpers.d.ts.map +1 -0
  5. package/dist/components/Calendar/Calendar.helpers.js +153 -0
  6. package/dist/components/Calendar/Calendar.js +188 -0
  7. package/dist/components/Calendar/Calendar.styles.d.ts +7 -0
  8. package/dist/components/Calendar/Calendar.styles.d.ts.map +1 -0
  9. package/dist/components/Calendar/Calendar.styles.js +15 -0
  10. package/dist/components/Calendar/Calendar.types.d.ts +83 -0
  11. package/dist/components/Calendar/Calendar.types.d.ts.map +1 -0
  12. package/dist/components/Calendar/index.d.ts +5 -0
  13. package/dist/components/Calendar/index.d.ts.map +1 -0
  14. package/dist/components/Calendar/subcomponents/CalendarMonthYearPickers.d.ts +21 -0
  15. package/dist/components/Calendar/subcomponents/CalendarMonthYearPickers.d.ts.map +1 -0
  16. package/dist/components/Calendar/subcomponents/CalendarMonthYearPickers.js +185 -0
  17. package/dist/components/DataTable/DataTable.d.ts.map +1 -1
  18. package/dist/components/DataTable/DataTable.js +16 -4
  19. package/dist/components/DatePicker/DatePicker.d.ts +4 -0
  20. package/dist/components/DatePicker/DatePicker.d.ts.map +1 -0
  21. package/dist/components/DatePicker/DatePicker.helpers.d.ts +8 -0
  22. package/dist/components/DatePicker/DatePicker.helpers.d.ts.map +1 -0
  23. package/dist/components/DatePicker/DatePicker.helpers.js +51 -0
  24. package/dist/components/DatePicker/DatePicker.js +236 -0
  25. package/dist/components/DatePicker/DatePicker.styles.d.ts +4 -0
  26. package/dist/components/DatePicker/DatePicker.styles.d.ts.map +1 -0
  27. package/dist/components/DatePicker/DatePicker.styles.js +15 -0
  28. package/dist/components/DatePicker/DatePicker.types.d.ts +67 -0
  29. package/dist/components/DatePicker/DatePicker.types.d.ts.map +1 -0
  30. package/dist/components/DatePicker/index.d.ts +5 -0
  31. package/dist/components/DatePicker/index.d.ts.map +1 -0
  32. package/dist/components/Rating/Rating.d.ts +1 -1
  33. package/dist/components/Rating/Rating.d.ts.map +1 -1
  34. package/dist/components/Rating/Rating.js +11 -2
  35. package/dist/components/Rating/Rating.types.d.ts +5 -0
  36. package/dist/components/Rating/Rating.types.d.ts.map +1 -1
  37. package/dist/components/RatingDistribution/RatingDistribution.d.ts +8 -0
  38. package/dist/components/RatingDistribution/RatingDistribution.d.ts.map +1 -0
  39. package/dist/components/RatingDistribution/RatingDistribution.js +70 -0
  40. package/dist/components/RatingDistribution/RatingDistribution.types.d.ts +21 -0
  41. package/dist/components/RatingDistribution/RatingDistribution.types.d.ts.map +1 -0
  42. package/dist/components/RatingDistribution/index.d.ts +3 -0
  43. package/dist/components/RatingDistribution/index.d.ts.map +1 -0
  44. package/dist/components/RatingInput/RatingInput.d.ts +8 -0
  45. package/dist/components/RatingInput/RatingInput.d.ts.map +1 -0
  46. package/dist/components/RatingInput/RatingInput.js +95 -0
  47. package/dist/components/RatingInput/RatingInput.styles.d.ts +6 -0
  48. package/dist/components/RatingInput/RatingInput.styles.d.ts.map +1 -0
  49. package/dist/components/RatingInput/RatingInput.styles.js +13 -0
  50. package/dist/components/RatingInput/RatingInput.types.d.ts +18 -0
  51. package/dist/components/RatingInput/RatingInput.types.d.ts.map +1 -0
  52. package/dist/components/RatingInput/index.d.ts +4 -0
  53. package/dist/components/RatingInput/index.d.ts.map +1 -0
  54. package/dist/components/RichTextEditor/RichTextEditor.d.ts +1 -1
  55. package/dist/components/RichTextEditor/RichTextEditor.d.ts.map +1 -1
  56. package/dist/components/RichTextEditor/RichTextEditor.js +2 -0
  57. package/dist/components/RichTextEditor/RichTextEditor.types.d.ts +2 -0
  58. package/dist/components/RichTextEditor/RichTextEditor.types.d.ts.map +1 -1
  59. package/dist/components/RichTextEditor/subcomponents/RteToolbar.d.ts +2 -1
  60. package/dist/components/RichTextEditor/subcomponents/RteToolbar.d.ts.map +1 -1
  61. package/dist/components/RichTextEditor/subcomponents/RteToolbar.js +60 -2
  62. package/dist/index.d.ts +4 -0
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +9 -0
  65. package/dist/node_modules/.pnpm/@date-fns_tz@1.5.0/node_modules/@date-fns/tz/date/index.js +83 -0
  66. package/dist/node_modules/.pnpm/@date-fns_tz@1.5.0/node_modules/@date-fns/tz/date/mini.js +450 -0
  67. package/dist/node_modules/.pnpm/@date-fns_tz@1.5.0/node_modules/@date-fns/tz/tzName/index.js +39 -0
  68. package/dist/node_modules/.pnpm/@date-fns_tz@1.5.0/node_modules/@date-fns/tz/tzOffset/index.js +56 -0
  69. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/_lib/addLeadingZeros.js +7 -0
  70. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/_lib/defaultOptions.js +7 -0
  71. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/_lib/format/formatters.js +775 -0
  72. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/_lib/format/lightFormatters.js +94 -0
  73. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/_lib/format/longFormatters.js +66 -0
  74. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js +31 -0
  75. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/_lib/normalizeDates.js +11 -0
  76. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/_lib/normalizeInterval.js +8 -0
  77. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/_lib/protectedTokens.js +25 -0
  78. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/addDays.js +60 -0
  79. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/addMonths.js +75 -0
  80. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/addWeeks.js +33 -0
  81. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/addYears.js +33 -0
  82. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/constants.js +46 -0
  83. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/constructFrom.js +49 -0
  84. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/differenceInCalendarDays.js +62 -0
  85. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/differenceInCalendarMonths.js +42 -0
  86. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/eachMonthOfInterval.js +65 -0
  87. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/eachYearOfInterval.js +65 -0
  88. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/endOfISOWeek.js +35 -0
  89. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/endOfMonth.js +37 -0
  90. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/endOfWeek.js +53 -0
  91. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/endOfYear.js +37 -0
  92. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/format.js +423 -0
  93. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/getDayOfYear.js +34 -0
  94. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/getDaysInMonth.js +36 -0
  95. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/getISOWeek.js +40 -0
  96. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/getISOWeekYear.js +52 -0
  97. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/getMonth.js +29 -0
  98. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/getWeek.js +54 -0
  99. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/getWeekYear.js +75 -0
  100. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/getYear.js +29 -0
  101. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/isAfter.js +25 -0
  102. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/isBefore.js +25 -0
  103. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/isDate.js +41 -0
  104. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/isSameDay.js +46 -0
  105. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/isSameMonth.js +43 -0
  106. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/isSameYear.js +35 -0
  107. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/isValid.js +39 -0
  108. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/locale/_lib/buildFormatLongFn.js +10 -0
  109. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/locale/_lib/buildLocalizeFn.js +64 -0
  110. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/locale/_lib/buildMatchFn.js +59 -0
  111. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js +22 -0
  112. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/locale/en-US/_lib/formatDistance.js +103 -0
  113. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/locale/en-US/_lib/formatLong.js +41 -0
  114. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/locale/en-US/_lib/formatRelative.js +13 -0
  115. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/locale/en-US/_lib/localize.js +189 -0
  116. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/locale/en-US/_lib/match.js +134 -0
  117. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/locale/en-US.js +28 -0
  118. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/max.js +49 -0
  119. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/min.js +49 -0
  120. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/setMonth.js +46 -0
  121. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/setYear.js +40 -0
  122. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/startOfDay.js +35 -0
  123. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/startOfISOWeek.js +35 -0
  124. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/startOfISOWeekYear.js +42 -0
  125. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/startOfMonth.js +37 -0
  126. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/startOfWeek.js +53 -0
  127. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/startOfWeekYear.js +64 -0
  128. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/startOfYear.js +36 -0
  129. package/dist/node_modules/.pnpm/date-fns@4.4.0/node_modules/date-fns/toDate.js +46 -0
  130. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/DayPicker.js +346 -0
  131. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/UI.js +122 -0
  132. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/classes/CalendarDay.js +33 -0
  133. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/classes/CalendarMonth.js +14 -0
  134. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/classes/CalendarWeek.js +13 -0
  135. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/classes/DateLib.js +599 -0
  136. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/components/CaptionLabel.js +13 -0
  137. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/components/Chevron.js +18 -0
  138. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/components/Day.js +18 -0
  139. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/components/DayButton.js +19 -0
  140. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/components/Dropdown.js +23 -0
  141. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/components/DropdownNav.js +13 -0
  142. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/components/Footer.js +13 -0
  143. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/components/Month.js +15 -0
  144. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/components/MonthCaption.js +14 -0
  145. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/components/MonthGrid.js +13 -0
  146. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/components/Months.js +13 -0
  147. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/components/MonthsDropdown.js +15 -0
  148. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/components/Nav.js +31 -0
  149. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/components/NextMonthButton.js +13 -0
  150. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/components/Option.js +13 -0
  151. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/components/PreviousMonthButton.js +13 -0
  152. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/components/Root.js +14 -0
  153. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/components/Select.js +13 -0
  154. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/components/Week.js +14 -0
  155. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/components/WeekNumber.js +14 -0
  156. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/components/WeekNumberHeader.js +13 -0
  157. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/components/Weekday.js +13 -0
  158. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/components/Weekdays.js +14 -0
  159. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/components/Weeks.js +13 -0
  160. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/components/YearsDropdown.js +15 -0
  161. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/components/custom-components.js +25 -0
  162. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/formatters/formatCaption.js +20 -0
  163. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/formatters/formatDay.js +19 -0
  164. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/formatters/formatMonthDropdown.js +18 -0
  165. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumber.js +21 -0
  166. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumberHeader.js +13 -0
  167. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/formatters/formatWeekdayName.js +19 -0
  168. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/formatters/formatYearDropdown.js +17 -0
  169. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/formatters/index.js +7 -0
  170. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/helpers/calculateFocusTarget.js +73 -0
  171. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/helpers/createGetModifiers.js +95 -0
  172. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/helpers/endOfBroadcastWeek.js +22 -0
  173. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/helpers/getBroadcastWeeksInMonth.js +28 -0
  174. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/helpers/getClassNamesForModifiers.js +33 -0
  175. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/helpers/getComponents.js +20 -0
  176. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/helpers/getDataAttributes.js +27 -0
  177. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/helpers/getDates.js +59 -0
  178. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/helpers/getDays.js +19 -0
  179. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/helpers/getDefaultClassNames.js +33 -0
  180. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/helpers/getDisplayMonths.js +24 -0
  181. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/helpers/getFocusableDate.js +46 -0
  182. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/helpers/getFormatters.js +17 -0
  183. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/helpers/getInitialMonth.js +27 -0
  184. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/helpers/getLabels.js +53 -0
  185. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/helpers/getMonthOptions.js +33 -0
  186. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/helpers/getMonths.js +69 -0
  187. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/helpers/getNavMonth.js +31 -0
  188. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/helpers/getNextFocus.js +40 -0
  189. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/helpers/getNextMonth.js +36 -0
  190. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/helpers/getPreviousMonth.js +37 -0
  191. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/helpers/getStyleForModifiers.js +27 -0
  192. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/helpers/getWeekdays.js +26 -0
  193. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/helpers/getWeeks.js +14 -0
  194. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/helpers/getYearOptions.js +36 -0
  195. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/helpers/startOfBroadcastWeek.js +27 -0
  196. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/helpers/useControlledValue.js +31 -0
  197. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/labels/index.js +11 -0
  198. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/labels/labelDayButton.js +27 -0
  199. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/labels/labelGrid.js +20 -0
  200. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/labels/labelGridcell.js +22 -0
  201. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/labels/labelMonthDropdown.js +14 -0
  202. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/labels/labelNav.js +13 -0
  203. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/labels/labelNext.js +16 -0
  204. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/labels/labelPrevious.js +15 -0
  205. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/labels/labelWeekNumber.js +15 -0
  206. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/labels/labelWeekNumberHeader.js +14 -0
  207. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/labels/labelWeekday.js +18 -0
  208. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/labels/labelYearDropdown.js +14 -0
  209. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/locale/en-US.js +67 -0
  210. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/noonDateLib.js +163 -0
  211. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/selection/useMulti.js +57 -0
  212. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/selection/useRange.js +63 -0
  213. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/selection/useSingle.js +44 -0
  214. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/useAnimation.js +173 -0
  215. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/useCalendar.js +113 -0
  216. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/useDayPicker.js +25 -0
  217. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/useFocus.js +64 -0
  218. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/useSelection.js +31 -0
  219. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/utils/addToRange.js +95 -0
  220. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/utils/convertMatchersToTimeZone.js +61 -0
  221. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/utils/dateMatchModifiers.js +62 -0
  222. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/utils/rangeContainsDayOfWeek.js +30 -0
  223. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/utils/rangeContainsModifiers.js +74 -0
  224. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/utils/rangeIncludesDate.js +35 -0
  225. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/utils/rangeOverlaps.js +21 -0
  226. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/utils/toTimeZone.js +16 -0
  227. package/dist/node_modules/.pnpm/react-day-picker@10.0.2_@types_react@19.3.0_react@19.3.0/node_modules/react-day-picker/dist/esm/utils/typeguards.js +66 -0
  228. package/package.json +13 -11
@@ -0,0 +1,163 @@
1
+ import { TZDate } from '../../../../../@date-fns_tz@1.5.0/node_modules/@date-fns/tz/date/index.js';
2
+ import '../../../../../@date-fns_tz@1.5.0/node_modules/@date-fns/tz/date/mini.js';
3
+ import { differenceInCalendarDays } from '../../../../../date-fns@4.4.0/node_modules/date-fns/differenceInCalendarDays.js';
4
+ import { differenceInCalendarMonths } from '../../../../../date-fns@4.4.0/node_modules/date-fns/differenceInCalendarMonths.js';
5
+ import { getISOWeek } from '../../../../../date-fns@4.4.0/node_modules/date-fns/getISOWeek.js';
6
+ import { getWeek } from '../../../../../date-fns@4.4.0/node_modules/date-fns/getWeek.js';
7
+
8
+ /**
9
+ * Creates `dateLib` overrides that keep all calendar math at noon in the target
10
+ * time zone. This avoids second-level offset changes (e.g., historical zones
11
+ * with +03:41:12) from pushing dates backward across midnight.
12
+ */
13
+ function createNoonOverrides(timeZone, options = {}) {
14
+ const { weekStartsOn, locale } = options;
15
+ const fallbackWeekStartsOn = (weekStartsOn ??
16
+ locale?.options?.weekStartsOn ??
17
+ 0);
18
+ // Keep all internal math anchored at noon in the target zone to avoid
19
+ // historical second-level offsets from crossing midnight.
20
+ const toNoonTZDate = (date) => {
21
+ const normalizedDate = typeof date === "number" || typeof date === "string"
22
+ ? new Date(date)
23
+ : date;
24
+ return new TZDate(normalizedDate.getFullYear(), normalizedDate.getMonth(), normalizedDate.getDate(), 12, 0, 0, timeZone);
25
+ };
26
+ // Convert a value into a host `Date` that represents the same calendar day
27
+ // as the target-zone noon. This is useful for helpers (e.g., date-fns week
28
+ // utilities) that expect local `Date` instances rather than `TZDate`s.
29
+ const toCalendarDate = (date) => {
30
+ const zoned = toNoonTZDate(date);
31
+ return new Date(zoned.getFullYear(), zoned.getMonth(), zoned.getDate(), 0, 0, 0, 0);
32
+ };
33
+ return {
34
+ today: () => {
35
+ return toNoonTZDate(TZDate.tz(timeZone));
36
+ },
37
+ newDate: (year, monthIndex, date) => {
38
+ return new TZDate(year, monthIndex, date, 12, 0, 0, timeZone);
39
+ },
40
+ startOfDay: (date) => {
41
+ return toNoonTZDate(date);
42
+ },
43
+ startOfWeek: (date, options) => {
44
+ const base = toNoonTZDate(date);
45
+ const weekStartsOnValue = (options?.weekStartsOn ??
46
+ fallbackWeekStartsOn);
47
+ const diff = (base.getDay() - weekStartsOnValue + 7) % 7;
48
+ base.setDate(base.getDate() - diff);
49
+ return base;
50
+ },
51
+ startOfISOWeek: (date) => {
52
+ const base = toNoonTZDate(date);
53
+ const diff = (base.getDay() - 1 + 7) % 7;
54
+ base.setDate(base.getDate() - diff);
55
+ return base;
56
+ },
57
+ startOfMonth: (date) => {
58
+ const base = toNoonTZDate(date);
59
+ base.setDate(1);
60
+ return base;
61
+ },
62
+ startOfYear: (date) => {
63
+ const base = toNoonTZDate(date);
64
+ base.setMonth(0, 1);
65
+ return base;
66
+ },
67
+ endOfWeek: (date, options) => {
68
+ const base = toNoonTZDate(date);
69
+ const weekStartsOnValue = (options?.weekStartsOn ??
70
+ fallbackWeekStartsOn);
71
+ const endDow = (weekStartsOnValue + 6) % 7;
72
+ const diff = (endDow - base.getDay() + 7) % 7;
73
+ base.setDate(base.getDate() + diff);
74
+ return base;
75
+ },
76
+ endOfISOWeek: (date) => {
77
+ const base = toNoonTZDate(date);
78
+ const diff = (7 - base.getDay()) % 7;
79
+ base.setDate(base.getDate() + diff);
80
+ return base;
81
+ },
82
+ endOfMonth: (date) => {
83
+ const base = toNoonTZDate(date);
84
+ base.setMonth(base.getMonth() + 1, 0);
85
+ return base;
86
+ },
87
+ endOfYear: (date) => {
88
+ const base = toNoonTZDate(date);
89
+ base.setMonth(11, 31);
90
+ return base;
91
+ },
92
+ eachMonthOfInterval: (interval) => {
93
+ const start = toNoonTZDate(interval.start);
94
+ const end = toNoonTZDate(interval.end);
95
+ const result = [];
96
+ const cursor = new TZDate(start.getFullYear(), start.getMonth(), 1, 12, 0, 0, timeZone);
97
+ const endKey = end.getFullYear() * 12 + end.getMonth();
98
+ while (cursor.getFullYear() * 12 + cursor.getMonth() <= endKey) {
99
+ result.push(new TZDate(cursor, timeZone));
100
+ cursor.setMonth(cursor.getMonth() + 1, 1);
101
+ }
102
+ return result;
103
+ },
104
+ // Normalize to noon once before arithmetic (avoid DST/midnight edge cases),
105
+ // mutate the same TZDate, and return it.
106
+ addDays: (date, amount) => {
107
+ const base = toNoonTZDate(date);
108
+ base.setDate(base.getDate() + amount);
109
+ return base;
110
+ },
111
+ addWeeks: (date, amount) => {
112
+ const base = toNoonTZDate(date);
113
+ base.setDate(base.getDate() + amount * 7);
114
+ return base;
115
+ },
116
+ addMonths: (date, amount) => {
117
+ const base = toNoonTZDate(date);
118
+ base.setMonth(base.getMonth() + amount);
119
+ return base;
120
+ },
121
+ addYears: (date, amount) => {
122
+ const base = toNoonTZDate(date);
123
+ base.setFullYear(base.getFullYear() + amount);
124
+ return base;
125
+ },
126
+ eachYearOfInterval: (interval) => {
127
+ const start = toNoonTZDate(interval.start);
128
+ const end = toNoonTZDate(interval.end);
129
+ const years = [];
130
+ const cursor = new TZDate(start.getFullYear(), 0, 1, 12, 0, 0, timeZone);
131
+ while (cursor.getFullYear() <= end.getFullYear()) {
132
+ years.push(new TZDate(cursor, timeZone));
133
+ cursor.setFullYear(cursor.getFullYear() + 1, 0, 1);
134
+ }
135
+ return years;
136
+ },
137
+ getWeek: (date, options) => {
138
+ const base = toCalendarDate(date);
139
+ return getWeek(base, {
140
+ weekStartsOn: options?.weekStartsOn ?? fallbackWeekStartsOn,
141
+ firstWeekContainsDate: options?.firstWeekContainsDate ??
142
+ locale?.options?.firstWeekContainsDate ??
143
+ 1,
144
+ });
145
+ },
146
+ getISOWeek: (date) => {
147
+ const base = toCalendarDate(date);
148
+ return getISOWeek(base);
149
+ },
150
+ differenceInCalendarDays: (dateLeft, dateRight) => {
151
+ const left = toCalendarDate(dateLeft);
152
+ const right = toCalendarDate(dateRight);
153
+ return differenceInCalendarDays(left, right);
154
+ },
155
+ differenceInCalendarMonths: (dateLeft, dateRight) => {
156
+ const left = toCalendarDate(dateLeft);
157
+ const right = toCalendarDate(dateRight);
158
+ return differenceInCalendarMonths(left, right);
159
+ },
160
+ };
161
+ }
162
+
163
+ export { createNoonOverrides };
@@ -0,0 +1,57 @@
1
+ import { useControlledValue } from '../helpers/useControlledValue.js';
2
+
3
+ /**
4
+ * Hook to manage multiple-date selection in the DayPicker component.
5
+ *
6
+ * @template T - The type of DayPicker props.
7
+ * @param props - The DayPicker props.
8
+ * @param dateLib - The date utility library instance.
9
+ * @returns An object containing the selected dates, a function to select dates,
10
+ * and a function to check if a date is selected.
11
+ */
12
+ function useMulti(props, dateLib) {
13
+ const { selected: initiallySelected, required, onSelect, } = props;
14
+ const [internallySelected, setSelected] = useControlledValue(initiallySelected, onSelect ? initiallySelected : undefined);
15
+ const selected = !onSelect ? internallySelected : initiallySelected;
16
+ const { isSameDay } = dateLib;
17
+ const isSelected = (date) => {
18
+ return selected?.some((d) => isSameDay(d, date)) ?? false;
19
+ };
20
+ const { min, max } = props;
21
+ const select = (triggerDate, modifiers, e) => {
22
+ let newDates = [...(selected ?? [])];
23
+ if (isSelected(triggerDate)) {
24
+ if (selected?.length === min) {
25
+ // Min value reached, do nothing
26
+ return;
27
+ }
28
+ if (required && selected?.length === 1) {
29
+ // Required value already selected do nothing
30
+ return;
31
+ }
32
+ newDates = selected?.filter((d) => !isSameDay(d, triggerDate));
33
+ }
34
+ else {
35
+ if (selected?.length === max) {
36
+ // Max value reached, reset the selection to date
37
+ newDates = [triggerDate];
38
+ }
39
+ else {
40
+ // Add the date to the selection
41
+ newDates = [...newDates, triggerDate];
42
+ }
43
+ }
44
+ if (!onSelect) {
45
+ setSelected(newDates);
46
+ }
47
+ onSelect?.(newDates, triggerDate, modifiers, e);
48
+ return newDates;
49
+ };
50
+ return {
51
+ selected,
52
+ select,
53
+ isSelected,
54
+ };
55
+ }
56
+
57
+ export { useMulti };
@@ -0,0 +1,63 @@
1
+ import { useControlledValue } from '../helpers/useControlledValue.js';
2
+ import { rangeIncludesDate } from '../utils/rangeIncludesDate.js';
3
+ import { addToRange } from '../utils/addToRange.js';
4
+ import { rangeContainsModifiers } from '../utils/rangeContainsModifiers.js';
5
+
6
+ /**
7
+ * Hook to manage range selection in the DayPicker component.
8
+ *
9
+ * @template T - The type of DayPicker props.
10
+ * @param props - The DayPicker props.
11
+ * @param dateLib - The date utility library instance.
12
+ * @returns An object containing the selected range, a function to select a
13
+ * range, and a function to check if a date is within the range.
14
+ */
15
+ function useRange(props, dateLib) {
16
+ const { disabled, excludeDisabled, resetOnSelect, selected: initiallySelected, required, onSelect, } = props;
17
+ const [internallySelected, setSelected] = useControlledValue(initiallySelected, onSelect ? initiallySelected : undefined);
18
+ const selected = !onSelect ? internallySelected : initiallySelected;
19
+ const isSelected = (date) => selected && rangeIncludesDate(selected, date, false, dateLib);
20
+ const select = (triggerDate, modifiers, e) => {
21
+ const { min, max } = props;
22
+ let newRange;
23
+ if (triggerDate) {
24
+ const selectedFrom = selected?.from;
25
+ const selectedTo = selected?.to;
26
+ const hasFullRange = !!selectedFrom && !!selectedTo;
27
+ const isClickingSingleDayRange = !!selectedFrom &&
28
+ !!selectedTo &&
29
+ dateLib.isSameDay(selectedFrom, selectedTo) &&
30
+ dateLib.isSameDay(triggerDate, selectedFrom);
31
+ if (resetOnSelect && (hasFullRange || !selected?.from)) {
32
+ if (!required && isClickingSingleDayRange) {
33
+ newRange = undefined;
34
+ }
35
+ else {
36
+ newRange = { from: triggerDate, to: undefined };
37
+ }
38
+ }
39
+ else {
40
+ newRange = addToRange(triggerDate, selected, min, max, required, dateLib);
41
+ }
42
+ }
43
+ if (excludeDisabled && disabled && newRange?.from && newRange.to) {
44
+ if (rangeContainsModifiers({ from: newRange.from, to: newRange.to }, disabled, dateLib)) {
45
+ // if a disabled days is found, the range is reset
46
+ newRange.from = triggerDate;
47
+ newRange.to = undefined;
48
+ }
49
+ }
50
+ if (!onSelect) {
51
+ setSelected(newRange);
52
+ }
53
+ onSelect?.(newRange, triggerDate, modifiers, e);
54
+ return newRange;
55
+ };
56
+ return {
57
+ selected,
58
+ select,
59
+ isSelected,
60
+ };
61
+ }
62
+
63
+ export { useRange };
@@ -0,0 +1,44 @@
1
+ import { useControlledValue } from '../helpers/useControlledValue.js';
2
+
3
+ /**
4
+ * Hook to manage single-date selection in the DayPicker component.
5
+ *
6
+ * @template T - The type of DayPicker props.
7
+ * @param props - The DayPicker props.
8
+ * @param dateLib - The date utility library instance.
9
+ * @returns An object containing the selected date, a function to select a date,
10
+ * and a function to check if a date is selected.
11
+ */
12
+ function useSingle(props, dateLib) {
13
+ const { selected: initiallySelected, required, onSelect, } = props;
14
+ const [internallySelected, setSelected] = useControlledValue(initiallySelected, onSelect ? initiallySelected : undefined);
15
+ const selected = !onSelect ? internallySelected : initiallySelected;
16
+ const { isSameDay } = dateLib;
17
+ const isSelected = (compareDate) => {
18
+ return selected ? isSameDay(selected, compareDate) : false;
19
+ };
20
+ const select = (triggerDate, modifiers, e) => {
21
+ let newDate = triggerDate;
22
+ if (!required && selected && selected && isSameDay(triggerDate, selected)) {
23
+ // If the date is the same, clear the selection.
24
+ newDate = undefined;
25
+ }
26
+ if (!onSelect) {
27
+ setSelected(newDate);
28
+ }
29
+ if (required) {
30
+ onSelect?.(newDate, triggerDate, modifiers, e);
31
+ }
32
+ else {
33
+ onSelect?.(newDate, triggerDate, modifiers, e);
34
+ }
35
+ return newDate;
36
+ };
37
+ return {
38
+ selected,
39
+ select,
40
+ isSelected,
41
+ };
42
+ }
43
+
44
+ export { useSingle };
@@ -0,0 +1,173 @@
1
+ import { useRef, useLayoutEffect } from 'react';
2
+ import { Animation } from './UI.js';
3
+
4
+ const asHtmlElement = (element) => {
5
+ if (element instanceof HTMLElement)
6
+ return element;
7
+ return null;
8
+ };
9
+ const queryMonthEls = (element) => [
10
+ ...(element.querySelectorAll("[data-animated-month]") ?? []),
11
+ ];
12
+ const queryMonthEl = (element) => asHtmlElement(element.querySelector("[data-animated-month]"));
13
+ const queryCaptionEl = (element) => asHtmlElement(element.querySelector("[data-animated-caption]"));
14
+ const queryWeeksEl = (element) => asHtmlElement(element.querySelector("[data-animated-weeks]"));
15
+ const queryNavEl = (element) => asHtmlElement(element.querySelector("[data-animated-nav]"));
16
+ const queryWeekdaysEl = (element) => asHtmlElement(element.querySelector("[data-animated-weekdays]"));
17
+ /**
18
+ * Handles animations for transitioning between months in the DayPicker
19
+ * component.
20
+ *
21
+ * @private
22
+ * @param rootElRef - A reference to the root element of the DayPicker
23
+ * component.
24
+ * @param enabled - Whether animations are enabled.
25
+ * @param options - Configuration options for the animation, including class
26
+ * names, months, focused day, and the date utility library.
27
+ */
28
+ function useAnimation(rootElRef, enabled, { classNames, months, focused, dateLib, }) {
29
+ const previousRootElSnapshotRef = useRef(null);
30
+ const previousMonthsRef = useRef(months);
31
+ const animatingRef = useRef(false);
32
+ useLayoutEffect(() => {
33
+ // get previous months before updating the previous months ref
34
+ const previousMonths = previousMonthsRef.current;
35
+ // update previous months ref for next effect trigger
36
+ previousMonthsRef.current = months;
37
+ if (!enabled ||
38
+ !rootElRef.current ||
39
+ // safety check because the ref can be set to anything by consumers
40
+ !(rootElRef.current instanceof HTMLElement) ||
41
+ // validation required for the animation to work as expected
42
+ months.length === 0 ||
43
+ previousMonths.length === 0 ||
44
+ months.length !== previousMonths.length) {
45
+ return;
46
+ }
47
+ const isSameMonth = dateLib.isSameMonth(months[0].date, previousMonths[0].date);
48
+ const isAfterPreviousMonth = dateLib.isAfter(months[0].date, previousMonths[0].date);
49
+ const captionAnimationClass = isAfterPreviousMonth
50
+ ? classNames[Animation.caption_after_enter]
51
+ : classNames[Animation.caption_before_enter];
52
+ const weeksAnimationClass = isAfterPreviousMonth
53
+ ? classNames[Animation.weeks_after_enter]
54
+ : classNames[Animation.weeks_before_enter];
55
+ // get previous root element snapshot before updating the snapshot ref
56
+ const previousRootElSnapshot = previousRootElSnapshotRef.current;
57
+ // update snapshot for next effect trigger
58
+ const rootElSnapshot = rootElRef.current.cloneNode(true);
59
+ if (rootElSnapshot instanceof HTMLElement) {
60
+ // if this effect is triggered while animating, we need to clean up the new root snapshot
61
+ // to put it in the same state as when not animating, to correctly animate the next month change
62
+ const currentMonthElsSnapshot = queryMonthEls(rootElSnapshot);
63
+ currentMonthElsSnapshot.forEach((currentMonthElSnapshot) => {
64
+ if (!(currentMonthElSnapshot instanceof HTMLElement))
65
+ return;
66
+ // remove the old month snapshots from the new root snapshot
67
+ const previousMonthElSnapshot = queryMonthEl(currentMonthElSnapshot);
68
+ if (previousMonthElSnapshot &&
69
+ currentMonthElSnapshot.contains(previousMonthElSnapshot)) {
70
+ currentMonthElSnapshot.removeChild(previousMonthElSnapshot);
71
+ }
72
+ // remove animation classes from the new month snapshots
73
+ const captionEl = queryCaptionEl(currentMonthElSnapshot);
74
+ if (captionEl) {
75
+ captionEl.classList.remove(captionAnimationClass);
76
+ }
77
+ const weeksEl = queryWeeksEl(currentMonthElSnapshot);
78
+ if (weeksEl) {
79
+ weeksEl.classList.remove(weeksAnimationClass);
80
+ }
81
+ });
82
+ previousRootElSnapshotRef.current = rootElSnapshot;
83
+ }
84
+ else {
85
+ previousRootElSnapshotRef.current = null;
86
+ }
87
+ if (animatingRef.current ||
88
+ isSameMonth ||
89
+ // skip animation if a day is focused because it can cause issues to the animation and is better for a11y
90
+ focused) {
91
+ return;
92
+ }
93
+ const previousMonthEls = previousRootElSnapshot instanceof HTMLElement
94
+ ? queryMonthEls(previousRootElSnapshot)
95
+ : [];
96
+ const currentMonthEls = queryMonthEls(rootElRef.current);
97
+ if (currentMonthEls?.every((el) => el instanceof HTMLElement) &&
98
+ previousMonthEls?.every((el) => el instanceof HTMLElement)) {
99
+ animatingRef.current = true;
100
+ // set isolation to isolate to isolate the stacking context during animation
101
+ rootElRef.current.style.isolation = "isolate";
102
+ // set z-index to 1 to ensure the nav is clickable over the other elements being animated
103
+ const navEl = queryNavEl(rootElRef.current);
104
+ if (navEl) {
105
+ navEl.style.zIndex = "1";
106
+ }
107
+ currentMonthEls.forEach((currentMonthEl, index) => {
108
+ const previousMonthEl = previousMonthEls[index];
109
+ if (!previousMonthEl) {
110
+ return;
111
+ }
112
+ // animate new displayed month
113
+ currentMonthEl.style.position = "relative";
114
+ currentMonthEl.style.overflow = "hidden";
115
+ const captionEl = queryCaptionEl(currentMonthEl);
116
+ if (captionEl) {
117
+ captionEl.classList.add(captionAnimationClass);
118
+ }
119
+ const weeksEl = queryWeeksEl(currentMonthEl);
120
+ if (weeksEl) {
121
+ weeksEl.classList.add(weeksAnimationClass);
122
+ }
123
+ // animate new displayed month end
124
+ const cleanUp = () => {
125
+ animatingRef.current = false;
126
+ if (rootElRef.current) {
127
+ rootElRef.current.style.isolation = "";
128
+ }
129
+ if (navEl) {
130
+ navEl.style.zIndex = "";
131
+ }
132
+ if (captionEl) {
133
+ captionEl.classList.remove(captionAnimationClass);
134
+ }
135
+ if (weeksEl) {
136
+ weeksEl.classList.remove(weeksAnimationClass);
137
+ }
138
+ currentMonthEl.style.position = "";
139
+ currentMonthEl.style.overflow = "";
140
+ if (currentMonthEl.contains(previousMonthEl)) {
141
+ currentMonthEl.removeChild(previousMonthEl);
142
+ }
143
+ };
144
+ // animate old displayed month
145
+ previousMonthEl.style.pointerEvents = "none";
146
+ previousMonthEl.style.position = "absolute";
147
+ previousMonthEl.style.overflow = "hidden";
148
+ previousMonthEl.setAttribute("aria-hidden", "true");
149
+ // hide the weekdays container of the old month and only the new one
150
+ const previousWeekdaysEl = queryWeekdaysEl(previousMonthEl);
151
+ if (previousWeekdaysEl) {
152
+ previousWeekdaysEl.style.opacity = "0";
153
+ }
154
+ const previousCaptionEl = queryCaptionEl(previousMonthEl);
155
+ if (previousCaptionEl) {
156
+ previousCaptionEl.classList.add(isAfterPreviousMonth
157
+ ? classNames[Animation.caption_before_exit]
158
+ : classNames[Animation.caption_after_exit]);
159
+ previousCaptionEl.addEventListener("animationend", cleanUp);
160
+ }
161
+ const previousWeeksEl = queryWeeksEl(previousMonthEl);
162
+ if (previousWeeksEl) {
163
+ previousWeeksEl.classList.add(isAfterPreviousMonth
164
+ ? classNames[Animation.weeks_before_exit]
165
+ : classNames[Animation.weeks_after_exit]);
166
+ }
167
+ currentMonthEl.insertBefore(previousMonthEl, currentMonthEl.firstChild);
168
+ });
169
+ }
170
+ });
171
+ }
172
+
173
+ export { useAnimation };
@@ -0,0 +1,113 @@
1
+ import { useEffect, useMemo } from 'react';
2
+ import { getDates } from './helpers/getDates.js';
3
+ import { getDays } from './helpers/getDays.js';
4
+ import { getDisplayMonths } from './helpers/getDisplayMonths.js';
5
+ import { getInitialMonth } from './helpers/getInitialMonth.js';
6
+ import { getMonths } from './helpers/getMonths.js';
7
+ import { getNavMonths } from './helpers/getNavMonth.js';
8
+ import { getNextMonth } from './helpers/getNextMonth.js';
9
+ import { getPreviousMonth } from './helpers/getPreviousMonth.js';
10
+ import { getWeeks } from './helpers/getWeeks.js';
11
+ import { useControlledValue } from './helpers/useControlledValue.js';
12
+
13
+ /**
14
+ * Provides the calendar object to work with the calendar in custom components.
15
+ *
16
+ * @private
17
+ * @param props - The DayPicker props related to calendar configuration.
18
+ * @param dateLib - The date utility library instance.
19
+ * @returns The calendar object containing displayed days, weeks, months, and
20
+ * navigation methods.
21
+ */
22
+ function useCalendar(props, dateLib) {
23
+ const [navStart, navEnd] = getNavMonths(props, dateLib);
24
+ const { startOfMonth, endOfMonth } = dateLib;
25
+ const initialMonth = getInitialMonth(props, navStart, navEnd, dateLib);
26
+ const [firstMonth, setFirstMonth] = useControlledValue(initialMonth,
27
+ // initialMonth is always computed from props.month if provided
28
+ props.month ? initialMonth : undefined);
29
+ // biome-ignore lint/correctness/useExhaustiveDependencies: change the initial month when the time zone changes.
30
+ useEffect(() => {
31
+ const newInitialMonth = getInitialMonth(props, navStart, navEnd, dateLib);
32
+ setFirstMonth(newInitialMonth);
33
+ }, [props.timeZone]);
34
+ /** The months displayed in the calendar. */
35
+ // biome-ignore lint/correctness/useExhaustiveDependencies: We want to recompute only when specific props change.
36
+ const { months, weeks, days, previousMonth, nextMonth } = useMemo(() => {
37
+ const displayMonths = getDisplayMonths(firstMonth, navEnd, { numberOfMonths: props.numberOfMonths }, dateLib);
38
+ const dates = getDates(displayMonths, props.endMonth ? endOfMonth(props.endMonth) : undefined, {
39
+ ISOWeek: props.ISOWeek,
40
+ fixedWeeks: props.fixedWeeks,
41
+ broadcastCalendar: props.broadcastCalendar,
42
+ }, dateLib);
43
+ const months = getMonths(displayMonths, dates, {
44
+ broadcastCalendar: props.broadcastCalendar,
45
+ fixedWeeks: props.fixedWeeks,
46
+ ISOWeek: props.ISOWeek,
47
+ reverseMonths: props.reverseMonths,
48
+ }, dateLib);
49
+ const weeks = getWeeks(months);
50
+ const days = getDays(months);
51
+ const previousMonth = getPreviousMonth(firstMonth, navStart, props, dateLib);
52
+ const nextMonth = getNextMonth(firstMonth, navEnd, props, dateLib);
53
+ return {
54
+ months,
55
+ weeks,
56
+ days,
57
+ previousMonth,
58
+ nextMonth,
59
+ };
60
+ }, [
61
+ dateLib,
62
+ firstMonth.getTime(),
63
+ navEnd?.getTime(),
64
+ navStart?.getTime(),
65
+ props.disableNavigation,
66
+ props.broadcastCalendar,
67
+ props.endMonth?.getTime(),
68
+ props.fixedWeeks,
69
+ props.ISOWeek,
70
+ props.numberOfMonths,
71
+ props.pagedNavigation,
72
+ props.reverseMonths,
73
+ ]);
74
+ const { disableNavigation, onMonthChange } = props;
75
+ const isDayInCalendar = (day) => weeks.some((week) => week.days.some((d) => d.isEqualTo(day)));
76
+ const goToMonth = (date) => {
77
+ if (disableNavigation) {
78
+ return;
79
+ }
80
+ let newMonth = startOfMonth(date);
81
+ // if month is before start, use the first month instead
82
+ if (navStart && newMonth < startOfMonth(navStart)) {
83
+ newMonth = startOfMonth(navStart);
84
+ }
85
+ // if month is after endMonth, use the last month instead
86
+ if (navEnd && newMonth > startOfMonth(navEnd)) {
87
+ newMonth = startOfMonth(navEnd);
88
+ }
89
+ setFirstMonth(newMonth);
90
+ onMonthChange?.(newMonth);
91
+ };
92
+ const goToDay = (day) => {
93
+ // is this check necessary?
94
+ if (isDayInCalendar(day)) {
95
+ return;
96
+ }
97
+ goToMonth(day.date);
98
+ };
99
+ const calendar = {
100
+ months,
101
+ weeks,
102
+ days,
103
+ navStart,
104
+ navEnd,
105
+ previousMonth,
106
+ nextMonth,
107
+ goToMonth,
108
+ goToDay,
109
+ };
110
+ return calendar;
111
+ }
112
+
113
+ export { useCalendar };
@@ -0,0 +1,25 @@
1
+ import { createContext, useContext } from 'react';
2
+
3
+ /** @ignore */
4
+ const dayPickerContext = createContext(undefined);
5
+ /**
6
+ * Provides access to the DayPicker context, which includes properties and
7
+ * methods to interact with the DayPicker component. This hook must be used
8
+ * within a custom component.
9
+ *
10
+ * @template T - Use this type to refine the returned context type with a
11
+ * specific selection mode.
12
+ * @returns The context to work with DayPicker.
13
+ * @throws {Error} If the hook is used outside of a DayPicker provider.
14
+ * @group Hooks
15
+ * @see https://daypicker.dev/guides/custom-components
16
+ */
17
+ function useDayPicker() {
18
+ const context = useContext(dayPickerContext);
19
+ if (context === undefined) {
20
+ throw new Error("useDayPicker() must be used within a custom component.");
21
+ }
22
+ return context;
23
+ }
24
+
25
+ export { dayPickerContext, useDayPicker };