@mieweb/ui 0.10.0-dev.9 → 0.11.0-dev.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 (807) hide show
  1. package/README.md +4 -4
  2. package/agent/mieweb-ui.instructions.md +77 -0
  3. package/dist/CsvBlock-CFXSDPBI.js +9 -0
  4. package/dist/{CsvBlock-UWPMTLE2.js.map → CsvBlock-CFXSDPBI.js.map} +1 -1
  5. package/dist/CsvBlock-RGO7JXHJ.cjs +18 -0
  6. package/dist/{CsvBlock-ROJCKJDP.cjs.map → CsvBlock-RGO7JXHJ.cjs.map} +1 -1
  7. package/dist/HtmlPreviewBlock-VBYXCXVT.cjs +18 -0
  8. package/dist/{HtmlPreviewBlock-DWFN6EUB.cjs.map → HtmlPreviewBlock-VBYXCXVT.cjs.map} +1 -1
  9. package/dist/HtmlPreviewBlock-Z2GCK325.js +9 -0
  10. package/dist/{HtmlPreviewBlock-ME5U3XNS.js.map → HtmlPreviewBlock-Z2GCK325.js.map} +1 -1
  11. package/dist/MermaidBlock-I2R2BQOX.cjs +18 -0
  12. package/dist/{MermaidBlock-D2UC5M55.cjs.map → MermaidBlock-I2R2BQOX.cjs.map} +1 -1
  13. package/dist/MermaidBlock-XCAK7IA5.js +9 -0
  14. package/dist/{MermaidBlock-2B6CPD6Y.js.map → MermaidBlock-XCAK7IA5.js.map} +1 -1
  15. package/dist/SurveyBlock-KI5JOWCL.js +9 -0
  16. package/dist/{SurveyBlock-4DO62RBT.js.map → SurveyBlock-KI5JOWCL.js.map} +1 -1
  17. package/dist/SurveyBlock-UKSGISRT.cjs +18 -0
  18. package/dist/{SurveyBlock-4CD4AYMJ.cjs.map → SurveyBlock-UKSGISRT.cjs.map} +1 -1
  19. package/dist/ag-grid.d.cts +142 -1
  20. package/dist/ag-grid.d.ts +142 -1
  21. package/dist/brands/bluehive.cjs +3 -3
  22. package/dist/brands/bluehive.css +3 -0
  23. package/dist/brands/bluehive.js +1 -1
  24. package/dist/brands/index.cjs +17 -17
  25. package/dist/brands/index.js +4 -4
  26. package/dist/{chunk-JYZW2PZS.cjs → chunk-254QK722.cjs} +7 -7
  27. package/dist/chunk-254QK722.cjs.map +1 -0
  28. package/dist/{chunk-4IS3QCOQ.cjs → chunk-2FZYZ4HT.cjs} +4 -3
  29. package/dist/chunk-2FZYZ4HT.cjs.map +1 -0
  30. package/dist/{chunk-VPIYTQCV.cjs → chunk-2I4IRQQG.cjs} +12 -5
  31. package/dist/chunk-2I4IRQQG.cjs.map +1 -0
  32. package/dist/{chunk-IT775BYG.js → chunk-2W73UQ3T.js} +4 -3
  33. package/dist/chunk-2W73UQ3T.js.map +1 -0
  34. package/dist/chunk-2X54ZLT6.js +874 -0
  35. package/dist/chunk-2X54ZLT6.js.map +1 -0
  36. package/dist/{chunk-5MCBWTIF.cjs → chunk-32ZCJOSR.cjs} +4 -4
  37. package/dist/{chunk-5MCBWTIF.cjs.map → chunk-32ZCJOSR.cjs.map} +1 -1
  38. package/dist/{chunk-WNJRS7Y7.cjs → chunk-3ZWCIPFT.cjs} +4 -2
  39. package/dist/chunk-3ZWCIPFT.cjs.map +1 -0
  40. package/dist/chunk-434L5RYF.js +314 -0
  41. package/dist/chunk-434L5RYF.js.map +1 -0
  42. package/dist/{chunk-TPWKM7JH.js → chunk-43K7OQ3E.js} +3 -3
  43. package/dist/{chunk-TPWKM7JH.js.map → chunk-43K7OQ3E.js.map} +1 -1
  44. package/dist/chunk-47P5QLX4.cjs +42 -0
  45. package/dist/chunk-47P5QLX4.cjs.map +1 -0
  46. package/dist/{chunk-CR2SDI23.cjs → chunk-4QYYWYFD.cjs} +8 -7
  47. package/dist/chunk-4QYYWYFD.cjs.map +1 -0
  48. package/dist/{chunk-76TBQDED.js → chunk-4RI3CQGE.js} +6 -6
  49. package/dist/{chunk-76TBQDED.js.map → chunk-4RI3CQGE.js.map} +1 -1
  50. package/dist/chunk-4ZB7RSMY.cjs +306 -0
  51. package/dist/chunk-4ZB7RSMY.cjs.map +1 -0
  52. package/dist/chunk-522WJIVI.js +99 -0
  53. package/dist/chunk-522WJIVI.js.map +1 -0
  54. package/dist/chunk-56VTM4OX.js +261 -0
  55. package/dist/chunk-56VTM4OX.js.map +1 -0
  56. package/dist/chunk-5HKZR6UG.js +248 -0
  57. package/dist/chunk-5HKZR6UG.js.map +1 -0
  58. package/dist/chunk-6BNZLN4B.cjs +548 -0
  59. package/dist/chunk-6BNZLN4B.cjs.map +1 -0
  60. package/dist/chunk-6N7NMOSV.js +233 -0
  61. package/dist/chunk-6N7NMOSV.js.map +1 -0
  62. package/dist/chunk-6TTCZY3P.cjs +4 -0
  63. package/dist/chunk-6TTCZY3P.cjs.map +1 -0
  64. package/dist/{chunk-YQDA366U.js → chunk-753ENNB6.js} +2 -2
  65. package/dist/{chunk-YQDA366U.js.map → chunk-753ENNB6.js.map} +1 -1
  66. package/dist/{chunk-N6IY47YA.cjs → chunk-7C5W744U.cjs} +8 -8
  67. package/dist/{chunk-N6IY47YA.cjs.map → chunk-7C5W744U.cjs.map} +1 -1
  68. package/dist/chunk-7E46YDOT.cjs +122 -0
  69. package/dist/chunk-7E46YDOT.cjs.map +1 -0
  70. package/dist/chunk-7HUTR6RX.js +178 -0
  71. package/dist/chunk-7HUTR6RX.js.map +1 -0
  72. package/dist/chunk-7IRTD4JT.cjs +61 -0
  73. package/dist/chunk-7IRTD4JT.cjs.map +1 -0
  74. package/dist/{chunk-KZFBQ7GY.js → chunk-7QW6TU4X.js} +3 -3
  75. package/dist/{chunk-KZFBQ7GY.js.map → chunk-7QW6TU4X.js.map} +1 -1
  76. package/dist/{chunk-MWVW4APN.cjs → chunk-7UTBDFFL.cjs} +4 -4
  77. package/dist/{chunk-MWVW4APN.cjs.map → chunk-7UTBDFFL.cjs.map} +1 -1
  78. package/dist/chunk-7WJ6MBF5.cjs +47 -0
  79. package/dist/chunk-7WJ6MBF5.cjs.map +1 -0
  80. package/dist/{chunk-FJ7YPVKV.js → chunk-7X6R3JIA.js} +3 -3
  81. package/dist/{chunk-FJ7YPVKV.js.map → chunk-7X6R3JIA.js.map} +1 -1
  82. package/dist/chunk-A4W5CSK7.cjs +216 -0
  83. package/dist/chunk-A4W5CSK7.cjs.map +1 -0
  84. package/dist/{chunk-2G75X6TS.cjs → chunk-AHHFFXJR.cjs} +3 -3
  85. package/dist/{chunk-2G75X6TS.cjs.map → chunk-AHHFFXJR.cjs.map} +1 -1
  86. package/dist/chunk-AJPFQF3H.cjs +896 -0
  87. package/dist/chunk-AJPFQF3H.cjs.map +1 -0
  88. package/dist/chunk-AMYFRY7K.js +3 -0
  89. package/dist/chunk-AMYFRY7K.js.map +1 -0
  90. package/dist/{chunk-VNYW4C4J.cjs → chunk-ANMX7YDL.cjs} +4 -84
  91. package/dist/chunk-ANMX7YDL.cjs.map +1 -0
  92. package/dist/chunk-ARIJ5OHW.cjs +139 -0
  93. package/dist/chunk-ARIJ5OHW.cjs.map +1 -0
  94. package/dist/{chunk-GD7EBGC4.cjs → chunk-ATRW3J5Z.cjs} +49 -19
  95. package/dist/chunk-ATRW3J5Z.cjs.map +1 -0
  96. package/dist/chunk-BJ6ABRSQ.cjs +256 -0
  97. package/dist/chunk-BJ6ABRSQ.cjs.map +1 -0
  98. package/dist/{chunk-G3JX3UAU.cjs → chunk-BWSZ2BHJ.cjs} +6 -6
  99. package/dist/{chunk-G3JX3UAU.cjs.map → chunk-BWSZ2BHJ.cjs.map} +1 -1
  100. package/dist/chunk-BXRQ6HEP.cjs +4 -0
  101. package/dist/chunk-BXRQ6HEP.cjs.map +1 -0
  102. package/dist/chunk-CBBKWRLG.js +213 -0
  103. package/dist/chunk-CBBKWRLG.js.map +1 -0
  104. package/dist/{chunk-UAMXCMST.cjs → chunk-CFI3TQMA.cjs} +3 -3
  105. package/dist/{chunk-UAMXCMST.cjs.map → chunk-CFI3TQMA.cjs.map} +1 -1
  106. package/dist/chunk-CLQW724U.cjs +271 -0
  107. package/dist/chunk-CLQW724U.cjs.map +1 -0
  108. package/dist/chunk-CPDNX3LS.cjs +47 -0
  109. package/dist/chunk-CPDNX3LS.cjs.map +1 -0
  110. package/dist/chunk-CVNPNZMX.js +44 -0
  111. package/dist/chunk-CVNPNZMX.js.map +1 -0
  112. package/dist/chunk-DGHS5IVD.js +305 -0
  113. package/dist/chunk-DGHS5IVD.js.map +1 -0
  114. package/dist/chunk-DHGCLPFZ.js +91 -0
  115. package/dist/chunk-DHGCLPFZ.js.map +1 -0
  116. package/dist/chunk-DO2YN46R.cjs +201 -0
  117. package/dist/chunk-DO2YN46R.cjs.map +1 -0
  118. package/dist/chunk-DVDT7TX7.js +151 -0
  119. package/dist/chunk-DVDT7TX7.js.map +1 -0
  120. package/dist/chunk-DXEPYK3I.cjs +92 -0
  121. package/dist/chunk-DXEPYK3I.cjs.map +1 -0
  122. package/dist/chunk-DXFP53KF.js +283 -0
  123. package/dist/chunk-DXFP53KF.js.map +1 -0
  124. package/dist/chunk-EACNRR3C.cjs +4 -0
  125. package/dist/chunk-EACNRR3C.cjs.map +1 -0
  126. package/dist/{chunk-TVTIGV7Q.js → chunk-EBKE4DLU.js} +18 -11
  127. package/dist/chunk-EBKE4DLU.js.map +1 -0
  128. package/dist/{chunk-ASSDGS4F.cjs → chunk-ECYIDXG6.cjs} +254 -4
  129. package/dist/chunk-ECYIDXG6.cjs.map +1 -0
  130. package/dist/chunk-EGPDT7SM.js +195 -0
  131. package/dist/chunk-EGPDT7SM.js.map +1 -0
  132. package/dist/chunk-EPCUPHEO.js +193 -0
  133. package/dist/chunk-EPCUPHEO.js.map +1 -0
  134. package/dist/{chunk-7ZXAQTV4.cjs → chunk-ERACGSDY.cjs} +8 -8
  135. package/dist/{chunk-7ZXAQTV4.cjs.map → chunk-ERACGSDY.cjs.map} +1 -1
  136. package/dist/{chunk-XCP454Q6.js → chunk-F4N67NAF.js} +12 -3
  137. package/dist/chunk-F4N67NAF.js.map +1 -0
  138. package/dist/{chunk-WGPLUCBD.js → chunk-F6W62K4J.js} +4 -4
  139. package/dist/{chunk-WGPLUCBD.js.map → chunk-F6W62K4J.js.map} +1 -1
  140. package/dist/{chunk-XVW5DPPP.js → chunk-F7SZSOB3.js} +4 -3
  141. package/dist/chunk-F7SZSOB3.js.map +1 -0
  142. package/dist/chunk-FBCDYTWM.js +385 -0
  143. package/dist/chunk-FBCDYTWM.js.map +1 -0
  144. package/dist/{chunk-KQUI4BGS.cjs → chunk-FBN2VHUV.cjs} +68 -61
  145. package/dist/chunk-FBN2VHUV.cjs.map +1 -0
  146. package/dist/{chunk-V7D3YGUV.js → chunk-FGLIP6YR.js} +4 -4
  147. package/dist/{chunk-V7D3YGUV.js.map → chunk-FGLIP6YR.js.map} +1 -1
  148. package/dist/{chunk-VU6UTJRM.js → chunk-FIKO4WR6.js} +3 -3
  149. package/dist/{chunk-VU6UTJRM.js.map → chunk-FIKO4WR6.js.map} +1 -1
  150. package/dist/{chunk-OD47TTAW.cjs → chunk-FMEA6WAY.cjs} +9 -9
  151. package/dist/{chunk-OD47TTAW.cjs.map → chunk-FMEA6WAY.cjs.map} +1 -1
  152. package/dist/chunk-FSGJXCBG.cjs +318 -0
  153. package/dist/chunk-FSGJXCBG.cjs.map +1 -0
  154. package/dist/chunk-FSWHZY3T.cjs +328 -0
  155. package/dist/chunk-FSWHZY3T.cjs.map +1 -0
  156. package/dist/chunk-FTEZNCRI.js +29 -0
  157. package/dist/chunk-FTEZNCRI.js.map +1 -0
  158. package/dist/{chunk-YVPC65ZJ.cjs → chunk-GF2BE4FB.cjs} +91 -32
  159. package/dist/chunk-GF2BE4FB.cjs.map +1 -0
  160. package/dist/{chunk-JEIW7BSV.cjs → chunk-GKDHMNUA.cjs} +2 -52
  161. package/dist/chunk-GKDHMNUA.cjs.map +1 -0
  162. package/dist/{chunk-URAQIF67.cjs → chunk-GM32IDVL.cjs} +6 -6
  163. package/dist/{chunk-URAQIF67.cjs.map → chunk-GM32IDVL.cjs.map} +1 -1
  164. package/dist/chunk-GVM6DTR5.js +90 -0
  165. package/dist/chunk-GVM6DTR5.js.map +1 -0
  166. package/dist/{chunk-SQHMGT4W.js → chunk-GW4RFJZ5.js} +7 -7
  167. package/dist/chunk-GW4RFJZ5.js.map +1 -0
  168. package/dist/chunk-GY5SP4ST.js +3 -0
  169. package/dist/chunk-GY5SP4ST.js.map +1 -0
  170. package/dist/{chunk-OCSCBB52.cjs → chunk-GYXSF6BJ.cjs} +10 -10
  171. package/dist/{chunk-OCSCBB52.cjs.map → chunk-GYXSF6BJ.cjs.map} +1 -1
  172. package/dist/chunk-H2Y7HZV5.js +3 -0
  173. package/dist/chunk-H2Y7HZV5.js.map +1 -0
  174. package/dist/chunk-H3P7POFC.cjs +337 -0
  175. package/dist/chunk-H3P7POFC.cjs.map +1 -0
  176. package/dist/{chunk-JID7AZTO.cjs → chunk-H3ROMJYI.cjs} +4 -4
  177. package/dist/{chunk-JID7AZTO.cjs.map → chunk-H3ROMJYI.cjs.map} +1 -1
  178. package/dist/{chunk-462XSCP3.cjs → chunk-HCIXGFWR.cjs} +4 -4
  179. package/dist/{chunk-462XSCP3.cjs.map → chunk-HCIXGFWR.cjs.map} +1 -1
  180. package/dist/{chunk-H4ZXMQQW.js → chunk-HDY7YQFX.js} +3 -3
  181. package/dist/{chunk-H4ZXMQQW.js.map → chunk-HDY7YQFX.js.map} +1 -1
  182. package/dist/chunk-HNFFFFYH.cjs +114 -0
  183. package/dist/chunk-HNFFFFYH.cjs.map +1 -0
  184. package/dist/chunk-HNXLLDPN.js +25 -0
  185. package/dist/chunk-HNXLLDPN.js.map +1 -0
  186. package/dist/{chunk-NV2CWBI2.cjs → chunk-IEY3ZJIT.cjs} +12 -3
  187. package/dist/chunk-IEY3ZJIT.cjs.map +1 -0
  188. package/dist/chunk-IEZXJWHJ.cjs +306 -0
  189. package/dist/chunk-IEZXJWHJ.cjs.map +1 -0
  190. package/dist/{chunk-3QEVGSFG.cjs → chunk-IGDO62KR.cjs} +5 -5
  191. package/dist/{chunk-3QEVGSFG.cjs.map → chunk-IGDO62KR.cjs.map} +1 -1
  192. package/dist/{chunk-N5O47VGS.cjs → chunk-IVGI353O.cjs} +2 -2
  193. package/dist/{chunk-N5O47VGS.cjs.map → chunk-IVGI353O.cjs.map} +1 -1
  194. package/dist/chunk-IWRBJHO3.cjs +51 -0
  195. package/dist/chunk-IWRBJHO3.cjs.map +1 -0
  196. package/dist/{chunk-2IZLKPUW.js → chunk-J2CKXXOW.js} +27 -6
  197. package/dist/chunk-J2CKXXOW.js.map +1 -0
  198. package/dist/{chunk-VILW53UZ.js → chunk-JMAZ2GKT.js} +3 -3
  199. package/dist/{chunk-VILW53UZ.js.map → chunk-JMAZ2GKT.js.map} +1 -1
  200. package/dist/{chunk-WWJIW2IH.cjs → chunk-JSXIB6EJ.cjs} +4 -4
  201. package/dist/{chunk-WWJIW2IH.cjs.map → chunk-JSXIB6EJ.cjs.map} +1 -1
  202. package/dist/{chunk-KRU6IGV7.js → chunk-JUJGWUAN.js} +28 -6
  203. package/dist/chunk-JUJGWUAN.js.map +1 -0
  204. package/dist/{chunk-FXO5ARBB.cjs → chunk-KDW6BD4O.cjs} +4 -4
  205. package/dist/{chunk-FXO5ARBB.cjs.map → chunk-KDW6BD4O.cjs.map} +1 -1
  206. package/dist/{chunk-Z5V7SAZ4.js → chunk-KFEN2SRZ.js} +3 -3
  207. package/dist/{chunk-Z5V7SAZ4.js.map → chunk-KFEN2SRZ.js.map} +1 -1
  208. package/dist/chunk-KIVEYQGA.cjs +319 -0
  209. package/dist/chunk-KIVEYQGA.cjs.map +1 -0
  210. package/dist/{chunk-XEAT7XJG.cjs → chunk-KQ6GLYFZ.cjs} +29 -13
  211. package/dist/chunk-KQ6GLYFZ.cjs.map +1 -0
  212. package/dist/{chunk-4A3W4TQF.js → chunk-KVTKSPX5.js} +254 -4
  213. package/dist/chunk-KVTKSPX5.js.map +1 -0
  214. package/dist/{chunk-6EN3IQQI.cjs → chunk-L5Y52F2E.cjs} +9 -9
  215. package/dist/chunk-L5Y52F2E.cjs.map +1 -0
  216. package/dist/chunk-L6K4PRZK.cjs +4 -0
  217. package/dist/chunk-L6K4PRZK.cjs.map +1 -0
  218. package/dist/chunk-LAN5VWGC.js +2540 -0
  219. package/dist/chunk-LAN5VWGC.js.map +1 -0
  220. package/dist/{chunk-7ZDPD5ZX.cjs → chunk-LC3JL2HB.cjs} +11 -7
  221. package/dist/chunk-LC3JL2HB.cjs.map +1 -0
  222. package/dist/chunk-LRAAJRE7.cjs +2707 -0
  223. package/dist/chunk-LRAAJRE7.cjs.map +1 -0
  224. package/dist/{chunk-OE5CKRUC.js → chunk-LX323IMT.js} +34 -4
  225. package/dist/chunk-LX323IMT.js.map +1 -0
  226. package/dist/chunk-M3VPGJMV.js +283 -0
  227. package/dist/chunk-M3VPGJMV.js.map +1 -0
  228. package/dist/{chunk-DVOQ3JNO.js → chunk-ME7EVT6F.js} +23 -9
  229. package/dist/chunk-ME7EVT6F.js.map +1 -0
  230. package/dist/{chunk-SQJFBZ42.js → chunk-MUYUFOGL.js} +8 -7
  231. package/dist/chunk-MUYUFOGL.js.map +1 -0
  232. package/dist/{chunk-VKELAMAZ.js → chunk-N54FYWG6.js} +27 -11
  233. package/dist/chunk-N54FYWG6.js.map +1 -0
  234. package/dist/chunk-N5JDL4VE.js +3 -0
  235. package/dist/chunk-N5JDL4VE.js.map +1 -0
  236. package/dist/{chunk-ZPSJ2UV6.cjs → chunk-NAH65KPK.cjs} +8 -8
  237. package/dist/{chunk-ZPSJ2UV6.cjs.map → chunk-NAH65KPK.cjs.map} +1 -1
  238. package/dist/{chunk-PYJDVWXM.js → chunk-NUB5HRKS.js} +3 -3
  239. package/dist/{chunk-PYJDVWXM.js.map → chunk-NUB5HRKS.js.map} +1 -1
  240. package/dist/{chunk-WNZAYBVB.cjs → chunk-O6BJMVGT.cjs} +48 -48
  241. package/dist/{chunk-WNZAYBVB.cjs.map → chunk-O6BJMVGT.cjs.map} +1 -1
  242. package/dist/{chunk-SVSHA7XV.js → chunk-O6XDA3SI.js} +31 -33
  243. package/dist/chunk-O6XDA3SI.js.map +1 -0
  244. package/dist/chunk-OIF34LEN.cjs +425 -0
  245. package/dist/chunk-OIF34LEN.cjs.map +1 -0
  246. package/dist/{chunk-J5CSLNCN.cjs → chunk-OODVC2UD.cjs} +2 -2
  247. package/dist/{chunk-J5CSLNCN.cjs.map → chunk-OODVC2UD.cjs.map} +1 -1
  248. package/dist/{chunk-LL6IWKI3.js → chunk-OW3SQJ7P.js} +3 -3
  249. package/dist/{chunk-LL6IWKI3.js.map → chunk-OW3SQJ7P.js.map} +1 -1
  250. package/dist/{chunk-ZGRCSNPK.js → chunk-OYUIEJPN.js} +17 -8
  251. package/dist/chunk-OYUIEJPN.js.map +1 -0
  252. package/dist/chunk-P22YCUVM.cjs +4 -0
  253. package/dist/chunk-P22YCUVM.cjs.map +1 -0
  254. package/dist/{chunk-CEQJGUAS.js → chunk-P4E3K3ND.js} +12 -5
  255. package/dist/chunk-P4E3K3ND.js.map +1 -0
  256. package/dist/{chunk-TMMVIUUN.js → chunk-P7D7BYFE.js} +4 -4
  257. package/dist/{chunk-TMMVIUUN.js.map → chunk-P7D7BYFE.js.map} +1 -1
  258. package/dist/{chunk-SGFYA22I.cjs → chunk-PINIBEIU.cjs} +21 -12
  259. package/dist/chunk-PINIBEIU.cjs.map +1 -0
  260. package/dist/{chunk-3T7QGLNB.js → chunk-PJEL5ZZV.js} +4 -2
  261. package/dist/chunk-PJEL5ZZV.js.map +1 -0
  262. package/dist/chunk-PWXDRFJL.cjs +218 -0
  263. package/dist/chunk-PWXDRFJL.cjs.map +1 -0
  264. package/dist/{chunk-XZNN3S3S.cjs → chunk-PYI2IWNX.cjs} +4 -4
  265. package/dist/{chunk-XZNN3S3S.cjs.map → chunk-PYI2IWNX.cjs.map} +1 -1
  266. package/dist/chunk-Q3YVLO52.cjs +174 -0
  267. package/dist/chunk-Q3YVLO52.cjs.map +1 -0
  268. package/dist/{chunk-MNILXWVY.js → chunk-QJ2L5RU6.js} +7 -7
  269. package/dist/{chunk-MNILXWVY.js.map → chunk-QJ2L5RU6.js.map} +1 -1
  270. package/dist/{chunk-X4LBUPJO.cjs → chunk-QX6AAVDE.cjs} +31 -33
  271. package/dist/chunk-QX6AAVDE.cjs.map +1 -0
  272. package/dist/{chunk-UV2FVNWT.cjs → chunk-RIUQP2QS.cjs} +5 -5
  273. package/dist/{chunk-UV2FVNWT.cjs.map → chunk-RIUQP2QS.cjs.map} +1 -1
  274. package/dist/chunk-RLVYWUXG.js +115 -0
  275. package/dist/chunk-RLVYWUXG.js.map +1 -0
  276. package/dist/{chunk-HACNIFO3.js → chunk-RM2HPQIC.js} +77 -14
  277. package/dist/chunk-RM2HPQIC.js.map +1 -0
  278. package/dist/{chunk-DEDN5HAG.js → chunk-RSJGTWLM.js} +3 -3
  279. package/dist/{chunk-DEDN5HAG.js.map → chunk-RSJGTWLM.js.map} +1 -1
  280. package/dist/{chunk-G4D6CLBT.js → chunk-RZSSQ7AT.js} +3 -3
  281. package/dist/{chunk-G4D6CLBT.js.map → chunk-RZSSQ7AT.js.map} +1 -1
  282. package/dist/{chunk-ENKFJJZX.js → chunk-S2JZL4JC.js} +6 -6
  283. package/dist/{chunk-ENKFJJZX.js.map → chunk-S2JZL4JC.js.map} +1 -1
  284. package/dist/{chunk-P7UMS4E6.cjs → chunk-S7AMZ4RD.cjs} +23 -9
  285. package/dist/chunk-S7AMZ4RD.cjs.map +1 -0
  286. package/dist/{chunk-VROIMIHB.cjs → chunk-SHBCUXFS.cjs} +28 -6
  287. package/dist/chunk-SHBCUXFS.cjs.map +1 -0
  288. package/dist/{chunk-RJ6NTJHC.js → chunk-SRMTRD7F.js} +3 -3
  289. package/dist/{chunk-RJ6NTJHC.js.map → chunk-SRMTRD7F.js.map} +1 -1
  290. package/dist/{chunk-IX6KFB3K.cjs → chunk-SW2E7XKY.cjs} +9 -9
  291. package/dist/{chunk-IX6KFB3K.cjs.map → chunk-SW2E7XKY.cjs.map} +1 -1
  292. package/dist/chunk-SZSRGUVO.js +402 -0
  293. package/dist/chunk-SZSRGUVO.js.map +1 -0
  294. package/dist/{chunk-NJ6MY6V5.js → chunk-T5BBZQ66.js} +3 -3
  295. package/dist/{chunk-NJ6MY6V5.js.map → chunk-T5BBZQ66.js.map} +1 -1
  296. package/dist/{chunk-HZ4MBUC3.js → chunk-TI3TQQ7F.js} +4 -53
  297. package/dist/chunk-TI3TQQ7F.js.map +1 -0
  298. package/dist/{chunk-ACCAXVOG.js → chunk-TJ4GWQPM.js} +137 -57
  299. package/dist/chunk-TJ4GWQPM.js.map +1 -0
  300. package/dist/{chunk-5JJ2DAE4.js → chunk-TWQSMUE6.js} +7 -3
  301. package/dist/chunk-TWQSMUE6.js.map +1 -0
  302. package/dist/{chunk-X4XPNTCZ.cjs → chunk-U2RS574O.cjs} +139 -59
  303. package/dist/chunk-U2RS574O.cjs.map +1 -0
  304. package/dist/{chunk-TAXD5ADA.cjs → chunk-UEDTZYGI.cjs} +3 -3
  305. package/dist/{chunk-TAXD5ADA.cjs.map → chunk-UEDTZYGI.cjs.map} +1 -1
  306. package/dist/{chunk-3QGS6CXD.js → chunk-UJDWFDKE.js} +3 -3
  307. package/dist/{chunk-3QGS6CXD.js.map → chunk-UJDWFDKE.js.map} +1 -1
  308. package/dist/{chunk-DZ5HFLRC.js → chunk-UNFDIBKJ.js} +3 -3
  309. package/dist/{chunk-DZ5HFLRC.js.map → chunk-UNFDIBKJ.js.map} +1 -1
  310. package/dist/{chunk-UQ3VVR6A.cjs → chunk-UPWIJC6I.cjs} +3 -3
  311. package/dist/{chunk-UQ3VVR6A.cjs.map → chunk-UPWIJC6I.cjs.map} +1 -1
  312. package/dist/chunk-UTIPENPW.cjs +286 -0
  313. package/dist/chunk-UTIPENPW.cjs.map +1 -0
  314. package/dist/{chunk-S7WCHDBO.js → chunk-VCI2Y7ST.js} +3 -3
  315. package/dist/{chunk-S7WCHDBO.js.map → chunk-VCI2Y7ST.js.map} +1 -1
  316. package/dist/{chunk-Y5HFM7LO.js → chunk-VOEXGDL5.js} +6 -6
  317. package/dist/chunk-VOEXGDL5.js.map +1 -0
  318. package/dist/{chunk-P2CA3XGI.js → chunk-VSRO4PAI.js} +23 -5
  319. package/dist/chunk-VSRO4PAI.js.map +1 -0
  320. package/dist/{chunk-L6MDULYB.js → chunk-VU3ZMJBN.js} +2 -2
  321. package/dist/{chunk-L6MDULYB.js.map → chunk-VU3ZMJBN.js.map} +1 -1
  322. package/dist/{chunk-XI34EGK5.cjs → chunk-VV2U36T6.cjs} +9 -9
  323. package/dist/{chunk-XI34EGK5.cjs.map → chunk-VV2U36T6.cjs.map} +1 -1
  324. package/dist/{chunk-VPWJCJCX.cjs → chunk-VXW7D5LR.cjs} +26 -8
  325. package/dist/chunk-VXW7D5LR.cjs.map +1 -0
  326. package/dist/{chunk-GOALNQZ2.js → chunk-WFBUBT54.js} +4 -83
  327. package/dist/chunk-WFBUBT54.js.map +1 -0
  328. package/dist/chunk-WQHBMZSC.js +295 -0
  329. package/dist/chunk-WQHBMZSC.js.map +1 -0
  330. package/dist/chunk-WSMBIXPU.cjs +2573 -0
  331. package/dist/chunk-WSMBIXPU.cjs.map +1 -0
  332. package/dist/chunk-X5JOEZVR.js +525 -0
  333. package/dist/chunk-X5JOEZVR.js.map +1 -0
  334. package/dist/chunk-XBAAHOCP.js +3 -0
  335. package/dist/chunk-XBAAHOCP.js.map +1 -0
  336. package/dist/chunk-XDU65GLW.js +21 -0
  337. package/dist/chunk-XDU65GLW.js.map +1 -0
  338. package/dist/{chunk-5GUOOLPR.cjs → chunk-XHK5VZ4L.cjs} +29 -8
  339. package/dist/chunk-XHK5VZ4L.cjs.map +1 -0
  340. package/dist/chunk-XI74P5F2.cjs +424 -0
  341. package/dist/chunk-XI74P5F2.cjs.map +1 -0
  342. package/dist/chunk-XNPDZANN.cjs +238 -0
  343. package/dist/chunk-XNPDZANN.cjs.map +1 -0
  344. package/dist/{chunk-XDIMTPZU.cjs → chunk-XPWFIDZM.cjs} +4 -3
  345. package/dist/chunk-XPWFIDZM.cjs.map +1 -0
  346. package/dist/{chunk-FS4VZUFV.cjs → chunk-XRVMYT5G.cjs} +77 -13
  347. package/dist/chunk-XRVMYT5G.cjs.map +1 -0
  348. package/dist/chunk-XXA4NZUC.js +3 -0
  349. package/dist/chunk-XXA4NZUC.js.map +1 -0
  350. package/dist/chunk-Y424YL55.js +59 -0
  351. package/dist/chunk-Y424YL55.js.map +1 -0
  352. package/dist/chunk-Y7ZJZLJY.js +2657 -0
  353. package/dist/chunk-Y7ZJZLJY.js.map +1 -0
  354. package/dist/chunk-YG7BR76Y.js +281 -0
  355. package/dist/chunk-YG7BR76Y.js.map +1 -0
  356. package/dist/chunk-YGS2TRMP.js +38 -0
  357. package/dist/chunk-YGS2TRMP.js.map +1 -0
  358. package/dist/chunk-YUMOM3KE.js +167 -0
  359. package/dist/chunk-YUMOM3KE.js.map +1 -0
  360. package/dist/chunk-YVKBXNPK.js +41 -0
  361. package/dist/chunk-YVKBXNPK.js.map +1 -0
  362. package/dist/chunk-YW2AKBLS.cjs +23 -0
  363. package/dist/chunk-YW2AKBLS.cjs.map +1 -0
  364. package/dist/{chunk-3M7TAXNR.js → chunk-YZCM7CXK.js} +3 -3
  365. package/dist/{chunk-3M7TAXNR.js.map → chunk-YZCM7CXK.js.map} +1 -1
  366. package/dist/chunk-Z3WMDVMR.cjs +46 -0
  367. package/dist/chunk-Z3WMDVMR.cjs.map +1 -0
  368. package/dist/chunk-ZNUMOJOI.cjs +4 -0
  369. package/dist/chunk-ZNUMOJOI.cjs.map +1 -0
  370. package/dist/components/Accordion/index.cjs +2 -2
  371. package/dist/components/Accordion/index.d.cts +6 -0
  372. package/dist/components/Accordion/index.d.ts +6 -0
  373. package/dist/components/Accordion/index.js +1 -1
  374. package/dist/components/ActionPlan/index.cjs +34 -0
  375. package/dist/components/ActionPlan/index.cjs.map +1 -0
  376. package/dist/components/ActionPlan/index.d.cts +65 -0
  377. package/dist/components/ActionPlan/index.d.ts +65 -0
  378. package/dist/components/ActionPlan/index.js +21 -0
  379. package/dist/components/ActionPlan/index.js.map +1 -0
  380. package/dist/components/ActivityFeed/index.cjs +31 -0
  381. package/dist/components/ActivityFeed/index.cjs.map +1 -0
  382. package/dist/components/ActivityFeed/index.d.cts +99 -0
  383. package/dist/components/ActivityFeed/index.d.ts +99 -0
  384. package/dist/components/ActivityFeed/index.js +18 -0
  385. package/dist/components/ActivityFeed/index.js.map +1 -0
  386. package/dist/components/Alert/index.d.cts +1 -1
  387. package/dist/components/Alert/index.d.ts +1 -1
  388. package/dist/components/AlertDialog/index.cjs +19 -5
  389. package/dist/components/AlertDialog/index.d.cts +94 -16
  390. package/dist/components/AlertDialog/index.d.ts +94 -16
  391. package/dist/components/AlertDialog/index.js +6 -4
  392. package/dist/components/AssociationList/index.cjs +29 -0
  393. package/dist/components/AssociationList/index.cjs.map +1 -0
  394. package/dist/components/AssociationList/index.d.cts +50 -0
  395. package/dist/components/AssociationList/index.d.ts +50 -0
  396. package/dist/components/AssociationList/index.js +16 -0
  397. package/dist/components/AssociationList/index.js.map +1 -0
  398. package/dist/components/AudioRecorder/index.d.cts +2 -2
  399. package/dist/components/AudioRecorder/index.d.ts +2 -2
  400. package/dist/components/Autocomplete/index.d.cts +8 -2
  401. package/dist/components/Autocomplete/index.d.ts +8 -2
  402. package/dist/components/Avatar/index.cjs +9 -7
  403. package/dist/components/Avatar/index.d.cts +46 -15
  404. package/dist/components/Avatar/index.d.ts +46 -15
  405. package/dist/components/Avatar/index.js +3 -1
  406. package/dist/components/AvatarGroup/index.cjs +20 -0
  407. package/dist/components/AvatarGroup/index.cjs.map +1 -0
  408. package/dist/components/AvatarGroup/index.d.cts +57 -0
  409. package/dist/components/AvatarGroup/index.d.ts +57 -0
  410. package/dist/components/AvatarGroup/index.js +7 -0
  411. package/dist/components/AvatarGroup/index.js.map +1 -0
  412. package/dist/components/Badge/index.cjs +3 -3
  413. package/dist/components/Badge/index.d.cts +16 -2
  414. package/dist/components/Badge/index.d.ts +16 -2
  415. package/dist/components/Badge/index.js +1 -1
  416. package/dist/components/BoardView/index.cjs +5 -4
  417. package/dist/components/BoardView/index.d.cts +2 -3
  418. package/dist/components/BoardView/index.d.ts +2 -3
  419. package/dist/components/BoardView/index.js +2 -1
  420. package/dist/components/Button/index.cjs +5 -3
  421. package/dist/components/Button/index.d.cts +2 -1
  422. package/dist/components/Button/index.d.ts +2 -1
  423. package/dist/components/Button/index.js +3 -1
  424. package/dist/components/CalendarHeatmap/index.cjs +18 -0
  425. package/dist/components/CalendarHeatmap/index.cjs.map +1 -0
  426. package/dist/components/CalendarHeatmap/index.d.cts +47 -0
  427. package/dist/components/CalendarHeatmap/index.d.ts +47 -0
  428. package/dist/components/CalendarHeatmap/index.js +5 -0
  429. package/dist/components/CalendarHeatmap/index.js.map +1 -0
  430. package/dist/components/CalendarView/index.cjs +6 -4
  431. package/dist/components/CalendarView/index.d.cts +1 -2
  432. package/dist/components/CalendarView/index.d.ts +1 -2
  433. package/dist/components/CalendarView/index.js +4 -2
  434. package/dist/components/Card/index.d.cts +3 -3
  435. package/dist/components/Card/index.d.ts +3 -3
  436. package/dist/components/ClampedText/index.cjs +3 -2
  437. package/dist/components/ClampedText/index.js +2 -1
  438. package/dist/components/CollabStatus/index.cjs +6 -4
  439. package/dist/components/CollabStatus/index.d.cts +11 -0
  440. package/dist/components/CollabStatus/index.d.ts +11 -0
  441. package/dist/components/CollabStatus/index.js +3 -1
  442. package/dist/components/Collapsible/index.cjs +6 -6
  443. package/dist/components/Collapsible/index.d.cts +6 -0
  444. package/dist/components/Collapsible/index.d.ts +6 -0
  445. package/dist/components/Collapsible/index.js +3 -3
  446. package/dist/components/CompletenessMeter/index.cjs +23 -0
  447. package/dist/components/CompletenessMeter/index.cjs.map +1 -0
  448. package/dist/components/CompletenessMeter/index.d.cts +52 -0
  449. package/dist/components/CompletenessMeter/index.d.ts +52 -0
  450. package/dist/components/CompletenessMeter/index.js +6 -0
  451. package/dist/components/CompletenessMeter/index.js.map +1 -0
  452. package/dist/components/CountryCodeDropdown/index.cjs +5 -5
  453. package/dist/components/CountryCodeDropdown/index.js +2 -2
  454. package/dist/components/CustomizableDashboard/index.cjs +12 -10
  455. package/dist/components/CustomizableDashboard/index.js +5 -3
  456. package/dist/components/DateInput/index.d.cts +36 -4
  457. package/dist/components/DateInput/index.d.ts +36 -4
  458. package/dist/components/Dropdown/index.cjs +12 -10
  459. package/dist/components/Dropdown/index.d.cts +6 -4
  460. package/dist/components/Dropdown/index.d.ts +6 -4
  461. package/dist/components/Dropdown/index.js +5 -3
  462. package/dist/components/EmailEditor/index.cjs +68 -0
  463. package/dist/components/EmailEditor/index.cjs.map +1 -0
  464. package/dist/components/EmailEditor/index.d.cts +347 -0
  465. package/dist/components/EmailEditor/index.d.ts +347 -0
  466. package/dist/components/EmailEditor/index.js +27 -0
  467. package/dist/components/EmailEditor/index.js.map +1 -0
  468. package/dist/components/FieldHistory/index.cjs +34 -0
  469. package/dist/components/FieldHistory/index.cjs.map +1 -0
  470. package/dist/components/FieldHistory/index.d.cts +66 -0
  471. package/dist/components/FieldHistory/index.d.ts +66 -0
  472. package/dist/components/FieldHistory/index.js +21 -0
  473. package/dist/components/FieldHistory/index.js.map +1 -0
  474. package/dist/components/FloatingWindow/index.cjs +6 -4
  475. package/dist/components/FloatingWindow/index.js +4 -2
  476. package/dist/components/GanttView/index.d.cts +1 -2
  477. package/dist/components/GanttView/index.d.ts +1 -2
  478. package/dist/components/GlossaryTooltip/index.cjs +3 -3
  479. package/dist/components/GlossaryTooltip/index.js +2 -2
  480. package/dist/components/InlineEdit/index.cjs +20 -0
  481. package/dist/components/InlineEdit/index.cjs.map +1 -0
  482. package/dist/components/InlineEdit/index.d.cts +56 -0
  483. package/dist/components/InlineEdit/index.d.ts +56 -0
  484. package/dist/components/InlineEdit/index.js +7 -0
  485. package/dist/components/InlineEdit/index.js.map +1 -0
  486. package/dist/components/KeyboardShortcutsOverlay/index.cjs +5 -5
  487. package/dist/components/KeyboardShortcutsOverlay/index.js +3 -3
  488. package/dist/components/ListView/index.cjs +6 -4
  489. package/dist/components/ListView/index.d.cts +91 -4
  490. package/dist/components/ListView/index.d.ts +91 -4
  491. package/dist/components/ListView/index.js +4 -2
  492. package/dist/components/LogoUploader/index.cjs +18 -0
  493. package/dist/components/LogoUploader/index.cjs.map +1 -0
  494. package/dist/components/LogoUploader/index.d.cts +49 -0
  495. package/dist/components/LogoUploader/index.d.ts +49 -0
  496. package/dist/components/LogoUploader/index.js +5 -0
  497. package/dist/components/LogoUploader/index.js.map +1 -0
  498. package/dist/components/Markdown/index.cjs +21 -19
  499. package/dist/components/Markdown/index.js +9 -7
  500. package/dist/components/MediaEditor/index.cjs +16 -14
  501. package/dist/components/MediaEditor/index.d.cts +91 -2
  502. package/dist/components/MediaEditor/index.d.ts +91 -2
  503. package/dist/components/MediaEditor/index.js +11 -9
  504. package/dist/components/MediaFeed/index.cjs +29 -0
  505. package/dist/components/MediaFeed/index.cjs.map +1 -0
  506. package/dist/components/MediaFeed/index.d.cts +104 -0
  507. package/dist/components/MediaFeed/index.d.ts +104 -0
  508. package/dist/components/MediaFeed/index.js +20 -0
  509. package/dist/components/MediaFeed/index.js.map +1 -0
  510. package/dist/components/MediaPlayer/index.cjs +8 -6
  511. package/dist/components/MediaPlayer/index.d.cts +19 -1
  512. package/dist/components/MediaPlayer/index.d.ts +19 -1
  513. package/dist/components/MediaPlayer/index.js +5 -3
  514. package/dist/components/MegaMenu/index.cjs +7 -5
  515. package/dist/components/MegaMenu/index.js +4 -2
  516. package/dist/components/Modal/index.cjs +10 -10
  517. package/dist/components/Modal/index.js +2 -2
  518. package/dist/components/Pagination/index.d.cts +1 -1
  519. package/dist/components/Pagination/index.d.ts +1 -1
  520. package/dist/components/PhiMask/index.cjs +18 -0
  521. package/dist/components/PhiMask/index.cjs.map +1 -0
  522. package/dist/components/PhiMask/index.d.cts +45 -0
  523. package/dist/components/PhiMask/index.d.ts +45 -0
  524. package/dist/components/PhiMask/index.js +5 -0
  525. package/dist/components/PhiMask/index.js.map +1 -0
  526. package/dist/components/Progress/index.cjs +6 -6
  527. package/dist/components/Progress/index.d.cts +8 -2
  528. package/dist/components/Progress/index.d.ts +8 -2
  529. package/dist/components/Progress/index.js +1 -1
  530. package/dist/components/PropertyList/index.cjs +25 -0
  531. package/dist/components/PropertyList/index.cjs.map +1 -0
  532. package/dist/components/PropertyList/index.d.cts +87 -0
  533. package/dist/components/PropertyList/index.d.ts +87 -0
  534. package/dist/components/PropertyList/index.js +12 -0
  535. package/dist/components/PropertyList/index.js.map +1 -0
  536. package/dist/components/Q/index.d.cts +2 -2
  537. package/dist/components/Q/index.d.ts +2 -2
  538. package/dist/components/QuickAction/index.d.cts +1 -1
  539. package/dist/components/QuickAction/index.d.ts +1 -1
  540. package/dist/components/RadialExplorer/index.cjs +7 -5
  541. package/dist/components/RadialExplorer/index.js +6 -4
  542. package/dist/components/Rating/index.cjs +28 -0
  543. package/dist/components/Rating/index.cjs.map +1 -0
  544. package/dist/components/Rating/index.d.cts +85 -0
  545. package/dist/components/Rating/index.d.ts +85 -0
  546. package/dist/components/Rating/index.js +7 -0
  547. package/dist/components/Rating/index.js.map +1 -0
  548. package/dist/components/RecordButton/index.d.cts +1 -1
  549. package/dist/components/RecordButton/index.d.ts +1 -1
  550. package/dist/components/RecordHeader/index.cjs +30 -0
  551. package/dist/components/RecordHeader/index.cjs.map +1 -0
  552. package/dist/components/RecordHeader/index.d.cts +96 -0
  553. package/dist/components/RecordHeader/index.d.ts +96 -0
  554. package/dist/components/RecordHeader/index.js +17 -0
  555. package/dist/components/RecordHeader/index.js.map +1 -0
  556. package/dist/components/RecordLayout/index.cjs +22 -0
  557. package/dist/components/RecordLayout/index.cjs.map +1 -0
  558. package/dist/components/RecordLayout/index.d.cts +40 -0
  559. package/dist/components/RecordLayout/index.d.ts +40 -0
  560. package/dist/components/RecordLayout/index.js +9 -0
  561. package/dist/components/RecordLayout/index.js.map +1 -0
  562. package/dist/components/RichTextEditor/index.cjs +12 -8
  563. package/dist/components/RichTextEditor/index.d.cts +12 -2
  564. package/dist/components/RichTextEditor/index.d.ts +12 -2
  565. package/dist/components/RichTextEditor/index.js +9 -5
  566. package/dist/components/ScrollArea/index.d.cts +1 -1
  567. package/dist/components/ScrollArea/index.d.ts +1 -1
  568. package/dist/components/SectionSpyNav/index.cjs +5 -3
  569. package/dist/components/SectionSpyNav/index.js +4 -2
  570. package/dist/components/Select/index.cjs +4 -4
  571. package/dist/components/Select/index.d.cts +2 -2
  572. package/dist/components/Select/index.d.ts +2 -2
  573. package/dist/components/Select/index.js +2 -2
  574. package/dist/components/Skeleton/index.d.cts +1 -1
  575. package/dist/components/Skeleton/index.d.ts +1 -1
  576. package/dist/components/Slider/index.d.cts +2 -2
  577. package/dist/components/Slider/index.d.ts +2 -2
  578. package/dist/components/SliderCalculator/index.cjs +4 -4
  579. package/dist/components/SliderCalculator/index.js +2 -2
  580. package/dist/components/SourceTip/index.cjs +3 -3
  581. package/dist/components/SourceTip/index.js +2 -2
  582. package/dist/components/Spinner/index.d.cts +2 -2
  583. package/dist/components/Spinner/index.d.ts +2 -2
  584. package/dist/components/SuperChat/index.cjs +735 -322
  585. package/dist/components/SuperChat/index.cjs.map +1 -1
  586. package/dist/components/SuperChat/index.d.cts +126 -8
  587. package/dist/components/SuperChat/index.d.ts +126 -8
  588. package/dist/components/SuperChat/index.js +721 -308
  589. package/dist/components/SuperChat/index.js.map +1 -1
  590. package/dist/components/SuperChat/plugins/index.cjs +8 -6
  591. package/dist/components/SuperChat/plugins/index.cjs.map +1 -1
  592. package/dist/components/SuperChat/plugins/index.d.cts +2 -3
  593. package/dist/components/SuperChat/plugins/index.d.ts +2 -3
  594. package/dist/components/SuperChat/plugins/index.js +7 -5
  595. package/dist/components/SuperChat/plugins/index.js.map +1 -1
  596. package/dist/components/Tabs/index.cjs +10 -7
  597. package/dist/components/Tabs/index.d.cts +12 -1
  598. package/dist/components/Tabs/index.d.ts +12 -1
  599. package/dist/components/Tabs/index.js +4 -1
  600. package/dist/components/TagEditor/index.cjs +22 -0
  601. package/dist/components/TagEditor/index.cjs.map +1 -0
  602. package/dist/components/TagEditor/index.d.cts +46 -0
  603. package/dist/components/TagEditor/index.d.ts +46 -0
  604. package/dist/components/TagEditor/index.js +9 -0
  605. package/dist/components/TagEditor/index.js.map +1 -0
  606. package/dist/components/Text/index.d.cts +3 -3
  607. package/dist/components/Text/index.d.ts +3 -3
  608. package/dist/components/Textarea/index.d.cts +2 -2
  609. package/dist/components/Textarea/index.d.ts +2 -2
  610. package/dist/components/ThemeProvider/index.cjs +9 -9
  611. package/dist/components/ThemeProvider/index.d.cts +3 -1
  612. package/dist/components/ThemeProvider/index.d.ts +3 -1
  613. package/dist/components/ThemeProvider/index.js +3 -3
  614. package/dist/components/Tooltip/index.cjs +3 -3
  615. package/dist/components/Tooltip/index.js +2 -2
  616. package/dist/components/TranscriptView/index.d.cts +85 -4
  617. package/dist/components/TranscriptView/index.d.ts +85 -4
  618. package/dist/components/UserPicker/index.cjs +24 -0
  619. package/dist/components/UserPicker/index.cjs.map +1 -0
  620. package/dist/components/UserPicker/index.d.cts +60 -0
  621. package/dist/components/UserPicker/index.d.ts +60 -0
  622. package/dist/components/UserPicker/index.js +11 -0
  623. package/dist/components/UserPicker/index.js.map +1 -0
  624. package/dist/components/VideoCard/index.cjs +4 -4
  625. package/dist/components/VideoCard/index.js +2 -2
  626. package/dist/components/ViewSet/index.cjs +10 -7
  627. package/dist/components/ViewSet/index.d.cts +120 -8
  628. package/dist/components/ViewSet/index.d.ts +120 -8
  629. package/dist/components/ViewSet/index.js +9 -6
  630. package/dist/components/ViewSwitcher/index.cjs +4 -3
  631. package/dist/components/ViewSwitcher/index.d.cts +1 -2
  632. package/dist/components/ViewSwitcher/index.d.ts +1 -2
  633. package/dist/components/ViewSwitcher/index.js +2 -1
  634. package/dist/components/YearTimeline/index.cjs +5 -5
  635. package/dist/components/YearTimeline/index.js +1 -1
  636. package/dist/datavis.cjs +6 -4
  637. package/dist/datavis.cjs.map +1 -1
  638. package/dist/datavis.d.cts +167 -13
  639. package/dist/datavis.d.ts +167 -13
  640. package/dist/datavis.js +4 -2
  641. package/dist/datavis.js.map +1 -1
  642. package/dist/deck.cjs +3374 -0
  643. package/dist/deck.cjs.map +1 -0
  644. package/dist/deck.d.cts +712 -0
  645. package/dist/deck.d.ts +712 -0
  646. package/dist/deck.js +3330 -0
  647. package/dist/deck.js.map +1 -0
  648. package/dist/esheet.cjs +20 -16
  649. package/dist/esheet.cjs.map +1 -1
  650. package/dist/esheet.d.cts +183 -1
  651. package/dist/esheet.d.ts +183 -1
  652. package/dist/esheet.js +17 -13
  653. package/dist/esheet.js.map +1 -1
  654. package/dist/globe.cjs +2 -2
  655. package/dist/globe.js +1 -1
  656. package/dist/{hey-buddy-INNUFFJJ.cjs → hey-buddy-5WOBYZRJ.cjs} +22 -11
  657. package/dist/hey-buddy-5WOBYZRJ.cjs.map +1 -0
  658. package/dist/{hey-buddy-V6FC5UKB.js → hey-buddy-AHUHCDBC.js} +22 -11
  659. package/dist/hey-buddy-AHUHCDBC.js.map +1 -0
  660. package/dist/hooks/index.cjs +88 -33
  661. package/dist/hooks/index.d.cts +592 -36
  662. package/dist/hooks/index.d.ts +592 -36
  663. package/dist/hooks/index.js +9 -6
  664. package/dist/icons-wBacj6BW.d.cts +142 -0
  665. package/dist/icons-wBacj6BW.d.ts +142 -0
  666. package/dist/index.cjs +2056 -1349
  667. package/dist/index.cjs.map +1 -1
  668. package/dist/index.d.cts +10401 -637
  669. package/dist/index.d.ts +10401 -637
  670. package/dist/index.js +674 -352
  671. package/dist/index.js.map +1 -1
  672. package/dist/kerebron.css +115 -0
  673. package/dist/maps.cjs +160 -0
  674. package/dist/maps.cjs.map +1 -0
  675. package/dist/maps.d.cts +42 -0
  676. package/dist/maps.d.ts +42 -0
  677. package/dist/maps.js +138 -0
  678. package/dist/maps.js.map +1 -0
  679. package/dist/motion.cjs +7 -7
  680. package/dist/motion.d.cts +186 -2
  681. package/dist/motion.d.ts +186 -2
  682. package/dist/motion.js +2 -2
  683. package/dist/org-chart.cjs +1303 -0
  684. package/dist/org-chart.cjs.map +1 -0
  685. package/dist/org-chart.d.cts +164 -0
  686. package/dist/org-chart.d.ts +164 -0
  687. package/dist/org-chart.js +1278 -0
  688. package/dist/org-chart.js.map +1 -0
  689. package/dist/q.d.cts +25 -3
  690. package/dist/q.d.ts +25 -3
  691. package/dist/styles/effects.css +133 -0
  692. package/dist/styles/init.css +22 -3
  693. package/dist/styles.css +1 -1
  694. package/dist/tailwind-preset.cjs +4 -4
  695. package/dist/tailwind-preset.js +1 -1
  696. package/dist/templates.cjs +156 -0
  697. package/dist/templates.cjs.map +1 -0
  698. package/dist/templates.d.cts +734 -0
  699. package/dist/templates.d.ts +734 -0
  700. package/dist/templates.js +11 -0
  701. package/dist/templates.js.map +1 -0
  702. package/dist/{types-CbWXIKbe.d.cts → types-CDeBNZiE.d.cts} +1 -28
  703. package/dist/{types-CbWXIKbe.d.ts → types-CDeBNZiE.d.ts} +1 -28
  704. package/dist/types-Cx1FHLq2.d.cts +548 -0
  705. package/dist/types-Cx1FHLq2.d.ts +548 -0
  706. package/dist/types-DsdZvEI1.d.cts +92 -0
  707. package/dist/types-DsdZvEI1.d.ts +92 -0
  708. package/dist/utils/index.cjs +9 -9
  709. package/dist/utils/index.d.cts +13 -2
  710. package/dist/utils/index.d.ts +13 -2
  711. package/dist/utils/index.js +1 -1
  712. package/package.json +79 -15
  713. package/dist/Animated-XmH6k8pZ.d.cts +0 -188
  714. package/dist/Animated-XmH6k8pZ.d.ts +0 -188
  715. package/dist/CsvBlock-ROJCKJDP.cjs +0 -16
  716. package/dist/CsvBlock-UWPMTLE2.js +0 -7
  717. package/dist/HtmlPreviewBlock-DWFN6EUB.cjs +0 -16
  718. package/dist/HtmlPreviewBlock-ME5U3XNS.js +0 -7
  719. package/dist/MedicationEditor-Bp4NLy7y.d.cts +0 -352
  720. package/dist/MedicationEditor-Bp4NLy7y.d.ts +0 -352
  721. package/dist/MermaidBlock-2B6CPD6Y.js +0 -7
  722. package/dist/MermaidBlock-D2UC5M55.cjs +0 -16
  723. package/dist/SurveyBlock-4CD4AYMJ.cjs +0 -16
  724. package/dist/SurveyBlock-4DO62RBT.js +0 -7
  725. package/dist/chunk-2IZLKPUW.js.map +0 -1
  726. package/dist/chunk-3T7QGLNB.js.map +0 -1
  727. package/dist/chunk-4A3W4TQF.js.map +0 -1
  728. package/dist/chunk-4IS3QCOQ.cjs.map +0 -1
  729. package/dist/chunk-5GUOOLPR.cjs.map +0 -1
  730. package/dist/chunk-5JJ2DAE4.js.map +0 -1
  731. package/dist/chunk-6EN3IQQI.cjs.map +0 -1
  732. package/dist/chunk-6HFFWEM3.cjs +0 -22
  733. package/dist/chunk-6HFFWEM3.cjs.map +0 -1
  734. package/dist/chunk-7ZDPD5ZX.cjs.map +0 -1
  735. package/dist/chunk-7ZVTLTJF.js +0 -109
  736. package/dist/chunk-7ZVTLTJF.js.map +0 -1
  737. package/dist/chunk-ACCAXVOG.js.map +0 -1
  738. package/dist/chunk-AR7AKDM2.cjs +0 -143
  739. package/dist/chunk-AR7AKDM2.cjs.map +0 -1
  740. package/dist/chunk-ASSDGS4F.cjs.map +0 -1
  741. package/dist/chunk-AWJBOND5.js +0 -130
  742. package/dist/chunk-AWJBOND5.js.map +0 -1
  743. package/dist/chunk-BMSG4NBH.js +0 -56
  744. package/dist/chunk-BMSG4NBH.js.map +0 -1
  745. package/dist/chunk-CEQJGUAS.js.map +0 -1
  746. package/dist/chunk-CR2SDI23.cjs.map +0 -1
  747. package/dist/chunk-DVOQ3JNO.js.map +0 -1
  748. package/dist/chunk-E4IBHYJ7.cjs +0 -80
  749. package/dist/chunk-E4IBHYJ7.cjs.map +0 -1
  750. package/dist/chunk-FS4VZUFV.cjs.map +0 -1
  751. package/dist/chunk-GD7EBGC4.cjs.map +0 -1
  752. package/dist/chunk-GOALNQZ2.js.map +0 -1
  753. package/dist/chunk-HACNIFO3.js.map +0 -1
  754. package/dist/chunk-HB7C7NB5.js +0 -20
  755. package/dist/chunk-HB7C7NB5.js.map +0 -1
  756. package/dist/chunk-HZ4MBUC3.js.map +0 -1
  757. package/dist/chunk-IT775BYG.js.map +0 -1
  758. package/dist/chunk-JEIW7BSV.cjs.map +0 -1
  759. package/dist/chunk-JYZW2PZS.cjs.map +0 -1
  760. package/dist/chunk-KQUI4BGS.cjs.map +0 -1
  761. package/dist/chunk-KRU6IGV7.js.map +0 -1
  762. package/dist/chunk-NV2CWBI2.cjs.map +0 -1
  763. package/dist/chunk-OE5CKRUC.js.map +0 -1
  764. package/dist/chunk-P2CA3XGI.js.map +0 -1
  765. package/dist/chunk-P7UMS4E6.cjs.map +0 -1
  766. package/dist/chunk-SGFYA22I.cjs.map +0 -1
  767. package/dist/chunk-SQHMGT4W.js.map +0 -1
  768. package/dist/chunk-SQJFBZ42.js.map +0 -1
  769. package/dist/chunk-SVSHA7XV.js.map +0 -1
  770. package/dist/chunk-TVTIGV7Q.js.map +0 -1
  771. package/dist/chunk-VKELAMAZ.js.map +0 -1
  772. package/dist/chunk-VNYW4C4J.cjs.map +0 -1
  773. package/dist/chunk-VOKVG3ER.js +0 -78
  774. package/dist/chunk-VOKVG3ER.js.map +0 -1
  775. package/dist/chunk-VPIYTQCV.cjs.map +0 -1
  776. package/dist/chunk-VPWJCJCX.cjs.map +0 -1
  777. package/dist/chunk-VROIMIHB.cjs.map +0 -1
  778. package/dist/chunk-WNJRS7Y7.cjs.map +0 -1
  779. package/dist/chunk-X4LBUPJO.cjs.map +0 -1
  780. package/dist/chunk-X4XPNTCZ.cjs.map +0 -1
  781. package/dist/chunk-XCP454Q6.js.map +0 -1
  782. package/dist/chunk-XDIMTPZU.cjs.map +0 -1
  783. package/dist/chunk-XEAT7XJG.cjs.map +0 -1
  784. package/dist/chunk-XVW5DPPP.js.map +0 -1
  785. package/dist/chunk-Y5HFM7LO.js.map +0 -1
  786. package/dist/chunk-YVL3XATO.cjs +0 -79
  787. package/dist/chunk-YVL3XATO.cjs.map +0 -1
  788. package/dist/chunk-YVPC65ZJ.cjs.map +0 -1
  789. package/dist/chunk-ZGRCSNPK.js.map +0 -1
  790. package/dist/hey-buddy-INNUFFJJ.cjs.map +0 -1
  791. package/dist/hey-buddy-V6FC5UKB.js.map +0 -1
  792. package/dist/html-MdxqSzjD.d.cts +0 -13
  793. package/dist/html-MdxqSzjD.d.ts +0 -13
  794. package/dist/orderRows-BUJYgSc7.d.cts +0 -221
  795. package/dist/orderRows-BUJYgSc7.d.ts +0 -221
  796. package/dist/transcript-Cg7uSW-C.d.cts +0 -84
  797. package/dist/transcript-Cg7uSW-C.d.ts +0 -84
  798. package/dist/types-B97JNRNQ.d.cts +0 -251
  799. package/dist/types-CnPEwzlp.d.cts +0 -254
  800. package/dist/types-CnPEwzlp.d.ts +0 -254
  801. package/dist/types-gZXrfLj6.d.ts +0 -251
  802. package/dist/useAnchoredPosition-CKwLSQW8.d.cts +0 -76
  803. package/dist/useAnchoredPosition-CKwLSQW8.d.ts +0 -76
  804. package/dist/useTheme-B9SWu6ui.d.cts +0 -24
  805. package/dist/useTheme-B9SWu6ui.d.ts +0 -24
  806. package/dist/useTranscriptEdits-CGzlemHT.d.cts +0 -182
  807. package/dist/useTranscriptEdits-D32bLs0l.d.ts +0 -182
