@modern-admin/web 0.4.1 → 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 (285) 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-BrEZDHZt.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-Bx7kzeK7.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-BbIXVrSu.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-BoZh23oQ.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-6nyM5Jft.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-DDv0Qalf.js.gz +0 -0
  26. package/dist/standalone/assets/{calendar-nvD_z7KQ.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-4cS4uWCP.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-R2NG5T1y.js.map +1 -0
  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-Cw-hTtpk.js.map +1 -0
  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-C4HcgidQ.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-Dpg8xy_r.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-BSbFjTlr.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-BcL2U6dT.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-CW7-FAPC.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-Cposcczv.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-DLv_nIvM.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-BiCEgD2L.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-BDP1QYCg.js.map +1 -0
  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-0WtL6bsZ.js.map → revisions-button-CI74_D14.js.map} +1 -1
  110. package/dist/standalone/assets/{richtext-render-DnVcQ34I.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-DnVcQ34I.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-DtguXLAP.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-Dnox2NwO.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-DUS8e6dR.js.map → tabs-Dr7UA219.js.map} +1 -1
  134. package/dist/standalone/assets/textarea-T25SXcrC.js +2 -0
  135. package/dist/standalone/assets/{textarea-CX_0QVSz.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-Dch5Ggjr.js.map +1 -0
  144. package/dist/standalone/assets/{user-directory-9COoW6AO.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-9COoW6AO.js.map → user-directory-C33bGZdb.js.map} +1 -1
  148. package/dist/standalone/assets/{value-format-Cgau0meh.js → value-format-CLzWct9Y.js} +3 -3
  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-Cgau0meh.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-v2-Aw8Oj.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-BrelKLfy.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-BrEZDHZt.js +0 -2
  165. package/dist/standalone/assets/action-component-host-BrEZDHZt.js.br +0 -0
  166. package/dist/standalone/assets/action-component-host-BrEZDHZt.js.gz +0 -0
  167. package/dist/standalone/assets/action-page-Bx7kzeK7.js +0 -2
  168. package/dist/standalone/assets/action-page-Bx7kzeK7.js.br +0 -0
  169. package/dist/standalone/assets/action-page-Bx7kzeK7.js.gz +0 -0
  170. package/dist/standalone/assets/ai-assistant-widget-BbIXVrSu.js +0 -2
  171. package/dist/standalone/assets/ai-assistant-widget-BbIXVrSu.js.br +0 -0
  172. package/dist/standalone/assets/ai-assistant-widget-BbIXVrSu.js.gz +0 -0
  173. package/dist/standalone/assets/audit-log-page-BoZh23oQ.js +0 -2
  174. package/dist/standalone/assets/audit-log-page-BoZh23oQ.js.br +0 -0
  175. package/dist/standalone/assets/audit-log-page-BoZh23oQ.js.gz +0 -0
  176. package/dist/standalone/assets/badge-6nyM5Jft.js +0 -2
  177. package/dist/standalone/assets/calendar-nvD_z7KQ.js +0 -2
  178. package/dist/standalone/assets/calendar-nvD_z7KQ.js.br +0 -0
  179. package/dist/standalone/assets/calendar-nvD_z7KQ.js.gz +0 -0
  180. package/dist/standalone/assets/card-4cS4uWCP.js +0 -2
  181. package/dist/standalone/assets/card-4cS4uWCP.js.br +0 -0
  182. package/dist/standalone/assets/card-4cS4uWCP.js.gz +0 -0
  183. package/dist/standalone/assets/chart-widget-YeCL7jdB.js +0 -2
  184. package/dist/standalone/assets/chart-widget-YeCL7jdB.js.br +0 -0
  185. package/dist/standalone/assets/chart-widget-YeCL7jdB.js.gz +0 -0
  186. package/dist/standalone/assets/chart-widget-YeCL7jdB.js.map +0 -1
  187. package/dist/standalone/assets/command-Sb0xL-se.js +0 -2
  188. package/dist/standalone/assets/command-Sb0xL-se.js.br +0 -0
  189. package/dist/standalone/assets/command-Sb0xL-se.js.gz +0 -0
  190. package/dist/standalone/assets/command-Sb0xL-se.js.map +0 -1
  191. package/dist/standalone/assets/date-picker-C4HcgidQ.js +0 -2
  192. package/dist/standalone/assets/date-picker-C4HcgidQ.js.br +0 -0
  193. package/dist/standalone/assets/date-picker-C4HcgidQ.js.gz +0 -0
  194. package/dist/standalone/assets/dist-BSbFjTlr.js +0 -2
  195. package/dist/standalone/assets/dist-BSbFjTlr.js.br +0 -0
  196. package/dist/standalone/assets/dist-BSbFjTlr.js.gz +0 -0
  197. package/dist/standalone/assets/dist-BcL2U6dT.js +0 -2
  198. package/dist/standalone/assets/dist-BcL2U6dT.js.br +0 -0
  199. package/dist/standalone/assets/dist-BcL2U6dT.js.gz +0 -0
  200. package/dist/standalone/assets/dist-Dpg8xy_r.js +0 -2
  201. package/dist/standalone/assets/dist-Dpg8xy_r.js.br +0 -0
  202. package/dist/standalone/assets/dist-Dpg8xy_r.js.gz +0 -0
  203. package/dist/standalone/assets/edit-page-CW7-FAPC.js +0 -2
  204. package/dist/standalone/assets/edit-page-CW7-FAPC.js.br +0 -0
  205. package/dist/standalone/assets/edit-page-CW7-FAPC.js.gz +0 -0
  206. package/dist/standalone/assets/empty-Cposcczv.js +0 -2
  207. package/dist/standalone/assets/empty-Cposcczv.js.br +0 -0
  208. package/dist/standalone/assets/empty-Cposcczv.js.gz +0 -0
  209. package/dist/standalone/assets/global-search-dialog-DLv_nIvM.js +0 -2
  210. package/dist/standalone/assets/global-search-dialog-DLv_nIvM.js.br +0 -0
  211. package/dist/standalone/assets/global-search-dialog-DLv_nIvM.js.gz +0 -0
  212. package/dist/standalone/assets/heavy-fields-BiCEgD2L.js +0 -181
  213. package/dist/standalone/assets/heavy-fields-BiCEgD2L.js.br +0 -0
  214. package/dist/standalone/assets/heavy-fields-BiCEgD2L.js.gz +0 -0
  215. package/dist/standalone/assets/home-page-BSz1wGk0.js +0 -3
  216. package/dist/standalone/assets/home-page-BSz1wGk0.js.br +0 -0
  217. package/dist/standalone/assets/home-page-BSz1wGk0.js.gz +0 -0
  218. package/dist/standalone/assets/home-page-BSz1wGk0.js.map +0 -1
  219. package/dist/standalone/assets/icon-registry-BQU4fIc4.js +0 -2
  220. package/dist/standalone/assets/icon-registry-BQU4fIc4.js.br +0 -0
  221. package/dist/standalone/assets/icon-registry-BQU4fIc4.js.gz +0 -0
  222. package/dist/standalone/assets/icon-registry-BQU4fIc4.js.map +0 -1
  223. package/dist/standalone/assets/index-95cwJ2RY.css +0 -2
  224. package/dist/standalone/assets/index-95cwJ2RY.css.br +0 -0
  225. package/dist/standalone/assets/index-95cwJ2RY.css.gz +0 -0
  226. package/dist/standalone/assets/index-BL8keDxQ.js +0 -15
  227. package/dist/standalone/assets/index-BL8keDxQ.js.br +0 -0
  228. package/dist/standalone/assets/index-BL8keDxQ.js.gz +0 -0
  229. package/dist/standalone/assets/index-BL8keDxQ.js.map +0 -1
  230. package/dist/standalone/assets/json-editor-CAIgxYb3.js +0 -2
  231. package/dist/standalone/assets/json-editor-CAIgxYb3.js.br +0 -0
  232. package/dist/standalone/assets/json-editor-CAIgxYb3.js.gz +0 -0
  233. package/dist/standalone/assets/json-editor-CAIgxYb3.js.map +0 -1
  234. package/dist/standalone/assets/property-renderer-B8Md-EqW.js +0 -7
  235. package/dist/standalone/assets/property-renderer-B8Md-EqW.js.br +0 -0
  236. package/dist/standalone/assets/property-renderer-B8Md-EqW.js.gz +0 -0
  237. package/dist/standalone/assets/property-renderer-B8Md-EqW.js.map +0 -1
  238. package/dist/standalone/assets/reference-WPaf6IdD.js +0 -2
  239. package/dist/standalone/assets/reference-WPaf6IdD.js.br +0 -0
  240. package/dist/standalone/assets/reference-WPaf6IdD.js.gz +0 -0
  241. package/dist/standalone/assets/reference-WPaf6IdD.js.map +0 -1
  242. package/dist/standalone/assets/revisions-button-0WtL6bsZ.js +0 -2
  243. package/dist/standalone/assets/revisions-button-0WtL6bsZ.js.br +0 -0
  244. package/dist/standalone/assets/revisions-button-0WtL6bsZ.js.gz +0 -0
  245. package/dist/standalone/assets/richtext-render-DnVcQ34I.js.br +0 -0
  246. package/dist/standalone/assets/richtext-render-DnVcQ34I.js.gz +0 -0
  247. package/dist/standalone/assets/router-wFvtgo77.js +0 -186
  248. package/dist/standalone/assets/router-wFvtgo77.js.br +0 -0
  249. package/dist/standalone/assets/router-wFvtgo77.js.gz +0 -0
  250. package/dist/standalone/assets/router-wFvtgo77.js.map +0 -1
  251. package/dist/standalone/assets/select-CR4acjX0.js +0 -2
  252. package/dist/standalone/assets/select-CR4acjX0.js.br +0 -0
  253. package/dist/standalone/assets/select-CR4acjX0.js.gz +0 -0
  254. package/dist/standalone/assets/select-CR4acjX0.js.map +0 -1
  255. package/dist/standalone/assets/settings-page-DtguXLAP.js +0 -2
  256. package/dist/standalone/assets/settings-page-DtguXLAP.js.br +0 -0
  257. package/dist/standalone/assets/settings-page-DtguXLAP.js.gz +0 -0
  258. package/dist/standalone/assets/show-page-Dnox2NwO.js +0 -2
  259. package/dist/standalone/assets/show-page-Dnox2NwO.js.br +0 -0
  260. package/dist/standalone/assets/show-page-Dnox2NwO.js.gz +0 -0
  261. package/dist/standalone/assets/tabs-DUS8e6dR.js +0 -2
  262. package/dist/standalone/assets/tabs-DUS8e6dR.js.br +0 -0
  263. package/dist/standalone/assets/tabs-DUS8e6dR.js.gz +0 -0
  264. package/dist/standalone/assets/textarea-CX_0QVSz.js +0 -2
  265. package/dist/standalone/assets/use-dashboard-charts-Cr3OUSL5.js +0 -2
  266. package/dist/standalone/assets/use-dashboard-charts-Cr3OUSL5.js.br +0 -0
  267. package/dist/standalone/assets/use-dashboard-charts-Cr3OUSL5.js.gz +0 -0
  268. package/dist/standalone/assets/useQueries-BCUhWYX4.js +0 -2
  269. package/dist/standalone/assets/useQueries-BCUhWYX4.js.br +0 -0
  270. package/dist/standalone/assets/useQueries-BCUhWYX4.js.gz +0 -0
  271. package/dist/standalone/assets/useQueries-BCUhWYX4.js.map +0 -1
  272. package/dist/standalone/assets/user-directory-9COoW6AO.js.br +0 -0
  273. package/dist/standalone/assets/user-directory-9COoW6AO.js.gz +0 -0
  274. package/dist/standalone/assets/value-format-Cgau0meh.js.br +0 -0
  275. package/dist/standalone/assets/value-format-Cgau0meh.js.gz +0 -0
  276. package/dist/standalone/assets/with-selector-NDLhu4dT.js +0 -2
  277. package/dist/standalone/assets/with-selector-NDLhu4dT.js.br +0 -0
  278. package/dist/standalone/assets/with-selector-NDLhu4dT.js.gz +0 -0
  279. package/dist/standalone/assets/with-selector-NDLhu4dT.js.map +0 -1
  280. package/dist/standalone/assets/wizard-create-page-v2-Aw8Oj.js +0 -2
  281. package/dist/standalone/assets/wizard-create-page-v2-Aw8Oj.js.br +0 -0
  282. package/dist/standalone/assets/wizard-create-page-v2-Aw8Oj.js.gz +0 -0
  283. package/dist/standalone/assets/zod-BrelKLfy.js +0 -2
  284. package/dist/standalone/assets/zod-BrelKLfy.js.br +0 -0
  285. package/dist/standalone/assets/zod-BrelKLfy.js.gz +0 -0
@@ -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";var i=e(t(),1),a=r(),o=i.forwardRef(({className:e,...t},r)=>(0,a.jsx)(`div`,{ref:r,className:n(`rounded-lg border border-border bg-card text-card-foreground shadow-sm`,e),...t}));o.displayName=`Card`;var s=i.forwardRef(({className:e,...t},r)=>(0,a.jsx)(`div`,{ref:r,className:n(`flex flex-col gap-1.5 p-3 sm:p-6`,e),...t}));s.displayName=`CardHeader`;var c=i.forwardRef(({className:e,...t},r)=>(0,a.jsx)(`h3`,{ref:r,className:n(`text-lg font-semibold leading-none tracking-tight`,e),...t}));c.displayName=`CardTitle`;var l=i.forwardRef(({className:e,...t},r)=>(0,a.jsx)(`p`,{ref:r,className:n(`text-sm text-muted-foreground`,e),...t}));l.displayName=`CardDescription`;var u=i.forwardRef(({className:e,...t},r)=>(0,a.jsx)(`div`,{ref:r,className:n(`p-3 sm:p-6 [&:not(:first-child)]:pt-0`,e),...t}));u.displayName=`CardContent`;var d=i.forwardRef(({className:e,...t},r)=>(0,a.jsx)(`div`,{ref:r,className:n(`flex items-center gap-2 p-3 pt-0 sm:p-6 sm:pt-0`,e),...t}));d.displayName=`CardFooter`;export{c as a,s as i,u as n,l as r,o as t};
2
+ //# sourceMappingURL=card-MNH_XK0V.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"card-4cS4uWCP.js","names":[],"sources":["../../../../ui/src/components/card.tsx"],"sourcesContent":["import * as React from 'react'\nimport { cn } from '../lib/utils.js'\n\nexport const Card = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('rounded-lg border border-border bg-card text-card-foreground shadow-sm', className)}\n {...props}\n />\n ),\n)\nCard.displayName = 'Card'\n\nexport const CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex flex-col gap-1.5 p-3 sm:p-6', className)} {...props} />\n ),\n)\nCardHeader.displayName = 'CardHeader'\n\nexport const CardTitle = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLHeadingElement>>(\n ({ className, ...props }, ref) => (\n <h3\n ref={ref as unknown as React.Ref<HTMLHeadingElement>}\n className={cn('text-lg font-semibold leading-none tracking-tight', className)}\n {...props}\n />\n ),\n)\nCardTitle.displayName = 'CardTitle'\n\nexport const CardDescription = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref as unknown as React.Ref<HTMLParagraphElement>}\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n))\nCardDescription.displayName = 'CardDescription'\n\n// `[&:not(:first-child)]:pt-0` collapses the top padding only when this content\n// follows a sibling (typically a `CardHeader`), so a standalone `<Card><CardContent/>`\n// keeps full top padding instead of inheriting the header-aware `pt-0`.\nexport const CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('p-3 sm:p-6 [&:not(:first-child)]:pt-0', className)} {...props} />\n ),\n)\nCardContent.displayName = 'CardContent'\n\nexport const CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex items-center gap-2 p-3 pt-0 sm:p-6 sm:pt-0', className)} {...props} />\n ),\n)\nCardFooter.displayName = 'CardFooter'\n"],"mappings":"sIAGa,EAAA,EAAa,YACvB,CAAE,YAAW,GAAG,GAAS,KACxB,EAAA,EAAA,IAAA,CAAC,MAAD,CACO,MACL,UAAW,EAAG,yEAA0E,CAAS,EACjG,GAAI,CACL,CAAA,CAEL,EACA,EAAK,YAAc,OAEnB,IAAa,EAAA,EAAmB,YAC7B,CAAE,YAAW,GAAG,GAAS,KACxB,EAAA,EAAA,IAAA,CAAC,MAAD,CAAU,MAAK,UAAW,EAAG,mCAAoC,CAAS,EAAG,GAAI,CAAQ,CAAA,CAE7F,EACA,EAAW,YAAc,aAEzB,IAAa,EAAA,EAAkB,YAC5B,CAAE,YAAW,GAAG,GAAS,KACxB,EAAA,EAAA,IAAA,CAAC,KAAD,CACO,MACL,UAAW,EAAG,oDAAqD,CAAS,EAC5E,GAAI,CACL,CAAA,CAEL,EACA,EAAU,YAAc,YAExB,IAAa,EAAA,EAAwB,YAGlC,CAAE,YAAW,GAAG,GAAS,KAC1B,EAAA,EAAA,IAAA,CAAC,IAAD,CACO,MACL,UAAW,EAAG,gCAAiC,CAAS,EACxD,GAAI,CACL,CAAA,CACF,EACD,EAAgB,YAAc,kBAK9B,IAAa,EAAA,EAAoB,YAC9B,CAAE,YAAW,GAAG,GAAS,KACxB,EAAA,EAAA,IAAA,CAAC,MAAD,CAAU,MAAK,UAAW,EAAG,wCAAyC,CAAS,EAAG,GAAI,CAAQ,CAAA,CAElG,EACA,EAAY,YAAc,cAE1B,IAAa,EAAA,EAAmB,YAC7B,CAAE,YAAW,GAAG,GAAS,KACxB,EAAA,EAAA,IAAA,CAAC,MAAD,CAAU,MAAK,UAAW,EAAG,kDAAmD,CAAS,EAAG,GAAI,CAAQ,CAAA,CAE5G,EACA,EAAW,YAAc"}
1
+ {"version":3,"file":"card-MNH_XK0V.js","names":[],"sources":["../../../../ui/src/components/card.tsx"],"sourcesContent":["import * as React from 'react'\nimport { cn } from '../lib/utils.js'\n\nexport const Card = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('rounded-lg border border-border bg-card text-card-foreground shadow-sm', className)}\n {...props}\n />\n ),\n)\nCard.displayName = 'Card'\n\nexport const CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex flex-col gap-1.5 p-3 sm:p-6', className)} {...props} />\n ),\n)\nCardHeader.displayName = 'CardHeader'\n\nexport const CardTitle = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLHeadingElement>>(\n ({ className, ...props }, ref) => (\n <h3\n ref={ref as unknown as React.Ref<HTMLHeadingElement>}\n className={cn('text-lg font-semibold leading-none tracking-tight', className)}\n {...props}\n />\n ),\n)\nCardTitle.displayName = 'CardTitle'\n\nexport const CardDescription = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref as unknown as React.Ref<HTMLParagraphElement>}\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n))\nCardDescription.displayName = 'CardDescription'\n\n// `[&:not(:first-child)]:pt-0` collapses the top padding only when this content\n// follows a sibling (typically a `CardHeader`), so a standalone `<Card><CardContent/>`\n// keeps full top padding instead of inheriting the header-aware `pt-0`.\nexport const CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('p-3 sm:p-6 [&:not(:first-child)]:pt-0', className)} {...props} />\n ),\n)\nCardContent.displayName = 'CardContent'\n\nexport const CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex items-center gap-2 p-3 pt-0 sm:p-6 sm:pt-0', className)} {...props} />\n ),\n)\nCardFooter.displayName = 'CardFooter'\n"],"mappings":"uIAGa,EAAA,EAAa,YACvB,CAAE,YAAW,GAAG,GAAS,KACxB,EAAA,EAAA,IAAA,CAAC,MAAD,CACO,MACL,UAAW,EAAG,yEAA0E,CAAS,EACjG,GAAI,CACL,CAAA,CAEL,EACA,EAAK,YAAc,OAEnB,IAAa,EAAA,EAAmB,YAC7B,CAAE,YAAW,GAAG,GAAS,KACxB,EAAA,EAAA,IAAA,CAAC,MAAD,CAAU,MAAK,UAAW,EAAG,mCAAoC,CAAS,EAAG,GAAI,CAAQ,CAAA,CAE7F,EACA,EAAW,YAAc,aAEzB,IAAa,EAAA,EAAkB,YAC5B,CAAE,YAAW,GAAG,GAAS,KACxB,EAAA,EAAA,IAAA,CAAC,KAAD,CACO,MACL,UAAW,EAAG,oDAAqD,CAAS,EAC5E,GAAI,CACL,CAAA,CAEL,EACA,EAAU,YAAc,YAExB,IAAa,EAAA,EAAwB,YAGlC,CAAE,YAAW,GAAG,GAAS,KAC1B,EAAA,EAAA,IAAA,CAAC,IAAD,CACO,MACL,UAAW,EAAG,gCAAiC,CAAS,EACxD,GAAI,CACL,CAAA,CACF,EACD,EAAgB,YAAc,kBAK9B,IAAa,EAAA,EAAoB,YAC9B,CAAE,YAAW,GAAG,GAAS,KACxB,EAAA,EAAA,IAAA,CAAC,MAAD,CAAU,MAAK,UAAW,EAAG,wCAAyC,CAAS,EAAG,GAAI,CAAQ,CAAA,CAElG,EACA,EAAY,YAAc,cAE1B,IAAa,EAAA,EAAmB,YAC7B,CAAE,YAAW,GAAG,GAAS,KACxB,EAAA,EAAA,IAAA,CAAC,MAAD,CAAU,MAAK,UAAW,EAAG,kDAAmD,CAAS,EAAG,GAAI,CAAQ,CAAA,CAE5G,EACA,EAAW,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{i as r,r as i,t as a}from"./refresh-cw-DHvUQTMb.js";import{t as o}from"./trash-2-DhyKQCKv.js";import{n as ee,r as te,t as ne}from"./minimize-2-Bx2cH_WS.js";import{t as re}from"./copy-BexCWf4U.js";import{t as ie}from"./ellipsis-lEjcTxo0.js";import{t as ae}from"./pencil-BO-k3yTG.js";import{n as oe,t as se}from"./palette-DVP_4RAn.js";import{t as ce}from"./triangle-alert-CyaaNWN8.js";import{s}from"./dist-CmyV2PEd.js";import{a as c,i as l,n as u,o as d,t as f}from"./select-BR1RMqsn.js";import{A as le,N as ue,T as de}from"./hooks-DHDUQgzs.js";import{t as p}from"./date-picker-DQ4XOgO6.js";import{a as fe,i as pe,n as me,t as he}from"./card-MNH_XK0V.js";import{a as m,c as ge,i as h,l as _e,n as ve,o as g,r as ye,s as _,t as v}from"./value-format-CLzWct9Y.js";import{r as be}from"./use-dashboard-charts-aymvhXUB.js";import{t as y}from"./reference-BDP1QYCg.js";import{B as b,Dt as x,F as xe,G as S,M as C,U as w,V as T,W as E,Y as Se,j as Ce,k as we,nt as D,z as Te}from"./index-BvESJd1R.js";var O=e(t(),1);function k(e,t,n){if(n===`all`)return[e.slice(0,10)];let r=[],i=M(new Date(e),n),a=M(new Date(t),n);for(;i.getTime()<=a.getTime();)r.push(j(i)),N(i,n);return r}function A(e,t,n,r){let i=k(t,n,r);return e.map(e=>{let t=new Map(e.points.map(e=>[e.date,e.value])),n=i.map(e=>({date:e,value:t.get(e)??0}));return{key:e.key,points:n}})}function Ee(e,t=`en-US`){let n=new Intl.DateTimeFormat(t,{day:`2-digit`,month:`2-digit`}),r=new Intl.DateTimeFormat(t,{month:`2-digit`,year:`numeric`}),i=new Intl.DateTimeFormat(t,{year:`numeric`});return t=>{let a=new Date(t);return e===`year`?i.format(a):e===`month`?r.format(a):n.format(a)}}function De(e,t=`en-US`){let n=new Intl.DateTimeFormat(t,{day:`2-digit`,month:`long`,year:`numeric`}),r=new Intl.DateTimeFormat(t,{month:`long`,year:`numeric`}),i=new Intl.DateTimeFormat(t,{year:`numeric`}),a=new Intl.DateTimeFormat(t,{day:`2-digit`,month:`short`});return t=>{let o=new Date(t);if(e===`year`)return i.format(o);if(e===`month`)return r.format(o);if(e===`week`){let e=new Date(o);return e.setDate(e.getDate()+6),`${a.format(o)} – ${a.format(e)}`}return n.format(o)}}function j(e){return e.toISOString().slice(0,10)}function M(e,t){let n=new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()));if(t===`week`){let e=(n.getUTCDay()+6)%7;n.setUTCDate(n.getUTCDate()-e)}else t===`month`?n.setUTCDate(1):t===`year`&&n.setUTCMonth(0,1);return n}function N(e,t){t===`day`?e.setUTCDate(e.getUTCDate()+1):t===`week`?e.setUTCDate(e.getUTCDate()+7):t===`month`?e.setUTCMonth(e.getUTCMonth()+1):t===`year`&&e.setUTCFullYear(e.getUTCFullYear()+1)}var P=`__prev__:`;function Oe(e){let t=Date.parse(`${e.from}T00:00:00.000Z`),n=Date.parse(`${e.to}T00:00:00.000Z`);if(Number.isNaN(t)||Number.isNaN(n)||n<t)return null;let r=Math.round((n-t)/864e5)+1;return{from:I(new Date(t-r*864e5)),to:I(new Date(t-864e5))}}function ke(e,t,n,r){if(n.length===0)return[];let i=k(t.from,t.to,r),a=n.length-i.length;return e.map(e=>{let t=new Map(e.points.map(e=>[e.date,e.value])),r=n.map((e,n)=>{let r=i[n-a];return r===void 0?{date:e,value:0}:{date:e,value:t.get(r)??0,sourceDate:r}});return{key:`${P}${e.key}`,sourceKey:e.key,points:r}})}function F(e){if(!e||e.length===0)return null;let t=0;for(let n of e)for(let e of n.points)t+=e.value;return t}function Ae(e,t){if(e==null||t==null||t===0)return null;let n=Math.round((e-t)/Math.abs(t)*1e3)/10;return{percent:n,direction:n>0?`up`:n<0?`down`:`flat`}}var I=e=>e.toISOString().slice(0,10),L=n();function je({items:e,onSave:t,onClose:n}){let{t:r}=ue(),[i,a]=O.useState(()=>Object.fromEntries(e.map(e=>[e.key,e.override])));return(0,L.jsx)(b,{open:!0,onOpenChange:e=>{e||n()},children:(0,L.jsxs)(T,{className:`w-full max-w-lg`,children:[(0,L.jsx)(E,{children:(0,L.jsx)(S,{children:r(`dashboard:widget.colorsTitle`)})}),(0,L.jsx)(`div`,{className:`max-h-[60vh] space-y-4 overflow-y-auto py-1`,children:e.map(e=>(0,L.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,L.jsx)(`span`,{className:`size-3 shrink-0 rounded-full`,style:{backgroundColor:i[e.key]??e.auto}}),(0,L.jsx)(`span`,{className:`truncate font-medium`,children:e.label})]}),(0,L.jsx)(m,{value:i[e.key],onChange:t=>a(n=>({...n,[e.key]:t})),presets:g,labels:{custom:r(`dashboard:widget.colorCustom`),pick:r(`dashboard:widget.colorPick`),auto:r(`dashboard:widget.colorAuto`)}})]},e.key))}),(0,L.jsxs)(w,{children:[(0,L.jsx)(s,{variant:`outline`,onClick:n,children:r(`common:cancel`)}),(0,L.jsx)(s,{onClick:()=>{let e={};for(let[t,n]of Object.entries(i))n&&(e[t]=n);t(e)},children:r(`common:save`)})]})]})})}var Me=[`7d`,`30d`,`90d`,`1y`,`all`,`custom`],Ne=[`day`,`week`,`month`,`year`];function R({config:e,onEdit:t,onDelete:n,onMove:m,onUpdate:g}){let{t:_,locale:v}=ue(),y=e.visualisation===`kpi`,b=y?`all`:e.timeRange.preset===`all`&&(e.step===`day`||e.step===`week`)?`month`:e.timeRange.preset===`1y`&&e.step===`day`?`week`:e.step,S=O.useMemo(()=>be(e.timeRange),[e.timeRange]),w=!y&&e.comparePrevious===!0&&!e.groupBy,T=de(e.resource),E=O.useMemo(()=>{if(e.groupByLabelResource)return e.groupByLabelResource;if(!e.groupBy||!T)return;let t=T.properties,n=t.find(t=>t.path===e.groupBy);if(!n)return;if(n.reference)return n.reference;let r=n.path.endsWith(`_id`)?n.path.slice(0,-3):n.path.endsWith(`Id`)?n.path.slice(0,-2):``;if(r){let e=t.find(e=>e.path===r&&e.reference);if(e?.reference)return e.reference}},[e.groupBy,e.groupByLabelResource,T]),{data:D,isLoading:A,isError:j,refetch:M,isFetching:N}=le(O.useMemo(()=>({resource:e.resource,dateField:e.dateField,step:b,metric:e.metric,from:S.from,to:S.to,...e.field?{field:e.field}:{},...!y&&e.groupBy?{groupBy:e.groupBy}:{},...!y&&e.groupBy?{topN:e.topN}:{},...!y&&e.groupBy&&E?{groupByLabelResource:E}:{},...Object.keys(e.filters).length?{filters:e.filters}:{},...y||w?{comparePrevious:!0}:{}}),[e,S,y,w,b,E])),[P,I]=O.useState(!1),[R,z]=O.useState(!1),[B,V]=O.useState(S.from),[H,U]=O.useState(S.to),W=e.quickFilters??[],G=t=>{g({...e,...t,updatedAt:new Date().toISOString()})},ze=(t,n)=>{let r={...e.filters};n===``?delete r[t]:r[t]=n,G({filters:r})},Be=e=>{e===`custom`?(V(S.from),U(S.to),G({timeRange:{preset:`custom`,from:S.from,to:S.to}})):G({timeRange:{preset:e}})},Ve=()=>{B&&H&&G({timeRange:{preset:`custom`,from:B,to:H}})},He=e=>{e!==`all`&&G({step:e})},Ue=()=>{G({width:e.width===`full`?`half`:`full`})},K=y?`h-32`:`h-[320px]`,q=D?.resolvedLabels,J=O.useCallback(e=>e===`__total__`?_(`dashboard:seriesTotal`):e===`__other__`?_(`dashboard:seriesOther`):e===`__null__`?_(`dashboard:seriesNull`):q?.[e]??e,[q,_]),Y=O.useMemo(()=>ye(e.format,v),[e.format,v]),We=O.useMemo(()=>ve(e.format,v),[e.format,v]),X=O.useMemo(()=>{let t=h(Ie(D?.series??[],S,b,J),e.transform).map(t=>{let n=e.series?.[t.key]?.color;return n?{...t,color:n}:t});if(!w||!D?.previous?.length)return t;let n=Oe(S);if(!n)return t;let r=k(S.from,S.to,b),i=h(ke(D.previous,n,r,b),e.transform).map(e=>({key:e.key,label:_(`dashboard:widget.previousSeries`).replace(`{label}`,J(e.sourceKey)),points:e.points,dashed:!0,hiddenWith:e.sourceKey}));return[...t,...i]},[D?.series,D?.previous,S.from,S.to,b,J,w,e.transform,e.series,_]),Z=O.useMemo(()=>w&&D?Ae(F(D.series),F(D.previous)):null,[w,D]),[Ge,Q]=O.useState(!1),Ke=O.useMemo(()=>{let t=X.filter(e=>!(`dashed`in e)||!e.dashed),n=_e(t.length);return t.map((t,r)=>({key:t.key,label:t.label,override:e.series?.[t.key]?.color,auto:n[r]}))},[X,e.series]),qe=t=>{let n={...e.series};for(let e of Ke)delete n[e.key];for(let[e,r]of Object.entries(t))n[e]={color:r};G({series:n}),Q(!1)},$=D&&D.supported===!1;return(0,L.jsxs)(he,{className:`flex flex-col`,children:[(0,L.jsxs)(pe,{className:`flex flex-row items-center justify-between gap-2 p-3 pb-2 space-y-0 sm:p-6 sm:pb-2`,children:[(0,L.jsxs)(fe,{className:`flex min-w-0 items-center gap-2 text-sm font-medium pr-2`,children:[(0,L.jsx)(`span`,{className:`truncate`,children:e.title||_(`chart:untitled`)}),Z&&(0,L.jsxs)(`span`,{title:_(`dashboard:widget.previousPeriod`),className:`inline-flex shrink-0 items-center gap-0.5 rounded-full px-1.5 py-0.5 text-xs font-medium tabular-nums ${Z.direction===`up`?`bg-emerald-500/10 text-emerald-600 dark:text-emerald-400`:Z.direction===`down`?`bg-rose-500/10 text-rose-600 dark:text-rose-400`:`bg-muted text-muted-foreground`}`,children:[Z.direction===`up`?(0,L.jsx)(i,{className:`size-3`}):Z.direction===`down`?(0,L.jsx)(r,{className:`size-3`}):null,Math.abs(Z.percent),`%`]})]}),(0,L.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0`,children:[(0,L.jsx)(s,{variant:`ghost`,size:`icon`,className:`size-7`,onClick:Ue,"aria-label":e.width===`full`?_(`dashboard:widget.shrink`):_(`dashboard:widget.expand`),children:e.width===`full`?(0,L.jsx)(ne,{className:`size-3.5`}):(0,L.jsx)(ee,{className:`size-3.5`})}),D?.sql&&(0,L.jsx)(s,{variant:P?`secondary`:`ghost`,size:`icon`,className:`size-7`,onClick:()=>I(e=>!e),"aria-label":_(`dashboard:widget.toggleSql`),children:(0,L.jsx)(te,{className:`size-3.5`})}),(0,L.jsx)(s,{variant:`ghost`,size:`icon`,className:`size-7`,onClick:()=>M(),disabled:N,"aria-label":_(`common:refresh`),children:(0,L.jsx)(a,{className:`size-3.5 ${N?`animate-spin`:``}`})}),(0,L.jsxs)(we,{children:[(0,L.jsx)(Te,{asChild:!0,children:(0,L.jsx)(s,{variant:`ghost`,size:`icon`,className:`size-7`,"aria-label":_(`common:openMenu`),children:(0,L.jsx)(ie,{className:`size-3.5`})})}),(0,L.jsxs)(Ce,{align:`end`,children:[(0,L.jsxs)(C,{onClick:t,children:[(0,L.jsx)(ae,{className:`size-4 mr-2`}),_(`chart:editChart`)]}),!y&&(0,L.jsxs)(C,{onClick:()=>Q(!0),children:[(0,L.jsx)(se,{className:`size-4 mr-2`}),_(`dashboard:widget.editColors`)]}),m&&(0,L.jsxs)(C,{onClick:m,children:[(0,L.jsx)(oe,{className:`size-4 mr-2`}),_(`chart:moveToGroup`)]}),(0,L.jsx)(xe,{}),(0,L.jsxs)(C,{onClick:n,className:`text-destructive focus:text-destructive`,children:[(0,L.jsx)(o,{className:`size-4 mr-2`}),_(`chart:deleteChart`)]})]})]})]})]}),(0,L.jsxs)(me,{className:`flex-1 p-3 pt-0 space-y-3 sm:p-6 sm:pt-0`,children:[!$&&(0,L.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-xs text-muted-foreground`,children:[W.length>0&&T&&W.map(t=>{let n=T.properties.find(e=>e.path===t);return n?(0,L.jsx)(Fe,{property:n,placeholder:n.label,value:e.filters[t]??``,onChange:e=>ze(t,e)},t):null}),!y&&(0,L.jsxs)(f,{value:e.step===`all`?`day`:e.step,onValueChange:e=>He(e),children:[(0,L.jsx)(c,{className:`h-8 px-2 text-xs w-auto`,"aria-label":_(`chart:step`),children:(0,L.jsx)(d,{})}),(0,L.jsx)(u,{children:Ne.map(e=>(0,L.jsx)(l,{value:e,children:_(`chart:step${Pe(e)}`)},e))})]}),(0,L.jsxs)(f,{value:e.timeRange.preset,onValueChange:e=>Be(e),children:[(0,L.jsx)(c,{className:`h-8 px-2 text-xs w-auto`,"aria-label":_(`dashboard:builder.range`),children:(0,L.jsx)(d,{})}),(0,L.jsx)(u,{children:Me.map(e=>(0,L.jsx)(l,{value:e,children:_(`dashboard:range.${e}`)},e))})]}),e.timeRange.preset===`custom`?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(p,{value:B,onChange:V,ariaLabel:_(`common:from`),openCalendarLabel:_(`common:openCalendar`),className:`w-[130px]`,inputClassName:`h-8 text-xs`}),(0,L.jsx)(`span`,{className:`text-muted-foreground`,children:`—`}),(0,L.jsx)(p,{value:H,onChange:U,ariaLabel:_(`common:to`),openCalendarLabel:_(`common:openCalendar`),className:`w-[130px]`,inputClassName:`h-8 text-xs`}),(0,L.jsxs)(s,{size:`sm`,className:`h-8 px-3 shrink-0`,onClick:Ve,disabled:!B||!H,"aria-label":_(`common:apply`),children:[(0,L.jsx)(x,{className:`size-3.5 mr-1`}),_(`common:apply`)]})]}):(0,L.jsxs)(`span`,{className:`ml-auto tabular-nums`,children:[S.from,` — `,S.to]})]}),!$&&!j&&D?.truncated&&(0,L.jsxs)(`div`,{className:`flex items-start gap-2 rounded-md border border-amber-500/40 bg-amber-500/10 px-3 py-2 text-xs text-amber-700 dark:text-amber-400`,children:[(0,L.jsx)(ce,{className:`size-3.5 mt-0.5 shrink-0`}),(0,L.jsx)(`span`,{children:_(`dashboard:widget.truncatedWarning`)})]}),A?(0,L.jsx)(Se,{className:`${K} w-full rounded-md`}):j?(0,L.jsx)(`div`,{className:`flex items-center justify-center text-sm text-muted-foreground ${K}`,children:_(`chart:loadError`)}):$?(0,L.jsx)(`div`,{className:`flex items-center justify-center text-center text-sm text-muted-foreground px-4 ${K}`,children:_(`dashboard:widget.unsupported`)}):y?(0,L.jsx)(Le,{data:D,transform:e.transform,formatNumber:Y,labels:Re(_)}):(0,L.jsx)(ge,{series:X,height:320,visualisation:e.visualisation===`kpi`?void 0:e.visualisation,tickFormatter:Ee(b,v),labelFormatter:De(b,v),valueFormatter:Y,axisValueFormatter:We,labels:{noData:_(`chart:noData`),showAll:_(`dashboard:widget.showAll`),hideAll:_(`dashboard:widget.hideAll`)}}),D?.sql&&P&&(0,L.jsxs)(`div`,{className:`relative`,children:[(0,L.jsx)(s,{variant:`ghost`,size:`icon`,className:`absolute top-1 right-1 size-6`,onClick:()=>{navigator.clipboard.writeText(D.sql??``),z(!0),setTimeout(()=>z(!1),2e3)},"aria-label":_(R?`common:copied`:`common:copy`),children:R?(0,L.jsx)(x,{className:`size-3 text-green-500`}):(0,L.jsx)(re,{className:`size-3`})}),(0,L.jsx)(`pre`,{className:`text-[11px] leading-snug bg-muted/50 border border-border rounded-md p-2 pr-8 overflow-x-auto whitespace-pre`,children:D.sql})]})]}),Ge&&(0,L.jsx)(je,{items:Ke,onSave:qe,onClose:()=>Q(!1)})]})}var Pe=e=>e.charAt(0).toUpperCase()+e.slice(1),z=`__none__`;function Fe({property:e,placeholder:t,value:n,onChange:r}){let i=t??e.label;return e.reference?(0,L.jsx)(`div`,{className:`w-36`,children:(0,L.jsx)(y,{referenceResourceId:e.reference,value:n||null,onChange:e=>r(e==null?``:String(e)),placeholder:i,className:`h-8 text-xs`})}):e.availableValues&&e.availableValues.length>0?(0,L.jsxs)(f,{value:n||z,onValueChange:e=>r(e===z?``:e),children:[(0,L.jsx)(c,{className:`h-8 px-2 text-xs w-36`,children:(0,L.jsx)(d,{placeholder:i})}),(0,L.jsxs)(u,{children:[(0,L.jsx)(l,{value:z,children:i}),e.availableValues.map(e=>(0,L.jsx)(l,{value:e.value,children:e.label},e.value))]})]}):e.type===`boolean`?(0,L.jsxs)(f,{value:n||z,onValueChange:e=>r(e===z?``:e),children:[(0,L.jsx)(c,{className:`h-8 px-2 text-xs w-36`,children:(0,L.jsx)(d,{placeholder:i})}),(0,L.jsxs)(u,{children:[(0,L.jsx)(l,{value:z,children:i}),(0,L.jsx)(l,{value:`true`,children:`true`}),(0,L.jsx)(l,{value:`false`,children:`false`})]})]}):(0,L.jsx)(D,{type:e.type===`number`||e.type===`float`||e.type===`currency`?`number`:`text`,className:`h-8 px-2 text-xs w-36`,value:n,placeholder:i,onChange:e=>r(e.target.value)})}function Ie(e,t,n,r){return A(e.map(e=>({key:e.key,points:e.points})),t.from,t.to,n).map(e=>({key:e.key,label:r(e.key),points:[...e.points]}))}function Le({data:e,transform:t,formatNumber:n,labels:r}){let i=B(e?.series),a=B(e?.previous);return(0,L.jsx)(_,{value:i==null?i:v(i,t),previousValue:a==null?a:v(a,t),formatNumber:n,labels:r})}function B(e){if(!e||e.length===0)return null;let t=0;for(let n of e)for(let e of n.points)t+=e.value;return t}function Re(e){return{noData:e(`chart:noData`),deltaUp:e(`dashboard:widget.deltaUp`),deltaDown:e(`dashboard:widget.deltaDown`),deltaFlat:e(`dashboard:widget.deltaFlat`),previousPeriod:e(`dashboard:widget.previousPeriod`)}}export{R as ChartWidget};
2
+ //# sourceMappingURL=chart-widget-R2NG5T1y.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart-widget-R2NG5T1y.js","names":[],"sources":["../../../../react/src/dashboard/time-series.ts","../../../../react/src/dashboard/compare.ts","../../../../react/src/components/chart-series-colors-dialog.tsx","../../../../react/src/components/chart-widget.tsx"],"sourcesContent":["// Time-series UI helpers — bucket fill, tick formatting, label formatting.\n// All zero-fill happens here on the client side (req: \"Заполнение нулями\n// должно быть только в ui, вне зависимости от адаптеров\"). Adapters return\n// only buckets that have data; the UI fabricates the rest at value 0 so\n// charts don't have visual gaps.\n\nimport type {\n TimeSeriesPoint,\n TimeSeriesSeries,\n TimeSeriesStep,\n} from '../client.js'\n\n/** Generate a continuous sequence of `YYYY-MM-DD` bucket keys spanning [from, to]. */\nexport function generateBuckets(\n fromIso: string,\n toIso: string,\n step: TimeSeriesStep,\n): string[] {\n if (step === 'all') return [fromIso.slice(0, 10)]\n const out: string[] = []\n const cur = startOf(new Date(fromIso), step)\n const end = startOf(new Date(toIso), step)\n while (cur.getTime() <= end.getTime()) {\n out.push(ymd(cur))\n advance(cur, step)\n }\n return out\n}\n\n/**\n * Zero-fill every series so each one has a value for every bucket in the\n * resolved date range. Missing buckets become `value: 0` rather than gaps,\n * which Recharts renders as flat segments instead of breaks.\n */\nexport function fillTimeSeries(\n series: TimeSeriesSeries[],\n fromIso: string,\n toIso: string,\n step: TimeSeriesStep,\n): TimeSeriesSeries[] {\n const buckets = generateBuckets(fromIso, toIso, step)\n return series.map((s) => {\n const map = new Map(s.points.map((p) => [p.date, p.value]))\n const points: TimeSeriesPoint[] = buckets.map((date) => ({\n date,\n value: map.get(date) ?? 0,\n }))\n return { key: s.key, points }\n })\n}\n\n/**\n * X-axis tick formatter — short label format depending on bucket size.\n * day/week → DD.MM, month → MM.YYYY, year → YYYY.\n */\nexport function makeTickFormatter(\n step: TimeSeriesStep,\n locale = 'en-US',\n): (iso: string) => string {\n const dayMonth = new Intl.DateTimeFormat(locale, { day: '2-digit', month: '2-digit' })\n const monthYear = new Intl.DateTimeFormat(locale, { month: '2-digit', year: 'numeric' })\n const year = new Intl.DateTimeFormat(locale, { year: 'numeric' })\n return (iso: string): string => {\n const d = new Date(iso)\n if (step === 'year') return year.format(d)\n if (step === 'month') return monthYear.format(d)\n return dayMonth.format(d)\n }\n}\n\n/**\n * Tooltip label formatter — long, human-friendly form. For week buckets\n * we render `Mon DD – Sun DD` (the bucket plus 6 days).\n */\nexport function makeLabelFormatter(\n step: TimeSeriesStep,\n locale = 'en-US',\n): (iso: string) => string {\n const fullDay = new Intl.DateTimeFormat(locale, {\n day: '2-digit',\n month: 'long',\n year: 'numeric',\n })\n const monthYear = new Intl.DateTimeFormat(locale, { month: 'long', year: 'numeric' })\n const year = new Intl.DateTimeFormat(locale, { year: 'numeric' })\n const shortDay = new Intl.DateTimeFormat(locale, { day: '2-digit', month: 'short' })\n return (iso: string): string => {\n const d = new Date(iso)\n if (step === 'year') return year.format(d)\n if (step === 'month') return monthYear.format(d)\n if (step === 'week') {\n const end = new Date(d)\n end.setDate(end.getDate() + 6)\n return `${shortDay.format(d)} – ${shortDay.format(end)}`\n }\n return fullDay.format(d)\n }\n}\n\n// ─── Internals ────────────────────────────────────────────────────────────\n\nfunction ymd(d: Date): string {\n return d.toISOString().slice(0, 10)\n}\n\nfunction startOf(d: Date, step: TimeSeriesStep): Date {\n const out = new Date(Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate()))\n if (step === 'week') {\n // Monday-anchored week.\n const dow = (out.getUTCDay() + 6) % 7\n out.setUTCDate(out.getUTCDate() - dow)\n } else if (step === 'month') {\n out.setUTCDate(1)\n } else if (step === 'year') {\n out.setUTCMonth(0, 1)\n }\n return out\n}\n\nfunction advance(d: Date, step: TimeSeriesStep): void {\n if (step === 'day') d.setUTCDate(d.getUTCDate() + 1)\n else if (step === 'week') d.setUTCDate(d.getUTCDate() + 7)\n else if (step === 'month') d.setUTCMonth(d.getUTCMonth() + 1)\n else if (step === 'year') d.setUTCFullYear(d.getUTCFullYear() + 1)\n}\n","// Previous-period comparison helpers for dashboard charts.\n//\n// The adapters compute the previous window as `prevTo = from`,\n// `prevFrom = from − (to − from)` where the wire `from`/`to` are\n// start-of-day / end-of-day instants. In whole-day terms that is the\n// N-day window ending the day before the current one starts — which is\n// what `serverPreviousRangeOf` reproduces so client-side zero-fill and\n// tooltips agree with the buckets the server actually returns. (The\n// degenerate 1 ms boundary bucket at `from` itself is dropped.)\n\nimport type { TimeSeriesSeries, TimeSeriesStep } from '../client.js'\nimport { generateBuckets } from './time-series.js'\n\n/** Prefix marking overlay series produced from the previous window. */\nexport const PREVIOUS_KEY_PREFIX = '__prev__:'\n\nexport interface AlignedPreviousPoint {\n /** Current-window bucket the point is plotted on. */\n date: string\n value: number\n /** Real previous-window bucket the value came from (for tooltips). */\n sourceDate?: string\n}\n\nexport interface AlignedPreviousSeries {\n key: string\n /** Key of the paired current-window series (`__total__`, …). */\n sourceKey: string\n points: AlignedPreviousPoint[]\n}\n\n/**\n * Whole-day previous window matching the adapters' formula: for a current\n * window of N days `[from, to]`, returns `[from − N, from − 1]`.\n */\nexport function serverPreviousRangeOf(range: {\n from: string\n to: string\n}): { from: string; to: string } | null {\n const f = Date.parse(`${range.from}T00:00:00.000Z`)\n const t = Date.parse(`${range.to}T00:00:00.000Z`)\n if (Number.isNaN(f) || Number.isNaN(t) || t < f) return null\n const days = Math.round((t - f) / 86_400_000) + 1\n return {\n from: ymd(new Date(f - days * 86_400_000)),\n to: ymd(new Date(f - 86_400_000)),\n }\n}\n\n/**\n * Zero-fill the previous window and re-plot each point onto the current\n * window's bucket axis (point *i* → `currentBuckets[i]`), keeping the real\n * date in `sourceDate`. When bucket counts differ (step-aligned month/week\n * windows drift by ±1) the series are aligned on their END — \"yesterday\n * lines up with yesterday\" — and leading gaps become zeros.\n */\nexport function alignPreviousSeries(\n previous: ReadonlyArray<TimeSeriesSeries>,\n prevRange: { from: string; to: string },\n currentBuckets: ReadonlyArray<string>,\n step: TimeSeriesStep,\n): AlignedPreviousSeries[] {\n if (currentBuckets.length === 0) return []\n const prevBuckets = generateBuckets(prevRange.from, prevRange.to, step)\n const offset = currentBuckets.length - prevBuckets.length\n return previous.map((s) => {\n const map = new Map(s.points.map((p) => [p.date, p.value]))\n const points: AlignedPreviousPoint[] = currentBuckets.map((date, i) => {\n const src = prevBuckets[i - offset]\n return src === undefined\n ? { date, value: 0 }\n : { date, value: map.get(src) ?? 0, sourceDate: src }\n })\n return { key: `${PREVIOUS_KEY_PREFIX}${s.key}`, sourceKey: s.key, points }\n })\n}\n\n/** Total across all points of all series (raw, pre-transform values). */\nexport function sumSeries(\n series: ReadonlyArray<TimeSeriesSeries> | undefined,\n): number | null {\n if (!series || series.length === 0) return null\n let total = 0\n for (const s of series) for (const p of s.points) total += p.value\n return total\n}\n\nexport interface PeriodDelta {\n /** Signed percentage, one decimal place (e.g. -81.7). */\n percent: number\n direction: 'up' | 'down' | 'flat'\n}\n\n/**\n * Period-over-period delta on raw totals: `(cur − prev) / prev`. Returns\n * null when the previous total is missing or 0 (undefined percentage).\n */\nexport function computeDelta(\n current: number | null,\n previous: number | null,\n): PeriodDelta | null {\n if (current == null || previous == null || previous === 0) return null\n const percent = Math.round(((current - previous) / Math.abs(previous)) * 1000) / 10\n return {\n percent,\n direction: percent > 0 ? 'up' : percent < 0 ? 'down' : 'flat',\n }\n}\n\nconst ymd = (d: Date): string => d.toISOString().slice(0, 10)\n","// Per-series color override dialog for a dashboard chart. Opened from the\n// widget \"…\" menu so it can list the series actually rendered (groupBy\n// values are only known once data is loaded). Lives in the react package\n// because it is i18n-aware; primitives come from @modern-admin/ui.\n\nimport * as React from 'react'\nimport {\n Button,\n ColorSwatchPicker,\n CHART_COLOR_PRESETS,\n Dialog,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from '@modern-admin/ui'\nimport { useI18n } from '../i18n.js'\n\nexport interface SeriesColorItem {\n /** Stable series key (`__total__`, groupBy value, …). */\n key: string\n /** Display label (legend text). */\n label: string\n /** Persisted override, if any. */\n override?: string\n /** Palette color used when no override is set — shown as the row swatch. */\n auto: string\n}\n\nexport interface ChartSeriesColorsDialogProps {\n items: ReadonlyArray<SeriesColorItem>\n /** Receives only the overrides (key → hex); auto rows are omitted. */\n onSave(overrides: Record<string, string>): void\n onClose(): void\n}\n\nexport function ChartSeriesColorsDialog({\n items,\n onSave,\n onClose,\n}: ChartSeriesColorsDialogProps): React.ReactElement {\n const { t } = useI18n()\n const [draft, setDraft] = React.useState<Record<string, string | undefined>>(\n () => Object.fromEntries(items.map((i) => [i.key, i.override])),\n )\n\n const handleSave = (): void => {\n const overrides: Record<string, string> = {}\n for (const [key, color] of Object.entries(draft)) {\n if (color) overrides[key] = color\n }\n onSave(overrides)\n }\n\n return (\n <Dialog open onOpenChange={(open) => { if (!open) onClose() }}>\n <DialogContent className=\"w-full max-w-lg\">\n <DialogHeader>\n <DialogTitle>{t('dashboard:widget.colorsTitle')}</DialogTitle>\n </DialogHeader>\n\n <div className=\"max-h-[60vh] space-y-4 overflow-y-auto py-1\">\n {items.map((item) => (\n <div key={item.key} className=\"space-y-1.5\">\n <div className=\"flex items-center gap-2 text-sm\">\n <span\n className=\"size-3 shrink-0 rounded-full\"\n style={{ backgroundColor: draft[item.key] ?? item.auto }}\n />\n <span className=\"truncate font-medium\">{item.label}</span>\n </div>\n <ColorSwatchPicker\n value={draft[item.key]}\n onChange={(next) =>\n setDraft((prev) => ({ ...prev, [item.key]: next }))\n }\n presets={CHART_COLOR_PRESETS}\n labels={{\n custom: t('dashboard:widget.colorCustom'),\n pick: t('dashboard:widget.colorPick'),\n auto: t('dashboard:widget.colorAuto'),\n }}\n />\n </div>\n ))}\n </div>\n\n <DialogFooter>\n <Button variant=\"outline\" onClick={onClose}>{t('common:cancel')}</Button>\n <Button onClick={handleSave}>{t('common:save')}</Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n )\n}\n","// Dashboard tile rendering one ChartDef. Phase 10 brings:\n// • Per-widget toolbar (step / range / width / SQL toggle) — changes persist\n// via `onUpdate` so a tweak survives reload without re-opening the builder.\n// • Time-series chart (date X-axis, value Y-axis) with multi-series via\n// secondary `groupBy`. Zero-fill happens UI-side regardless of adapter.\n// • KPI mode = `step: 'all'` — sums the single bucket and shows period-over-\n// period delta.\n// • Graceful degradation when the adapter cannot do time-series aggregation\n// (e.g. non-relational DB) — shows a friendly message instead of erroring.\n\nimport * as React from 'react'\nimport {\n MoreHorizontal,\n Pencil,\n Trash2,\n RefreshCw,\n Maximize2,\n Minimize2,\n Code,\n Copy,\n Check,\n FolderSymlink,\n AlertTriangle,\n ArrowUp,\n ArrowDown,\n Palette,\n} from 'lucide-react'\nimport {\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n TimeSeriesChart,\n KpiCard,\n DatePicker,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n Button,\n Input,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n Skeleton,\n paletteFor,\n} from '@modern-admin/ui'\nimport { ReferenceCombobox } from '../reference.js'\nimport type { PropertyJSON } from '../types.js'\nimport type {\n ChartDef,\n ChartDefInput,\n AggregationStep,\n ChartWidth,\n TimeRange,\n TimeRangePreset,\n} from '@modern-admin/core'\nimport { useTimeSeries, useResource } from '../hooks.js'\nimport { useI18n } from '../i18n.js'\nimport { resolveRange } from '../use-dashboard-charts.js'\nimport {\n fillTimeSeries,\n generateBuckets,\n makeLabelFormatter,\n makeTickFormatter,\n} from '../dashboard/time-series.js'\nimport {\n applyTransform,\n transformSeries,\n makeValueFormatter,\n makeAxisFormatter,\n} from '../dashboard/value-format.js'\nimport {\n alignPreviousSeries,\n serverPreviousRangeOf,\n sumSeries,\n computeDelta,\n} from '../dashboard/compare.js'\nimport { ChartSeriesColorsDialog } from './chart-series-colors-dialog.js'\nimport type { TimeSeriesQuery, TimeSeriesSeries } from '../client.js'\nimport type { ChartTransformStep } from '@modern-admin/core'\n\nconst PRESETS: TimeRangePreset[] = ['7d', '30d', '90d', '1y', 'all', 'custom']\nconst STEPS: Exclude<AggregationStep, 'all'>[] = ['day', 'week', 'month', 'year']\n\nexport interface ChartWidgetProps {\n config: ChartDef\n onEdit(): void\n onDelete(): void\n onMove?(): void\n /** Called when the user tweaks step / range / width directly on the widget. */\n onUpdate(input: ChartDefInput): void\n}\n\nexport function ChartWidget({\n config,\n onEdit,\n onDelete,\n onMove,\n onUpdate,\n}: ChartWidgetProps): React.ReactElement {\n const { t, locale } = useI18n()\n\n const isKpi = config.visualisation === 'kpi'\n // KPI charts force `step: 'all'`; the schema enforces this at save time.\n // For very wide presets, automatically coarsen granularity so the point\n // count stays manageable — 3650 daily buckets for 'all' would render an\n // unreadable axis and cause significant memory pressure in Recharts.\n const renderStep: AggregationStep =\n isKpi ? 'all'\n : config.timeRange.preset === 'all' && (config.step === 'day' || config.step === 'week') ? 'month'\n : config.timeRange.preset === '1y' && config.step === 'day' ? 'week'\n : config.step\n\n // Resolve the time-range preset to concrete from/to per render so cards\n // automatically reflect \"now\" as days roll over without re-saving.\n const range = React.useMemo(() => resolveRange(config.timeRange), [config.timeRange])\n\n // Previous-period overlay is only meaningful without a breakdown: top-N is\n // computed independently per window, so grouped series keys aren't stable.\n const compareActive = !isKpi && config.comparePrevious === true && !config.groupBy\n\n // If the saved ChartDef pre-dates the groupByLabelResource feature (i.e.,\n // groupBy is set but groupByLabelResource is not), derive it from the\n // resource's property metadata so labels resolve without requiring a re-save.\n const resourceConfig = useResource(config.resource)\n const effectiveLabelResource = React.useMemo(() => {\n if (config.groupByLabelResource) return config.groupByLabelResource\n if (!config.groupBy || !resourceConfig) return undefined\n const props = resourceConfig.properties\n const prop = props.find((p) => p.path === config.groupBy)\n if (!prop) return undefined\n if (prop.reference) return prop.reference\n // FK heuristic: strip Id / _id suffix and look for a sibling reference prop.\n const base = prop.path.endsWith('_id')\n ? prop.path.slice(0, -3)\n : prop.path.endsWith('Id')\n ? prop.path.slice(0, -2)\n : ''\n if (base) {\n const sibling = props.find((p) => p.path === base && p.reference)\n if (sibling?.reference) return sibling.reference\n }\n return undefined\n }, [config.groupBy, config.groupByLabelResource, resourceConfig])\n\n const query = React.useMemo<TimeSeriesQuery>(\n () => ({\n resource: config.resource,\n dateField: config.dateField,\n step: renderStep as TimeSeriesQuery['step'],\n metric: config.metric,\n from: range.from,\n to: range.to,\n ...(config.field ? { field: config.field } : {}),\n ...(!isKpi && config.groupBy ? { groupBy: config.groupBy } : {}),\n ...(!isKpi && config.groupBy ? { topN: config.topN } : {}),\n ...(!isKpi && config.groupBy && effectiveLabelResource\n ? { groupByLabelResource: effectiveLabelResource }\n : {}),\n ...(Object.keys(config.filters).length ? { filters: config.filters } : {}),\n ...(isKpi || compareActive ? { comparePrevious: true as const } : {}),\n }),\n [config, range, isKpi, compareActive, renderStep, effectiveLabelResource],\n )\n\n const { data, isLoading, isError, refetch, isFetching } = useTimeSeries(query)\n\n const [showSql, setShowSql] = React.useState(false)\n const [sqlCopied, setSqlCopied] = React.useState(false)\n\n // Draft from/to — only committed when the user clicks Apply.\n // Seeded from `config.timeRange` when preset changes to 'custom'.\n const [draftFrom, setDraftFrom] = React.useState(range.from)\n const [draftTo, setDraftTo] = React.useState(range.to)\n\n // Quick filters exposed inline in the toolbar, alongside the date range\n // controls. Each change applies immediately — no separate Apply step.\n const quickFilterPaths = config.quickFilters ?? []\n\n // Mutators — persisted by the parent via `onUpdate(updatedDef)`.\n const update = (patch: Partial<ChartDefInput>): void => {\n onUpdate({ ...config, ...patch, updatedAt: new Date().toISOString() })\n }\n\n const applyQuickFilter = (path: string, value: string): void => {\n const next: Record<string, string> = { ...config.filters }\n if (value === '') delete next[path]\n else next[path] = value\n update({ filters: next })\n }\n\n const onPresetChange = (preset: TimeRangePreset): void => {\n if (preset === 'custom') {\n // Seed draft with the currently resolved window — user can then narrow\n // it and click Apply without triggering an immediate refetch.\n setDraftFrom(range.from)\n setDraftTo(range.to)\n update({\n timeRange: { preset: 'custom', from: range.from, to: range.to } as TimeRange,\n })\n } else {\n update({ timeRange: { preset } as TimeRange })\n }\n }\n\n const applyCustomRange = (): void => {\n if (draftFrom && draftTo) {\n update({\n timeRange: { preset: 'custom', from: draftFrom, to: draftTo } as TimeRange,\n })\n }\n }\n\n const onStepChange = (step: AggregationStep): void => {\n if (step === 'all') return // KPI is selected via the builder, not the toolbar\n update({ step })\n }\n\n const onWidthToggle = (): void => {\n update({ width: (config.width === 'full' ? 'half' : 'full') as ChartWidth })\n }\n\n // ── Render ────────────────────────────────────────────────────────────\n\n const heightClass = isKpi ? 'h-32' : 'h-[320px]'\n\n const resolvedLabels = data?.resolvedLabels\n const seriesLabel = React.useCallback(\n (key: string): string => {\n if (key === '__total__') return t('dashboard:seriesTotal')\n if (key === '__other__') return t('dashboard:seriesOther')\n if (key === '__null__') return t('dashboard:seriesNull')\n return resolvedLabels?.[key] ?? key\n },\n [resolvedLabels, t],\n )\n\n const valueFormatter = React.useMemo(\n () => makeValueFormatter(config.format, locale),\n [config.format, locale],\n )\n const axisValueFormatter = React.useMemo(\n () => makeAxisFormatter(config.format, locale),\n [config.format, locale],\n )\n\n const chartSeries = React.useMemo(() => {\n const primary = transformSeries(\n prepareSeries(data?.series ?? [], range, renderStep, seriesLabel),\n config.transform,\n ).map((s) => {\n const color = config.series?.[s.key]?.color\n return color ? { ...s, color } : s\n })\n if (!compareActive || !data?.previous?.length) return primary\n const prevRange = serverPreviousRangeOf(range)\n if (!prevRange) return primary\n const currentBuckets = generateBuckets(range.from, range.to, renderStep)\n const overlays = transformSeries(\n alignPreviousSeries(data.previous, prevRange, currentBuckets, renderStep),\n config.transform,\n ).map((s) => ({\n key: s.key,\n label: t('dashboard:widget.previousSeries').replace(\n '{label}',\n seriesLabel(s.sourceKey),\n ),\n points: s.points,\n dashed: true,\n hiddenWith: s.sourceKey,\n }))\n return [...primary, ...overlays]\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n data?.series,\n data?.previous,\n range.from,\n range.to,\n renderStep,\n seriesLabel,\n compareActive,\n config.transform,\n config.series,\n t,\n ])\n\n // Period-over-period delta on raw (pre-transform) totals.\n const delta = React.useMemo(\n () =>\n compareActive && data\n ? computeDelta(sumSeries(data.series), sumSeries(data.previous))\n : null,\n [compareActive, data],\n )\n\n const [colorsOpen, setColorsOpen] = React.useState(false)\n // Effective colors for the dialog rows: override or palette by index\n // among primary (non-dashed) series — matches TimeSeriesChart's slots.\n const colorItems = React.useMemo(() => {\n const primary = chartSeries.filter((s) => !('dashed' in s) || !s.dashed)\n const palette = paletteFor(primary.length)\n return primary.map((s, i) => ({\n key: s.key,\n label: s.label,\n override: config.series?.[s.key]?.color,\n auto: palette[i]!,\n }))\n }, [chartSeries, config.series])\n\n const saveSeriesColors = (overrides: Record<string, string>): void => {\n // Preserve overrides for series not currently rendered (other windows /\n // filters may surface different groupBy values).\n const next: Record<string, { color?: string }> = { ...config.series }\n for (const item of colorItems) delete next[item.key]\n for (const [key, color] of Object.entries(overrides)) next[key] = { color }\n update({ series: next })\n setColorsOpen(false)\n }\n\n // Adapter cannot do time-series — friendly message, no toolbar churn.\n const unsupported = data && data.supported === false\n\n return (\n <Card className=\"flex flex-col\">\n <CardHeader className=\"flex flex-row items-center justify-between gap-2 p-3 pb-2 space-y-0 sm:p-6 sm:pb-2\">\n <CardTitle className=\"flex min-w-0 items-center gap-2 text-sm font-medium pr-2\">\n <span className=\"truncate\">{config.title || t('chart:untitled')}</span>\n {delta && (\n <span\n title={t('dashboard:widget.previousPeriod')}\n className={`inline-flex shrink-0 items-center gap-0.5 rounded-full px-1.5 py-0.5 text-xs font-medium tabular-nums ${\n delta.direction === 'up'\n ? 'bg-emerald-500/10 text-emerald-600 dark:text-emerald-400'\n : delta.direction === 'down'\n ? 'bg-rose-500/10 text-rose-600 dark:text-rose-400'\n : 'bg-muted text-muted-foreground'\n }`}\n >\n {delta.direction === 'up' ? (\n <ArrowUp className=\"size-3\" />\n ) : delta.direction === 'down' ? (\n <ArrowDown className=\"size-3\" />\n ) : null}\n {Math.abs(delta.percent)}%\n </span>\n )}\n </CardTitle>\n <div className=\"flex items-center gap-1 shrink-0\">\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-7\"\n onClick={onWidthToggle}\n aria-label={\n config.width === 'full'\n ? t('dashboard:widget.shrink')\n : t('dashboard:widget.expand')\n }\n >\n {config.width === 'full' ? (\n <Minimize2 className=\"size-3.5\" />\n ) : (\n <Maximize2 className=\"size-3.5\" />\n )}\n </Button>\n {data?.sql && (\n <Button\n variant={showSql ? 'secondary' : 'ghost'}\n size=\"icon\"\n className=\"size-7\"\n onClick={() => setShowSql((v) => !v)}\n aria-label={t('dashboard:widget.toggleSql')}\n >\n <Code className=\"size-3.5\" />\n </Button>\n )}\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-7\"\n onClick={() => refetch()}\n disabled={isFetching}\n aria-label={t('common:refresh')}\n >\n <RefreshCw className={`size-3.5 ${isFetching ? 'animate-spin' : ''}`} />\n </Button>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-7\"\n aria-label={t('common:openMenu')}\n >\n <MoreHorizontal className=\"size-3.5\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={onEdit}>\n <Pencil className=\"size-4 mr-2\" />\n {t('chart:editChart')}\n </DropdownMenuItem>\n {!isKpi && (\n <DropdownMenuItem onClick={() => setColorsOpen(true)}>\n <Palette className=\"size-4 mr-2\" />\n {t('dashboard:widget.editColors')}\n </DropdownMenuItem>\n )}\n {onMove && (\n <DropdownMenuItem onClick={onMove}>\n <FolderSymlink className=\"size-4 mr-2\" />\n {t('chart:moveToGroup')}\n </DropdownMenuItem>\n )}\n <DropdownMenuSeparator />\n <DropdownMenuItem\n onClick={onDelete}\n className=\"text-destructive focus:text-destructive\"\n >\n <Trash2 className=\"size-4 mr-2\" />\n {t('chart:deleteChart')}\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n </CardHeader>\n\n <CardContent className=\"flex-1 p-3 pt-0 space-y-3 sm:p-6 sm:pt-0\">\n {/* Toolbar — quick filters + step + range + window display, all in one\n row. Hidden for unsupported adapters because changing knobs would\n have no effect. Quick filters apply immediately on change. */}\n {!unsupported && (\n <div className=\"flex flex-wrap items-center gap-2 text-xs text-muted-foreground\">\n {quickFilterPaths.length > 0 && resourceConfig &&\n quickFilterPaths.map((path) => {\n const prop = resourceConfig.properties.find((p) => p.path === path)\n if (!prop) return null\n return (\n <QuickFilterInput\n key={path}\n property={prop}\n placeholder={prop.label}\n value={config.filters[path] ?? ''}\n onChange={(v) => applyQuickFilter(path, v)}\n />\n )\n })}\n {!isKpi && (\n <Select\n value={config.step === 'all' ? 'day' : config.step}\n onValueChange={(v) => onStepChange(v as AggregationStep)}\n >\n <SelectTrigger\n className=\"h-8 px-2 text-xs w-auto\"\n aria-label={t('chart:step')}\n >\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {STEPS.map((s) => (\n <SelectItem key={s} value={s}>\n {t(`chart:step${cap(s)}`)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )}\n <Select\n value={config.timeRange.preset}\n onValueChange={(v) => onPresetChange(v as TimeRangePreset)}\n >\n <SelectTrigger\n className=\"h-8 px-2 text-xs w-auto\"\n aria-label={t('dashboard:builder.range')}\n >\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {PRESETS.map((p) => (\n <SelectItem key={p} value={p}>\n {t(`dashboard:range.${p}`)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n {config.timeRange.preset === 'custom' ? (\n <>\n <DatePicker\n value={draftFrom}\n onChange={setDraftFrom}\n ariaLabel={t('common:from')}\n openCalendarLabel={t('common:openCalendar')}\n className=\"w-[130px]\"\n inputClassName=\"h-8 text-xs\"\n />\n <span className=\"text-muted-foreground\">—</span>\n <DatePicker\n value={draftTo}\n onChange={setDraftTo}\n ariaLabel={t('common:to')}\n openCalendarLabel={t('common:openCalendar')}\n className=\"w-[130px]\"\n inputClassName=\"h-8 text-xs\"\n />\n <Button\n size=\"sm\"\n className=\"h-8 px-3 shrink-0\"\n onClick={applyCustomRange}\n disabled={!draftFrom || !draftTo}\n aria-label={t('common:apply')}\n >\n <Check className=\"size-3.5 mr-1\" />\n {t('common:apply')}\n </Button>\n </>\n ) : (\n <span className=\"ml-auto tabular-nums\">\n {range.from} — {range.to}\n </span>\n )}\n </div>\n )}\n\n {/* Truncation warning — adapter capped the scan, so the chart reflects\n only a subset of the window. Hidden while loading / unsupported. */}\n {!unsupported && !isError && data?.truncated && (\n <div className=\"flex items-start gap-2 rounded-md border border-amber-500/40 bg-amber-500/10 px-3 py-2 text-xs text-amber-700 dark:text-amber-400\">\n <AlertTriangle className=\"size-3.5 mt-0.5 shrink-0\" />\n <span>{t('dashboard:widget.truncatedWarning')}</span>\n </div>\n )}\n\n {/* Body */}\n {isLoading ? (\n <Skeleton className={`${heightClass} w-full rounded-md`} />\n ) : isError ? (\n <div\n className={`flex items-center justify-center text-sm text-muted-foreground ${heightClass}`}\n >\n {t('chart:loadError')}\n </div>\n ) : unsupported ? (\n <div\n className={`flex items-center justify-center text-center text-sm text-muted-foreground px-4 ${heightClass}`}\n >\n {t('dashboard:widget.unsupported')}\n </div>\n ) : isKpi ? (\n <KpiBody\n data={data}\n transform={config.transform}\n formatNumber={valueFormatter}\n labels={kpiLabels(t)}\n />\n ) : (\n <TimeSeriesChart\n series={chartSeries}\n height={320}\n visualisation={config.visualisation === 'kpi' ? undefined : config.visualisation}\n tickFormatter={makeTickFormatter(renderStep, locale)}\n labelFormatter={makeLabelFormatter(renderStep, locale)}\n valueFormatter={valueFormatter}\n axisValueFormatter={axisValueFormatter}\n labels={{\n noData: t('chart:noData'),\n showAll: t('dashboard:widget.showAll'),\n hideAll: t('dashboard:widget.hideAll'),\n }}\n />\n )}\n\n {/* Captured SQL — only when the user toggled and server returned it. */}\n {data?.sql && showSql && (\n <div className=\"relative\">\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"absolute top-1 right-1 size-6\"\n onClick={() => {\n void navigator.clipboard.writeText(data.sql ?? '')\n setSqlCopied(true)\n setTimeout(() => setSqlCopied(false), 2000)\n }}\n aria-label={sqlCopied ? t('common:copied') : t('common:copy')}\n >\n {sqlCopied\n ? <Check className=\"size-3 text-green-500\" />\n : <Copy className=\"size-3\" />}\n </Button>\n <pre className=\"text-[11px] leading-snug bg-muted/50 border border-border rounded-md p-2 pr-8 overflow-x-auto whitespace-pre\">\n {data.sql}\n </pre>\n </div>\n )}\n </CardContent>\n\n {colorsOpen && (\n <ChartSeriesColorsDialog\n items={colorItems}\n onSave={saveSeriesColors}\n onClose={() => setColorsOpen(false)}\n />\n )}\n </Card>\n )\n}\n\n// ── Helpers ──────────────────────────────────────────────────────────────\n\nconst cap = (s: string): string => s.charAt(0).toUpperCase() + s.slice(1)\n\nconst QF_NONE = '__none__'\n\n/** Compact inline filter input — label is passed as placeholder so no\n * extra row is needed. Matches the `h-7 text-xs` sizing of toolbar controls. */\nfunction QuickFilterInput({\n property,\n placeholder,\n value,\n onChange,\n}: {\n property: PropertyJSON\n placeholder?: string\n value: string\n onChange(next: string): void\n}): React.ReactElement {\n const ph = placeholder ?? property.label\n if (property.reference) {\n return (\n <div className=\"w-36\">\n <ReferenceCombobox\n referenceResourceId={property.reference}\n value={value || null}\n onChange={(next) => onChange(next == null ? '' : String(next))}\n placeholder={ph}\n className=\"h-8 text-xs\"\n />\n </div>\n )\n }\n if (property.availableValues && property.availableValues.length > 0) {\n return (\n <Select\n value={value || QF_NONE}\n onValueChange={(v) => onChange(v === QF_NONE ? '' : v)}\n >\n <SelectTrigger className=\"h-8 px-2 text-xs w-36\">\n <SelectValue placeholder={ph} />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value={QF_NONE}>{ph}</SelectItem>\n {property.availableValues.map((opt) => (\n <SelectItem key={opt.value} value={opt.value}>{opt.label}</SelectItem>\n ))}\n </SelectContent>\n </Select>\n )\n }\n if (property.type === 'boolean') {\n return (\n <Select\n value={value || QF_NONE}\n onValueChange={(v) => onChange(v === QF_NONE ? '' : v)}\n >\n <SelectTrigger className=\"h-8 px-2 text-xs w-36\">\n <SelectValue placeholder={ph} />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value={QF_NONE}>{ph}</SelectItem>\n <SelectItem value=\"true\">true</SelectItem>\n <SelectItem value=\"false\">false</SelectItem>\n </SelectContent>\n </Select>\n )\n }\n const isNumeric =\n property.type === 'number' || property.type === 'float' || property.type === 'currency'\n return (\n <Input\n type={isNumeric ? 'number' : 'text'}\n className=\"h-8 px-2 text-xs w-36\"\n value={value}\n placeholder={ph}\n onChange={(e) => onChange(e.target.value)}\n />\n )\n}\n\n/**\n * Zero-fill every series across the resolved date range and re-tag each\n * with its display label (so legend shows \"Total\" / \"Other\" / actual\n * groupBy values rather than the wire-format internal keys).\n */\nfunction prepareSeries(\n series: ReadonlyArray<TimeSeriesSeries>,\n range: { from: string; to: string },\n step: AggregationStep,\n labelFor: (key: string) => string,\n): { key: string; label: string; points: { date: string; value: number }[] }[] {\n const filled = fillTimeSeries(\n series.map((s) => ({ key: s.key, points: s.points })),\n range.from,\n range.to,\n step as Exclude<AggregationStep, 'all'> | 'all',\n )\n return filled.map((s) => ({\n key: s.key,\n label: labelFor(s.key),\n points: [...s.points],\n }))\n}\n\ninterface KpiBodyProps {\n data: { series: ReadonlyArray<TimeSeriesSeries>; previous?: ReadonlyArray<TimeSeriesSeries> } | undefined\n transform: ReadonlyArray<ChartTransformStep>\n formatNumber: (n: number) => string\n labels: {\n noData: string\n deltaUp: string\n deltaDown: string\n deltaFlat: string\n previousPeriod: string\n }\n}\n\n/** KPI mode summarises the single-bucket response to one scalar. The value\n * transform applies to both windows so the delta stays consistent. */\nfunction KpiBody({ data, transform, formatNumber, labels }: KpiBodyProps): React.ReactElement {\n const raw = sumAll(data?.series)\n const rawPrev = sumAll(data?.previous)\n const value = raw == null ? raw : applyTransform(raw, transform)\n const prev = rawPrev == null ? rawPrev : applyTransform(rawPrev, transform)\n return (\n <KpiCard\n value={value}\n previousValue={prev}\n formatNumber={formatNumber}\n labels={labels}\n />\n )\n}\n\nfunction sumAll(series: ReadonlyArray<TimeSeriesSeries> | undefined): number | null {\n if (!series || series.length === 0) return null\n let total = 0\n for (const s of series) for (const p of s.points) total += p.value\n return total\n}\n\nfunction kpiLabels(t: (key: string) => string): {\n noData: string\n deltaUp: string\n deltaDown: string\n deltaFlat: string\n previousPeriod: string\n} {\n return {\n noData: t('chart:noData'),\n deltaUp: t('dashboard:widget.deltaUp'),\n deltaDown: t('dashboard:widget.deltaDown'),\n deltaFlat: t('dashboard:widget.deltaFlat'),\n previousPeriod: t('dashboard:widget.previousPeriod'),\n }\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{d as n,l as r,p as i,w as a,x as o}from"./floating-layer-DJGCYMex.js";import{a as s,o as c,r as l,t as u}from"./dist-jC1pK2zN.js";import{B as d,V as f,ot as p}from"./index-BvESJd1R.js";var m=e(t(),1),h=1,g=.9,_=.8,v=.17,y=.1,b=.999,x=.9999,ee=.99,S=/[\\\/_+.#"@\[\(\{&]/,C=/[\\\/_+.#"@\[\(\{&]/g,w=/[\s-]/,T=/[\s-]/g;function E(e,t,n,r,i,a,o){if(a===t.length)return i===e.length?h:ee;var s=`${i},${a}`;if(o[s]!==void 0)return o[s];for(var c=r.charAt(a),l=n.indexOf(c,i),u=0,d,f,p,m;l>=0;)d=E(e,t,n,r,l+1,a+1,o),d>u&&(l===i?d*=h:S.test(e.charAt(l-1))?(d*=_,p=e.slice(i,l-1).match(C),p&&i>0&&(d*=b**+p.length)):w.test(e.charAt(l-1))?(d*=g,m=e.slice(i,l-1).match(T),m&&i>0&&(d*=b**+m.length)):(d*=v,i>0&&(d*=b**+(l-i))),e.charAt(l)!==t.charAt(a)&&(d*=x)),(d<y&&n.charAt(l-1)===r.charAt(a+1)||r.charAt(a+1)===r.charAt(a)&&n.charAt(l-1)!==r.charAt(a))&&(f=E(e,t,n,r,l+1,a+2,o),f*y>d&&(d=f*y)),d>u&&(u=d),l=n.indexOf(c,l+1);return o[s]=u,u}function D(e){return e.toLowerCase().replace(T,` `)}function O(e,t,n){return e=n&&n.length>0?`${e+` `+n.join(` `)}`:e,E(e,t,D(e),D(t),0,0,{})}var k=`[cmdk-group=""]`,A=`[cmdk-group-items=""]`,te=`[cmdk-group-heading=""]`,ne=`[cmdk-item=""]`,j=`${ne}:not([aria-disabled="true"])`,M=`cmdk-item-select`,N=`data-value`,re=(e,t,n)=>O(e,t,n),P=m.createContext(void 0),F=()=>m.useContext(P),ie=m.createContext(void 0),I=()=>m.useContext(ie),L=m.createContext(void 0),R=m.forwardRef((e,t)=>{let r=Y(()=>({search:``,value:e.value??e.defaultValue??``,selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}})),a=Y(()=>new Set),o=Y(()=>new Map),s=Y(()=>new Map),c=Y(()=>new Set),l=q(e),{label:u,children:d,value:f,onValueChange:p,filter:h,shouldFilter:g,loop:_,disablePointerSelection:v=!1,vimBindings:y=!0,...b}=e,x=n(),ee=n(),S=n(),C=m.useRef(null),w=le();J(()=>{if(f!==void 0){let e=f.trim();r.current.value=e,T.emit()}},[f]),J(()=>{w(6,L)},[]);let T=m.useMemo(()=>({subscribe:e=>(c.current.add(e),()=>c.current.delete(e)),snapshot:()=>r.current,setState:(e,t,n)=>{var i,a,o;if(!Object.is(r.current[e],t)){if(r.current[e]=t,e===`search`)I(),O(),w(1,F);else if(e===`value`){if(document.activeElement.hasAttribute(`cmdk-input`)||document.activeElement.hasAttribute(`cmdk-root`)){let e=document.getElementById(S);e?e.focus():(i=document.getElementById(x))==null||i.focus()}if(w(7,()=>{r.current.selectedItemId=R()?.id,T.emit()}),n||w(5,L),l.current?.value!==void 0){let e=t??``;(o=(a=l.current).onValueChange)==null||o.call(a,e);return}}T.emit()}},emit:()=>{c.current.forEach(e=>e())}}),[]),E=m.useMemo(()=>({value:(e,t,n)=>{t!==s.current.get(e)?.value&&(s.current.set(e,{value:t,keywords:n}),r.current.filtered.items.set(e,D(t,n)),w(2,()=>{O(),T.emit()}))},item:(e,t)=>(a.current.add(e),t&&(o.current.has(t)?o.current.get(t).add(e):o.current.set(t,new Set([e]))),w(3,()=>{I(),O(),r.current.value||F(),T.emit()}),()=>{s.current.delete(e),a.current.delete(e),r.current.filtered.items.delete(e);let t=R();w(4,()=>{I(),t?.getAttribute(`id`)===e&&F(),T.emit()})}),group:e=>(o.current.has(e)||o.current.set(e,new Set),()=>{s.current.delete(e),o.current.delete(e)}),filter:()=>l.current.shouldFilter,label:u||e[`aria-label`],getDisablePointerSelection:()=>l.current.disablePointerSelection,listId:x,inputId:S,labelId:ee,listInnerRef:C}),[]);function D(e,t){let n=l.current?.filter??re;return e?n(e,r.current.search,t):0}function O(){if(!r.current.search||l.current.shouldFilter===!1)return;let e=r.current.filtered.items,t=[];r.current.filtered.groups.forEach(n=>{let r=o.current.get(n),i=0;r.forEach(t=>{let n=e.get(t);i=Math.max(n,i)}),t.push([n,i])});let n=C.current;z().sort((t,n)=>{let r=t.getAttribute(`id`),i=n.getAttribute(`id`);return(e.get(i)??0)-(e.get(r)??0)}).forEach(e=>{let t=e.closest(A);t?t.appendChild(e.parentElement===t?e:e.closest(`${A} > *`)):n.appendChild(e.parentElement===n?e:e.closest(`${A} > *`))}),t.sort((e,t)=>t[1]-e[1]).forEach(e=>{let t=C.current?.querySelector(`${k}[${N}="${encodeURIComponent(e[0])}"]`);t?.parentElement.appendChild(t)})}function F(){let e=z().find(e=>e.getAttribute(`aria-disabled`)!==`true`)?.getAttribute(N);T.setState(`value`,e||void 0)}function I(){if(!r.current.search||l.current.shouldFilter===!1){r.current.filtered.count=a.current.size;return}r.current.filtered.groups=new Set;let e=0;for(let t of a.current){let n=D(s.current.get(t)?.value??``,s.current.get(t)?.keywords??[]);r.current.filtered.items.set(t,n),n>0&&e++}for(let[e,t]of o.current)for(let n of t)if(r.current.filtered.items.get(n)>0){r.current.filtered.groups.add(e);break}r.current.filtered.count=e}function L(){var e;let t=R();t&&(t.parentElement?.firstChild===t&&((e=t.closest(k)?.querySelector(te))==null||e.scrollIntoView({block:`nearest`})),t.scrollIntoView({block:`nearest`}))}function R(){return C.current?.querySelector(`${ne}[aria-selected="true"]`)}function z(){return Array.from(C.current?.querySelectorAll(j)||[])}function B(e){let t=z()[e];t&&T.setState(`value`,t.getAttribute(N))}function V(e){var t;let n=R(),r=z(),i=r.findIndex(e=>e===n),a=r[i+e];(t=l.current)!=null&&t.loop&&(a=i+e<0?r[r.length-1]:i+e===r.length?r[0]:r[i+e]),a&&T.setState(`value`,a.getAttribute(N))}function H(e){let t=R()?.closest(k),n;for(;t&&!n;)t=e>0?oe(t,k):se(t,k),n=t?.querySelector(j);n?T.setState(`value`,n.getAttribute(N)):V(e)}let U=()=>B(z().length-1),W=e=>{e.preventDefault(),e.metaKey?U():e.altKey?H(1):V(1)},G=e=>{e.preventDefault(),e.metaKey?B(0):e.altKey?H(-1):V(-1)};return m.createElement(i.div,{ref:t,tabIndex:-1,...b,"cmdk-root":``,onKeyDown:e=>{var t;(t=b.onKeyDown)==null||t.call(b,e);let n=e.nativeEvent.isComposing||e.keyCode===229;if(!(e.defaultPrevented||n))switch(e.key){case`n`:case`j`:y&&e.ctrlKey&&W(e);break;case`ArrowDown`:W(e);break;case`p`:case`k`:y&&e.ctrlKey&&G(e);break;case`ArrowUp`:G(e);break;case`Home`:e.preventDefault(),B(0);break;case`End`:e.preventDefault(),U();break;case`Enter`:{e.preventDefault();let t=R();if(t){let e=new Event(M);t.dispatchEvent(e)}}}}},m.createElement(`label`,{"cmdk-label":``,htmlFor:E.inputId,id:E.labelId,style:de},u),Z(e,e=>m.createElement(ie.Provider,{value:T},m.createElement(P.Provider,{value:E},e))))}),z=m.forwardRef((e,t)=>{let r=n(),a=m.useRef(null),s=m.useContext(L),c=F(),l=q(e),u=l.current?.forceMount??s?.forceMount;J(()=>{if(!u)return c.item(r,s?.id)},[u]);let d=ce(r,a,[e.value,e.children,a],e.keywords),f=I(),p=X(e=>e.value&&e.value===d.current),h=X(e=>u||c.filter()===!1?!0:!e.search||e.filtered.items.get(r)>0);m.useEffect(()=>{let t=a.current;if(!(!t||e.disabled))return t.addEventListener(M,g),()=>t.removeEventListener(M,g)},[h,e.onSelect,e.disabled]);function g(){var e,t;_(),(t=(e=l.current).onSelect)==null||t.call(e,d.current)}function _(){f.setState(`value`,d.current,!0)}if(!h)return null;let{disabled:v,value:y,onSelect:b,forceMount:x,keywords:ee,...S}=e;return m.createElement(i.div,{ref:o(a,t),...S,id:r,"cmdk-item":``,role:`option`,"aria-disabled":!!v,"aria-selected":!!p,"data-disabled":!!v,"data-selected":!!p,onPointerMove:v||c.getDisablePointerSelection()?void 0:_,onClick:v?void 0:g},e.children)}),B=m.forwardRef((e,t)=>{let{heading:r,children:a,forceMount:s,...c}=e,l=n(),u=m.useRef(null),d=m.useRef(null),f=n(),p=F(),h=X(e=>s||p.filter()===!1?!0:!e.search||e.filtered.groups.has(l));J(()=>p.group(l),[]),ce(l,u,[e.value,e.heading,d]);let g=m.useMemo(()=>({id:l,forceMount:s}),[s]);return m.createElement(i.div,{ref:o(u,t),...c,"cmdk-group":``,role:`presentation`,hidden:!h||void 0},r&&m.createElement(`div`,{ref:d,"cmdk-group-heading":``,"aria-hidden":!0,id:f},r),Z(e,e=>m.createElement(`div`,{"cmdk-group-items":``,role:`group`,"aria-labelledby":r?f:void 0},m.createElement(L.Provider,{value:g},e))))}),V=m.forwardRef((e,t)=>{let{alwaysRender:n,...r}=e,a=m.useRef(null),s=X(e=>!e.search);return!n&&!s?null:m.createElement(i.div,{ref:o(a,t),...r,"cmdk-separator":``,role:`separator`})}),H=m.forwardRef((e,t)=>{let{onValueChange:n,...r}=e,a=e.value!=null,o=I(),s=X(e=>e.search),c=X(e=>e.selectedItemId),l=F();return m.useEffect(()=>{e.value!=null&&o.setState(`search`,e.value)},[e.value]),m.createElement(i.input,{ref:t,...r,"cmdk-input":``,autoComplete:`off`,autoCorrect:`off`,spellCheck:!1,"aria-autocomplete":`list`,role:`combobox`,"aria-expanded":!0,"aria-controls":l.listId,"aria-labelledby":l.labelId,"aria-activedescendant":c,id:l.inputId,type:`text`,value:a?e.value:s,onChange:e=>{a||o.setState(`search`,e.target.value),n?.(e.target.value)}})}),U=m.forwardRef((e,t)=>{let{children:n,label:r=`Suggestions`,...a}=e,s=m.useRef(null),c=m.useRef(null),l=X(e=>e.selectedItemId),u=F();return m.useEffect(()=>{if(c.current&&s.current){let e=c.current,t=s.current,n,r=new ResizeObserver(()=>{n=requestAnimationFrame(()=>{let n=e.offsetHeight;t.style.setProperty(`--cmdk-list-height`,n.toFixed(1)+`px`)})});return r.observe(e),()=>{cancelAnimationFrame(n),r.unobserve(e)}}},[]),m.createElement(i.div,{ref:o(s,t),...a,"cmdk-list":``,role:`listbox`,tabIndex:-1,"aria-activedescendant":l,"aria-label":r,id:u.listId},Z(e,e=>m.createElement(`div`,{ref:o(c,u.listInnerRef),"cmdk-list-sizer":``},e)))}),W=m.forwardRef((e,t)=>{let{open:n,onOpenChange:r,overlayClassName:i,contentClassName:a,container:o,...d}=e;return m.createElement(u,{open:n,onOpenChange:r},m.createElement(c,{container:o},m.createElement(s,{"cmdk-overlay":``,className:i}),m.createElement(l,{"aria-label":e.label,"cmdk-dialog":``,className:a},m.createElement(R,{ref:t,...d}))))}),G=m.forwardRef((e,t)=>X(e=>e.filtered.count===0)?m.createElement(i.div,{ref:t,...e,"cmdk-empty":``,role:`presentation`}):null),ae=m.forwardRef((e,t)=>{let{progress:n,children:r,label:a=`Loading...`,...o}=e;return m.createElement(i.div,{ref:t,...o,"cmdk-loading":``,role:`progressbar`,"aria-valuenow":n,"aria-valuemin":0,"aria-valuemax":100,"aria-label":a},Z(e,e=>m.createElement(`div`,{"aria-hidden":!0},e)))}),K=Object.assign(R,{List:U,Item:z,Input:H,Group:B,Separator:V,Dialog:W,Empty:G,Loading:ae});function oe(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return n;n=n.nextElementSibling}}function se(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return n;n=n.previousElementSibling}}function q(e){let t=m.useRef(e);return J(()=>{t.current=e}),t}var J=typeof window>`u`?m.useEffect:m.useLayoutEffect;function Y(e){let t=m.useRef();return t.current===void 0&&(t.current=e()),t}function X(e){let t=I(),n=()=>e(t.snapshot());return m.useSyncExternalStore(t.subscribe,n,n)}function ce(e,t,n,r=[]){let i=m.useRef(),a=F();return J(()=>{var o;let s=(()=>{for(let e of n){if(typeof e==`string`)return e.trim();if(typeof e==`object`&&`current`in e)return e.current?e.current.textContent?.trim():i.current}})(),c=r.map(e=>e.trim());a.value(e,s,c),(o=t.current)==null||o.setAttribute(N,s),i.current=s}),i}var le=()=>{let[e,t]=m.useState(),n=Y(()=>new Map);return J(()=>{n.current.forEach(e=>e()),n.current=new Map},[e]),(e,r)=>{n.current.set(e,r),t({})}};function ue(e){let t=e.type;return typeof t==`function`?t(e.props):`render`in t?t.render(e.props):e}function Z({asChild:e,children:t},n){return e&&m.isValidElement(t)?m.cloneElement(ue(t),{ref:t.ref},n(t.props.children)):n(t)}var de={position:`absolute`,width:`1px`,height:`1px`,padding:`0`,margin:`-1px`,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,whiteSpace:`nowrap`,borderWidth:`0`},Q=a(),$=m.forwardRef(({className:e,...t},n)=>(0,Q.jsx)(K,{ref:n,className:r(`flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground`,e),...t}));$.displayName=K.displayName;var fe=({children:e,...t})=>(0,Q.jsx)(d,{...t,children:(0,Q.jsx)(f,{className:`overflow-hidden p-0 shadow-lg`,children:(0,Q.jsx)($,{className:`[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5`,children:e})})}),pe=m.forwardRef(({className:e,...t},n)=>(0,Q.jsxs)(`div`,{className:`flex shrink-0 items-center border-b border-border px-3`,"cmdk-input-wrapper":``,children:[(0,Q.jsx)(p,{className:`mr-2 h-4 w-4 shrink-0 opacity-50`}),(0,Q.jsx)(K.Input,{ref:n,className:r(`flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50`,e),...t})]}));pe.displayName=K.Input.displayName;var me=m.forwardRef(({className:e,...t},n)=>(0,Q.jsx)(K.List,{ref:n,className:r(`max-h-[300px] min-h-0 overscroll-contain overflow-y-auto overflow-x-hidden`,e),...t}));me.displayName=K.List.displayName;var he=m.forwardRef((e,t)=>(0,Q.jsx)(K.Empty,{ref:t,className:`py-6 text-center text-sm`,...e}));he.displayName=K.Empty.displayName;var ge=m.forwardRef(({className:e,...t},n)=>(0,Q.jsx)(K.Group,{ref:n,className:r(`overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground`,e),...t}));ge.displayName=K.Group.displayName;var _e=m.forwardRef(({className:e,...t},n)=>(0,Q.jsx)(K.Separator,{ref:n,className:r(`-mx-1 h-px bg-border/40`,e),...t}));_e.displayName=K.Separator.displayName;var ve=m.forwardRef(({className:e,...t},n)=>(0,Q.jsx)(K.Item,{ref:n,className:r(`relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0`,e),...t}));ve.displayName=K.Item.displayName;var ye=({className:e,...t})=>(0,Q.jsx)(`span`,{className:r(`ml-auto text-xs tracking-widest text-muted-foreground`,e),...t});ye.displayName=`CommandShortcut`;export{pe as a,_e as c,ge as i,fe as n,ve as o,he as r,me as s,$ as t};
2
+ //# sourceMappingURL=command-Cw-hTtpk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-Cw-hTtpk.js","names":["Y","k","B","K","ae","H","D","G","w.Root","w.Portal","w.Overlay","w.Content"],"sources":["../../../../../node_modules/.bun/cmdk@1.1.1+ae2b4604ef263bc9/node_modules/cmdk/dist/chunk-NZJY6EH4.mjs","../../../../../node_modules/.bun/cmdk@1.1.1+ae2b4604ef263bc9/node_modules/cmdk/dist/index.mjs","../../../../ui/src/components/command.tsx"],"sourcesContent":["var U=1,Y=.9,H=.8,J=.17,p=.1,u=.999,$=.9999;var k=.99,m=/[\\\\\\/_+.#\"@\\[\\(\\{&]/,B=/[\\\\\\/_+.#\"@\\[\\(\\{&]/g,K=/[\\s-]/,X=/[\\s-]/g;function G(_,C,h,P,A,f,O){if(f===C.length)return A===_.length?U:k;var T=`${A},${f}`;if(O[T]!==void 0)return O[T];for(var L=P.charAt(f),c=h.indexOf(L,A),S=0,E,N,R,M;c>=0;)E=G(_,C,h,P,c+1,f+1,O),E>S&&(c===A?E*=U:m.test(_.charAt(c-1))?(E*=H,R=_.slice(A,c-1).match(B),R&&A>0&&(E*=Math.pow(u,R.length))):K.test(_.charAt(c-1))?(E*=Y,M=_.slice(A,c-1).match(X),M&&A>0&&(E*=Math.pow(u,M.length))):(E*=J,A>0&&(E*=Math.pow(u,c-A))),_.charAt(c)!==C.charAt(f)&&(E*=$)),(E<p&&h.charAt(c-1)===P.charAt(f+1)||P.charAt(f+1)===P.charAt(f)&&h.charAt(c-1)!==P.charAt(f))&&(N=G(_,C,h,P,c+1,f+2,O),N*p>E&&(E=N*p)),E>S&&(S=E),c=h.indexOf(L,c+1);return O[T]=S,S}function D(_){return _.toLowerCase().replace(X,\" \")}function W(_,C,h){return _=h&&h.length>0?`${_+\" \"+h.join(\" \")}`:_,G(_,C,D(_),D(C),0,0,{})}export{W as a};\n","\"use client\";import{a as ae}from\"./chunk-NZJY6EH4.mjs\";import*as w from\"@radix-ui/react-dialog\";import*as t from\"react\";import{Primitive as D}from\"@radix-ui/react-primitive\";import{useId as H}from\"@radix-ui/react-id\";import{composeRefs as G}from\"@radix-ui/react-compose-refs\";var N='[cmdk-group=\"\"]',Y='[cmdk-group-items=\"\"]',be='[cmdk-group-heading=\"\"]',le='[cmdk-item=\"\"]',ce=`${le}:not([aria-disabled=\"true\"])`,Z=\"cmdk-item-select\",T=\"data-value\",Re=(r,o,n)=>ae(r,o,n),ue=t.createContext(void 0),K=()=>t.useContext(ue),de=t.createContext(void 0),ee=()=>t.useContext(de),fe=t.createContext(void 0),me=t.forwardRef((r,o)=>{let n=L(()=>{var e,a;return{search:\"\",value:(a=(e=r.value)!=null?e:r.defaultValue)!=null?a:\"\",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}}}),u=L(()=>new Set),c=L(()=>new Map),d=L(()=>new Map),f=L(()=>new Set),p=pe(r),{label:b,children:m,value:R,onValueChange:x,filter:C,shouldFilter:S,loop:A,disablePointerSelection:ge=!1,vimBindings:j=!0,...O}=r,$=H(),q=H(),_=H(),I=t.useRef(null),v=ke();k(()=>{if(R!==void 0){let e=R.trim();n.current.value=e,E.emit()}},[R]),k(()=>{v(6,ne)},[]);let E=t.useMemo(()=>({subscribe:e=>(f.current.add(e),()=>f.current.delete(e)),snapshot:()=>n.current,setState:(e,a,s)=>{var i,l,g,y;if(!Object.is(n.current[e],a)){if(n.current[e]=a,e===\"search\")J(),z(),v(1,W);else if(e===\"value\"){if(document.activeElement.hasAttribute(\"cmdk-input\")||document.activeElement.hasAttribute(\"cmdk-root\")){let h=document.getElementById(_);h?h.focus():(i=document.getElementById($))==null||i.focus()}if(v(7,()=>{var h;n.current.selectedItemId=(h=M())==null?void 0:h.id,E.emit()}),s||v(5,ne),((l=p.current)==null?void 0:l.value)!==void 0){let h=a!=null?a:\"\";(y=(g=p.current).onValueChange)==null||y.call(g,h);return}}E.emit()}},emit:()=>{f.current.forEach(e=>e())}}),[]),U=t.useMemo(()=>({value:(e,a,s)=>{var i;a!==((i=d.current.get(e))==null?void 0:i.value)&&(d.current.set(e,{value:a,keywords:s}),n.current.filtered.items.set(e,te(a,s)),v(2,()=>{z(),E.emit()}))},item:(e,a)=>(u.current.add(e),a&&(c.current.has(a)?c.current.get(a).add(e):c.current.set(a,new Set([e]))),v(3,()=>{J(),z(),n.current.value||W(),E.emit()}),()=>{d.current.delete(e),u.current.delete(e),n.current.filtered.items.delete(e);let s=M();v(4,()=>{J(),(s==null?void 0:s.getAttribute(\"id\"))===e&&W(),E.emit()})}),group:e=>(c.current.has(e)||c.current.set(e,new Set),()=>{d.current.delete(e),c.current.delete(e)}),filter:()=>p.current.shouldFilter,label:b||r[\"aria-label\"],getDisablePointerSelection:()=>p.current.disablePointerSelection,listId:$,inputId:_,labelId:q,listInnerRef:I}),[]);function te(e,a){var i,l;let s=(l=(i=p.current)==null?void 0:i.filter)!=null?l:Re;return e?s(e,n.current.search,a):0}function z(){if(!n.current.search||p.current.shouldFilter===!1)return;let e=n.current.filtered.items,a=[];n.current.filtered.groups.forEach(i=>{let l=c.current.get(i),g=0;l.forEach(y=>{let h=e.get(y);g=Math.max(h,g)}),a.push([i,g])});let s=I.current;V().sort((i,l)=>{var h,F;let g=i.getAttribute(\"id\"),y=l.getAttribute(\"id\");return((h=e.get(y))!=null?h:0)-((F=e.get(g))!=null?F:0)}).forEach(i=>{let l=i.closest(Y);l?l.appendChild(i.parentElement===l?i:i.closest(`${Y} > *`)):s.appendChild(i.parentElement===s?i:i.closest(`${Y} > *`))}),a.sort((i,l)=>l[1]-i[1]).forEach(i=>{var g;let l=(g=I.current)==null?void 0:g.querySelector(`${N}[${T}=\"${encodeURIComponent(i[0])}\"]`);l==null||l.parentElement.appendChild(l)})}function W(){let e=V().find(s=>s.getAttribute(\"aria-disabled\")!==\"true\"),a=e==null?void 0:e.getAttribute(T);E.setState(\"value\",a||void 0)}function J(){var a,s,i,l;if(!n.current.search||p.current.shouldFilter===!1){n.current.filtered.count=u.current.size;return}n.current.filtered.groups=new Set;let e=0;for(let g of u.current){let y=(s=(a=d.current.get(g))==null?void 0:a.value)!=null?s:\"\",h=(l=(i=d.current.get(g))==null?void 0:i.keywords)!=null?l:[],F=te(y,h);n.current.filtered.items.set(g,F),F>0&&e++}for(let[g,y]of c.current)for(let h of y)if(n.current.filtered.items.get(h)>0){n.current.filtered.groups.add(g);break}n.current.filtered.count=e}function ne(){var a,s,i;let e=M();e&&(((a=e.parentElement)==null?void 0:a.firstChild)===e&&((i=(s=e.closest(N))==null?void 0:s.querySelector(be))==null||i.scrollIntoView({block:\"nearest\"})),e.scrollIntoView({block:\"nearest\"}))}function M(){var e;return(e=I.current)==null?void 0:e.querySelector(`${le}[aria-selected=\"true\"]`)}function V(){var e;return Array.from(((e=I.current)==null?void 0:e.querySelectorAll(ce))||[])}function X(e){let s=V()[e];s&&E.setState(\"value\",s.getAttribute(T))}function Q(e){var g;let a=M(),s=V(),i=s.findIndex(y=>y===a),l=s[i+e];(g=p.current)!=null&&g.loop&&(l=i+e<0?s[s.length-1]:i+e===s.length?s[0]:s[i+e]),l&&E.setState(\"value\",l.getAttribute(T))}function re(e){let a=M(),s=a==null?void 0:a.closest(N),i;for(;s&&!i;)s=e>0?we(s,N):De(s,N),i=s==null?void 0:s.querySelector(ce);i?E.setState(\"value\",i.getAttribute(T)):Q(e)}let oe=()=>X(V().length-1),ie=e=>{e.preventDefault(),e.metaKey?oe():e.altKey?re(1):Q(1)},se=e=>{e.preventDefault(),e.metaKey?X(0):e.altKey?re(-1):Q(-1)};return t.createElement(D.div,{ref:o,tabIndex:-1,...O,\"cmdk-root\":\"\",onKeyDown:e=>{var s;(s=O.onKeyDown)==null||s.call(O,e);let a=e.nativeEvent.isComposing||e.keyCode===229;if(!(e.defaultPrevented||a))switch(e.key){case\"n\":case\"j\":{j&&e.ctrlKey&&ie(e);break}case\"ArrowDown\":{ie(e);break}case\"p\":case\"k\":{j&&e.ctrlKey&&se(e);break}case\"ArrowUp\":{se(e);break}case\"Home\":{e.preventDefault(),X(0);break}case\"End\":{e.preventDefault(),oe();break}case\"Enter\":{e.preventDefault();let i=M();if(i){let l=new Event(Z);i.dispatchEvent(l)}}}}},t.createElement(\"label\",{\"cmdk-label\":\"\",htmlFor:U.inputId,id:U.labelId,style:Te},b),B(r,e=>t.createElement(de.Provider,{value:E},t.createElement(ue.Provider,{value:U},e))))}),he=t.forwardRef((r,o)=>{var _,I;let n=H(),u=t.useRef(null),c=t.useContext(fe),d=K(),f=pe(r),p=(I=(_=f.current)==null?void 0:_.forceMount)!=null?I:c==null?void 0:c.forceMount;k(()=>{if(!p)return d.item(n,c==null?void 0:c.id)},[p]);let b=ve(n,u,[r.value,r.children,u],r.keywords),m=ee(),R=P(v=>v.value&&v.value===b.current),x=P(v=>p||d.filter()===!1?!0:v.search?v.filtered.items.get(n)>0:!0);t.useEffect(()=>{let v=u.current;if(!(!v||r.disabled))return v.addEventListener(Z,C),()=>v.removeEventListener(Z,C)},[x,r.onSelect,r.disabled]);function C(){var v,E;S(),(E=(v=f.current).onSelect)==null||E.call(v,b.current)}function S(){m.setState(\"value\",b.current,!0)}if(!x)return null;let{disabled:A,value:ge,onSelect:j,forceMount:O,keywords:$,...q}=r;return t.createElement(D.div,{ref:G(u,o),...q,id:n,\"cmdk-item\":\"\",role:\"option\",\"aria-disabled\":!!A,\"aria-selected\":!!R,\"data-disabled\":!!A,\"data-selected\":!!R,onPointerMove:A||d.getDisablePointerSelection()?void 0:S,onClick:A?void 0:C},r.children)}),Ee=t.forwardRef((r,o)=>{let{heading:n,children:u,forceMount:c,...d}=r,f=H(),p=t.useRef(null),b=t.useRef(null),m=H(),R=K(),x=P(S=>c||R.filter()===!1?!0:S.search?S.filtered.groups.has(f):!0);k(()=>R.group(f),[]),ve(f,p,[r.value,r.heading,b]);let C=t.useMemo(()=>({id:f,forceMount:c}),[c]);return t.createElement(D.div,{ref:G(p,o),...d,\"cmdk-group\":\"\",role:\"presentation\",hidden:x?void 0:!0},n&&t.createElement(\"div\",{ref:b,\"cmdk-group-heading\":\"\",\"aria-hidden\":!0,id:m},n),B(r,S=>t.createElement(\"div\",{\"cmdk-group-items\":\"\",role:\"group\",\"aria-labelledby\":n?m:void 0},t.createElement(fe.Provider,{value:C},S))))}),ye=t.forwardRef((r,o)=>{let{alwaysRender:n,...u}=r,c=t.useRef(null),d=P(f=>!f.search);return!n&&!d?null:t.createElement(D.div,{ref:G(c,o),...u,\"cmdk-separator\":\"\",role:\"separator\"})}),Se=t.forwardRef((r,o)=>{let{onValueChange:n,...u}=r,c=r.value!=null,d=ee(),f=P(m=>m.search),p=P(m=>m.selectedItemId),b=K();return t.useEffect(()=>{r.value!=null&&d.setState(\"search\",r.value)},[r.value]),t.createElement(D.input,{ref:o,...u,\"cmdk-input\":\"\",autoComplete:\"off\",autoCorrect:\"off\",spellCheck:!1,\"aria-autocomplete\":\"list\",role:\"combobox\",\"aria-expanded\":!0,\"aria-controls\":b.listId,\"aria-labelledby\":b.labelId,\"aria-activedescendant\":p,id:b.inputId,type:\"text\",value:c?r.value:f,onChange:m=>{c||d.setState(\"search\",m.target.value),n==null||n(m.target.value)}})}),Ce=t.forwardRef((r,o)=>{let{children:n,label:u=\"Suggestions\",...c}=r,d=t.useRef(null),f=t.useRef(null),p=P(m=>m.selectedItemId),b=K();return t.useEffect(()=>{if(f.current&&d.current){let m=f.current,R=d.current,x,C=new ResizeObserver(()=>{x=requestAnimationFrame(()=>{let S=m.offsetHeight;R.style.setProperty(\"--cmdk-list-height\",S.toFixed(1)+\"px\")})});return C.observe(m),()=>{cancelAnimationFrame(x),C.unobserve(m)}}},[]),t.createElement(D.div,{ref:G(d,o),...c,\"cmdk-list\":\"\",role:\"listbox\",tabIndex:-1,\"aria-activedescendant\":p,\"aria-label\":u,id:b.listId},B(r,m=>t.createElement(\"div\",{ref:G(f,b.listInnerRef),\"cmdk-list-sizer\":\"\"},m)))}),xe=t.forwardRef((r,o)=>{let{open:n,onOpenChange:u,overlayClassName:c,contentClassName:d,container:f,...p}=r;return t.createElement(w.Root,{open:n,onOpenChange:u},t.createElement(w.Portal,{container:f},t.createElement(w.Overlay,{\"cmdk-overlay\":\"\",className:c}),t.createElement(w.Content,{\"aria-label\":r.label,\"cmdk-dialog\":\"\",className:d},t.createElement(me,{ref:o,...p}))))}),Ie=t.forwardRef((r,o)=>P(u=>u.filtered.count===0)?t.createElement(D.div,{ref:o,...r,\"cmdk-empty\":\"\",role:\"presentation\"}):null),Pe=t.forwardRef((r,o)=>{let{progress:n,children:u,label:c=\"Loading...\",...d}=r;return t.createElement(D.div,{ref:o,...d,\"cmdk-loading\":\"\",role:\"progressbar\",\"aria-valuenow\":n,\"aria-valuemin\":0,\"aria-valuemax\":100,\"aria-label\":c},B(r,f=>t.createElement(\"div\",{\"aria-hidden\":!0},f)))}),_e=Object.assign(me,{List:Ce,Item:he,Input:Se,Group:Ee,Separator:ye,Dialog:xe,Empty:Ie,Loading:Pe});function we(r,o){let n=r.nextElementSibling;for(;n;){if(n.matches(o))return n;n=n.nextElementSibling}}function De(r,o){let n=r.previousElementSibling;for(;n;){if(n.matches(o))return n;n=n.previousElementSibling}}function pe(r){let o=t.useRef(r);return k(()=>{o.current=r}),o}var k=typeof window==\"undefined\"?t.useEffect:t.useLayoutEffect;function L(r){let o=t.useRef();return o.current===void 0&&(o.current=r()),o}function P(r){let o=ee(),n=()=>r(o.snapshot());return t.useSyncExternalStore(o.subscribe,n,n)}function ve(r,o,n,u=[]){let c=t.useRef(),d=K();return k(()=>{var b;let f=(()=>{var m;for(let R of n){if(typeof R==\"string\")return R.trim();if(typeof R==\"object\"&&\"current\"in R)return R.current?(m=R.current.textContent)==null?void 0:m.trim():c.current}})(),p=u.map(m=>m.trim());d.value(r,f,p),(b=o.current)==null||b.setAttribute(T,f),c.current=f}),c}var ke=()=>{let[r,o]=t.useState(),n=L(()=>new Map);return k(()=>{n.current.forEach(u=>u()),n.current=new Map},[r]),(u,c)=>{n.current.set(u,c),o({})}};function Me(r){let o=r.type;return typeof o==\"function\"?o(r.props):\"render\"in o?o.render(r.props):r}function B({asChild:r,children:o},n){return r&&t.isValidElement(o)?t.cloneElement(Me(o),{ref:o.ref},n(o.props.children)):n(o)}var Te={position:\"absolute\",width:\"1px\",height:\"1px\",padding:\"0\",margin:\"-1px\",overflow:\"hidden\",clip:\"rect(0, 0, 0, 0)\",whiteSpace:\"nowrap\",borderWidth:\"0\"};export{_e as Command,xe as CommandDialog,Ie as CommandEmpty,Ee as CommandGroup,Se as CommandInput,he as CommandItem,Ce as CommandList,Pe as CommandLoading,me as CommandRoot,ye as CommandSeparator,Re as defaultFilter,P as useCommandState};\n","import * as React from 'react'\nimport { Command as CommandPrimitive } from 'cmdk'\nimport { Search } from 'lucide-react'\nimport { cn } from '../lib/utils.js'\nimport { Dialog, DialogContent } from './dialog.js'\n\nexport const Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n 'flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground',\n className,\n )}\n {...props}\n />\n))\nCommand.displayName = CommandPrimitive.displayName\n\nexport const CommandDialog = ({\n children,\n ...props\n}: React.ComponentProps<typeof Dialog>): React.ReactElement => (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0 shadow-lg\">\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n)\n\nexport const CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div className=\"flex shrink-0 items-center border-b border-border px-3\" cmdk-input-wrapper=\"\">\n <Search className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n 'flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n />\n </div>\n))\nCommandInput.displayName = CommandPrimitive.Input.displayName\n\nexport const CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n // `min-h-0` so the list — not the search input above it — is what gives\n // way when the popover is height-capped to the visible viewport.\n className={cn(\n 'max-h-[300px] min-h-0 overscroll-contain overflow-y-auto overflow-x-hidden',\n className,\n )}\n {...props}\n />\n))\nCommandList.displayName = CommandPrimitive.List.displayName\n\nexport const CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n <CommandPrimitive.Empty ref={ref} className=\"py-6 text-center text-sm\" {...props} />\n))\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName\n\nexport const CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n 'overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground',\n className,\n )}\n {...props}\n />\n))\nCommandGroup.displayName = CommandPrimitive.Group.displayName\n\nexport const CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator ref={ref} className={cn('-mx-1 h-px bg-border/40', className)} {...props} />\n))\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName\n\nexport const CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n 'relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0',\n className,\n )}\n {...props}\n />\n))\nCommandItem.displayName = CommandPrimitive.Item.displayName\n\nexport const CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>): React.ReactElement => (\n <span\n className={cn('ml-auto text-xs tracking-widest text-muted-foreground', className)}\n {...props}\n />\n)\nCommandShortcut.displayName = 'CommandShortcut'\n"],"x_google_ignoreList":[0,1],"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{n as i}from"./refresh-cw-DHvUQTMb.js";import{s as a}from"./dist-CmyV2PEd.js";import{a as o,i as s,n as c,s as l,t as u}from"./calendar-DDv0Qalf.js";import{a as d,i as f,n as p}from"./useQueries-Dch5Ggjr.js";import{nt as m}from"./index-BvESJd1R.js";var h=e(t(),1),g=r(),_=`yyyy-MM-dd`,v=`yyyy-MM-dd'T'HH:mm`,y=`yyyy-MM-dd HH:mm`;function b(e){if(!e)return;let t=e.length<=10?s(e,_,new Date):c(e);return Number.isNaN(t.getTime())?void 0:t}function x(e,t){let n=e.trim();if(n===``)return;let r=t===`datetime`?[v,y,`yyyy-MM-dd'T'HH:mm:ss`,_]:[_];for(let e of r){let t=s(n,e,new Date);if(l(t))return t}let i=c(n);return l(i)?i:null}function S(e,t){return e?o(e,t===`datetime`?y:_):``}function C(e,t){return t===`datetime`?e.toISOString():o(e,_)}function w({value:e,onChange:t,mode:r=`date`,disabled:s,placeholder:c,className:l,inputClassName:_,ariaLabel:v,openCalendarLabel:y=`Open calendar`,timeLabel:w=`Time`}){let[T,E]=h.useState(!1),D=b(e),[O,k]=h.useState(()=>S(D,r)),A=h.useRef(S(D,r));h.useEffect(()=>{let e=S(D,r);e!==A.current&&(A.current=e,k(e))},[e,r]);let j=D?o(D,`HH:mm`):`00:00`,M=e=>{if(!e){A.current=``,k(``),t(``);return}if(r===`datetime`){let[t,n]=j.split(`:`).map(Number);e.setHours(t??0,n??0,0,0)}let n=S(e,r);A.current=n,k(n),t(C(e,r))},N=e=>{if(!D)return;let[n,i]=e.split(`:`).map(Number),a=new Date(D);a.setHours(n??0,i??0,0,0);let o=S(a,r);A.current=o,k(o),t(C(a,r))},P=e=>{let n=e.target.value;k(n);let i=x(n,r);i===void 0?(A.current=``,t(``)):i&&(A.current=S(i,r),t(C(i,r)))},F=()=>{if(x(O,r)===null){let e=S(D,r);A.current=e,k(e)}},I=c??(r===`datetime`?`YYYY-MM-DD HH:MM`:`YYYY-MM-DD`);return(0,g.jsxs)(p,{open:T,onOpenChange:E,children:[(0,g.jsxs)(`div`,{className:n(`relative w-full`,l),children:[(0,g.jsx)(m,{type:`text`,inputMode:`numeric`,value:O,onChange:P,onBlur:F,placeholder:I,disabled:s,"aria-label":v,className:n(_,`pr-10`)}),(0,g.jsx)(d,{asChild:!0,children:(0,g.jsx)(a,{type:`button`,variant:`ghost`,size:`icon`,disabled:s,"aria-label":y,className:`absolute right-1 top-1/2 size-8 -translate-y-1/2 text-muted-foreground hover:text-foreground`,children:(0,g.jsx)(i,{className:`size-4`})})})]}),(0,g.jsxs)(f,{className:`w-auto p-0`,align:`start`,children:[(0,g.jsx)(u,{mode:`single`,selected:D,defaultMonth:D,onSelect:e=>{M(e),r===`date`&&E(!1)},autoFocus:!0}),r===`datetime`&&(0,g.jsxs)(`div`,{className:`flex items-center gap-2 border-t border-border p-3`,children:[(0,g.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:w}),(0,g.jsx)(m,{type:`time`,value:j,disabled:!D,onChange:e=>N(e.target.value),className:`h-8 w-32`})]})]})]})}w.displayName=`DatePicker`;export{w as t};
2
+ //# sourceMappingURL=date-picker-DQ4XOgO6.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"date-picker-C4HcgidQ.js","names":[],"sources":["../../../../ui/src/components/date-picker.tsx"],"sourcesContent":["// Popover-driven date / datetime input. Single picker handles both modes:\n// pass `mode=\"datetime\"` to surface an HH:MM time input below the calendar.\n//\n// Value is an ISO string: `yyyy-MM-dd` for dates, a full UTC instant\n// (`toISOString()`) for datetime — offset-less wall time would be re-read in\n// the server's timezone and drift. Incoming values may be in any ISO shape;\n// only what we emit is normalised. The trigger is a real text\n// input so users can also type the date manually; clicks on the trailing\n// calendar icon open the popover with the inline picker.\n\nimport * as React from 'react'\nimport { format, isValid, parse, parseISO } from 'date-fns'\nimport { Calendar as CalendarIcon } from 'lucide-react'\nimport { cn } from '../lib/utils.js'\nimport { Button } from './button.js'\nimport { Calendar } from './calendar.js'\nimport { Input } from './input.js'\nimport { Popover, PopoverContent, PopoverTrigger } from './popover.js'\n\nexport type DatePickerMode = 'date' | 'datetime'\n\nexport interface DatePickerProps {\n value: string | null | undefined\n onChange(next: string): void\n mode?: DatePickerMode\n disabled?: boolean\n placeholder?: string\n /** Applied to the outer wrapper div (controls width, etc.). */\n className?: string\n /** Applied to the inner text Input — use to override height / font size. */\n inputClassName?: string\n /** ARIA label forwarded to the trigger input (mobile users / screen readers). */\n ariaLabel?: string\n /** ARIA label for the calendar icon button. Default: \"Open calendar\". */\n openCalendarLabel?: string\n /** Label for the time input shown in datetime mode. Default: \"Time\". */\n timeLabel?: string\n}\n\nconst DATE_FMT = 'yyyy-MM-dd'\nconst DATETIME_FMT = \"yyyy-MM-dd'T'HH:mm\"\n// Friendlier display format for the datetime input — space instead of `T`.\nconst DATETIME_DISPLAY_FMT = 'yyyy-MM-dd HH:mm'\n\nfunction parseValue(value: string | null | undefined): Date | undefined {\n if (!value) return undefined\n const direct = value.length <= 10 ? parse(value, DATE_FMT, new Date()) : parseISO(value)\n return Number.isNaN(direct.getTime()) ? undefined : direct\n}\n\n/**\n * Try to parse a manually-typed string in any of the supported shapes.\n * Returns `undefined` on blank, `null` on invalid (non-blank) input so the\n * caller can distinguish \"cleared\" from \"typo\".\n */\nfunction parseTyped(raw: string, mode: DatePickerMode): Date | undefined | null {\n const trimmed = raw.trim()\n if (trimmed === '') return undefined\n const candidates =\n mode === 'datetime'\n ? [DATETIME_FMT, DATETIME_DISPLAY_FMT, \"yyyy-MM-dd'T'HH:mm:ss\", DATE_FMT]\n : [DATE_FMT]\n for (const fmt of candidates) {\n const parsed = parse(trimmed, fmt, new Date())\n if (isValid(parsed)) return parsed\n }\n // Last resort: ISO with timezone, etc.\n const iso = parseISO(trimmed)\n return isValid(iso) ? iso : null\n}\n\nfunction formatForInput(date: Date | undefined, mode: DatePickerMode): string {\n if (!date) return ''\n return format(date, mode === 'datetime' ? DATETIME_DISPLAY_FMT : DATE_FMT)\n}\n\n// Datetime values go out as a UTC instant, never as browser-local wall time.\n// A `yyyy-MM-ddTHH:mm` string carries no offset, so whoever resolves it later\n// (`new Date(...)` on the server) reads it in *that process's* timezone — a\n// browser/server timezone gap then shifts the stored instant on every save,\n// cumulatively. `date` mode keeps the bare `yyyy-MM-dd`: a date-only string is\n// spec'd to parse as UTC midnight, and it has no instant to preserve.\nfunction formatForApi(date: Date, mode: DatePickerMode): string {\n return mode === 'datetime' ? date.toISOString() : format(date, DATE_FMT)\n}\n\nexport function DatePicker({\n value,\n onChange,\n mode = 'date',\n disabled,\n placeholder,\n className,\n inputClassName,\n ariaLabel,\n openCalendarLabel = 'Open calendar',\n timeLabel = 'Time',\n}: DatePickerProps): React.ReactElement {\n const [open, setOpen] = React.useState(false)\n const date = parseValue(value)\n // Local draft for the text input — keeps user typing intact even when\n // intermediate strings don't yet parse.\n const [draft, setDraft] = React.useState(() => formatForInput(date, mode))\n // Re-sync draft whenever the canonical value changes from outside (e.g.\n // calendar selection or form reset). Compare via formatted shape so a noop\n // update doesn't clobber what the user is typing.\n const lastFormatted = React.useRef(formatForInput(date, mode))\n React.useEffect(() => {\n const next = formatForInput(date, mode)\n if (next !== lastFormatted.current) {\n lastFormatted.current = next\n setDraft(next)\n }\n }, [value, mode]) // eslint-disable-line react-hooks/exhaustive-deps\n\n const time = date ? format(date, 'HH:mm') : '00:00'\n\n const commitDate = (next: Date | undefined): void => {\n if (!next) {\n lastFormatted.current = ''\n setDraft('')\n onChange('')\n return\n }\n if (mode === 'datetime') {\n const [h, m] = time.split(':').map(Number)\n next.setHours(h ?? 0, m ?? 0, 0, 0)\n }\n const formatted = formatForInput(next, mode)\n lastFormatted.current = formatted\n setDraft(formatted)\n onChange(formatForApi(next, mode))\n }\n\n const setTime = (raw: string): void => {\n if (!date) return\n const [h, m] = raw.split(':').map(Number)\n const next = new Date(date)\n next.setHours(h ?? 0, m ?? 0, 0, 0)\n const formatted = formatForInput(next, mode)\n lastFormatted.current = formatted\n setDraft(formatted)\n onChange(formatForApi(next, mode))\n }\n\n const handleInputChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n const text = e.target.value\n setDraft(text)\n const parsed = parseTyped(text, mode)\n if (parsed === undefined) {\n // cleared\n lastFormatted.current = ''\n onChange('')\n } else if (parsed) {\n lastFormatted.current = formatForInput(parsed, mode)\n onChange(formatForApi(parsed, mode))\n }\n // parsed === null → keep draft, don't fire onChange yet\n }\n\n const handleInputBlur: React.FocusEventHandler<HTMLInputElement> = () => {\n // On blur, if the draft is invalid, snap back to the canonical value.\n const parsed = parseTyped(draft, mode)\n if (parsed === null) {\n const restored = formatForInput(date, mode)\n lastFormatted.current = restored\n setDraft(restored)\n }\n }\n\n const inputPlaceholder =\n placeholder ?? (mode === 'datetime' ? 'YYYY-MM-DD HH:MM' : 'YYYY-MM-DD')\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <div className={cn('relative w-full', className)}>\n <Input\n type=\"text\"\n inputMode=\"numeric\"\n value={draft}\n onChange={handleInputChange}\n onBlur={handleInputBlur}\n placeholder={inputPlaceholder}\n disabled={disabled}\n aria-label={ariaLabel}\n className={cn(inputClassName, 'pr-10')}\n />\n <PopoverTrigger asChild>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n disabled={disabled}\n aria-label={openCalendarLabel}\n className=\"absolute right-1 top-1/2 size-8 -translate-y-1/2 text-muted-foreground hover:text-foreground\"\n >\n <CalendarIcon className=\"size-4\" />\n </Button>\n </PopoverTrigger>\n </div>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={date}\n defaultMonth={date}\n onSelect={(d) => {\n commitDate(d)\n if (mode === 'date') setOpen(false)\n }}\n autoFocus\n />\n {mode === 'datetime' && (\n <div className=\"flex items-center gap-2 border-t border-border p-3\">\n <span className=\"text-xs text-muted-foreground\">{timeLabel}</span>\n <Input\n type=\"time\"\n value={time}\n disabled={!date}\n onChange={(e) => setTime(e.target.value)}\n className=\"h-8 w-32\"\n />\n </div>\n )}\n </PopoverContent>\n </Popover>\n )\n}\nDatePicker.displayName = 'DatePicker'\n"],"mappings":"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"}
1
+ {"version":3,"file":"date-picker-DQ4XOgO6.js","names":[],"sources":["../../../../ui/src/components/date-picker.tsx"],"sourcesContent":["// Popover-driven date / datetime input. Single picker handles both modes:\n// pass `mode=\"datetime\"` to surface an HH:MM time input below the calendar.\n//\n// Value is an ISO string: `yyyy-MM-dd` for dates, a full UTC instant\n// (`toISOString()`) for datetime — offset-less wall time would be re-read in\n// the server's timezone and drift. Incoming values may be in any ISO shape;\n// only what we emit is normalised. The trigger is a real text\n// input so users can also type the date manually; clicks on the trailing\n// calendar icon open the popover with the inline picker.\n\nimport * as React from 'react'\nimport { format, isValid, parse, parseISO } from 'date-fns'\nimport { Calendar as CalendarIcon } from 'lucide-react'\nimport { cn } from '../lib/utils.js'\nimport { Button } from './button.js'\nimport { Calendar } from './calendar.js'\nimport { Input } from './input.js'\nimport { Popover, PopoverContent, PopoverTrigger } from './popover.js'\n\nexport type DatePickerMode = 'date' | 'datetime'\n\nexport interface DatePickerProps {\n value: string | null | undefined\n onChange(next: string): void\n mode?: DatePickerMode\n disabled?: boolean\n placeholder?: string\n /** Applied to the outer wrapper div (controls width, etc.). */\n className?: string\n /** Applied to the inner text Input — use to override height / font size. */\n inputClassName?: string\n /** ARIA label forwarded to the trigger input (mobile users / screen readers). */\n ariaLabel?: string\n /** ARIA label for the calendar icon button. Default: \"Open calendar\". */\n openCalendarLabel?: string\n /** Label for the time input shown in datetime mode. Default: \"Time\". */\n timeLabel?: string\n}\n\nconst DATE_FMT = 'yyyy-MM-dd'\nconst DATETIME_FMT = \"yyyy-MM-dd'T'HH:mm\"\n// Friendlier display format for the datetime input — space instead of `T`.\nconst DATETIME_DISPLAY_FMT = 'yyyy-MM-dd HH:mm'\n\nfunction parseValue(value: string | null | undefined): Date | undefined {\n if (!value) return undefined\n const direct = value.length <= 10 ? parse(value, DATE_FMT, new Date()) : parseISO(value)\n return Number.isNaN(direct.getTime()) ? undefined : direct\n}\n\n/**\n * Try to parse a manually-typed string in any of the supported shapes.\n * Returns `undefined` on blank, `null` on invalid (non-blank) input so the\n * caller can distinguish \"cleared\" from \"typo\".\n */\nfunction parseTyped(raw: string, mode: DatePickerMode): Date | undefined | null {\n const trimmed = raw.trim()\n if (trimmed === '') return undefined\n const candidates =\n mode === 'datetime'\n ? [DATETIME_FMT, DATETIME_DISPLAY_FMT, \"yyyy-MM-dd'T'HH:mm:ss\", DATE_FMT]\n : [DATE_FMT]\n for (const fmt of candidates) {\n const parsed = parse(trimmed, fmt, new Date())\n if (isValid(parsed)) return parsed\n }\n // Last resort: ISO with timezone, etc.\n const iso = parseISO(trimmed)\n return isValid(iso) ? iso : null\n}\n\nfunction formatForInput(date: Date | undefined, mode: DatePickerMode): string {\n if (!date) return ''\n return format(date, mode === 'datetime' ? DATETIME_DISPLAY_FMT : DATE_FMT)\n}\n\n// Datetime values go out as a UTC instant, never as browser-local wall time.\n// A `yyyy-MM-ddTHH:mm` string carries no offset, so whoever resolves it later\n// (`new Date(...)` on the server) reads it in *that process's* timezone — a\n// browser/server timezone gap then shifts the stored instant on every save,\n// cumulatively. `date` mode keeps the bare `yyyy-MM-dd`: a date-only string is\n// spec'd to parse as UTC midnight, and it has no instant to preserve.\nfunction formatForApi(date: Date, mode: DatePickerMode): string {\n return mode === 'datetime' ? date.toISOString() : format(date, DATE_FMT)\n}\n\nexport function DatePicker({\n value,\n onChange,\n mode = 'date',\n disabled,\n placeholder,\n className,\n inputClassName,\n ariaLabel,\n openCalendarLabel = 'Open calendar',\n timeLabel = 'Time',\n}: DatePickerProps): React.ReactElement {\n const [open, setOpen] = React.useState(false)\n const date = parseValue(value)\n // Local draft for the text input — keeps user typing intact even when\n // intermediate strings don't yet parse.\n const [draft, setDraft] = React.useState(() => formatForInput(date, mode))\n // Re-sync draft whenever the canonical value changes from outside (e.g.\n // calendar selection or form reset). Compare via formatted shape so a noop\n // update doesn't clobber what the user is typing.\n const lastFormatted = React.useRef(formatForInput(date, mode))\n React.useEffect(() => {\n const next = formatForInput(date, mode)\n if (next !== lastFormatted.current) {\n lastFormatted.current = next\n setDraft(next)\n }\n }, [value, mode]) // eslint-disable-line react-hooks/exhaustive-deps\n\n const time = date ? format(date, 'HH:mm') : '00:00'\n\n const commitDate = (next: Date | undefined): void => {\n if (!next) {\n lastFormatted.current = ''\n setDraft('')\n onChange('')\n return\n }\n if (mode === 'datetime') {\n const [h, m] = time.split(':').map(Number)\n next.setHours(h ?? 0, m ?? 0, 0, 0)\n }\n const formatted = formatForInput(next, mode)\n lastFormatted.current = formatted\n setDraft(formatted)\n onChange(formatForApi(next, mode))\n }\n\n const setTime = (raw: string): void => {\n if (!date) return\n const [h, m] = raw.split(':').map(Number)\n const next = new Date(date)\n next.setHours(h ?? 0, m ?? 0, 0, 0)\n const formatted = formatForInput(next, mode)\n lastFormatted.current = formatted\n setDraft(formatted)\n onChange(formatForApi(next, mode))\n }\n\n const handleInputChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n const text = e.target.value\n setDraft(text)\n const parsed = parseTyped(text, mode)\n if (parsed === undefined) {\n // cleared\n lastFormatted.current = ''\n onChange('')\n } else if (parsed) {\n lastFormatted.current = formatForInput(parsed, mode)\n onChange(formatForApi(parsed, mode))\n }\n // parsed === null → keep draft, don't fire onChange yet\n }\n\n const handleInputBlur: React.FocusEventHandler<HTMLInputElement> = () => {\n // On blur, if the draft is invalid, snap back to the canonical value.\n const parsed = parseTyped(draft, mode)\n if (parsed === null) {\n const restored = formatForInput(date, mode)\n lastFormatted.current = restored\n setDraft(restored)\n }\n }\n\n const inputPlaceholder =\n placeholder ?? (mode === 'datetime' ? 'YYYY-MM-DD HH:MM' : 'YYYY-MM-DD')\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <div className={cn('relative w-full', className)}>\n <Input\n type=\"text\"\n inputMode=\"numeric\"\n value={draft}\n onChange={handleInputChange}\n onBlur={handleInputBlur}\n placeholder={inputPlaceholder}\n disabled={disabled}\n aria-label={ariaLabel}\n className={cn(inputClassName, 'pr-10')}\n />\n <PopoverTrigger asChild>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n disabled={disabled}\n aria-label={openCalendarLabel}\n className=\"absolute right-1 top-1/2 size-8 -translate-y-1/2 text-muted-foreground hover:text-foreground\"\n >\n <CalendarIcon className=\"size-4\" />\n </Button>\n </PopoverTrigger>\n </div>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={date}\n defaultMonth={date}\n onSelect={(d) => {\n commitDate(d)\n if (mode === 'date') setOpen(false)\n }}\n autoFocus\n />\n {mode === 'datetime' && (\n <div className=\"flex items-center gap-2 border-t border-border p-3\">\n <span className=\"text-xs text-muted-foreground\">{timeLabel}</span>\n <Input\n type=\"time\"\n value={time}\n disabled={!date}\n onChange={(e) => setTime(e.target.value)}\n className=\"h-8 w-32\"\n />\n </div>\n )}\n </PopoverContent>\n </Popover>\n )\n}\nDatePicker.displayName = 'DatePicker'\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{a as e,n as t}from"./createLucideIcon-CUopU_LC.js";import{C as n,S as r,T as i,c as a,g as o,l as s,p as c,u as l,v as u,w as d}from"./floating-layer-DJGCYMex.js";var f=e(t(),1),p=e=>typeof e==`boolean`?`${e}`:e===0?`0`:e,m=l,h=(e,t)=>n=>{if(t?.variants==null)return m(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=p(t)||p(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return m(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},g=d(),_=h(`inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0`,{variants:{variant:{default:`bg-primary text-primary-foreground hover:bg-primary/90`,destructive:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,outline:`border border-input bg-background hover:bg-accent hover:text-accent-foreground`,"outline-primary":`border border-primary/40 bg-background text-primary hover:bg-primary/10 hover:border-primary/60`,"outline-destructive":`border border-destructive/40 bg-background text-destructive hover:bg-destructive/10 hover:border-destructive/60`,secondary:`bg-secondary text-secondary-foreground hover:bg-secondary/80`,ghost:`hover:bg-accent hover:text-accent-foreground`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-9 px-4 py-2`,sm:`h-8 rounded-md px-3 text-xs`,lg:`h-10 rounded-md px-6`,icon:`h-9 w-9`}},defaultVariants:{variant:`default`,size:`default`}}),v=f.forwardRef(({className:e,variant:t,size:n,asChild:r=!1,...i},a)=>(0,g.jsx)(r?u:`button`,{ref:a,className:s(_({variant:t,size:n}),e),...i}));v.displayName=`Button`;var y=e(i(),1);function b(e){let[t,n]=f.useState(void 0);return o(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});let t=new ResizeObserver(t=>{if(!Array.isArray(t)||!t.length)return;let r=t[0],i,a;if(`borderBoxSize`in r){let e=r.borderBoxSize,t=Array.isArray(e)?e[0]:e;i=t.inlineSize,a=t.blockSize}else i=e.offsetWidth,a=e.offsetHeight;n({width:i,height:a})});return t.observe(e,{box:`border-box`}),()=>t.unobserve(e)}else n(void 0)},[e]),t}var x=[`top`,`right`,`bottom`,`left`],S=Math.min,C=Math.max,w=Math.round,T=Math.floor,E=e=>({x:e,y:e}),D={left:`right`,right:`left`,bottom:`top`,top:`bottom`};function O(e,t,n){return C(e,S(t,n))}function k(e,t){return typeof e==`function`?e(t):e}function A(e){return e.split(`-`)[0]}function j(e){return e.split(`-`)[1]}function M(e){return e===`x`?`y`:`x`}function N(e){return e===`y`?`height`:`width`}function P(e){let t=e[0];return t===`t`||t===`b`?`y`:`x`}function F(e){return M(P(e))}function I(e,t,n){n===void 0&&(n=!1);let r=j(e),i=F(e),a=N(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=V(o)),[o,V(o)]}function ee(e){let t=V(e);return[L(e),t,L(t)]}function L(e){return e.includes(`start`)?e.replace(`start`,`end`):e.replace(`end`,`start`)}var R=[`left`,`right`],z=[`right`,`left`],B=[`top`,`bottom`],te=[`bottom`,`top`];function ne(e,t,n){switch(e){case`top`:case`bottom`:return n?t?z:R:t?R:z;case`left`:case`right`:return t?B:te;default:return[]}}function re(e,t,n,r){let i=j(e),a=ne(A(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map(L)))),a}function V(e){let t=A(e);return D[t]+e.slice(t.length)}function ie(e){return{top:0,right:0,bottom:0,left:0,...e}}function ae(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:ie(e)}function oe(e){let{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function se(e,t,n){let{reference:r,floating:i}=e,a=P(t),o=F(t),s=N(o),c=A(t),l=a===`y`,u=r.x+r.width/2-i.width/2,d=r.y+r.height/2-i.height/2,f=r[s]/2-i[s]/2,p;switch(c){case`top`:p={x:u,y:r.y-i.height};break;case`bottom`:p={x:u,y:r.y+r.height};break;case`right`:p={x:r.x+r.width,y:d};break;case`left`:p={x:r.x-i.width,y:d};break;default:p={x:r.x,y:r.y}}switch(j(t)){case`start`:p[o]-=f*(n&&l?-1:1);break;case`end`:p[o]+=f*(n&&l?-1:1);break}return p}async function ce(e,t){t===void 0&&(t={});let{x:n,y:r,platform:i,rects:a,elements:o,strategy:s}=e,{boundary:c=`clippingAncestors`,rootBoundary:l=`viewport`,elementContext:u=`floating`,altBoundary:d=!1,padding:f=0}=k(t,e),p=ae(f),m=o[d?u===`floating`?`reference`:`floating`:u],h=oe(await i.getClippingRect({element:await(i.isElement==null?void 0:i.isElement(m))??!0?m:m.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(o.floating)),boundary:c,rootBoundary:l,strategy:s})),g=u===`floating`?{x:n,y:r,width:a.floating.width,height:a.floating.height}:a.reference,_=await(i.getOffsetParent==null?void 0:i.getOffsetParent(o.floating)),v=await(i.isElement==null?void 0:i.isElement(_))&&await(i.getScale==null?void 0:i.getScale(_))||{x:1,y:1},y=oe(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:g,offsetParent:_,strategy:s}):g);return{top:(h.top-y.top+p.top)/v.y,bottom:(y.bottom-h.bottom+p.bottom)/v.y,left:(h.left-y.left+p.left)/v.x,right:(y.right-h.right+p.right)/v.x}}var le=50,ue=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=o.detectOverflow?o:{...o,detectOverflow:ce},c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=se(l,r,c),f=r,p=0,m={};for(let n=0;n<a.length;n++){let h=a[n];if(!h)continue;let{name:g,fn:_}=h,{x:v,y,data:b,reset:x}=await _({x:u,y:d,initialPlacement:r,placement:f,strategy:i,middlewareData:m,rects:l,platform:s,elements:{reference:e,floating:t}});u=v??u,d=y??d,m[g]={...m[g],...b},x&&p<le&&(p++,typeof x==`object`&&(x.placement&&(f=x.placement),x.rects&&(l=x.rects===!0?await o.getElementRects({reference:e,floating:t,strategy:i}):x.rects),{x:u,y:d}=se(l,f,c)),n=-1)}return{x:u,y:d,placement:f,strategy:i,middlewareData:m}},de=e=>({name:`arrow`,options:e,async fn(t){let{x:n,y:r,placement:i,rects:a,platform:o,elements:s,middlewareData:c}=t,{element:l,padding:u=0}=k(e,t)||{};if(l==null)return{};let d=ae(u),f={x:n,y:r},p=F(i),m=N(p),h=await o.getDimensions(l),g=p===`y`,_=g?`top`:`left`,v=g?`bottom`:`right`,y=g?`clientHeight`:`clientWidth`,b=a.reference[m]+a.reference[p]-f[p]-a.floating[m],x=f[p]-a.reference[p],C=await(o.getOffsetParent==null?void 0:o.getOffsetParent(l)),w=C?C[y]:0;(!w||!await(o.isElement==null?void 0:o.isElement(C)))&&(w=s.floating[y]||a.floating[m]);let T=b/2-x/2,E=w/2-h[m]/2-1,D=S(d[_],E),A=S(d[v],E),M=D,P=w-h[m]-A,I=w/2-h[m]/2+T,ee=O(M,I,P),L=!c.arrow&&j(i)!=null&&I!==ee&&a.reference[m]/2-(I<M?D:A)-h[m]/2<0,R=L?I<M?I-M:I-P:0;return{[p]:f[p]+R,data:{[p]:ee,centerOffset:I-ee-R,...L&&{alignmentOffset:R}},reset:L}}}),fe=function(e){return e===void 0&&(e={}),{name:`flip`,options:e,async fn(t){var n;let{placement:r,middlewareData:i,rects:a,initialPlacement:o,platform:s,elements:c}=t,{mainAxis:l=!0,crossAxis:u=!0,fallbackPlacements:d,fallbackStrategy:f=`bestFit`,fallbackAxisSideDirection:p=`none`,flipAlignment:m=!0,...h}=k(e,t);if((n=i.arrow)!=null&&n.alignmentOffset)return{};let g=A(r),_=P(o),v=A(o)===o,y=await(s.isRTL==null?void 0:s.isRTL(c.floating)),b=d||(v||!m?[V(o)]:ee(o)),x=p!==`none`;!d&&x&&b.push(...re(o,m,p,y));let S=[o,...b],C=await s.detectOverflow(t,h),w=[],T=i.flip?.overflows||[];if(l&&w.push(C[g]),u){let e=I(r,a,y);w.push(C[e[0]],C[e[1]])}if(T=[...T,{placement:r,overflows:w}],!w.every(e=>e<=0)){let e=(i.flip?.index||0)+1,t=S[e];if(t&&(!(u===`alignment`&&_!==P(t))||T.every(e=>P(e.placement)!==_||e.overflows[0]>0)))return{data:{index:e,overflows:T},reset:{placement:t}};let n=T.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0]?.placement;if(!n)switch(f){case`bestFit`:{let e=T.filter(e=>{if(x){let t=P(e.placement);return t===_||t===`y`}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0]?.[0];e&&(n=e);break}case`initialPlacement`:n=o;break}if(r!==n)return{reset:{placement:n}}}return{}}}};function pe(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function me(e){return x.some(t=>e[t]>=0)}var he=function(e){return e===void 0&&(e={}),{name:`hide`,options:e,async fn(t){let{rects:n,platform:r}=t,{strategy:i=`referenceHidden`,...a}=k(e,t);switch(i){case`referenceHidden`:{let e=pe(await r.detectOverflow(t,{...a,elementContext:`reference`}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:me(e)}}}case`escaped`:{let e=pe(await r.detectOverflow(t,{...a,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:me(e)}}}default:return{}}}}},ge=new Set([`left`,`top`]);async function _e(e,t){let{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=A(n),s=j(n),c=P(n)===`y`,l=ge.has(o)?-1:1,u=a&&c?-1:1,d=k(t,e),{mainAxis:f,crossAxis:p,alignmentAxis:m}=typeof d==`number`?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return s&&typeof m==`number`&&(p=s===`end`?m*-1:m),c?{x:p*u,y:f*l}:{x:f*l,y:p*u}}var ve=function(e){return e===void 0&&(e=0),{name:`offset`,options:e,async fn(t){var n;let{x:r,y:i,placement:a,middlewareData:o}=t,s=await _e(t,e);return a===o.offset?.placement&&(n=o.arrow)!=null&&n.alignmentOffset?{}:{x:r+s.x,y:i+s.y,data:{...s,placement:a}}}}},ye=function(e){return e===void 0&&(e={}),{name:`shift`,options:e,async fn(t){let{x:n,y:r,placement:i,platform:a}=t,{mainAxis:o=!0,crossAxis:s=!1,limiter:c={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=k(e,t),u={x:n,y:r},d=await a.detectOverflow(t,l),f=P(A(i)),p=M(f),m=u[p],h=u[f];if(o){let e=p===`y`?`top`:`left`,t=p===`y`?`bottom`:`right`,n=m+d[e],r=m-d[t];m=O(n,m,r)}if(s){let e=f===`y`?`top`:`left`,t=f===`y`?`bottom`:`right`,n=h+d[e],r=h-d[t];h=O(n,h,r)}let g=c.fn({...t,[p]:m,[f]:h});return{...g,data:{x:g.x-n,y:g.y-r,enabled:{[p]:o,[f]:s}}}}}},be=function(e){return e===void 0&&(e={}),{options:e,fn(t){let{x:n,y:r,placement:i,rects:a,middlewareData:o}=t,{offset:s=0,mainAxis:c=!0,crossAxis:l=!0}=k(e,t),u={x:n,y:r},d=P(i),f=M(d),p=u[f],m=u[d],h=k(s,t),g=typeof h==`number`?{mainAxis:h,crossAxis:0}:{mainAxis:0,crossAxis:0,...h};if(c){let e=f===`y`?`height`:`width`,t=a.reference[f]-a.floating[e]+g.mainAxis,n=a.reference[f]+a.reference[e]-g.mainAxis;p<t?p=t:p>n&&(p=n)}if(l){let e=f===`y`?`width`:`height`,t=ge.has(A(i)),n=a.reference[d]-a.floating[e]+(t&&o.offset?.[d]||0)+(t?0:g.crossAxis),r=a.reference[d]+a.reference[e]+(t?0:o.offset?.[d]||0)-(t?g.crossAxis:0);m<n?m=n:m>r&&(m=r)}return{[f]:p,[d]:m}}}},xe=function(e){return e===void 0&&(e={}),{name:`size`,options:e,async fn(t){var n,r;let{placement:i,rects:a,platform:o,elements:s}=t,{apply:c=()=>{},...l}=k(e,t),u=await o.detectOverflow(t,l),d=A(i),f=j(i),p=P(i)===`y`,{width:m,height:h}=a.floating,g,_;d===`top`||d===`bottom`?(g=d,_=f===(await(o.isRTL==null?void 0:o.isRTL(s.floating))?`start`:`end`)?`left`:`right`):(_=d,g=f===`end`?`top`:`bottom`);let v=h-u.top-u.bottom,y=m-u.left-u.right,b=S(h-u[g],v),x=S(m-u[_],y),w=!t.middlewareData.shift,T=b,E=x;if((n=t.middlewareData.shift)!=null&&n.enabled.x&&(E=y),(r=t.middlewareData.shift)!=null&&r.enabled.y&&(T=v),w&&!f){let e=C(u.left,0),t=C(u.right,0),n=C(u.top,0),r=C(u.bottom,0);p?E=m-2*(e!==0||t!==0?e+t:C(u.left,u.right)):T=h-2*(n!==0||r!==0?n+r:C(u.top,u.bottom))}await c({...t,availableWidth:E,availableHeight:T});let D=await o.getDimensions(s.floating);return m!==D.width||h!==D.height?{reset:{rects:!0}}:{}}}};function Se(){return typeof window<`u`}function H(e){return Ce(e)?(e.nodeName||``).toLowerCase():`#document`}function U(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function W(e){return((Ce(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function Ce(e){return Se()?e instanceof Node||e instanceof U(e).Node:!1}function G(e){return Se()?e instanceof Element||e instanceof U(e).Element:!1}function K(e){return Se()?e instanceof HTMLElement||e instanceof U(e).HTMLElement:!1}function we(e){return!Se()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof U(e).ShadowRoot}function q(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=X(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&i!==`inline`&&i!==`contents`}function Te(e){return/^(table|td|th)$/.test(H(e))}function Ee(e){try{if(e.matches(`:popover-open`))return!0}catch{}try{return e.matches(`:modal`)}catch{return!1}}var De=/transform|translate|scale|rotate|perspective|filter/,Oe=/paint|layout|strict|content/,J=e=>!!e&&e!==`none`,ke;function Ae(e){let t=G(e)?X(e):e;return J(t.transform)||J(t.translate)||J(t.scale)||J(t.rotate)||J(t.perspective)||!Me()&&(J(t.backdropFilter)||J(t.filter))||De.test(t.willChange||``)||Oe.test(t.contain||``)}function je(e){let t=Z(e);for(;K(t)&&!Y(t);){if(Ae(t))return t;if(Ee(t))return null;t=Z(t)}return null}function Me(){return ke??=typeof CSS<`u`&&CSS.supports&&CSS.supports(`-webkit-backdrop-filter`,`none`),ke}function Y(e){return/^(html|body|#document)$/.test(H(e))}function X(e){return U(e).getComputedStyle(e)}function Ne(e){return G(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Z(e){if(H(e)===`html`)return e;let t=e.assignedSlot||e.parentNode||we(e)&&e.host||W(e);return we(t)?t.host:t}function Pe(e){let t=Z(e);return Y(t)?e.ownerDocument?e.ownerDocument.body:e.body:K(t)&&q(t)?t:Pe(t)}function Fe(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=Pe(e),i=r===e.ownerDocument?.body,a=U(r);if(i){let e=Ie(a);return t.concat(a,a.visualViewport||[],q(r)?r:[],e&&n?Fe(e):[])}else return t.concat(r,Fe(r,[],n))}function Ie(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function Le(e){let t=X(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,i=K(e),a=i?e.offsetWidth:n,o=i?e.offsetHeight:r,s=w(n)!==a||w(r)!==o;return s&&(n=a,r=o),{width:n,height:r,$:s}}function Re(e){return G(e)?e:e.contextElement}function Q(e){let t=Re(e);if(!K(t))return E(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:a}=Le(t),o=(a?w(n.width):n.width)/r,s=(a?w(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}var ze=E(0);function Be(e){let t=U(e);return!Me()||!t.visualViewport?ze:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function Ve(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==U(e)?!1:t}function $(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let i=e.getBoundingClientRect(),a=Re(e),o=E(1);t&&(r?G(r)&&(o=Q(r)):o=Q(e));let s=Ve(a,n,r)?Be(a):E(0),c=(i.left+s.x)/o.x,l=(i.top+s.y)/o.y,u=i.width/o.x,d=i.height/o.y;if(a){let e=U(a),t=r&&G(r)?U(r):r,n=e,i=Ie(n);for(;i&&r&&t!==n;){let e=Q(i),t=i.getBoundingClientRect(),r=X(i),a=t.left+(i.clientLeft+parseFloat(r.paddingLeft))*e.x,o=t.top+(i.clientTop+parseFloat(r.paddingTop))*e.y;c*=e.x,l*=e.y,u*=e.x,d*=e.y,c+=a,l+=o,n=U(i),i=Ie(n)}}return oe({width:u,height:d,x:c,y:l})}function He(e,t){let n=Ne(e).scrollLeft;return t?t.left+n:$(W(e)).left+n}function Ue(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-He(e,n),y:n.top+t.scrollTop}}function We(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,a=i===`fixed`,o=W(r),s=t?Ee(t.floating):!1;if(r===o||s&&a)return n;let c={scrollLeft:0,scrollTop:0},l=E(1),u=E(0),d=K(r);if((d||!d&&!a)&&((H(r)!==`body`||q(o))&&(c=Ne(r)),d)){let e=$(r);l=Q(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let f=o&&!d&&!a?Ue(o,c):E(0);return{width:n.width*l.x,height:n.height*l.y,x:n.x*l.x-c.scrollLeft*l.x+u.x+f.x,y:n.y*l.y-c.scrollTop*l.y+u.y+f.y}}function Ge(e){return Array.from(e.getClientRects())}function Ke(e){let t=W(e),n=Ne(e),r=e.ownerDocument.body,i=C(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=C(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight),o=-n.scrollLeft+He(e),s=-n.scrollTop;return X(r).direction===`rtl`&&(o+=C(t.clientWidth,r.clientWidth)-i),{width:i,height:a,x:o,y:s}}var qe=25;function Je(e,t){let n=U(e),r=W(e),i=n.visualViewport,a=r.clientWidth,o=r.clientHeight,s=0,c=0;if(i){a=i.width,o=i.height;let e=Me();(!e||e&&t===`fixed`)&&(s=i.offsetLeft,c=i.offsetTop)}let l=He(r);if(l<=0){let e=r.ownerDocument,t=e.body,n=getComputedStyle(t),i=e.compatMode===`CSS1Compat`&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,o=Math.abs(r.clientWidth-t.clientWidth-i);o<=qe&&(a-=o)}else l<=qe&&(a+=l);return{width:a,height:o,x:s,y:c}}function Ye(e,t){let n=$(e,!0,t===`fixed`),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=K(e)?Q(e):E(1);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:i*a.x,y:r*a.y}}function Xe(e,t,n){let r;if(t===`viewport`)r=Je(e,n);else if(t===`document`)r=Ke(W(e));else if(G(t))r=Ye(t,n);else{let n=Be(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return oe(r)}function Ze(e,t){let n=Z(e);return n===t||!G(n)||Y(n)?!1:X(n).position===`fixed`||Ze(n,t)}function Qe(e,t){let n=t.get(e);if(n)return n;let r=Fe(e,[],!1).filter(e=>G(e)&&H(e)!==`body`),i=null,a=X(e).position===`fixed`,o=a?Z(e):e;for(;G(o)&&!Y(o);){let t=X(o),n=Ae(o);!n&&t.position===`fixed`&&(i=null),(a?!n&&!i:!n&&t.position===`static`&&i&&(i.position===`absolute`||i.position===`fixed`)||q(o)&&!n&&Ze(e,o))?r=r.filter(e=>e!==o):i=t,o=Z(o)}return t.set(e,r),r}function $e(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,a=[...n===`clippingAncestors`?Ee(t)?[]:Qe(t,this._c):[].concat(n),r],o=Xe(t,a[0],i),s=o.top,c=o.right,l=o.bottom,u=o.left;for(let e=1;e<a.length;e++){let n=Xe(t,a[e],i);s=C(n.top,s),c=S(n.right,c),l=S(n.bottom,l),u=C(n.left,u)}return{width:c-u,height:l-s,x:u,y:s}}function et(e){let{width:t,height:n}=Le(e);return{width:t,height:n}}function tt(e,t,n){let r=K(t),i=W(t),a=n===`fixed`,o=$(e,!0,a,t),s={scrollLeft:0,scrollTop:0},c=E(0);function l(){c.x=He(i)}if(r||!r&&!a)if((H(t)!==`body`||q(i))&&(s=Ne(t)),r){let e=$(t,!0,a,t);c.x=e.x+t.clientLeft,c.y=e.y+t.clientTop}else i&&l();a&&!r&&i&&l();let u=i&&!r&&!a?Ue(i,s):E(0);return{x:o.left+s.scrollLeft-c.x-u.x,y:o.top+s.scrollTop-c.y-u.y,width:o.width,height:o.height}}function nt(e){return X(e).position===`static`}function rt(e,t){if(!K(e)||X(e).position===`fixed`)return null;if(t)return t(e);let n=e.offsetParent;return W(e)===n&&(n=n.ownerDocument.body),n}function it(e,t){let n=U(e);if(Ee(e))return n;if(!K(e)){let t=Z(e);for(;t&&!Y(t);){if(G(t)&&!nt(t))return t;t=Z(t)}return n}let r=rt(e,t);for(;r&&Te(r)&&nt(r);)r=rt(r,t);return r&&Y(r)&&nt(r)&&!Ae(r)?n:r||je(e)||n}var at=async function(e){let t=this.getOffsetParent||it,n=this.getDimensions,r=await n(e.floating);return{reference:tt(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function ot(e){return X(e).direction===`rtl`}var st={convertOffsetParentRelativeRectToViewportRelativeRect:We,getDocumentElement:W,getClippingRect:$e,getOffsetParent:it,getElementRects:at,getClientRects:Ge,getDimensions:et,getScale:Q,isElement:G,isRTL:ot};function ct(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function lt(e,t){let n=null,r,i=W(e);function a(){var e;clearTimeout(r),(e=n)==null||e.disconnect(),n=null}function o(s,c){s===void 0&&(s=!1),c===void 0&&(c=1),a();let l=e.getBoundingClientRect(),{left:u,top:d,width:f,height:p}=l;if(s||t(),!f||!p)return;let m=T(d),h=T(i.clientWidth-(u+f)),g=T(i.clientHeight-(d+p)),_=T(u),v={rootMargin:-m+`px `+-h+`px `+-g+`px `+-_+`px`,threshold:C(0,S(1,c))||1},y=!0;function b(t){let n=t[0].intersectionRatio;if(n!==c){if(!y)return o();n?o(!1,n):r=setTimeout(()=>{o(!1,1e-7)},1e3)}n===1&&!ct(l,e.getBoundingClientRect())&&o(),y=!1}try{n=new IntersectionObserver(b,{...v,root:i.ownerDocument})}catch{n=new IntersectionObserver(b,v)}n.observe(e)}return o(!0),a}function ut(e,t,n,r){r===void 0&&(r={});let{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:o=typeof ResizeObserver==`function`,layoutShift:s=typeof IntersectionObserver==`function`,animationFrame:c=!1}=r,l=Re(e),u=i||a?[...l?Fe(l):[],...t?Fe(t):[]]:[];u.forEach(e=>{i&&e.addEventListener(`scroll`,n,{passive:!0}),a&&e.addEventListener(`resize`,n)});let d=l&&s?lt(l,n):null,f=-1,p=null;o&&(p=new ResizeObserver(e=>{let[r]=e;r&&r.target===l&&p&&t&&(p.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var e;(e=p)==null||e.observe(t)})),n()}),l&&!c&&p.observe(l),t&&p.observe(t));let m,h=c?$(e):null;c&&g();function g(){let t=$(e);h&&!ct(h,t)&&n(),h=t,m=requestAnimationFrame(g)}return n(),()=>{var e;u.forEach(e=>{i&&e.removeEventListener(`scroll`,n),a&&e.removeEventListener(`resize`,n)}),d?.(),(e=p)==null||e.disconnect(),p=null,c&&cancelAnimationFrame(m)}}var dt=ve,ft=ye,pt=fe,mt=xe,ht=he,gt=de,_t=be,vt=(e,t,n)=>{let r=new Map,i={platform:st,...n},a={...i.platform,_c:r};return ue(e,t,{...i,platform:a})},yt=typeof document<`u`?f.useLayoutEffect:function(){};function bt(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e==`function`&&e.toString()===t.toString())return!0;let n,r,i;if(e&&t&&typeof e==`object`){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(r=n;r--!==0;)if(!bt(e[r],t[r]))return!1;return!0}if(i=Object.keys(e),n=i.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!{}.hasOwnProperty.call(t,i[r]))return!1;for(r=n;r--!==0;){let n=i[r];if(!(n===`_owner`&&e.$$typeof)&&!bt(e[n],t[n]))return!1}return!0}return e!==e&&t!==t}function xt(e){return typeof window>`u`?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function St(e,t){let n=xt(e);return Math.round(t*n)/n}function Ct(e){let t=f.useRef(e);return yt(()=>{t.current=e}),t}function wt(e){e===void 0&&(e={});let{placement:t=`bottom`,strategy:n=`absolute`,middleware:r=[],platform:i,elements:{reference:a,floating:o}={},transform:s=!0,whileElementsMounted:c,open:l}=e,[u,d]=f.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[p,m]=f.useState(r);bt(p,r)||m(r);let[h,g]=f.useState(null),[_,v]=f.useState(null),b=f.useCallback(e=>{e!==w.current&&(w.current=e,g(e))},[]),x=f.useCallback(e=>{e!==T.current&&(T.current=e,v(e))},[]),S=a||h,C=o||_,w=f.useRef(null),T=f.useRef(null),E=f.useRef(u),D=c!=null,O=Ct(c),k=Ct(i),A=Ct(l),j=f.useCallback(()=>{if(!w.current||!T.current)return;let e={placement:t,strategy:n,middleware:p};k.current&&(e.platform=k.current),vt(w.current,T.current,e).then(e=>{let t={...e,isPositioned:A.current!==!1};M.current&&!bt(E.current,t)&&(E.current=t,y.flushSync(()=>{d(t)}))})},[p,t,n,k,A]);yt(()=>{l===!1&&E.current.isPositioned&&(E.current.isPositioned=!1,d(e=>({...e,isPositioned:!1})))},[l]);let M=f.useRef(!1);yt(()=>(M.current=!0,()=>{M.current=!1}),[]),yt(()=>{if(S&&(w.current=S),C&&(T.current=C),S&&C){if(O.current)return O.current(S,C,j);j()}},[S,C,j,O,D]);let N=f.useMemo(()=>({reference:w,floating:T,setReference:b,setFloating:x}),[b,x]),P=f.useMemo(()=>({reference:S,floating:C}),[S,C]),F=f.useMemo(()=>{let e={position:n,left:0,top:0};if(!P.floating)return e;let t=St(P.floating,u.x),r=St(P.floating,u.y);return s?{...e,transform:`translate(`+t+`px, `+r+`px)`,...xt(P.floating)>=1.5&&{willChange:`transform`}}:{position:n,left:t,top:r}},[n,s,P.floating,u.x,u.y]);return f.useMemo(()=>({...u,update:j,refs:N,elements:P,floatingStyles:F}),[u,j,N,P,F])}var Tt=e=>{function t(e){return{}.hasOwnProperty.call(e,`current`)}return{name:`arrow`,options:e,fn(n){let{element:r,padding:i}=typeof e==`function`?e(n):e;return r&&t(r)?r.current==null?{}:gt({element:r.current,padding:i}).fn(n):r?gt({element:r,padding:i}).fn(n):{}}}},Et=(e,t)=>{let n=dt(e);return{name:n.name,fn:n.fn,options:[e,t]}},Dt=(e,t)=>{let n=ft(e);return{name:n.name,fn:n.fn,options:[e,t]}},Ot=(e,t)=>({fn:_t(e).fn,options:[e,t]}),kt=(e,t)=>{let n=pt(e);return{name:n.name,fn:n.fn,options:[e,t]}},At=(e,t)=>{let n=mt(e);return{name:n.name,fn:n.fn,options:[e,t]}},jt=(e,t)=>{let n=ht(e);return{name:n.name,fn:n.fn,options:[e,t]}},Mt=(e,t)=>{let n=Tt(e);return{name:n.name,fn:n.fn,options:[e,t]}},Nt=`Arrow`,Pt=f.forwardRef((e,t)=>{let{children:n,width:r=10,height:i=5,...a}=e;return(0,g.jsx)(c.svg,{...a,ref:t,width:r,height:i,viewBox:`0 0 30 10`,preserveAspectRatio:`none`,children:e.asChild?n:(0,g.jsx)(`polygon`,{points:`0,0 30,0 15,10`})})});Pt.displayName=Nt;var Ft=Pt,It=`Popper`,[Lt,Rt]=n(It),[zt,Bt]=Lt(It),Vt=e=>{let{__scopePopper:t,children:n}=e,[r,i]=f.useState(null),[a,o]=f.useState(void 0);return(0,g.jsx)(zt,{scope:t,anchor:r,onAnchorChange:i,placementState:a,setPlacementState:o,children:n})};Vt.displayName=It;var Ht=`PopperAnchor`,Ut=f.forwardRef((e,t)=>{let{__scopePopper:n,virtualRef:i,...a}=e,o=Bt(Ht,n),s=f.useRef(null),l=o.onAnchorChange,u=r(t,f.useCallback(e=>{s.current=e,e&&l(e)},[l])),d=f.useRef(null);f.useEffect(()=>{if(!i)return;let e=d.current;d.current=i.current,e!==d.current&&l(d.current)});let p=o.placementState&&$t(o.placementState),m=p?.[0],h=p?.[1];return i?null:(0,g.jsx)(c.div,{"data-radix-popper-side":m,"data-radix-popper-align":h,...a,ref:u})});Ut.displayName=Ht;var Wt=`PopperContent`,[Gt,Kt]=Lt(Wt),qt=f.forwardRef((e,t)=>{let{__scopePopper:n,side:i=`bottom`,sideOffset:s=0,align:l=`center`,alignOffset:u=0,arrowPadding:d=0,avoidCollisions:p=!0,collisionBoundary:m=[],collisionPadding:h=0,sticky:_=`partial`,hideWhenDetached:v=!1,updatePositionStrategy:y=`optimized`,onPlaced:x,...S}=e,C=Bt(Wt,n),[w,T]=f.useState(null),E=r(t,T),[D,O]=f.useState(null),k=b(D),A=k?.width??0,j=k?.height??0,M=i+(l===`center`?``:`-`+l),N=typeof h==`number`?h:{top:0,right:0,bottom:0,left:0,...h},P=Array.isArray(m)?m:[m],F=P.length>0,I={padding:N,boundary:P.filter(Zt),altBoundary:F},{refs:ee,floatingStyles:L,placement:R,isPositioned:z,middlewareData:B}=wt({strategy:`fixed`,placement:M,whileElementsMounted:(...e)=>ut(...e,{animationFrame:y===`always`}),elements:{reference:C.anchor},middleware:[Et({mainAxis:s+j,alignmentAxis:u}),p&&Dt({mainAxis:!0,crossAxis:!1,limiter:_===`partial`?Ot():void 0,...I}),p&&kt({...I}),At({...I,apply:({elements:e,rects:t,availableWidth:n,availableHeight:r})=>{let{width:i,height:a}=t.reference,o=e.floating.style;o.setProperty(`--radix-popper-available-width`,`${n}px`),o.setProperty(`--radix-popper-available-height`,`${r}px`),o.setProperty(`--radix-popper-anchor-width`,`${i}px`),o.setProperty(`--radix-popper-anchor-height`,`${a}px`)}}),D&&Mt({element:D,padding:d}),Qt({arrowWidth:A,arrowHeight:j}),v&&jt({strategy:`referenceHidden`,...I,boundary:F?I.boundary:void 0})]}),te=C.setPlacementState;o(()=>(te(R),()=>{te(void 0)}),[R,te]);let[ne,re]=$t(R),V=a(x);o(()=>{z&&V?.()},[z,V]);let ie=B.arrow?.x,ae=B.arrow?.y,oe=B.arrow?.centerOffset!==0,[se,ce]=f.useState();return o(()=>{w&&ce(window.getComputedStyle(w).zIndex)},[w]),(0,g.jsx)(`div`,{ref:ee.setFloating,"data-radix-popper-content-wrapper":``,style:{...L,transform:z?L.transform:`translate(0, -200%)`,minWidth:`max-content`,zIndex:se,"--radix-popper-transform-origin":[B.transformOrigin?.x,B.transformOrigin?.y].join(` `),...B.hide?.referenceHidden&&{visibility:`hidden`,pointerEvents:`none`}},dir:e.dir,children:(0,g.jsx)(Gt,{scope:n,placedSide:ne,placedAlign:re,onArrowChange:O,arrowX:ie,arrowY:ae,shouldHideArrow:oe,children:(0,g.jsx)(c.div,{"data-side":ne,"data-align":re,...S,ref:E,style:{...S.style,animation:z?void 0:`none`}})})})});qt.displayName=Wt;var Jt=`PopperArrow`,Yt={top:`bottom`,right:`left`,bottom:`top`,left:`right`},Xt=f.forwardRef(function(e,t){let{__scopePopper:n,...r}=e,i=Kt(Jt,n),a=Yt[i.placedSide];return(0,g.jsx)(`span`,{ref:i.onArrowChange,style:{position:`absolute`,left:i.arrowX,top:i.arrowY,[a]:0,transformOrigin:{top:``,right:`0 0`,bottom:`center 0`,left:`100% 0`}[i.placedSide],transform:{top:`translateY(100%)`,right:`translateY(50%) rotate(90deg) translateX(-50%)`,bottom:`rotate(180deg)`,left:`translateY(50%) rotate(-90deg) translateX(50%)`}[i.placedSide],visibility:i.shouldHideArrow?`hidden`:void 0},children:(0,g.jsx)(Ft,{...r,ref:t,style:{...r.style,display:`block`}})})});Xt.displayName=Jt;function Zt(e){return e!==null}var Qt=e=>({name:`transformOrigin`,options:e,fn(t){let{placement:n,rects:r,middlewareData:i}=t,a=i.arrow?.centerOffset!==0,o=a?0:e.arrowWidth,s=a?0:e.arrowHeight,[c,l]=$t(n),u={start:`0%`,center:`50%`,end:`100%`}[l],d=(i.arrow?.x??0)+o/2,f=(i.arrow?.y??0)+s/2,p=``,m=``;return c===`bottom`?(p=a?u:`${d}px`,m=`${-s}px`):c===`top`?(p=a?u:`${d}px`,m=`${r.floating.height+s}px`):c===`right`?(p=`${-s}px`,m=a?u:`${f}px`):c===`left`&&(p=`${r.floating.width+s}px`,m=a?u:`${f}px`),{data:{x:p,y:m}}}});function $t(e){let[t,n=`center`]=e.split(`-`);return[t,n]}var en=Vt,tn=Ut,nn=qt,rn=Xt;export{Rt as a,_ as c,en as i,h as l,rn as n,b as o,nn as r,v as s,tn as t};
2
+ //# sourceMappingURL=dist-CmyV2PEd.js.map