@mieweb/ui 0.10.0-dev.31 → 0.10.0-dev.32

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 (479) hide show
  1. package/dist/CsvBlock-CFXSDPBI.js +9 -0
  2. package/dist/{CsvBlock-VLMG7GUO.js.map → CsvBlock-CFXSDPBI.js.map} +1 -1
  3. package/dist/CsvBlock-RGO7JXHJ.cjs +18 -0
  4. package/dist/{CsvBlock-FX5YNGNE.cjs.map → CsvBlock-RGO7JXHJ.cjs.map} +1 -1
  5. package/dist/HtmlPreviewBlock-VBYXCXVT.cjs +18 -0
  6. package/dist/{HtmlPreviewBlock-UO37JQ3K.cjs.map → HtmlPreviewBlock-VBYXCXVT.cjs.map} +1 -1
  7. package/dist/HtmlPreviewBlock-Z2GCK325.js +9 -0
  8. package/dist/{HtmlPreviewBlock-5JE7L3GR.js.map → HtmlPreviewBlock-Z2GCK325.js.map} +1 -1
  9. package/dist/MermaidBlock-I2R2BQOX.cjs +18 -0
  10. package/dist/{MermaidBlock-RZ75RPZA.cjs.map → MermaidBlock-I2R2BQOX.cjs.map} +1 -1
  11. package/dist/MermaidBlock-XCAK7IA5.js +9 -0
  12. package/dist/{MermaidBlock-3XHFBAMV.js.map → MermaidBlock-XCAK7IA5.js.map} +1 -1
  13. package/dist/SurveyBlock-KI5JOWCL.js +9 -0
  14. package/dist/{SurveyBlock-MUVJ3JUI.js.map → SurveyBlock-KI5JOWCL.js.map} +1 -1
  15. package/dist/SurveyBlock-UKSGISRT.cjs +18 -0
  16. package/dist/{SurveyBlock-VH47YXZC.cjs.map → SurveyBlock-UKSGISRT.cjs.map} +1 -1
  17. package/dist/brands/index.cjs +7 -7
  18. package/dist/brands/index.js +2 -2
  19. package/dist/{chunk-6ZPTZTKN.js → chunk-24AFHH4J.js} +3 -3
  20. package/dist/{chunk-6ZPTZTKN.js.map → chunk-24AFHH4J.js.map} +1 -1
  21. package/dist/{chunk-TYE5K5WV.cjs → chunk-32ZCJOSR.cjs} +4 -4
  22. package/dist/{chunk-TYE5K5WV.cjs.map → chunk-32ZCJOSR.cjs.map} +1 -1
  23. package/dist/{chunk-SD7ONW6S.js → chunk-3DLLTITK.js} +4 -4
  24. package/dist/{chunk-SD7ONW6S.js.map → chunk-3DLLTITK.js.map} +1 -1
  25. package/dist/chunk-47P5QLX4.cjs +42 -0
  26. package/dist/chunk-47P5QLX4.cjs.map +1 -0
  27. package/dist/chunk-4ZB7RSMY.cjs +306 -0
  28. package/dist/chunk-4ZB7RSMY.cjs.map +1 -0
  29. package/dist/{chunk-WXFGHDTV.cjs → chunk-57G3O552.cjs} +13 -13
  30. package/dist/{chunk-WXFGHDTV.cjs.map → chunk-57G3O552.cjs.map} +1 -1
  31. package/dist/{chunk-D22GE27K.js → chunk-5A4SL436.js} +4 -4
  32. package/dist/{chunk-D22GE27K.js.map → chunk-5A4SL436.js.map} +1 -1
  33. package/dist/chunk-6BNZLN4B.cjs +548 -0
  34. package/dist/chunk-6BNZLN4B.cjs.map +1 -0
  35. package/dist/chunk-6JSFT2J5.js +130 -0
  36. package/dist/chunk-6JSFT2J5.js.map +1 -0
  37. package/dist/{chunk-NKV76R65.cjs → chunk-6M63CM7X.cjs} +26 -26
  38. package/dist/{chunk-NKV76R65.cjs.map → chunk-6M63CM7X.cjs.map} +1 -1
  39. package/dist/chunk-6N7NMOSV.js +233 -0
  40. package/dist/chunk-6N7NMOSV.js.map +1 -0
  41. package/dist/chunk-6TTCZY3P.cjs +4 -0
  42. package/dist/chunk-6TTCZY3P.cjs.map +1 -0
  43. package/dist/{chunk-TTSSUOEV.cjs → chunk-7C5W744U.cjs} +8 -8
  44. package/dist/{chunk-TTSSUOEV.cjs.map → chunk-7C5W744U.cjs.map} +1 -1
  45. package/dist/chunk-7HUTR6RX.js +178 -0
  46. package/dist/chunk-7HUTR6RX.js.map +1 -0
  47. package/dist/chunk-7IRTD4JT.cjs +61 -0
  48. package/dist/chunk-7IRTD4JT.cjs.map +1 -0
  49. package/dist/{chunk-YU55JD35.js → chunk-7QW6TU4X.js} +3 -3
  50. package/dist/{chunk-YU55JD35.js.map → chunk-7QW6TU4X.js.map} +1 -1
  51. package/dist/chunk-7WJ6MBF5.cjs +47 -0
  52. package/dist/chunk-7WJ6MBF5.cjs.map +1 -0
  53. package/dist/chunk-A4W5CSK7.cjs +216 -0
  54. package/dist/chunk-A4W5CSK7.cjs.map +1 -0
  55. package/dist/chunk-AMYFRY7K.js +3 -0
  56. package/dist/chunk-AMYFRY7K.js.map +1 -0
  57. package/dist/{chunk-X6A27RGO.cjs → chunk-ANMX7YDL.cjs} +2 -2
  58. package/dist/{chunk-X6A27RGO.cjs.map → chunk-ANMX7YDL.cjs.map} +1 -1
  59. package/dist/{chunk-DVOQ3JNO.js → chunk-B4CKCNWD.js} +16 -8
  60. package/dist/chunk-B4CKCNWD.js.map +1 -0
  61. package/dist/chunk-BJ6ABRSQ.cjs +256 -0
  62. package/dist/chunk-BJ6ABRSQ.cjs.map +1 -0
  63. package/dist/chunk-BXRQ6HEP.cjs +4 -0
  64. package/dist/chunk-BXRQ6HEP.cjs.map +1 -0
  65. package/dist/{chunk-TJCX4OML.cjs → chunk-C77FAR3F.cjs} +2 -2
  66. package/dist/{chunk-TJCX4OML.cjs.map → chunk-C77FAR3F.cjs.map} +1 -1
  67. package/dist/chunk-CBBKWRLG.js +213 -0
  68. package/dist/chunk-CBBKWRLG.js.map +1 -0
  69. package/dist/{chunk-BNH4SXJB.js → chunk-CMF7VCGP.js} +5 -5
  70. package/dist/{chunk-BNH4SXJB.js.map → chunk-CMF7VCGP.js.map} +1 -1
  71. package/dist/chunk-CPDNX3LS.cjs +47 -0
  72. package/dist/chunk-CPDNX3LS.cjs.map +1 -0
  73. package/dist/chunk-CVNPNZMX.js +44 -0
  74. package/dist/chunk-CVNPNZMX.js.map +1 -0
  75. package/dist/chunk-DHGCLPFZ.js +91 -0
  76. package/dist/chunk-DHGCLPFZ.js.map +1 -0
  77. package/dist/chunk-DO2YN46R.cjs +201 -0
  78. package/dist/chunk-DO2YN46R.cjs.map +1 -0
  79. package/dist/chunk-DVDT7TX7.js +151 -0
  80. package/dist/chunk-DVDT7TX7.js.map +1 -0
  81. package/dist/{chunk-R5Z7AOVU.cjs → chunk-DZ3JTMKM.cjs} +9 -9
  82. package/dist/{chunk-R5Z7AOVU.cjs.map → chunk-DZ3JTMKM.cjs.map} +1 -1
  83. package/dist/chunk-EACNRR3C.cjs +4 -0
  84. package/dist/chunk-EACNRR3C.cjs.map +1 -0
  85. package/dist/{chunk-E2PBPQGS.js → chunk-EEOGIGIA.js} +2 -2
  86. package/dist/{chunk-E2PBPQGS.js.map → chunk-EEOGIGIA.js.map} +1 -1
  87. package/dist/{chunk-QURJVPRH.cjs → chunk-EMRWTCCN.cjs} +41 -2
  88. package/dist/chunk-EMRWTCCN.cjs.map +1 -0
  89. package/dist/chunk-EPCUPHEO.js +193 -0
  90. package/dist/chunk-EPCUPHEO.js.map +1 -0
  91. package/dist/chunk-EPTP3VKT.js +283 -0
  92. package/dist/chunk-EPTP3VKT.js.map +1 -0
  93. package/dist/{chunk-HIZWOAWY.cjs → chunk-ERACGSDY.cjs} +8 -8
  94. package/dist/{chunk-HIZWOAWY.cjs.map → chunk-ERACGSDY.cjs.map} +1 -1
  95. package/dist/{chunk-VOQJHSXN.cjs → chunk-F2FOG4EG.cjs} +9 -9
  96. package/dist/{chunk-VOQJHSXN.cjs.map → chunk-F2FOG4EG.cjs.map} +1 -1
  97. package/dist/{chunk-GBUVIGD5.js → chunk-F3EWRDIT.js} +99 -3
  98. package/dist/chunk-F3EWRDIT.js.map +1 -0
  99. package/dist/{chunk-ZTMYKAVU.cjs → chunk-FCV7GBNQ.cjs} +24 -23
  100. package/dist/chunk-FCV7GBNQ.cjs.map +1 -0
  101. package/dist/{chunk-GVLNXPJX.js → chunk-FGLIP6YR.js} +4 -4
  102. package/dist/{chunk-GVLNXPJX.js.map → chunk-FGLIP6YR.js.map} +1 -1
  103. package/dist/chunk-FKGFOBC2.js +314 -0
  104. package/dist/chunk-FKGFOBC2.js.map +1 -0
  105. package/dist/chunk-FSGJXCBG.cjs +318 -0
  106. package/dist/chunk-FSGJXCBG.cjs.map +1 -0
  107. package/dist/chunk-FTEZNCRI.js +29 -0
  108. package/dist/chunk-FTEZNCRI.js.map +1 -0
  109. package/dist/{chunk-COM7RNZU.cjs → chunk-FYQZWLAM.cjs} +2 -2
  110. package/dist/{chunk-COM7RNZU.cjs.map → chunk-FYQZWLAM.cjs.map} +1 -1
  111. package/dist/{chunk-YVPC65ZJ.cjs → chunk-GF2BE4FB.cjs} +91 -32
  112. package/dist/chunk-GF2BE4FB.cjs.map +1 -0
  113. package/dist/{chunk-JEIW7BSV.cjs → chunk-GKDHMNUA.cjs} +2 -52
  114. package/dist/chunk-GKDHMNUA.cjs.map +1 -0
  115. package/dist/{chunk-N7C4OEP7.cjs → chunk-GM32IDVL.cjs} +6 -6
  116. package/dist/{chunk-N7C4OEP7.cjs.map → chunk-GM32IDVL.cjs.map} +1 -1
  117. package/dist/chunk-GNOQFTLL.cjs +286 -0
  118. package/dist/chunk-GNOQFTLL.cjs.map +1 -0
  119. package/dist/chunk-GY5SP4ST.js +3 -0
  120. package/dist/chunk-GY5SP4ST.js.map +1 -0
  121. package/dist/chunk-H2Y7HZV5.js +3 -0
  122. package/dist/chunk-H2Y7HZV5.js.map +1 -0
  123. package/dist/chunk-H3QPREIJ.js +195 -0
  124. package/dist/chunk-H3QPREIJ.js.map +1 -0
  125. package/dist/{chunk-QOVJ6Z6R.js → chunk-HDY7YQFX.js} +3 -3
  126. package/dist/{chunk-QOVJ6Z6R.js.map → chunk-HDY7YQFX.js.map} +1 -1
  127. package/dist/chunk-HNFFFFYH.cjs +114 -0
  128. package/dist/chunk-HNFFFFYH.cjs.map +1 -0
  129. package/dist/chunk-HNXLLDPN.js +25 -0
  130. package/dist/chunk-HNXLLDPN.js.map +1 -0
  131. package/dist/chunk-I2MMUFCN.cjs +154 -0
  132. package/dist/chunk-I2MMUFCN.cjs.map +1 -0
  133. package/dist/{chunk-GYXUS65N.cjs → chunk-IGDO62KR.cjs} +5 -5
  134. package/dist/{chunk-GYXUS65N.cjs.map → chunk-IGDO62KR.cjs.map} +1 -1
  135. package/dist/{chunk-JBIGSP2T.js → chunk-ILDLYRTP.js} +5 -4
  136. package/dist/chunk-ILDLYRTP.js.map +1 -0
  137. package/dist/{chunk-HC3NAN55.cjs → chunk-IPL2O2OL.cjs} +19 -19
  138. package/dist/{chunk-HC3NAN55.cjs.map → chunk-IPL2O2OL.cjs.map} +1 -1
  139. package/dist/chunk-ISUIKUX7.cjs +337 -0
  140. package/dist/chunk-ISUIKUX7.cjs.map +1 -0
  141. package/dist/{chunk-N5O47VGS.cjs → chunk-IVGI353O.cjs} +2 -2
  142. package/dist/{chunk-N5O47VGS.cjs.map → chunk-IVGI353O.cjs.map} +1 -1
  143. package/dist/chunk-IWRBJHO3.cjs +51 -0
  144. package/dist/chunk-IWRBJHO3.cjs.map +1 -0
  145. package/dist/{chunk-KRU6IGV7.js → chunk-JUJGWUAN.js} +28 -6
  146. package/dist/chunk-JUJGWUAN.js.map +1 -0
  147. package/dist/{chunk-BUT6MF5K.cjs → chunk-KQ6GLYFZ.cjs} +4 -4
  148. package/dist/{chunk-BUT6MF5K.cjs.map → chunk-KQ6GLYFZ.cjs.map} +1 -1
  149. package/dist/chunk-L6K4PRZK.cjs +4 -0
  150. package/dist/chunk-L6K4PRZK.cjs.map +1 -0
  151. package/dist/{chunk-P7UMS4E6.cjs → chunk-LC7PVBXH.cjs} +16 -8
  152. package/dist/chunk-LC7PVBXH.cjs.map +1 -0
  153. package/dist/chunk-LRRSD7LR.js +248 -0
  154. package/dist/chunk-LRRSD7LR.js.map +1 -0
  155. package/dist/chunk-LSMS6DY7.cjs +331 -0
  156. package/dist/chunk-LSMS6DY7.cjs.map +1 -0
  157. package/dist/chunk-M3VPGJMV.js +283 -0
  158. package/dist/chunk-M3VPGJMV.js.map +1 -0
  159. package/dist/{chunk-2JICT4A2.js → chunk-N54FYWG6.js} +3 -3
  160. package/dist/{chunk-2JICT4A2.js.map → chunk-N54FYWG6.js.map} +1 -1
  161. package/dist/chunk-N5JDL4VE.js +3 -0
  162. package/dist/chunk-N5JDL4VE.js.map +1 -0
  163. package/dist/{chunk-KGKBZN3T.cjs → chunk-NAH65KPK.cjs} +8 -8
  164. package/dist/{chunk-KGKBZN3T.cjs.map → chunk-NAH65KPK.cjs.map} +1 -1
  165. package/dist/chunk-O4WGSOJI.js +261 -0
  166. package/dist/chunk-O4WGSOJI.js.map +1 -0
  167. package/dist/{chunk-SVSHA7XV.js → chunk-O6XDA3SI.js} +31 -33
  168. package/dist/chunk-O6XDA3SI.js.map +1 -0
  169. package/dist/chunk-OIF34LEN.cjs +425 -0
  170. package/dist/chunk-OIF34LEN.cjs.map +1 -0
  171. package/dist/chunk-ORCCJ5VY.cjs +218 -0
  172. package/dist/chunk-ORCCJ5VY.cjs.map +1 -0
  173. package/dist/{chunk-CRS2CQWM.js → chunk-OSTSZDQC.js} +3 -3
  174. package/dist/{chunk-CRS2CQWM.js.map → chunk-OSTSZDQC.js.map} +1 -1
  175. package/dist/{chunk-MLAWXPRY.js → chunk-OZ5CKVQN.js} +41 -2
  176. package/dist/chunk-OZ5CKVQN.js.map +1 -0
  177. package/dist/chunk-P22YCUVM.cjs +4 -0
  178. package/dist/chunk-P22YCUVM.cjs.map +1 -0
  179. package/dist/chunk-P55LNEDH.cjs +306 -0
  180. package/dist/chunk-P55LNEDH.cjs.map +1 -0
  181. package/dist/{chunk-R6KPWIGO.js → chunk-P7D7BYFE.js} +4 -4
  182. package/dist/{chunk-R6KPWIGO.js.map → chunk-P7D7BYFE.js.map} +1 -1
  183. package/dist/{chunk-GU5OS7JJ.cjs → chunk-PYI2IWNX.cjs} +4 -4
  184. package/dist/{chunk-GU5OS7JJ.cjs.map → chunk-PYI2IWNX.cjs.map} +1 -1
  185. package/dist/chunk-Q3YVLO52.cjs +174 -0
  186. package/dist/chunk-Q3YVLO52.cjs.map +1 -0
  187. package/dist/{chunk-K34DXMLZ.js → chunk-QJ2L5RU6.js} +7 -7
  188. package/dist/{chunk-K34DXMLZ.js.map → chunk-QJ2L5RU6.js.map} +1 -1
  189. package/dist/{chunk-X4LBUPJO.cjs → chunk-QX6AAVDE.cjs} +31 -33
  190. package/dist/chunk-QX6AAVDE.cjs.map +1 -0
  191. package/dist/{chunk-LFPJ3OUM.cjs → chunk-RIUQP2QS.cjs} +5 -5
  192. package/dist/{chunk-LFPJ3OUM.cjs.map → chunk-RIUQP2QS.cjs.map} +1 -1
  193. package/dist/{chunk-JHG3ELS2.js → chunk-RPFATYUI.js} +2 -2
  194. package/dist/{chunk-JHG3ELS2.js.map → chunk-RPFATYUI.js.map} +1 -1
  195. package/dist/{chunk-FZURBQJ2.js → chunk-RSJGTWLM.js} +3 -3
  196. package/dist/{chunk-FZURBQJ2.js.map → chunk-RSJGTWLM.js.map} +1 -1
  197. package/dist/{chunk-XBTKZCZF.js → chunk-RZSSQ7AT.js} +3 -3
  198. package/dist/{chunk-XBTKZCZF.js.map → chunk-RZSSQ7AT.js.map} +1 -1
  199. package/dist/{chunk-VROIMIHB.cjs → chunk-SHBCUXFS.cjs} +28 -6
  200. package/dist/chunk-SHBCUXFS.cjs.map +1 -0
  201. package/dist/{chunk-JELTRRR5.cjs → chunk-SW2E7XKY.cjs} +9 -9
  202. package/dist/{chunk-JELTRRR5.cjs.map → chunk-SW2E7XKY.cjs.map} +1 -1
  203. package/dist/chunk-SZSRGUVO.js +402 -0
  204. package/dist/chunk-SZSRGUVO.js.map +1 -0
  205. package/dist/{chunk-HZ4MBUC3.js → chunk-TI3TQQ7F.js} +4 -53
  206. package/dist/chunk-TI3TQQ7F.js.map +1 -0
  207. package/dist/{chunk-H2IAMSHK.js → chunk-TVEJKKIM.js} +3 -3
  208. package/dist/{chunk-H2IAMSHK.js.map → chunk-TVEJKKIM.js.map} +1 -1
  209. package/dist/{chunk-LHBWRMNC.cjs → chunk-TVU4KB27.cjs} +130 -12
  210. package/dist/chunk-TVU4KB27.cjs.map +1 -0
  211. package/dist/{chunk-ZYL4SNOR.js → chunk-UJDWFDKE.js} +3 -3
  212. package/dist/{chunk-ZYL4SNOR.js.map → chunk-UJDWFDKE.js.map} +1 -1
  213. package/dist/{chunk-4HC2IBOX.js → chunk-UNFDIBKJ.js} +3 -3
  214. package/dist/{chunk-4HC2IBOX.js.map → chunk-UNFDIBKJ.js.map} +1 -1
  215. package/dist/{chunk-IYWG72DM.js → chunk-VEE46VTX.js} +4 -4
  216. package/dist/{chunk-IYWG72DM.js.map → chunk-VEE46VTX.js.map} +1 -1
  217. package/dist/{chunk-Y4E2WRUR.cjs → chunk-VFFV7EMT.cjs} +6 -6
  218. package/dist/{chunk-Y4E2WRUR.cjs.map → chunk-VFFV7EMT.cjs.map} +1 -1
  219. package/dist/chunk-VNEAQCY2.js +308 -0
  220. package/dist/chunk-VNEAQCY2.js.map +1 -0
  221. package/dist/chunk-VOYLX32A.cjs +271 -0
  222. package/dist/chunk-VOYLX32A.cjs.map +1 -0
  223. package/dist/{chunk-7ZV67VZE.js → chunk-VSRO4PAI.js} +21 -3
  224. package/dist/chunk-VSRO4PAI.js.map +1 -0
  225. package/dist/{chunk-L6MDULYB.js → chunk-VU3ZMJBN.js} +2 -2
  226. package/dist/{chunk-L6MDULYB.js.map → chunk-VU3ZMJBN.js.map} +1 -1
  227. package/dist/{chunk-35Y4ILCU.cjs → chunk-VXW7D5LR.cjs} +21 -3
  228. package/dist/chunk-VXW7D5LR.cjs.map +1 -0
  229. package/dist/{chunk-7YO7DNUV.js → chunk-WFBUBT54.js} +2 -2
  230. package/dist/{chunk-7YO7DNUV.js.map → chunk-WFBUBT54.js.map} +1 -1
  231. package/dist/chunk-WQHBMZSC.js +295 -0
  232. package/dist/chunk-WQHBMZSC.js.map +1 -0
  233. package/dist/chunk-X5JOEZVR.js +525 -0
  234. package/dist/chunk-X5JOEZVR.js.map +1 -0
  235. package/dist/chunk-XBAAHOCP.js +3 -0
  236. package/dist/chunk-XBAAHOCP.js.map +1 -0
  237. package/dist/chunk-XNPDZANN.cjs +238 -0
  238. package/dist/chunk-XNPDZANN.cjs.map +1 -0
  239. package/dist/chunk-XXA4NZUC.js +3 -0
  240. package/dist/chunk-XXA4NZUC.js.map +1 -0
  241. package/dist/chunk-Y424YL55.js +59 -0
  242. package/dist/chunk-Y424YL55.js.map +1 -0
  243. package/dist/chunk-YGS2TRMP.js +38 -0
  244. package/dist/chunk-YGS2TRMP.js.map +1 -0
  245. package/dist/chunk-YUMOM3KE.js +167 -0
  246. package/dist/chunk-YUMOM3KE.js.map +1 -0
  247. package/dist/{chunk-3KPDQG5O.cjs → chunk-ZG6FXMDX.cjs} +5 -5
  248. package/dist/{chunk-3KPDQG5O.cjs.map → chunk-ZG6FXMDX.cjs.map} +1 -1
  249. package/dist/chunk-ZNUMOJOI.cjs +4 -0
  250. package/dist/chunk-ZNUMOJOI.cjs.map +1 -0
  251. package/dist/components/Accordion/index.cjs +2 -2
  252. package/dist/components/Accordion/index.d.cts +6 -0
  253. package/dist/components/Accordion/index.d.ts +6 -0
  254. package/dist/components/Accordion/index.js +1 -1
  255. package/dist/components/ActionPlan/index.cjs +34 -0
  256. package/dist/components/ActionPlan/index.cjs.map +1 -0
  257. package/dist/components/ActionPlan/index.d.cts +65 -0
  258. package/dist/components/ActionPlan/index.d.ts +65 -0
  259. package/dist/components/ActionPlan/index.js +21 -0
  260. package/dist/components/ActionPlan/index.js.map +1 -0
  261. package/dist/components/ActivityFeed/index.cjs +31 -0
  262. package/dist/components/ActivityFeed/index.cjs.map +1 -0
  263. package/dist/components/ActivityFeed/index.d.cts +99 -0
  264. package/dist/components/ActivityFeed/index.d.ts +99 -0
  265. package/dist/components/ActivityFeed/index.js +18 -0
  266. package/dist/components/ActivityFeed/index.js.map +1 -0
  267. package/dist/components/AlertDialog/index.cjs +16 -3
  268. package/dist/components/AlertDialog/index.d.cts +66 -13
  269. package/dist/components/AlertDialog/index.d.ts +66 -13
  270. package/dist/components/AlertDialog/index.js +3 -2
  271. package/dist/components/AssociationList/index.cjs +29 -0
  272. package/dist/components/AssociationList/index.cjs.map +1 -0
  273. package/dist/components/AssociationList/index.d.cts +50 -0
  274. package/dist/components/AssociationList/index.d.ts +50 -0
  275. package/dist/components/AssociationList/index.js +16 -0
  276. package/dist/components/AssociationList/index.js.map +1 -0
  277. package/dist/components/Avatar/index.cjs +9 -7
  278. package/dist/components/Avatar/index.d.cts +45 -14
  279. package/dist/components/Avatar/index.d.ts +45 -14
  280. package/dist/components/Avatar/index.js +3 -1
  281. package/dist/components/AvatarGroup/index.cjs +20 -0
  282. package/dist/components/AvatarGroup/index.cjs.map +1 -0
  283. package/dist/components/AvatarGroup/index.d.cts +57 -0
  284. package/dist/components/AvatarGroup/index.d.ts +57 -0
  285. package/dist/components/AvatarGroup/index.js +7 -0
  286. package/dist/components/AvatarGroup/index.js.map +1 -0
  287. package/dist/components/Button/index.cjs +3 -2
  288. package/dist/components/Button/index.js +2 -1
  289. package/dist/components/CalendarHeatmap/index.cjs +18 -0
  290. package/dist/components/CalendarHeatmap/index.cjs.map +1 -0
  291. package/dist/components/CalendarHeatmap/index.d.cts +47 -0
  292. package/dist/components/CalendarHeatmap/index.d.ts +47 -0
  293. package/dist/components/CalendarHeatmap/index.js +5 -0
  294. package/dist/components/CalendarHeatmap/index.js.map +1 -0
  295. package/dist/components/CalendarView/index.cjs +5 -4
  296. package/dist/components/CalendarView/index.js +3 -2
  297. package/dist/components/ClampedText/index.cjs +3 -2
  298. package/dist/components/ClampedText/index.js +2 -1
  299. package/dist/components/CollabStatus/index.cjs +6 -4
  300. package/dist/components/CollabStatus/index.d.cts +11 -0
  301. package/dist/components/CollabStatus/index.d.ts +11 -0
  302. package/dist/components/CollabStatus/index.js +3 -1
  303. package/dist/components/Collapsible/index.cjs +4 -4
  304. package/dist/components/Collapsible/index.d.cts +6 -0
  305. package/dist/components/Collapsible/index.d.ts +6 -0
  306. package/dist/components/Collapsible/index.js +1 -1
  307. package/dist/components/CompletenessMeter/index.cjs +22 -0
  308. package/dist/components/CompletenessMeter/index.cjs.map +1 -0
  309. package/dist/components/CompletenessMeter/index.d.cts +52 -0
  310. package/dist/components/CompletenessMeter/index.d.ts +52 -0
  311. package/dist/components/CompletenessMeter/index.js +5 -0
  312. package/dist/components/CompletenessMeter/index.js.map +1 -0
  313. package/dist/components/CustomizableDashboard/index.cjs +10 -9
  314. package/dist/components/CustomizableDashboard/index.js +3 -2
  315. package/dist/components/DateInput/index.d.cts +36 -4
  316. package/dist/components/DateInput/index.d.ts +36 -4
  317. package/dist/components/Dropdown/index.cjs +9 -8
  318. package/dist/components/Dropdown/index.js +2 -1
  319. package/dist/components/FieldHistory/index.cjs +34 -0
  320. package/dist/components/FieldHistory/index.cjs.map +1 -0
  321. package/dist/components/FieldHistory/index.d.cts +66 -0
  322. package/dist/components/FieldHistory/index.d.ts +66 -0
  323. package/dist/components/FieldHistory/index.js +21 -0
  324. package/dist/components/FieldHistory/index.js.map +1 -0
  325. package/dist/components/FloatingWindow/index.cjs +5 -4
  326. package/dist/components/FloatingWindow/index.js +3 -2
  327. package/dist/components/InlineEdit/index.cjs +20 -0
  328. package/dist/components/InlineEdit/index.cjs.map +1 -0
  329. package/dist/components/InlineEdit/index.d.cts +56 -0
  330. package/dist/components/InlineEdit/index.d.ts +56 -0
  331. package/dist/components/InlineEdit/index.js +7 -0
  332. package/dist/components/InlineEdit/index.js.map +1 -0
  333. package/dist/components/ListView/index.cjs +5 -4
  334. package/dist/components/ListView/index.js +3 -2
  335. package/dist/components/LogoUploader/index.cjs +18 -0
  336. package/dist/components/LogoUploader/index.cjs.map +1 -0
  337. package/dist/components/LogoUploader/index.d.cts +49 -0
  338. package/dist/components/LogoUploader/index.d.ts +49 -0
  339. package/dist/components/LogoUploader/index.js +5 -0
  340. package/dist/components/LogoUploader/index.js.map +1 -0
  341. package/dist/components/Markdown/index.cjs +17 -16
  342. package/dist/components/Markdown/index.js +8 -7
  343. package/dist/components/MediaEditor/index.cjs +9 -8
  344. package/dist/components/MediaEditor/index.js +4 -3
  345. package/dist/components/MediaFeed/index.cjs +8 -5
  346. package/dist/components/MediaFeed/index.js +7 -4
  347. package/dist/components/MediaPlayer/index.cjs +6 -5
  348. package/dist/components/MediaPlayer/index.js +3 -2
  349. package/dist/components/MegaMenu/index.cjs +2 -1
  350. package/dist/components/MegaMenu/index.js +2 -1
  351. package/dist/components/PhiMask/index.cjs +18 -0
  352. package/dist/components/PhiMask/index.cjs.map +1 -0
  353. package/dist/components/PhiMask/index.d.cts +45 -0
  354. package/dist/components/PhiMask/index.d.ts +45 -0
  355. package/dist/components/PhiMask/index.js +5 -0
  356. package/dist/components/PhiMask/index.js.map +1 -0
  357. package/dist/components/PhoneInput/index.d.cts +3 -36
  358. package/dist/components/PhoneInput/index.d.ts +3 -36
  359. package/dist/components/PropertyList/index.cjs +25 -0
  360. package/dist/components/PropertyList/index.cjs.map +1 -0
  361. package/dist/components/PropertyList/index.d.cts +71 -0
  362. package/dist/components/PropertyList/index.d.ts +71 -0
  363. package/dist/components/PropertyList/index.js +12 -0
  364. package/dist/components/PropertyList/index.js.map +1 -0
  365. package/dist/components/RadialExplorer/index.cjs +2 -1
  366. package/dist/components/RadialExplorer/index.js +2 -1
  367. package/dist/components/Rating/index.cjs +28 -0
  368. package/dist/components/Rating/index.cjs.map +1 -0
  369. package/dist/components/Rating/index.d.cts +85 -0
  370. package/dist/components/Rating/index.d.ts +85 -0
  371. package/dist/components/Rating/index.js +7 -0
  372. package/dist/components/Rating/index.js.map +1 -0
  373. package/dist/components/RecordHeader/index.cjs +29 -0
  374. package/dist/components/RecordHeader/index.cjs.map +1 -0
  375. package/dist/components/RecordHeader/index.d.cts +86 -0
  376. package/dist/components/RecordHeader/index.d.ts +86 -0
  377. package/dist/components/RecordHeader/index.js +16 -0
  378. package/dist/components/RecordHeader/index.js.map +1 -0
  379. package/dist/components/RecordLayout/index.cjs +21 -0
  380. package/dist/components/RecordLayout/index.cjs.map +1 -0
  381. package/dist/components/RecordLayout/index.d.cts +40 -0
  382. package/dist/components/RecordLayout/index.d.ts +40 -0
  383. package/dist/components/RecordLayout/index.js +8 -0
  384. package/dist/components/RecordLayout/index.js.map +1 -0
  385. package/dist/components/RichTextEditor/index.cjs +8 -6
  386. package/dist/components/RichTextEditor/index.js +5 -3
  387. package/dist/components/SectionSpyNav/index.cjs +2 -1
  388. package/dist/components/SectionSpyNav/index.js +2 -1
  389. package/dist/components/SuperChat/index.cjs +22 -18
  390. package/dist/components/SuperChat/index.cjs.map +1 -1
  391. package/dist/components/SuperChat/index.js +10 -6
  392. package/dist/components/SuperChat/index.js.map +1 -1
  393. package/dist/components/SuperChat/plugins/index.cjs +5 -4
  394. package/dist/components/SuperChat/plugins/index.cjs.map +1 -1
  395. package/dist/components/SuperChat/plugins/index.js +4 -3
  396. package/dist/components/SuperChat/plugins/index.js.map +1 -1
  397. package/dist/components/Tabs/index.cjs +9 -7
  398. package/dist/components/Tabs/index.d.cts +12 -1
  399. package/dist/components/Tabs/index.d.ts +12 -1
  400. package/dist/components/Tabs/index.js +3 -1
  401. package/dist/components/TagEditor/index.cjs +20 -0
  402. package/dist/components/TagEditor/index.cjs.map +1 -0
  403. package/dist/components/TagEditor/index.d.cts +46 -0
  404. package/dist/components/TagEditor/index.d.ts +46 -0
  405. package/dist/components/TagEditor/index.js +7 -0
  406. package/dist/components/TagEditor/index.js.map +1 -0
  407. package/dist/components/UserPicker/index.cjs +24 -0
  408. package/dist/components/UserPicker/index.cjs.map +1 -0
  409. package/dist/components/UserPicker/index.d.cts +60 -0
  410. package/dist/components/UserPicker/index.d.ts +60 -0
  411. package/dist/components/UserPicker/index.js +11 -0
  412. package/dist/components/UserPicker/index.js.map +1 -0
  413. package/dist/components/ViewSet/index.cjs +6 -5
  414. package/dist/components/ViewSet/index.d.cts +2 -1
  415. package/dist/components/ViewSet/index.d.ts +2 -1
  416. package/dist/components/ViewSet/index.js +5 -4
  417. package/dist/components/ViewSwitcher/index.d.cts +39 -4
  418. package/dist/components/ViewSwitcher/index.d.ts +39 -4
  419. package/dist/datavis.cjs +3 -2
  420. package/dist/datavis.cjs.map +1 -1
  421. package/dist/datavis.js +2 -1
  422. package/dist/datavis.js.map +1 -1
  423. package/dist/esheet.cjs +8 -6
  424. package/dist/esheet.cjs.map +1 -1
  425. package/dist/esheet.js +5 -3
  426. package/dist/esheet.js.map +1 -1
  427. package/dist/hooks/index.cjs +53 -27
  428. package/dist/hooks/index.d.cts +91 -6
  429. package/dist/hooks/index.d.ts +91 -6
  430. package/dist/hooks/index.js +5 -3
  431. package/dist/index.cjs +1258 -714
  432. package/dist/index.cjs.map +1 -1
  433. package/dist/index.d.cts +1253 -168
  434. package/dist/index.d.ts +1253 -168
  435. package/dist/index.js +536 -168
  436. package/dist/index.js.map +1 -1
  437. package/dist/org-chart.cjs +1302 -0
  438. package/dist/org-chart.cjs.map +1 -0
  439. package/dist/org-chart.d.cts +164 -0
  440. package/dist/org-chart.d.ts +164 -0
  441. package/dist/org-chart.js +1277 -0
  442. package/dist/org-chart.js.map +1 -0
  443. package/dist/styles.css +1 -1
  444. package/dist/tailwind-preset.cjs +4 -4
  445. package/dist/tailwind-preset.js +1 -1
  446. package/dist/{index-DoYYWsNc.d.cts → types-CDeBNZiE.d.cts} +1 -36
  447. package/dist/{index-DoYYWsNc.d.ts → types-CDeBNZiE.d.ts} +1 -36
  448. package/package.json +22 -2
  449. package/dist/CsvBlock-FX5YNGNE.cjs +0 -17
  450. package/dist/CsvBlock-VLMG7GUO.js +0 -8
  451. package/dist/HtmlPreviewBlock-5JE7L3GR.js +0 -8
  452. package/dist/HtmlPreviewBlock-UO37JQ3K.cjs +0 -17
  453. package/dist/MermaidBlock-3XHFBAMV.js +0 -8
  454. package/dist/MermaidBlock-RZ75RPZA.cjs +0 -17
  455. package/dist/SurveyBlock-MUVJ3JUI.js +0 -8
  456. package/dist/SurveyBlock-VH47YXZC.cjs +0 -17
  457. package/dist/chunk-35Y4ILCU.cjs.map +0 -1
  458. package/dist/chunk-6N6LIAUJ.cjs +0 -80
  459. package/dist/chunk-6N6LIAUJ.cjs.map +0 -1
  460. package/dist/chunk-7ZV67VZE.js.map +0 -1
  461. package/dist/chunk-7ZVTLTJF.js +0 -109
  462. package/dist/chunk-7ZVTLTJF.js.map +0 -1
  463. package/dist/chunk-DVOQ3JNO.js.map +0 -1
  464. package/dist/chunk-GBUVIGD5.js.map +0 -1
  465. package/dist/chunk-HZ4MBUC3.js.map +0 -1
  466. package/dist/chunk-JBIGSP2T.js.map +0 -1
  467. package/dist/chunk-JEIW7BSV.cjs.map +0 -1
  468. package/dist/chunk-KRU6IGV7.js.map +0 -1
  469. package/dist/chunk-LHBWRMNC.cjs.map +0 -1
  470. package/dist/chunk-MLAWXPRY.js.map +0 -1
  471. package/dist/chunk-P7UMS4E6.cjs.map +0 -1
  472. package/dist/chunk-QURJVPRH.cjs.map +0 -1
  473. package/dist/chunk-SVSHA7XV.js.map +0 -1
  474. package/dist/chunk-UBSH27C2.js +0 -78
  475. package/dist/chunk-UBSH27C2.js.map +0 -1
  476. package/dist/chunk-VROIMIHB.cjs.map +0 -1
  477. package/dist/chunk-X4LBUPJO.cjs.map +0 -1
  478. package/dist/chunk-YVPC65ZJ.cjs.map +0 -1
  479. package/dist/chunk-ZTMYKAVU.cjs.map +0 -1