@@ -0,0 +1,281 @@
1
+ import * as React from 'react';
2
+ import { useState, useEffect, useCallback } from 'react';
3
+
4
+ // src/hooks/useKeyboardInset.ts
5
+ var KEYBOARD_INSET_VAR = "--mieweb-keyboard-inset";
6
+ var VISUAL_VIEWPORT_HEIGHT_VAR = "--mieweb-visual-viewport-height";
7
+ var VISUAL_VIEWPORT_OFFSET_TOP_VAR = "--mieweb-visual-viewport-offset-top";
8
+ var KEYBOARD_OPEN_ATTRIBUTE = "data-keyboard-open";
9
+ var KEYBOARD_SOURCE_ATTRIBUTE = "data-keyboard-source";
10
+ var CLOSED = { keyboardInset: 0, isKeyboardOpen: false };
11
+ function useKeyboardInset(options = {}) {
12
+ const { enabled = true, source = "visual-viewport" } = options;
13
+ const [state, setState] = useState(CLOSED);
14
+ useEffect(() => {
15
+ if (!enabled || typeof window === "undefined") return;
16
+ const root = document.documentElement;
17
+ const publish = (keyboardInset) => {
18
+ const isKeyboardOpen = keyboardInset > 0;
19
+ root.style.setProperty(KEYBOARD_INSET_VAR, `${keyboardInset}px`);
20
+ root.toggleAttribute(KEYBOARD_OPEN_ATTRIBUTE, isKeyboardOpen);
21
+ setState(
22
+ (previous) => previous.keyboardInset === keyboardInset ? previous : { keyboardInset, isKeyboardOpen }
23
+ );
24
+ };
25
+ const clear = () => {
26
+ root.style.removeProperty(KEYBOARD_INSET_VAR);
27
+ root.style.removeProperty(VISUAL_VIEWPORT_HEIGHT_VAR);
28
+ root.style.removeProperty(VISUAL_VIEWPORT_OFFSET_TOP_VAR);
29
+ root.removeAttribute(KEYBOARD_OPEN_ATTRIBUTE);
30
+ root.removeAttribute(KEYBOARD_SOURCE_ATTRIBUTE);
31
+ setState(CLOSED);
32
+ };
33
+ if (source === "native") {
34
+ const handleWillShow = (event) => {
35
+ publish(
36
+ Math.max(
37
+ 0,
38
+ Math.round(event.keyboardHeight ?? 0)
39
+ )
40
+ );
41
+ };
42
+ const handleWillHide = () => publish(0);
43
+ root.setAttribute(KEYBOARD_SOURCE_ATTRIBUTE, source);
44
+ publish(0);
45
+ window.addEventListener("keyboardWillShow", handleWillShow);
46
+ window.addEventListener("keyboardWillHide", handleWillHide);
47
+ return () => {
48
+ window.removeEventListener("keyboardWillShow", handleWillShow);
49
+ window.removeEventListener("keyboardWillHide", handleWillHide);
50
+ clear();
51
+ };
52
+ }
53
+ const viewport = window.visualViewport;
54
+ if (!viewport) return;
55
+ let frame = 0;
56
+ const measure = () => {
57
+ frame = 0;
58
+ const zoomed = Math.abs(viewport.scale - 1) > 0.01;
59
+ const keyboardInset = zoomed ? 0 : Math.max(
60
+ 0,
61
+ Math.round(
62
+ window.innerHeight - viewport.height - viewport.offsetTop
63
+ )
64
+ );
65
+ root.style.setProperty(
66
+ VISUAL_VIEWPORT_HEIGHT_VAR,
67
+ `${zoomed ? window.innerHeight : Math.round(viewport.height)}px`
68
+ );
69
+ root.style.setProperty(
70
+ VISUAL_VIEWPORT_OFFSET_TOP_VAR,
71
+ `${zoomed ? 0 : Math.round(viewport.offsetTop)}px`
72
+ );
73
+ publish(keyboardInset);
74
+ };
75
+ const schedule = () => {
76
+ if (frame === 0) frame = requestAnimationFrame(measure);
77
+ };
78
+ root.setAttribute(KEYBOARD_SOURCE_ATTRIBUTE, source);
79
+ measure();
80
+ viewport.addEventListener("resize", schedule);
81
+ viewport.addEventListener("scroll", schedule);
82
+ return () => {
83
+ cancelAnimationFrame(frame);
84
+ viewport.removeEventListener("resize", schedule);
85
+ viewport.removeEventListener("scroll", schedule);
86
+ clear();
87
+ };
88
+ }, [enabled, source]);
89
+ return state;
90
+ }
91
+ function useKeyboardShortcut(key, callback, options = {}) {
92
+ const {
93
+ enabled = true,
94
+ modifiers = {},
95
+ preventDefault = true,
96
+ stopPropagation = false,
97
+ ignoreInputs = true
98
+ } = options;
99
+ const handleKeyDown = useCallback(
100
+ (event) => {
101
+ if (ignoreInputs) {
102
+ const target = event.target;
103
+ const tagName = target.tagName.toUpperCase();
104
+ if (tagName === "INPUT" || tagName === "TEXTAREA" || tagName === "SELECT" || target.isContentEditable) {
105
+ return;
106
+ }
107
+ }
108
+ const { ctrl, shift, alt, meta } = modifiers;
109
+ const metaOrCtrl = meta || ctrl;
110
+ if (metaOrCtrl) {
111
+ if (!(event.metaKey || event.ctrlKey)) return;
112
+ } else {
113
+ if (event.metaKey || event.ctrlKey) return;
114
+ }
115
+ if (shift && !event.shiftKey) return;
116
+ if (alt && !event.altKey) return;
117
+ const eventKey = event.key.length === 1 ? event.key.toLowerCase() : event.key;
118
+ const targetKey = key.length === 1 ? key.toLowerCase() : key;
119
+ if (eventKey !== targetKey) return;
120
+ if (preventDefault) {
121
+ event.preventDefault();
122
+ }
123
+ if (stopPropagation) {
124
+ event.stopPropagation();
125
+ }
126
+ callback(event);
127
+ },
128
+ [key, callback, modifiers, preventDefault, stopPropagation, ignoreInputs]
129
+ );
130
+ useEffect(() => {
131
+ if (!enabled) return;
132
+ document.addEventListener("keydown", handleKeyDown);
133
+ return () => document.removeEventListener("keydown", handleKeyDown);
134
+ }, [handleKeyDown, enabled]);
135
+ }
136
+ function useCommandK(callback, enabled = true) {
137
+ useKeyboardShortcut("k", callback, {
138
+ enabled,
139
+ modifiers: { meta: true, ctrl: true },
140
+ ignoreInputs: false
141
+ // Cmd+K should work even in inputs
142
+ });
143
+ }
144
+ function useMediaQuery(query) {
145
+ const [matches, setMatches] = useState(() => {
146
+ if (typeof window === "undefined") return false;
147
+ return window.matchMedia(query).matches;
148
+ });
149
+ useEffect(() => {
150
+ if (typeof window === "undefined") return;
151
+ const mediaQuery = window.matchMedia(query);
152
+ setMatches(mediaQuery.matches);
153
+ const handler = (event) => {
154
+ setMatches(event.matches);
155
+ };
156
+ if (mediaQuery.addEventListener) {
157
+ mediaQuery.addEventListener("change", handler);
158
+ return () => mediaQuery.removeEventListener("change", handler);
159
+ }
160
+ mediaQuery.addListener(handler);
161
+ return () => mediaQuery.removeListener(handler);
162
+ }, [query]);
163
+ return matches;
164
+ }
165
+ function useIsMobile() {
166
+ return useMediaQuery("(max-width: 639px)");
167
+ }
168
+ function useIsSmallTablet() {
169
+ return useMediaQuery("(min-width: 640px) and (max-width: 767px)");
170
+ }
171
+ function useIsTablet() {
172
+ return useMediaQuery("(min-width: 768px) and (max-width: 1023px)");
173
+ }
174
+ function useIsDesktop() {
175
+ return useMediaQuery("(min-width: 1024px)");
176
+ }
177
+ function useIsLargeDesktop() {
178
+ return useMediaQuery("(min-width: 1280px)");
179
+ }
180
+ function useIsMobileOrTablet() {
181
+ return useMediaQuery("(max-width: 1023px)");
182
+ }
183
+ function mergeOrder(saved, ids) {
184
+ if (!saved) return ids;
185
+ const known = new Set(ids);
186
+ const kept = [...new Set(saved)].filter((id) => known.has(id));
187
+ const keptSet = new Set(kept);
188
+ return [...kept, ...ids.filter((id) => !keptSet.has(id))];
189
+ }
190
+ function useOrderPersistence(ids, { load, save, debounceMs = 500, onError }) {
191
+ const [saved, setSaved] = React.useState(null);
192
+ const callbacks = React.useRef({ load, save, onError });
193
+ callbacks.current = { load, save, onError };
194
+ const pending = React.useRef(null);
195
+ const timer = React.useRef(
196
+ void 0
197
+ );
198
+ const touched = React.useRef(false);
199
+ const saving = React.useRef(0);
200
+ const lastStarted = React.useRef(null);
201
+ const overlapped = React.useRef(false);
202
+ const flush = React.useCallback(function flushPending(force = false) {
203
+ clearTimeout(timer.current);
204
+ const next = pending.current;
205
+ if (!next || saving.current > 0 && !force) return;
206
+ pending.current = null;
207
+ if (saving.current > 0) overlapped.current = true;
208
+ saving.current += 1;
209
+ lastStarted.current = next;
210
+ const { save: run, onError: fail } = callbacks.current;
211
+ let result;
212
+ try {
213
+ result = run(next);
214
+ } catch (e) {
215
+ result = Promise.reject(e);
216
+ }
217
+ void Promise.resolve(result).catch((e) => fail?.(e)).finally(() => {
218
+ saving.current -= 1;
219
+ if (saving.current > 0) return;
220
+ if (overlapped.current) {
221
+ overlapped.current = false;
222
+ pending.current ??= lastStarted.current;
223
+ }
224
+ flushPending();
225
+ });
226
+ }, []);
227
+ React.useEffect(() => {
228
+ let active = true;
229
+ const { load: read, onError: fail } = callbacks.current;
230
+ Promise.resolve().then(read).then((value) => {
231
+ if (active && value && !touched.current) setSaved(value);
232
+ }).catch((e) => fail?.(e));
233
+ return () => {
234
+ active = false;
235
+ flush();
236
+ };
237
+ }, [flush]);
238
+ React.useEffect(() => {
239
+ const onPageHide = () => flush(true);
240
+ window.addEventListener("pagehide", onPageHide);
241
+ return () => window.removeEventListener("pagehide", onPageHide);
242
+ }, [flush]);
243
+ const setOrder = React.useCallback(
244
+ (next) => {
245
+ touched.current = true;
246
+ setSaved(next);
247
+ pending.current = next;
248
+ clearTimeout(timer.current);
249
+ timer.current = setTimeout(flush, debounceMs);
250
+ },
251
+ [debounceMs, flush]
252
+ );
253
+ const order = React.useMemo(() => mergeOrder(saved, ids), [saved, ids]);
254
+ return { order, setOrder };
255
+ }
256
+ function localStorageOrderAdapter(key) {
257
+ return {
258
+ load: () => {
259
+ try {
260
+ if (typeof window === "undefined") return null;
261
+ const raw = JSON.parse(
262
+ window.localStorage.getItem(key) ?? "null"
263
+ );
264
+ return Array.isArray(raw) && raw.every((v) => typeof v === "string") ? raw : null;
265
+ } catch {
266
+ return null;
267
+ }
268
+ },
269
+ save: (order) => {
270
+ try {
271
+ if (typeof window !== "undefined")
272
+ window.localStorage.setItem(key, JSON.stringify(order));
273
+ } catch {
274
+ }
275
+ }
276
+ };
277
+ }
278
+
279
+ export { KEYBOARD_INSET_VAR, KEYBOARD_OPEN_ATTRIBUTE, KEYBOARD_SOURCE_ATTRIBUTE, VISUAL_VIEWPORT_HEIGHT_VAR, VISUAL_VIEWPORT_OFFSET_TOP_VAR, localStorageOrderAdapter, mergeOrder, useCommandK, useIsDesktop, useIsLargeDesktop, useIsMobile, useIsMobileOrTablet, useIsSmallTablet, useIsTablet, useKeyboardInset, useKeyboardShortcut, useMediaQuery, useOrderPersistence };
280
+ //# sourceMappingURL=chunk-YG7BR76Y.js.map
281
+ //# sourceMappingURL=chunk-YG7BR76Y.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/useKeyboardInset.ts","../src/hooks/useKeyboardShortcut.ts","../src/hooks/useMediaQuery.ts","../src/hooks/useOrderPersistence.ts"],"names":["useEffect","useState"],"mappings":"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","file":"chunk-YG7BR76Y.js","sourcesContent":["import { useEffect, useState } from 'react';\n\n/** CSS custom properties written to `<html>` while the hook is mounted. */\nexport const KEYBOARD_INSET_VAR = '--mieweb-keyboard-inset';\nexport const VISUAL_VIEWPORT_HEIGHT_VAR = '--mieweb-visual-viewport-height';\nexport const VISUAL_VIEWPORT_OFFSET_TOP_VAR =\n '--mieweb-visual-viewport-offset-top';\n/** Boolean attribute set on `<html>` while an on-screen keyboard is open. */\nexport const KEYBOARD_OPEN_ATTRIBUTE = 'data-keyboard-open';\n/** Attribute on `<html>` naming the active {@link KeyboardInsetSource}. */\nexport const KEYBOARD_SOURCE_ATTRIBUTE = 'data-keyboard-source';\n\n/**\n * Where keyboard metrics come from.\n *\n * - `'visual-viewport'` — the Visual Viewport API. Works in any browser, but\n * iOS only reports the keyboard once its slide-in animation has finished.\n * - `'native'` — `keyboardWillShow` / `keyboardWillHide` window events with a\n * `keyboardHeight` property, as fired by `cordova-plugin-ionic-keyboard` and\n * Capacitor's Keyboard plugin. They arrive *before* the keyboard animates,\n * so layout can move in step with it.\n */\nexport type KeyboardInsetSource = 'visual-viewport' | 'native';\n\nexport interface KeyboardInsetState {\n /** Pixels of the layout viewport covered by the on-screen keyboard. */\n keyboardInset: number;\n /** Whether an on-screen keyboard currently covers part of the page. */\n isKeyboardOpen: boolean;\n}\n\nexport interface UseKeyboardInsetOptions {\n /** Track the keyboard; `false` stops tracking and clears the CSS variables. @default true */\n enabled?: boolean;\n /** Where keyboard metrics come from. @default 'visual-viewport' */\n source?: KeyboardInsetSource;\n}\n\ninterface NativeKeyboardEvent extends Event {\n keyboardHeight?: number;\n}\n\nconst CLOSED: KeyboardInsetState = { keyboardInset: 0, isKeyboardOpen: false };\n\n/**\n * Tracks the on-screen keyboard and publishes it on `<html>`.\n *\n * ### `source: 'native'` (Cordova / Capacitor apps)\n *\n * Listens for the native keyboard plugin's `keyboardWillShow` /\n * `keyboardWillHide` window events. Configure the plugin so the WebView is\n * neither resized nor panned (for `cordova-plugin-ionic-keyboard`:\n * `KeyboardResize=false`), keep the app shell at full height, and move only\n * the composer dock by `--mieweb-keyboard-inset` with a short transition\n * (~250ms) so it rides up with the keyboard. Only `--mieweb-keyboard-inset`,\n * `data-keyboard-open` and `data-keyboard-source` are published; the\n * visual-viewport variables stay unset.\n *\n * ### `source: 'visual-viewport'` (browsers, default)\n *\n * Uses the Visual Viewport API.\n *\n * iOS Safari and WKWebView (Cordova) ignore\n * `interactive-widget=resizes-content`, and `dvh` does not shrink for the\n * keyboard: the page keeps its full height and iOS pans the visual viewport\n * to reveal the focused input, pushing headers off-screen. This hook\n * measures what is actually visible and publishes it on `<html>` so an app\n * shell can follow the visible area instead:\n *\n * - `--mieweb-keyboard-inset` — keyboard height in px (0 when closed)\n * - `--mieweb-visual-viewport-height` — visible height in px\n * - `--mieweb-visual-viewport-offset-top` — how far iOS panned the page\n * - `data-keyboard-open` — present while the keyboard is open\n *\n * On browsers that already resize the layout for the keyboard (Chrome on\n * Android with `interactive-widget=resizes-content`) the inset stays 0 and\n * the variables simply mirror the layout viewport.\n *\n * iOS reports the visual viewport only after the keyboard has finished\n * animating, so a shell sized this way snaps into place once the keyboard\n * lands. Prefer `source: 'native'` wherever a native keyboard plugin exists.\n *\n * Mount it once, near the app root.\n *\n * @example\n * ```tsx\n * function AppShell({ children }) {\n * useKeyboardInset();\n * return (\n * <div\n * style={{\n * height: 'var(--mieweb-visual-viewport-height, 100dvh)',\n * transform: 'translateY(var(--mieweb-visual-viewport-offset-top, 0px))',\n * }}\n * >\n * {children}\n * </div>\n * );\n * }\n * ```\n *\n * @example Native app (keyboard plugin with WebView resizing disabled)\n * ```tsx\n * function ComposerDock({ children }) {\n * useKeyboardInset({ source: 'native' });\n * return (\n * <div\n * style={{\n * paddingBottom: 'calc(var(--mieweb-keyboard-inset, 0px) + 0.5rem)',\n * transition: 'padding-bottom 250ms ease',\n * }}\n * >\n * {children}\n * </div>\n * );\n * }\n * ```\n */\nexport function useKeyboardInset(\n options: UseKeyboardInsetOptions = {}\n): KeyboardInsetState {\n const { enabled = true, source = 'visual-viewport' } = options;\n const [state, setState] = useState<KeyboardInsetState>(CLOSED);\n\n useEffect(() => {\n if (!enabled || typeof window === 'undefined') return;\n const root = document.documentElement;\n\n const publish = (keyboardInset: number) => {\n const isKeyboardOpen = keyboardInset > 0;\n root.style.setProperty(KEYBOARD_INSET_VAR, `${keyboardInset}px`);\n root.toggleAttribute(KEYBOARD_OPEN_ATTRIBUTE, isKeyboardOpen);\n setState((previous) =>\n previous.keyboardInset === keyboardInset\n ? previous\n : { keyboardInset, isKeyboardOpen }\n );\n };\n\n const clear = () => {\n root.style.removeProperty(KEYBOARD_INSET_VAR);\n root.style.removeProperty(VISUAL_VIEWPORT_HEIGHT_VAR);\n root.style.removeProperty(VISUAL_VIEWPORT_OFFSET_TOP_VAR);\n root.removeAttribute(KEYBOARD_OPEN_ATTRIBUTE);\n root.removeAttribute(KEYBOARD_SOURCE_ATTRIBUTE);\n setState(CLOSED);\n };\n\n if (source === 'native') {\n const handleWillShow = (event: Event) => {\n publish(\n Math.max(\n 0,\n Math.round((event as NativeKeyboardEvent).keyboardHeight ?? 0)\n )\n );\n };\n const handleWillHide = () => publish(0);\n\n root.setAttribute(KEYBOARD_SOURCE_ATTRIBUTE, source);\n publish(0);\n window.addEventListener('keyboardWillShow', handleWillShow);\n window.addEventListener('keyboardWillHide', handleWillHide);\n\n return () => {\n window.removeEventListener('keyboardWillShow', handleWillShow);\n window.removeEventListener('keyboardWillHide', handleWillHide);\n clear();\n };\n }\n\n const viewport = window.visualViewport;\n if (!viewport) return;\n\n let frame = 0;\n\n const measure = () => {\n frame = 0;\n // Pinch-zoom shrinks the visual viewport too; that is not a keyboard.\n const zoomed = Math.abs(viewport.scale - 1) > 0.01;\n const keyboardInset = zoomed\n ? 0\n : Math.max(\n 0,\n Math.round(\n window.innerHeight - viewport.height - viewport.offsetTop\n )\n );\n\n root.style.setProperty(\n VISUAL_VIEWPORT_HEIGHT_VAR,\n `${zoomed ? window.innerHeight : Math.round(viewport.height)}px`\n );\n root.style.setProperty(\n VISUAL_VIEWPORT_OFFSET_TOP_VAR,\n `${zoomed ? 0 : Math.round(viewport.offsetTop)}px`\n );\n publish(keyboardInset);\n };\n\n // Coalesce the resize + scroll bursts iOS fires while the keyboard\n // animates into one write per frame.\n const schedule = () => {\n if (frame === 0) frame = requestAnimationFrame(measure);\n };\n\n root.setAttribute(KEYBOARD_SOURCE_ATTRIBUTE, source);\n measure();\n viewport.addEventListener('resize', schedule);\n viewport.addEventListener('scroll', schedule);\n\n return () => {\n cancelAnimationFrame(frame);\n viewport.removeEventListener('resize', schedule);\n viewport.removeEventListener('scroll', schedule);\n clear();\n };\n }, [enabled, source]);\n\n return state;\n}\n","import { useEffect, useCallback } from 'react';\n\n/**\n * Options for keyboard shortcut hook\n */\nexport interface KeyboardShortcutOptions {\n /** Whether the shortcut is currently enabled (default: true) */\n enabled?: boolean;\n /** Modifier keys required (default: none) */\n modifiers?: {\n ctrl?: boolean;\n shift?: boolean;\n alt?: boolean;\n meta?: boolean;\n };\n /** Whether to prevent default browser behavior (default: true) */\n preventDefault?: boolean;\n /** Whether to stop event propagation (default: false) */\n stopPropagation?: boolean;\n /** Element types to ignore when the shortcut is pressed (default: ['INPUT', 'TEXTAREA', 'SELECT']) */\n ignoreInputs?: boolean;\n}\n\n/**\n * Hook that triggers a callback when a specific keyboard shortcut is pressed.\n * Supports modifier keys (Ctrl, Shift, Alt, Meta) and ignores input fields by default.\n *\n * @param key - The key to listen for (e.g., 'k', 'Enter', 'Escape', '/')\n * @param callback - Function to call when the shortcut is pressed\n * @param options - Configuration options\n *\n * @example\n * ```tsx\n * // Cmd/Ctrl+K to open search\n * useKeyboardShortcut('k', openSearch, { modifiers: { meta: true, ctrl: true } });\n *\n * // Forward slash to focus search (ignoring when typing)\n * useKeyboardShortcut('/', focusSearch);\n *\n * // Escape to close modal\n * useKeyboardShortcut('Escape', closeModal);\n * ```\n */\nexport function useKeyboardShortcut(\n key: string,\n callback: (event: KeyboardEvent) => void,\n options: KeyboardShortcutOptions = {}\n): void {\n const {\n enabled = true,\n modifiers = {},\n preventDefault = true,\n stopPropagation = false,\n ignoreInputs = true,\n } = options;\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n // Check if we should ignore input fields\n if (ignoreInputs) {\n const target = event.target as HTMLElement;\n const tagName = target.tagName.toUpperCase();\n if (\n tagName === 'INPUT' ||\n tagName === 'TEXTAREA' ||\n tagName === 'SELECT' ||\n target.isContentEditable\n ) {\n return;\n }\n }\n\n // Check modifiers\n const { ctrl, shift, alt, meta } = modifiers;\n\n // For Cmd+K style shortcuts, allow either meta (Mac) or ctrl (Windows/Linux)\n const metaOrCtrl = meta || ctrl;\n if (metaOrCtrl) {\n if (!(event.metaKey || event.ctrlKey)) return;\n } else {\n // If no meta/ctrl modifier specified, ensure neither is pressed\n if (event.metaKey || event.ctrlKey) return;\n }\n\n if (shift && !event.shiftKey) return;\n if (alt && !event.altKey) return;\n\n // Check key match (case-insensitive for letters)\n const eventKey =\n event.key.length === 1 ? event.key.toLowerCase() : event.key;\n const targetKey = key.length === 1 ? key.toLowerCase() : key;\n if (eventKey !== targetKey) return;\n\n if (preventDefault) {\n event.preventDefault();\n }\n if (stopPropagation) {\n event.stopPropagation();\n }\n\n callback(event);\n },\n [key, callback, modifiers, preventDefault, stopPropagation, ignoreInputs]\n );\n\n useEffect(() => {\n if (!enabled) return;\n\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [handleKeyDown, enabled]);\n}\n\n/**\n * Hook for the common Cmd/Ctrl+K shortcut pattern (command palette, search, etc.)\n *\n * @param callback - Function to call when Cmd/Ctrl+K is pressed\n * @param enabled - Whether the shortcut is active (default: true)\n *\n * @example\n * ```tsx\n * useCommandK(() => setIsOpen(true));\n * ```\n */\nexport function useCommandK(callback: () => void, enabled = true): void {\n useKeyboardShortcut('k', callback, {\n enabled,\n modifiers: { meta: true, ctrl: true },\n ignoreInputs: false, // Cmd+K should work even in inputs\n });\n}\n","import { useState, useEffect } from 'react';\n\n/**\n * Hook that tracks whether a media query matches.\n * Uses the native `matchMedia` API for efficient media query tracking.\n *\n * @param query - CSS media query string (e.g., '(min-width: 768px)')\n * @returns Boolean indicating whether the media query matches\n *\n * @example\n * ```tsx\n * function ResponsiveComponent() {\n * const isMobile = useMediaQuery('(max-width: 767px)');\n * const isTablet = useMediaQuery('(min-width: 768px) and (max-width: 1023px)');\n * const isDesktop = useMediaQuery('(min-width: 1024px)');\n *\n * return (\n * <div>\n * {isMobile && <MobileLayout />}\n * {isTablet && <TabletLayout />}\n * {isDesktop && <DesktopLayout />}\n * </div>\n * );\n * }\n * ```\n */\nexport function useMediaQuery(query: string): boolean {\n // Initialize with null to indicate SSR/initial state\n const [matches, setMatches] = useState<boolean>(() => {\n // Check if we're in a browser environment\n if (typeof window === 'undefined') return false;\n return window.matchMedia(query).matches;\n });\n\n useEffect(() => {\n if (typeof window === 'undefined') return;\n\n const mediaQuery = window.matchMedia(query);\n\n // Set initial value\n setMatches(mediaQuery.matches);\n\n // Handler for media query changes\n const handler = (event: MediaQueryListEvent) => {\n setMatches(event.matches);\n };\n\n // Modern browsers use addEventListener\n if (mediaQuery.addEventListener) {\n mediaQuery.addEventListener('change', handler);\n return () => mediaQuery.removeEventListener('change', handler);\n }\n\n // Fallback for older browsers\n mediaQuery.addListener(handler);\n return () => mediaQuery.removeListener(handler);\n }, [query]);\n\n return matches;\n}\n\n/**\n * Preset breakpoint hooks following common responsive design patterns\n */\n\n/** Returns true when viewport is smaller than 640px (mobile) */\nexport function useIsMobile(): boolean {\n return useMediaQuery('(max-width: 639px)');\n}\n\n/** Returns true when viewport is 640px-767px (large mobile / small tablet) */\nexport function useIsSmallTablet(): boolean {\n return useMediaQuery('(min-width: 640px) and (max-width: 767px)');\n}\n\n/** Returns true when viewport is 768px-1023px (tablet) */\nexport function useIsTablet(): boolean {\n return useMediaQuery('(min-width: 768px) and (max-width: 1023px)');\n}\n\n/** Returns true when viewport is 1024px or larger (desktop) */\nexport function useIsDesktop(): boolean {\n return useMediaQuery('(min-width: 1024px)');\n}\n\n/** Returns true when viewport is 1280px or larger (large desktop) */\nexport function useIsLargeDesktop(): boolean {\n return useMediaQuery('(min-width: 1280px)');\n}\n\n/** Returns true when viewport is smaller than 1024px (mobile/tablet) */\nexport function useIsMobileOrTablet(): boolean {\n return useMediaQuery('(max-width: 1023px)');\n}\n","'use client';\n\nimport * as React from 'react';\n\nexport interface OrderPersistenceAdapter {\n /** Previously saved order, or null when there is none */\n load: () => string[] | null | Promise<string[] | null>;\n save: (order: string[]) => void | Promise<void>;\n}\n\nexport interface UseOrderPersistenceOptions extends OrderPersistenceAdapter {\n /** Delay before `save` runs; rapid changes collapse into one save. */\n debounceMs?: number;\n /** Called when `load` or `save` throws or rejects */\n onError?: (error: unknown) => void;\n}\n\nexport interface UseOrderPersistenceReturn {\n /** Saved order merged with the current `ids` */\n order: string[];\n /** Update the order immediately and schedule a debounced save */\n setOrder: (order: string[]) => void;\n}\n\n/** Keep saved ids that still exist, then append new ids in their given order. */\nexport function mergeOrder(saved: string[] | null, ids: string[]): string[] {\n if (!saved) return ids;\n const known = new Set(ids);\n const kept = [...new Set(saved)].filter((id) => known.has(id));\n const keptSet = new Set(kept);\n return [...kept, ...ids.filter((id) => !keptSet.has(id))];\n}\n\n/**\n * Persist a user's item order (sections, widgets, list rows) through any\n * storage. Updates are optimistic, saves are debounced and a pending save is\n * flushed on unmount and on `pagehide` (navigation, refresh, tab close). On\n * `pagehide` only work `save` starts synchronously is guaranteed — use\n * localStorage or `navigator.sendBeacon` there; an async `fetch` may be cut\n * off. `load` runs once after mount, so server and first client render use\n * `ids` order.\n *\n * @example\n * ```tsx\n * const adapter = React.useMemo(() => localStorageOrderAdapter('clinic-sections'), []);\n * const { order, setOrder } = useOrderPersistence(sectionIds, adapter);\n * const drag = useDragReorder({ ids: order, onReorder: setOrder });\n * ```\n */\nexport function useOrderPersistence(\n ids: string[],\n { load, save, debounceMs = 500, onError }: UseOrderPersistenceOptions\n): UseOrderPersistenceReturn {\n const [saved, setSaved] = React.useState<string[] | null>(null);\n const callbacks = React.useRef({ load, save, onError });\n callbacks.current = { load, save, onError };\n const pending = React.useRef<string[] | null>(null);\n const timer = React.useRef<ReturnType<typeof setTimeout> | undefined>(\n undefined\n );\n const touched = React.useRef(false);\n // In-flight save count: `force` (pagehide) saves may overlap a normal one,\n // so queued flushes resume only after every save settles.\n const saving = React.useRef(0);\n // When saves overlap, their completion order is unknown and a stale write\n // could land last; the newest payload is saved once more after all settle.\n const lastStarted = React.useRef<string[] | null>(null);\n const overlapped = React.useRef(false);\n\n // One save at a time; changes made meanwhile coalesce into the next save.\n // `force` skips the queue for page unloads, where a queued save never runs.\n const flush = React.useCallback(function flushPending(force = false) {\n clearTimeout(timer.current);\n const next = pending.current;\n if (!next || (saving.current > 0 && !force)) return;\n pending.current = null;\n if (saving.current > 0) overlapped.current = true;\n saving.current += 1;\n lastStarted.current = next;\n const { save: run, onError: fail } = callbacks.current;\n let result: void | Promise<void>;\n try {\n result = run(next);\n } catch (e) {\n result = Promise.reject(e);\n }\n void Promise.resolve(result)\n .catch((e: unknown) => fail?.(e))\n .finally(() => {\n saving.current -= 1;\n if (saving.current > 0) return;\n if (overlapped.current) {\n overlapped.current = false;\n pending.current ??= lastStarted.current;\n }\n flushPending();\n });\n }, []);\n\n React.useEffect(() => {\n let active = true;\n const { load: read, onError: fail } = callbacks.current;\n Promise.resolve()\n .then(read)\n .then((value) => {\n // A change made while loading wins over the stored order\n if (active && value && !touched.current) setSaved(value);\n })\n .catch((e: unknown) => fail?.(e));\n return () => {\n active = false;\n flush();\n };\n }, [flush]);\n\n React.useEffect(() => {\n const onPageHide = () => flush(true);\n window.addEventListener('pagehide', onPageHide);\n return () => window.removeEventListener('pagehide', onPageHide);\n }, [flush]);\n\n const setOrder = React.useCallback(\n (next: string[]) => {\n touched.current = true;\n setSaved(next);\n pending.current = next;\n clearTimeout(timer.current);\n timer.current = setTimeout(flush, debounceMs);\n },\n [debounceMs, flush]\n );\n\n const order = React.useMemo(() => mergeOrder(saved, ids), [saved, ids]);\n return { order, setOrder };\n}\n\n/** `useOrderPersistence` adapter backed by `localStorage` (no-op on the server or when storage is blocked). */\nexport function localStorageOrderAdapter(key: string): OrderPersistenceAdapter {\n return {\n load: () => {\n try {\n if (typeof window === 'undefined') return null;\n const raw: unknown = JSON.parse(\n window.localStorage.getItem(key) ?? 'null'\n );\n return Array.isArray(raw) && raw.every((v) => typeof v === 'string')\n ? (raw as string[])\n : null;\n } catch {\n return null;\n }\n },\n save: (order) => {\n try {\n if (typeof window !== 'undefined')\n window.localStorage.setItem(key, JSON.stringify(order));\n } catch {\n // Quota exceeded or storage disabled: keep the in-memory order\n }\n },\n };\n}\n"]}
@@ -0,0 +1,38 @@
1
+ import { toDateTime } from './chunk-3YBS4WUQ.js';
2
+ import { DateTime } from 'luxon';
3
+
4
+ function withLocale(dt, locale) {
5
+ return locale ? dt.setLocale(locale) : dt;
6
+ }
7
+ var millis = (dt) => dt ? dt.toMillis() : Number.NEGATIVE_INFINITY;
8
+ function groupByDay(items, getDate, zone) {
9
+ const dated = items.map((item) => ({ item, dt: toDateTime(getDate(item), zone) })).sort((a, b) => millis(b.dt) - millis(a.dt) || 0);
10
+ const groups = [];
11
+ for (const { item, dt } of dated) {
12
+ const key = dt?.toISODate() ?? "";
13
+ const last = groups[groups.length - 1];
14
+ if (last?.key === key) last.items.push(item);
15
+ else groups.push({ key, items: [item] });
16
+ }
17
+ return groups;
18
+ }
19
+ function formatDayLabel(key, options) {
20
+ if (!key) return options.undated;
21
+ const day = withLocale(
22
+ DateTime.fromISO(key, { zone: options.zone }),
23
+ options.locale
24
+ );
25
+ const today = DateTime.fromJSDate(options.now, { zone: options.zone });
26
+ if (day.hasSame(today, "day")) return options.today;
27
+ if (day.hasSame(today.minus({ days: 1 }), "day")) return options.yesterday;
28
+ return day.toLocaleString({
29
+ weekday: "long",
30
+ month: "long",
31
+ day: "numeric",
32
+ ...day.year !== today.year && { year: "numeric" }
33
+ });
34
+ }
35
+
36
+ export { formatDayLabel, groupByDay, withLocale };
37
+ //# sourceMappingURL=chunk-YGS2TRMP.js.map
38
+ //# sourceMappingURL=chunk-YGS2TRMP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ActivityFeed/dayGroups.ts"],"names":[],"mappings":";;;AAkBO,SAAS,UAAA,CAAW,IAAc,MAAA,EAA2B;AAClE,EAAA,OAAO,MAAA,GAAS,EAAA,CAAG,SAAA,CAAU,MAAM,CAAA,GAAI,EAAA;AACzC;AAEA,IAAM,SAAS,CAAC,EAAA,KACd,KAAK,EAAA,CAAG,QAAA,KAAa,MAAA,CAAO,iBAAA;AAGvB,SAAS,UAAA,CACd,KAAA,EACA,OAAA,EACA,IAAA,EACe;AACf,EAAA,MAAM,KAAA,GAAQ,KAAA,CACX,GAAA,CAAI,CAAC,IAAA,MAAU,EAAE,IAAA,EAAM,EAAA,EAAI,UAAA,CAAW,OAAA,CAAQ,IAAI,CAAA,EAAG,IAAI,CAAA,EAAE,CAAE,CAAA,CAC7D,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,MAAA,CAAO,CAAA,CAAE,EAAE,CAAA,GAAI,MAAA,CAAO,CAAA,CAAE,EAAE,CAAA,IAAK,CAAC,CAAA;AAElD,EAAA,MAAM,SAAwB,EAAC;AAC/B,EAAA,KAAA,MAAW,EAAE,IAAA,EAAM,EAAA,EAAG,IAAK,KAAA,EAAO;AAChC,IAAA,MAAM,GAAA,GAAM,EAAA,EAAI,SAAA,EAAU,IAAK,EAAA;AAC/B,IAAA,MAAM,IAAA,GAAO,MAAA,CAAO,MAAA,CAAO,MAAA,GAAS,CAAC,CAAA;AACrC,IAAA,IAAI,MAAM,GAAA,KAAQ,GAAA,EAAK,IAAA,CAAK,KAAA,CAAM,KAAK,IAAI,CAAA;AAAA,SACtC,MAAA,CAAO,KAAK,EAAE,GAAA,EAAK,OAAO,CAAC,IAAI,GAAG,CAAA;AAAA,EACzC;AACA,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,cAAA,CAAe,KAAa,OAAA,EAAkC;AAC5E,EAAA,IAAI,CAAC,GAAA,EAAK,OAAO,OAAA,CAAQ,OAAA;AACzB,EAAA,MAAM,GAAA,GAAM,UAAA;AAAA,IACV,SAAS,OAAA,CAAQ,GAAA,EAAK,EAAE,IAAA,EAAM,OAAA,CAAQ,MAAM,CAAA;AAAA,IAC5C,OAAA,CAAQ;AAAA,GACV;AACA,EAAA,MAAM,KAAA,GAAQ,SAAS,UAAA,CAAW,OAAA,CAAQ,KAAK,EAAE,IAAA,EAAM,OAAA,CAAQ,IAAA,EAAM,CAAA;AACrE,EAAA,IAAI,IAAI,OAAA,CAAQ,KAAA,EAAO,KAAK,CAAA,SAAU,OAAA,CAAQ,KAAA;AAC9C,EAAA,IAAI,GAAA,CAAI,OAAA,CAAQ,KAAA,CAAM,KAAA,CAAM,EAAE,IAAA,EAAM,CAAA,EAAG,CAAA,EAAG,KAAK,CAAA,EAAG,OAAO,OAAA,CAAQ,SAAA;AACjE,EAAA,OAAO,IAAI,cAAA,CAAe;AAAA,IACxB,OAAA,EAAS,MAAA;AAAA,IACT,KAAA,EAAO,MAAA;AAAA,IACP,GAAA,EAAK,SAAA;AAAA,IACL,GAAI,GAAA,CAAI,IAAA,KAAS,MAAM,IAAA,IAAQ,EAAE,MAAM,SAAA;AAAU,GAClD,CAAA;AACH","file":"chunk-YGS2TRMP.js","sourcesContent":["import { DateTime } from 'luxon';\nimport { toDateTime } from '../../views/types';\n\nexport interface DayGroup<T> {\n /** ISO date (`yyyy-MM-dd`) in the display zone; `''` for undated items. */\n key: string;\n items: T[];\n}\n\nexport interface DayLabelOptions {\n now: Date;\n zone: string;\n locale?: string;\n today: string;\n yesterday: string;\n undated: string;\n}\n\nexport function withLocale(dt: DateTime, locale?: string): DateTime {\n return locale ? dt.setLocale(locale) : dt;\n}\n\nconst millis = (dt: DateTime | null) =>\n dt ? dt.toMillis() : Number.NEGATIVE_INFINITY;\n\n/** Buckets items by calendar day in `zone`, newest first; undated items last. */\nexport function groupByDay<T>(\n items: readonly T[],\n getDate: (item: T) => Date | string | null | undefined,\n zone: string\n): DayGroup<T>[] {\n const dated = items\n .map((item) => ({ item, dt: toDateTime(getDate(item), zone) }))\n .sort((a, b) => millis(b.dt) - millis(a.dt) || 0);\n\n const groups: DayGroup<T>[] = [];\n for (const { item, dt } of dated) {\n const key = dt?.toISODate() ?? '';\n const last = groups[groups.length - 1];\n if (last?.key === key) last.items.push(item);\n else groups.push({ key, items: [item] });\n }\n return groups;\n}\n\nexport function formatDayLabel(key: string, options: DayLabelOptions): string {\n if (!key) return options.undated;\n const day = withLocale(\n DateTime.fromISO(key, { zone: options.zone }),\n options.locale\n );\n const today = DateTime.fromJSDate(options.now, { zone: options.zone });\n if (day.hasSame(today, 'day')) return options.today;\n if (day.hasSame(today.minus({ days: 1 }), 'day')) return options.yesterday;\n return day.toLocaleString({\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n ...(day.year !== today.year && { year: 'numeric' }),\n });\n}\n"]}
@@ -0,0 +1,167 @@
1
+ import { useLiveAnnouncement } from './chunk-HNXLLDPN.js';
2
+ import * as React from 'react';
3
+
4
+ function reorderIds(ids, draggedId, targetId, after) {
5
+ if (draggedId === targetId) return ids;
6
+ if (!ids.includes(draggedId)) return ids;
7
+ const without = ids.filter((i) => i !== draggedId);
8
+ const idx = without.indexOf(targetId);
9
+ if (idx === -1) return ids;
10
+ without.splice(after ? idx + 1 : idx, 0, draggedId);
11
+ return without;
12
+ }
13
+ function moveIdBy(ids, id, delta) {
14
+ const from = ids.indexOf(id);
15
+ if (from === -1) return ids;
16
+ const to = Math.max(0, Math.min(ids.length - 1, from + delta));
17
+ if (to === from) return ids;
18
+ const next = ids.filter((i) => i !== id);
19
+ next.splice(to, 0, id);
20
+ return next;
21
+ }
22
+ var DEFAULT_DRAG_REORDER_LABELS = {
23
+ moveUp: "Move up",
24
+ moveDown: "Move down",
25
+ moved: (position, total) => `Moved to position ${position} of ${total}`
26
+ };
27
+ function useDragReorder({
28
+ ids,
29
+ onReorder,
30
+ canDropOn,
31
+ keyboard = false,
32
+ announce,
33
+ getDragPreview,
34
+ labels: labelsProp
35
+ }) {
36
+ const labels = { ...DEFAULT_DRAG_REORDER_LABELS, ...labelsProp };
37
+ const [announcement, announceLive] = useLiveAnnouncement();
38
+ const [draggingId, setDraggingId] = React.useState(null);
39
+ const draggingRef = React.useRef(null);
40
+ const [over, setOver] = React.useState(null);
41
+ const enabled = Boolean(onReorder);
42
+ const reset = React.useCallback(() => {
43
+ draggingRef.current = null;
44
+ setDraggingId(null);
45
+ setOver(null);
46
+ }, []);
47
+ const reachable = (id, delta) => {
48
+ const from = ids.indexOf(id);
49
+ if (!enabled || from === -1) return 0;
50
+ const step = Math.sign(delta);
51
+ let reach = 0;
52
+ while (reach !== delta) {
53
+ const t = from + reach + step;
54
+ if (t < 0 || t >= ids.length || canDropOn && !canDropOn(id, ids[t]))
55
+ break;
56
+ reach += step;
57
+ }
58
+ return reach;
59
+ };
60
+ const moveBy = (id, delta) => {
61
+ const next = moveIdBy(ids, id, reachable(id, delta));
62
+ if (next === ids) return;
63
+ onReorder?.(next);
64
+ const message = labels.moved(next.indexOf(id) + 1, next.length, id);
65
+ if (announce) announce(message);
66
+ else announceLive(message);
67
+ };
68
+ const moveButtonProps = (id, direction, label) => {
69
+ const delta = direction === "up" ? -1 : 1;
70
+ return {
71
+ type: "button",
72
+ onClick: (e) => {
73
+ e.stopPropagation();
74
+ moveBy(id, delta);
75
+ },
76
+ disabled: reachable(id, delta) === 0,
77
+ "aria-label": label ?? (direction === "up" ? labels.moveUp : labels.moveDown)
78
+ };
79
+ };
80
+ const moveByRef = React.useRef(moveBy);
81
+ moveByRef.current = moveBy;
82
+ const rowProps = React.useCallback(
83
+ (id) => {
84
+ if (!enabled) return {};
85
+ const keyProps = keyboard ? {
86
+ tabIndex: 0,
87
+ "aria-keyshortcuts": "Alt+ArrowUp Alt+ArrowDown",
88
+ onKeyDown: (e) => {
89
+ if (e.target !== e.currentTarget || !e.altKey) return;
90
+ if (e.key !== "ArrowUp" && e.key !== "ArrowDown") return;
91
+ e.preventDefault();
92
+ moveByRef.current(id, e.key === "ArrowUp" ? -1 : 1);
93
+ }
94
+ } : {};
95
+ return {
96
+ ...keyProps,
97
+ draggable: true,
98
+ // WebKit (iPadOS Safari, incl. remote-pointer sessions) starts a text
99
+ // selection instead of a drag when the drag source contains selectable
100
+ // text — suppress selection and explicitly mark the row as the drag
101
+ // element so press-drag reliably initiates drag-and-drop.
102
+ style: {
103
+ userSelect: "none",
104
+ WebkitUserSelect: "none",
105
+ WebkitUserDrag: "element"
106
+ },
107
+ onDragStart: (e) => {
108
+ e.dataTransfer.effectAllowed = "move";
109
+ e.dataTransfer.setData("text/plain", id);
110
+ const preview = getDragPreview?.(id);
111
+ if (preview) e.dataTransfer.setDragImage(preview, 0, 0);
112
+ draggingRef.current = id;
113
+ setDraggingId(id);
114
+ },
115
+ onDragEnd: reset,
116
+ onDragOver: (e) => {
117
+ const dragged = draggingRef.current;
118
+ if (!dragged || dragged === id || canDropOn && !canDropOn(dragged, id)) {
119
+ setOver(null);
120
+ return;
121
+ }
122
+ e.preventDefault();
123
+ e.dataTransfer.dropEffect = "move";
124
+ const r = e.currentTarget.getBoundingClientRect();
125
+ const after = e.clientY > r.top + r.height / 2;
126
+ setOver(
127
+ (prev) => prev?.id === id && prev.after === after ? prev : { id, after }
128
+ );
129
+ },
130
+ onDragLeave: () => {
131
+ setOver((prev) => prev?.id === id ? null : prev);
132
+ },
133
+ onDrop: (e) => {
134
+ e.preventDefault();
135
+ const dragged = draggingRef.current ?? e.dataTransfer.getData("text/plain");
136
+ reset();
137
+ if (!dragged || dragged === id) return;
138
+ if (canDropOn && !canDropOn(dragged, id)) return;
139
+ const r = e.currentTarget.getBoundingClientRect();
140
+ const after = e.clientY > r.top + r.height / 2;
141
+ onReorder?.(reorderIds(ids, dragged, id, after));
142
+ }
143
+ };
144
+ },
145
+ [enabled, keyboard, ids, onReorder, canDropOn, getDragPreview, reset]
146
+ );
147
+ return {
148
+ enabled,
149
+ draggingId,
150
+ over,
151
+ rowProps,
152
+ moveBy,
153
+ moveButtonProps,
154
+ announcement: announce ? "" : announcement
155
+ };
156
+ }
157
+ function dragIndicatorClasses(drag, id) {
158
+ return [
159
+ drag.draggingId === id ? "opacity-40" : "",
160
+ drag.over?.id === id && !drag.over.after ? "shadow-[inset_0_2px_0_0_var(--color-primary-500,#3b82f6)]" : "",
161
+ drag.over?.id === id && drag.over.after ? "shadow-[inset_0_-2px_0_0_var(--color-primary-500,#3b82f6)]" : ""
162
+ ].filter(Boolean).join(" ");
163
+ }
164
+
165
+ export { DEFAULT_DRAG_REORDER_LABELS, dragIndicatorClasses, moveIdBy, reorderIds, useDragReorder };
166
+ //# sourceMappingURL=chunk-YUMOM3KE.js.map
167
+ //# sourceMappingURL=chunk-YUMOM3KE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/useDragReorder.ts"],"names":[],"mappings":"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","file":"chunk-YUMOM3KE.js","sourcesContent":["'use client';\n\nimport * as React from 'react';\n\nimport { useLiveAnnouncement } from './useLiveAnnouncement';\n\n/** Insert `draggedId` before/after `targetId` in `ids`. */\nexport function reorderIds(\n ids: string[],\n draggedId: string,\n targetId: string,\n after: boolean\n): string[] {\n if (draggedId === targetId) return ids;\n // Ignore drags that originate outside this list (stale payloads would\n // otherwise be inserted as unknown ids).\n if (!ids.includes(draggedId)) return ids;\n const without = ids.filter((i) => i !== draggedId);\n const idx = without.indexOf(targetId);\n if (idx === -1) return ids;\n without.splice(after ? idx + 1 : idx, 0, draggedId);\n return without;\n}\n\n/** Move `id` by `delta` positions (clamped). Returns `ids` unchanged when it can't move. */\nexport function moveIdBy(ids: string[], id: string, delta: number): string[] {\n const from = ids.indexOf(id);\n if (from === -1) return ids;\n const to = Math.max(0, Math.min(ids.length - 1, from + delta));\n if (to === from) return ids;\n const next = ids.filter((i) => i !== id);\n next.splice(to, 0, id);\n return next;\n}\n\nexport interface DragReorderLabels {\n moveUp: string;\n moveDown: string;\n /** Announced after a keyboard/button move */\n moved: (position: number, total: number, id: string) => string;\n}\n\nexport const DEFAULT_DRAG_REORDER_LABELS: DragReorderLabels = {\n moveUp: 'Move up',\n moveDown: 'Move down',\n moved: (position, total) => `Moved to position ${position} of ${total}`,\n};\n\nexport interface UseDragReorderOptions {\n /** Current flat order of item ids (props order) */\n ids: string[];\n /** Called with the full new id order after a drop or move. Omit to disable reordering. */\n onReorder?: (ids: string[]) => void;\n /** Restrict drops, e.g. to the same status group */\n canDropOn?: (draggedId: string, targetId: string) => boolean;\n /** Add Alt+ArrowUp / Alt+ArrowDown handling (and `tabIndex={0}`) to `rowProps`. Off by default so rows with their own `onKeyDown` keep working. */\n keyboard?: boolean;\n /** Receives move announcements instead of the returned `announcement` string. */\n announce?: (message: string) => void;\n /** Element rendered as the drag image (`dataTransfer.setDragImage`). */\n getDragPreview?: (id: string) => Element | null;\n labels?: Partial<DragReorderLabels>;\n}\n\nexport interface DragOverState {\n id: string;\n /** Drop indicator position relative to the hovered row */\n after: boolean;\n}\n\nexport interface UseDragReorderReturn {\n /** Whether drag reordering is active (onReorder provided) */\n enabled: boolean;\n /** Id currently being dragged, if any */\n draggingId: string | null;\n /** Row currently hovered as a drop target */\n over: DragOverState | null;\n /** Spread onto each row element (must be keyed by a stable id) */\n rowProps: (id: string) => React.HTMLAttributes<HTMLElement>;\n /** Move an item by `delta` positions; no-op at the ends or across `canDropOn` boundaries. */\n moveBy: (id: string, delta: number) => void;\n /** Props for a visible move button */\n moveButtonProps: (\n id: string,\n direction: 'up' | 'down',\n label?: string\n ) => {\n type: 'button';\n onClick: (e: React.MouseEvent) => void;\n disabled: boolean;\n 'aria-label': string;\n };\n /** Latest move message; render in an `aria-live=\"polite\"` region (empty when `announce` is given). */\n announcement: string;\n}\n\n/**\n * HTML5 drag-and-drop list reordering. Rows spread `rowProps(id)`; on drop the\n * hook computes the full new id order and reports it via `onReorder` — the\n * consumer persists it (e.g. on the encounter/patient object) and feeds the\n * list back in props order.\n *\n * Drag-and-drop is pointer-only, so pair it with `moveButtonProps` buttons\n * and/or `keyboard: true` (Alt+↑/↓ on focused rows), and render\n * `announcement` in a polite live region.\n *\n * @example\n * ```tsx\n * const drag = useDragReorder({ ids: items.map((i) => i.id), onReorder, keyboard: true });\n * // <li {...drag.rowProps(item.id)} className={cn(dragIndicatorClasses(drag, item.id))}>\n * // <button {...drag.moveButtonProps(item.id, 'up')}><ChevronUp /></button>\n * // <div aria-live=\"polite\" className=\"sr-only\">{drag.announcement}</div>\n * ```\n */\nexport function useDragReorder({\n ids,\n onReorder,\n canDropOn,\n keyboard = false,\n announce,\n getDragPreview,\n labels: labelsProp,\n}: UseDragReorderOptions): UseDragReorderReturn {\n const labels = { ...DEFAULT_DRAG_REORDER_LABELS, ...labelsProp };\n const [announcement, announceLive] = useLiveAnnouncement();\n const [draggingId, setDraggingId] = React.useState<string | null>(null);\n // dragover can fire before the dragstart state update is visible, so the\n // authoritative dragged id lives in a ref (set synchronously)\n const draggingRef = React.useRef<string | null>(null);\n const [over, setOver] = React.useState<DragOverState | null>(null);\n const enabled = Boolean(onReorder);\n\n const reset = React.useCallback(() => {\n draggingRef.current = null;\n setDraggingId(null);\n setOver(null);\n }, []);\n\n /** How far `id` can move toward `delta`: stops at the ends or the first slot canDropOn rejects. */\n const reachable = (id: string, delta: number): number => {\n const from = ids.indexOf(id);\n if (!enabled || from === -1) return 0;\n const step = Math.sign(delta);\n let reach = 0;\n while (reach !== delta) {\n const t = from + reach + step;\n if (t < 0 || t >= ids.length || (canDropOn && !canDropOn(id, ids[t])))\n break;\n reach += step;\n }\n return reach;\n };\n\n const moveBy = (id: string, delta: number) => {\n const next = moveIdBy(ids, id, reachable(id, delta));\n if (next === ids) return;\n onReorder?.(next);\n const message = labels.moved(next.indexOf(id) + 1, next.length, id);\n if (announce) announce(message);\n else announceLive(message);\n };\n\n const moveButtonProps: UseDragReorderReturn['moveButtonProps'] = (\n id,\n direction,\n label\n ) => {\n const delta = direction === 'up' ? -1 : 1;\n return {\n type: 'button',\n onClick: (e) => {\n e.stopPropagation();\n moveBy(id, delta);\n },\n disabled: reachable(id, delta) === 0,\n 'aria-label':\n label ?? (direction === 'up' ? labels.moveUp : labels.moveDown),\n };\n };\n\n const moveByRef = React.useRef(moveBy);\n moveByRef.current = moveBy;\n\n const rowProps = React.useCallback(\n (id: string): React.HTMLAttributes<HTMLElement> => {\n if (!enabled) return {};\n const keyProps: React.HTMLAttributes<HTMLElement> = keyboard\n ? {\n tabIndex: 0,\n 'aria-keyshortcuts': 'Alt+ArrowUp Alt+ArrowDown',\n onKeyDown: (e) => {\n if (e.target !== e.currentTarget || !e.altKey) return;\n if (e.key !== 'ArrowUp' && e.key !== 'ArrowDown') return;\n e.preventDefault();\n moveByRef.current(id, e.key === 'ArrowUp' ? -1 : 1);\n },\n }\n : {};\n return {\n ...keyProps,\n draggable: true,\n // WebKit (iPadOS Safari, incl. remote-pointer sessions) starts a text\n // selection instead of a drag when the drag source contains selectable\n // text — suppress selection and explicitly mark the row as the drag\n // element so press-drag reliably initiates drag-and-drop.\n style: {\n userSelect: 'none',\n WebkitUserSelect: 'none',\n WebkitUserDrag: 'element',\n } as React.CSSProperties,\n onDragStart: (e) => {\n e.dataTransfer.effectAllowed = 'move';\n e.dataTransfer.setData('text/plain', id);\n const preview = getDragPreview?.(id);\n if (preview) e.dataTransfer.setDragImage(preview, 0, 0);\n draggingRef.current = id;\n setDraggingId(id);\n },\n onDragEnd: reset,\n onDragOver: (e) => {\n const dragged = draggingRef.current;\n if (\n !dragged ||\n dragged === id ||\n (canDropOn && !canDropOn(dragged, id))\n ) {\n // hovering an invalid target: clear any stale indicator\n setOver(null);\n return;\n }\n e.preventDefault();\n e.dataTransfer.dropEffect = 'move';\n const r = e.currentTarget.getBoundingClientRect();\n const after = e.clientY > r.top + r.height / 2;\n setOver((prev) =>\n prev?.id === id && prev.after === after ? prev : { id, after }\n );\n },\n onDragLeave: () => {\n setOver((prev) => (prev?.id === id ? null : prev));\n },\n onDrop: (e) => {\n e.preventDefault();\n const dragged =\n draggingRef.current ?? e.dataTransfer.getData('text/plain');\n reset();\n if (!dragged || dragged === id) return;\n if (canDropOn && !canDropOn(dragged, id)) return;\n const r = e.currentTarget.getBoundingClientRect();\n const after = e.clientY > r.top + r.height / 2;\n onReorder?.(reorderIds(ids, dragged, id, after));\n },\n };\n },\n [enabled, keyboard, ids, onReorder, canDropOn, getDragPreview, reset]\n );\n\n return {\n enabled,\n draggingId,\n over,\n rowProps,\n moveBy,\n moveButtonProps,\n announcement: announce ? '' : announcement,\n };\n}\n\n/** Tailwind classes for the drag state of a row: drop indicator + dragging dim. */\nexport function dragIndicatorClasses(\n drag: Pick<UseDragReorderReturn, 'draggingId' | 'over'>,\n id: string\n): string {\n return [\n drag.draggingId === id ? 'opacity-40' : '',\n drag.over?.id === id && !drag.over.after\n ? 'shadow-[inset_0_2px_0_0_var(--color-primary-500,#3b82f6)]'\n : '',\n drag.over?.id === id && drag.over.after\n ? 'shadow-[inset_0_-2px_0_0_var(--color-primary-500,#3b82f6)]'\n : '',\n ]\n .filter(Boolean)\n .join(' ');\n}\n"]}
@@ -0,0 +1,41 @@
1
+ import { useState, useEffect } from 'react';
2
+
3
+ // src/hooks/useDirection.ts
4
+ var RTL_LOCALES = ["ar", "he", "fa", "ur"];
5
+ function isRtlLocale(locale) {
6
+ const lang = locale.toLowerCase().split(/[-_]/)[0];
7
+ return RTL_LOCALES.includes(lang);
8
+ }
9
+ function resolveDirection(element) {
10
+ if (typeof document === "undefined") return "ltr";
11
+ const target = element ?? document.documentElement;
12
+ return getComputedStyle(target).direction === "rtl" ? "rtl" : "ltr";
13
+ }
14
+ function isRtl(element) {
15
+ return resolveDirection(element) === "rtl";
16
+ }
17
+ function useDirection(elementRef) {
18
+ const [direction, setDirection] = useState(
19
+ () => resolveDirection(elementRef?.current)
20
+ );
21
+ useEffect(() => {
22
+ const update = () => setDirection(resolveDirection(elementRef?.current));
23
+ update();
24
+ const observer = new MutationObserver(update);
25
+ observer.observe(document.documentElement, {
26
+ attributes: true,
27
+ attributeFilter: ["dir"],
28
+ subtree: true
29
+ });
30
+ return () => observer.disconnect();
31
+ }, [elementRef]);
32
+ const currentElement = elementRef?.current ?? null;
33
+ useEffect(() => {
34
+ setDirection(resolveDirection(currentElement));
35
+ }, [currentElement]);
36
+ return direction;
37
+ }
38
+
39
+ export { RTL_LOCALES, isRtl, isRtlLocale, useDirection };
40
+ //# sourceMappingURL=chunk-YVKBXNPK.js.map
41
+ //# sourceMappingURL=chunk-YVKBXNPK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/useDirection.ts"],"names":[],"mappings":";;;AAMO,IAAM,WAAA,GAAc,CAAC,IAAA,EAAM,IAAA,EAAM,MAAM,IAAI;AAM3C,SAAS,YAAY,MAAA,EAAyB;AACnD,EAAA,MAAM,OAAO,MAAA,CAAO,WAAA,GAAc,KAAA,CAAM,MAAM,EAAE,CAAC,CAAA;AACjD,EAAA,OAAQ,WAAA,CAAkC,SAAS,IAAI,CAAA;AACzD;AAEA,SAAS,iBAAiB,OAAA,EAAqC;AAC7D,EAAA,IAAI,OAAO,QAAA,KAAa,WAAA,EAAa,OAAO,KAAA;AAC5C,EAAA,MAAM,MAAA,GAAS,WAAW,QAAA,CAAS,eAAA;AACnC,EAAA,OAAO,gBAAA,CAAiB,MAAM,CAAA,CAAE,SAAA,KAAc,QAAQ,KAAA,GAAQ,KAAA;AAChE;AAaO,SAAS,MAAM,OAAA,EAAmC;AACvD,EAAA,OAAO,gBAAA,CAAiB,OAAO,CAAA,KAAM,KAAA;AACvC;AAoBO,SAAS,aACd,UAAA,EACW;AACX,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,QAAA;AAAA,IAAoB,MACpD,gBAAA,CAAiB,UAAA,EAAY,OAAO;AAAA,GACtC;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,SAAS,MAAM,YAAA,CAAa,gBAAA,CAAiB,UAAA,EAAY,OAAO,CAAC,CAAA;AACvE,IAAA,MAAA,EAAO;AAEP,IAAA,MAAM,QAAA,GAAW,IAAI,gBAAA,CAAiB,MAAM,CAAA;AAC5C,IAAA,QAAA,CAAS,OAAA,CAAQ,SAAS,eAAA,EAAiB;AAAA,MACzC,UAAA,EAAY,IAAA;AAAA,MACZ,eAAA,EAAiB,CAAC,KAAK,CAAA;AAAA,MACvB,OAAA,EAAS;AAAA,KACV,CAAA;AACD,IAAA,OAAO,MAAM,SAAS,UAAA,EAAW;AAAA,EACnC,CAAA,EAAG,CAAC,UAAU,CAAC,CAAA;AAKf,EAAA,MAAM,cAAA,GAAiB,YAAY,OAAA,IAAW,IAAA;AAC9C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,YAAA,CAAa,gBAAA,CAAiB,cAAc,CAAC,CAAA;AAAA,EAC/C,CAAA,EAAG,CAAC,cAAc,CAAC,CAAA;AAEnB,EAAA,OAAO,SAAA;AACT","file":"chunk-YVKBXNPK.js","sourcesContent":["import { useState, useEffect } from 'react';\nimport type { RefObject } from 'react';\n\nexport type Direction = 'ltr' | 'rtl';\n\n/** Locales whose primary script reads right-to-left. */\nexport const RTL_LOCALES = ['ar', 'he', 'fa', 'ur'] as const;\n\n/**\n * Returns true when the given locale (e.g. `ar`, `ar-SA`, `he_IL`) uses a\n * right-to-left script.\n */\nexport function isRtlLocale(locale: string): boolean {\n const lang = locale.toLowerCase().split(/[-_]/)[0];\n return (RTL_LOCALES as readonly string[]).includes(lang);\n}\n\nfunction resolveDirection(element?: Element | null): Direction {\n if (typeof document === 'undefined') return 'ltr';\n const target = element ?? document.documentElement;\n return getComputedStyle(target).direction === 'rtl' ? 'rtl' : 'ltr';\n}\n\n/**\n * Non-hook check for event handlers: true when the element currently renders\n * right-to-left. Use inside `onKeyDown` to invert ArrowLeft/ArrowRight so\n * horizontal arrows follow the *visual* direction:\n *\n * ```ts\n * const rtl = isRtl(event.currentTarget);\n * ```\n *\n * Prefer `useDirection()` when the direction drives rendering.\n */\nexport function isRtl(element?: Element | null): boolean {\n return resolveDirection(element) === 'rtl';\n}\n\n/**\n * Hook returning the effective text direction (`ltr` | `rtl`) inherited from\n * the nearest `dir` attribute — zero setup for consumers who set\n * `<html dir=\"rtl\">`.\n *\n * Use for JS-level direction logic that CSS logical properties can't cover:\n * inverting ArrowLeft/ArrowRight keyboard handling, popover/toast placement,\n * drag math, etc.\n *\n * @param elementRef - Optional ref; when provided, direction is resolved from\n * that element (respecting any local `dir` override) instead of `<html>`.\n *\n * @example\n * ```tsx\n * const direction = useDirection();\n * const nextKey = direction === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n * ```\n */\nexport function useDirection(\n elementRef?: RefObject<HTMLElement | null>\n): Direction {\n const [direction, setDirection] = useState<Direction>(() =>\n resolveDirection(elementRef?.current)\n );\n\n useEffect(() => {\n const update = () => setDirection(resolveDirection(elementRef?.current));\n update();\n // dir changes are rare; observing the whole tree for just this attribute is cheap.\n const observer = new MutationObserver(update);\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['dir'],\n subtree: true,\n });\n return () => observer.disconnect();\n }, [elementRef]);\n\n // Re-sync when a re-render points elementRef.current at a different node:\n // the MutationObserver only fires on `dir` attribute mutations, so a swapped\n // ref target with a different inherited direction would otherwise go stale.\n const currentElement = elementRef?.current ?? null;\n useEffect(() => {\n setDirection(resolveDirection(currentElement));\n }, [currentElement]);\n\n return direction;\n}\n"]}