@modern-admin/web 0.4.2 → 0.5.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 (280) hide show
  1. package/dist/standalone/assets/action-component-host-QVowRL_F.js +2 -0
  2. package/dist/standalone/assets/action-component-host-QVowRL_F.js.br +0 -0
  3. package/dist/standalone/assets/action-component-host-QVowRL_F.js.gz +0 -0
  4. package/dist/standalone/assets/{action-component-host-P6HcuKj3.js.map → action-component-host-QVowRL_F.js.map} +1 -1
  5. package/dist/standalone/assets/action-page-CET1s1MA.js +2 -0
  6. package/dist/standalone/assets/action-page-CET1s1MA.js.br +0 -0
  7. package/dist/standalone/assets/action-page-CET1s1MA.js.gz +0 -0
  8. package/dist/standalone/assets/{action-page-kyqtK3oq.js.map → action-page-CET1s1MA.js.map} +1 -1
  9. package/dist/standalone/assets/ai-assistant-widget-pJHSP1PB.js +2 -0
  10. package/dist/standalone/assets/ai-assistant-widget-pJHSP1PB.js.br +0 -0
  11. package/dist/standalone/assets/ai-assistant-widget-pJHSP1PB.js.gz +0 -0
  12. package/dist/standalone/assets/{ai-assistant-widget-DGanix6u.js.map → ai-assistant-widget-pJHSP1PB.js.map} +1 -1
  13. package/dist/standalone/assets/audit-log-page-DoZPtbGo.js +2 -0
  14. package/dist/standalone/assets/audit-log-page-DoZPtbGo.js.br +0 -0
  15. package/dist/standalone/assets/audit-log-page-DoZPtbGo.js.gz +0 -0
  16. package/dist/standalone/assets/{audit-log-page-DozriTiA.js.map → audit-log-page-DoZPtbGo.js.map} +1 -1
  17. package/dist/standalone/assets/badge-8oeWEs3P.js +2 -0
  18. package/dist/standalone/assets/{badge-lb2Nqx1b.js.map → badge-8oeWEs3P.js.map} +1 -1
  19. package/dist/standalone/assets/cache-page-CoKusfv-.js +2 -0
  20. package/dist/standalone/assets/cache-page-CoKusfv-.js.br +0 -0
  21. package/dist/standalone/assets/cache-page-CoKusfv-.js.gz +0 -0
  22. package/dist/standalone/assets/cache-page-CoKusfv-.js.map +1 -0
  23. package/dist/standalone/assets/calendar-DDv0Qalf.js +2 -0
  24. package/dist/standalone/assets/calendar-DDv0Qalf.js.br +0 -0
  25. package/dist/standalone/assets/{calendar-crtd4PEn.js.gz → calendar-DDv0Qalf.js.gz} +0 -0
  26. package/dist/standalone/assets/{calendar-crtd4PEn.js.map → calendar-DDv0Qalf.js.map} +1 -1
  27. package/dist/standalone/assets/card-MNH_XK0V.js +2 -0
  28. package/dist/standalone/assets/card-MNH_XK0V.js.br +0 -0
  29. package/dist/standalone/assets/card-MNH_XK0V.js.gz +0 -0
  30. package/dist/standalone/assets/{card-Dh44j2Nb.js.map → card-MNH_XK0V.js.map} +1 -1
  31. package/dist/standalone/assets/chart-widget-R2NG5T1y.js +2 -0
  32. package/dist/standalone/assets/chart-widget-R2NG5T1y.js.br +0 -0
  33. package/dist/standalone/assets/chart-widget-R2NG5T1y.js.gz +0 -0
  34. package/dist/standalone/assets/{chart-widget-B819aHsE.js.map → chart-widget-R2NG5T1y.js.map} +1 -1
  35. package/dist/standalone/assets/command-Cw-hTtpk.js +2 -0
  36. package/dist/standalone/assets/command-Cw-hTtpk.js.br +0 -0
  37. package/dist/standalone/assets/command-Cw-hTtpk.js.gz +0 -0
  38. package/dist/standalone/assets/{command-xJ-6Grpv.js.map → command-Cw-hTtpk.js.map} +1 -1
  39. package/dist/standalone/assets/date-picker-DQ4XOgO6.js +2 -0
  40. package/dist/standalone/assets/date-picker-DQ4XOgO6.js.br +0 -0
  41. package/dist/standalone/assets/date-picker-DQ4XOgO6.js.gz +0 -0
  42. package/dist/standalone/assets/{date-picker-D0dWQEox.js.map → date-picker-DQ4XOgO6.js.map} +1 -1
  43. package/dist/standalone/assets/dist-CmyV2PEd.js +2 -0
  44. package/dist/standalone/assets/dist-CmyV2PEd.js.br +0 -0
  45. package/dist/standalone/assets/dist-CmyV2PEd.js.gz +0 -0
  46. package/dist/standalone/assets/{dist-UsTgBPww.js.map → dist-CmyV2PEd.js.map} +1 -1
  47. package/dist/standalone/assets/dist-DI9XNddW.js +2 -0
  48. package/dist/standalone/assets/dist-DI9XNddW.js.br +0 -0
  49. package/dist/standalone/assets/dist-DI9XNddW.js.gz +0 -0
  50. package/dist/standalone/assets/{dist-CWGgVQiS.js.map → dist-DI9XNddW.js.map} +1 -1
  51. package/dist/standalone/assets/dist-jC1pK2zN.js +2 -0
  52. package/dist/standalone/assets/dist-jC1pK2zN.js.br +0 -0
  53. package/dist/standalone/assets/dist-jC1pK2zN.js.gz +0 -0
  54. package/dist/standalone/assets/{dist-qlnAsTo_.js.map → dist-jC1pK2zN.js.map} +1 -1
  55. package/dist/standalone/assets/edit-page-CVjik6T5.js +2 -0
  56. package/dist/standalone/assets/edit-page-CVjik6T5.js.br +0 -0
  57. package/dist/standalone/assets/edit-page-CVjik6T5.js.gz +0 -0
  58. package/dist/standalone/assets/{edit-page-CFPwq1_5.js.map → edit-page-CVjik6T5.js.map} +1 -1
  59. package/dist/standalone/assets/empty-DcETRWsu.js +2 -0
  60. package/dist/standalone/assets/empty-DcETRWsu.js.br +0 -0
  61. package/dist/standalone/assets/empty-DcETRWsu.js.gz +0 -0
  62. package/dist/standalone/assets/{empty-D9sUunOr.js.map → empty-DcETRWsu.js.map} +1 -1
  63. package/dist/standalone/assets/floating-layer-DJGCYMex.js +2 -0
  64. package/dist/standalone/assets/floating-layer-DJGCYMex.js.br +0 -0
  65. package/dist/standalone/assets/floating-layer-DJGCYMex.js.gz +0 -0
  66. package/dist/standalone/assets/floating-layer-DJGCYMex.js.map +1 -0
  67. package/dist/standalone/assets/global-search-dialog-CT30gcRv.js +2 -0
  68. package/dist/standalone/assets/global-search-dialog-CT30gcRv.js.br +0 -0
  69. package/dist/standalone/assets/global-search-dialog-CT30gcRv.js.gz +0 -0
  70. package/dist/standalone/assets/{global-search-dialog-AfQmJSE7.js.map → global-search-dialog-CT30gcRv.js.map} +1 -1
  71. package/dist/standalone/assets/heavy-fields-ByzRCqe0.js +181 -0
  72. package/dist/standalone/assets/heavy-fields-ByzRCqe0.js.br +0 -0
  73. package/dist/standalone/assets/heavy-fields-ByzRCqe0.js.gz +0 -0
  74. package/dist/standalone/assets/{heavy-fields-_zVIBnm1.js.map → heavy-fields-ByzRCqe0.js.map} +1 -1
  75. package/dist/standalone/assets/home-page-B3WVGerG.js +3 -0
  76. package/dist/standalone/assets/home-page-B3WVGerG.js.br +0 -0
  77. package/dist/standalone/assets/home-page-B3WVGerG.js.gz +0 -0
  78. package/dist/standalone/assets/home-page-B3WVGerG.js.map +1 -0
  79. package/dist/standalone/assets/hooks-DHDUQgzs.js +186 -0
  80. package/dist/standalone/assets/hooks-DHDUQgzs.js.br +0 -0
  81. package/dist/standalone/assets/hooks-DHDUQgzs.js.gz +0 -0
  82. package/dist/standalone/assets/hooks-DHDUQgzs.js.map +1 -0
  83. package/dist/standalone/assets/icon-registry-O7MDzgTi.js +2 -0
  84. package/dist/standalone/assets/icon-registry-O7MDzgTi.js.br +0 -0
  85. package/dist/standalone/assets/icon-registry-O7MDzgTi.js.gz +0 -0
  86. package/dist/standalone/assets/icon-registry-O7MDzgTi.js.map +1 -0
  87. package/dist/standalone/assets/index-BvESJd1R.js +15 -0
  88. package/dist/standalone/assets/index-BvESJd1R.js.br +0 -0
  89. package/dist/standalone/assets/index-BvESJd1R.js.gz +0 -0
  90. package/dist/standalone/assets/index-BvESJd1R.js.map +1 -0
  91. package/dist/standalone/assets/index-DSYyF4Ah.css +2 -0
  92. package/dist/standalone/assets/index-DSYyF4Ah.css.br +0 -0
  93. package/dist/standalone/assets/index-DSYyF4Ah.css.gz +0 -0
  94. package/dist/standalone/assets/json-editor-DJ-yNmlx.js +2 -0
  95. package/dist/standalone/assets/json-editor-DJ-yNmlx.js.br +0 -0
  96. package/dist/standalone/assets/json-editor-DJ-yNmlx.js.gz +0 -0
  97. package/dist/standalone/assets/json-editor-DJ-yNmlx.js.map +1 -0
  98. package/dist/standalone/assets/property-renderer-DeykD9hp.js +7 -0
  99. package/dist/standalone/assets/property-renderer-DeykD9hp.js.br +0 -0
  100. package/dist/standalone/assets/property-renderer-DeykD9hp.js.gz +0 -0
  101. package/dist/standalone/assets/property-renderer-DeykD9hp.js.map +1 -0
  102. package/dist/standalone/assets/reference-BDP1QYCg.js +2 -0
  103. package/dist/standalone/assets/reference-BDP1QYCg.js.br +0 -0
  104. package/dist/standalone/assets/reference-BDP1QYCg.js.gz +0 -0
  105. package/dist/standalone/assets/{reference-DWJEoGIf.js.map → reference-BDP1QYCg.js.map} +1 -1
  106. package/dist/standalone/assets/revisions-button-CI74_D14.js +2 -0
  107. package/dist/standalone/assets/revisions-button-CI74_D14.js.br +0 -0
  108. package/dist/standalone/assets/revisions-button-CI74_D14.js.gz +0 -0
  109. package/dist/standalone/assets/{revisions-button-DR0oW2wX.js.map → revisions-button-CI74_D14.js.map} +1 -1
  110. package/dist/standalone/assets/{richtext-render-VFCKGulc.js → richtext-render-BHGG3eKV.js} +3 -3
  111. package/dist/standalone/assets/richtext-render-BHGG3eKV.js.br +0 -0
  112. package/dist/standalone/assets/richtext-render-BHGG3eKV.js.gz +0 -0
  113. package/dist/standalone/assets/{richtext-render-VFCKGulc.js.map → richtext-render-BHGG3eKV.js.map} +1 -1
  114. package/dist/standalone/assets/select-BR1RMqsn.js +2 -0
  115. package/dist/standalone/assets/select-BR1RMqsn.js.br +0 -0
  116. package/dist/standalone/assets/select-BR1RMqsn.js.gz +0 -0
  117. package/dist/standalone/assets/select-BR1RMqsn.js.map +1 -0
  118. package/dist/standalone/assets/settings-page-CdIWVeh0.js +2 -0
  119. package/dist/standalone/assets/settings-page-CdIWVeh0.js.br +0 -0
  120. package/dist/standalone/assets/settings-page-CdIWVeh0.js.gz +0 -0
  121. package/dist/standalone/assets/{settings-page-DSWp2N6T.js.map → settings-page-CdIWVeh0.js.map} +1 -1
  122. package/dist/standalone/assets/show-page-Dgw-9Pmn.js +2 -0
  123. package/dist/standalone/assets/show-page-Dgw-9Pmn.js.br +0 -0
  124. package/dist/standalone/assets/show-page-Dgw-9Pmn.js.gz +0 -0
  125. package/dist/standalone/assets/{show-page-CGzUAZoO.js.map → show-page-Dgw-9Pmn.js.map} +1 -1
  126. package/dist/standalone/assets/table-DzBSPeVH.js +2 -0
  127. package/dist/standalone/assets/table-DzBSPeVH.js.br +0 -0
  128. package/dist/standalone/assets/table-DzBSPeVH.js.gz +0 -0
  129. package/dist/standalone/assets/table-DzBSPeVH.js.map +1 -0
  130. package/dist/standalone/assets/tabs-Dr7UA219.js +2 -0
  131. package/dist/standalone/assets/tabs-Dr7UA219.js.br +0 -0
  132. package/dist/standalone/assets/tabs-Dr7UA219.js.gz +0 -0
  133. package/dist/standalone/assets/{tabs-smdw70rV.js.map → tabs-Dr7UA219.js.map} +1 -1
  134. package/dist/standalone/assets/textarea-T25SXcrC.js +2 -0
  135. package/dist/standalone/assets/{textarea-DBVf3GGt.js.map → textarea-T25SXcrC.js.map} +1 -1
  136. package/dist/standalone/assets/use-dashboard-charts-aymvhXUB.js +2 -0
  137. package/dist/standalone/assets/use-dashboard-charts-aymvhXUB.js.br +0 -0
  138. package/dist/standalone/assets/use-dashboard-charts-aymvhXUB.js.gz +0 -0
  139. package/dist/standalone/assets/{use-dashboard-charts-Cr3OUSL5.js.map → use-dashboard-charts-aymvhXUB.js.map} +1 -1
  140. package/dist/standalone/assets/useQueries-Dch5Ggjr.js +2 -0
  141. package/dist/standalone/assets/useQueries-Dch5Ggjr.js.br +0 -0
  142. package/dist/standalone/assets/useQueries-Dch5Ggjr.js.gz +0 -0
  143. package/dist/standalone/assets/{useQueries-Ba2PuYhZ.js.map → useQueries-Dch5Ggjr.js.map} +1 -1
  144. package/dist/standalone/assets/{user-directory-Df5X8VOe.js → user-directory-C33bGZdb.js} +3 -3
  145. package/dist/standalone/assets/user-directory-C33bGZdb.js.br +0 -0
  146. package/dist/standalone/assets/user-directory-C33bGZdb.js.gz +0 -0
  147. package/dist/standalone/assets/{user-directory-Df5X8VOe.js.map → user-directory-C33bGZdb.js.map} +1 -1
  148. package/dist/standalone/assets/{value-format-BUeGtfH4.js → value-format-CLzWct9Y.js} +16 -16
  149. package/dist/standalone/assets/value-format-CLzWct9Y.js.br +0 -0
  150. package/dist/standalone/assets/value-format-CLzWct9Y.js.gz +0 -0
  151. package/dist/standalone/assets/{value-format-BUeGtfH4.js.map → value-format-CLzWct9Y.js.map} +1 -1
  152. package/dist/standalone/assets/wizard-create-page-BtfveXmP.js +2 -0
  153. package/dist/standalone/assets/wizard-create-page-BtfveXmP.js.br +0 -0
  154. package/dist/standalone/assets/wizard-create-page-BtfveXmP.js.gz +0 -0
  155. package/dist/standalone/assets/{wizard-create-page-B8IcszRF.js.map → wizard-create-page-BtfveXmP.js.map} +1 -1
  156. package/dist/standalone/assets/zod-N7mHo7BX.js +2 -0
  157. package/dist/standalone/assets/zod-N7mHo7BX.js.br +0 -0
  158. package/dist/standalone/assets/zod-N7mHo7BX.js.gz +0 -0
  159. package/dist/standalone/assets/{zod-mi61gVha.js.map → zod-N7mHo7BX.js.map} +1 -1
  160. package/dist/standalone/index.html +10 -10
  161. package/dist/standalone/index.html.br +0 -0
  162. package/dist/standalone/index.html.gz +0 -0
  163. package/package.json +5 -5
  164. package/dist/standalone/assets/action-component-host-P6HcuKj3.js +0 -2
  165. package/dist/standalone/assets/action-component-host-P6HcuKj3.js.br +0 -0
  166. package/dist/standalone/assets/action-component-host-P6HcuKj3.js.gz +0 -0
  167. package/dist/standalone/assets/action-page-kyqtK3oq.js +0 -2
  168. package/dist/standalone/assets/action-page-kyqtK3oq.js.br +0 -0
  169. package/dist/standalone/assets/action-page-kyqtK3oq.js.gz +0 -0
  170. package/dist/standalone/assets/ai-assistant-widget-DGanix6u.js +0 -2
  171. package/dist/standalone/assets/ai-assistant-widget-DGanix6u.js.br +0 -0
  172. package/dist/standalone/assets/ai-assistant-widget-DGanix6u.js.gz +0 -0
  173. package/dist/standalone/assets/audit-log-page-DozriTiA.js +0 -2
  174. package/dist/standalone/assets/audit-log-page-DozriTiA.js.br +0 -0
  175. package/dist/standalone/assets/audit-log-page-DozriTiA.js.gz +0 -0
  176. package/dist/standalone/assets/badge-lb2Nqx1b.js +0 -2
  177. package/dist/standalone/assets/calendar-crtd4PEn.js +0 -2
  178. package/dist/standalone/assets/calendar-crtd4PEn.js.br +0 -0
  179. package/dist/standalone/assets/card-Dh44j2Nb.js +0 -2
  180. package/dist/standalone/assets/card-Dh44j2Nb.js.br +0 -0
  181. package/dist/standalone/assets/card-Dh44j2Nb.js.gz +0 -0
  182. package/dist/standalone/assets/chart-widget-B819aHsE.js +0 -2
  183. package/dist/standalone/assets/chart-widget-B819aHsE.js.br +0 -0
  184. package/dist/standalone/assets/chart-widget-B819aHsE.js.gz +0 -0
  185. package/dist/standalone/assets/command-xJ-6Grpv.js +0 -2
  186. package/dist/standalone/assets/command-xJ-6Grpv.js.br +0 -0
  187. package/dist/standalone/assets/command-xJ-6Grpv.js.gz +0 -0
  188. package/dist/standalone/assets/date-picker-D0dWQEox.js +0 -2
  189. package/dist/standalone/assets/date-picker-D0dWQEox.js.br +0 -0
  190. package/dist/standalone/assets/date-picker-D0dWQEox.js.gz +0 -0
  191. package/dist/standalone/assets/dist-CWGgVQiS.js +0 -2
  192. package/dist/standalone/assets/dist-CWGgVQiS.js.br +0 -0
  193. package/dist/standalone/assets/dist-CWGgVQiS.js.gz +0 -0
  194. package/dist/standalone/assets/dist-UsTgBPww.js +0 -2
  195. package/dist/standalone/assets/dist-UsTgBPww.js.br +0 -0
  196. package/dist/standalone/assets/dist-UsTgBPww.js.gz +0 -0
  197. package/dist/standalone/assets/dist-qlnAsTo_.js +0 -2
  198. package/dist/standalone/assets/dist-qlnAsTo_.js.br +0 -0
  199. package/dist/standalone/assets/dist-qlnAsTo_.js.gz +0 -0
  200. package/dist/standalone/assets/edit-page-CFPwq1_5.js +0 -2
  201. package/dist/standalone/assets/edit-page-CFPwq1_5.js.br +0 -0
  202. package/dist/standalone/assets/edit-page-CFPwq1_5.js.gz +0 -0
  203. package/dist/standalone/assets/empty-D9sUunOr.js +0 -2
  204. package/dist/standalone/assets/empty-D9sUunOr.js.br +0 -0
  205. package/dist/standalone/assets/empty-D9sUunOr.js.gz +0 -0
  206. package/dist/standalone/assets/global-search-dialog-AfQmJSE7.js +0 -2
  207. package/dist/standalone/assets/global-search-dialog-AfQmJSE7.js.br +0 -0
  208. package/dist/standalone/assets/global-search-dialog-AfQmJSE7.js.gz +0 -0
  209. package/dist/standalone/assets/heavy-fields-_zVIBnm1.js +0 -181
  210. package/dist/standalone/assets/heavy-fields-_zVIBnm1.js.br +0 -0
  211. package/dist/standalone/assets/heavy-fields-_zVIBnm1.js.gz +0 -0
  212. package/dist/standalone/assets/home-page-BdTrAXqk.js +0 -3
  213. package/dist/standalone/assets/home-page-BdTrAXqk.js.br +0 -0
  214. package/dist/standalone/assets/home-page-BdTrAXqk.js.gz +0 -0
  215. package/dist/standalone/assets/home-page-BdTrAXqk.js.map +0 -1
  216. package/dist/standalone/assets/icon-registry-CcMm2Zh3.js +0 -2
  217. package/dist/standalone/assets/icon-registry-CcMm2Zh3.js.br +0 -0
  218. package/dist/standalone/assets/icon-registry-CcMm2Zh3.js.gz +0 -0
  219. package/dist/standalone/assets/icon-registry-CcMm2Zh3.js.map +0 -1
  220. package/dist/standalone/assets/index-DHZwffoP.css +0 -2
  221. package/dist/standalone/assets/index-DHZwffoP.css.br +0 -0
  222. package/dist/standalone/assets/index-DHZwffoP.css.gz +0 -0
  223. package/dist/standalone/assets/index-uYpCUVT4.js +0 -15
  224. package/dist/standalone/assets/index-uYpCUVT4.js.br +0 -0
  225. package/dist/standalone/assets/index-uYpCUVT4.js.gz +0 -0
  226. package/dist/standalone/assets/index-uYpCUVT4.js.map +0 -1
  227. package/dist/standalone/assets/json-editor-yfO4TUB_.js +0 -2
  228. package/dist/standalone/assets/json-editor-yfO4TUB_.js.br +0 -0
  229. package/dist/standalone/assets/json-editor-yfO4TUB_.js.gz +0 -0
  230. package/dist/standalone/assets/json-editor-yfO4TUB_.js.map +0 -1
  231. package/dist/standalone/assets/property-renderer-CDKsa2KQ.js +0 -7
  232. package/dist/standalone/assets/property-renderer-CDKsa2KQ.js.br +0 -0
  233. package/dist/standalone/assets/property-renderer-CDKsa2KQ.js.gz +0 -0
  234. package/dist/standalone/assets/property-renderer-CDKsa2KQ.js.map +0 -1
  235. package/dist/standalone/assets/reference-DWJEoGIf.js +0 -2
  236. package/dist/standalone/assets/reference-DWJEoGIf.js.br +0 -0
  237. package/dist/standalone/assets/reference-DWJEoGIf.js.gz +0 -0
  238. package/dist/standalone/assets/revisions-button-DR0oW2wX.js +0 -2
  239. package/dist/standalone/assets/revisions-button-DR0oW2wX.js.br +0 -0
  240. package/dist/standalone/assets/revisions-button-DR0oW2wX.js.gz +0 -0
  241. package/dist/standalone/assets/richtext-render-VFCKGulc.js.br +0 -0
  242. package/dist/standalone/assets/richtext-render-VFCKGulc.js.gz +0 -0
  243. package/dist/standalone/assets/router-BcZgB5cZ.js +0 -186
  244. package/dist/standalone/assets/router-BcZgB5cZ.js.br +0 -0
  245. package/dist/standalone/assets/router-BcZgB5cZ.js.gz +0 -0
  246. package/dist/standalone/assets/router-BcZgB5cZ.js.map +0 -1
  247. package/dist/standalone/assets/select-BiV9bunJ.js +0 -2
  248. package/dist/standalone/assets/select-BiV9bunJ.js.br +0 -0
  249. package/dist/standalone/assets/select-BiV9bunJ.js.gz +0 -0
  250. package/dist/standalone/assets/select-BiV9bunJ.js.map +0 -1
  251. package/dist/standalone/assets/settings-page-DSWp2N6T.js +0 -2
  252. package/dist/standalone/assets/settings-page-DSWp2N6T.js.br +0 -0
  253. package/dist/standalone/assets/settings-page-DSWp2N6T.js.gz +0 -0
  254. package/dist/standalone/assets/show-page-CGzUAZoO.js +0 -2
  255. package/dist/standalone/assets/show-page-CGzUAZoO.js.br +0 -0
  256. package/dist/standalone/assets/show-page-CGzUAZoO.js.gz +0 -0
  257. package/dist/standalone/assets/tabs-smdw70rV.js +0 -2
  258. package/dist/standalone/assets/tabs-smdw70rV.js.br +0 -0
  259. package/dist/standalone/assets/tabs-smdw70rV.js.gz +0 -0
  260. package/dist/standalone/assets/textarea-DBVf3GGt.js +0 -2
  261. package/dist/standalone/assets/use-dashboard-charts-Cr3OUSL5.js +0 -2
  262. package/dist/standalone/assets/use-dashboard-charts-Cr3OUSL5.js.br +0 -0
  263. package/dist/standalone/assets/use-dashboard-charts-Cr3OUSL5.js.gz +0 -0
  264. package/dist/standalone/assets/useQueries-Ba2PuYhZ.js +0 -2
  265. package/dist/standalone/assets/useQueries-Ba2PuYhZ.js.br +0 -0
  266. package/dist/standalone/assets/useQueries-Ba2PuYhZ.js.gz +0 -0
  267. package/dist/standalone/assets/user-directory-Df5X8VOe.js.br +0 -0
  268. package/dist/standalone/assets/user-directory-Df5X8VOe.js.gz +0 -0
  269. package/dist/standalone/assets/value-format-BUeGtfH4.js.br +0 -0
  270. package/dist/standalone/assets/value-format-BUeGtfH4.js.gz +0 -0
  271. package/dist/standalone/assets/with-selector-id7qGzTH.js +0 -2
  272. package/dist/standalone/assets/with-selector-id7qGzTH.js.br +0 -0
  273. package/dist/standalone/assets/with-selector-id7qGzTH.js.gz +0 -0
  274. package/dist/standalone/assets/with-selector-id7qGzTH.js.map +0 -1
  275. package/dist/standalone/assets/wizard-create-page-B8IcszRF.js +0 -2
  276. package/dist/standalone/assets/wizard-create-page-B8IcszRF.js.br +0 -0
  277. package/dist/standalone/assets/wizard-create-page-B8IcszRF.js.gz +0 -0
  278. package/dist/standalone/assets/zod-mi61gVha.js +0 -2
  279. package/dist/standalone/assets/zod-mi61gVha.js.br +0 -0
  280. package/dist/standalone/assets/zod-mi61gVha.js.gz +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"audit-log-page-DozriTiA.js","names":[],"sources":["../../../../ui/src/components/date-range-input.tsx","../../../../react/src/pages/audit-log-page.tsx"],"sourcesContent":["// Popover-driven date-range picker.\n// A single trigger button shows the selected range (or placeholder);\n// clicking opens a popover with a two-month Calendar in range mode.\n// On narrow screens the calendar collapses to a single month.\n//\n// UX notes:\n// - The picker NEVER auto-closes on date selection — the user confirms\n// explicitly via the \"Apply\" button. This prevents the \"first click\n// closes the picker\" bug that occurs when a partial pending range\n// (from without to) is in state and the next click completes it.\n// - \"Clear\" inside the popover empties the range and closes.\n// - The X inline in the trigger clears directly without opening the picker.\n// - On open: only a COMPLETE committed range (both ends) is mirrored into\n// the calendar state so the user can edit from a known baseline.\n// A committed partial range (from only) resets to blank to avoid\n// accidentally completing it on the first click.\n// - Escape / click-outside discards in-progress selection and reverts to\n// the last committed range.\n//\n// i18n-unaware by design: all visible strings are passed via `labels`.\n\nimport * as React from 'react'\nimport { addMonths, format, isSameMonth, isValid, parse, parseISO, startOfMonth } from 'date-fns'\nimport { CalendarRange, X } from 'lucide-react'\nimport type { DateRange } from 'react-day-picker'\nimport { cn } from '../lib/utils.js'\nimport { Button } from './button.js'\nimport { Calendar } from './calendar.js'\nimport { Popover, PopoverContent, PopoverTrigger } from './popover.js'\n\nconst DATE_FMT = 'yyyy-MM-dd'\nconst DISPLAY_FMT = 'MMM d, yyyy'\n\nfunction parseDate(value: string | null | undefined): Date | undefined {\n if (!value) return undefined\n const d = value.length <= 10 ? parse(value, DATE_FMT, new Date()) : parseISO(value)\n return isValid(d) ? d : undefined\n}\n\nexport interface DateRangeInputLabels {\n /** Shown in the trigger when nothing is selected. */\n placeholder?: string\n /** \"Apply\" button inside the popover footer. */\n apply?: string\n /** \"Clear\" button inside the popover footer + aria-label for the inline X. */\n clear?: string\n}\n\nexport interface DateRangeInputProps {\n from: string | null | undefined\n to: string | null | undefined\n onChange(from: string, to: string): void\n disabled?: boolean\n className?: string\n labels?: DateRangeInputLabels\n}\n\nexport function DateRangeInput({\n from,\n to,\n onChange,\n disabled,\n className,\n labels = {},\n}: DateRangeInputProps): React.ReactElement {\n const placeholder = labels.placeholder ?? 'Select date range'\n const applyLabel = labels.apply ?? 'Apply'\n const clearLabel = labels.clear ?? 'Clear'\n\n const [open, setOpen] = React.useState(false)\n\n // Calendar selection in progress. Committed to onChange only via Apply.\n const [pending, setPending] = React.useState<DateRange | undefined>(() => {\n const f = parseDate(from)\n const t = parseDate(to)\n // Only restore a complete range on init — partial ranges start fresh.\n return f && t ? { from: f, to: t } : undefined\n })\n\n // Keep pending in sync when props change externally (e.g. programmatic reset).\n React.useEffect(() => {\n const f = parseDate(from)\n const t = parseDate(to)\n setPending(f ?? t ? { from: f, to: t } : undefined)\n }, [from, to])\n\n // Number of calendar months — 1 on narrow, 2 on wide viewports.\n const [months, setMonths] = React.useState(() =>\n typeof window !== 'undefined' && window.innerWidth >= 640 ? 2 : 1,\n )\n React.useEffect(() => {\n const mq = window.matchMedia('(min-width: 640px)')\n const handle = (e: MediaQueryListEvent): void => setMonths(e.matches ? 2 : 1)\n setMonths(mq.matches ? 2 : 1)\n mq.addEventListener('change', handle)\n return () => mq.removeEventListener('change', handle)\n }, [])\n\n // Independent navigation for the two-panel layout. Each panel keeps its\n // own visible month; the dropdowns on the right are constrained to\n // months >= left (and the left to months <= right) so the panels can\n // never cross over. State is (re)initialised from the committed range\n // every time the popover opens (see `handleOpenChange`).\n const [leftMonth, setLeftMonth] = React.useState<Date>(() => {\n const f = parseDate(from)\n return startOfMonth(f ?? new Date())\n })\n const [rightMonth, setRightMonth] = React.useState<Date>(() => {\n const f = parseDate(from)\n const t = parseDate(to)\n const left = startOfMonth(f ?? new Date())\n return t && !isSameMonth(left, t) ? startOfMonth(t) : addMonths(left, 1)\n })\n\n const handleOpenChange = (next: boolean): void => {\n if (next) {\n // On open: only restore a COMPLETE committed range so the user sees\n // their previous selection as a starting point. A partial range\n // (from without to) is intentionally dropped — carrying it over\n // would cause the very next calendar click to \"complete\" the range\n // and trigger an immediate commit + close.\n const f = parseDate(from)\n const t = parseDate(to)\n setPending(f && t ? { from: f, to: t } : undefined)\n // Re-derive panel navigation from the committed range so reopening\n // always lands the user on the months they were last looking at —\n // independently for the left and right panels.\n const left = startOfMonth(f ?? new Date())\n const right = t && !isSameMonth(left, t)\n ? startOfMonth(t)\n : addMonths(left, 1)\n setLeftMonth(left)\n setRightMonth(right)\n } else {\n // Closed without Apply (Escape / outside click) — discard in-progress\n // selection and revert to the last committed values.\n const f = parseDate(from)\n const t = parseDate(to)\n setPending(f ?? t ? { from: f, to: t } : undefined)\n }\n setOpen(next)\n }\n\n // Navigation guards. The right panel can never cross above the left's\n // month, and the left can never cross above the right's. If a user\n // navigates the LEFT forward past the right (via the prev/next arrow\n // when the dropdown bounds don't disable it), push the right one month\n // ahead; symmetric for the right going below the left.\n const handleLeftMonthChange = (next: Date): void => {\n setLeftMonth(next)\n if (!isSameMonth(next, rightMonth) && next > rightMonth) {\n setRightMonth(addMonths(next, 1))\n }\n }\n const handleRightMonthChange = (next: Date): void => {\n setRightMonth(next)\n if (!isSameMonth(next, leftMonth) && next < leftMonth) {\n setLeftMonth(addMonths(next, -1))\n }\n }\n\n // Update the in-progress selection; never auto-commit.\n const handleSelect = (range: DateRange | undefined): void => {\n setPending(range)\n }\n\n // Commit whatever is pending (at minimum a start date) and close.\n const handleApply = (): void => {\n if (pending?.from) {\n onChange(\n format(pending.from, DATE_FMT),\n pending.to ? format(pending.to, DATE_FMT) : '',\n )\n }\n setOpen(false)\n }\n\n // Clear inside the popover: empty the committed range and close.\n const handleClearPopover = (): void => {\n setPending(undefined)\n onChange('', '')\n setOpen(false)\n }\n\n // Inline X on the trigger: clear committed range without opening the picker.\n const handleClearInline = (e: React.MouseEvent): void => {\n e.stopPropagation()\n setPending(undefined)\n onChange('', '')\n }\n\n const fromDate = parseDate(from)\n const toDate = parseDate(to)\n const hasValue = !!(from || to)\n\n const displayText = hasValue\n ? [\n fromDate ? format(fromDate, DISPLAY_FMT) : '…',\n toDate ? format(toDate, DISPLAY_FMT) : '…',\n ].join(' – ')\n : null\n\n return (\n <Popover open={open} onOpenChange={handleOpenChange}>\n <PopoverTrigger asChild>\n <Button\n type=\"button\"\n variant=\"outline\"\n disabled={disabled}\n className={cn(\n 'h-9 w-full justify-start gap-2 px-3 font-normal',\n !hasValue && 'text-muted-foreground',\n className,\n )}\n >\n <CalendarRange className=\"size-4 shrink-0 opacity-60\" />\n <span className=\"flex-1 truncate text-left text-sm\">\n {displayText ?? placeholder}\n </span>\n {hasValue && (\n <span\n role=\"button\"\n tabIndex={0}\n aria-label={clearLabel}\n onClick={handleClearInline}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n handleClearInline(e as unknown as React.MouseEvent)\n }\n }}\n className=\"ml-1 rounded-sm p-0.5 opacity-50 hover:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n >\n <X className=\"size-3.5\" />\n </span>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n {months === 2 ? (\n // Two-panel layout: each Calendar is a fully independent single-\n // month instance with its own controlled `month` state. The left\n // panel's dropdowns can't reach past the right panel's month\n // (and vice versa) thanks to the shared start/end-month bounds.\n // Range selection still spans both panels because they share\n // the same `selected` + `onSelect`.\n <div className=\"flex flex-col sm:flex-row\">\n <Calendar\n mode=\"range\"\n selected={pending}\n onSelect={handleSelect}\n numberOfMonths={1}\n month={leftMonth}\n onMonthChange={handleLeftMonthChange}\n endMonth={rightMonth}\n autoFocus\n />\n <Calendar\n mode=\"range\"\n selected={pending}\n onSelect={handleSelect}\n numberOfMonths={1}\n month={rightMonth}\n onMonthChange={handleRightMonthChange}\n startMonth={leftMonth}\n />\n </div>\n ) : (\n <Calendar\n mode=\"range\"\n selected={pending}\n onSelect={handleSelect}\n numberOfMonths={1}\n // react-day-picker doesn't auto-navigate to the selected range on\n // mount — it stays on today's month. The popover re-mounts the\n // Calendar each time it opens, so deriving `defaultMonth` from\n // the (already-restored) pending range puts the user back where\n // they left off without controlling navigation explicitly.\n defaultMonth={pending?.from ?? pending?.to ?? undefined}\n autoFocus\n />\n )}\n <div className=\"flex items-center justify-between border-t border-border px-3 py-2\">\n <Button variant=\"ghost\" size=\"sm\" onClick={handleClearPopover}>\n {clearLabel}\n </Button>\n <Button size=\"sm\" onClick={handleApply} disabled={!pending?.from}>\n {applyLabel}\n </Button>\n </div>\n </PopoverContent>\n </Popover>\n )\n}\n\nDateRangeInput.displayName = 'DateRangeInput'\n","import * as React from 'react'\nimport { diffSnapshots } from '@modern-admin/core'\nimport {\n Button,\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n DateRangeInput,\n DiffView,\n Input,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n Skeleton,\n cn,\n} from '@modern-admin/ui'\nimport { ChevronDown, ChevronUp, ExternalLink, FilePlus, FileText, Key, KeyRound, Loader2, LogIn, Pencil, Trash2 } from 'lucide-react'\nimport { useInfiniteAuditLog, useRecord, useRecordHistory, useResource, useResources } from '../hooks.js'\nimport { useI18n } from '../i18n.js'\nimport { Link } from '../router.js'\nimport { USERS_RESOURCE_ID, useUserDirectory, userLabelOf } from '../user-directory.js'\nimport type {\n AuditLogEntry,\n AuditLogQuery,\n HistoryDiffEntry,\n HistoryRevision,\n} from '../client.js'\nimport type { RecordJSON, ResourceJSON } from '../types.js'\n\nconst ALL = '__all__'\nconst ACTIONS = ['new', 'edit', 'delete', 'bulkDelete', 'login', 'apiKey.create', 'apiKey.update', 'apiKey.delete']\n/** Virtual resource IDs that don't map to ORM resources. */\nconst VIRTUAL_RESOURCE_LABELS: Record<string, string> = {\n __auth__: 'audit:virtualResource.auth',\n __api_keys__: 'audit:virtualResource.apiKeys',\n}\ninterface ActionStyle {\n Icon: React.ComponentType<{ className?: string }>\n iconClass: string\n bgClass: string\n titleKey: string\n}\n\nconst FALLBACK_STYLE: ActionStyle = {\n Icon: FileText,\n iconClass: 'text-muted-foreground',\n bgClass: 'bg-muted',\n titleKey: '',\n}\n\nconst ACTION_STYLES: Record<string, ActionStyle> = {\n new: {\n Icon: FilePlus,\n iconClass: 'text-blue-600 dark:text-blue-300',\n bgClass: 'bg-blue-100 dark:bg-blue-950/40',\n titleKey: 'audit:action.new',\n },\n edit: {\n Icon: Pencil,\n iconClass: 'text-emerald-600 dark:text-emerald-300',\n bgClass: 'bg-emerald-100 dark:bg-emerald-950/40',\n titleKey: 'audit:action.edit',\n },\n delete: {\n Icon: Trash2,\n iconClass: 'text-rose-600 dark:text-rose-300',\n bgClass: 'bg-rose-100 dark:bg-rose-950/40',\n titleKey: 'audit:action.delete',\n },\n bulkDelete: {\n Icon: Trash2,\n iconClass: 'text-rose-600 dark:text-rose-300',\n bgClass: 'bg-rose-100 dark:bg-rose-950/40',\n titleKey: 'audit:action.bulkDelete',\n },\n login: {\n Icon: LogIn,\n iconClass: 'text-violet-600 dark:text-violet-300',\n bgClass: 'bg-violet-100 dark:bg-violet-950/40',\n titleKey: 'audit:action.login',\n },\n 'apiKey.create': {\n Icon: Key,\n iconClass: 'text-amber-600 dark:text-amber-300',\n bgClass: 'bg-amber-100 dark:bg-amber-950/40',\n titleKey: 'audit:action.apiKeyCreate',\n },\n 'apiKey.update': {\n Icon: KeyRound,\n iconClass: 'text-amber-600 dark:text-amber-300',\n bgClass: 'bg-amber-100 dark:bg-amber-950/40',\n titleKey: 'audit:action.apiKeyUpdate',\n },\n 'apiKey.delete': {\n Icon: Trash2,\n iconClass: 'text-rose-600 dark:text-rose-300',\n bgClass: 'bg-rose-100 dark:bg-rose-950/40',\n titleKey: 'audit:action.apiKeyDelete',\n },\n}\n\n/** Format `entry.at` (unix-ms) as a relative phrase like \"2m ago\", falling\n * back to absolute date for entries older than a week. Uses\n * `Intl.RelativeTimeFormat` so output is locale-aware. */\nfunction useRelativeTimeFormatter(\n locale: string,\n): (atMs: number, nowMs: number) => string {\n const rtf = React.useMemo(\n () => new Intl.RelativeTimeFormat(locale, { numeric: 'auto' }),\n [locale],\n )\n const dtf = React.useMemo(\n () => new Intl.DateTimeFormat(locale, { dateStyle: 'medium', timeStyle: 'short' }),\n [locale],\n )\n return React.useCallback(\n (atMs, nowMs) => {\n const sec = Math.round((nowMs - atMs) / 1000)\n if (sec < 45) return rtf.format(-Math.max(sec, 0), 'second')\n if (sec < 3600) return rtf.format(-Math.round(sec / 60), 'minute')\n if (sec < 86400) return rtf.format(-Math.round(sec / 3600), 'hour')\n if (sec < 86400 * 7) return rtf.format(-Math.round(sec / 86400), 'day')\n return dtf.format(new Date(atMs))\n },\n [dtf, rtf],\n )\n}\n\nconst initialsOf = (label: string): string => {\n const parts = label.split(/\\s+|[._@-]/).filter(Boolean)\n if (parts.length === 0) return '?'\n if (parts.length === 1) return parts[0]!.slice(0, 2).toUpperCase()\n return (parts[0]![0]! + parts[1]![0]!).toUpperCase()\n}\n\nconst PAGE_SIZE = 25\n\nexport function AuditLogPage(): React.ReactElement {\n const { t, locale } = useI18n()\n const resources = useResources()\n const [filters, setFilters] = React.useState<Omit<AuditLogQuery, 'before' | 'limit' | 'offset'>>({})\n\n const log = useInfiniteAuditLog(filters, PAGE_SIZE)\n\n // Flatten all pages into one list, trimming the sentinel \"+1\" entry from each page\n const events = React.useMemo(\n () =>\n (log.data?.pages ?? []).flatMap((page) => page.events.slice(0, PAGE_SIZE)),\n [log.data],\n )\n\n const userIds = React.useMemo(\n () => Array.from(new Set(events.map((e) => e.userId).filter((v): v is string => !!v))),\n [events],\n )\n const users = useUserDirectory(userIds)\n\n const resourceMap = React.useMemo(() => {\n const map: Record<string, ResourceJSON> = {}\n for (const r of resources) map[r.id] = r\n return map\n }, [resources])\n\n const userResourceExists = resources.some((r) => r.id === USERS_RESOURCE_ID)\n\n const formatRelative = useRelativeTimeFormatter(locale)\n const formatAbsolute = React.useCallback(\n (value: number) =>\n new Intl.DateTimeFormat(locale, { dateStyle: 'medium', timeStyle: 'short' }).format(new Date(value)),\n [locale],\n )\n\n // `now` is a snapshot for relative-time labels — we want it to refresh\n // whenever a new page of events arrives, even though `events` is not read\n // inside the callback.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const now = React.useMemo(() => Date.now(), [events])\n\n // IntersectionObserver sentinel — triggers next page load when visible\n const sentinelRef = React.useRef<HTMLDivElement>(null)\n const { hasNextPage, isFetchingNextPage, fetchNextPage } = log\n React.useEffect(() => {\n const el = sentinelRef.current\n if (!el) return\n const observer = new IntersectionObserver(\n (entries) => {\n if (entries[0]?.isIntersecting && hasNextPage && !isFetchingNextPage) {\n void fetchNextPage()\n }\n },\n { rootMargin: '200px' },\n )\n observer.observe(el)\n return () => observer.disconnect()\n }, [hasNextPage, isFetchingNextPage, fetchNextPage])\n\n const resetFilters = (patch: Partial<typeof filters>): void => {\n setFilters((prev) => ({ ...prev, ...patch }))\n }\n\n return (\n <div className=\"space-y-2 sm:space-y-4\">\n <Card>\n <CardHeader>\n <CardTitle>{t('audit:title')}</CardTitle>\n </CardHeader>\n <CardContent className=\"grid gap-3 sm:grid-cols-2 md:grid-cols-4\">\n <Select\n value={filters.resourceId ?? ALL}\n onValueChange={(v) => resetFilters({ resourceId: v === ALL ? undefined : v })}\n >\n <SelectTrigger aria-label={t('audit:resource')}>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value={ALL}>{t('audit:allResources')}</SelectItem>\n {Object.entries(VIRTUAL_RESOURCE_LABELS).map(([id, key]) => (\n <SelectItem key={id} value={id}>{t(key)}</SelectItem>\n ))}\n {resources.map((resource) => (\n <SelectItem key={resource.id} value={resource.id}>\n {resource.name}\n {resource.name !== resource.id && (\n <span className=\"ml-1.5 text-xs text-muted-foreground\">({resource.id})</span>\n )}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <Select\n value={filters.actions?.[0] ?? ALL}\n onValueChange={(v) => resetFilters({ actions: v === ALL ? undefined : [v] })}\n >\n <SelectTrigger aria-label={t('audit:action')}>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value={ALL}>{t('audit:allActions')}</SelectItem>\n {ACTIONS.map((action) => {\n const style = ACTION_STYLES[action]\n return (\n <SelectItem key={action} value={action}>\n {style?.titleKey ? t(style.titleKey) : action}\n </SelectItem>\n )\n })}\n </SelectContent>\n </Select>\n <Input\n value={filters.recordId ?? ''}\n placeholder={t('audit:recordId')}\n onChange={(e) => resetFilters({ recordId: e.target.value || undefined })}\n />\n <Input\n value={filters.userId ?? ''}\n placeholder={t('audit:userId')}\n onChange={(e) => resetFilters({ userId: e.target.value || undefined })}\n />\n <DateRangeInput\n from={filters.from}\n to={filters.to}\n onChange={(from, to) =>\n resetFilters({ from: from || undefined, to: to || undefined })\n }\n className=\"sm:col-span-2 md:col-span-4\"\n labels={{\n placeholder: t('audit:dateRangePlaceholder'),\n apply: t('common:apply'),\n clear: t('common:clear'),\n }}\n />\n </CardContent>\n </Card>\n <Card>\n <CardContent>\n {log.isLoading ? (\n <div className=\"space-y-3\">\n <Skeleton className=\"h-20 w-full\" />\n <Skeleton className=\"h-20 w-full\" />\n <Skeleton className=\"h-20 w-full\" />\n </div>\n ) : log.isError ? (\n <div className=\"rounded-md border border-destructive/50 bg-destructive/10 p-4 text-sm text-destructive\">\n {t('audit:loadError')}\n </div>\n ) : events.length === 0 ? (\n <div className=\"rounded-md border border-dashed border-border p-6 text-center text-sm text-muted-foreground\">\n {t('audit:noEvents')}\n </div>\n ) : (\n <ol className=\"space-y-3\">\n {events.map((entry, i) => (\n <AuditEntryCard\n key={entry.id ?? `${entry.at}:${i}`}\n entry={entry}\n resource={resourceMap[entry.resourceId]}\n user={entry.userId ? users.get(entry.userId) ?? null : null}\n userResourceId={userResourceExists ? USERS_RESOURCE_ID : undefined}\n now={now}\n formatRelative={formatRelative}\n formatAbsolute={formatAbsolute}\n />\n ))}\n </ol>\n )}\n {/* Sentinel div — observed by IntersectionObserver to trigger next page */}\n <div ref={sentinelRef} className=\"h-1\" aria-hidden />\n {log.isFetchingNextPage && (\n <div className=\"flex justify-center py-4\">\n <Loader2 className=\"size-5 animate-spin text-muted-foreground\" />\n </div>\n )}\n </CardContent>\n </Card>\n </div>\n )\n}\n\ninterface AuditEntryCardProps {\n entry: AuditLogEntry\n resource: ResourceJSON | undefined\n user: RecordJSON | null | undefined\n userResourceId?: string\n now: number\n formatRelative: (atMs: number, nowMs: number) => string\n formatAbsolute: (value: number) => string\n}\n\nfunction AuditEntryCard({\n entry,\n resource,\n user,\n userResourceId,\n now,\n formatRelative,\n formatAbsolute,\n}: AuditEntryCardProps): React.ReactElement {\n const { t } = useI18n()\n const [expanded, setExpanded] = React.useState(false)\n\n const style = ACTION_STYLES[entry.action] ?? FALLBACK_STYLE\n const Icon = style.Icon\n const title = style.titleKey ? t(style.titleKey) : entry.action\n\n const userFallback = entry.userId ?? t('history:unknownUser')\n const userLabel = userLabelOf(user, userFallback)\n\n const byTpl = t('audit:by', { user: '\\u0000' })\n const byParts = byTpl.split('\\u0000')\n const byPrefix = byParts[0] ?? ''\n const bySuffix = byParts[1] ?? ''\n\n const virtualResourceKey = VIRTUAL_RESOURCE_LABELS[entry.resourceId]\n const resourceLabel = virtualResourceKey\n ? t(virtualResourceKey)\n : (resource?.name ?? entry.resourceId)\n\n // Diff drill-down only makes sense when we have a single recordId AND\n // history exists for that resource (we'll discover that lazily on first\n // expand). Bulk operations and `new`/`delete` actions skip the toggle.\n const canExpand = entry.action === 'edit' && !!entry.recordId\n\n return (\n <li className=\"rounded-lg border border-border bg-card p-4 shadow-sm\">\n <div className=\"flex items-start gap-3\">\n <span\n className={cn(\n 'flex size-10 shrink-0 items-center justify-center rounded-full',\n style.bgClass,\n )}\n >\n <Icon className={cn('size-5', style.iconClass)} />\n </span>\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-start justify-between gap-3\">\n <div className=\"min-w-0\">\n <p className=\"truncate text-sm font-semibold\">{title}</p>\n <div className=\"mt-0.5 flex flex-wrap items-center gap-x-2 gap-y-0.5 text-xs text-muted-foreground\">\n <span className=\"font-medium\">{resourceLabel}</span>\n {entry.recordId && (\n <>\n <span aria-hidden>·</span>\n {resource ? (\n <Link\n to={{\n name: 'show',\n resourceId: entry.resourceId,\n recordId: entry.recordId,\n }}\n className=\"inline-flex items-center gap-1 rounded bg-muted px-1.5 py-0.5 text-[11px] text-foreground hover:underline\"\n title={entry.recordId}\n >\n <span className=\"truncate max-w-[12rem]\">\n {entry.recordTitle ?? `#${entry.recordId}`}\n </span>\n <ExternalLink className=\"size-3 shrink-0\" />\n </Link>\n ) : entry.recordTitle ? (\n <span\n className=\"truncate max-w-[12rem] rounded bg-muted px-1.5 py-0.5 text-[11px] text-foreground\"\n title={entry.recordId}\n >\n {entry.recordTitle}\n </span>\n ) : null}\n </>\n )}\n {!entry.recordId && entry.recordIds?.length ? (\n <>\n <span aria-hidden>·</span>\n <span>\n {entry.recordIds.length} {t('audit:records')}\n </span>\n </>\n ) : null}\n </div>\n <p className=\"mt-1 flex items-center gap-1.5 text-xs text-muted-foreground\">\n <span\n aria-hidden\n className=\"inline-flex size-5 shrink-0 items-center justify-center rounded-full bg-primary/10 text-[10px] font-semibold text-primary\"\n >\n {initialsOf(userLabel)}\n </span>\n <span className=\"truncate\">\n {byPrefix}\n {userResourceId && entry.userId ? (\n <Link\n to={{ name: 'show', resourceId: userResourceId, recordId: entry.userId }}\n className=\"font-medium text-foreground hover:underline\"\n >\n {userLabel}\n </Link>\n ) : (\n userLabel\n )}\n {bySuffix}\n </span>\n </p>\n </div>\n <time\n className=\"shrink-0 text-xs text-muted-foreground\"\n dateTime={new Date(entry.at).toISOString()}\n title={formatAbsolute(entry.at)}\n >\n {formatRelative(entry.at, now)}\n </time>\n </div>\n {canExpand && (\n <div className=\"mt-3\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"-ml-2 h-7 px-2 text-xs\"\n onClick={() => setExpanded((x) => !x)}\n aria-expanded={expanded}\n >\n {expanded ? (\n <ChevronUp className=\"size-3.5\" />\n ) : (\n <ChevronDown className=\"size-3.5\" />\n )}\n {expanded ? t('audit:hideChanges') : t('audit:viewChanges')}\n </Button>\n {expanded && (\n <div className=\"mt-2\">\n <AuditEntryChanges\n resourceId={entry.resourceId}\n recordId={entry.recordId!}\n atMs={entry.at}\n />\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n </li>\n )\n}\n\n/** Lazy-loaded diff for a single audit entry. Pulls the record's revision\n * history (server returns the freshest 50) and picks the revision whose\n * `createdAt` is closest to the entry's `at` timestamp. We require the\n * match to be within a 60s window to avoid showing an unrelated revision\n * when the matching one was pruned. */\nfunction AuditEntryChanges({\n resourceId,\n recordId,\n atMs,\n}: {\n resourceId: string\n recordId: string\n atMs: number\n}): React.ReactElement {\n const { t } = useI18n()\n const resource = useResource(resourceId)\n const history = useRecordHistory(resourceId, recordId, { limit: 50 })\n // Pull the live record so we can show its title (e.g. user's email) at\n // the top of the diff — helpful when the audit log lists many entries.\n const record = useRecord(resourceId, recordId)\n\n const labelByPath = React.useMemo(() => {\n const map: Record<string, string> = {}\n for (const p of resource?.properties ?? []) map[p.path] = p.label\n return map\n }, [resource])\n\n if (history.isLoading) {\n return <Skeleton className=\"h-16 w-full\" />\n }\n if (history.isError) {\n return (\n <div className=\"rounded-md border border-destructive/50 bg-destructive/10 p-3 text-xs text-destructive\">\n {t('audit:loadDiffError')}\n </div>\n )\n }\n\n const revisions = history.data?.revisions ?? []\n const target = findNearestRevision(revisions, atMs)\n\n if (!target) {\n return (\n <div className=\"rounded-md border border-dashed border-border p-3 text-xs text-muted-foreground\">\n {t('audit:noDiff')}\n </div>\n )\n }\n\n const fields: HistoryDiffEntry[] = diffSnapshots(\n target.snapshotBefore ?? {},\n target.snapshot,\n ).map((f) => ({ ...f, label: labelByPath[f.path] }))\n const recordTitle = record.data?.record?.title\n const showTitle = recordTitle && recordTitle !== recordId\n\n return (\n <div className=\"space-y-2\">\n {showTitle && (\n <p className=\"truncate text-xs text-muted-foreground\" title={recordTitle}>\n {recordTitle}\n </p>\n )}\n <DiffView\n fields={fields}\n labels={{\n added: t('diff:added'),\n changed: t('diff:changed'),\n removed: t('diff:removed'),\n before: t('diff:before'),\n after: t('diff:after'),\n noChanges: t('diff:noChanges'),\n }}\n />\n </div>\n )\n}\n\nconst TOLERANCE_MS = 60_000\n\nconst findNearestRevision = (\n revisions: ReadonlyArray<HistoryRevision>,\n atMs: number,\n): HistoryRevision | null => {\n let best: HistoryRevision | null = null\n let bestDiff = Infinity\n for (const r of revisions) {\n const t = new Date(r.createdAt).getTime()\n if (Number.isNaN(t)) continue\n const d = Math.abs(t - atMs)\n if (d < bestDiff && d <= TOLERANCE_MS) {\n bestDiff = d\n best = r\n }\n }\n return best\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"audit-log-page-DoZPtbGo.js","names":[],"sources":["../../../../ui/src/components/date-range-input.tsx","../../../../react/src/pages/audit-log-page.tsx"],"sourcesContent":["// Popover-driven date-range picker.\n// A single trigger button shows the selected range (or placeholder);\n// clicking opens a popover with a two-month Calendar in range mode.\n// On narrow screens the calendar collapses to a single month.\n//\n// UX notes:\n// - The picker NEVER auto-closes on date selection — the user confirms\n// explicitly via the \"Apply\" button. This prevents the \"first click\n// closes the picker\" bug that occurs when a partial pending range\n// (from without to) is in state and the next click completes it.\n// - \"Clear\" inside the popover empties the range and closes.\n// - The X inline in the trigger clears directly without opening the picker.\n// - On open: only a COMPLETE committed range (both ends) is mirrored into\n// the calendar state so the user can edit from a known baseline.\n// A committed partial range (from only) resets to blank to avoid\n// accidentally completing it on the first click.\n// - Escape / click-outside discards in-progress selection and reverts to\n// the last committed range.\n//\n// i18n-unaware by design: all visible strings are passed via `labels`.\n\nimport * as React from 'react'\nimport { addMonths, format, isSameMonth, isValid, parse, parseISO, startOfMonth } from 'date-fns'\nimport { CalendarRange, X } from 'lucide-react'\nimport type { DateRange } from 'react-day-picker'\nimport { cn } from '../lib/utils.js'\nimport { Button } from './button.js'\nimport { Calendar } from './calendar.js'\nimport { Popover, PopoverContent, PopoverTrigger } from './popover.js'\n\nconst DATE_FMT = 'yyyy-MM-dd'\nconst DISPLAY_FMT = 'MMM d, yyyy'\n\nfunction parseDate(value: string | null | undefined): Date | undefined {\n if (!value) return undefined\n const d = value.length <= 10 ? parse(value, DATE_FMT, new Date()) : parseISO(value)\n return isValid(d) ? d : undefined\n}\n\nexport interface DateRangeInputLabels {\n /** Shown in the trigger when nothing is selected. */\n placeholder?: string\n /** \"Apply\" button inside the popover footer. */\n apply?: string\n /** \"Clear\" button inside the popover footer + aria-label for the inline X. */\n clear?: string\n}\n\nexport interface DateRangeInputProps {\n from: string | null | undefined\n to: string | null | undefined\n onChange(from: string, to: string): void\n disabled?: boolean\n className?: string\n labels?: DateRangeInputLabels\n}\n\nexport function DateRangeInput({\n from,\n to,\n onChange,\n disabled,\n className,\n labels = {},\n}: DateRangeInputProps): React.ReactElement {\n const placeholder = labels.placeholder ?? 'Select date range'\n const applyLabel = labels.apply ?? 'Apply'\n const clearLabel = labels.clear ?? 'Clear'\n\n const [open, setOpen] = React.useState(false)\n\n // Calendar selection in progress. Committed to onChange only via Apply.\n const [pending, setPending] = React.useState<DateRange | undefined>(() => {\n const f = parseDate(from)\n const t = parseDate(to)\n // Only restore a complete range on init — partial ranges start fresh.\n return f && t ? { from: f, to: t } : undefined\n })\n\n // Keep pending in sync when props change externally (e.g. programmatic reset).\n React.useEffect(() => {\n const f = parseDate(from)\n const t = parseDate(to)\n setPending(f ?? t ? { from: f, to: t } : undefined)\n }, [from, to])\n\n // Number of calendar months — 1 on narrow, 2 on wide viewports.\n const [months, setMonths] = React.useState(() =>\n typeof window !== 'undefined' && window.innerWidth >= 640 ? 2 : 1,\n )\n React.useEffect(() => {\n const mq = window.matchMedia('(min-width: 640px)')\n const handle = (e: MediaQueryListEvent): void => setMonths(e.matches ? 2 : 1)\n setMonths(mq.matches ? 2 : 1)\n mq.addEventListener('change', handle)\n return () => mq.removeEventListener('change', handle)\n }, [])\n\n // Independent navigation for the two-panel layout. Each panel keeps its\n // own visible month; the dropdowns on the right are constrained to\n // months >= left (and the left to months <= right) so the panels can\n // never cross over. State is (re)initialised from the committed range\n // every time the popover opens (see `handleOpenChange`).\n const [leftMonth, setLeftMonth] = React.useState<Date>(() => {\n const f = parseDate(from)\n return startOfMonth(f ?? new Date())\n })\n const [rightMonth, setRightMonth] = React.useState<Date>(() => {\n const f = parseDate(from)\n const t = parseDate(to)\n const left = startOfMonth(f ?? new Date())\n return t && !isSameMonth(left, t) ? startOfMonth(t) : addMonths(left, 1)\n })\n\n const handleOpenChange = (next: boolean): void => {\n if (next) {\n // On open: only restore a COMPLETE committed range so the user sees\n // their previous selection as a starting point. A partial range\n // (from without to) is intentionally dropped — carrying it over\n // would cause the very next calendar click to \"complete\" the range\n // and trigger an immediate commit + close.\n const f = parseDate(from)\n const t = parseDate(to)\n setPending(f && t ? { from: f, to: t } : undefined)\n // Re-derive panel navigation from the committed range so reopening\n // always lands the user on the months they were last looking at —\n // independently for the left and right panels.\n const left = startOfMonth(f ?? new Date())\n const right = t && !isSameMonth(left, t)\n ? startOfMonth(t)\n : addMonths(left, 1)\n setLeftMonth(left)\n setRightMonth(right)\n } else {\n // Closed without Apply (Escape / outside click) — discard in-progress\n // selection and revert to the last committed values.\n const f = parseDate(from)\n const t = parseDate(to)\n setPending(f ?? t ? { from: f, to: t } : undefined)\n }\n setOpen(next)\n }\n\n // Navigation guards. The right panel can never cross above the left's\n // month, and the left can never cross above the right's. If a user\n // navigates the LEFT forward past the right (via the prev/next arrow\n // when the dropdown bounds don't disable it), push the right one month\n // ahead; symmetric for the right going below the left.\n const handleLeftMonthChange = (next: Date): void => {\n setLeftMonth(next)\n if (!isSameMonth(next, rightMonth) && next > rightMonth) {\n setRightMonth(addMonths(next, 1))\n }\n }\n const handleRightMonthChange = (next: Date): void => {\n setRightMonth(next)\n if (!isSameMonth(next, leftMonth) && next < leftMonth) {\n setLeftMonth(addMonths(next, -1))\n }\n }\n\n // Update the in-progress selection; never auto-commit.\n const handleSelect = (range: DateRange | undefined): void => {\n setPending(range)\n }\n\n // Commit whatever is pending (at minimum a start date) and close.\n const handleApply = (): void => {\n if (pending?.from) {\n onChange(\n format(pending.from, DATE_FMT),\n pending.to ? format(pending.to, DATE_FMT) : '',\n )\n }\n setOpen(false)\n }\n\n // Clear inside the popover: empty the committed range and close.\n const handleClearPopover = (): void => {\n setPending(undefined)\n onChange('', '')\n setOpen(false)\n }\n\n // Inline X on the trigger: clear committed range without opening the picker.\n const handleClearInline = (e: React.MouseEvent): void => {\n e.stopPropagation()\n setPending(undefined)\n onChange('', '')\n }\n\n const fromDate = parseDate(from)\n const toDate = parseDate(to)\n const hasValue = !!(from || to)\n\n const displayText = hasValue\n ? [\n fromDate ? format(fromDate, DISPLAY_FMT) : '…',\n toDate ? format(toDate, DISPLAY_FMT) : '…',\n ].join(' – ')\n : null\n\n return (\n <Popover open={open} onOpenChange={handleOpenChange}>\n <PopoverTrigger asChild>\n <Button\n type=\"button\"\n variant=\"outline\"\n disabled={disabled}\n className={cn(\n 'h-9 w-full justify-start gap-2 px-3 font-normal',\n !hasValue && 'text-muted-foreground',\n className,\n )}\n >\n <CalendarRange className=\"size-4 shrink-0 opacity-60\" />\n <span className=\"flex-1 truncate text-left text-sm\">\n {displayText ?? placeholder}\n </span>\n {hasValue && (\n <span\n role=\"button\"\n tabIndex={0}\n aria-label={clearLabel}\n onClick={handleClearInline}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n handleClearInline(e as unknown as React.MouseEvent)\n }\n }}\n className=\"ml-1 rounded-sm p-0.5 opacity-50 hover:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n >\n <X className=\"size-3.5\" />\n </span>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n {months === 2 ? (\n // Two-panel layout: each Calendar is a fully independent single-\n // month instance with its own controlled `month` state. The left\n // panel's dropdowns can't reach past the right panel's month\n // (and vice versa) thanks to the shared start/end-month bounds.\n // Range selection still spans both panels because they share\n // the same `selected` + `onSelect`.\n <div className=\"flex flex-col sm:flex-row\">\n <Calendar\n mode=\"range\"\n selected={pending}\n onSelect={handleSelect}\n numberOfMonths={1}\n month={leftMonth}\n onMonthChange={handleLeftMonthChange}\n endMonth={rightMonth}\n autoFocus\n />\n <Calendar\n mode=\"range\"\n selected={pending}\n onSelect={handleSelect}\n numberOfMonths={1}\n month={rightMonth}\n onMonthChange={handleRightMonthChange}\n startMonth={leftMonth}\n />\n </div>\n ) : (\n <Calendar\n mode=\"range\"\n selected={pending}\n onSelect={handleSelect}\n numberOfMonths={1}\n // react-day-picker doesn't auto-navigate to the selected range on\n // mount — it stays on today's month. The popover re-mounts the\n // Calendar each time it opens, so deriving `defaultMonth` from\n // the (already-restored) pending range puts the user back where\n // they left off without controlling navigation explicitly.\n defaultMonth={pending?.from ?? pending?.to ?? undefined}\n autoFocus\n />\n )}\n <div className=\"flex items-center justify-between border-t border-border px-3 py-2\">\n <Button variant=\"ghost\" size=\"sm\" onClick={handleClearPopover}>\n {clearLabel}\n </Button>\n <Button size=\"sm\" onClick={handleApply} disabled={!pending?.from}>\n {applyLabel}\n </Button>\n </div>\n </PopoverContent>\n </Popover>\n )\n}\n\nDateRangeInput.displayName = 'DateRangeInput'\n","import * as React from 'react'\nimport { diffSnapshots } from '@modern-admin/core'\nimport {\n Button,\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n DateRangeInput,\n DiffView,\n Input,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n Skeleton,\n cn,\n} from '@modern-admin/ui'\nimport { ChevronDown, ChevronUp, ExternalLink, FilePlus, FileText, Key, KeyRound, Loader2, LogIn, Pencil, Trash2 } from 'lucide-react'\nimport { useInfiniteAuditLog, useRecord, useRecordHistory, useResource, useResources } from '../hooks.js'\nimport { useI18n } from '../i18n.js'\nimport { Link } from '../router.js'\nimport { USERS_RESOURCE_ID, useUserDirectory, userLabelOf } from '../user-directory.js'\nimport type {\n AuditLogEntry,\n AuditLogQuery,\n HistoryDiffEntry,\n HistoryRevision,\n} from '../client.js'\nimport type { RecordJSON, ResourceJSON } from '../types.js'\n\nconst ALL = '__all__'\nconst ACTIONS = ['new', 'edit', 'delete', 'bulkDelete', 'login', 'apiKey.create', 'apiKey.update', 'apiKey.delete']\n/** Virtual resource IDs that don't map to ORM resources. */\nconst VIRTUAL_RESOURCE_LABELS: Record<string, string> = {\n __auth__: 'audit:virtualResource.auth',\n __api_keys__: 'audit:virtualResource.apiKeys',\n}\ninterface ActionStyle {\n Icon: React.ComponentType<{ className?: string }>\n iconClass: string\n bgClass: string\n titleKey: string\n}\n\nconst FALLBACK_STYLE: ActionStyle = {\n Icon: FileText,\n iconClass: 'text-muted-foreground',\n bgClass: 'bg-muted',\n titleKey: '',\n}\n\nconst ACTION_STYLES: Record<string, ActionStyle> = {\n new: {\n Icon: FilePlus,\n iconClass: 'text-blue-600 dark:text-blue-300',\n bgClass: 'bg-blue-100 dark:bg-blue-950/40',\n titleKey: 'audit:action.new',\n },\n edit: {\n Icon: Pencil,\n iconClass: 'text-emerald-600 dark:text-emerald-300',\n bgClass: 'bg-emerald-100 dark:bg-emerald-950/40',\n titleKey: 'audit:action.edit',\n },\n delete: {\n Icon: Trash2,\n iconClass: 'text-rose-600 dark:text-rose-300',\n bgClass: 'bg-rose-100 dark:bg-rose-950/40',\n titleKey: 'audit:action.delete',\n },\n bulkDelete: {\n Icon: Trash2,\n iconClass: 'text-rose-600 dark:text-rose-300',\n bgClass: 'bg-rose-100 dark:bg-rose-950/40',\n titleKey: 'audit:action.bulkDelete',\n },\n login: {\n Icon: LogIn,\n iconClass: 'text-violet-600 dark:text-violet-300',\n bgClass: 'bg-violet-100 dark:bg-violet-950/40',\n titleKey: 'audit:action.login',\n },\n 'apiKey.create': {\n Icon: Key,\n iconClass: 'text-amber-600 dark:text-amber-300',\n bgClass: 'bg-amber-100 dark:bg-amber-950/40',\n titleKey: 'audit:action.apiKeyCreate',\n },\n 'apiKey.update': {\n Icon: KeyRound,\n iconClass: 'text-amber-600 dark:text-amber-300',\n bgClass: 'bg-amber-100 dark:bg-amber-950/40',\n titleKey: 'audit:action.apiKeyUpdate',\n },\n 'apiKey.delete': {\n Icon: Trash2,\n iconClass: 'text-rose-600 dark:text-rose-300',\n bgClass: 'bg-rose-100 dark:bg-rose-950/40',\n titleKey: 'audit:action.apiKeyDelete',\n },\n}\n\n/** Format `entry.at` (unix-ms) as a relative phrase like \"2m ago\", falling\n * back to absolute date for entries older than a week. Uses\n * `Intl.RelativeTimeFormat` so output is locale-aware. */\nfunction useRelativeTimeFormatter(\n locale: string,\n): (atMs: number, nowMs: number) => string {\n const rtf = React.useMemo(\n () => new Intl.RelativeTimeFormat(locale, { numeric: 'auto' }),\n [locale],\n )\n const dtf = React.useMemo(\n () => new Intl.DateTimeFormat(locale, { dateStyle: 'medium', timeStyle: 'short' }),\n [locale],\n )\n return React.useCallback(\n (atMs, nowMs) => {\n const sec = Math.round((nowMs - atMs) / 1000)\n if (sec < 45) return rtf.format(-Math.max(sec, 0), 'second')\n if (sec < 3600) return rtf.format(-Math.round(sec / 60), 'minute')\n if (sec < 86400) return rtf.format(-Math.round(sec / 3600), 'hour')\n if (sec < 86400 * 7) return rtf.format(-Math.round(sec / 86400), 'day')\n return dtf.format(new Date(atMs))\n },\n [dtf, rtf],\n )\n}\n\nconst initialsOf = (label: string): string => {\n const parts = label.split(/\\s+|[._@-]/).filter(Boolean)\n if (parts.length === 0) return '?'\n if (parts.length === 1) return parts[0]!.slice(0, 2).toUpperCase()\n return (parts[0]![0]! + parts[1]![0]!).toUpperCase()\n}\n\nconst PAGE_SIZE = 25\n\nexport function AuditLogPage(): React.ReactElement {\n const { t, locale } = useI18n()\n const resources = useResources()\n const [filters, setFilters] = React.useState<Omit<AuditLogQuery, 'before' | 'limit' | 'offset'>>({})\n\n const log = useInfiniteAuditLog(filters, PAGE_SIZE)\n\n // Flatten all pages into one list, trimming the sentinel \"+1\" entry from each page\n const events = React.useMemo(\n () =>\n (log.data?.pages ?? []).flatMap((page) => page.events.slice(0, PAGE_SIZE)),\n [log.data],\n )\n\n const userIds = React.useMemo(\n () => Array.from(new Set(events.map((e) => e.userId).filter((v): v is string => !!v))),\n [events],\n )\n const users = useUserDirectory(userIds)\n\n const resourceMap = React.useMemo(() => {\n const map: Record<string, ResourceJSON> = {}\n for (const r of resources) map[r.id] = r\n return map\n }, [resources])\n\n const userResourceExists = resources.some((r) => r.id === USERS_RESOURCE_ID)\n\n const formatRelative = useRelativeTimeFormatter(locale)\n const formatAbsolute = React.useCallback(\n (value: number) =>\n new Intl.DateTimeFormat(locale, { dateStyle: 'medium', timeStyle: 'short' }).format(new Date(value)),\n [locale],\n )\n\n // `now` is a snapshot for relative-time labels — we want it to refresh\n // whenever a new page of events arrives, even though `events` is not read\n // inside the callback.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const now = React.useMemo(() => Date.now(), [events])\n\n // IntersectionObserver sentinel — triggers next page load when visible\n const sentinelRef = React.useRef<HTMLDivElement>(null)\n const { hasNextPage, isFetchingNextPage, fetchNextPage } = log\n React.useEffect(() => {\n const el = sentinelRef.current\n if (!el) return\n const observer = new IntersectionObserver(\n (entries) => {\n if (entries[0]?.isIntersecting && hasNextPage && !isFetchingNextPage) {\n void fetchNextPage()\n }\n },\n { rootMargin: '200px' },\n )\n observer.observe(el)\n return () => observer.disconnect()\n }, [hasNextPage, isFetchingNextPage, fetchNextPage])\n\n const resetFilters = (patch: Partial<typeof filters>): void => {\n setFilters((prev) => ({ ...prev, ...patch }))\n }\n\n return (\n <div className=\"space-y-2 sm:space-y-4\">\n <Card>\n <CardHeader>\n <CardTitle>{t('audit:title')}</CardTitle>\n </CardHeader>\n <CardContent className=\"grid gap-3 sm:grid-cols-2 md:grid-cols-4\">\n <Select\n value={filters.resourceId ?? ALL}\n onValueChange={(v) => resetFilters({ resourceId: v === ALL ? undefined : v })}\n >\n <SelectTrigger aria-label={t('audit:resource')}>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value={ALL}>{t('audit:allResources')}</SelectItem>\n {Object.entries(VIRTUAL_RESOURCE_LABELS).map(([id, key]) => (\n <SelectItem key={id} value={id}>{t(key)}</SelectItem>\n ))}\n {resources.map((resource) => (\n <SelectItem key={resource.id} value={resource.id}>\n {resource.name}\n {resource.name !== resource.id && (\n <span className=\"ml-1.5 text-xs text-muted-foreground\">({resource.id})</span>\n )}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <Select\n value={filters.actions?.[0] ?? ALL}\n onValueChange={(v) => resetFilters({ actions: v === ALL ? undefined : [v] })}\n >\n <SelectTrigger aria-label={t('audit:action')}>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value={ALL}>{t('audit:allActions')}</SelectItem>\n {ACTIONS.map((action) => {\n const style = ACTION_STYLES[action]\n return (\n <SelectItem key={action} value={action}>\n {style?.titleKey ? t(style.titleKey) : action}\n </SelectItem>\n )\n })}\n </SelectContent>\n </Select>\n <Input\n value={filters.recordId ?? ''}\n placeholder={t('audit:recordId')}\n onChange={(e) => resetFilters({ recordId: e.target.value || undefined })}\n />\n <Input\n value={filters.userId ?? ''}\n placeholder={t('audit:userId')}\n onChange={(e) => resetFilters({ userId: e.target.value || undefined })}\n />\n <DateRangeInput\n from={filters.from}\n to={filters.to}\n onChange={(from, to) =>\n resetFilters({ from: from || undefined, to: to || undefined })\n }\n className=\"sm:col-span-2 md:col-span-4\"\n labels={{\n placeholder: t('audit:dateRangePlaceholder'),\n apply: t('common:apply'),\n clear: t('common:clear'),\n }}\n />\n </CardContent>\n </Card>\n <Card>\n <CardContent>\n {log.isLoading ? (\n <div className=\"space-y-3\">\n <Skeleton className=\"h-20 w-full\" />\n <Skeleton className=\"h-20 w-full\" />\n <Skeleton className=\"h-20 w-full\" />\n </div>\n ) : log.isError ? (\n <div className=\"rounded-md border border-destructive/50 bg-destructive/10 p-4 text-sm text-destructive\">\n {t('audit:loadError')}\n </div>\n ) : events.length === 0 ? (\n <div className=\"rounded-md border border-dashed border-border p-6 text-center text-sm text-muted-foreground\">\n {t('audit:noEvents')}\n </div>\n ) : (\n <ol className=\"space-y-3\">\n {events.map((entry, i) => (\n <AuditEntryCard\n key={entry.id ?? `${entry.at}:${i}`}\n entry={entry}\n resource={resourceMap[entry.resourceId]}\n user={entry.userId ? users.get(entry.userId) ?? null : null}\n userResourceId={userResourceExists ? USERS_RESOURCE_ID : undefined}\n now={now}\n formatRelative={formatRelative}\n formatAbsolute={formatAbsolute}\n />\n ))}\n </ol>\n )}\n {/* Sentinel div — observed by IntersectionObserver to trigger next page */}\n <div ref={sentinelRef} className=\"h-1\" aria-hidden />\n {log.isFetchingNextPage && (\n <div className=\"flex justify-center py-4\">\n <Loader2 className=\"size-5 animate-spin text-muted-foreground\" />\n </div>\n )}\n </CardContent>\n </Card>\n </div>\n )\n}\n\ninterface AuditEntryCardProps {\n entry: AuditLogEntry\n resource: ResourceJSON | undefined\n user: RecordJSON | null | undefined\n userResourceId?: string\n now: number\n formatRelative: (atMs: number, nowMs: number) => string\n formatAbsolute: (value: number) => string\n}\n\nfunction AuditEntryCard({\n entry,\n resource,\n user,\n userResourceId,\n now,\n formatRelative,\n formatAbsolute,\n}: AuditEntryCardProps): React.ReactElement {\n const { t } = useI18n()\n const [expanded, setExpanded] = React.useState(false)\n\n const style = ACTION_STYLES[entry.action] ?? FALLBACK_STYLE\n const Icon = style.Icon\n const title = style.titleKey ? t(style.titleKey) : entry.action\n\n const userFallback = entry.userId ?? t('history:unknownUser')\n const userLabel = userLabelOf(user, userFallback)\n\n const byTpl = t('audit:by', { user: '\\u0000' })\n const byParts = byTpl.split('\\u0000')\n const byPrefix = byParts[0] ?? ''\n const bySuffix = byParts[1] ?? ''\n\n const virtualResourceKey = VIRTUAL_RESOURCE_LABELS[entry.resourceId]\n const resourceLabel = virtualResourceKey\n ? t(virtualResourceKey)\n : (resource?.name ?? entry.resourceId)\n\n // Diff drill-down only makes sense when we have a single recordId AND\n // history exists for that resource (we'll discover that lazily on first\n // expand). Bulk operations and `new`/`delete` actions skip the toggle.\n const canExpand = entry.action === 'edit' && !!entry.recordId\n\n return (\n <li className=\"rounded-lg border border-border bg-card p-4 shadow-sm\">\n <div className=\"flex items-start gap-3\">\n <span\n className={cn(\n 'flex size-10 shrink-0 items-center justify-center rounded-full',\n style.bgClass,\n )}\n >\n <Icon className={cn('size-5', style.iconClass)} />\n </span>\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-start justify-between gap-3\">\n <div className=\"min-w-0\">\n <p className=\"truncate text-sm font-semibold\">{title}</p>\n <div className=\"mt-0.5 flex flex-wrap items-center gap-x-2 gap-y-0.5 text-xs text-muted-foreground\">\n <span className=\"font-medium\">{resourceLabel}</span>\n {entry.recordId && (\n <>\n <span aria-hidden>·</span>\n {resource ? (\n <Link\n to={{\n name: 'show',\n resourceId: entry.resourceId,\n recordId: entry.recordId,\n }}\n className=\"inline-flex items-center gap-1 rounded bg-muted px-1.5 py-0.5 text-[11px] text-foreground hover:underline\"\n title={entry.recordId}\n >\n <span className=\"truncate max-w-[12rem]\">\n {entry.recordTitle ?? `#${entry.recordId}`}\n </span>\n <ExternalLink className=\"size-3 shrink-0\" />\n </Link>\n ) : entry.recordTitle ? (\n <span\n className=\"truncate max-w-[12rem] rounded bg-muted px-1.5 py-0.5 text-[11px] text-foreground\"\n title={entry.recordId}\n >\n {entry.recordTitle}\n </span>\n ) : null}\n </>\n )}\n {!entry.recordId && entry.recordIds?.length ? (\n <>\n <span aria-hidden>·</span>\n <span>\n {entry.recordIds.length} {t('audit:records')}\n </span>\n </>\n ) : null}\n </div>\n <p className=\"mt-1 flex items-center gap-1.5 text-xs text-muted-foreground\">\n <span\n aria-hidden\n className=\"inline-flex size-5 shrink-0 items-center justify-center rounded-full bg-primary/10 text-[10px] font-semibold text-primary\"\n >\n {initialsOf(userLabel)}\n </span>\n <span className=\"truncate\">\n {byPrefix}\n {userResourceId && entry.userId ? (\n <Link\n to={{ name: 'show', resourceId: userResourceId, recordId: entry.userId }}\n className=\"font-medium text-foreground hover:underline\"\n >\n {userLabel}\n </Link>\n ) : (\n userLabel\n )}\n {bySuffix}\n </span>\n </p>\n </div>\n <time\n className=\"shrink-0 text-xs text-muted-foreground\"\n dateTime={new Date(entry.at).toISOString()}\n title={formatAbsolute(entry.at)}\n >\n {formatRelative(entry.at, now)}\n </time>\n </div>\n {canExpand && (\n <div className=\"mt-3\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"-ml-2 h-7 px-2 text-xs\"\n onClick={() => setExpanded((x) => !x)}\n aria-expanded={expanded}\n >\n {expanded ? (\n <ChevronUp className=\"size-3.5\" />\n ) : (\n <ChevronDown className=\"size-3.5\" />\n )}\n {expanded ? t('audit:hideChanges') : t('audit:viewChanges')}\n </Button>\n {expanded && (\n <div className=\"mt-2\">\n <AuditEntryChanges\n resourceId={entry.resourceId}\n recordId={entry.recordId!}\n atMs={entry.at}\n />\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n </li>\n )\n}\n\n/** Lazy-loaded diff for a single audit entry. Pulls the record's revision\n * history (server returns the freshest 50) and picks the revision whose\n * `createdAt` is closest to the entry's `at` timestamp. We require the\n * match to be within a 60s window to avoid showing an unrelated revision\n * when the matching one was pruned. */\nfunction AuditEntryChanges({\n resourceId,\n recordId,\n atMs,\n}: {\n resourceId: string\n recordId: string\n atMs: number\n}): React.ReactElement {\n const { t } = useI18n()\n const resource = useResource(resourceId)\n const history = useRecordHistory(resourceId, recordId, { limit: 50 })\n // Pull the live record so we can show its title (e.g. user's email) at\n // the top of the diff — helpful when the audit log lists many entries.\n const record = useRecord(resourceId, recordId)\n\n const labelByPath = React.useMemo(() => {\n const map: Record<string, string> = {}\n for (const p of resource?.properties ?? []) map[p.path] = p.label\n return map\n }, [resource])\n\n if (history.isLoading) {\n return <Skeleton className=\"h-16 w-full\" />\n }\n if (history.isError) {\n return (\n <div className=\"rounded-md border border-destructive/50 bg-destructive/10 p-3 text-xs text-destructive\">\n {t('audit:loadDiffError')}\n </div>\n )\n }\n\n const revisions = history.data?.revisions ?? []\n const target = findNearestRevision(revisions, atMs)\n\n if (!target) {\n return (\n <div className=\"rounded-md border border-dashed border-border p-3 text-xs text-muted-foreground\">\n {t('audit:noDiff')}\n </div>\n )\n }\n\n const fields: HistoryDiffEntry[] = diffSnapshots(\n target.snapshotBefore ?? {},\n target.snapshot,\n ).map((f) => ({ ...f, label: labelByPath[f.path] }))\n const recordTitle = record.data?.record?.title\n const showTitle = recordTitle && recordTitle !== recordId\n\n return (\n <div className=\"space-y-2\">\n {showTitle && (\n <p className=\"truncate text-xs text-muted-foreground\" title={recordTitle}>\n {recordTitle}\n </p>\n )}\n <DiffView\n fields={fields}\n labels={{\n added: t('diff:added'),\n changed: t('diff:changed'),\n removed: t('diff:removed'),\n before: t('diff:before'),\n after: t('diff:after'),\n noChanges: t('diff:noChanges'),\n }}\n />\n </div>\n )\n}\n\nconst TOLERANCE_MS = 60_000\n\nconst findNearestRevision = (\n revisions: ReadonlyArray<HistoryRevision>,\n atMs: number,\n): HistoryRevision | null => {\n let best: HistoryRevision | null = null\n let bestDiff = Infinity\n for (const r of revisions) {\n const t = new Date(r.createdAt).getTime()\n if (Number.isNaN(t)) continue\n const d = Math.abs(t - atMs)\n if (d < bestDiff && d <= TOLERANCE_MS) {\n bestDiff = d\n best = r\n }\n }\n return best\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{a as e,n as t}from"./createLucideIcon-CUopU_LC.js";import{l as n,w as r}from"./floating-layer-DJGCYMex.js";import{l as i}from"./dist-CmyV2PEd.js";var a=e(t(),1),o=r(),s=i(`inline-flex items-center rounded-full border border-border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2`,{variants:{variant:{default:`border-transparent bg-primary text-primary-foreground hover:bg-primary/80`,secondary:`border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80`,destructive:`border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80`,outline:`text-foreground`,success:`border-transparent bg-emerald-100 text-emerald-700 dark:bg-emerald-900/40 dark:text-emerald-300`}},defaultVariants:{variant:`default`}}),c=a.forwardRef(({className:e,variant:t,...r},i)=>(0,o.jsx)(`span`,{ref:i,className:n(s({variant:t}),e),...r}));c.displayName=`Badge`;export{c as t};
2
+ //# sourceMappingURL=badge-8oeWEs3P.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"badge-lb2Nqx1b.js","names":[],"sources":["../../../../ui/src/components/badge.tsx"],"sourcesContent":["import * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../lib/utils.js'\n\nconst badgeVariants = cva(\n 'inline-flex items-center rounded-full border border-border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n {\n variants: {\n variant: {\n default: 'border-transparent bg-primary text-primary-foreground hover:bg-primary/80',\n secondary:\n 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80',\n destructive:\n 'border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80',\n outline: 'text-foreground',\n success: 'border-transparent bg-emerald-100 text-emerald-700 dark:bg-emerald-900/40 dark:text-emerald-300',\n },\n },\n defaultVariants: { variant: 'default' },\n },\n)\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof badgeVariants> {}\n\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, variant, ...props }, ref) => (\n <span ref={ref} className={cn(badgeVariants({ variant }), className)} {...props} />\n ),\n)\nBadge.displayName = 'Badge'\n\nexport { badgeVariants }\n"],"mappings":"6KAIM,EAAgB,EACpB,uLACA,CACE,SAAU,CACR,QAAS,CACP,QAAS,4EACT,UACE,kFACF,YACE,wFACF,QAAS,kBACT,QAAS,iGACX,CACF,EACA,gBAAiB,CAAE,QAAS,SAAU,CACxC,CACF,EAMa,EAAA,EAAc,YACxB,CAAE,YAAW,UAAS,GAAG,GAAS,KACjC,EAAA,EAAA,IAAA,CAAC,OAAD,CAAW,MAAK,UAAW,EAAG,EAAc,CAAE,SAAQ,CAAC,EAAG,CAAS,EAAG,GAAI,CAAQ,CAAA,CAEtF,EACA,EAAM,YAAc"}
1
+ {"version":3,"file":"badge-8oeWEs3P.js","names":[],"sources":["../../../../ui/src/components/badge.tsx"],"sourcesContent":["import * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../lib/utils.js'\n\nconst badgeVariants = cva(\n 'inline-flex items-center rounded-full border border-border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n {\n variants: {\n variant: {\n default: 'border-transparent bg-primary text-primary-foreground hover:bg-primary/80',\n secondary:\n 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80',\n destructive:\n 'border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80',\n outline: 'text-foreground',\n success: 'border-transparent bg-emerald-100 text-emerald-700 dark:bg-emerald-900/40 dark:text-emerald-300',\n },\n },\n defaultVariants: { variant: 'default' },\n },\n)\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof badgeVariants> {}\n\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, variant, ...props }, ref) => (\n <span ref={ref} className={cn(badgeVariants({ variant }), className)} {...props} />\n ),\n)\nBadge.displayName = 'Badge'\n\nexport { badgeVariants }\n"],"mappings":"8KAIM,EAAgB,EACpB,uLACA,CACE,SAAU,CACR,QAAS,CACP,QAAS,4EACT,UACE,kFACF,YACE,wFACF,QAAS,kBACT,QAAS,iGACX,CACF,EACA,gBAAiB,CAAE,QAAS,SAAU,CACxC,CACF,EAMa,EAAA,EAAc,YACxB,CAAE,YAAW,UAAS,GAAG,GAAS,KACjC,EAAA,EAAA,IAAA,CAAC,OAAD,CAAW,MAAK,UAAW,EAAG,EAAc,CAAE,SAAQ,CAAC,EAAG,CAAS,EAAG,GAAI,CAAQ,CAAA,CAEtF,EACA,EAAM,YAAc"}
@@ -0,0 +1,2 @@
1
+ import{a as e,n as t}from"./createLucideIcon-CUopU_LC.js";import{w as n}from"./floating-layer-DJGCYMex.js";import{t as r}from"./trash-2-DhyKQCKv.js";import{t as i}from"./rotate-ccw-BLr0QLAg.js";import{s as a}from"./dist-CmyV2PEd.js";import{a as o,i as s,n as c,o as l,r as u,t as d}from"./select-BR1RMqsn.js";import{E as f,N as p,m,o as h,w as g}from"./hooks-DHDUQgzs.js";import{t as _}from"./badge-8oeWEs3P.js";import{a as v,i as y,n as b,r as x,t as S}from"./card-MNH_XK0V.js";import{a as C,i as w,n as T,o as E,r as D,t as O}from"./table-DzBSPeVH.js";import{Y as k,l as A}from"./index-BvESJd1R.js";var j=e(t(),1),M=n(),N=e=>e.reduce((e,t)=>e+t,0);function P(){let{t:e,locale:t}=p(),n=A(),P=f(),I=h(),L=m(),R=g(),[z,B]=j.useState(P[0]?.id??``);j.useEffect(()=>{!z&&P[0]&&B(P[0].id)},[z,P]);let V=I.data?.entries??[],H=N(V.map(e=>e.hits)),U=H+N(V.map(e=>e.misses)),W=U>0?H/U*100:0,G=N(V.map(e=>e.computes)),K=N(V.map(e=>e.computeMs)),q=N(V.map(e=>e.readErrors+e.writeErrors+e.invalidationErrors)),J=j.useMemo(()=>new Intl.NumberFormat(t),[t]);return I.isLoading?(0,M.jsxs)(`div`,{className:`flex flex-col gap-3 pb-4 sm:gap-4 sm:pb-6`,children:[(0,M.jsx)(k,{className:`h-24 w-full`}),(0,M.jsx)(k,{className:`h-72 w-full`})]}):I.isError?(0,M.jsxs)(S,{children:[(0,M.jsx)(y,{children:(0,M.jsx)(v,{children:e(`cache:load.error`)})}),(0,M.jsx)(b,{children:(0,M.jsxs)(a,{variant:`outline`,onClick:()=>void I.refetch(),children:[(0,M.jsx)(i,{"data-icon":`inline-start`}),e(`cache:load.retry`)]})})]}):(0,M.jsxs)(`div`,{className:`flex flex-col gap-3 pb-4 sm:gap-4 sm:pb-6`,children:[(0,M.jsxs)(S,{children:[(0,M.jsxs)(y,{className:`sm:flex-row sm:items-start sm:justify-between`,children:[(0,M.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,M.jsx)(v,{children:e(`cache:title`)}),(0,M.jsx)(x,{children:e(`cache:description`)})]}),(0,M.jsxs)(a,{variant:`outline`,size:`sm`,disabled:R.isPending,onClick:()=>{n.promise(R.mutateAsync(),{loading:{key:`cache:reset.loading`},success:{key:`cache:reset.success`},error:{key:`cache:reset.error`}})},children:[(0,M.jsx)(i,{"data-icon":`inline-start`}),e(`cache:reset.action`)]})]}),(0,M.jsxs)(b,{className:`grid grid-cols-2 gap-3 lg:grid-cols-4`,children:[(0,M.jsx)(F,{label:e(`cache:metric.hitRate`),value:`${W.toFixed(1)}%`}),(0,M.jsx)(F,{label:e(`cache:metric.requests`),value:J.format(U)}),(0,M.jsx)(F,{label:e(`cache:metric.avgCompute`),value:G>0?e(`cache:unit.ms`).replace(`{value}`,J.format(Math.round(K/G))):`—`}),(0,M.jsx)(F,{label:e(`cache:metric.errors`),value:J.format(q)})]})]}),(I.data?.dirtyTags.length??0)>0&&(0,M.jsxs)(S,{children:[(0,M.jsxs)(y,{children:[(0,M.jsx)(v,{children:e(`cache:quarantine.title`)}),(0,M.jsx)(x,{children:e(`cache:quarantine.description`)})]}),(0,M.jsx)(b,{className:`flex flex-wrap gap-2`,children:I.data?.dirtyTags.map(e=>(0,M.jsx)(_,{variant:`destructive`,children:e},e))})]}),(0,M.jsxs)(S,{children:[(0,M.jsxs)(y,{children:[(0,M.jsx)(v,{children:e(`cache:invalidate.title`)}),(0,M.jsx)(x,{children:e(`cache:invalidate.description`)})]}),(0,M.jsxs)(b,{className:`flex flex-col gap-2 sm:flex-row`,children:[(0,M.jsxs)(d,{value:z,onValueChange:B,children:[(0,M.jsx)(o,{"aria-label":e(`cache:invalidate.resource`),className:`sm:max-w-sm`,children:(0,M.jsx)(l,{placeholder:e(`cache:invalidate.resource`)})}),(0,M.jsx)(c,{children:(0,M.jsx)(u,{children:P.map(e=>(0,M.jsx)(s,{value:e.id,children:e.name},e.id))})})]}),(0,M.jsxs)(a,{variant:`outline-destructive`,disabled:!z||L.isPending,onClick:()=>{z&&n.promise(L.mutateAsync(z),{loading:{key:`cache:invalidate.loading`},success:{key:`cache:invalidate.success`},error:{key:`cache:invalidate.error`}})},children:[(0,M.jsx)(r,{"data-icon":`inline-start`}),e(`cache:invalidate.action`)]})]})]}),(0,M.jsxs)(S,{children:[(0,M.jsxs)(y,{children:[(0,M.jsx)(v,{children:e(`cache:table.title`)}),(0,M.jsx)(x,{children:e(`cache:instance`).replace(`{id}`,I.data?.instanceId??`—`)})]}),(0,M.jsx)(b,{children:(0,M.jsxs)(O,{children:[(0,M.jsx)(C,{children:(0,M.jsxs)(E,{children:[(0,M.jsx)(w,{children:e(`cache:table.namespace`)}),(0,M.jsx)(w,{children:e(`cache:table.resource`)}),(0,M.jsx)(w,{children:e(`cache:table.hits`)}),(0,M.jsx)(w,{children:e(`cache:table.misses`)}),(0,M.jsx)(w,{children:e(`cache:table.computes`)}),(0,M.jsx)(w,{children:e(`cache:table.coalesced`)}),(0,M.jsx)(w,{children:e(`cache:table.errors`)})]})}),(0,M.jsxs)(T,{children:[V.length===0&&(0,M.jsx)(E,{children:(0,M.jsx)(D,{colSpan:7,className:`py-8 text-center text-muted-foreground`,children:e(`cache:table.empty`)})}),V.map(e=>(0,M.jsxs)(E,{children:[(0,M.jsx)(D,{children:(0,M.jsx)(_,{variant:`outline`,children:e.namespace})}),(0,M.jsx)(D,{children:e.resourceId??`—`}),(0,M.jsx)(D,{children:J.format(e.hits)}),(0,M.jsx)(D,{children:J.format(e.misses)}),(0,M.jsx)(D,{children:J.format(e.computes)}),(0,M.jsx)(D,{children:J.format(e.coalesced)}),(0,M.jsx)(D,{children:J.format(e.readErrors+e.writeErrors+e.invalidationErrors)})]},`${e.namespace}:${e.resourceId??`*`}`))]})]})})]})]})}function F({label:e,value:t}){return(0,M.jsxs)(`div`,{className:`flex flex-col gap-1 rounded-md border border-border p-3`,children:[(0,M.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e}),(0,M.jsx)(`span`,{className:`text-xl font-semibold tabular-nums`,children:t})]})}export{P as CachePage};
2
+ //# sourceMappingURL=cache-page-CoKusfv-.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-page-CoKusfv-.js","names":[],"sources":["../../../../react/src/pages/cache-page.tsx"],"sourcesContent":["import * as React from 'react'\nimport {\n Badge,\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectTrigger,\n SelectValue,\n Skeleton,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '@modern-admin/ui'\nimport { RotateCcw, Trash2 } from 'lucide-react'\nimport {\n useCacheStats,\n useInvalidateResourceCache,\n useResetCacheStats,\n useResources,\n} from '../hooks.js'\nimport { useI18n } from '../i18n.js'\nimport { useNotify } from '../notify.js'\n\nconst sum = (values: number[]): number => values.reduce((total, value) => total + value, 0)\n\nexport function CachePage(): React.ReactElement {\n const { t, locale } = useI18n()\n const notify = useNotify()\n const resources = useResources()\n const stats = useCacheStats()\n const invalidate = useInvalidateResourceCache()\n const reset = useResetCacheStats()\n const [resourceId, setResourceId] = React.useState(resources[0]?.id ?? '')\n\n React.useEffect(() => {\n if (!resourceId && resources[0]) setResourceId(resources[0].id)\n }, [resourceId, resources])\n\n const entries = stats.data?.entries ?? []\n const hits = sum(entries.map((entry) => entry.hits))\n const misses = sum(entries.map((entry) => entry.misses))\n const requests = hits + misses\n const hitRate = requests > 0 ? (hits / requests) * 100 : 0\n const computes = sum(entries.map((entry) => entry.computes))\n const computeMs = sum(entries.map((entry) => entry.computeMs))\n const errors = sum(entries.map((entry) =>\n entry.readErrors + entry.writeErrors + entry.invalidationErrors,\n ))\n const number = React.useMemo(() => new Intl.NumberFormat(locale), [locale])\n\n const invalidateSelected = (): void => {\n if (!resourceId) return\n notify.promise(invalidate.mutateAsync(resourceId), {\n loading: { key: 'cache:invalidate.loading' },\n success: { key: 'cache:invalidate.success' },\n error: { key: 'cache:invalidate.error' },\n })\n }\n\n const resetMetrics = (): void => {\n notify.promise(reset.mutateAsync(), {\n loading: { key: 'cache:reset.loading' },\n success: { key: 'cache:reset.success' },\n error: { key: 'cache:reset.error' },\n })\n }\n\n if (stats.isLoading) {\n return (\n <div className=\"flex flex-col gap-3 pb-4 sm:gap-4 sm:pb-6\">\n <Skeleton className=\"h-24 w-full\" />\n <Skeleton className=\"h-72 w-full\" />\n </div>\n )\n }\n\n if (stats.isError) {\n return (\n <Card>\n <CardHeader>\n <CardTitle>{t('cache:load.error')}</CardTitle>\n </CardHeader>\n <CardContent>\n <Button variant=\"outline\" onClick={() => void stats.refetch()}>\n <RotateCcw data-icon=\"inline-start\" />\n {t('cache:load.retry')}\n </Button>\n </CardContent>\n </Card>\n )\n }\n\n return (\n <div className=\"flex flex-col gap-3 pb-4 sm:gap-4 sm:pb-6\">\n <Card>\n <CardHeader className=\"sm:flex-row sm:items-start sm:justify-between\">\n <div className=\"flex flex-col gap-1.5\">\n <CardTitle>{t('cache:title')}</CardTitle>\n <CardDescription>{t('cache:description')}</CardDescription>\n </div>\n <Button variant=\"outline\" size=\"sm\" disabled={reset.isPending} onClick={resetMetrics}>\n <RotateCcw data-icon=\"inline-start\" />\n {t('cache:reset.action')}\n </Button>\n </CardHeader>\n <CardContent className=\"grid grid-cols-2 gap-3 lg:grid-cols-4\">\n <Metric label={t('cache:metric.hitRate')} value={`${hitRate.toFixed(1)}%`} />\n <Metric label={t('cache:metric.requests')} value={number.format(requests)} />\n <Metric\n label={t('cache:metric.avgCompute')}\n value={computes > 0\n ? t('cache:unit.ms').replace('{value}', number.format(Math.round(computeMs / computes)))\n : '—'}\n />\n <Metric label={t('cache:metric.errors')} value={number.format(errors)} />\n </CardContent>\n </Card>\n\n {(stats.data?.dirtyTags.length ?? 0) > 0 && (\n <Card>\n <CardHeader>\n <CardTitle>{t('cache:quarantine.title')}</CardTitle>\n <CardDescription>{t('cache:quarantine.description')}</CardDescription>\n </CardHeader>\n <CardContent className=\"flex flex-wrap gap-2\">\n {stats.data?.dirtyTags.map((tag) => (\n <Badge key={tag} variant=\"destructive\">{tag}</Badge>\n ))}\n </CardContent>\n </Card>\n )}\n\n <Card>\n <CardHeader>\n <CardTitle>{t('cache:invalidate.title')}</CardTitle>\n <CardDescription>{t('cache:invalidate.description')}</CardDescription>\n </CardHeader>\n <CardContent className=\"flex flex-col gap-2 sm:flex-row\">\n <Select value={resourceId} onValueChange={setResourceId}>\n <SelectTrigger aria-label={t('cache:invalidate.resource')} className=\"sm:max-w-sm\">\n <SelectValue placeholder={t('cache:invalidate.resource')} />\n </SelectTrigger>\n <SelectContent>\n <SelectGroup>\n {resources.map((resource) => (\n <SelectItem key={resource.id} value={resource.id}>{resource.name}</SelectItem>\n ))}\n </SelectGroup>\n </SelectContent>\n </Select>\n <Button\n variant=\"outline-destructive\"\n disabled={!resourceId || invalidate.isPending}\n onClick={invalidateSelected}\n >\n <Trash2 data-icon=\"inline-start\" />\n {t('cache:invalidate.action')}\n </Button>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle>{t('cache:table.title')}</CardTitle>\n <CardDescription>\n {t('cache:instance').replace('{id}', stats.data?.instanceId ?? '—')}\n </CardDescription>\n </CardHeader>\n <CardContent>\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>{t('cache:table.namespace')}</TableHead>\n <TableHead>{t('cache:table.resource')}</TableHead>\n <TableHead>{t('cache:table.hits')}</TableHead>\n <TableHead>{t('cache:table.misses')}</TableHead>\n <TableHead>{t('cache:table.computes')}</TableHead>\n <TableHead>{t('cache:table.coalesced')}</TableHead>\n <TableHead>{t('cache:table.errors')}</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {entries.length === 0 && (\n <TableRow>\n <TableCell colSpan={7} className=\"py-8 text-center text-muted-foreground\">\n {t('cache:table.empty')}\n </TableCell>\n </TableRow>\n )}\n {entries.map((entry) => (\n <TableRow key={`${entry.namespace}:${entry.resourceId ?? '*'}`}>\n <TableCell><Badge variant=\"outline\">{entry.namespace}</Badge></TableCell>\n <TableCell>{entry.resourceId ?? '—'}</TableCell>\n <TableCell>{number.format(entry.hits)}</TableCell>\n <TableCell>{number.format(entry.misses)}</TableCell>\n <TableCell>{number.format(entry.computes)}</TableCell>\n <TableCell>{number.format(entry.coalesced)}</TableCell>\n <TableCell>\n {number.format(entry.readErrors + entry.writeErrors + entry.invalidationErrors)}\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </CardContent>\n </Card>\n </div>\n )\n}\n\nfunction Metric({ label, value }: { label: string; value: string }): React.ReactElement {\n return (\n <div className=\"flex flex-col gap-1 rounded-md border border-border p-3\">\n <span className=\"text-xs text-muted-foreground\">{label}</span>\n <span className=\"text-xl font-semibold tabular-nums\">{value}</span>\n </div>\n )\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{a as e,i as t,n}from"./createLucideIcon-CUopU_LC.js";import{l as r,w as i}from"./floating-layer-DJGCYMex.js";import{c as a}from"./dist-CmyV2PEd.js";import{a as o,i as s,n as c,o as l,t as u}from"./select-BR1RMqsn.js";import{Tt as d,wt as f}from"./index-BvESJd1R.js";function p(e,t,n=`long`){return new Intl.DateTimeFormat(`en-US`,{hour:`numeric`,timeZone:e,timeZoneName:n}).format(t).split(/\s/g).slice(2).join(` `)}var m={},h={};function g(e,t){try{let n=(m[e]||=new Intl.DateTimeFormat(`en-US`,{timeZone:e,timeZoneName:`longOffset`}).format)(t).split(`GMT`)[1];return n in h?h[n]:v(n,n.split(`:`))}catch{if(e in h)return h[e];let t=e?.match(_);return t?v(e,t.slice(1)):NaN}}var _=/([+-]\d\d):?(\d\d)?/;function v(e,t){let n=+(t[0]||0),r=+(t[1]||0),i=(t[2]||0)/60;return h[e]=n*60+r>0?n*60+r+i:n*60-r-i}var y=class e extends Date{constructor(...e){super(),e.length>1&&typeof e[e.length-1]==`string`&&(this.timeZone=e.pop()),this.internal=new Date,isNaN(g(this.timeZone,this))?this.setTime(NaN):e.length?typeof e[0]==`number`&&(e.length===1||e.length===2&&typeof e[1]!=`number`)?this.setTime(e[0]):typeof e[0]==`string`?this.setTime(+new Date(e[0])):e[0]instanceof Date?this.setTime(+e[0]):(this.setTime(+new Date(...e)),ee(this,e)):this.setTime(Date.now())}static tz(t,...n){return n.length?new e(...n,t):new e(Date.now(),t)}withTimeZone(t){return new e(+this,t)}getTimezoneOffset(){let e=-g(this.timeZone,this);return e>0?Math.floor(e):Math.ceil(e)}setTime(e){return Date.prototype.setTime.apply(this,arguments),x(this),+this}[Symbol.for(`constructDateFrom`)](t){return new e(+new Date(t),this.timeZone)}},b=/^(get|set)(?!UTC)/;Object.getOwnPropertyNames(Date.prototype).forEach(e=>{if(!b.test(e))return;let t=e.replace(b,`$1UTC`);y.prototype[t]&&(e.startsWith(`get`)?y.prototype[e]=function(){return this.internal[t]()}:(y.prototype[e]=function(){return Date.prototype[t].apply(this.internal,arguments),S(this),+this},y.prototype[t]=function(){return Date.prototype[t].apply(this,arguments),x(this),+this}))});function x(e){e.internal.setTime(+e),e.internal.setUTCSeconds(e.internal.getUTCSeconds()-Math.round(-g(e.timeZone,e)*60))}function S(e){Date.prototype.setFullYear.call(e,e.internal.getUTCFullYear(),e.internal.getUTCMonth(),e.internal.getUTCDate()),Date.prototype.setHours.call(e,e.internal.getUTCHours(),e.internal.getUTCMinutes(),e.internal.getUTCSeconds(),e.internal.getUTCMilliseconds()),ee(e)}function ee(e,t){let n=Array.isArray(t)?te(t):+e.internal,r=g(e.timeZone,e),i=r>0?Math.floor(r):Math.ceil(r),a=new Date(+e);a.setUTCHours(a.getUTCHours()-1);let o=-new Date(+e).getTimezoneOffset(),s=-new Date(+a).getTimezoneOffset(),c=o-s,l=o;if(c&&o!==i&&Date.prototype.getHours.apply(e)!==(Array.isArray(t)?t[3]||0:e.internal.getUTCHours())){let t=new Date(+e),n=o-i;n&&t.setUTCMinutes(t.getUTCMinutes()+n);let r=g(e.timeZone,t);(r>0?Math.floor(r):Math.ceil(r))===i&&(l=s)}let u=l-i;u&&Date.prototype.setUTCMinutes.call(e,Date.prototype.getUTCMinutes.call(e)+u);let d=new Date(+e);d.setUTCSeconds(0);let f=o>0?d.getSeconds():(d.getSeconds()-60)%60,p=Math.round(-(g(e.timeZone,e)*60))%60;(p||f)&&Date.prototype.setUTCSeconds.call(e,Date.prototype.getUTCSeconds.call(e)+p+f);let m=g(e.timeZone,e),h=m>0?Math.floor(m):Math.ceil(m),_=-new Date(+e).getTimezoneOffset()-h,v=h!==i,y=_-u,b=h-i,S=n-h*60*1e3,ee=b>0&&C(e)-n===b*60*1e3&&C(e,S)!==n;if(v&&y&&!ee){Date.prototype.setUTCMinutes.call(e,Date.prototype.getUTCMinutes.call(e)+y);let t=g(e.timeZone,e),n=h-(t>0?Math.floor(t):Math.ceil(t));n&&y<0&&Date.prototype.setUTCMinutes.call(e,Date.prototype.getUTCMinutes.call(e)+n)}x(e);let w=(t?n:n+p*1e3)-+e.internal;w&&Math.abs(w)<1800*1e3&&(Date.prototype.setTime.call(e,+e+w),x(e))}function te(e){return Date.UTC(e[0],e.length>1?e[1]:0,e.length>2?e[2]:1,...e.slice(3))}function C(e,t){let n=new Date(t??+e);return n.setUTCSeconds(n.getUTCSeconds()-Math.round(-g(e.timeZone,n)*60)),+n}var w=class e extends y{static tz(t,...n){return n.length?new e(...n,t):new e(Date.now(),t)}toISOString(){let[e,t,n]=this.tzComponents(),r=`${e}${t}:${n}`;return this.internal.toISOString().slice(0,-1)+r}toString(){return`${this.toDateString()} ${this.toTimeString()}`}toDateString(){let[e,t,n,r]=this.internal.toUTCString().split(` `);return`${e?.slice(0,-1)} ${n} ${t} ${r}`}toTimeString(){let e=this.internal.toUTCString().split(` `)[4],[t,n,r]=this.tzComponents();return`${e} GMT${t}${n}${r} (${p(this.timeZone,this)})`}toLocaleString(e,t){return Date.prototype.toLocaleString.call(this,e,{...t,timeZone:t?.timeZone||this.timeZone})}toLocaleDateString(e,t){return Date.prototype.toLocaleDateString.call(this,e,{...t,timeZone:t?.timeZone||this.timeZone})}toLocaleTimeString(e,t){return Date.prototype.toLocaleTimeString.call(this,e,{...t,timeZone:t?.timeZone||this.timeZone})}tzComponents(){let e=this.getTimezoneOffset();return[e>0?`-`:`+`,String(Math.floor(Math.abs(e)/60)).padStart(2,`0`),String(Math.abs(e)%60).padStart(2,`0`)]}withTimeZone(t){return new e(+this,t)}[Symbol.for(`constructDateFrom`)](t){return new e(+new Date(t),this.timeZone)}},ne=365.2425,re=6048e5,ie=864e5,ae=6e4,oe=36e5,se=1e3,ce=3600*24;ce*7,ce*ne/12*3;var le=Symbol.for(`constructDateFrom`);function T(e,t){return typeof e==`function`?e(t):e&&typeof e==`object`&&le in e?e[le](t):e instanceof Date?new e.constructor(t):new Date(t)}function E(e,t){return T(t||e,e)}function D(e,t,n){let r=E(e,n?.in);return isNaN(t)?T(n?.in||e,NaN):(t&&r.setDate(r.getDate()+t),r)}function ue(e,t,n){let r=E(e,n?.in);if(isNaN(t))return T(n?.in||e,NaN);if(!t)return r;let i=r.getDate(),a=T(n?.in||e,r.getTime());return a.setMonth(r.getMonth()+t+1,0),i>=a.getDate()?a:(r.setFullYear(a.getFullYear(),a.getMonth(),i),r)}var de={};function O(){return de}function k(e,t){let n=O(),r=t?.weekStartsOn??t?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,i=E(e,t?.in),a=i.getDay(),o=(a<r?7:0)+a-r;return i.setDate(i.getDate()-o),i.setHours(0,0,0,0),i}function A(e,t){return k(e,{...t,weekStartsOn:1})}function fe(e,t){let n=E(e,t?.in),r=n.getFullYear(),i=T(n,0);i.setFullYear(r+1,0,4),i.setHours(0,0,0,0);let a=A(i),o=T(n,0);o.setFullYear(r,0,4),o.setHours(0,0,0,0);let s=A(o);return n.getTime()>=a.getTime()?r+1:n.getTime()>=s.getTime()?r:r-1}function pe(e){let t=E(e),n=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return n.setUTCFullYear(t.getFullYear()),e-+n}function j(e,...t){let n=T.bind(null,e||t.find(e=>typeof e==`object`));return t.map(n)}function M(e,t){let n=E(e,t?.in);return n.setHours(0,0,0,0),n}function me(e,t,n){let[r,i]=j(n?.in,e,t),a=M(r),o=M(i),s=+a-pe(a),c=+o-pe(o);return Math.round((s-c)/ie)}function he(e,t){let n=fe(e,t),r=T(t?.in||e,0);return r.setFullYear(n,0,4),r.setHours(0,0,0,0),A(r)}function ge(e,t,n){return D(e,t*7,n)}function _e(e,t,n){return ue(e,t*12,n)}function ve(e,t){let n,r=t?.in;return e.forEach(e=>{!r&&typeof e==`object`&&(r=T.bind(null,e));let t=E(e,r);(!n||n<t||isNaN(+t))&&(n=t)}),T(r,n||NaN)}function ye(e,t){let n,r=t?.in;return e.forEach(e=>{!r&&typeof e==`object`&&(r=T.bind(null,e));let t=E(e,r);(!n||n>t||isNaN(+t))&&(n=t)}),T(r,n||NaN)}function be(e,t,n){let[r,i]=j(n?.in,e,t);return+M(r)==+M(i)}function xe(e){return e instanceof Date||typeof e==`object`&&Object.prototype.toString.call(e)===`[object Date]`}function Se(e){return!(!xe(e)&&typeof e!=`number`||isNaN(+E(e)))}function Ce(e,t,n){let[r,i]=j(n?.in,e,t),a=r.getFullYear()-i.getFullYear(),o=r.getMonth()-i.getMonth();return a*12+o}function we(e,t){let n=E(e,t?.in),r=n.getMonth();return n.setFullYear(n.getFullYear(),r+1,0),n.setHours(23,59,59,999),n}function Te(e,t){let[n,r]=j(e,t.start,t.end);return{start:n,end:r}}function Ee(e,t){let{start:n,end:r}=Te(t?.in,e),i=+n>+r,a=i?+n:+r,o=i?r:n;o.setHours(0,0,0,0),o.setDate(1);let s=t?.step??1;if(!s)return[];s<0&&(s=-s,i=!i);let c=[];for(;+o<=a;)c.push(T(n,o)),o.setMonth(o.getMonth()+s);return i?c.reverse():c}function De(e,t){let n=E(e,t?.in);return n.setDate(1),n.setHours(0,0,0,0),n}function Oe(e,t){let n=E(e,t?.in),r=n.getFullYear();return n.setFullYear(r+1,0,0),n.setHours(23,59,59,999),n}function ke(e,t){let n=E(e,t?.in);return n.setFullYear(n.getFullYear(),0,1),n.setHours(0,0,0,0),n}function Ae(e,t){let{start:n,end:r}=Te(t?.in,e),i=+n>+r,a=i?+n:+r,o=i?r:n;o.setHours(0,0,0,0),o.setMonth(0,1);let s=t?.step??1;if(!s)return[];s<0&&(s=-s,i=!i);let c=[];for(;+o<=a;)c.push(T(n,o)),o.setFullYear(o.getFullYear()+s);return i?c.reverse():c}function je(e,t){let n=O(),r=t?.weekStartsOn??t?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,i=E(e,t?.in),a=i.getDay(),o=(a<r?-7:0)+6-(a-r);return i.setDate(i.getDate()+o),i.setHours(23,59,59,999),i}function Me(e,t){return je(e,{...t,weekStartsOn:1})}var Ne={lessThanXSeconds:{one:`less than a second`,other:`less than {{count}} seconds`},xSeconds:{one:`1 second`,other:`{{count}} seconds`},halfAMinute:`half a minute`,lessThanXMinutes:{one:`less than a minute`,other:`less than {{count}} minutes`},xMinutes:{one:`1 minute`,other:`{{count}} minutes`},aboutXHours:{one:`about 1 hour`,other:`about {{count}} hours`},xHours:{one:`1 hour`,other:`{{count}} hours`},xDays:{one:`1 day`,other:`{{count}} days`},aboutXWeeks:{one:`about 1 week`,other:`about {{count}} weeks`},xWeeks:{one:`1 week`,other:`{{count}} weeks`},aboutXMonths:{one:`about 1 month`,other:`about {{count}} months`},xMonths:{one:`1 month`,other:`{{count}} months`},aboutXYears:{one:`about 1 year`,other:`about {{count}} years`},xYears:{one:`1 year`,other:`{{count}} years`},overXYears:{one:`over 1 year`,other:`over {{count}} years`},almostXYears:{one:`almost 1 year`,other:`almost {{count}} years`}},Pe=(e,t,n)=>{let r,i=Ne[e];return r=typeof i==`string`?i:t===1?i.one:i.other.replace(`{{count}}`,t.toString()),n?.addSuffix?n.comparison&&n.comparison>0?`in `+r:r+` ago`:r};function Fe(e){return(t={})=>{let n=t.width?String(t.width):e.defaultWidth;return e.formats[n]||e.formats[e.defaultWidth]}}var Ie={date:Fe({formats:{full:`EEEE, MMMM do, y`,long:`MMMM do, y`,medium:`MMM d, y`,short:`MM/dd/yyyy`},defaultWidth:`full`}),time:Fe({formats:{full:`h:mm:ss a zzzz`,long:`h:mm:ss a z`,medium:`h:mm:ss a`,short:`h:mm a`},defaultWidth:`full`}),dateTime:Fe({formats:{full:`{{date}} 'at' {{time}}`,long:`{{date}} 'at' {{time}}`,medium:`{{date}}, {{time}}`,short:`{{date}}, {{time}}`},defaultWidth:`full`})},Le={lastWeek:`'last' eeee 'at' p`,yesterday:`'yesterday at' p`,today:`'today at' p`,tomorrow:`'tomorrow at' p`,nextWeek:`eeee 'at' p`,other:`P`},Re=(e,t,n,r)=>Le[e];function ze(e){return(t,n)=>{let r=n?.context?String(n.context):`standalone`,i;if(r===`formatting`&&e.formattingValues){let t=e.defaultFormattingWidth||e.defaultWidth,r=n?.width?String(n.width):t;i=e.formattingValues[r]||e.formattingValues[t]}else{let t=e.defaultWidth,r=n?.width?String(n.width):e.defaultWidth;i=e.values[r]||e.values[t]}let a=e.argumentCallback?e.argumentCallback(t):t;return i[a]}}var Be={ordinalNumber:(e,t)=>{let n=Number(e),r=n%100;if(r>20||r<10)switch(r%10){case 1:return n+`st`;case 2:return n+`nd`;case 3:return n+`rd`}return n+`th`},era:ze({values:{narrow:[`B`,`A`],abbreviated:[`BC`,`AD`],wide:[`Before Christ`,`Anno Domini`]},defaultWidth:`wide`}),quarter:ze({values:{narrow:[`1`,`2`,`3`,`4`],abbreviated:[`Q1`,`Q2`,`Q3`,`Q4`],wide:[`1st quarter`,`2nd quarter`,`3rd quarter`,`4th quarter`]},defaultWidth:`wide`,argumentCallback:e=>e-1}),month:ze({values:{narrow:[`J`,`F`,`M`,`A`,`M`,`J`,`J`,`A`,`S`,`O`,`N`,`D`],abbreviated:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],wide:[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`]},defaultWidth:`wide`}),day:ze({values:{narrow:[`S`,`M`,`T`,`W`,`T`,`F`,`S`],short:[`Su`,`Mo`,`Tu`,`We`,`Th`,`Fr`,`Sa`],abbreviated:[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],wide:[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`]},defaultWidth:`wide`}),dayPeriod:ze({values:{narrow:{am:`a`,pm:`p`,midnight:`mi`,noon:`n`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},abbreviated:{am:`AM`,pm:`PM`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},wide:{am:`a.m.`,pm:`p.m.`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`}},defaultWidth:`wide`,formattingValues:{narrow:{am:`a`,pm:`p`,midnight:`mi`,noon:`n`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`},abbreviated:{am:`AM`,pm:`PM`,midnight:`midnight`,noon:`noon`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`},wide:{am:`a.m.`,pm:`p.m.`,midnight:`midnight`,noon:`noon`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`}},defaultFormattingWidth:`wide`})};function Ve(e){return(t,n={})=>{let r=n.width,i=r&&e.matchPatterns[r]||e.matchPatterns[e.defaultMatchWidth],a=t.match(i);if(!a)return null;let o=a[0],s=r&&e.parsePatterns[r]||e.parsePatterns[e.defaultParseWidth],c=Array.isArray(s)?Ue(s,e=>e.test(o)):He(s,e=>e.test(o)),l;l=e.valueCallback?e.valueCallback(c):c,l=n.valueCallback?n.valueCallback(l):l;let u=t.slice(o.length);return{value:l,rest:u}}}function He(e,t){for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&t(e[n]))return n}function Ue(e,t){for(let n=0;n<e.length;n++)if(t(e[n]))return n}function We(e){return(t,n={})=>{let r=t.match(e.matchPattern);if(!r)return null;let i=r[0],a=t.match(e.parsePattern);if(!a)return null;let o=e.valueCallback?e.valueCallback(a[0]):a[0];o=n.valueCallback?n.valueCallback(o):o;let s=t.slice(i.length);return{value:o,rest:s}}}var Ge={code:`en-US`,formatDistance:Pe,formatLong:Ie,formatRelative:Re,localize:Be,match:{ordinalNumber:We({matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:Ve({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:`any`}),quarter:Ve({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:`any`,valueCallback:e=>e+1}),month:Ve({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:`wide`,parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:`any`}),day:Ve({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:`wide`,parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:`any`}),dayPeriod:Ve({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:`any`,parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:`any`})},options:{weekStartsOn:0,firstWeekContainsDate:1}};function Ke(e,t){let n=E(e,t?.in);return me(n,ke(n))+1}function qe(e,t){let n=E(e,t?.in),r=A(n)-+he(n);return Math.round(r/re)+1}function Je(e,t){let n=E(e,t?.in),r=n.getFullYear(),i=O(),a=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??i.firstWeekContainsDate??i.locale?.options?.firstWeekContainsDate??1,o=T(t?.in||e,0);o.setFullYear(r+1,0,a),o.setHours(0,0,0,0);let s=k(o,t),c=T(t?.in||e,0);c.setFullYear(r,0,a),c.setHours(0,0,0,0);let l=k(c,t);return+n>=+s?r+1:+n>=+l?r:r-1}function Ye(e,t){let n=O(),r=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,i=Je(e,t),a=T(t?.in||e,0);return a.setFullYear(i,0,r),a.setHours(0,0,0,0),k(a,t)}function Xe(e,t){let n=E(e,t?.in),r=k(n,t)-+Ye(n,t);return Math.round(r/re)+1}function N(e,t){return(e<0?`-`:``)+Math.abs(e).toString().padStart(t,`0`)}var P={y(e,t){let n=e.getFullYear(),r=n>0?n:1-n;return N(t===`yy`?r%100:r,t.length)},M(e,t){let n=e.getMonth();return t===`M`?String(n+1):N(n+1,2)},d(e,t){return N(e.getDate(),t.length)},a(e,t){let n=e.getHours()/12>=1?`pm`:`am`;switch(t){case`a`:case`aa`:return n.toUpperCase();case`aaa`:return n;case`aaaaa`:return n[0];default:return n===`am`?`a.m.`:`p.m.`}},h(e,t){return N(e.getHours()%12||12,t.length)},H(e,t){return N(e.getHours(),t.length)},m(e,t){return N(e.getMinutes(),t.length)},s(e,t){return N(e.getSeconds(),t.length)},S(e,t){let n=t.length,r=e.getMilliseconds();return N(Math.trunc(r*10**(n-3)),t.length)}},Ze={am:`am`,pm:`pm`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},Qe={G:function(e,t,n){let r=+(e.getFullYear()>0);switch(t){case`G`:case`GG`:case`GGG`:return n.era(r,{width:`abbreviated`});case`GGGGG`:return n.era(r,{width:`narrow`});default:return n.era(r,{width:`wide`})}},y:function(e,t,n){if(t===`yo`){let t=e.getFullYear(),r=t>0?t:1-t;return n.ordinalNumber(r,{unit:`year`})}return P.y(e,t)},Y:function(e,t,n,r){let i=Je(e,r),a=i>0?i:1-i;return t===`YY`?N(a%100,2):t===`Yo`?n.ordinalNumber(a,{unit:`year`}):N(a,t.length)},R:function(e,t){return N(fe(e),t.length)},u:function(e,t){return N(e.getFullYear(),t.length)},Q:function(e,t,n){let r=Math.ceil((e.getMonth()+1)/3);switch(t){case`Q`:return String(r);case`QQ`:return N(r,2);case`Qo`:return n.ordinalNumber(r,{unit:`quarter`});case`QQQ`:return n.quarter(r,{width:`abbreviated`,context:`formatting`});case`QQQQQ`:return n.quarter(r,{width:`narrow`,context:`formatting`});default:return n.quarter(r,{width:`wide`,context:`formatting`})}},q:function(e,t,n){let r=Math.ceil((e.getMonth()+1)/3);switch(t){case`q`:return String(r);case`qq`:return N(r,2);case`qo`:return n.ordinalNumber(r,{unit:`quarter`});case`qqq`:return n.quarter(r,{width:`abbreviated`,context:`standalone`});case`qqqqq`:return n.quarter(r,{width:`narrow`,context:`standalone`});default:return n.quarter(r,{width:`wide`,context:`standalone`})}},M:function(e,t,n){let r=e.getMonth();switch(t){case`M`:case`MM`:return P.M(e,t);case`Mo`:return n.ordinalNumber(r+1,{unit:`month`});case`MMM`:return n.month(r,{width:`abbreviated`,context:`formatting`});case`MMMMM`:return n.month(r,{width:`narrow`,context:`formatting`});default:return n.month(r,{width:`wide`,context:`formatting`})}},L:function(e,t,n){let r=e.getMonth();switch(t){case`L`:return String(r+1);case`LL`:return N(r+1,2);case`Lo`:return n.ordinalNumber(r+1,{unit:`month`});case`LLL`:return n.month(r,{width:`abbreviated`,context:`standalone`});case`LLLLL`:return n.month(r,{width:`narrow`,context:`standalone`});default:return n.month(r,{width:`wide`,context:`standalone`})}},w:function(e,t,n,r){let i=Xe(e,r);return t===`wo`?n.ordinalNumber(i,{unit:`week`}):N(i,t.length)},I:function(e,t,n){let r=qe(e);return t===`Io`?n.ordinalNumber(r,{unit:`week`}):N(r,t.length)},d:function(e,t,n){return t===`do`?n.ordinalNumber(e.getDate(),{unit:`date`}):P.d(e,t)},D:function(e,t,n){let r=Ke(e);return t===`Do`?n.ordinalNumber(r,{unit:`dayOfYear`}):N(r,t.length)},E:function(e,t,n){let r=e.getDay();switch(t){case`E`:case`EE`:case`EEE`:return n.day(r,{width:`abbreviated`,context:`formatting`});case`EEEEE`:return n.day(r,{width:`narrow`,context:`formatting`});case`EEEEEE`:return n.day(r,{width:`short`,context:`formatting`});default:return n.day(r,{width:`wide`,context:`formatting`})}},e:function(e,t,n,r){let i=e.getDay(),a=(i-r.weekStartsOn+8)%7||7;switch(t){case`e`:return String(a);case`ee`:return N(a,2);case`eo`:return n.ordinalNumber(a,{unit:`day`});case`eee`:return n.day(i,{width:`abbreviated`,context:`formatting`});case`eeeee`:return n.day(i,{width:`narrow`,context:`formatting`});case`eeeeee`:return n.day(i,{width:`short`,context:`formatting`});default:return n.day(i,{width:`wide`,context:`formatting`})}},c:function(e,t,n,r){let i=e.getDay(),a=(i-r.weekStartsOn+8)%7||7;switch(t){case`c`:return String(a);case`cc`:return N(a,t.length);case`co`:return n.ordinalNumber(a,{unit:`day`});case`ccc`:return n.day(i,{width:`abbreviated`,context:`standalone`});case`ccccc`:return n.day(i,{width:`narrow`,context:`standalone`});case`cccccc`:return n.day(i,{width:`short`,context:`standalone`});default:return n.day(i,{width:`wide`,context:`standalone`})}},i:function(e,t,n){let r=e.getDay(),i=r===0?7:r;switch(t){case`i`:return String(i);case`ii`:return N(i,t.length);case`io`:return n.ordinalNumber(i,{unit:`day`});case`iii`:return n.day(r,{width:`abbreviated`,context:`formatting`});case`iiiii`:return n.day(r,{width:`narrow`,context:`formatting`});case`iiiiii`:return n.day(r,{width:`short`,context:`formatting`});default:return n.day(r,{width:`wide`,context:`formatting`})}},a:function(e,t,n){let r=e.getHours()/12>=1?`pm`:`am`;switch(t){case`a`:case`aa`:return n.dayPeriod(r,{width:`abbreviated`,context:`formatting`});case`aaa`:return n.dayPeriod(r,{width:`abbreviated`,context:`formatting`}).toLowerCase();case`aaaaa`:return n.dayPeriod(r,{width:`narrow`,context:`formatting`});default:return n.dayPeriod(r,{width:`wide`,context:`formatting`})}},b:function(e,t,n){let r=e.getHours(),i;switch(i=r===12?Ze.noon:r===0?Ze.midnight:r/12>=1?`pm`:`am`,t){case`b`:case`bb`:return n.dayPeriod(i,{width:`abbreviated`,context:`formatting`});case`bbb`:return n.dayPeriod(i,{width:`abbreviated`,context:`formatting`}).toLowerCase();case`bbbbb`:return n.dayPeriod(i,{width:`narrow`,context:`formatting`});default:return n.dayPeriod(i,{width:`wide`,context:`formatting`})}},B:function(e,t,n){let r=e.getHours(),i;switch(i=r>=17?Ze.evening:r>=12?Ze.afternoon:r>=4?Ze.morning:Ze.night,t){case`B`:case`BB`:case`BBB`:return n.dayPeriod(i,{width:`abbreviated`,context:`formatting`});case`BBBBB`:return n.dayPeriod(i,{width:`narrow`,context:`formatting`});default:return n.dayPeriod(i,{width:`wide`,context:`formatting`})}},h:function(e,t,n){if(t===`ho`){let t=e.getHours()%12;return t===0&&(t=12),n.ordinalNumber(t,{unit:`hour`})}return P.h(e,t)},H:function(e,t,n){return t===`Ho`?n.ordinalNumber(e.getHours(),{unit:`hour`}):P.H(e,t)},K:function(e,t,n){let r=e.getHours()%12;return t===`Ko`?n.ordinalNumber(r,{unit:`hour`}):N(r,t.length)},k:function(e,t,n){let r=e.getHours();return r===0&&(r=24),t===`ko`?n.ordinalNumber(r,{unit:`hour`}):N(r,t.length)},m:function(e,t,n){return t===`mo`?n.ordinalNumber(e.getMinutes(),{unit:`minute`}):P.m(e,t)},s:function(e,t,n){return t===`so`?n.ordinalNumber(e.getSeconds(),{unit:`second`}):P.s(e,t)},S:function(e,t){return P.S(e,t)},X:function(e,t,n){let r=e.getTimezoneOffset();if(r===0)return`Z`;switch(t){case`X`:return et(r);case`XXXX`:case`XX`:return tt(r);default:return tt(r,`:`)}},x:function(e,t,n){let r=e.getTimezoneOffset();switch(t){case`x`:return et(r);case`xxxx`:case`xx`:return tt(r);default:return tt(r,`:`)}},O:function(e,t,n){let r=e.getTimezoneOffset();switch(t){case`O`:case`OO`:case`OOO`:return`GMT`+$e(r,`:`);default:return`GMT`+tt(r,`:`)}},z:function(e,t,n){let r=e.getTimezoneOffset();switch(t){case`z`:case`zz`:case`zzz`:return`GMT`+$e(r,`:`);default:return`GMT`+tt(r,`:`)}},t:function(e,t,n){return N(Math.trunc(e/1e3),t.length)},T:function(e,t,n){return N(+e,t.length)}};function $e(e,t=``){let n=e>0?`-`:`+`,r=Math.abs(e),i=Math.trunc(r/60),a=r%60;return a===0?n+String(i):n+String(i)+t+N(a,2)}function et(e,t){return e%60==0?(e>0?`-`:`+`)+N(Math.abs(e)/60,2):tt(e,t)}function tt(e,t=``){let n=e>0?`-`:`+`,r=Math.abs(e),i=N(Math.trunc(r/60),2),a=N(r%60,2);return n+i+t+a}var nt=(e,t)=>{switch(e){case`P`:return t.date({width:`short`});case`PP`:return t.date({width:`medium`});case`PPP`:return t.date({width:`long`});default:return t.date({width:`full`})}},rt=(e,t)=>{switch(e){case`p`:return t.time({width:`short`});case`pp`:return t.time({width:`medium`});case`ppp`:return t.time({width:`long`});default:return t.time({width:`full`})}},it={p:rt,P:(e,t)=>{let n=e.match(/(P+)(p+)?/)||[],r=n[1],i=n[2];if(!i)return nt(e,t);let a;switch(r){case`P`:a=t.dateTime({width:`short`});break;case`PP`:a=t.dateTime({width:`medium`});break;case`PPP`:a=t.dateTime({width:`long`});break;default:a=t.dateTime({width:`full`});break}return a.replace(`{{date}}`,nt(r,t)).replace(`{{time}}`,rt(i,t))}},at=/^D+$/,ot=/^Y+$/,st=[`D`,`DD`,`YY`,`YYYY`];function ct(e){return at.test(e)}function lt(e){return ot.test(e)}function ut(e,t,n){let r=dt(e,t,n);if(console.warn(r),st.includes(e))throw RangeError(r)}function dt(e,t,n){let r=e[0]===`Y`?`years`:`days of the month`;return`Use \`${e.toLowerCase()}\` instead of \`${e}\` (in \`${t}\`) for formatting ${r} to the input \`${n}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}var ft=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,pt=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,mt=/^'([^]*?)'?$/,ht=/''/g,gt=/[a-zA-Z]/;function _t(e,t,n){let r=O(),i=n?.locale??r.locale??Ge,a=n?.firstWeekContainsDate??n?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,o=n?.weekStartsOn??n?.locale?.options?.weekStartsOn??r.weekStartsOn??r.locale?.options?.weekStartsOn??0,s=E(e,n?.in);if(!Se(s))throw RangeError(`Invalid time value`);let c=t.match(pt).map(e=>{let t=e[0];if(t===`p`||t===`P`){let n=it[t];return n(e,i.formatLong)}return e}).join(``).match(ft).map(e=>{if(e===`''`)return{isToken:!1,value:`'`};let t=e[0];if(t===`'`)return{isToken:!1,value:vt(e)};if(Qe[t])return{isToken:!0,value:e};if(t.match(gt))throw RangeError("Format string contains an unescaped latin alphabet character `"+t+"`");return{isToken:!1,value:e}});i.localize.preprocessor&&(c=i.localize.preprocessor(s,c));let l={firstWeekContainsDate:a,weekStartsOn:o,locale:i};return c.map(r=>{if(!r.isToken)return r.value;let a=r.value;(!n?.useAdditionalWeekYearTokens&&lt(a)||!n?.useAdditionalDayOfYearTokens&&ct(a))&&ut(a,t,String(e));let o=Qe[a[0]];return o(s,a,i.localize,l)}).join(``)}function vt(e){let t=e.match(mt);return t?t[1].replace(ht,`'`):e}function yt(e,t){let n=E(e,t?.in),r=n.getFullYear(),i=n.getMonth(),a=T(n,0);return a.setFullYear(r,i+1,0),a.setHours(0,0,0,0),a.getDate()}function bt(){return Object.assign({},O())}function xt(e,t){let n=E(e,t?.in).getDay();return n===0?7:n}function St(e,t){return E(e,t?.in).getMonth()}function Ct(e,t){return E(e,t?.in).getFullYear()}function wt(e,t){return+E(e)>+E(t)}function Tt(e,t){return+E(e)<+E(t)}function Et(e,t){let n=Dt(t)?new t(0):T(t,0);return n.setFullYear(e.getFullYear(),e.getMonth(),e.getDate()),n.setHours(e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()),n}function Dt(e){return typeof e==`function`&&e.prototype?.constructor===e}var Ot=10,kt=class{subPriority=0;validate(e,t){return!0}},At=class extends kt{constructor(e,t,n,r,i){super(),this.value=e,this.validateValue=t,this.setValue=n,this.priority=r,i&&(this.subPriority=i)}validate(e,t){return this.validateValue(e,this.value,t)}set(e,t,n){return this.setValue(e,t,this.value,n)}},jt=class extends kt{priority=Ot;subPriority=-1;constructor(e,t){super(),this.context=e||(e=>T(t,e))}set(e,t){return t.timestampIsSet?e:T(e,Et(e,this.context))}},F=class{run(e,t,n,r){let i=this.parse(e,t,n,r);return i?{setter:new At(i.value,this.validate,this.set,this.priority,this.subPriority),rest:i.rest}:null}validate(e,t,n){return!0}},Mt=class extends F{priority=140;parse(e,t,n){switch(t){case`G`:case`GG`:case`GGG`:return n.era(e,{width:`abbreviated`})||n.era(e,{width:`narrow`});case`GGGGG`:return n.era(e,{width:`narrow`});default:return n.era(e,{width:`wide`})||n.era(e,{width:`abbreviated`})||n.era(e,{width:`narrow`})}}set(e,t,n){return t.era=n,e.setFullYear(n,0,1),e.setHours(0,0,0,0),e}incompatibleTokens=[`R`,`u`,`t`,`T`]},I={month:/^(1[0-2]|0?\d)/,date:/^(3[0-1]|[0-2]?\d)/,dayOfYear:/^(36[0-6]|3[0-5]\d|[0-2]?\d?\d)/,week:/^(5[0-3]|[0-4]?\d)/,hour23h:/^(2[0-3]|[0-1]?\d)/,hour24h:/^(2[0-4]|[0-1]?\d)/,hour11h:/^(1[0-1]|0?\d)/,hour12h:/^(1[0-2]|0?\d)/,minute:/^[0-5]?\d/,second:/^[0-5]?\d/,singleDigit:/^\d/,twoDigits:/^\d{1,2}/,threeDigits:/^\d{1,3}/,fourDigits:/^\d{1,4}/,anyDigitsSigned:/^-?\d+/,singleDigitSigned:/^-?\d/,twoDigitsSigned:/^-?\d{1,2}/,threeDigitsSigned:/^-?\d{1,3}/,fourDigitsSigned:/^-?\d{1,4}/},L={basicOptionalMinutes:/^([+-])(\d{2})(\d{2})?|Z/,basic:/^([+-])(\d{2})(\d{2})|Z/,basicOptionalSeconds:/^([+-])(\d{2})(\d{2})((\d{2}))?|Z/,extended:/^([+-])(\d{2}):(\d{2})|Z/,extendedOptionalSeconds:/^([+-])(\d{2}):(\d{2})(:(\d{2}))?|Z/};function R(e,t){return e&&{value:t(e.value),rest:e.rest}}function z(e,t){let n=t.match(e);return n?{value:parseInt(n[0],10),rest:t.slice(n[0].length)}:null}function B(e,t){let n=t.match(e);if(!n)return null;if(n[0]===`Z`)return{value:0,rest:t.slice(1)};let r=n[1]===`+`?1:-1,i=n[2]?parseInt(n[2],10):0,a=n[3]?parseInt(n[3],10):0,o=n[5]?parseInt(n[5],10):0;return{value:r*(i*oe+a*ae+o*se),rest:t.slice(n[0].length)}}function Nt(e){return z(I.anyDigitsSigned,e)}function V(e,t){switch(e){case 1:return z(I.singleDigit,t);case 2:return z(I.twoDigits,t);case 3:return z(I.threeDigits,t);case 4:return z(I.fourDigits,t);default:return z(RegExp(`^\\d{1,`+e+`}`),t)}}function Pt(e,t){switch(e){case 1:return z(I.singleDigitSigned,t);case 2:return z(I.twoDigitsSigned,t);case 3:return z(I.threeDigitsSigned,t);case 4:return z(I.fourDigitsSigned,t);default:return z(RegExp(`^-?\\d{1,`+e+`}`),t)}}function Ft(e){switch(e){case`morning`:return 4;case`evening`:return 17;case`pm`:case`noon`:case`afternoon`:return 12;default:return 0}}function It(e,t){let n=t>0,r=n?t:1-t,i;if(r<=50)i=e||100;else{let t=r+50,n=Math.trunc(t/100)*100,a=e>=t%100;i=e+n-(a?100:0)}return n?i:1-i}function Lt(e){return e%400==0||e%4==0&&e%100!=0}var Rt=class extends F{priority=130;incompatibleTokens=[`Y`,`R`,`u`,`w`,`I`,`i`,`e`,`c`,`t`,`T`];parse(e,t,n){let r=e=>({year:e,isTwoDigitYear:t===`yy`});switch(t){case`y`:return R(V(4,e),r);case`yo`:return R(n.ordinalNumber(e,{unit:`year`}),r);default:return R(V(t.length,e),r)}}validate(e,t){return t.isTwoDigitYear||t.year>0}set(e,t,n){let r=e.getFullYear();if(n.isTwoDigitYear){let t=It(n.year,r);return e.setFullYear(t,0,1),e.setHours(0,0,0,0),e}let i=!(`era`in t)||t.era===1?n.year:1-n.year;return e.setFullYear(i,0,1),e.setHours(0,0,0,0),e}},zt=class extends F{priority=130;parse(e,t,n){let r=e=>({year:e,isTwoDigitYear:t===`YY`});switch(t){case`Y`:return R(V(4,e),r);case`Yo`:return R(n.ordinalNumber(e,{unit:`year`}),r);default:return R(V(t.length,e),r)}}validate(e,t){return t.isTwoDigitYear||t.year>0}set(e,t,n,r){let i=Je(e,r);if(n.isTwoDigitYear){let t=It(n.year,i);return e.setFullYear(t,0,r.firstWeekContainsDate),e.setHours(0,0,0,0),k(e,r)}let a=!(`era`in t)||t.era===1?n.year:1-n.year;return e.setFullYear(a,0,r.firstWeekContainsDate),e.setHours(0,0,0,0),k(e,r)}incompatibleTokens=[`y`,`R`,`u`,`Q`,`q`,`M`,`L`,`I`,`d`,`D`,`i`,`t`,`T`]},Bt=class extends F{priority=130;parse(e,t){return Pt(t===`R`?4:t.length,e)}set(e,t,n){let r=T(e,0);return r.setFullYear(n,0,4),r.setHours(0,0,0,0),A(r)}incompatibleTokens=[`G`,`y`,`Y`,`u`,`Q`,`q`,`M`,`L`,`w`,`d`,`D`,`e`,`c`,`t`,`T`]},Vt=class extends F{priority=130;parse(e,t){return Pt(t===`u`?4:t.length,e)}set(e,t,n){return e.setFullYear(n,0,1),e.setHours(0,0,0,0),e}incompatibleTokens=[`G`,`y`,`Y`,`R`,`w`,`I`,`i`,`e`,`c`,`t`,`T`]},Ht=class extends F{priority=120;parse(e,t,n){switch(t){case`Q`:case`QQ`:return V(t.length,e);case`Qo`:return n.ordinalNumber(e,{unit:`quarter`});case`QQQ`:return n.quarter(e,{width:`abbreviated`,context:`formatting`})||n.quarter(e,{width:`narrow`,context:`formatting`});case`QQQQQ`:return n.quarter(e,{width:`narrow`,context:`formatting`});default:return n.quarter(e,{width:`wide`,context:`formatting`})||n.quarter(e,{width:`abbreviated`,context:`formatting`})||n.quarter(e,{width:`narrow`,context:`formatting`})}}validate(e,t){return t>=1&&t<=4}set(e,t,n){return e.setMonth((n-1)*3,1),e.setHours(0,0,0,0),e}incompatibleTokens=[`Y`,`R`,`q`,`M`,`L`,`w`,`I`,`d`,`D`,`i`,`e`,`c`,`t`,`T`]},Ut=class extends F{priority=120;parse(e,t,n){switch(t){case`q`:case`qq`:return V(t.length,e);case`qo`:return n.ordinalNumber(e,{unit:`quarter`});case`qqq`:return n.quarter(e,{width:`abbreviated`,context:`standalone`})||n.quarter(e,{width:`narrow`,context:`standalone`});case`qqqqq`:return n.quarter(e,{width:`narrow`,context:`standalone`});default:return n.quarter(e,{width:`wide`,context:`standalone`})||n.quarter(e,{width:`abbreviated`,context:`standalone`})||n.quarter(e,{width:`narrow`,context:`standalone`})}}validate(e,t){return t>=1&&t<=4}set(e,t,n){return e.setMonth((n-1)*3,1),e.setHours(0,0,0,0),e}incompatibleTokens=[`Y`,`R`,`Q`,`M`,`L`,`w`,`I`,`d`,`D`,`i`,`e`,`c`,`t`,`T`]},Wt=class extends F{incompatibleTokens=[`Y`,`R`,`q`,`Q`,`L`,`w`,`I`,`D`,`i`,`e`,`c`,`t`,`T`];priority=110;parse(e,t,n){let r=e=>e-1;switch(t){case`M`:return R(z(I.month,e),r);case`MM`:return R(V(2,e),r);case`Mo`:return R(n.ordinalNumber(e,{unit:`month`}),r);case`MMM`:return n.month(e,{width:`abbreviated`,context:`formatting`})||n.month(e,{width:`narrow`,context:`formatting`});case`MMMMM`:return n.month(e,{width:`narrow`,context:`formatting`});default:return n.month(e,{width:`wide`,context:`formatting`})||n.month(e,{width:`abbreviated`,context:`formatting`})||n.month(e,{width:`narrow`,context:`formatting`})}}validate(e,t){return t>=0&&t<=11}set(e,t,n){return e.setMonth(n,1),e.setHours(0,0,0,0),e}},Gt=class extends F{priority=110;parse(e,t,n){let r=e=>e-1;switch(t){case`L`:return R(z(I.month,e),r);case`LL`:return R(V(2,e),r);case`Lo`:return R(n.ordinalNumber(e,{unit:`month`}),r);case`LLL`:return n.month(e,{width:`abbreviated`,context:`standalone`})||n.month(e,{width:`narrow`,context:`standalone`});case`LLLLL`:return n.month(e,{width:`narrow`,context:`standalone`});default:return n.month(e,{width:`wide`,context:`standalone`})||n.month(e,{width:`abbreviated`,context:`standalone`})||n.month(e,{width:`narrow`,context:`standalone`})}}validate(e,t){return t>=0&&t<=11}set(e,t,n){return e.setMonth(n,1),e.setHours(0,0,0,0),e}incompatibleTokens=[`Y`,`R`,`q`,`Q`,`M`,`w`,`I`,`D`,`i`,`e`,`c`,`t`,`T`]};function Kt(e,t,n){let r=E(e,n?.in),i=Xe(r,n)-t;return r.setDate(r.getDate()-i*7),E(r,n?.in)}var qt=class extends F{priority=100;parse(e,t,n){switch(t){case`w`:return z(I.week,e);case`wo`:return n.ordinalNumber(e,{unit:`week`});default:return V(t.length,e)}}validate(e,t){return t>=1&&t<=53}set(e,t,n,r){return k(Kt(e,n,r),r)}incompatibleTokens=[`y`,`R`,`u`,`q`,`Q`,`M`,`L`,`I`,`d`,`D`,`i`,`t`,`T`]};function Jt(e,t,n){let r=E(e,n?.in),i=qe(r,n)-t;return r.setDate(r.getDate()-i*7),r}var Yt=class extends F{priority=100;parse(e,t,n){switch(t){case`I`:return z(I.week,e);case`Io`:return n.ordinalNumber(e,{unit:`week`});default:return V(t.length,e)}}validate(e,t){return t>=1&&t<=53}set(e,t,n){return A(Jt(e,n))}incompatibleTokens=[`y`,`Y`,`u`,`q`,`Q`,`M`,`L`,`w`,`d`,`D`,`e`,`c`,`t`,`T`]},Xt=[31,28,31,30,31,30,31,31,30,31,30,31],Zt=[31,29,31,30,31,30,31,31,30,31,30,31],Qt=class extends F{priority=90;subPriority=1;parse(e,t,n){switch(t){case`d`:return z(I.date,e);case`do`:return n.ordinalNumber(e,{unit:`date`});default:return V(t.length,e)}}validate(e,t){let n=Lt(e.getFullYear()),r=e.getMonth();return n?t>=1&&t<=Zt[r]:t>=1&&t<=Xt[r]}set(e,t,n){return e.setDate(n),e.setHours(0,0,0,0),e}incompatibleTokens=[`Y`,`R`,`q`,`Q`,`w`,`I`,`D`,`i`,`e`,`c`,`t`,`T`]},$t=class extends F{priority=90;subpriority=1;parse(e,t,n){switch(t){case`D`:case`DD`:return z(I.dayOfYear,e);case`Do`:return n.ordinalNumber(e,{unit:`date`});default:return V(t.length,e)}}validate(e,t){return Lt(e.getFullYear())?t>=1&&t<=366:t>=1&&t<=365}set(e,t,n){return e.setMonth(0,n),e.setHours(0,0,0,0),e}incompatibleTokens=[`Y`,`R`,`q`,`Q`,`M`,`L`,`w`,`I`,`d`,`E`,`i`,`e`,`c`,`t`,`T`]};function en(e,t,n){let r=O(),i=n?.weekStartsOn??n?.locale?.options?.weekStartsOn??r.weekStartsOn??r.locale?.options?.weekStartsOn??0,a=E(e,n?.in),o=a.getDay(),s=(t%7+7)%7,c=7-i;return D(a,t<0||t>6?t-(o+c)%7:(s+c)%7-(o+c)%7,n)}var tn=class extends F{priority=90;parse(e,t,n){switch(t){case`E`:case`EE`:case`EEE`:return n.day(e,{width:`abbreviated`,context:`formatting`})||n.day(e,{width:`short`,context:`formatting`})||n.day(e,{width:`narrow`,context:`formatting`});case`EEEEE`:return n.day(e,{width:`narrow`,context:`formatting`});case`EEEEEE`:return n.day(e,{width:`short`,context:`formatting`})||n.day(e,{width:`narrow`,context:`formatting`});default:return n.day(e,{width:`wide`,context:`formatting`})||n.day(e,{width:`abbreviated`,context:`formatting`})||n.day(e,{width:`short`,context:`formatting`})||n.day(e,{width:`narrow`,context:`formatting`})}}validate(e,t){return t>=0&&t<=6}set(e,t,n,r){return e=en(e,n,r),e.setHours(0,0,0,0),e}incompatibleTokens=[`D`,`i`,`e`,`c`,`t`,`T`]},nn=class extends F{priority=90;parse(e,t,n,r){let i=e=>{let t=Math.floor((e-1)/7)*7;return(e+r.weekStartsOn+6)%7+t};switch(t){case`e`:case`ee`:return R(V(t.length,e),i);case`eo`:return R(n.ordinalNumber(e,{unit:`day`}),i);case`eee`:return n.day(e,{width:`abbreviated`,context:`formatting`})||n.day(e,{width:`short`,context:`formatting`})||n.day(e,{width:`narrow`,context:`formatting`});case`eeeee`:return n.day(e,{width:`narrow`,context:`formatting`});case`eeeeee`:return n.day(e,{width:`short`,context:`formatting`})||n.day(e,{width:`narrow`,context:`formatting`});default:return n.day(e,{width:`wide`,context:`formatting`})||n.day(e,{width:`abbreviated`,context:`formatting`})||n.day(e,{width:`short`,context:`formatting`})||n.day(e,{width:`narrow`,context:`formatting`})}}validate(e,t){return t>=0&&t<=6}set(e,t,n,r){return e=en(e,n,r),e.setHours(0,0,0,0),e}incompatibleTokens=[`y`,`R`,`u`,`q`,`Q`,`M`,`L`,`I`,`d`,`D`,`E`,`i`,`c`,`t`,`T`]},rn=class extends F{priority=90;parse(e,t,n,r){let i=e=>{let t=Math.floor((e-1)/7)*7;return(e+r.weekStartsOn+6)%7+t};switch(t){case`c`:case`cc`:return R(V(t.length,e),i);case`co`:return R(n.ordinalNumber(e,{unit:`day`}),i);case`ccc`:return n.day(e,{width:`abbreviated`,context:`standalone`})||n.day(e,{width:`short`,context:`standalone`})||n.day(e,{width:`narrow`,context:`standalone`});case`ccccc`:return n.day(e,{width:`narrow`,context:`standalone`});case`cccccc`:return n.day(e,{width:`short`,context:`standalone`})||n.day(e,{width:`narrow`,context:`standalone`});default:return n.day(e,{width:`wide`,context:`standalone`})||n.day(e,{width:`abbreviated`,context:`standalone`})||n.day(e,{width:`short`,context:`standalone`})||n.day(e,{width:`narrow`,context:`standalone`})}}validate(e,t){return t>=0&&t<=6}set(e,t,n,r){return e=en(e,n,r),e.setHours(0,0,0,0),e}incompatibleTokens=[`y`,`R`,`u`,`q`,`Q`,`M`,`L`,`I`,`d`,`D`,`E`,`i`,`e`,`t`,`T`]};function an(e,t,n){let r=E(e,n?.in);return D(r,t-xt(r,n),n)}var on=class extends F{priority=90;parse(e,t,n){let r=e=>e===0?7:e;switch(t){case`i`:case`ii`:return V(t.length,e);case`io`:return n.ordinalNumber(e,{unit:`day`});case`iii`:return R(n.day(e,{width:`abbreviated`,context:`formatting`})||n.day(e,{width:`short`,context:`formatting`})||n.day(e,{width:`narrow`,context:`formatting`}),r);case`iiiii`:return R(n.day(e,{width:`narrow`,context:`formatting`}),r);case`iiiiii`:return R(n.day(e,{width:`short`,context:`formatting`})||n.day(e,{width:`narrow`,context:`formatting`}),r);default:return R(n.day(e,{width:`wide`,context:`formatting`})||n.day(e,{width:`abbreviated`,context:`formatting`})||n.day(e,{width:`short`,context:`formatting`})||n.day(e,{width:`narrow`,context:`formatting`}),r)}}validate(e,t){return t>=1&&t<=7}set(e,t,n){return e=an(e,n),e.setHours(0,0,0,0),e}incompatibleTokens=[`y`,`Y`,`u`,`q`,`Q`,`M`,`L`,`w`,`d`,`D`,`E`,`e`,`c`,`t`,`T`]},sn=class extends F{priority=80;parse(e,t,n){switch(t){case`a`:case`aa`:case`aaa`:return n.dayPeriod(e,{width:`abbreviated`,context:`formatting`})||n.dayPeriod(e,{width:`narrow`,context:`formatting`});case`aaaaa`:return n.dayPeriod(e,{width:`narrow`,context:`formatting`});default:return n.dayPeriod(e,{width:`wide`,context:`formatting`})||n.dayPeriod(e,{width:`abbreviated`,context:`formatting`})||n.dayPeriod(e,{width:`narrow`,context:`formatting`})}}set(e,t,n){return e.setHours(Ft(n),0,0,0),e}incompatibleTokens=[`b`,`B`,`H`,`k`,`t`,`T`]},cn=class extends F{priority=80;parse(e,t,n){switch(t){case`b`:case`bb`:case`bbb`:return n.dayPeriod(e,{width:`abbreviated`,context:`formatting`})||n.dayPeriod(e,{width:`narrow`,context:`formatting`});case`bbbbb`:return n.dayPeriod(e,{width:`narrow`,context:`formatting`});default:return n.dayPeriod(e,{width:`wide`,context:`formatting`})||n.dayPeriod(e,{width:`abbreviated`,context:`formatting`})||n.dayPeriod(e,{width:`narrow`,context:`formatting`})}}set(e,t,n){return e.setHours(Ft(n),0,0,0),e}incompatibleTokens=[`a`,`B`,`H`,`k`,`t`,`T`]},ln=class extends F{priority=80;parse(e,t,n){switch(t){case`B`:case`BB`:case`BBB`:return n.dayPeriod(e,{width:`abbreviated`,context:`formatting`})||n.dayPeriod(e,{width:`narrow`,context:`formatting`});case`BBBBB`:return n.dayPeriod(e,{width:`narrow`,context:`formatting`});default:return n.dayPeriod(e,{width:`wide`,context:`formatting`})||n.dayPeriod(e,{width:`abbreviated`,context:`formatting`})||n.dayPeriod(e,{width:`narrow`,context:`formatting`})}}set(e,t,n){return e.setHours(Ft(n),0,0,0),e}incompatibleTokens=[`a`,`b`,`t`,`T`]},un=class extends F{priority=70;parse(e,t,n){switch(t){case`h`:return z(I.hour12h,e);case`ho`:return n.ordinalNumber(e,{unit:`hour`});default:return V(t.length,e)}}validate(e,t){return t>=1&&t<=12}set(e,t,n){let r=e.getHours()>=12;return r&&n<12?e.setHours(n+12,0,0,0):!r&&n===12?e.setHours(0,0,0,0):e.setHours(n,0,0,0),e}incompatibleTokens=[`H`,`K`,`k`,`t`,`T`]},dn=class extends F{priority=70;parse(e,t,n){switch(t){case`H`:return z(I.hour23h,e);case`Ho`:return n.ordinalNumber(e,{unit:`hour`});default:return V(t.length,e)}}validate(e,t){return t>=0&&t<=23}set(e,t,n){return e.setHours(n,0,0,0),e}incompatibleTokens=[`a`,`b`,`h`,`K`,`k`,`t`,`T`]},fn=class extends F{priority=70;parse(e,t,n){switch(t){case`K`:return z(I.hour11h,e);case`Ko`:return n.ordinalNumber(e,{unit:`hour`});default:return V(t.length,e)}}validate(e,t){return t>=0&&t<=11}set(e,t,n){return e.getHours()>=12&&n<12?e.setHours(n+12,0,0,0):e.setHours(n,0,0,0),e}incompatibleTokens=[`h`,`H`,`k`,`t`,`T`]},pn=class extends F{priority=70;parse(e,t,n){switch(t){case`k`:return z(I.hour24h,e);case`ko`:return n.ordinalNumber(e,{unit:`hour`});default:return V(t.length,e)}}validate(e,t){return t>=1&&t<=24}set(e,t,n){let r=n<=24?n%24:n;return e.setHours(r,0,0,0),e}incompatibleTokens=[`a`,`b`,`h`,`H`,`K`,`t`,`T`]},mn=class extends F{priority=60;parse(e,t,n){switch(t){case`m`:return z(I.minute,e);case`mo`:return n.ordinalNumber(e,{unit:`minute`});default:return V(t.length,e)}}validate(e,t){return t>=0&&t<=59}set(e,t,n){return e.setMinutes(n,0,0),e}incompatibleTokens=[`t`,`T`]},hn=class extends F{priority=50;parse(e,t,n){switch(t){case`s`:return z(I.second,e);case`so`:return n.ordinalNumber(e,{unit:`second`});default:return V(t.length,e)}}validate(e,t){return t>=0&&t<=59}set(e,t,n){return e.setSeconds(n,0),e}incompatibleTokens=[`t`,`T`]},gn=class extends F{priority=30;parse(e,t){return R(V(t.length,e),e=>Math.trunc(e*10**(-t.length+3)))}set(e,t,n){return e.setMilliseconds(n),e}incompatibleTokens=[`t`,`T`]},_n=class extends F{priority=10;parse(e,t){switch(t){case`X`:return B(L.basicOptionalMinutes,e);case`XX`:return B(L.basic,e);case`XXXX`:return B(L.basicOptionalSeconds,e);case`XXXXX`:return B(L.extendedOptionalSeconds,e);default:return B(L.extended,e)}}set(e,t,n){return t.timestampIsSet?e:T(e,e.getTime()-pe(e)-n)}incompatibleTokens=[`t`,`T`,`x`]},vn=class extends F{priority=10;parse(e,t){switch(t){case`x`:return B(L.basicOptionalMinutes,e);case`xx`:return B(L.basic,e);case`xxxx`:return B(L.basicOptionalSeconds,e);case`xxxxx`:return B(L.extendedOptionalSeconds,e);default:return B(L.extended,e)}}set(e,t,n){return t.timestampIsSet?e:T(e,e.getTime()-pe(e)-n)}incompatibleTokens=[`t`,`T`,`X`]},yn=class extends F{priority=40;parse(e){return Nt(e)}set(e,t,n){return[T(e,n*1e3),{timestampIsSet:!0}]}incompatibleTokens=`*`},bn=class extends F{priority=20;parse(e){return Nt(e)}set(e,t,n){return[T(e,n),{timestampIsSet:!0}]}incompatibleTokens=`*`},xn={G:new Mt,y:new Rt,Y:new zt,R:new Bt,u:new Vt,Q:new Ht,q:new Ut,M:new Wt,L:new Gt,w:new qt,I:new Yt,d:new Qt,D:new $t,E:new tn,e:new nn,c:new rn,i:new on,a:new sn,b:new cn,B:new ln,h:new un,H:new dn,K:new fn,k:new pn,m:new mn,s:new hn,S:new gn,X:new _n,x:new vn,t:new yn,T:new bn},Sn=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,Cn=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,wn=/^'([^]*?)'?$/,Tn=/''/g,En=/\S/,Dn=/[a-zA-Z]/;function On(e,t,n,r){let i=()=>T(r?.in||n,NaN),a=bt(),o=r?.locale??a.locale??Ge,s=r?.firstWeekContainsDate??r?.locale?.options?.firstWeekContainsDate??a.firstWeekContainsDate??a.locale?.options?.firstWeekContainsDate??1,c=r?.weekStartsOn??r?.locale?.options?.weekStartsOn??a.weekStartsOn??a.locale?.options?.weekStartsOn??0;if(!t)return e?i():E(n,r?.in);let l={firstWeekContainsDate:s,weekStartsOn:c,locale:o},u=[new jt(r?.in,n)],d=t.match(Cn).map(e=>{let t=e[0];if(t in it){let n=it[t];return n(e,o.formatLong)}return e}).join(``).match(Sn),f=[];for(let n of d){!r?.useAdditionalWeekYearTokens&&lt(n)&&ut(n,t,e),!r?.useAdditionalDayOfYearTokens&&ct(n)&&ut(n,t,e);let a=n[0],s=xn[a];if(s){let{incompatibleTokens:t}=s;if(Array.isArray(t)){let e=f.find(e=>t.includes(e.token)||e.token===a);if(e)throw RangeError(`The format string mustn't contain \`${e.fullToken}\` and \`${n}\` at the same time`)}else if(s.incompatibleTokens===`*`&&f.length>0)throw RangeError(`The format string mustn't contain \`${n}\` and any other token at the same time`);f.push({token:a,fullToken:n});let r=s.run(e,n,o.match,l);if(!r)return i();u.push(r.setter),e=r.rest}else{if(a.match(Dn))throw RangeError("Format string contains an unescaped latin alphabet character `"+a+"`");if(n===`''`?n=`'`:a===`'`&&(n=kn(n)),e.indexOf(n)===0)e=e.slice(n.length);else return i()}}if(e.length>0&&En.test(e))return i();let p=u.map(e=>e.priority).sort((e,t)=>t-e).filter((e,t,n)=>n.indexOf(e)===t).map(e=>u.filter(t=>t.priority===e).sort((e,t)=>t.subPriority-e.subPriority)).map(e=>e[0]),m=E(n,r?.in);if(isNaN(+m))return i();let h={};for(let e of p){if(!e.validate(m,l))return i();let t=e.set(m,h,l);Array.isArray(t)?(m=t[0],Object.assign(h,t[1])):m=t}return m}function kn(e){return e.match(wn)[1].replace(Tn,`'`)}function An(e,t,n){let[r,i]=j(n?.in,e,t);return r.getFullYear()===i.getFullYear()&&r.getMonth()===i.getMonth()}function jn(e,t,n){let[r,i]=j(n?.in,e,t);return r.getFullYear()===i.getFullYear()}function Mn(e,t){let n=()=>T(t?.in,NaN),r=t?.additionalDigits??2,i=Ln(e),a;if(i.date){let e=Rn(i.date,r);a=zn(e.restDateString,e.year)}if(!a||isNaN(+a))return n();let o=+a,s=0,c;if(i.time&&(s=Vn(i.time),isNaN(s)))return n();if(i.timezone){if(c=Un(i.timezone),isNaN(c))return n()}else{let e=new Date(o+s),n=E(0,t?.in);return n.setFullYear(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()),n.setHours(e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds()),n}return E(o+s+c,t?.in)}var Nn={dateTimeDelimiter:/[T ]/,timeZoneDelimiter:/[Z ]/i,timezone:/([Z+-].*)$/},Pn=/^-?(?:(\d{3})|(\d{2})(?:-?(\d{2}))?|W(\d{2})(?:-?(\d{1}))?|)$/,Fn=/^(\d{2}(?:[.,]\d*)?)(?::?(\d{2}(?:[.,]\d*)?))?(?::?(\d{2}(?:[.,]\d*)?))?$/,In=/^([+-])(\d{2})(?::?(\d{2}))?$/;function Ln(e){let t={},n=e.split(Nn.dateTimeDelimiter),r;if(n.length>2)return t;if(/:/.test(n[0])?r=n[0]:(t.date=n[0],r=n[1],Nn.timeZoneDelimiter.test(t.date)&&(t.date=e.split(Nn.timeZoneDelimiter)[0],r=e.substr(t.date.length,e.length))),r){let e=Nn.timezone.exec(r);e?(t.time=r.replace(e[1],``),t.timezone=e[1]):t.time=r}return t}function Rn(e,t){let n=RegExp(`^(?:(\\d{4}|[+-]\\d{`+(4+t)+`})|(\\d{2}|[+-]\\d{`+(2+t)+`})$)`),r=e.match(n);if(!r)return{year:NaN,restDateString:``};let i=r[1]?parseInt(r[1]):null,a=r[2]?parseInt(r[2]):null;return{year:a===null?i:a*100,restDateString:e.slice((r[1]||r[2]).length)}}function zn(e,t){if(t===null)return new Date(NaN);let n=e.match(Pn);if(!n)return new Date(NaN);let r=!!n[4],i=Bn(n[1]),a=Bn(n[2])-1,o=Bn(n[3]),s=Bn(n[4]),c=Bn(n[5])-1;if(r)return Yn(t,s,c)?Wn(t,s,c):new Date(NaN);{let e=new Date(0);return!qn(t,a,o)||!Jn(t,i)?new Date(NaN):(e.setUTCFullYear(t,a,Math.max(i,o)),e)}}function Bn(e){return e?parseInt(e):1}function Vn(e){let t=e.match(Fn);if(!t)return NaN;let n=Hn(t[1]),r=Hn(t[2]),i=Hn(t[3]);return Xn(n,r,i)?n*oe+r*ae+i*1e3:NaN}function Hn(e){return e&&parseFloat(e.replace(`,`,`.`))||0}function Un(e){if(e===`Z`)return 0;let t=e.match(In);if(!t)return 0;let n=t[1]===`+`?-1:1,r=parseInt(t[2]),i=t[3]&&parseInt(t[3])||0;return Zn(r,i)?n*(r*oe+i*ae):NaN}function Wn(e,t,n){let r=new Date(0);r.setUTCFullYear(e,0,4);let i=r.getUTCDay()||7,a=(t-1)*7+n+1-i;return r.setUTCDate(r.getUTCDate()+a),r}var Gn=[31,null,31,30,31,30,31,31,30,31,30,31];function Kn(e){return e%400==0||e%4==0&&e%100!=0}function qn(e,t,n){return t>=0&&t<=11&&n>=1&&n<=(Gn[t]||(Kn(e)?29:28))}function Jn(e,t){return t>=1&&t<=(Kn(e)?366:365)}function Yn(e,t,n){return t>=1&&t<=53&&n>=0&&n<=6}function Xn(e,t,n){return e===24?t===0&&n===0:n>=0&&n<60&&t>=0&&t<60&&e>=0&&e<25}function Zn(e,t){return t>=0&&t<=59}function Qn(e,t,n){let r=E(e,n?.in),i=r.getFullYear(),a=r.getDate(),o=T(n?.in||e,0);o.setFullYear(i,t,15),o.setHours(0,0,0,0);let s=yt(o);return r.setMonth(t,Math.min(a,s)),r}function $n(e,t,n){let r=E(e,n?.in);return isNaN(+r)?T(n?.in||e,NaN):(r.setFullYear(t),r)}var er=5,tr=4;function nr(e,t){let n=t.startOfMonth(e),r=n.getDay()>0?n.getDay():7,i=t.addDays(e,-r+1),a=t.addDays(i,er*7-1);return t.getMonth(e)===t.getMonth(a)?er:tr}function rr(e,t){let n=t.startOfMonth(e),r=n.getDay();return r===1?n:r===0?t.addDays(n,-6):t.addDays(n,-1*(r-1))}function ir(e,t){let n=rr(e,t),r=nr(e,t);return t.addDays(n,r*7-1)}var ar={...Ge,labels:{labelDayButton:(e,t,n,r)=>{let i;i=r&&typeof r.format==`function`?r.format.bind(r):(e,t)=>_t(e,t,{locale:Ge,...n});let a=i(e,`PPPP`);return t.today&&(a=`Today, ${a}`),t.selected&&(a=`${a}, selected`),a},labelMonthDropdown:`Choose the Month`,labelNext:`Go to the Next Month`,labelPrevious:`Go to the Previous Month`,labelWeekNumber:e=>`Week ${e}`,labelYearDropdown:`Choose the Year`,labelGrid:(e,t,n)=>{let r;return r=n&&typeof n.format==`function`?n.format.bind(n):(e,n)=>_t(e,n,{locale:Ge,...t}),r(e,`LLLL yyyy`)},labelGridcell:(e,t,n,r)=>{let i;i=r&&typeof r.format==`function`?r.format.bind(r):(e,t)=>_t(e,t,{locale:Ge,...n});let a=i(e,`PPPP`);return t?.today&&(a=`Today, ${a}`),a},labelNav:`Navigation bar`,labelWeekNumberHeader:`Week Number`,labelWeekday:(e,t,n)=>{let r;return r=n&&typeof n.format==`function`?n.format.bind(n):(e,n)=>_t(e,n,{locale:Ge,...t}),r(e,`cccc`)}}},H=class e{constructor(e,t){this.today=()=>this.overrides?.today?this.overrides.today():this.options.timeZone?w.tz(this.options.timeZone):new(this.options.Date??Date),this.newDate=(e,t,n)=>this.overrides?.newDate?this.overrides.newDate(e,t,n):this.options.timeZone?new w(e,t,n,this.options.timeZone):new Date(e,t,n),this.addDays=(e,t)=>this.overrides?.addDays?this.overrides.addDays(e,t):D(e,t),this.addMonths=(e,t)=>this.overrides?.addMonths?this.overrides.addMonths(e,t):ue(e,t),this.addWeeks=(e,t)=>this.overrides?.addWeeks?this.overrides.addWeeks(e,t):ge(e,t),this.addYears=(e,t)=>this.overrides?.addYears?this.overrides.addYears(e,t):_e(e,t),this.differenceInCalendarDays=(e,t)=>this.overrides?.differenceInCalendarDays?this.overrides.differenceInCalendarDays(e,t):me(e,t),this.differenceInCalendarMonths=(e,t)=>this.overrides?.differenceInCalendarMonths?this.overrides.differenceInCalendarMonths(e,t):Ce(e,t),this.eachMonthOfInterval=e=>this.overrides?.eachMonthOfInterval?this.overrides.eachMonthOfInterval(e):Ee(e),this.eachYearOfInterval=e=>{let t=this.overrides?.eachYearOfInterval?this.overrides.eachYearOfInterval(e):Ae(e),n=new Set(t.map(e=>this.getYear(e)));if(n.size===t.length)return t;let r=[];return n.forEach(e=>{r.push(new Date(e,0,1))}),r},this.endOfBroadcastWeek=e=>this.overrides?.endOfBroadcastWeek?this.overrides.endOfBroadcastWeek(e):ir(e,this),this.endOfISOWeek=e=>this.overrides?.endOfISOWeek?this.overrides.endOfISOWeek(e):Me(e),this.endOfMonth=e=>this.overrides?.endOfMonth?this.overrides.endOfMonth(e):we(e),this.endOfWeek=(e,t)=>this.overrides?.endOfWeek?this.overrides.endOfWeek(e,t):je(e,this.options),this.endOfYear=e=>this.overrides?.endOfYear?this.overrides.endOfYear(e):Oe(e),this.format=(e,t,n)=>{let r=this.overrides?.format?this.overrides.format(e,t,this.options):_t(e,t,this.options);return this.options.numerals&&this.options.numerals!==`latn`?this.replaceDigits(r):r},this.getISOWeek=e=>this.overrides?.getISOWeek?this.overrides.getISOWeek(e):qe(e),this.getMonth=(e,t)=>this.overrides?.getMonth?this.overrides.getMonth(e,this.options):St(e,this.options),this.getYear=(e,t)=>this.overrides?.getYear?this.overrides.getYear(e,this.options):Ct(e,this.options),this.getWeek=(e,t)=>this.overrides?.getWeek?this.overrides.getWeek(e,this.options):Xe(e,this.options),this.isAfter=(e,t)=>this.overrides?.isAfter?this.overrides.isAfter(e,t):wt(e,t),this.isBefore=(e,t)=>this.overrides?.isBefore?this.overrides.isBefore(e,t):Tt(e,t),this.isDate=e=>this.overrides?.isDate?this.overrides.isDate(e):xe(e),this.isSameDay=(e,t)=>this.overrides?.isSameDay?this.overrides.isSameDay(e,t):be(e,t),this.isSameMonth=(e,t)=>this.overrides?.isSameMonth?this.overrides.isSameMonth(e,t):An(e,t),this.isSameYear=(e,t)=>this.overrides?.isSameYear?this.overrides.isSameYear(e,t):jn(e,t),this.max=e=>this.overrides?.max?this.overrides.max(e):ve(e),this.min=e=>this.overrides?.min?this.overrides.min(e):ye(e),this.setMonth=(e,t)=>this.overrides?.setMonth?this.overrides.setMonth(e,t):Qn(e,t),this.setYear=(e,t)=>this.overrides?.setYear?this.overrides.setYear(e,t):$n(e,t),this.startOfBroadcastWeek=(e,t)=>this.overrides?.startOfBroadcastWeek?this.overrides.startOfBroadcastWeek(e,this):rr(e,this),this.startOfDay=e=>this.overrides?.startOfDay?this.overrides.startOfDay(e):M(e),this.startOfISOWeek=e=>this.overrides?.startOfISOWeek?this.overrides.startOfISOWeek(e):A(e),this.startOfMonth=e=>this.overrides?.startOfMonth?this.overrides.startOfMonth(e):De(e),this.startOfWeek=(e,t)=>this.overrides?.startOfWeek?this.overrides.startOfWeek(e,this.options):k(e,this.options),this.startOfYear=e=>this.overrides?.startOfYear?this.overrides.startOfYear(e):ke(e),this.options={locale:ar,...e},this.overrides=t}getDigitMap(){let{numerals:e=`latn`}=this.options,t=new Intl.NumberFormat(`en-US`,{numberingSystem:e}),n={};for(let e=0;e<10;e++)n[e.toString()]=t.format(e);return n}replaceDigits(e){let t=this.getDigitMap();return e.replace(/\d/g,e=>t[e]||e)}formatNumber(e){return this.replaceDigits(e.toString())}getMonthYearOrder(){let t=this.options.locale?.code;return t&&e.yearFirstLocales.has(t)?`year-first`:`month-first`}formatMonthYear(t){let{locale:n,timeZone:r,numerals:i}=this.options,a=n?.code;if(a&&e.yearFirstLocales.has(a))try{return new Intl.DateTimeFormat(a,{month:`long`,year:`numeric`,timeZone:r,numberingSystem:i}).format(t)}catch{}let o=this.getMonthYearOrder()===`year-first`?`y LLLL`:`LLLL y`;return this.format(t,o)}};H.yearFirstLocales=new Set([`eu`,`hu`,`ja`,`ja-Hira`,`ja-JP`,`ko`,`ko-KR`,`lt`,`lt-LT`,`lv`,`lv-LV`,`mn`,`mn-MN`,`zh`,`zh-CN`,`zh-HK`,`zh-TW`]);var U=new H,or=class{constructor(e,t,n=U){this.date=e,this.displayMonth=t,this.outside=!!(t&&!n.isSameMonth(e,t)),this.dateLib=n,this.isoDate=n.format(e,`yyyy-MM-dd`),this.displayMonthId=n.format(t,`yyyy-MM`),this.dateMonthId=n.format(e,`yyyy-MM`)}isEqualTo(e){return this.dateLib.isSameDay(e.date,this.date)&&this.dateLib.isSameMonth(e.displayMonth,this.displayMonth)}},sr=class{constructor(e,t){this.date=e,this.weeks=t}},cr=class{constructor(e,t){this.days=t,this.weekNumber=e}},W=e(n(),1);function lr(e){return W.createElement(`span`,{...e})}function ur(e){let{size:t=24,orientation:n=`left`,className:r,style:i}=e;return W.createElement(`svg`,{className:r,style:i,width:t,height:t,viewBox:`0 0 24 24`},n===`up`&&W.createElement(`polygon`,{points:`6.77 17 12.5 11.43 18.24 17 20 15.28 12.5 8 5 15.28`}),n===`down`&&W.createElement(`polygon`,{points:`6.77 8 12.5 13.57 18.24 8 20 9.72 12.5 17 5 9.72`}),n===`left`&&W.createElement(`polygon`,{points:`16 18.112 9.81111111 12 16 5.87733333 14.0888889 4 6 12 14.0888889 20`}),n===`right`&&W.createElement(`polygon`,{points:`8 18.112 14.18888889 12 8 5.87733333 9.91111111 4 18 12 9.91111111 20`}))}function dr(e){let{day:t,modifiers:n,...r}=e;return W.createElement(`td`,{...r})}function fr(e){let{day:t,modifiers:n,...r}=e,i=W.useRef(null);return W.useEffect(()=>{n.focused&&i.current?.focus()},[n.focused]),W.createElement(`button`,{ref:i,...r})}var G;(function(e){e.Root=`root`,e.Chevron=`chevron`,e.Day=`day`,e.DayButton=`day_button`,e.CaptionLabel=`caption_label`,e.Dropdowns=`dropdowns`,e.Dropdown=`dropdown`,e.DropdownRoot=`dropdown_root`,e.Footer=`footer`,e.MonthGrid=`month_grid`,e.MonthCaption=`month_caption`,e.MonthsDropdown=`months_dropdown`,e.Month=`month`,e.Months=`months`,e.Nav=`nav`,e.NextMonthButton=`button_next`,e.PreviousMonthButton=`button_previous`,e.Week=`week`,e.Weeks=`weeks`,e.Weekday=`weekday`,e.Weekdays=`weekdays`,e.WeekNumber=`week_number`,e.WeekNumberHeader=`week_number_header`,e.YearsDropdown=`years_dropdown`})(G||={});var K;(function(e){e.disabled=`disabled`,e.hidden=`hidden`,e.outside=`outside`,e.focused=`focused`,e.today=`today`})(K||={});var q;(function(e){e.range_end=`range_end`,e.range_middle=`range_middle`,e.range_start=`range_start`,e.selected=`selected`})(q||={});var J;(function(e){e.weeks_before_enter=`weeks_before_enter`,e.weeks_before_exit=`weeks_before_exit`,e.weeks_after_enter=`weeks_after_enter`,e.weeks_after_exit=`weeks_after_exit`,e.caption_after_enter=`caption_after_enter`,e.caption_after_exit=`caption_after_exit`,e.caption_before_enter=`caption_before_enter`,e.caption_before_exit=`caption_before_exit`})(J||={});var pr=(0,W.createContext)(void 0);function mr(){let e=(0,W.useContext)(pr);if(e===void 0)throw Error(`useDayPicker() must be used within a custom component.`);return e}function hr(e){let{options:t,className:n,...r}=e,{classNames:i,components:a,styles:o}=mr(),s=[i[G.Dropdown],n].join(` `),c=t?.find(({value:e})=>e===r.value);return W.createElement(`span`,{"data-disabled":r.disabled,className:i[G.DropdownRoot],style:o?.[G.DropdownRoot]},W.createElement(a.Select,{className:s,...r},t?.map(({value:e,label:t,disabled:n})=>W.createElement(a.Option,{key:e,value:e,disabled:n},t))),W.createElement(`span`,{className:i[G.CaptionLabel],style:o?.[G.CaptionLabel],"aria-hidden":!0},c?.label,W.createElement(a.Chevron,{orientation:`down`,size:18,className:i[G.Chevron],style:o?.[G.Chevron]})))}function gr(e){return W.createElement(`div`,{...e})}function _r(e){return W.createElement(`div`,{...e})}function vr(e){let{calendarMonth:t,displayIndex:n,...r}=e;return W.createElement(`div`,{...r},e.children)}function yr(e){let{calendarMonth:t,displayIndex:n,...r}=e;return W.createElement(`div`,{...r})}function br(e){return W.createElement(`table`,{...e})}function xr(e){return W.createElement(`div`,{...e})}function Sr(e){let{components:t}=mr();return W.createElement(t.Dropdown,{...e})}function Cr(e){let{onPreviousClick:t,onNextClick:n,previousMonth:r,nextMonth:i,...a}=e,{components:o,classNames:s,styles:c,labels:{labelPrevious:l,labelNext:u}}=mr(),d=(0,W.useCallback)(e=>{i&&n?.(e)},[i,n]),f=(0,W.useCallback)(e=>{r&&t?.(e)},[r,t]);return W.createElement(`nav`,{...a},W.createElement(o.PreviousMonthButton,{type:`button`,className:s[G.PreviousMonthButton],style:c?.[G.PreviousMonthButton],tabIndex:r?void 0:-1,"aria-disabled":!r||void 0,"aria-label":l(r),onClick:f},W.createElement(o.Chevron,{disabled:!r||void 0,className:s[G.Chevron],style:c?.[G.Chevron],orientation:`left`})),W.createElement(o.NextMonthButton,{type:`button`,className:s[G.NextMonthButton],style:c?.[G.NextMonthButton],tabIndex:i?void 0:-1,"aria-disabled":!i||void 0,"aria-label":u(i),onClick:d},W.createElement(o.Chevron,{disabled:!i||void 0,orientation:`right`,className:s[G.Chevron],style:c?.[G.Chevron]})))}function wr(e){return W.createElement(`button`,{...e})}function Tr(e){return W.createElement(`option`,{...e})}function Er(e){return W.createElement(`button`,{...e})}function Dr(e){let{rootRef:t,...n}=e;return W.createElement(`div`,{...n,ref:t})}function Or(e){return W.createElement(`select`,{...e})}function kr(e){let{week:t,...n}=e;return W.createElement(`tr`,{...n})}function Ar(e){return W.createElement(`th`,{...e})}function jr(e){return W.createElement(`thead`,{"aria-hidden":!0},W.createElement(`tr`,{...e}))}function Mr(e){let{week:t,...n}=e;return W.createElement(`th`,{...n})}function Nr(e){return W.createElement(`th`,{...e})}function Pr(e){return W.createElement(`tbody`,{...e})}function Fr(e){let{components:t}=mr();return W.createElement(t.Dropdown,{...e})}var Ir=t({CaptionLabel:()=>lr,Chevron:()=>ur,Day:()=>dr,DayButton:()=>fr,Dropdown:()=>hr,DropdownNav:()=>gr,Footer:()=>_r,Month:()=>vr,MonthCaption:()=>yr,MonthGrid:()=>br,Months:()=>xr,MonthsDropdown:()=>Sr,Nav:()=>Cr,NextMonthButton:()=>wr,Option:()=>Tr,PreviousMonthButton:()=>Er,Root:()=>Dr,Select:()=>Or,Week:()=>kr,WeekNumber:()=>Mr,WeekNumberHeader:()=>Nr,Weekday:()=>Ar,Weekdays:()=>jr,Weeks:()=>Pr,YearsDropdown:()=>Fr});function Y(e,t,n=!1,r=U){let{from:i,to:a}=e,{differenceInCalendarDays:o,isSameDay:s}=r;return i&&a?(o(a,i)<0&&([i,a]=[a,i]),o(t,i)>=+!!n&&o(a,t)>=+!!n):!n&&a?s(a,t):!n&&i?s(i,t):!1}function Lr(e){return!!(e&&typeof e==`object`&&`before`in e&&`after`in e)}function Rr(e){return!!(e&&typeof e==`object`&&`from`in e)}function zr(e){return!!(e&&typeof e==`object`&&`after`in e)}function Br(e){return!!(e&&typeof e==`object`&&`before`in e)}function Vr(e){return!!(e&&typeof e==`object`&&`dayOfWeek`in e)}function Hr(e,t){return Array.isArray(e)&&e.every(t.isDate)}function X(e,t,n=U){let r=Array.isArray(t)?t:[t],{isSameDay:i,differenceInCalendarDays:a,isAfter:o}=n;return r.some(t=>{if(typeof t==`boolean`)return t;if(n.isDate(t))return i(e,t);if(Hr(t,n))return t.some(t=>i(e,t));if(Rr(t))return Y(t,e,!1,n);if(Vr(t))return Array.isArray(t.dayOfWeek)?t.dayOfWeek.includes(e.getDay()):t.dayOfWeek===e.getDay();if(Lr(t)){let n=a(t.before,e),r=a(t.after,e),i=n>0,s=r<0;return o(t.before,t.after)?s&&i:i||s}return zr(t)?a(e,t.after)>0:Br(t)?a(t.before,e)>0:typeof t==`function`&&t(e)})}function Ur(e,t,n,r,i){let{disabled:a,hidden:o,modifiers:s,showOutsideDays:c,broadcastCalendar:l,today:u=i.today()}=t,{isSameDay:d,isSameMonth:f,startOfMonth:p,isBefore:m,endOfMonth:h,isAfter:g}=i,_=n&&p(n),v=r&&h(r),y={[K.focused]:[],[K.outside]:[],[K.disabled]:[],[K.hidden]:[],[K.today]:[]},b={};for(let t of e){let{date:e,displayMonth:n}=t,r=!!(n&&!f(e,n)),p=!!(_&&m(e,_)),h=!!(v&&g(e,v)),x=!!(a&&X(e,a,i)),S=!!(o&&X(e,o,i))||p||h||!l&&!c&&r||l&&c===!1&&r,ee=d(e,u);r&&y.outside.push(t),x&&y.disabled.push(t),S&&y.hidden.push(t),ee&&y.today.push(t),s&&Object.keys(s).forEach(n=>{let r=s?.[n];r&&X(e,r,i)&&(b[n]?b[n].push(t):b[n]=[t])})}return e=>{let t={[K.focused]:!1,[K.disabled]:!1,[K.hidden]:!1,[K.outside]:!1,[K.today]:!1},n={};for(let n in y)t[n]=y[n].some(t=>t===e);for(let t in b)n[t]=b[t].some(t=>t===e);return{...t,...n}}}function Wr(e,t,n={}){return Object.entries(e).filter(([,e])=>e===!0).reduce((e,[r])=>(n[r]?e.push(n[r]):t[K[r]]?e.push(t[K[r]]):t[q[r]]&&e.push(t[q[r]]),e),[t[G.Day]])}function Gr(e){return{...Ir,...e}}function Kr(e){let t={"data-mode":e.mode??void 0,"data-required":`required`in e?e.required:void 0,"data-multiple-months":e.numberOfMonths&&e.numberOfMonths>1||void 0,"data-week-numbers":e.showWeekNumber||void 0,"data-broadcast-calendar":e.broadcastCalendar||void 0,"data-nav-layout":e.navLayout||void 0};return Object.entries(e).forEach(([e,n])=>{e.startsWith(`data-`)&&(t[e]=n)}),t}function qr(){let e={};for(let t in G)e[G[t]]=`rdp-${G[t]}`;for(let t in K)e[K[t]]=`rdp-${K[t]}`;for(let t in q)e[q[t]]=`rdp-${q[t]}`;for(let t in J)e[J[t]]=`rdp-${J[t]}`;return e}function Jr(e,t,n){return(n??new H(t)).formatMonthYear(e)}function Yr(e,t,n){return(n??new H(t)).format(e,`d`)}function Xr(e,t=U){return t.format(e,`LLLL`)}function Zr(e,t,n){return(n??new H(t)).format(e,`cccccc`)}function Qr(e,t=U){return e<10?t.formatNumber(`0${e.toLocaleString()}`):t.formatNumber(`${e.toLocaleString()}`)}function $r(){return``}function ei(e,t=U){return t.format(e,`yyyy`)}var ti=t({formatCaption:()=>Jr,formatDay:()=>Yr,formatMonthDropdown:()=>Xr,formatWeekNumber:()=>Qr,formatWeekNumberHeader:()=>$r,formatWeekdayName:()=>Zr,formatYearDropdown:()=>ei});function ni(e){return{...ti,...e}}function ri(e,t,n,r){let i=(r??new H(n)).format(e,`PPPP`);return t.today&&(i=`Today, ${i}`),t.selected&&(i=`${i}, selected`),i}function ii(e,t,n){return(n??new H(t)).formatMonthYear(e)}function ai(e,t,n,r){let i=(r??new H(n)).format(e,`PPPP`);return t?.today&&(i=`Today, ${i}`),i}function oi(e){return`Choose the Month`}function si(){return``}var ci=`Go to the Next Month`;function li(e,t){return ci}function ui(e){return`Go to the Previous Month`}function di(e,t,n){return(n??new H(t)).format(e,`cccc`)}function fi(e,t){return`Week ${e}`}function pi(e){return`Week Number`}function mi(e){return`Choose the Year`}var hi=t({labelDayButton:()=>ri,labelGrid:()=>ii,labelGridcell:()=>ai,labelMonthDropdown:()=>oi,labelNav:()=>si,labelNext:()=>li,labelPrevious:()=>ui,labelWeekNumber:()=>fi,labelWeekNumberHeader:()=>pi,labelWeekday:()=>di,labelYearDropdown:()=>mi}),Z=(e,t,n)=>t||(n?typeof n==`function`?n:(...e)=>n:e);function gi(e,t){let n=t.locale?.labels??{};return{...hi,...e??{},labelDayButton:Z(ri,e?.labelDayButton,n.labelDayButton),labelMonthDropdown:Z(oi,e?.labelMonthDropdown,n.labelMonthDropdown),labelNext:Z(li,e?.labelNext,n.labelNext),labelPrevious:Z(ui,e?.labelPrevious,n.labelPrevious),labelWeekNumber:Z(fi,e?.labelWeekNumber,n.labelWeekNumber),labelYearDropdown:Z(mi,e?.labelYearDropdown,n.labelYearDropdown),labelGrid:Z(ii,e?.labelGrid,n.labelGrid),labelGridcell:Z(ai,e?.labelGridcell,n.labelGridcell),labelNav:Z(si,e?.labelNav,n.labelNav),labelWeekNumberHeader:Z(pi,e?.labelWeekNumberHeader,n.labelWeekNumberHeader),labelWeekday:Z(di,e?.labelWeekday,n.labelWeekday)}}function _i(e,t,n,r,i){let{startOfMonth:a,startOfYear:o,endOfYear:s,eachMonthOfInterval:c,getMonth:l}=i;return c({start:o(e),end:s(e)}).map(e=>{let o=r.formatMonthDropdown(e,i);return{value:l(e),label:o,disabled:t&&e<a(t)||n&&e>a(n)||!1}})}function vi(e,t={},n={}){let r={...t?.[G.Day]};return Object.entries(e).filter(([,e])=>e===!0).forEach(([e])=>{r={...r,...n?.[e]}}),r}function yi(e,t,n,r){let i=r??e.today(),a=n?e.startOfBroadcastWeek(i,e):t?e.startOfISOWeek(i):e.startOfWeek(i),o=[];for(let t=0;t<7;t++){let n=e.addDays(a,t);o.push(n)}return o}function bi(e,t,n,r,i=!1){if(!e||!t)return;let{startOfYear:a,endOfYear:o,eachYearOfInterval:s,getYear:c}=r,l=s({start:a(e),end:o(t)});return i&&l.reverse(),l.map(e=>{let t=n.formatYearDropdown(e,r);return{value:c(e),label:t,disabled:!1}})}function xi(e,t={}){let{weekStartsOn:n,locale:r}=t,i=n??r?.options?.weekStartsOn??0,a=t=>{let n=typeof t==`number`||typeof t==`string`?new Date(t):t;return new w(n.getFullYear(),n.getMonth(),n.getDate(),12,0,0,e)},o=e=>{let t=a(e);return new Date(t.getFullYear(),t.getMonth(),t.getDate(),0,0,0,0)};return{today:()=>a(w.tz(e)),newDate:(t,n,r)=>new w(t,n,r,12,0,0,e),startOfDay:e=>a(e),startOfWeek:(e,t)=>{let n=a(e),r=t?.weekStartsOn??i,o=(n.getDay()-r+7)%7;return n.setDate(n.getDate()-o),n},startOfISOWeek:e=>{let t=a(e),n=(t.getDay()-1+7)%7;return t.setDate(t.getDate()-n),t},startOfMonth:e=>{let t=a(e);return t.setDate(1),t},startOfYear:e=>{let t=a(e);return t.setMonth(0,1),t},endOfWeek:(e,t)=>{let n=a(e),r=(((t?.weekStartsOn??i)+6)%7-n.getDay()+7)%7;return n.setDate(n.getDate()+r),n},endOfISOWeek:e=>{let t=a(e),n=(7-t.getDay())%7;return t.setDate(t.getDate()+n),t},endOfMonth:e=>{let t=a(e);return t.setMonth(t.getMonth()+1,0),t},endOfYear:e=>{let t=a(e);return t.setMonth(11,31),t},eachMonthOfInterval:t=>{let n=a(t.start),r=a(t.end),i=[],o=new w(n.getFullYear(),n.getMonth(),1,12,0,0,e),s=r.getFullYear()*12+r.getMonth();for(;o.getFullYear()*12+o.getMonth()<=s;)i.push(new w(o,e)),o.setMonth(o.getMonth()+1,1);return i},addDays:(e,t)=>{let n=a(e);return n.setDate(n.getDate()+t),n},addWeeks:(e,t)=>{let n=a(e);return n.setDate(n.getDate()+t*7),n},addMonths:(e,t)=>{let n=a(e);return n.setMonth(n.getMonth()+t),n},addYears:(e,t)=>{let n=a(e);return n.setFullYear(n.getFullYear()+t),n},eachYearOfInterval:t=>{let n=a(t.start),r=a(t.end),i=[],o=new w(n.getFullYear(),0,1,12,0,0,e);for(;o.getFullYear()<=r.getFullYear();)i.push(new w(o,e)),o.setFullYear(o.getFullYear()+1,0,1);return i},getWeek:(e,t)=>Xe(o(e),{weekStartsOn:t?.weekStartsOn??i,firstWeekContainsDate:t?.firstWeekContainsDate??r?.options?.firstWeekContainsDate??1}),getISOWeek:e=>qe(o(e)),differenceInCalendarDays:(e,t)=>me(o(e),o(t)),differenceInCalendarMonths:(e,t)=>Ce(o(e),o(t))}}var Si=e=>e instanceof HTMLElement?e:null,Ci=e=>[...e.querySelectorAll(`[data-animated-month]`)??[]],wi=e=>Si(e.querySelector(`[data-animated-month]`)),Ti=e=>Si(e.querySelector(`[data-animated-caption]`)),Ei=e=>Si(e.querySelector(`[data-animated-weeks]`)),Di=e=>Si(e.querySelector(`[data-animated-nav]`)),Oi=e=>Si(e.querySelector(`[data-animated-weekdays]`));function ki(e,t,{classNames:n,months:r,focused:i,dateLib:a}){let o=(0,W.useRef)(null),s=(0,W.useRef)(r),c=(0,W.useRef)(!1);(0,W.useLayoutEffect)(()=>{let l=s.current;if(s.current=r,!t||!e.current||!(e.current instanceof HTMLElement)||r.length===0||l.length===0||r.length!==l.length)return;let u=a.isSameMonth(r[0].date,l[0].date),d=a.isAfter(r[0].date,l[0].date),f=d?n[J.caption_after_enter]:n[J.caption_before_enter],p=d?n[J.weeks_after_enter]:n[J.weeks_before_enter],m=o.current,h=e.current.cloneNode(!0);if(h instanceof HTMLElement?(Ci(h).forEach(e=>{if(!(e instanceof HTMLElement))return;let t=wi(e);t&&e.contains(t)&&e.removeChild(t);let n=Ti(e);n&&n.classList.remove(f);let r=Ei(e);r&&r.classList.remove(p)}),o.current=h):o.current=null,c.current||u||i)return;let g=m instanceof HTMLElement?Ci(m):[],_=Ci(e.current);if(_?.every(e=>e instanceof HTMLElement)&&g?.every(e=>e instanceof HTMLElement)){c.current=!0;let t=[];e.current.style.isolation=`isolate`;let r=Di(e.current);r&&(r.style.zIndex=`1`),_.forEach((i,a)=>{let o=g[a];if(!o)return;i.style.position=`relative`,i.style.overflow=`hidden`;let s=Ti(i);s&&s.classList.add(f);let l=Ei(i);l&&l.classList.add(p);let u=()=>{c.current=!1,e.current&&(e.current.style.isolation=``),r&&(r.style.zIndex=``),s&&s.classList.remove(f),l&&l.classList.remove(p),i.style.position=``,i.style.overflow=``,i.contains(o)&&i.removeChild(o)};t.push(u),o.style.pointerEvents=`none`,o.style.position=`absolute`,o.style.overflow=`hidden`,o.setAttribute(`aria-hidden`,`true`);let m=Oi(o);m&&(m.style.opacity=`0`);let h=Ti(o);h&&(h.classList.add(d?n[J.caption_before_exit]:n[J.caption_after_exit]),h.addEventListener(`animationend`,u));let _=Ei(o);_&&_.classList.add(d?n[J.weeks_before_exit]:n[J.weeks_after_exit]),i.insertBefore(o,i.firstChild)})}})}function Ai(e,t,n,r){let i=e[0],a=e[e.length-1],{ISOWeek:o,fixedWeeks:s,broadcastCalendar:c}=n??{},{addDays:l,differenceInCalendarDays:u,differenceInCalendarMonths:d,endOfBroadcastWeek:f,endOfISOWeek:p,endOfMonth:m,endOfWeek:h,isAfter:g,startOfBroadcastWeek:_,startOfISOWeek:v,startOfWeek:y}=r,b=c?_(i,r):o?v(i):y(i),x=c?f(a):o?p(m(a)):h(m(a)),S=t&&(c?f(t):o?p(t):h(t)),ee=u(S&&g(x,S)?S:x,b),te=d(a,i)+1,C=[];for(let e=0;e<=ee;e++){let t=l(b,e);C.push(t)}let w=(c?35:42)*te;if(s&&C.length<w){let e=w-C.length;for(let t=0;t<e;t++){let e=l(C[C.length-1],1);C.push(e)}}return C}function ji(e){let t=[];return e.reduce((e,n)=>{let r=n.weeks.reduce((e,t)=>e.concat(t.days.slice()),t.slice());return e.concat(r.slice())},t.slice())}function Mi(e,t,n,r){let{numberOfMonths:i=1}=n,a=[];for(let n=0;n<i;n++){let i=r.addMonths(e,n);if(t&&i>t)break;a.push(i)}return a}function Ni(e,t,n,r){let{month:i,defaultMonth:a,today:o=r.today(),numberOfMonths:s=1}=e,c=i||a||o,{differenceInCalendarMonths:l,addMonths:u,startOfMonth:d}=r;return n&&l(n,c)<s-1&&(c=u(n,-1*(s-1))),t&&l(c,t)<0&&(c=t),d(c)}function Pi(e,t,n,r){let{addDays:i,endOfBroadcastWeek:a,endOfISOWeek:o,endOfMonth:s,endOfWeek:c,getISOWeek:l,getWeek:u,startOfBroadcastWeek:d,startOfISOWeek:f,startOfWeek:p}=r,m=e.reduce((e,m)=>{let h=n.broadcastCalendar?d(m,r):n.ISOWeek?f(m):p(m),g=n.broadcastCalendar?a(m):n.ISOWeek?o(s(m)):c(s(m)),_=t.filter(e=>e>=h&&e<=g),v=n.broadcastCalendar?35:42;if(n.fixedWeeks&&_.length<v){let e=t.filter(e=>{let t=v-_.length;return e>g&&e<=i(g,t)});_.push(...e)}let y=new sr(m,_.reduce((e,t)=>{let i=n.ISOWeek?l(t):u(t),a=e.find(e=>e.weekNumber===i),o=new or(t,m,r);return a?a.days.push(o):e.push(new cr(i,[o])),e},[]));return e.push(y),e},[]);return n.reverseMonths?m.reverse():m}function Fi(e,t){let{startMonth:n,endMonth:r}=e,{startOfYear:i,startOfDay:a,startOfMonth:o,endOfMonth:s,addYears:c,endOfYear:l,today:u}=t,d=e.captionLayout===`dropdown`||e.captionLayout===`dropdown-years`;return n?n=o(n):!n&&d&&(n=i(c(e.today??u(),-100))),r?r=s(r):!r&&d&&(r=l(e.today??u())),[n&&a(n),r&&a(r)]}function Ii(e,t,n,r){if(n.disableNavigation)return;let{pagedNavigation:i,numberOfMonths:a=1}=n,{startOfMonth:o,addMonths:s,differenceInCalendarMonths:c}=r,l=i?a:1,u=o(e);if(!t||!(c(t,e)<a))return s(u,l)}function Li(e,t,n,r){if(n.disableNavigation)return;let{pagedNavigation:i,numberOfMonths:a}=n,{startOfMonth:o,addMonths:s,differenceInCalendarMonths:c}=r,l=i?a??1:1,u=o(e);if(!t||!(c(u,t)<=0))return s(u,-l)}function Ri(e){return e.reduce((e,t)=>e.concat(t.weeks.slice()),[].slice())}function zi(e,t){let[n,r]=(0,W.useState)(e);return[t===void 0?n:t,r]}function Bi(e,t){let[n,r]=Fi(e,t),{startOfMonth:i,endOfMonth:a}=t,o=Ni(e,n,r,t),[s,c]=zi(o,e.month?o:void 0);(0,W.useEffect)(()=>{let i=Ni(e,n,r,t);c(i)},[e.timeZone]);let{months:l,weeks:u,days:d,previousMonth:f,nextMonth:p}=(0,W.useMemo)(()=>{let i=Mi(s,r,{numberOfMonths:e.numberOfMonths},t),o=Pi(i,Ai(i,e.endMonth?a(e.endMonth):void 0,{ISOWeek:e.ISOWeek,fixedWeeks:e.fixedWeeks,broadcastCalendar:e.broadcastCalendar},t),{broadcastCalendar:e.broadcastCalendar,fixedWeeks:e.fixedWeeks,ISOWeek:e.ISOWeek,reverseMonths:e.reverseMonths},t);return{months:o,weeks:Ri(o),days:ji(o),previousMonth:Li(s,n,e,t),nextMonth:Ii(s,r,e,t)}},[t,s.getTime(),r?.getTime(),n?.getTime(),e.disableNavigation,e.broadcastCalendar,e.endMonth?.getTime(),e.fixedWeeks,e.ISOWeek,e.numberOfMonths,e.pagedNavigation,e.reverseMonths]),{disableNavigation:m,onMonthChange:h}=e,g=e=>u.some(t=>t.days.some(t=>t.isEqualTo(e))),_=e=>{if(m)return;let t=i(e);n&&t<i(n)&&(t=i(n)),r&&t>i(r)&&(t=i(r)),c(t),h?.(t)};return{months:l,weeks:u,days:d,navStart:n,navEnd:r,previousMonth:f,nextMonth:p,goToMonth:_,goToDay:e=>{g(e)||_(e.date)}}}var Q;(function(e){e[e.Today=0]=`Today`,e[e.Selected=1]=`Selected`,e[e.LastFocused=2]=`LastFocused`,e[e.FocusedModifier=3]=`FocusedModifier`})(Q||={});function Vi(e){return!e[K.disabled]&&!e[K.hidden]&&!e[K.outside]}function Hi(e,t,n,r){let i,a=-1;for(let o of e){let e=t(o);Vi(e)&&(e[K.focused]&&a<Q.FocusedModifier?(i=o,a=Q.FocusedModifier):r?.isEqualTo(o)&&a<Q.LastFocused?(i=o,a=Q.LastFocused):n(o.date)&&a<Q.Selected?(i=o,a=Q.Selected):e[K.today]&&a<Q.Today&&(i=o,a=Q.Today))}return i||=e.find(e=>Vi(t(e))),i}function Ui(e,t,n,r,i,a,o){let{ISOWeek:s,broadcastCalendar:c}=a,{addDays:l,addMonths:u,addWeeks:d,addYears:f,endOfBroadcastWeek:p,endOfISOWeek:m,endOfWeek:h,max:g,min:_,startOfBroadcastWeek:v,startOfISOWeek:y,startOfWeek:b}=o,x={day:l,week:d,month:u,year:f,startOfWeek:e=>c?v(e,o):s?y(e):b(e),endOfWeek:e=>c?p(e):s?m(e):h(e)}[e](n,t===`after`?1:-1);return t===`before`&&r?x=g([r,x]):t===`after`&&i&&(x=_([i,x])),x}function Wi(e,t,n,r,i,a,o,s=0){if(s>365)return;let c=Ui(e,t,n.date,r,i,a,o),l=!!(a.disabled&&X(c,a.disabled,o)),u=!!(a.hidden&&X(c,a.hidden,o)),d=new or(c,c,o);return!l&&!u?d:Wi(e,t,d,r,i,a,o,s+1)}function Gi(e,t,n,r,i){let{autoFocus:a}=e,[o,s]=(0,W.useState)(),c=Hi(t.days,n,r||(()=>!1),o),[l,u]=(0,W.useState)(a?c:void 0);return{isFocusTarget:e=>!!c?.isEqualTo(e),setFocused:u,focused:l,blur:()=>{s(l),u(void 0)},moveFocus:(n,r)=>{if(!l)return;let a=Wi(n,r,l,t.navStart,t.navEnd,e,i);a&&(e.disableNavigation&&!t.days.some(e=>e.isEqualTo(a))||(t.goToDay(a),u(a)))}}}function Ki(e,t){let{selected:n,required:r,onSelect:i}=e,[a,o]=zi(n,i?n:void 0),s=i?n:a,{isSameDay:c}=t,l=e=>s?.some(t=>c(t,e))??!1,{min:u,max:d}=e;return{selected:s,select:(e,t,n)=>{let a=[...s??[]];if(l(e)){if(s?.length===u||r&&s?.length===1)return;a=s?.filter(t=>!c(t,e))}else a=s?.length===d?[e]:[...a,e];return i||o(a),i?.(a,e,t,n),a},isSelected:l}}function qi(e,t,n=0,r=0,i=!1,a=U){let{from:o,to:s}=t||{},{isSameDay:c,isAfter:l,isBefore:u}=a,d;if(!o&&!s)d={from:e,to:n>0?void 0:e};else if(o&&!s)d=c(o,e)?n===0?{from:o,to:e}:i?{from:o,to:void 0}:void 0:u(e,o)?{from:e,to:o}:{from:o,to:e};else if(o&&s)if(c(o,e)&&c(s,e))d=i?{from:o,to:s}:void 0;else if(c(o,e))d={from:o,to:n>0?void 0:e};else if(c(s,e))d={from:e,to:n>0?void 0:e};else if(u(e,o))d={from:e,to:s};else if(l(e,o))d={from:o,to:e};else if(l(e,s))d={from:o,to:e};else throw Error(`Invalid range`);if(d?.from&&d?.to){let t=a.differenceInCalendarDays(d.to,d.from);(r>0&&t>r||n>1&&t<n)&&(d={from:e,to:void 0})}return d}function Ji(e,t,n=U){let r=Array.isArray(t)?t:[t],i=e.from,a=n.differenceInCalendarDays(e.to,e.from),o=Math.min(a,6);for(let e=0;e<=o;e++){if(r.includes(i.getDay()))return!0;i=n.addDays(i,1)}return!1}function Yi(e,t,n=U){return Y(e,t.from,!1,n)||Y(e,t.to,!1,n)||Y(t,e.from,!1,n)||Y(t,e.to,!1,n)}function Xi(e,t,n=U){let r=Array.isArray(t)?t:[t];if(r.filter(e=>typeof e!=`function`).some(t=>typeof t==`boolean`?t:n.isDate(t)?Y(e,t,!1,n):Hr(t,n)?t.some(t=>Y(e,t,!1,n)):Rr(t)?t.from&&t.to?Yi(e,{from:t.from,to:t.to},n):!1:Vr(t)?Ji(e,t.dayOfWeek,n):Lr(t)?n.isAfter(t.before,t.after)?Yi(e,{from:n.addDays(t.after,1),to:n.addDays(t.before,-1)},n):X(e.from,t,n)||X(e.to,t,n):zr(t)||Br(t)?X(e.from,t,n)||X(e.to,t,n):!1))return!0;let i=r.filter(e=>typeof e==`function`);if(i.length){let t=e.from,r=n.differenceInCalendarDays(e.to,e.from);for(let e=0;e<=r;e++){if(i.some(e=>e(t)))return!0;t=n.addDays(t,1)}}return!1}function Zi(e,t){let{disabled:n,excludeDisabled:r,resetOnSelect:i,selected:a,required:o,onSelect:s}=e,[c,l]=zi(a,s?a:void 0),u=s?a:c;return{selected:u,select:(a,c,d)=>{let{min:f,max:p}=e,m;if(a){let e=u?.from,n=u?.to,r=!!e&&!!n,s=!!e&&!!n&&t.isSameDay(e,n)&&t.isSameDay(a,e);m=i&&(r||!u?.from)?!o&&s?void 0:{from:a,to:void 0}:qi(a,u,f,p,o,t)}return r&&n&&m?.from&&m.to&&Xi({from:m.from,to:m.to},n,t)&&(m.from=a,m.to=void 0),s||l(m),s?.(m,a,c,d),m},isSelected:e=>u&&Y(u,e,!1,t)}}function Qi(e,t){let{selected:n,required:r,onSelect:i}=e,[a,o]=zi(n,i?n:void 0),s=i?n:a,{isSameDay:c}=t;return{selected:s,select:(e,t,n)=>{let a=e;return!r&&s&&s&&c(e,s)&&(a=void 0),i||o(a),i?.(a,e,t,n),a},isSelected:e=>s?c(s,e):!1}}function $i(e,t){let n=Qi(e,t),r=Ki(e,t),i=Zi(e,t);switch(e.mode){case`single`:return n;case`multiple`:return r;case`range`:return i;default:return}}function $(e,t){return e instanceof w&&e.timeZone===t?e:new w(e,t)}function ea(e,t,n){if(!n)return $(e,t);let r=$(e,t),i=new w(r.getFullYear(),r.getMonth(),r.getDate(),12,0,0,t);return new Date(i.getTime())}function ta(e,t,n){return typeof e==`boolean`||typeof e==`function`?e:e instanceof Date?ea(e,t,n):Array.isArray(e)?e.map(e=>e instanceof Date?ea(e,t,n):e):Rr(e)?{...e,from:e.from?$(e.from,t):e.from,to:e.to?$(e.to,t):e.to}:Lr(e)?{before:ea(e.before,t,n),after:ea(e.after,t,n)}:zr(e)?{after:ea(e.after,t,n)}:Br(e)?{before:ea(e.before,t,n)}:e}function na(e,t,n){return e&&(Array.isArray(e)?e.map(e=>ta(e,t,n)):ta(e,t,n))}function ra(e){let t=e,n=t.timeZone;if(n&&(t={...e,timeZone:n},t.today&&=$(t.today,n),t.month&&=$(t.month,n),t.defaultMonth&&=$(t.defaultMonth,n),t.startMonth&&=$(t.startMonth,n),t.endMonth&&=$(t.endMonth,n),t.mode===`single`&&t.selected?t.selected=$(t.selected,n):t.mode===`multiple`&&t.selected?t.selected=t.selected?.map(e=>$(e,n)):t.mode===`range`&&t.selected&&(t.selected={from:t.selected.from?$(t.selected.from,n):t.selected.from,to:t.selected.to?$(t.selected.to,n):t.selected.to}),t.disabled!==void 0&&(t.disabled=na(t.disabled,n)),t.hidden!==void 0&&(t.hidden=na(t.hidden,n)),t.modifiers)){let e={};Object.keys(t.modifiers).forEach(r=>{e[r]=na(t.modifiers?.[r],n)}),t.modifiers=e}let{components:r,formatters:i,labels:a,dateLib:o,locale:s,classNames:c}=(0,W.useMemo)(()=>{let e={...ar,...t.locale},n=t.broadcastCalendar?1:t.weekStartsOn,r=t.noonSafe&&t.timeZone?xi(t.timeZone,{weekStartsOn:n,locale:e}):void 0,i=t.dateLib&&r?{...r,...t.dateLib}:t.dateLib??r,a=new H({locale:e,weekStartsOn:n,firstWeekContainsDate:t.firstWeekContainsDate,useAdditionalWeekYearTokens:t.useAdditionalWeekYearTokens,useAdditionalDayOfYearTokens:t.useAdditionalDayOfYearTokens,timeZone:t.timeZone,numerals:t.numerals},i);return{dateLib:a,components:Gr(t.components),formatters:ni(t.formatters),labels:gi(t.labels,a.options),locale:e,classNames:{...qr(),...t.classNames}}},[t.locale,t.broadcastCalendar,t.weekStartsOn,t.firstWeekContainsDate,t.useAdditionalWeekYearTokens,t.useAdditionalDayOfYearTokens,t.timeZone,t.numerals,t.dateLib,t.noonSafe,t.components,t.formatters,t.labels,t.classNames]);t.today||(t={...t,today:o.today()});let{captionLayout:l,mode:u,navLayout:d,numberOfMonths:f=1,onDayBlur:p,onDayClick:m,onDayFocus:h,onDayKeyDown:g,onDayMouseEnter:_,onDayMouseLeave:v,onNextClick:y,onPrevClick:b,showWeekNumber:x,styles:S}=t,{formatCaption:ee,formatDay:te,formatMonthDropdown:C,formatWeekNumber:w,formatWeekNumberHeader:ne,formatWeekdayName:re,formatYearDropdown:ie}=i,ae=Bi(t,o),{days:oe,months:se,navStart:ce,navEnd:le,previousMonth:T,nextMonth:E,goToMonth:D}=ae,ue=Ur(oe,t,ce,le,o),{isSelected:de,select:O,selected:k}=$i(t,o)??{},{blur:A,focused:fe,isFocusTarget:pe,moveFocus:j,setFocused:M}=Gi(t,ae,ue,de??(()=>!1),o),{labelDayButton:me,labelGridcell:he,labelGrid:ge,labelMonthDropdown:_e,labelNav:ve,labelPrevious:ye,labelNext:be,labelWeekday:xe,labelWeekNumber:Se,labelWeekNumberHeader:Ce,labelYearDropdown:we}=a,Te=(0,W.useMemo)(()=>yi(o,t.ISOWeek,t.broadcastCalendar,t.today),[o,t.ISOWeek,t.broadcastCalendar,t.today]),Ee=u!==void 0||m!==void 0,De=(0,W.useCallback)(()=>{T&&(D(T),b?.(T))},[T,D,b]),Oe=(0,W.useCallback)(()=>{E&&(D(E),y?.(E))},[D,E,y]),ke=(0,W.useCallback)((e,t)=>n=>{n.preventDefault(),n.stopPropagation(),M(e),!t.disabled&&(O?.(e.date,t,n),m?.(e.date,t,n))},[O,m,M]),Ae=(0,W.useCallback)((e,t)=>n=>{M(e),h?.(e.date,t,n)},[h,M]),je=(0,W.useCallback)((e,t)=>n=>{A(),p?.(e.date,t,n)},[A,p]),Me=(0,W.useCallback)((e,n)=>r=>{let i={ArrowLeft:[r.shiftKey?`month`:`day`,t.dir===`rtl`?`after`:`before`],ArrowRight:[r.shiftKey?`month`:`day`,t.dir===`rtl`?`before`:`after`],ArrowDown:[r.shiftKey?`year`:`week`,`after`],ArrowUp:[r.shiftKey?`year`:`week`,`before`],PageUp:[r.shiftKey?`year`:`month`,`before`],PageDown:[r.shiftKey?`year`:`month`,`after`],Home:[`startOfWeek`,`before`],End:[`endOfWeek`,`after`]};if(i[r.key]){r.preventDefault(),r.stopPropagation();let[e,t]=i[r.key];j(e,t)}g?.(e.date,n,r)},[j,g,t.dir]),Ne=(0,W.useCallback)((e,t)=>n=>{_?.(e.date,t,n)},[_]),Pe=(0,W.useCallback)((e,t)=>n=>{v?.(e.date,t,n)},[v]),Fe=(0,W.useCallback)((e,t)=>n=>{let r=Number(n.target.value),i=o.setMonth(o.startOfMonth(e),r);D(o.addMonths(i,-t))},[o,D]),Ie=(0,W.useCallback)((e,t)=>n=>{let r=Number(n.target.value),i=o.setYear(o.startOfMonth(e),r);D(o.addMonths(i,-t))},[o,D]),{className:Le,style:Re}=(0,W.useMemo)(()=>({className:[c[G.Root],t.className].filter(Boolean).join(` `),style:{...S?.[G.Root],...t.style}}),[c,t.className,t.style,S]),ze=Kr(t),Be=e=>{let t=S?.[G.Dropdown],n=S?.[e];if(!(!t&&!n))return{...t,...n}},Ve=(0,W.useRef)(null);ki(Ve,!!t.animate,{classNames:c,months:se,focused:fe,dateLib:o});let He={dayPickerProps:t,selected:k,select:O,isSelected:de,months:se,nextMonth:E,previousMonth:T,goToMonth:D,getModifiers:ue,components:r,classNames:c,styles:S,labels:a,formatters:i};return W.createElement(pr.Provider,{value:He},W.createElement(r.Root,{rootRef:t.animate?Ve:void 0,className:Le,style:Re,dir:t.dir,id:t.id,lang:t.lang??s.code,nonce:t.nonce,title:t.title,role:t.role,"aria-label":t[`aria-label`],"aria-labelledby":t[`aria-labelledby`],...ze},W.createElement(r.Months,{className:c[G.Months],style:S?.[G.Months]},!t.hideNavigation&&!d&&W.createElement(r.Nav,{"data-animated-nav":t.animate?`true`:void 0,className:c[G.Nav],style:S?.[G.Nav],"aria-label":ve(),onPreviousClick:De,onNextClick:Oe,previousMonth:T,nextMonth:E}),se.map((e,n)=>{let a=t.reverseMonths?se.length-1-n:n;return W.createElement(r.Month,{"data-animated-month":t.animate?`true`:void 0,className:c[G.Month],style:S?.[G.Month],key:n,displayIndex:n,calendarMonth:e},d===`around`&&!t.hideNavigation&&n===0&&W.createElement(r.PreviousMonthButton,{type:`button`,className:c[G.PreviousMonthButton],style:S?.[G.PreviousMonthButton],tabIndex:T?void 0:-1,"aria-disabled":!T||void 0,"aria-label":ye(T),onClick:De,"data-animated-button":t.animate?`true`:void 0},W.createElement(r.Chevron,{disabled:!T||void 0,className:c[G.Chevron],style:S?.[G.Chevron],orientation:t.dir===`rtl`?`right`:`left`})),W.createElement(r.MonthCaption,{"data-animated-caption":t.animate?`true`:void 0,className:c[G.MonthCaption],style:S?.[G.MonthCaption],calendarMonth:e,displayIndex:n},l?.startsWith(`dropdown`)?W.createElement(r.DropdownNav,{className:c[G.Dropdowns],style:S?.[G.Dropdowns]},(()=>{let n=l===`dropdown`||l===`dropdown-months`?W.createElement(r.MonthsDropdown,{key:`month`,className:c[G.MonthsDropdown],"aria-label":_e(),disabled:!!t.disableNavigation,onChange:Fe(e.date,a),options:_i(e.date,ce,le,i,o),style:Be(G.MonthsDropdown),value:o.getMonth(e.date)}):W.createElement(`span`,{key:`month`},C(e.date,o)),s=l===`dropdown`||l===`dropdown-years`?W.createElement(r.YearsDropdown,{key:`year`,className:c[G.YearsDropdown],"aria-label":we(o.options),disabled:!!t.disableNavigation,onChange:Ie(e.date,a),options:bi(ce,le,i,o,!!t.reverseYears),style:Be(G.YearsDropdown),value:o.getYear(e.date)}):W.createElement(`span`,{key:`year`},ie(e.date,o));return o.getMonthYearOrder()===`year-first`?[s,n]:[n,s]})(),W.createElement(`span`,{role:`status`,"aria-live":`polite`,style:{border:0,clip:`rect(0 0 0 0)`,height:`1px`,margin:`-1px`,overflow:`hidden`,padding:0,position:`absolute`,width:`1px`,whiteSpace:`nowrap`,wordWrap:`normal`}},ee(e.date,o.options,o))):W.createElement(r.CaptionLabel,{className:c[G.CaptionLabel],style:S?.[G.CaptionLabel],role:`status`,"aria-live":`polite`},ee(e.date,o.options,o))),d===`around`&&!t.hideNavigation&&n===f-1&&W.createElement(r.NextMonthButton,{type:`button`,className:c[G.NextMonthButton],style:S?.[G.NextMonthButton],tabIndex:E?void 0:-1,"aria-disabled":!E||void 0,"aria-label":be(E),onClick:Oe,"data-animated-button":t.animate?`true`:void 0},W.createElement(r.Chevron,{disabled:!E||void 0,className:c[G.Chevron],style:S?.[G.Chevron],orientation:t.dir===`rtl`?`left`:`right`})),n===f-1&&d===`after`&&!t.hideNavigation&&W.createElement(r.Nav,{"data-animated-nav":t.animate?`true`:void 0,className:c[G.Nav],style:S?.[G.Nav],"aria-label":ve(),onPreviousClick:De,onNextClick:Oe,previousMonth:T,nextMonth:E}),W.createElement(r.MonthGrid,{role:`grid`,"aria-multiselectable":u===`multiple`||u===`range`,"aria-label":ge(e.date,o.options,o)||void 0,className:c[G.MonthGrid],style:S?.[G.MonthGrid]},!t.hideWeekdays&&W.createElement(r.Weekdays,{"data-animated-weekdays":t.animate?`true`:void 0,className:c[G.Weekdays],style:S?.[G.Weekdays]},x&&W.createElement(r.WeekNumberHeader,{"aria-label":Ce(o.options),className:c[G.WeekNumberHeader],style:S?.[G.WeekNumberHeader],scope:`col`},ne()),Te.map(e=>W.createElement(r.Weekday,{"aria-label":xe(e,o.options,o),className:c[G.Weekday],key:String(e),style:S?.[G.Weekday],scope:`col`},re(e,o.options,o)))),W.createElement(r.Weeks,{"data-animated-weeks":t.animate?`true`:void 0,className:c[G.Weeks],style:S?.[G.Weeks]},e.weeks.map(e=>W.createElement(r.Week,{className:c[G.Week],key:e.weekNumber,style:S?.[G.Week],week:e},x&&W.createElement(r.WeekNumber,{week:e,style:S?.[G.WeekNumber],"aria-label":Se(e.weekNumber,{locale:s}),className:c[G.WeekNumber],scope:`row`,role:`rowheader`},w(e.weekNumber,o)),e.days.map(e=>{let{date:n}=e,i=ue(e);if(i[K.focused]=!i.hidden&&!!fe?.isEqualTo(e),i[q.selected]=de?.(n)||i.selected,Rr(k)){let{from:e,to:t}=k;i[q.range_start]=!!(e&&t&&o.isSameDay(n,e)),i[q.range_end]=!!(e&&t&&o.isSameDay(n,t)),i[q.range_middle]=Y(k,n,!0,o)}let a=vi(i,S,t.modifiersStyles),s=Wr(i,c,t.modifiersClassNames),l=!Ee&&!i.hidden?he(n,i,o.options,o):void 0;return W.createElement(r.Day,{key:`${e.isoDate}_${e.displayMonthId}`,day:e,modifiers:i,className:s.join(` `),style:a,role:`gridcell`,"aria-selected":i.selected||void 0,"aria-label":l,"data-day":e.isoDate,"data-month":e.outside?e.dateMonthId:void 0,"data-selected":i.selected||void 0,"data-disabled":i.disabled||void 0,"data-hidden":i.hidden||void 0,"data-outside":e.outside||void 0,"data-focused":i.focused||void 0,"data-today":i.today||void 0},!i.hidden&&Ee?W.createElement(r.DayButton,{className:c[G.DayButton],style:S?.[G.DayButton],type:`button`,day:e,modifiers:i,disabled:!i.focused&&i.disabled||void 0,"aria-disabled":i.focused&&i.disabled||void 0,tabIndex:pe(e)?0:-1,"aria-label":me(n,i,o.options,o),onClick:ke(e,i),onBlur:je(e,i),onFocus:Ae(e,i),onKeyDown:Me(e,i),onMouseEnter:Ne(e,i),onMouseLeave:Pe(e,i)},te(n,o.options,o)):!i.hidden&&te(e.date,o.options,o))}))))))})),t.footer&&W.createElement(r.Footer,{className:c[G.Footer],style:S?.[G.Footer],role:`status`,"aria-live":`polite`},t.footer)))}var ia=i();function aa(e){let{options:t=[],value:n,onChange:i,disabled:a,className:d}=e,f=e[`aria-label`];return(0,ia.jsxs)(u,{value:n==null?void 0:String(n),onValueChange:e=>{i?.({target:{value:e}})},disabled:a,children:[(0,ia.jsx)(o,{"aria-label":f,className:r(`h-7 w-auto gap-1 rounded-md border-transparent bg-transparent px-2 text-sm font-medium shadow-none hover:bg-accent hover:text-accent-foreground focus:ring-1 [&>svg]:size-3.5 [&>svg]:opacity-60`,d),children:(0,ia.jsx)(l,{})}),(0,ia.jsx)(c,{className:`max-h-[var(--radix-select-content-available-height)]`,children:t.map(e=>(0,ia.jsx)(s,{value:String(e.value),disabled:e.disabled,children:e.label},e.value))})]})}var oa=new Date().getFullYear(),sa=new Date(oa-100,0,1),ca=new Date(oa+10,11,31);function la({className:e,classNames:t,showOutsideDays:n=!0,captionLayout:i=`dropdown`,startMonth:o=sa,endMonth:s=ca,...c}){return(0,ia.jsx)(ra,{showOutsideDays:n,fixedWeeks:!0,captionLayout:i,startMonth:o,endMonth:s,className:r(`p-3`,e),classNames:{months:`flex flex-col gap-4 sm:flex-row sm:gap-6`,month:`flex flex-col gap-3`,month_caption:`flex justify-center pt-1 relative items-center h-9 px-9`,caption_label:`inline-flex items-center gap-1 text-sm font-medium [&>svg]:size-3.5 [&>svg]:opacity-60`,dropdowns:`flex items-center gap-1`,dropdown_root:`relative inline-flex`,dropdown:``,months_dropdown:``,years_dropdown:``,nav:`absolute inset-x-1 top-1 flex items-center justify-between pointer-events-none z-10`,button_previous:r(a({variant:`ghost`,size:`icon`}),`pointer-events-auto size-7 p-0 opacity-70 hover:opacity-100`),button_next:r(a({variant:`ghost`,size:`icon`}),`pointer-events-auto size-7 p-0 opacity-70 hover:opacity-100`),month_grid:`w-full border-collapse space-y-1`,weekdays:`flex`,weekday:`text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]`,week:`flex w-full mt-2`,day:`relative p-0 text-center text-sm focus-within:relative focus-within:z-20`,day_button:r(a({variant:`ghost`}),`size-9 rounded-md p-0 font-normal aria-selected:opacity-100`),range_start:`day-range-start`,range_end:`day-range-end`,selected:`[&>button]:bg-primary [&>button]:text-primary-foreground [&>button]:hover:bg-primary [&>button]:hover:text-primary-foreground [&>button]:focus:bg-primary [&>button]:focus:text-primary-foreground`,today:`[&>button]:bg-accent [&>button]:text-accent-foreground`,outside:`day-outside text-muted-foreground aria-selected:text-muted-foreground`,disabled:`text-muted-foreground opacity-50`,range_middle:`[&>button]:bg-accent [&>button]:text-accent-foreground`,hidden:`invisible`,...t},components:{Chevron:({orientation:e,className:t})=>(0,ia.jsx)(e===`left`?d:f,{className:r(`size-4 pointer-events-none`,t)}),Dropdown:aa},...c})}la.displayName=`Calendar`;export{_t as a,ue as c,On as i,Mn as n,De as o,An as r,Se as s,la as t};
2
+ //# sourceMappingURL=calendar-DDv0Qalf.js.map