@@ -0,0 +1,548 @@
1
+ 'use strict';
2
+
3
+ var chunk47P5QLX4_cjs = require('./chunk-47P5QLX4.cjs');
4
+ var chunkIWRBJHO3_cjs = require('./chunk-IWRBJHO3.cjs');
5
+ var chunk7IRTD4JT_cjs = require('./chunk-7IRTD4JT.cjs');
6
+ var chunkGKDHMNUA_cjs = require('./chunk-GKDHMNUA.cjs');
7
+ var chunk4NCDU5IG_cjs = require('./chunk-4NCDU5IG.cjs');
8
+ var chunkCPDNX3LS_cjs = require('./chunk-CPDNX3LS.cjs');
9
+ var chunkYW2AKBLS_cjs = require('./chunk-YW2AKBLS.cjs');
10
+ var chunkANMX7YDL_cjs = require('./chunk-ANMX7YDL.cjs');
11
+ var chunkS5RVSXDV_cjs = require('./chunk-S5RVSXDV.cjs');
12
+ var React = require('react');
13
+ var luxon = require('luxon');
14
+ var lucideReact = require('lucide-react');
15
+ var jsxRuntime = require('react/jsx-runtime');
16
+
17
+ function _interopNamespace(e) {
18
+ if (e && e.__esModule) return e;
19
+ var n = Object.create(null);
20
+ if (e) {
21
+ Object.keys(e).forEach(function (k) {
22
+ if (k !== 'default') {
23
+ var d = Object.getOwnPropertyDescriptor(e, k);
24
+ Object.defineProperty(n, k, d.get ? d : {
25
+ enumerable: true,
26
+ get: function () { return e[k]; }
27
+ });
28
+ }
29
+ });
30
+ }
31
+ n.default = e;
32
+ return Object.freeze(n);
33
+ }
34
+
35
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
36
+
37
+ var defaultActivityFeedLabels = {
38
+ loading: "Loading activity",
39
+ empty: "No activity yet",
40
+ noMatches: "No activity matches these filters",
41
+ error: "Could not load activity",
42
+ retry: "Try again",
43
+ today: "Today",
44
+ yesterday: "Yesterday",
45
+ undated: "Undated",
46
+ pinned: "Pinned",
47
+ filters: "Filter by category",
48
+ allCategories: "All",
49
+ compact: "Compact view",
50
+ pin: "Pin",
51
+ loadMore: "Load more",
52
+ resultCount: (count) => count === 1 ? "1 activity shown" : `${count} activities shown`
53
+ };
54
+ function readPrefs(key) {
55
+ try {
56
+ const raw = JSON.parse(window.localStorage.getItem(key) ?? "{}");
57
+ if (!raw || typeof raw !== "object") return {};
58
+ const { categories, density } = raw;
59
+ return {
60
+ categories: Array.isArray(categories) && categories.every((c) => typeof c === "string") ? categories : void 0,
61
+ density: density === "compact" || density === "comfortable" ? density : void 0
62
+ };
63
+ } catch {
64
+ return {};
65
+ }
66
+ }
67
+ function writePrefs(key, prefs) {
68
+ try {
69
+ window.localStorage.setItem(key, JSON.stringify(prefs));
70
+ } catch {
71
+ }
72
+ }
73
+ var chipClasses = "inline-flex items-center gap-1.5 rounded-full border px-3 py-1 text-xs font-medium transition-colors motion-reduce:transition-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring";
74
+ function ActivityFeedInner({
75
+ items,
76
+ getId,
77
+ getDate,
78
+ getCategory,
79
+ getTitle,
80
+ getDescription,
81
+ getActor,
82
+ categories = [],
83
+ loading = false,
84
+ error = null,
85
+ onRetry,
86
+ locale,
87
+ timeZone = "local",
88
+ now,
89
+ pinnedIds,
90
+ onTogglePin,
91
+ onOpen,
92
+ getHref,
93
+ highlightedId = null,
94
+ hasMore = false,
95
+ onLoadMore,
96
+ defaultCategories,
97
+ defaultDensity = "comfortable",
98
+ storageKey,
99
+ renderItem,
100
+ renderItemMeta,
101
+ renderDaySummary,
102
+ emptyState,
103
+ labels,
104
+ classNames,
105
+ headingLevel: Heading = "h3",
106
+ className,
107
+ ...rest
108
+ }, ref) {
109
+ const text = { ...defaultActivityFeedLabels, ...labels };
110
+ const baseId = React__namespace.useId();
111
+ const reducedMotion = chunkYW2AKBLS_cjs.usePrefersReducedMotion();
112
+ const [announcement, announce] = chunkCPDNX3LS_cjs.useLiveAnnouncement();
113
+ const [pinOverrides, runPin] = chunkIWRBJHO3_cjs.usePendingOverrides();
114
+ const [loadingMore, setLoadingMore] = React__namespace.useState(false);
115
+ const [selected, setSelected] = React__namespace.useState(
116
+ defaultCategories ?? []
117
+ );
118
+ const [density, setDensity] = React__namespace.useState(defaultDensity);
119
+ const rowRefs = React__namespace.useRef(/* @__PURE__ */ new Map());
120
+ React__namespace.useEffect(() => {
121
+ if (!storageKey) return;
122
+ const stored = readPrefs(storageKey);
123
+ if (stored.categories) setSelected(stored.categories);
124
+ if (stored.density) setDensity(stored.density);
125
+ }, [storageKey]);
126
+ React__namespace.useEffect(() => {
127
+ if (!highlightedId) return;
128
+ rowRefs.current.get(highlightedId)?.scrollIntoView?.({
129
+ block: "center",
130
+ behavior: reducedMotion ? "auto" : "smooth"
131
+ });
132
+ }, [highlightedId, loading, reducedMotion]);
133
+ const categoryById = React__namespace.useMemo(
134
+ () => new Map(categories.map((c) => [c.id, c])),
135
+ [categories]
136
+ );
137
+ const effectiveFilter = React__namespace.useMemo(
138
+ () => selected.filter((id) => categoryById.has(id)),
139
+ [selected, categoryById]
140
+ );
141
+ const pinnedSet = React__namespace.useMemo(() => new Set(pinnedIds), [pinnedIds]);
142
+ const isPinned = (id) => pinOverrides.get(id) ?? pinnedSet.has(id);
143
+ const matches = (item, filter) => filter.length === 0 || filter.includes(getCategory?.(item) ?? "");
144
+ const updateFilters = (next) => {
145
+ setSelected(next);
146
+ if (storageKey) writePrefs(storageKey, { categories: [...next], density });
147
+ announce(text.resultCount(items.filter((i) => matches(i, next)).length));
148
+ };
149
+ const toggleDensity = () => {
150
+ const next = density === "compact" ? "comfortable" : "compact";
151
+ setDensity(next);
152
+ if (storageKey)
153
+ writePrefs(storageKey, { categories: [...selected], density: next });
154
+ };
155
+ const loadMore = async () => {
156
+ if (!onLoadMore) return;
157
+ setLoadingMore(true);
158
+ try {
159
+ await onLoadMore();
160
+ } catch {
161
+ } finally {
162
+ setLoadingMore(false);
163
+ }
164
+ };
165
+ const zone = timeZone;
166
+ const reference = now ?? /* @__PURE__ */ new Date();
167
+ const compact = density === "compact";
168
+ const visible = items.filter((item) => matches(item, effectiveFilter));
169
+ const pinnedItems = chunk47P5QLX4_cjs.groupByDay(
170
+ visible.filter((item) => isPinned(getId(item))),
171
+ getDate,
172
+ zone
173
+ ).flatMap((g) => g.items);
174
+ const days = chunk47P5QLX4_cjs.groupByDay(
175
+ visible.filter((item) => !isPinned(getId(item))),
176
+ getDate,
177
+ zone
178
+ );
179
+ let row = 0;
180
+ const renderRow = (item) => {
181
+ const id = getId(item);
182
+ const pinned = isPinned(id);
183
+ const pending = pinOverrides.has(id);
184
+ const highlighted = id === highlightedId;
185
+ const category = categoryById.get(getCategory?.(item) ?? "");
186
+ const titleId = `${baseId}-title-${row++}`;
187
+ const accent = chunk4NCDU5IG_cjs.accentClasses[category?.color ?? "neutral"];
188
+ const Icon = category?.icon;
189
+ const dt = chunk4NCDU5IG_cjs.toDateTime(getDate(item), zone);
190
+ const localDt = dt && chunk47P5QLX4_cjs.withLocale(dt, locale);
191
+ const actor = getActor?.(item);
192
+ const description = compact ? void 0 : getDescription?.(item);
193
+ const body2 = renderItem?.(item, { density, pinned, category }) ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
194
+ /* @__PURE__ */ jsxRuntime.jsx(
195
+ "span",
196
+ {
197
+ "aria-hidden": true,
198
+ className: chunkS5RVSXDV_cjs.cn(
199
+ "flex shrink-0 items-center justify-center rounded-full",
200
+ compact ? "size-5" : "mt-0.5 size-7",
201
+ accent.tint
202
+ ),
203
+ children: Icon ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "text-foreground size-3.5" }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkS5RVSXDV_cjs.cn("size-2 rounded-full", accent.marker) })
204
+ }
205
+ ),
206
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "min-w-0 flex-1", children: [
207
+ /* @__PURE__ */ jsxRuntime.jsx(
208
+ "span",
209
+ {
210
+ id: titleId,
211
+ className: "text-foreground block truncate text-sm font-medium",
212
+ children: getTitle?.(item) ?? category?.label ?? id
213
+ }
214
+ ),
215
+ description && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground line-clamp-2 block text-sm", children: description }),
216
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-muted-foreground mt-0.5 flex flex-wrap items-center gap-x-2 gap-y-1 text-xs", children: [
217
+ actor && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1.5", children: [
218
+ !compact && /* @__PURE__ */ jsxRuntime.jsx(
219
+ chunkGKDHMNUA_cjs.Avatar,
220
+ {
221
+ size: "xs",
222
+ name: actor.name,
223
+ src: actor.avatarUrl,
224
+ alt: "",
225
+ "aria-hidden": true
226
+ }
227
+ ),
228
+ actor.name
229
+ ] }),
230
+ category && /* @__PURE__ */ jsxRuntime.jsx("span", { children: category.label }),
231
+ localDt && /* @__PURE__ */ jsxRuntime.jsx(
232
+ "time",
233
+ {
234
+ dateTime: localDt.toISO() ?? void 0,
235
+ title: localDt.toLocaleString(luxon.DateTime.DATETIME_MED),
236
+ children: localDt.toLocaleString(luxon.DateTime.TIME_SIMPLE)
237
+ }
238
+ ),
239
+ renderItemMeta?.(item)
240
+ ] })
241
+ ] })
242
+ ] });
243
+ const mainClasses = "flex min-w-0 flex-1 items-start gap-3 rounded-md text-start focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring";
244
+ const href = getHref?.(id, item);
245
+ let main;
246
+ if (href) {
247
+ main = /* @__PURE__ */ jsxRuntime.jsx(
248
+ "a",
249
+ {
250
+ href,
251
+ className: mainClasses,
252
+ onClick: (event) => {
253
+ if (!onOpen || event.metaKey || event.ctrlKey || event.shiftKey || event.button !== 0)
254
+ return;
255
+ event.preventDefault();
256
+ onOpen(id, item);
257
+ },
258
+ onKeyDown: (event) => {
259
+ if (event.key !== " ") return;
260
+ event.preventDefault();
261
+ event.currentTarget.click();
262
+ },
263
+ children: body2
264
+ }
265
+ );
266
+ } else if (onOpen) {
267
+ main = /* @__PURE__ */ jsxRuntime.jsx(
268
+ "button",
269
+ {
270
+ type: "button",
271
+ className: mainClasses,
272
+ onClick: () => onOpen(id, item),
273
+ children: body2
274
+ }
275
+ );
276
+ } else {
277
+ main = /* @__PURE__ */ jsxRuntime.jsx("div", { className: mainClasses, children: body2 });
278
+ }
279
+ return /* @__PURE__ */ jsxRuntime.jsxs(
280
+ "li",
281
+ {
282
+ ref: (el) => {
283
+ if (el) rowRefs.current.set(id, el);
284
+ else rowRefs.current.delete(id);
285
+ },
286
+ "data-slot": "activity-feed-item",
287
+ "data-highlighted": highlighted || void 0,
288
+ "aria-busy": pending || void 0,
289
+ className: chunkS5RVSXDV_cjs.cn(
290
+ "flex items-start gap-2 px-3",
291
+ compact ? "py-1.5" : "py-3",
292
+ highlighted && "ring-primary-500 bg-primary-500/10 ring-2 ring-inset",
293
+ classNames?.item,
294
+ highlighted && classNames?.highlightedItem
295
+ ),
296
+ children: [
297
+ main,
298
+ onTogglePin && renderItem && /* @__PURE__ */ jsxRuntime.jsx("span", { id: titleId, hidden: true, children: getTitle?.(item) ?? category?.label ?? id }),
299
+ onTogglePin && /* @__PURE__ */ jsxRuntime.jsx(
300
+ "button",
301
+ {
302
+ type: "button",
303
+ "aria-pressed": pinned,
304
+ "aria-label": text.pin,
305
+ "aria-describedby": titleId,
306
+ disabled: pending,
307
+ title: text.pin,
308
+ onClick: () => void runPin(id, !pinned, () => onTogglePin(id, !pinned)),
309
+ className: chunkS5RVSXDV_cjs.cn(
310
+ "text-muted-foreground hover:bg-muted hover:text-foreground shrink-0 rounded-md p-1.5",
311
+ "focus-visible:ring-ring focus-visible:ring-2 focus-visible:outline-none",
312
+ "disabled:opacity-50",
313
+ pinned && "text-foreground"
314
+ ),
315
+ children: /* @__PURE__ */ jsxRuntime.jsx(
316
+ lucideReact.Pin,
317
+ {
318
+ className: chunkS5RVSXDV_cjs.cn("size-4", pinned && "fill-current"),
319
+ "aria-hidden": true
320
+ }
321
+ )
322
+ }
323
+ )
324
+ ]
325
+ },
326
+ id
327
+ );
328
+ };
329
+ const section = (key, label, sectionItems, summary) => {
330
+ const headingId = `${baseId}-day-${key || "none"}`;
331
+ return /* @__PURE__ */ jsxRuntime.jsxs(
332
+ "section",
333
+ {
334
+ "aria-labelledby": headingId,
335
+ "data-slot": "activity-feed-section",
336
+ className: classNames?.section,
337
+ children: [
338
+ /* @__PURE__ */ jsxRuntime.jsx(
339
+ Heading,
340
+ {
341
+ id: headingId,
342
+ "data-slot": "activity-feed-day-header",
343
+ className: chunkS5RVSXDV_cjs.cn(
344
+ "border-border bg-card text-muted-foreground sticky top-0 z-10 flex items-center gap-1.5 border-b px-3 py-2 text-xs font-semibold tracking-wide uppercase",
345
+ classNames?.dayHeader
346
+ ),
347
+ children: label
348
+ }
349
+ ),
350
+ summary,
351
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "divide-border divide-y", children: sectionItems.map(renderRow) })
352
+ ]
353
+ },
354
+ key
355
+ );
356
+ };
357
+ let body;
358
+ if (error) {
359
+ body = /* @__PURE__ */ jsxRuntime.jsx(
360
+ chunk7IRTD4JT_cjs.RecordState,
361
+ {
362
+ kind: "error",
363
+ slot: "activity-feed-state",
364
+ message: text.error,
365
+ retryLabel: text.retry,
366
+ onRetry,
367
+ className: classNames?.state
368
+ }
369
+ );
370
+ } else if (loading) {
371
+ body = /* @__PURE__ */ jsxRuntime.jsx(
372
+ chunk7IRTD4JT_cjs.RecordState,
373
+ {
374
+ kind: "loading",
375
+ slot: "activity-feed-state",
376
+ message: text.loading,
377
+ className: classNames?.state
378
+ }
379
+ );
380
+ } else if (items.length === 0) {
381
+ body = emptyState ?? /* @__PURE__ */ jsxRuntime.jsx(
382
+ chunk7IRTD4JT_cjs.RecordState,
383
+ {
384
+ kind: "empty",
385
+ slot: "activity-feed-state",
386
+ message: text.empty,
387
+ className: classNames?.state
388
+ }
389
+ );
390
+ } else if (visible.length === 0) {
391
+ body = /* @__PURE__ */ jsxRuntime.jsx(
392
+ chunk7IRTD4JT_cjs.RecordState,
393
+ {
394
+ kind: "empty",
395
+ slot: "activity-feed-state",
396
+ message: text.noMatches,
397
+ className: classNames?.state,
398
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkANMX7YDL_cjs.Button, { variant: "ghost", size: "sm", onClick: () => updateFilters([]), children: text.allCategories })
399
+ }
400
+ );
401
+ } else {
402
+ body = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
403
+ pinnedItems.length > 0 && section(
404
+ "pinned",
405
+ /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
406
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Pin, { className: "size-3.5", "aria-hidden": true }),
407
+ text.pinned
408
+ ] }),
409
+ pinnedItems
410
+ ),
411
+ days.map(
412
+ (day) => section(
413
+ day.key,
414
+ chunk47P5QLX4_cjs.formatDayLabel(day.key, {
415
+ now: reference,
416
+ zone,
417
+ locale,
418
+ today: text.today,
419
+ yesterday: text.yesterday,
420
+ undated: text.undated
421
+ }),
422
+ day.items,
423
+ renderDaySummary?.(day.key, day.items)
424
+ )
425
+ ),
426
+ hasMore && onLoadMore && /* @__PURE__ */ jsxRuntime.jsx(
427
+ "div",
428
+ {
429
+ "data-slot": "activity-feed-load-more",
430
+ className: chunkS5RVSXDV_cjs.cn("border-border border-t p-3", classNames?.loadMore),
431
+ children: /* @__PURE__ */ jsxRuntime.jsx(
432
+ chunkANMX7YDL_cjs.Button,
433
+ {
434
+ variant: "ghost",
435
+ size: "sm",
436
+ fullWidth: true,
437
+ isLoading: loadingMore,
438
+ onClick: () => void loadMore(),
439
+ children: text.loadMore
440
+ }
441
+ )
442
+ }
443
+ )
444
+ ] });
445
+ }
446
+ return /* @__PURE__ */ jsxRuntime.jsxs(
447
+ "div",
448
+ {
449
+ ref,
450
+ "data-slot": "activity-feed",
451
+ className: chunkS5RVSXDV_cjs.cn(
452
+ "border-border bg-card overflow-hidden rounded-lg border",
453
+ className
454
+ ),
455
+ ...rest,
456
+ children: [
457
+ (categories.length > 0 || items.length > 0) && /* @__PURE__ */ jsxRuntime.jsxs(
458
+ "div",
459
+ {
460
+ "data-slot": "activity-feed-toolbar",
461
+ className: chunkS5RVSXDV_cjs.cn(
462
+ "border-border flex items-center gap-2 border-b px-3 py-2",
463
+ classNames?.toolbar
464
+ ),
465
+ children: [
466
+ categories.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
467
+ "div",
468
+ {
469
+ role: "group",
470
+ "aria-label": text.filters,
471
+ className: "flex min-w-0 flex-1 flex-wrap gap-1.5",
472
+ children: [
473
+ /* @__PURE__ */ jsxRuntime.jsx(
474
+ "button",
475
+ {
476
+ type: "button",
477
+ "aria-pressed": effectiveFilter.length === 0,
478
+ onClick: () => updateFilters([]),
479
+ "data-slot": "activity-feed-filter",
480
+ className: chunkS5RVSXDV_cjs.cn(
481
+ chipClasses,
482
+ effectiveFilter.length === 0 ? "border-primary-500/40 bg-primary-500/10 text-foreground" : "border-border text-muted-foreground hover:bg-muted",
483
+ classNames?.filter
484
+ ),
485
+ children: text.allCategories
486
+ }
487
+ ),
488
+ categories.map((category) => {
489
+ const active = effectiveFilter.includes(category.id);
490
+ const accent = chunk4NCDU5IG_cjs.accentClasses[category.color ?? "primary"];
491
+ const Icon = category.icon;
492
+ return /* @__PURE__ */ jsxRuntime.jsxs(
493
+ "button",
494
+ {
495
+ type: "button",
496
+ "aria-pressed": active,
497
+ onClick: () => updateFilters(
498
+ active ? effectiveFilter.filter((c) => c !== category.id) : [...effectiveFilter, category.id]
499
+ ),
500
+ "data-slot": "activity-feed-filter",
501
+ className: chunkS5RVSXDV_cjs.cn(
502
+ chipClasses,
503
+ active ? chunkS5RVSXDV_cjs.cn(accent.tint, accent.border, "text-foreground") : "border-border text-muted-foreground hover:bg-muted",
504
+ classNames?.filter
505
+ ),
506
+ children: [
507
+ Icon && /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "size-3.5", "aria-hidden": true }),
508
+ category.label
509
+ ]
510
+ },
511
+ category.id
512
+ );
513
+ })
514
+ ]
515
+ }
516
+ ),
517
+ /* @__PURE__ */ jsxRuntime.jsx(
518
+ "button",
519
+ {
520
+ type: "button",
521
+ "aria-pressed": compact,
522
+ "aria-label": text.compact,
523
+ title: text.compact,
524
+ onClick: toggleDensity,
525
+ className: chunkS5RVSXDV_cjs.cn(
526
+ "text-muted-foreground hover:bg-muted ms-auto shrink-0 rounded-md p-1.5",
527
+ "focus-visible:ring-ring focus-visible:ring-2 focus-visible:outline-none",
528
+ compact && "bg-muted text-foreground"
529
+ ),
530
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Rows4, { className: "size-4", "aria-hidden": true })
531
+ }
532
+ )
533
+ ]
534
+ }
535
+ ),
536
+ /* @__PURE__ */ jsxRuntime.jsx("div", { "aria-live": "polite", className: "sr-only", children: announcement }),
537
+ body
538
+ ]
539
+ }
540
+ );
541
+ }
542
+ var ActivityFeed = React__namespace.forwardRef(ActivityFeedInner);
543
+ ActivityFeed.displayName = "ActivityFeed";
544
+
545
+ exports.ActivityFeed = ActivityFeed;
546
+ exports.defaultActivityFeedLabels = defaultActivityFeedLabels;
547
+ //# sourceMappingURL=chunk-6BNZLN4B.cjs.map
548
+ //# sourceMappingURL=chunk-6BNZLN4B.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ActivityFeed/ActivityFeed.tsx"],"names":["React","usePrefersReducedMotion","useLiveAnnouncement","usePendingOverrides","groupByDay","accentClasses","toDateTime","withLocale","body","jsxs","Fragment","jsx","cn","Avatar","DateTime","Pin","RecordState","Button","formatDayLabel","Rows4"],"mappings":"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","file":"chunk-6BNZLN4B.cjs","sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { DateTime } from 'luxon';\nimport { Pin, Rows4, type LucideIcon } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { Avatar } from '../Avatar';\nimport { Button } from '../Button';\nimport { useLiveAnnouncement } from '../../hooks/useLiveAnnouncement';\nimport { usePrefersReducedMotion } from '../../hooks/usePrefersReducedMotion';\nimport { accentClasses, toDateTime, type Accent } from '../../views/types';\nimport { formatDayLabel, groupByDay, withLocale } from './dayGroups';\nimport { RecordState } from './RecordState';\nimport { usePendingOverrides } from './usePendingOverrides';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport type ActivityFeedDensity = 'comfortable' | 'compact';\n\nexport interface ActivityFeedCategory {\n id: string;\n label: string;\n icon?: LucideIcon;\n /** Token name, resolved to `--mieweb-*` colours. */\n color?: Accent;\n}\n\nexport interface ActivityFeedActor {\n name: string;\n avatarUrl?: string;\n}\n\nexport interface ActivityFeedLabels {\n loading: string;\n empty: string;\n /** Shown when items exist but the active filters hide all of them. */\n noMatches: string;\n error: string;\n retry: string;\n today: string;\n yesterday: string;\n undated: string;\n pinned: string;\n /** Accessible name of the category filter group. */\n filters: string;\n /** The chip that clears every filter. */\n allCategories: string;\n compact: string;\n pin: string;\n loadMore: string;\n /** Announced politely after a filter change. */\n resultCount: (count: number) => string;\n}\n\nexport const defaultActivityFeedLabels: ActivityFeedLabels = {\n loading: 'Loading activity',\n empty: 'No activity yet',\n noMatches: 'No activity matches these filters',\n error: 'Could not load activity',\n retry: 'Try again',\n today: 'Today',\n yesterday: 'Yesterday',\n undated: 'Undated',\n pinned: 'Pinned',\n filters: 'Filter by category',\n allCategories: 'All',\n compact: 'Compact view',\n pin: 'Pin',\n loadMore: 'Load more',\n resultCount: (count) =>\n count === 1 ? '1 activity shown' : `${count} activities shown`,\n};\n\nexport type ActivityFeedSlot =\n | 'toolbar'\n | 'filter'\n | 'section'\n | 'dayHeader'\n | 'item'\n | 'highlightedItem'\n | 'state'\n | 'loadMore';\n\nexport interface ActivityFeedItemContext {\n density: ActivityFeedDensity;\n pinned: boolean;\n category?: ActivityFeedCategory;\n}\n\nexport interface ActivityFeedProps<T> extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'children'\n> {\n items: T[];\n getId: (item: T) => string;\n /** ISO string or `Date`. Date-only strings are wall dates in `timeZone`. */\n getDate: (item: T) => Date | string | null | undefined;\n /** Matched against `categories[].id`. */\n getCategory?: (item: T) => string | undefined;\n getTitle?: (item: T) => string | undefined;\n getDescription?: (item: T) => string | undefined;\n getActor?: (item: T) => ActivityFeedActor | undefined;\n /** Filter chips, icons and colours, in display order. */\n categories?: readonly ActivityFeedCategory[];\n loading?: boolean;\n error?: Error | null;\n onRetry?: () => void;\n /** BCP 47 locale for day headers and times. Defaults to the runtime's. */\n locale?: string;\n /** IANA zone that decides which day an item falls on. Defaults to local. */\n timeZone?: string;\n /** Pins \"today\" so stories and tests stay deterministic. */\n now?: Date;\n pinnedIds?: readonly string[];\n /** Receives the requested state; the row moves optimistically and restores on rejection. */\n onTogglePin?: (id: string, pinned: boolean) => void | Promise<void>;\n onOpen?: (id: string, item: T) => void;\n getHref?: (id: string, item: T) => string;\n /** Scrolls this row into view and highlights it — for deep links. */\n highlightedId?: string | null;\n hasMore?: boolean;\n /** The button shows pending until the returned promise settles. */\n onLoadMore?: () => void | Promise<void>;\n defaultCategories?: readonly string[];\n defaultDensity?: ActivityFeedDensity;\n /** Persists the selected categories and density in `localStorage` under this key. */\n storageKey?: string;\n /** Replaces the built-in row body. Pinning and opening still wrap it. */\n renderItem?: (item: T, context: ActivityFeedItemContext) => React.ReactNode;\n /** Extra content on the row's meta line (badges, durations, sentiment). */\n renderItemMeta?: (item: T) => React.ReactNode;\n /** Rendered under each day header, e.g. a roll-up of that day's calls. */\n renderDaySummary?: (dayKey: string, items: T[]) => React.ReactNode;\n emptyState?: React.ReactNode;\n labels?: Partial<ActivityFeedLabels>;\n classNames?: Partial<Record<ActivityFeedSlot, string>>;\n headingLevel?: 'h2' | 'h3' | 'h4';\n}\n\ninterface StoredPrefs {\n categories?: string[];\n density?: ActivityFeedDensity;\n}\n\nfunction readPrefs(key: string): StoredPrefs {\n try {\n const raw: unknown = JSON.parse(window.localStorage.getItem(key) ?? '{}');\n if (!raw || typeof raw !== 'object') return {};\n const { categories, density } = raw as Record<string, unknown>;\n return {\n categories:\n Array.isArray(categories) &&\n categories.every((c) => typeof c === 'string')\n ? categories\n : undefined,\n density:\n density === 'compact' || density === 'comfortable'\n ? density\n : undefined,\n };\n } catch {\n return {};\n }\n}\n\nfunction writePrefs(key: string, prefs: StoredPrefs) {\n try {\n window.localStorage.setItem(key, JSON.stringify(prefs));\n } catch {\n // Storage full or blocked: the preference just doesn't persist.\n }\n}\n\nconst chipClasses =\n 'inline-flex items-center gap-1.5 rounded-full border px-3 py-1 text-xs font-medium transition-colors motion-reduce:transition-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring';\n\n// =============================================================================\n// Component\n// =============================================================================\n\nfunction ActivityFeedInner<T>(\n {\n items,\n getId,\n getDate,\n getCategory,\n getTitle,\n getDescription,\n getActor,\n categories = [],\n loading = false,\n error = null,\n onRetry,\n locale,\n timeZone = 'local',\n now,\n pinnedIds,\n onTogglePin,\n onOpen,\n getHref,\n highlightedId = null,\n hasMore = false,\n onLoadMore,\n defaultCategories,\n defaultDensity = 'comfortable',\n storageKey,\n renderItem,\n renderItemMeta,\n renderDaySummary,\n emptyState,\n labels,\n classNames,\n headingLevel: Heading = 'h3',\n className,\n ...rest\n }: ActivityFeedProps<T>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const text = { ...defaultActivityFeedLabels, ...labels };\n const baseId = React.useId();\n const reducedMotion = usePrefersReducedMotion();\n const [announcement, announce] = useLiveAnnouncement();\n const [pinOverrides, runPin] = usePendingOverrides<boolean>();\n const [loadingMore, setLoadingMore] = React.useState(false);\n const [selected, setSelected] = React.useState<readonly string[]>(\n defaultCategories ?? []\n );\n const [density, setDensity] =\n React.useState<ActivityFeedDensity>(defaultDensity);\n const rowRefs = React.useRef(new Map<string, HTMLElement>());\n\n // Read after mount so server and first client render agree.\n React.useEffect(() => {\n if (!storageKey) return;\n const stored = readPrefs(storageKey);\n if (stored.categories) setSelected(stored.categories);\n if (stored.density) setDensity(stored.density);\n }, [storageKey]);\n\n React.useEffect(() => {\n if (!highlightedId) return;\n rowRefs.current.get(highlightedId)?.scrollIntoView?.({\n block: 'center',\n behavior: reducedMotion ? 'auto' : 'smooth',\n });\n }, [highlightedId, loading, reducedMotion]);\n\n const categoryById = React.useMemo(\n () => new Map(categories.map((c) => [c.id, c])),\n [categories]\n );\n // Persisted IDs may reference renamed/removed categories; applying them\n // verbatim would filter out everything with no chip shown as active.\n const effectiveFilter = React.useMemo(\n () => selected.filter((id) => categoryById.has(id)),\n [selected, categoryById]\n );\n const pinnedSet = React.useMemo(() => new Set(pinnedIds), [pinnedIds]);\n const isPinned = (id: string) => pinOverrides.get(id) ?? pinnedSet.has(id);\n const matches = (item: T, filter: readonly string[]) =>\n filter.length === 0 || filter.includes(getCategory?.(item) ?? '');\n\n const updateFilters = (next: readonly string[]) => {\n setSelected(next);\n if (storageKey) writePrefs(storageKey, { categories: [...next], density });\n announce(text.resultCount(items.filter((i) => matches(i, next)).length));\n };\n\n const toggleDensity = () => {\n const next = density === 'compact' ? 'comfortable' : 'compact';\n setDensity(next);\n if (storageKey)\n writePrefs(storageKey, { categories: [...selected], density: next });\n };\n\n const loadMore = async () => {\n if (!onLoadMore) return;\n setLoadingMore(true);\n try {\n await onLoadMore();\n } catch {\n // The caller reports the failure; the button becomes usable again.\n } finally {\n setLoadingMore(false);\n }\n };\n\n const zone = timeZone;\n const reference = now ?? new Date();\n const compact = density === 'compact';\n const visible = items.filter((item) => matches(item, effectiveFilter));\n const pinnedItems = groupByDay(\n visible.filter((item) => isPinned(getId(item))),\n getDate,\n zone\n ).flatMap((g) => g.items);\n const days = groupByDay(\n visible.filter((item) => !isPinned(getId(item))),\n getDate,\n zone\n );\n\n let row = 0;\n const renderRow = (item: T) => {\n const id = getId(item);\n const pinned = isPinned(id);\n const pending = pinOverrides.has(id);\n const highlighted = id === highlightedId;\n const category = categoryById.get(getCategory?.(item) ?? '');\n const titleId = `${baseId}-title-${row++}`;\n const accent = accentClasses[category?.color ?? 'neutral'];\n const Icon = category?.icon;\n const dt = toDateTime(getDate(item), zone);\n const localDt = dt && withLocale(dt, locale);\n const actor = getActor?.(item);\n const description = compact ? undefined : getDescription?.(item);\n\n const body = renderItem?.(item, { density, pinned, category }) ?? (\n <>\n <span\n aria-hidden\n className={cn(\n 'flex shrink-0 items-center justify-center rounded-full',\n compact ? 'size-5' : 'mt-0.5 size-7',\n accent.tint\n )}\n >\n {Icon ? (\n <Icon className=\"text-foreground size-3.5\" />\n ) : (\n <span className={cn('size-2 rounded-full', accent.marker)} />\n )}\n </span>\n <span className=\"min-w-0 flex-1\">\n <span\n id={titleId}\n className=\"text-foreground block truncate text-sm font-medium\"\n >\n {getTitle?.(item) ?? category?.label ?? id}\n </span>\n {description && (\n <span className=\"text-muted-foreground line-clamp-2 block text-sm\">\n {description}\n </span>\n )}\n <span className=\"text-muted-foreground mt-0.5 flex flex-wrap items-center gap-x-2 gap-y-1 text-xs\">\n {actor && (\n <span className=\"inline-flex items-center gap-1.5\">\n {!compact && (\n <Avatar\n size=\"xs\"\n name={actor.name}\n src={actor.avatarUrl}\n alt=\"\"\n aria-hidden\n />\n )}\n {actor.name}\n </span>\n )}\n {category && <span>{category.label}</span>}\n {localDt && (\n <time\n dateTime={localDt.toISO() ?? undefined}\n title={localDt.toLocaleString(DateTime.DATETIME_MED)}\n >\n {localDt.toLocaleString(DateTime.TIME_SIMPLE)}\n </time>\n )}\n {renderItemMeta?.(item)}\n </span>\n </span>\n </>\n );\n\n const mainClasses =\n 'flex min-w-0 flex-1 items-start gap-3 rounded-md text-start focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring';\n const href = getHref?.(id, item);\n let main: React.ReactNode;\n if (href) {\n main = (\n <a\n href={href}\n className={mainClasses}\n onClick={(event) => {\n if (\n !onOpen ||\n event.metaKey ||\n event.ctrlKey ||\n event.shiftKey ||\n event.button !== 0\n )\n return;\n event.preventDefault();\n onOpen(id, item);\n }}\n onKeyDown={(event) => {\n // Anchors ignore Space natively; rows open on Enter and Space alike.\n if (event.key !== ' ') return;\n event.preventDefault();\n event.currentTarget.click();\n }}\n >\n {body}\n </a>\n );\n } else if (onOpen) {\n main = (\n <button\n type=\"button\"\n className={mainClasses}\n onClick={() => onOpen(id, item)}\n >\n {body}\n </button>\n );\n } else {\n main = <div className={mainClasses}>{body}</div>;\n }\n\n return (\n <li\n key={id}\n ref={(el) => {\n if (el) rowRefs.current.set(id, el);\n else rowRefs.current.delete(id);\n }}\n data-slot=\"activity-feed-item\"\n data-highlighted={highlighted || undefined}\n aria-busy={pending || undefined}\n className={cn(\n 'flex items-start gap-2 px-3',\n compact ? 'py-1.5' : 'py-3',\n highlighted && 'ring-primary-500 bg-primary-500/10 ring-2 ring-inset',\n classNames?.item,\n highlighted && classNames?.highlightedItem\n )}\n >\n {main}\n {onTogglePin && renderItem && (\n <span id={titleId} hidden>\n {getTitle?.(item) ?? category?.label ?? id}\n </span>\n )}\n {onTogglePin && (\n <button\n type=\"button\"\n aria-pressed={pinned}\n aria-label={text.pin}\n aria-describedby={titleId}\n disabled={pending}\n title={text.pin}\n onClick={() =>\n void runPin(id, !pinned, () => onTogglePin(id, !pinned))\n }\n className={cn(\n 'text-muted-foreground hover:bg-muted hover:text-foreground shrink-0 rounded-md p-1.5',\n 'focus-visible:ring-ring focus-visible:ring-2 focus-visible:outline-none',\n 'disabled:opacity-50',\n pinned && 'text-foreground'\n )}\n >\n <Pin\n className={cn('size-4', pinned && 'fill-current')}\n aria-hidden\n />\n </button>\n )}\n </li>\n );\n };\n\n const section = (\n key: string,\n label: React.ReactNode,\n sectionItems: T[],\n summary?: React.ReactNode\n ) => {\n const headingId = `${baseId}-day-${key || 'none'}`;\n return (\n <section\n key={key}\n aria-labelledby={headingId}\n data-slot=\"activity-feed-section\"\n className={classNames?.section}\n >\n <Heading\n id={headingId}\n data-slot=\"activity-feed-day-header\"\n className={cn(\n 'border-border bg-card text-muted-foreground sticky top-0 z-10 flex items-center gap-1.5 border-b px-3 py-2 text-xs font-semibold tracking-wide uppercase',\n classNames?.dayHeader\n )}\n >\n {label}\n </Heading>\n {summary}\n <ul className=\"divide-border divide-y\">\n {sectionItems.map(renderRow)}\n </ul>\n </section>\n );\n };\n\n let body: React.ReactNode;\n if (error) {\n body = (\n <RecordState\n kind=\"error\"\n slot=\"activity-feed-state\"\n message={text.error}\n retryLabel={text.retry}\n onRetry={onRetry}\n className={classNames?.state}\n />\n );\n } else if (loading) {\n body = (\n <RecordState\n kind=\"loading\"\n slot=\"activity-feed-state\"\n message={text.loading}\n className={classNames?.state}\n />\n );\n } else if (items.length === 0) {\n body = emptyState ?? (\n <RecordState\n kind=\"empty\"\n slot=\"activity-feed-state\"\n message={text.empty}\n className={classNames?.state}\n />\n );\n } else if (visible.length === 0) {\n body = (\n <RecordState\n kind=\"empty\"\n slot=\"activity-feed-state\"\n message={text.noMatches}\n className={classNames?.state}\n >\n <Button variant=\"ghost\" size=\"sm\" onClick={() => updateFilters([])}>\n {text.allCategories}\n </Button>\n </RecordState>\n );\n } else {\n body = (\n <>\n {pinnedItems.length > 0 &&\n section(\n 'pinned',\n <>\n <Pin className=\"size-3.5\" aria-hidden />\n {text.pinned}\n </>,\n pinnedItems\n )}\n {days.map((day) =>\n section(\n day.key,\n formatDayLabel(day.key, {\n now: reference,\n zone,\n locale,\n today: text.today,\n yesterday: text.yesterday,\n undated: text.undated,\n }),\n day.items,\n renderDaySummary?.(day.key, day.items)\n )\n )}\n {hasMore && onLoadMore && (\n <div\n data-slot=\"activity-feed-load-more\"\n className={cn('border-border border-t p-3', classNames?.loadMore)}\n >\n <Button\n variant=\"ghost\"\n size=\"sm\"\n fullWidth\n isLoading={loadingMore}\n onClick={() => void loadMore()}\n >\n {text.loadMore}\n </Button>\n </div>\n )}\n </>\n );\n }\n\n return (\n <div\n ref={ref}\n data-slot=\"activity-feed\"\n className={cn(\n 'border-border bg-card overflow-hidden rounded-lg border',\n className\n )}\n {...rest}\n >\n {(categories.length > 0 || items.length > 0) && (\n <div\n data-slot=\"activity-feed-toolbar\"\n className={cn(\n 'border-border flex items-center gap-2 border-b px-3 py-2',\n classNames?.toolbar\n )}\n >\n {categories.length > 0 && (\n <div\n role=\"group\"\n aria-label={text.filters}\n className=\"flex min-w-0 flex-1 flex-wrap gap-1.5\"\n >\n <button\n type=\"button\"\n aria-pressed={effectiveFilter.length === 0}\n onClick={() => updateFilters([])}\n data-slot=\"activity-feed-filter\"\n className={cn(\n chipClasses,\n effectiveFilter.length === 0\n ? 'border-primary-500/40 bg-primary-500/10 text-foreground'\n : 'border-border text-muted-foreground hover:bg-muted',\n classNames?.filter\n )}\n >\n {text.allCategories}\n </button>\n {categories.map((category) => {\n const active = effectiveFilter.includes(category.id);\n const accent = accentClasses[category.color ?? 'primary'];\n const Icon = category.icon;\n return (\n <button\n key={category.id}\n type=\"button\"\n aria-pressed={active}\n onClick={() =>\n updateFilters(\n active\n ? effectiveFilter.filter((c) => c !== category.id)\n : [...effectiveFilter, category.id]\n )\n }\n data-slot=\"activity-feed-filter\"\n className={cn(\n chipClasses,\n active\n ? cn(accent.tint, accent.border, 'text-foreground')\n : 'border-border text-muted-foreground hover:bg-muted',\n classNames?.filter\n )}\n >\n {Icon && <Icon className=\"size-3.5\" aria-hidden />}\n {category.label}\n </button>\n );\n })}\n </div>\n )}\n <button\n type=\"button\"\n aria-pressed={compact}\n aria-label={text.compact}\n title={text.compact}\n onClick={toggleDensity}\n className={cn(\n 'text-muted-foreground hover:bg-muted ms-auto shrink-0 rounded-md p-1.5',\n 'focus-visible:ring-ring focus-visible:ring-2 focus-visible:outline-none',\n compact && 'bg-muted text-foreground'\n )}\n >\n <Rows4 className=\"size-4\" aria-hidden />\n </button>\n </div>\n )}\n <div aria-live=\"polite\" className=\"sr-only\">\n {announcement}\n </div>\n {body}\n </div>\n );\n}\n\n/**\n * A day-grouped feed of a record's activity. Declared\n * `parameters.catalog.collection` — its load states are part of the API.\n */\nexport const ActivityFeed = React.forwardRef(ActivityFeedInner) as <T>(\n props: ActivityFeedProps<T> & { ref?: React.ForwardedRef<HTMLDivElement> }\n) => React.ReactElement;\n\n(ActivityFeed as React.FC).displayName = 'ActivityFeed';\n"]}