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

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 (493) 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-BNH4SXJB.js → chunk-2X54ZLT6.js} +6 -6
  22. package/dist/{chunk-BNH4SXJB.js.map → chunk-2X54ZLT6.js.map} +1 -1
  23. package/dist/{chunk-TYE5K5WV.cjs → chunk-32ZCJOSR.cjs} +4 -4
  24. package/dist/{chunk-TYE5K5WV.cjs.map → chunk-32ZCJOSR.cjs.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-56VTM4OX.js +261 -0
  30. package/dist/chunk-56VTM4OX.js.map +1 -0
  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-6N7NMOSV.js +233 -0
  38. package/dist/chunk-6N7NMOSV.js.map +1 -0
  39. package/dist/chunk-6TTCZY3P.cjs +4 -0
  40. package/dist/chunk-6TTCZY3P.cjs.map +1 -0
  41. package/dist/{chunk-TTSSUOEV.cjs → chunk-7C5W744U.cjs} +8 -8
  42. package/dist/{chunk-TTSSUOEV.cjs.map → chunk-7C5W744U.cjs.map} +1 -1
  43. package/dist/chunk-7HUTR6RX.js +178 -0
  44. package/dist/chunk-7HUTR6RX.js.map +1 -0
  45. package/dist/chunk-7IRTD4JT.cjs +61 -0
  46. package/dist/chunk-7IRTD4JT.cjs.map +1 -0
  47. package/dist/{chunk-YU55JD35.js → chunk-7QW6TU4X.js} +3 -3
  48. package/dist/{chunk-YU55JD35.js.map → chunk-7QW6TU4X.js.map} +1 -1
  49. package/dist/chunk-7WJ6MBF5.cjs +47 -0
  50. package/dist/chunk-7WJ6MBF5.cjs.map +1 -0
  51. package/dist/chunk-A4W5CSK7.cjs +216 -0
  52. package/dist/chunk-A4W5CSK7.cjs.map +1 -0
  53. package/dist/{chunk-WXFGHDTV.cjs → chunk-AJPFQF3H.cjs} +18 -18
  54. package/dist/{chunk-WXFGHDTV.cjs.map → chunk-AJPFQF3H.cjs.map} +1 -1
  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-ZTMYKAVU.cjs → chunk-CCAVJSWL.cjs} +49 -48
  70. package/dist/chunk-CCAVJSWL.cjs.map +1 -0
  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-EPCUPHEO.js +193 -0
  88. package/dist/chunk-EPCUPHEO.js.map +1 -0
  89. package/dist/chunk-EPTP3VKT.js +283 -0
  90. package/dist/chunk-EPTP3VKT.js.map +1 -0
  91. package/dist/{chunk-HIZWOAWY.cjs → chunk-ERACGSDY.cjs} +8 -8
  92. package/dist/{chunk-HIZWOAWY.cjs.map → chunk-ERACGSDY.cjs.map} +1 -1
  93. package/dist/{chunk-VOQJHSXN.cjs → chunk-F2FOG4EG.cjs} +9 -9
  94. package/dist/{chunk-VOQJHSXN.cjs.map → chunk-F2FOG4EG.cjs.map} +1 -1
  95. package/dist/{chunk-GBUVIGD5.js → chunk-F3EWRDIT.js} +99 -3
  96. package/dist/chunk-F3EWRDIT.js.map +1 -0
  97. package/dist/{chunk-GVLNXPJX.js → chunk-FGLIP6YR.js} +4 -4
  98. package/dist/{chunk-GVLNXPJX.js.map → chunk-FGLIP6YR.js.map} +1 -1
  99. package/dist/chunk-FKGFOBC2.js +314 -0
  100. package/dist/chunk-FKGFOBC2.js.map +1 -0
  101. package/dist/chunk-FSGJXCBG.cjs +318 -0
  102. package/dist/chunk-FSGJXCBG.cjs.map +1 -0
  103. package/dist/chunk-FTEZNCRI.js +29 -0
  104. package/dist/chunk-FTEZNCRI.js.map +1 -0
  105. package/dist/{chunk-COM7RNZU.cjs → chunk-FYQZWLAM.cjs} +2 -2
  106. package/dist/{chunk-COM7RNZU.cjs.map → chunk-FYQZWLAM.cjs.map} +1 -1
  107. package/dist/{chunk-YVPC65ZJ.cjs → chunk-GF2BE4FB.cjs} +91 -32
  108. package/dist/chunk-GF2BE4FB.cjs.map +1 -0
  109. package/dist/{chunk-JEIW7BSV.cjs → chunk-GKDHMNUA.cjs} +2 -52
  110. package/dist/chunk-GKDHMNUA.cjs.map +1 -0
  111. package/dist/{chunk-N7C4OEP7.cjs → chunk-GM32IDVL.cjs} +6 -6
  112. package/dist/{chunk-N7C4OEP7.cjs.map → chunk-GM32IDVL.cjs.map} +1 -1
  113. package/dist/chunk-GY5SP4ST.js +3 -0
  114. package/dist/chunk-GY5SP4ST.js.map +1 -0
  115. package/dist/chunk-H2Y7HZV5.js +3 -0
  116. package/dist/chunk-H2Y7HZV5.js.map +1 -0
  117. package/dist/chunk-H3QPREIJ.js +195 -0
  118. package/dist/chunk-H3QPREIJ.js.map +1 -0
  119. package/dist/{chunk-QOVJ6Z6R.js → chunk-HDY7YQFX.js} +3 -3
  120. package/dist/{chunk-QOVJ6Z6R.js.map → chunk-HDY7YQFX.js.map} +1 -1
  121. package/dist/chunk-HNFFFFYH.cjs +114 -0
  122. package/dist/chunk-HNFFFFYH.cjs.map +1 -0
  123. package/dist/chunk-HNXLLDPN.js +25 -0
  124. package/dist/chunk-HNXLLDPN.js.map +1 -0
  125. package/dist/chunk-I2MMUFCN.cjs +154 -0
  126. package/dist/chunk-I2MMUFCN.cjs.map +1 -0
  127. package/dist/{chunk-GYXUS65N.cjs → chunk-IGDO62KR.cjs} +5 -5
  128. package/dist/{chunk-GYXUS65N.cjs.map → chunk-IGDO62KR.cjs.map} +1 -1
  129. package/dist/{chunk-HC3NAN55.cjs → chunk-IPL2O2OL.cjs} +19 -19
  130. package/dist/{chunk-HC3NAN55.cjs.map → chunk-IPL2O2OL.cjs.map} +1 -1
  131. package/dist/chunk-ISUIKUX7.cjs +337 -0
  132. package/dist/chunk-ISUIKUX7.cjs.map +1 -0
  133. package/dist/{chunk-N5O47VGS.cjs → chunk-IVGI353O.cjs} +2 -2
  134. package/dist/{chunk-N5O47VGS.cjs.map → chunk-IVGI353O.cjs.map} +1 -1
  135. package/dist/chunk-IWRBJHO3.cjs +51 -0
  136. package/dist/chunk-IWRBJHO3.cjs.map +1 -0
  137. package/dist/{chunk-BIQ7GSO2.js → chunk-JMAZ2GKT.js} +3 -3
  138. package/dist/{chunk-BIQ7GSO2.js.map → chunk-JMAZ2GKT.js.map} +1 -1
  139. package/dist/{chunk-KRU6IGV7.js → chunk-JUJGWUAN.js} +28 -6
  140. package/dist/chunk-JUJGWUAN.js.map +1 -0
  141. package/dist/{chunk-BUT6MF5K.cjs → chunk-KQ6GLYFZ.cjs} +4 -4
  142. package/dist/{chunk-BUT6MF5K.cjs.map → chunk-KQ6GLYFZ.cjs.map} +1 -1
  143. package/dist/chunk-L6K4PRZK.cjs +4 -0
  144. package/dist/chunk-L6K4PRZK.cjs.map +1 -0
  145. package/dist/{chunk-T4L7Q5FA.cjs → chunk-LC3JL2HB.cjs} +6 -2
  146. package/dist/chunk-LC3JL2HB.cjs.map +1 -0
  147. package/dist/{chunk-P7UMS4E6.cjs → chunk-LC7PVBXH.cjs} +16 -8
  148. package/dist/chunk-LC7PVBXH.cjs.map +1 -0
  149. package/dist/chunk-LRRSD7LR.js +248 -0
  150. package/dist/chunk-LRRSD7LR.js.map +1 -0
  151. package/dist/chunk-LSMS6DY7.cjs +331 -0
  152. package/dist/chunk-LSMS6DY7.cjs.map +1 -0
  153. package/dist/chunk-M3VPGJMV.js +283 -0
  154. package/dist/chunk-M3VPGJMV.js.map +1 -0
  155. package/dist/{chunk-QURJVPRH.cjs → chunk-MJJJDQ5P.cjs} +46 -2
  156. package/dist/chunk-MJJJDQ5P.cjs.map +1 -0
  157. package/dist/{chunk-2JICT4A2.js → chunk-N54FYWG6.js} +3 -3
  158. package/dist/{chunk-2JICT4A2.js.map → chunk-N54FYWG6.js.map} +1 -1
  159. package/dist/chunk-N5JDL4VE.js +3 -0
  160. package/dist/chunk-N5JDL4VE.js.map +1 -0
  161. package/dist/{chunk-KGKBZN3T.cjs → chunk-NAH65KPK.cjs} +8 -8
  162. package/dist/{chunk-KGKBZN3T.cjs.map → chunk-NAH65KPK.cjs.map} +1 -1
  163. package/dist/{chunk-NKV76R65.cjs → chunk-O6BJMVGT.cjs} +45 -45
  164. package/dist/{chunk-NKV76R65.cjs.map → chunk-O6BJMVGT.cjs.map} +1 -1
  165. package/dist/{chunk-SVSHA7XV.js → chunk-O6XDA3SI.js} +31 -33
  166. package/dist/chunk-O6XDA3SI.js.map +1 -0
  167. package/dist/chunk-OIF34LEN.cjs +425 -0
  168. package/dist/chunk-OIF34LEN.cjs.map +1 -0
  169. package/dist/chunk-ORCCJ5VY.cjs +218 -0
  170. package/dist/chunk-ORCCJ5VY.cjs.map +1 -0
  171. package/dist/{chunk-CRS2CQWM.js → chunk-OSTSZDQC.js} +3 -3
  172. package/dist/{chunk-CRS2CQWM.js.map → chunk-OSTSZDQC.js.map} +1 -1
  173. package/dist/chunk-P22YCUVM.cjs +4 -0
  174. package/dist/chunk-P22YCUVM.cjs.map +1 -0
  175. package/dist/chunk-P55LNEDH.cjs +306 -0
  176. package/dist/chunk-P55LNEDH.cjs.map +1 -0
  177. package/dist/{chunk-R6KPWIGO.js → chunk-P7D7BYFE.js} +4 -4
  178. package/dist/{chunk-R6KPWIGO.js.map → chunk-P7D7BYFE.js.map} +1 -1
  179. package/dist/{chunk-GU5OS7JJ.cjs → chunk-PYI2IWNX.cjs} +4 -4
  180. package/dist/{chunk-GU5OS7JJ.cjs.map → chunk-PYI2IWNX.cjs.map} +1 -1
  181. package/dist/chunk-Q3YVLO52.cjs +174 -0
  182. package/dist/chunk-Q3YVLO52.cjs.map +1 -0
  183. package/dist/{chunk-K34DXMLZ.js → chunk-QJ2L5RU6.js} +7 -7
  184. package/dist/{chunk-K34DXMLZ.js.map → chunk-QJ2L5RU6.js.map} +1 -1
  185. package/dist/{chunk-X4LBUPJO.cjs → chunk-QX6AAVDE.cjs} +31 -33
  186. package/dist/chunk-QX6AAVDE.cjs.map +1 -0
  187. package/dist/{chunk-LFPJ3OUM.cjs → chunk-RIUQP2QS.cjs} +5 -5
  188. package/dist/{chunk-LFPJ3OUM.cjs.map → chunk-RIUQP2QS.cjs.map} +1 -1
  189. package/dist/{chunk-JHG3ELS2.js → chunk-RPFATYUI.js} +2 -2
  190. package/dist/{chunk-JHG3ELS2.js.map → chunk-RPFATYUI.js.map} +1 -1
  191. package/dist/{chunk-FZURBQJ2.js → chunk-RSJGTWLM.js} +3 -3
  192. package/dist/{chunk-FZURBQJ2.js.map → chunk-RSJGTWLM.js.map} +1 -1
  193. package/dist/{chunk-XBTKZCZF.js → chunk-RZSSQ7AT.js} +3 -3
  194. package/dist/{chunk-XBTKZCZF.js.map → chunk-RZSSQ7AT.js.map} +1 -1
  195. package/dist/{chunk-SD7ONW6S.js → chunk-S2JZL4JC.js} +5 -5
  196. package/dist/{chunk-SD7ONW6S.js.map → chunk-S2JZL4JC.js.map} +1 -1
  197. package/dist/{chunk-VROIMIHB.cjs → chunk-SHBCUXFS.cjs} +28 -6
  198. package/dist/chunk-SHBCUXFS.cjs.map +1 -0
  199. package/dist/{chunk-JELTRRR5.cjs → chunk-SW2E7XKY.cjs} +9 -9
  200. package/dist/{chunk-JELTRRR5.cjs.map → chunk-SW2E7XKY.cjs.map} +1 -1
  201. package/dist/chunk-SZSRGUVO.js +402 -0
  202. package/dist/chunk-SZSRGUVO.js.map +1 -0
  203. package/dist/{chunk-HZ4MBUC3.js → chunk-TI3TQQ7F.js} +4 -53
  204. package/dist/chunk-TI3TQQ7F.js.map +1 -0
  205. package/dist/{chunk-MLAWXPRY.js → chunk-TKWNXAFI.js} +46 -2
  206. package/dist/chunk-TKWNXAFI.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-ENMXHZNE.js → chunk-TWQSMUE6.js} +6 -2
  212. package/dist/chunk-TWQSMUE6.js.map +1 -0
  213. package/dist/{chunk-ZYL4SNOR.js → chunk-UJDWFDKE.js} +3 -3
  214. package/dist/{chunk-ZYL4SNOR.js.map → chunk-UJDWFDKE.js.map} +1 -1
  215. package/dist/{chunk-4HC2IBOX.js → chunk-UNFDIBKJ.js} +3 -3
  216. package/dist/{chunk-4HC2IBOX.js.map → chunk-UNFDIBKJ.js.map} +1 -1
  217. package/dist/chunk-UTIPENPW.cjs +286 -0
  218. package/dist/chunk-UTIPENPW.cjs.map +1 -0
  219. package/dist/{chunk-IYWG72DM.js → chunk-VEE46VTX.js} +4 -4
  220. package/dist/{chunk-IYWG72DM.js.map → chunk-VEE46VTX.js.map} +1 -1
  221. package/dist/{chunk-Y4E2WRUR.cjs → chunk-VFFV7EMT.cjs} +6 -6
  222. package/dist/{chunk-Y4E2WRUR.cjs.map → chunk-VFFV7EMT.cjs.map} +1 -1
  223. package/dist/chunk-VNEAQCY2.js +308 -0
  224. package/dist/chunk-VNEAQCY2.js.map +1 -0
  225. package/dist/chunk-VOYLX32A.cjs +271 -0
  226. package/dist/chunk-VOYLX32A.cjs.map +1 -0
  227. package/dist/{chunk-7ZV67VZE.js → chunk-VSRO4PAI.js} +21 -3
  228. package/dist/chunk-VSRO4PAI.js.map +1 -0
  229. package/dist/{chunk-L6MDULYB.js → chunk-VU3ZMJBN.js} +2 -2
  230. package/dist/{chunk-L6MDULYB.js.map → chunk-VU3ZMJBN.js.map} +1 -1
  231. package/dist/{chunk-CPPUT74P.cjs → chunk-VV2U36T6.cjs} +9 -9
  232. package/dist/{chunk-CPPUT74P.cjs.map → chunk-VV2U36T6.cjs.map} +1 -1
  233. package/dist/{chunk-35Y4ILCU.cjs → chunk-VXW7D5LR.cjs} +21 -3
  234. package/dist/chunk-VXW7D5LR.cjs.map +1 -0
  235. package/dist/{chunk-7YO7DNUV.js → chunk-WFBUBT54.js} +2 -2
  236. package/dist/{chunk-7YO7DNUV.js.map → chunk-WFBUBT54.js.map} +1 -1
  237. package/dist/chunk-WQHBMZSC.js +295 -0
  238. package/dist/chunk-WQHBMZSC.js.map +1 -0
  239. package/dist/chunk-X5JOEZVR.js +525 -0
  240. package/dist/chunk-X5JOEZVR.js.map +1 -0
  241. package/dist/chunk-XBAAHOCP.js +3 -0
  242. package/dist/chunk-XBAAHOCP.js.map +1 -0
  243. package/dist/chunk-XNPDZANN.cjs +238 -0
  244. package/dist/chunk-XNPDZANN.cjs.map +1 -0
  245. package/dist/chunk-XXA4NZUC.js +3 -0
  246. package/dist/chunk-XXA4NZUC.js.map +1 -0
  247. package/dist/chunk-Y424YL55.js +59 -0
  248. package/dist/chunk-Y424YL55.js.map +1 -0
  249. package/dist/chunk-YGS2TRMP.js +38 -0
  250. package/dist/chunk-YGS2TRMP.js.map +1 -0
  251. package/dist/{chunk-JBIGSP2T.js → chunk-YMILRSRO.js} +6 -5
  252. package/dist/chunk-YMILRSRO.js.map +1 -0
  253. package/dist/chunk-YUMOM3KE.js +167 -0
  254. package/dist/chunk-YUMOM3KE.js.map +1 -0
  255. package/dist/{chunk-3KPDQG5O.cjs → chunk-ZG6FXMDX.cjs} +5 -5
  256. package/dist/{chunk-3KPDQG5O.cjs.map → chunk-ZG6FXMDX.cjs.map} +1 -1
  257. package/dist/chunk-ZNUMOJOI.cjs +4 -0
  258. package/dist/chunk-ZNUMOJOI.cjs.map +1 -0
  259. package/dist/components/Accordion/index.cjs +2 -2
  260. package/dist/components/Accordion/index.d.cts +6 -0
  261. package/dist/components/Accordion/index.d.ts +6 -0
  262. package/dist/components/Accordion/index.js +1 -1
  263. package/dist/components/ActionPlan/index.cjs +34 -0
  264. package/dist/components/ActionPlan/index.cjs.map +1 -0
  265. package/dist/components/ActionPlan/index.d.cts +65 -0
  266. package/dist/components/ActionPlan/index.d.ts +65 -0
  267. package/dist/components/ActionPlan/index.js +21 -0
  268. package/dist/components/ActionPlan/index.js.map +1 -0
  269. package/dist/components/ActivityFeed/index.cjs +31 -0
  270. package/dist/components/ActivityFeed/index.cjs.map +1 -0
  271. package/dist/components/ActivityFeed/index.d.cts +99 -0
  272. package/dist/components/ActivityFeed/index.d.ts +99 -0
  273. package/dist/components/ActivityFeed/index.js +18 -0
  274. package/dist/components/ActivityFeed/index.js.map +1 -0
  275. package/dist/components/AlertDialog/index.cjs +17 -4
  276. package/dist/components/AlertDialog/index.d.cts +66 -13
  277. package/dist/components/AlertDialog/index.d.ts +66 -13
  278. package/dist/components/AlertDialog/index.js +4 -3
  279. package/dist/components/AssociationList/index.cjs +29 -0
  280. package/dist/components/AssociationList/index.cjs.map +1 -0
  281. package/dist/components/AssociationList/index.d.cts +50 -0
  282. package/dist/components/AssociationList/index.d.ts +50 -0
  283. package/dist/components/AssociationList/index.js +16 -0
  284. package/dist/components/AssociationList/index.js.map +1 -0
  285. package/dist/components/Avatar/index.cjs +9 -7
  286. package/dist/components/Avatar/index.d.cts +45 -14
  287. package/dist/components/Avatar/index.d.ts +45 -14
  288. package/dist/components/Avatar/index.js +3 -1
  289. package/dist/components/AvatarGroup/index.cjs +20 -0
  290. package/dist/components/AvatarGroup/index.cjs.map +1 -0
  291. package/dist/components/AvatarGroup/index.d.cts +57 -0
  292. package/dist/components/AvatarGroup/index.d.ts +57 -0
  293. package/dist/components/AvatarGroup/index.js +7 -0
  294. package/dist/components/AvatarGroup/index.js.map +1 -0
  295. package/dist/components/Button/index.cjs +3 -2
  296. package/dist/components/Button/index.js +2 -1
  297. package/dist/components/CalendarHeatmap/index.cjs +18 -0
  298. package/dist/components/CalendarHeatmap/index.cjs.map +1 -0
  299. package/dist/components/CalendarHeatmap/index.d.cts +47 -0
  300. package/dist/components/CalendarHeatmap/index.d.ts +47 -0
  301. package/dist/components/CalendarHeatmap/index.js +5 -0
  302. package/dist/components/CalendarHeatmap/index.js.map +1 -0
  303. package/dist/components/CalendarView/index.cjs +5 -4
  304. package/dist/components/CalendarView/index.js +3 -2
  305. package/dist/components/ClampedText/index.cjs +3 -2
  306. package/dist/components/ClampedText/index.js +2 -1
  307. package/dist/components/CollabStatus/index.cjs +6 -4
  308. package/dist/components/CollabStatus/index.d.cts +11 -0
  309. package/dist/components/CollabStatus/index.d.ts +11 -0
  310. package/dist/components/CollabStatus/index.js +3 -1
  311. package/dist/components/Collapsible/index.cjs +4 -4
  312. package/dist/components/Collapsible/index.d.cts +6 -0
  313. package/dist/components/Collapsible/index.d.ts +6 -0
  314. package/dist/components/Collapsible/index.js +1 -1
  315. package/dist/components/CompletenessMeter/index.cjs +22 -0
  316. package/dist/components/CompletenessMeter/index.cjs.map +1 -0
  317. package/dist/components/CompletenessMeter/index.d.cts +52 -0
  318. package/dist/components/CompletenessMeter/index.d.ts +52 -0
  319. package/dist/components/CompletenessMeter/index.js +5 -0
  320. package/dist/components/CompletenessMeter/index.js.map +1 -0
  321. package/dist/components/CustomizableDashboard/index.cjs +10 -9
  322. package/dist/components/CustomizableDashboard/index.js +3 -2
  323. package/dist/components/DateInput/index.d.cts +36 -4
  324. package/dist/components/DateInput/index.d.ts +36 -4
  325. package/dist/components/Dropdown/index.cjs +9 -8
  326. package/dist/components/Dropdown/index.js +2 -1
  327. package/dist/components/FieldHistory/index.cjs +34 -0
  328. package/dist/components/FieldHistory/index.cjs.map +1 -0
  329. package/dist/components/FieldHistory/index.d.cts +66 -0
  330. package/dist/components/FieldHistory/index.d.ts +66 -0
  331. package/dist/components/FieldHistory/index.js +21 -0
  332. package/dist/components/FieldHistory/index.js.map +1 -0
  333. package/dist/components/FloatingWindow/index.cjs +5 -4
  334. package/dist/components/FloatingWindow/index.js +3 -2
  335. package/dist/components/InlineEdit/index.cjs +20 -0
  336. package/dist/components/InlineEdit/index.cjs.map +1 -0
  337. package/dist/components/InlineEdit/index.d.cts +56 -0
  338. package/dist/components/InlineEdit/index.d.ts +56 -0
  339. package/dist/components/InlineEdit/index.js +7 -0
  340. package/dist/components/InlineEdit/index.js.map +1 -0
  341. package/dist/components/KeyboardShortcutsOverlay/index.cjs +4 -4
  342. package/dist/components/KeyboardShortcutsOverlay/index.js +2 -2
  343. package/dist/components/ListView/index.cjs +5 -4
  344. package/dist/components/ListView/index.js +3 -2
  345. package/dist/components/LogoUploader/index.cjs +18 -0
  346. package/dist/components/LogoUploader/index.cjs.map +1 -0
  347. package/dist/components/LogoUploader/index.d.cts +49 -0
  348. package/dist/components/LogoUploader/index.d.ts +49 -0
  349. package/dist/components/LogoUploader/index.js +5 -0
  350. package/dist/components/LogoUploader/index.js.map +1 -0
  351. package/dist/components/Markdown/index.cjs +17 -16
  352. package/dist/components/Markdown/index.js +8 -7
  353. package/dist/components/MediaEditor/index.cjs +10 -9
  354. package/dist/components/MediaEditor/index.js +5 -4
  355. package/dist/components/MediaFeed/index.cjs +9 -6
  356. package/dist/components/MediaFeed/index.js +8 -5
  357. package/dist/components/MediaPlayer/index.cjs +6 -5
  358. package/dist/components/MediaPlayer/index.js +3 -2
  359. package/dist/components/MegaMenu/index.cjs +2 -1
  360. package/dist/components/MegaMenu/index.js +2 -1
  361. package/dist/components/Modal/index.cjs +9 -9
  362. package/dist/components/Modal/index.js +1 -1
  363. package/dist/components/PhiMask/index.cjs +18 -0
  364. package/dist/components/PhiMask/index.cjs.map +1 -0
  365. package/dist/components/PhiMask/index.d.cts +45 -0
  366. package/dist/components/PhiMask/index.d.ts +45 -0
  367. package/dist/components/PhiMask/index.js +5 -0
  368. package/dist/components/PhiMask/index.js.map +1 -0
  369. package/dist/components/PhoneInput/index.d.cts +3 -36
  370. package/dist/components/PhoneInput/index.d.ts +3 -36
  371. package/dist/components/PropertyList/index.cjs +25 -0
  372. package/dist/components/PropertyList/index.cjs.map +1 -0
  373. package/dist/components/PropertyList/index.d.cts +71 -0
  374. package/dist/components/PropertyList/index.d.ts +71 -0
  375. package/dist/components/PropertyList/index.js +12 -0
  376. package/dist/components/PropertyList/index.js.map +1 -0
  377. package/dist/components/RadialExplorer/index.cjs +2 -1
  378. package/dist/components/RadialExplorer/index.js +2 -1
  379. package/dist/components/Rating/index.cjs +28 -0
  380. package/dist/components/Rating/index.cjs.map +1 -0
  381. package/dist/components/Rating/index.d.cts +85 -0
  382. package/dist/components/Rating/index.d.ts +85 -0
  383. package/dist/components/Rating/index.js +7 -0
  384. package/dist/components/Rating/index.js.map +1 -0
  385. package/dist/components/RecordHeader/index.cjs +29 -0
  386. package/dist/components/RecordHeader/index.cjs.map +1 -0
  387. package/dist/components/RecordHeader/index.d.cts +86 -0
  388. package/dist/components/RecordHeader/index.d.ts +86 -0
  389. package/dist/components/RecordHeader/index.js +16 -0
  390. package/dist/components/RecordHeader/index.js.map +1 -0
  391. package/dist/components/RecordLayout/index.cjs +21 -0
  392. package/dist/components/RecordLayout/index.cjs.map +1 -0
  393. package/dist/components/RecordLayout/index.d.cts +40 -0
  394. package/dist/components/RecordLayout/index.d.ts +40 -0
  395. package/dist/components/RecordLayout/index.js +8 -0
  396. package/dist/components/RecordLayout/index.js.map +1 -0
  397. package/dist/components/RichTextEditor/index.cjs +8 -6
  398. package/dist/components/RichTextEditor/index.js +5 -3
  399. package/dist/components/SectionSpyNav/index.cjs +2 -1
  400. package/dist/components/SectionSpyNav/index.js +2 -1
  401. package/dist/components/SuperChat/index.cjs +23 -19
  402. package/dist/components/SuperChat/index.cjs.map +1 -1
  403. package/dist/components/SuperChat/index.js +11 -7
  404. package/dist/components/SuperChat/index.js.map +1 -1
  405. package/dist/components/SuperChat/plugins/index.cjs +5 -4
  406. package/dist/components/SuperChat/plugins/index.cjs.map +1 -1
  407. package/dist/components/SuperChat/plugins/index.js +4 -3
  408. package/dist/components/SuperChat/plugins/index.js.map +1 -1
  409. package/dist/components/Tabs/index.cjs +9 -7
  410. package/dist/components/Tabs/index.d.cts +12 -1
  411. package/dist/components/Tabs/index.d.ts +12 -1
  412. package/dist/components/Tabs/index.js +3 -1
  413. package/dist/components/TagEditor/index.cjs +20 -0
  414. package/dist/components/TagEditor/index.cjs.map +1 -0
  415. package/dist/components/TagEditor/index.d.cts +46 -0
  416. package/dist/components/TagEditor/index.d.ts +46 -0
  417. package/dist/components/TagEditor/index.js +7 -0
  418. package/dist/components/TagEditor/index.js.map +1 -0
  419. package/dist/components/UserPicker/index.cjs +24 -0
  420. package/dist/components/UserPicker/index.cjs.map +1 -0
  421. package/dist/components/UserPicker/index.d.cts +60 -0
  422. package/dist/components/UserPicker/index.d.ts +60 -0
  423. package/dist/components/UserPicker/index.js +11 -0
  424. package/dist/components/UserPicker/index.js.map +1 -0
  425. package/dist/components/ViewSet/index.cjs +6 -5
  426. package/dist/components/ViewSet/index.d.cts +2 -1
  427. package/dist/components/ViewSet/index.d.ts +2 -1
  428. package/dist/components/ViewSet/index.js +5 -4
  429. package/dist/components/ViewSwitcher/index.d.cts +39 -4
  430. package/dist/components/ViewSwitcher/index.d.ts +39 -4
  431. package/dist/datavis.cjs +3 -2
  432. package/dist/datavis.cjs.map +1 -1
  433. package/dist/datavis.js +2 -1
  434. package/dist/datavis.js.map +1 -1
  435. package/dist/esheet.cjs +9 -7
  436. package/dist/esheet.cjs.map +1 -1
  437. package/dist/esheet.js +6 -4
  438. package/dist/esheet.js.map +1 -1
  439. package/dist/hooks/index.cjs +53 -27
  440. package/dist/hooks/index.d.cts +91 -6
  441. package/dist/hooks/index.d.ts +91 -6
  442. package/dist/hooks/index.js +5 -3
  443. package/dist/index.cjs +1391 -847
  444. package/dist/index.cjs.map +1 -1
  445. package/dist/index.d.cts +1253 -168
  446. package/dist/index.d.ts +1253 -168
  447. package/dist/index.js +539 -171
  448. package/dist/index.js.map +1 -1
  449. package/dist/org-chart.cjs +1302 -0
  450. package/dist/org-chart.cjs.map +1 -0
  451. package/dist/org-chart.d.cts +164 -0
  452. package/dist/org-chart.d.ts +164 -0
  453. package/dist/org-chart.js +1277 -0
  454. package/dist/org-chart.js.map +1 -0
  455. package/dist/styles.css +1 -1
  456. package/dist/tailwind-preset.cjs +4 -4
  457. package/dist/tailwind-preset.js +1 -1
  458. package/dist/{index-DoYYWsNc.d.cts → types-CDeBNZiE.d.cts} +1 -36
  459. package/dist/{index-DoYYWsNc.d.ts → types-CDeBNZiE.d.ts} +1 -36
  460. package/package.json +22 -2
  461. package/dist/CsvBlock-FX5YNGNE.cjs +0 -17
  462. package/dist/CsvBlock-VLMG7GUO.js +0 -8
  463. package/dist/HtmlPreviewBlock-5JE7L3GR.js +0 -8
  464. package/dist/HtmlPreviewBlock-UO37JQ3K.cjs +0 -17
  465. package/dist/MermaidBlock-3XHFBAMV.js +0 -8
  466. package/dist/MermaidBlock-RZ75RPZA.cjs +0 -17
  467. package/dist/SurveyBlock-MUVJ3JUI.js +0 -8
  468. package/dist/SurveyBlock-VH47YXZC.cjs +0 -17
  469. package/dist/chunk-35Y4ILCU.cjs.map +0 -1
  470. package/dist/chunk-6N6LIAUJ.cjs +0 -80
  471. package/dist/chunk-6N6LIAUJ.cjs.map +0 -1
  472. package/dist/chunk-7ZV67VZE.js.map +0 -1
  473. package/dist/chunk-7ZVTLTJF.js +0 -109
  474. package/dist/chunk-7ZVTLTJF.js.map +0 -1
  475. package/dist/chunk-DVOQ3JNO.js.map +0 -1
  476. package/dist/chunk-ENMXHZNE.js.map +0 -1
  477. package/dist/chunk-GBUVIGD5.js.map +0 -1
  478. package/dist/chunk-HZ4MBUC3.js.map +0 -1
  479. package/dist/chunk-JBIGSP2T.js.map +0 -1
  480. package/dist/chunk-JEIW7BSV.cjs.map +0 -1
  481. package/dist/chunk-KRU6IGV7.js.map +0 -1
  482. package/dist/chunk-LHBWRMNC.cjs.map +0 -1
  483. package/dist/chunk-MLAWXPRY.js.map +0 -1
  484. package/dist/chunk-P7UMS4E6.cjs.map +0 -1
  485. package/dist/chunk-QURJVPRH.cjs.map +0 -1
  486. package/dist/chunk-SVSHA7XV.js.map +0 -1
  487. package/dist/chunk-T4L7Q5FA.cjs.map +0 -1
  488. package/dist/chunk-UBSH27C2.js +0 -78
  489. package/dist/chunk-UBSH27C2.js.map +0 -1
  490. package/dist/chunk-VROIMIHB.cjs.map +0 -1
  491. package/dist/chunk-X4LBUPJO.cjs.map +0 -1
  492. package/dist/chunk-YVPC65ZJ.cjs.map +0 -1
  493. package/dist/chunk-ZTMYKAVU.cjs.map +0 -1
@@ -0,0 +1,248 @@
1
+ import { usePendingOverrides } from './chunk-FTEZNCRI.js';
2
+ import { RecordState } from './chunk-Y424YL55.js';
3
+ import { Avatar } from './chunk-TI3TQQ7F.js';
4
+ import { Badge } from './chunk-BMSG4NBH.js';
5
+ import { Button } from './chunk-WFBUBT54.js';
6
+ import { cn } from './chunk-TQONQSJO.js';
7
+ import * as React from 'react';
8
+ import { LoaderCircle, X, Plus } from 'lucide-react';
9
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
10
+
11
+ var defaultAssociationListLabels = {
12
+ loading: "Loading",
13
+ empty: "None yet",
14
+ error: "Could not load these records",
15
+ retry: "Try again",
16
+ add: "Add",
17
+ remove: (name) => `Remove ${name}`,
18
+ showAll: (count) => `Show all (${count})`,
19
+ showLess: "Show less"
20
+ };
21
+ var AssociationList = React.forwardRef(
22
+ ({
23
+ title,
24
+ items,
25
+ loading = false,
26
+ error = null,
27
+ onRetry,
28
+ maxVisible = 5,
29
+ onOpen,
30
+ getHref,
31
+ onAdd,
32
+ onRemove,
33
+ renderItemMeta,
34
+ emptyState,
35
+ labels,
36
+ classNames,
37
+ headingLevel: Heading = "h3",
38
+ className,
39
+ ...rest
40
+ }, ref) => {
41
+ const text = { ...defaultAssociationListLabels, ...labels };
42
+ const headingId = React.useId();
43
+ const listId = React.useId();
44
+ const [expanded, setExpanded] = React.useState(false);
45
+ const [pending, runRemove] = usePendingOverrides();
46
+ const shown = expanded ? items : items.slice(0, maxVisible);
47
+ const linkClasses = "text-foreground block truncate rounded-sm text-sm font-medium hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring";
48
+ let body;
49
+ if (error) {
50
+ body = /* @__PURE__ */ jsx(
51
+ RecordState,
52
+ {
53
+ kind: "error",
54
+ slot: "association-list-state",
55
+ message: text.error,
56
+ retryLabel: text.retry,
57
+ onRetry,
58
+ className: cn("py-6", classNames?.state)
59
+ }
60
+ );
61
+ } else if (loading) {
62
+ body = /* @__PURE__ */ jsx(
63
+ RecordState,
64
+ {
65
+ kind: "loading",
66
+ slot: "association-list-state",
67
+ message: text.loading,
68
+ rows: 2,
69
+ className: classNames?.state
70
+ }
71
+ );
72
+ } else if (items.length === 0) {
73
+ body = emptyState ?? /* @__PURE__ */ jsx(
74
+ RecordState,
75
+ {
76
+ kind: "empty",
77
+ slot: "association-list-state",
78
+ message: text.empty,
79
+ className: cn("py-6", classNames?.state)
80
+ }
81
+ );
82
+ } else {
83
+ body = /* @__PURE__ */ jsxs(Fragment, { children: [
84
+ /* @__PURE__ */ jsx(
85
+ "ul",
86
+ {
87
+ id: listId,
88
+ "data-slot": "association-list-list",
89
+ className: cn("divide-border divide-y", classNames?.list),
90
+ children: shown.map((item) => {
91
+ const isPending = pending.has(item.id);
92
+ const href = getHref?.(item.id, item);
93
+ let name = /* @__PURE__ */ jsx("span", { className: "text-foreground block truncate text-sm font-medium", children: item.name });
94
+ if (href) {
95
+ name = /* @__PURE__ */ jsx(
96
+ "a",
97
+ {
98
+ href,
99
+ className: linkClasses,
100
+ onClick: (event) => {
101
+ if (!onOpen || event.metaKey || event.ctrlKey || event.shiftKey || event.button !== 0)
102
+ return;
103
+ event.preventDefault();
104
+ onOpen(item.id, item);
105
+ },
106
+ children: item.name
107
+ }
108
+ );
109
+ } else if (onOpen) {
110
+ name = /* @__PURE__ */ jsx(
111
+ "button",
112
+ {
113
+ type: "button",
114
+ className: cn(linkClasses, "max-w-full text-start"),
115
+ onClick: () => onOpen(item.id, item),
116
+ children: item.name
117
+ }
118
+ );
119
+ }
120
+ return /* @__PURE__ */ jsxs(
121
+ "li",
122
+ {
123
+ "data-slot": "association-list-item",
124
+ "aria-busy": isPending || void 0,
125
+ className: cn(
126
+ "flex items-center gap-3 px-4 py-2.5",
127
+ isPending && "opacity-60",
128
+ classNames?.item
129
+ ),
130
+ children: [
131
+ /* @__PURE__ */ jsx(
132
+ Avatar,
133
+ {
134
+ size: "sm",
135
+ name: item.name,
136
+ src: item.avatarUrl,
137
+ alt: "",
138
+ "aria-hidden": true,
139
+ className: "shrink-0"
140
+ }
141
+ ),
142
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
143
+ name,
144
+ item.subtitle && /* @__PURE__ */ jsx("span", { className: "text-muted-foreground block truncate text-xs", children: item.subtitle })
145
+ ] }),
146
+ renderItemMeta?.(item),
147
+ onRemove && /* @__PURE__ */ jsx(
148
+ "button",
149
+ {
150
+ type: "button",
151
+ "aria-label": text.remove(item.name),
152
+ title: text.remove(item.name),
153
+ disabled: isPending,
154
+ onClick: () => void runRemove(
155
+ item.id,
156
+ true,
157
+ () => onRemove(item.id, item)
158
+ ),
159
+ className: cn(
160
+ "text-muted-foreground hover:bg-muted hover:text-foreground shrink-0 rounded-md p-1.5",
161
+ "focus-visible:ring-ring focus-visible:ring-2 focus-visible:outline-none"
162
+ ),
163
+ children: isPending ? /* @__PURE__ */ jsx(
164
+ LoaderCircle,
165
+ {
166
+ className: "size-4 animate-spin motion-reduce:animate-none",
167
+ "aria-hidden": true
168
+ }
169
+ ) : /* @__PURE__ */ jsx(X, { className: "size-4", "aria-hidden": true })
170
+ }
171
+ )
172
+ ]
173
+ },
174
+ item.id
175
+ );
176
+ })
177
+ }
178
+ ),
179
+ items.length > maxVisible && /* @__PURE__ */ jsx("div", { className: "border-border border-t px-2 py-1.5", children: /* @__PURE__ */ jsx(
180
+ Button,
181
+ {
182
+ variant: "ghost",
183
+ size: "sm",
184
+ fullWidth: true,
185
+ "aria-expanded": expanded,
186
+ "aria-controls": listId,
187
+ "data-slot": "association-list-toggle",
188
+ className: classNames?.toggle,
189
+ onClick: () => setExpanded((e) => !e),
190
+ children: expanded ? text.showLess : text.showAll(items.length)
191
+ }
192
+ ) })
193
+ ] });
194
+ }
195
+ return /* @__PURE__ */ jsxs(
196
+ "section",
197
+ {
198
+ ref,
199
+ "aria-labelledby": headingId,
200
+ "data-slot": "association-list",
201
+ className: cn(
202
+ "border-border bg-card overflow-hidden rounded-lg border",
203
+ className
204
+ ),
205
+ ...rest,
206
+ children: [
207
+ /* @__PURE__ */ jsxs(
208
+ "div",
209
+ {
210
+ "data-slot": "association-list-header",
211
+ className: cn(
212
+ "border-border flex items-center gap-2 border-b px-4 py-2.5",
213
+ classNames?.header
214
+ ),
215
+ children: [
216
+ /* @__PURE__ */ jsx(
217
+ Heading,
218
+ {
219
+ id: headingId,
220
+ className: "text-foreground min-w-0 flex-1 truncate text-sm font-semibold",
221
+ children: title
222
+ }
223
+ ),
224
+ !loading && !error && /* @__PURE__ */ jsx(Badge, { size: "sm", variant: "secondary", children: items.length }),
225
+ onAdd && /* @__PURE__ */ jsx(
226
+ Button,
227
+ {
228
+ variant: "ghost",
229
+ size: "sm",
230
+ onClick: onAdd,
231
+ leftIcon: /* @__PURE__ */ jsx(Plus, { className: "size-4", "aria-hidden": true }),
232
+ children: text.add
233
+ }
234
+ )
235
+ ]
236
+ }
237
+ ),
238
+ body
239
+ ]
240
+ }
241
+ );
242
+ }
243
+ );
244
+ AssociationList.displayName = "AssociationList";
245
+
246
+ export { AssociationList, defaultAssociationListLabels };
247
+ //# sourceMappingURL=chunk-LRRSD7LR.js.map
248
+ //# sourceMappingURL=chunk-LRRSD7LR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/AssociationList/AssociationList.tsx"],"names":[],"mappings":"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","file":"chunk-LRRSD7LR.js","sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { LoaderCircle, Plus, X } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { Avatar } from '../Avatar';\nimport { Badge } from '../Badge';\nimport { Button } from '../Button';\nimport { RecordState } from '../ActivityFeed/RecordState';\nimport { usePendingOverrides } from '../ActivityFeed/usePendingOverrides';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface AssociationListItem {\n id: string;\n name: string;\n subtitle?: string;\n avatarUrl?: string;\n}\n\nexport interface AssociationListLabels {\n loading: string;\n empty: string;\n error: string;\n retry: string;\n add: string;\n /** Accessible name of an item's remove button. */\n remove: (name: string) => string;\n showAll: (count: number) => string;\n showLess: string;\n}\n\nexport const defaultAssociationListLabels: AssociationListLabels = {\n loading: 'Loading',\n empty: 'None yet',\n error: 'Could not load these records',\n retry: 'Try again',\n add: 'Add',\n remove: (name) => `Remove ${name}`,\n showAll: (count) => `Show all (${count})`,\n showLess: 'Show less',\n};\n\nexport type AssociationListSlot =\n | 'header'\n | 'list'\n | 'item'\n | 'toggle'\n | 'state';\n\nexport interface AssociationListProps extends Omit<\n React.HTMLAttributes<HTMLElement>,\n 'children' | 'title'\n> {\n /** Card heading, e.g. \"Contacts\". */\n title: string;\n items: AssociationListItem[];\n loading?: boolean;\n error?: Error | null;\n onRetry?: () => void;\n /** Items shown before \"Show all\". Defaults to 5. */\n maxVisible?: number;\n onOpen?: (id: string, item: AssociationListItem) => void;\n getHref?: (id: string, item: AssociationListItem) => string;\n /** Renders the header's add button. */\n onAdd?: () => void;\n /** Confirmation is the caller's; the row shows pending until the promise settles. */\n onRemove?: (id: string, item: AssociationListItem) => void | Promise<void>;\n /** Trailing content per row, e.g. a role badge. */\n renderItemMeta?: (item: AssociationListItem) => React.ReactNode;\n emptyState?: React.ReactNode;\n labels?: Partial<AssociationListLabels>;\n classNames?: Partial<Record<AssociationListSlot, string>>;\n headingLevel?: 'h2' | 'h3' | 'h4';\n}\n\n// =============================================================================\n// Component\n// =============================================================================\n\n/**\n * A card of records related to the current one. Declared\n * `parameters.catalog.collection` — its load states are part of the API.\n */\nexport const AssociationList = React.forwardRef<\n HTMLElement,\n AssociationListProps\n>(\n (\n {\n title,\n items,\n loading = false,\n error = null,\n onRetry,\n maxVisible = 5,\n onOpen,\n getHref,\n onAdd,\n onRemove,\n renderItemMeta,\n emptyState,\n labels,\n classNames,\n headingLevel: Heading = 'h3',\n className,\n ...rest\n },\n ref\n ) => {\n const text = { ...defaultAssociationListLabels, ...labels };\n const headingId = React.useId();\n const listId = React.useId();\n const [expanded, setExpanded] = React.useState(false);\n const [pending, runRemove] = usePendingOverrides<true>();\n\n const shown = expanded ? items : items.slice(0, maxVisible);\n const linkClasses =\n 'text-foreground block truncate rounded-sm text-sm font-medium hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring';\n\n let body: React.ReactNode;\n if (error) {\n body = (\n <RecordState\n kind=\"error\"\n slot=\"association-list-state\"\n message={text.error}\n retryLabel={text.retry}\n onRetry={onRetry}\n className={cn('py-6', classNames?.state)}\n />\n );\n } else if (loading) {\n body = (\n <RecordState\n kind=\"loading\"\n slot=\"association-list-state\"\n message={text.loading}\n rows={2}\n className={classNames?.state}\n />\n );\n } else if (items.length === 0) {\n body = emptyState ?? (\n <RecordState\n kind=\"empty\"\n slot=\"association-list-state\"\n message={text.empty}\n className={cn('py-6', classNames?.state)}\n />\n );\n } else {\n body = (\n <>\n <ul\n id={listId}\n data-slot=\"association-list-list\"\n className={cn('divide-border divide-y', classNames?.list)}\n >\n {shown.map((item) => {\n const isPending = pending.has(item.id);\n const href = getHref?.(item.id, item);\n let name: React.ReactNode = (\n <span className=\"text-foreground block truncate text-sm font-medium\">\n {item.name}\n </span>\n );\n if (href) {\n name = (\n <a\n href={href}\n className={linkClasses}\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(item.id, item);\n }}\n >\n {item.name}\n </a>\n );\n } else if (onOpen) {\n name = (\n <button\n type=\"button\"\n className={cn(linkClasses, 'max-w-full text-start')}\n onClick={() => onOpen(item.id, item)}\n >\n {item.name}\n </button>\n );\n }\n return (\n <li\n key={item.id}\n data-slot=\"association-list-item\"\n aria-busy={isPending || undefined}\n className={cn(\n 'flex items-center gap-3 px-4 py-2.5',\n isPending && 'opacity-60',\n classNames?.item\n )}\n >\n <Avatar\n size=\"sm\"\n name={item.name}\n src={item.avatarUrl}\n alt=\"\"\n aria-hidden\n className=\"shrink-0\"\n />\n <div className=\"min-w-0 flex-1\">\n {name}\n {item.subtitle && (\n <span className=\"text-muted-foreground block truncate text-xs\">\n {item.subtitle}\n </span>\n )}\n </div>\n {renderItemMeta?.(item)}\n {onRemove && (\n <button\n type=\"button\"\n aria-label={text.remove(item.name)}\n title={text.remove(item.name)}\n disabled={isPending}\n onClick={() =>\n void runRemove(item.id, true, () =>\n onRemove(item.id, item)\n )\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 )}\n >\n {isPending ? (\n <LoaderCircle\n className=\"size-4 animate-spin motion-reduce:animate-none\"\n aria-hidden\n />\n ) : (\n <X className=\"size-4\" aria-hidden />\n )}\n </button>\n )}\n </li>\n );\n })}\n </ul>\n {items.length > maxVisible && (\n <div className=\"border-border border-t px-2 py-1.5\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n fullWidth\n aria-expanded={expanded}\n aria-controls={listId}\n data-slot=\"association-list-toggle\"\n className={classNames?.toggle}\n onClick={() => setExpanded((e) => !e)}\n >\n {expanded ? text.showLess : text.showAll(items.length)}\n </Button>\n </div>\n )}\n </>\n );\n }\n\n return (\n <section\n ref={ref}\n aria-labelledby={headingId}\n data-slot=\"association-list\"\n className={cn(\n 'border-border bg-card overflow-hidden rounded-lg border',\n className\n )}\n {...rest}\n >\n <div\n data-slot=\"association-list-header\"\n className={cn(\n 'border-border flex items-center gap-2 border-b px-4 py-2.5',\n classNames?.header\n )}\n >\n <Heading\n id={headingId}\n className=\"text-foreground min-w-0 flex-1 truncate text-sm font-semibold\"\n >\n {title}\n </Heading>\n {!loading && !error && (\n <Badge size=\"sm\" variant=\"secondary\">\n {items.length}\n </Badge>\n )}\n {onAdd && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={onAdd}\n leftIcon={<Plus className=\"size-4\" aria-hidden />}\n >\n {text.add}\n </Button>\n )}\n </div>\n {body}\n </section>\n );\n }\n);\n\nAssociationList.displayName = 'AssociationList';\n"]}
@@ -0,0 +1,331 @@
1
+ 'use strict';
2
+
3
+ var chunkFSGEDDF2_cjs = require('./chunk-FSGEDDF2.cjs');
4
+ var chunkAOHJILLU_cjs = require('./chunk-AOHJILLU.cjs');
5
+ var chunkS5RVSXDV_cjs = require('./chunk-S5RVSXDV.cjs');
6
+ var React = require('react');
7
+ var reactDom = require('react-dom');
8
+ var classVarianceAuthority = require('class-variance-authority');
9
+ var lucideReact = require('lucide-react');
10
+ var jsxRuntime = require('react/jsx-runtime');
11
+
12
+ function _interopNamespace(e) {
13
+ if (e && e.__esModule) return e;
14
+ var n = Object.create(null);
15
+ if (e) {
16
+ Object.keys(e).forEach(function (k) {
17
+ if (k !== 'default') {
18
+ var d = Object.getOwnPropertyDescriptor(e, k);
19
+ Object.defineProperty(n, k, d.get ? d : {
20
+ enumerable: true,
21
+ get: function () { return e[k]; }
22
+ });
23
+ }
24
+ });
25
+ }
26
+ n.default = e;
27
+ return Object.freeze(n);
28
+ }
29
+
30
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
31
+
32
+ var defaultTagEditorLabels = {
33
+ input: "Add tag",
34
+ placeholder: "Add a tag\u2026",
35
+ remove: (tag) => `Remove ${tag}`,
36
+ duplicate: (tag) => `"${tag}" is already added`,
37
+ maxReached: (max) => `You can add up to ${max} tags`,
38
+ saving: "Saving\u2026",
39
+ saveFailed: "Could not save tags. Try again.",
40
+ suggestions: "Suggestions"
41
+ };
42
+ var containerVariants = classVarianceAuthority.cva(
43
+ [
44
+ "flex w-full flex-wrap items-center gap-1.5 rounded-lg border bg-background",
45
+ "focus-within:ring-ring focus-within:ring-2"
46
+ ],
47
+ {
48
+ variants: {
49
+ size: { sm: "min-h-8 px-2 py-1 text-sm", md: "min-h-10 px-3 py-1.5" },
50
+ hasError: { true: "border-destructive", false: "border-input" }
51
+ },
52
+ defaultVariants: { size: "md", hasError: false }
53
+ }
54
+ );
55
+ var TagEditor = React__namespace.forwardRef(
56
+ function TagEditor2({
57
+ value,
58
+ onChange,
59
+ suggestions,
60
+ maxTags,
61
+ validate,
62
+ label,
63
+ readOnly,
64
+ disabled,
65
+ size,
66
+ labels: labelOverrides,
67
+ className,
68
+ ...props
69
+ }, ref) {
70
+ const labels = { ...defaultTagEditorLabels, ...labelOverrides };
71
+ const [draft, setDraft] = React__namespace.useState("");
72
+ const [error, setError] = React__namespace.useState(null);
73
+ const [pending, setPending] = React__namespace.useState(false);
74
+ const [open, setOpen] = React__namespace.useState(false);
75
+ const [activeIndex, setActiveIndex] = React__namespace.useState(-1);
76
+ const inputRef = React__namespace.useRef(null);
77
+ const containerRef = React__namespace.useRef(null);
78
+ const id = React__namespace.useId();
79
+ const inputId = `${id}-input`;
80
+ const errorId = `${id}-error`;
81
+ const listId = `${id}-list`;
82
+ const { anchorRef, floatingRef, style } = chunkAOHJILLU_cjs.useAnchoredPosition({ open, matchWidth: true, maxHeight: 240 });
83
+ const outsideRefs = React__namespace.useMemo(
84
+ () => [containerRef, floatingRef],
85
+ [floatingRef]
86
+ );
87
+ chunkFSGEDDF2_cjs.useClickOutside(outsideRefs, () => setOpen(false), open);
88
+ const has = (tag) => value.some((t) => t.toLowerCase() === tag.toLowerCase());
89
+ const query = draft.trim().toLowerCase();
90
+ const matches = (suggestions ?? []).filter(
91
+ (s) => !has(s) && (!query || s.toLowerCase().includes(query))
92
+ );
93
+ const isOpen = open && matches.length > 0 && !pending;
94
+ const interactive = !readOnly && !disabled && !pending;
95
+ const atMax = maxTags !== void 0 && value.length >= maxTags;
96
+ const inFlight = React__namespace.useRef(false);
97
+ const commit = async (next, refocus = true) => {
98
+ inFlight.current = true;
99
+ setPending(true);
100
+ try {
101
+ await onChange(next);
102
+ } catch {
103
+ setError(labels.saveFailed);
104
+ } finally {
105
+ inFlight.current = false;
106
+ setPending(false);
107
+ if (refocus) inputRef.current?.focus();
108
+ }
109
+ };
110
+ const add = (raw, refocus = true) => {
111
+ if (inFlight.current) return;
112
+ const next = [...value];
113
+ for (const piece of raw) {
114
+ const tag = piece.trim();
115
+ if (!tag) continue;
116
+ if (next.some((t) => t.toLowerCase() === tag.toLowerCase())) {
117
+ setError(labels.duplicate(tag));
118
+ return;
119
+ }
120
+ if (maxTags !== void 0 && next.length >= maxTags) {
121
+ setError(labels.maxReached(maxTags));
122
+ return;
123
+ }
124
+ const invalid = validate?.(tag);
125
+ if (invalid) {
126
+ setError(invalid);
127
+ return;
128
+ }
129
+ next.push(tag);
130
+ }
131
+ setError(null);
132
+ setDraft("");
133
+ setActiveIndex(-1);
134
+ if (next.length !== value.length) void commit(next, refocus);
135
+ };
136
+ const remove = (index) => {
137
+ if (inFlight.current) return;
138
+ setError(null);
139
+ void commit(value.filter((_, i) => i !== index));
140
+ };
141
+ const handleKeyDown = (e) => {
142
+ if (e.key === "ArrowDown" || e.key === "ArrowUp") {
143
+ e.preventDefault();
144
+ setOpen(true);
145
+ if (!matches.length) return;
146
+ const step = e.key === "ArrowDown" ? 1 : -1;
147
+ setActiveIndex((i) => (i + step + matches.length) % matches.length);
148
+ } else if (e.key === "Enter" || e.key === ",") {
149
+ if (e.key === "Enter" && !draft.trim() && activeIndex < 0) return;
150
+ e.preventDefault();
151
+ add([isOpen && activeIndex >= 0 ? matches[activeIndex] : draft]);
152
+ } else if (e.key === "Backspace" && !draft && value.length) {
153
+ remove(value.length - 1);
154
+ } else if (e.key === "Escape" && isOpen) {
155
+ e.preventDefault();
156
+ setOpen(false);
157
+ setActiveIndex(-1);
158
+ }
159
+ };
160
+ const handleChange = (e) => {
161
+ const parts = e.target.value.split(",");
162
+ setOpen(true);
163
+ setActiveIndex(-1);
164
+ if (parts.length > 1) {
165
+ add(parts.slice(0, -1));
166
+ setDraft(parts[parts.length - 1]);
167
+ } else {
168
+ setDraft(e.target.value);
169
+ if (error) setError(null);
170
+ }
171
+ };
172
+ return /* @__PURE__ */ jsxRuntime.jsxs(
173
+ "div",
174
+ {
175
+ ref,
176
+ "data-slot": "tag-editor",
177
+ className: chunkS5RVSXDV_cjs.cn("w-full", className),
178
+ ...props,
179
+ children: [
180
+ label && /* @__PURE__ */ jsxRuntime.jsx(
181
+ "label",
182
+ {
183
+ htmlFor: inputId,
184
+ className: "text-foreground mb-1.5 block text-sm font-medium",
185
+ children: label
186
+ }
187
+ ),
188
+ /* @__PURE__ */ jsxRuntime.jsxs(
189
+ "div",
190
+ {
191
+ ref: (node) => {
192
+ containerRef.current = node;
193
+ anchorRef.current = node;
194
+ },
195
+ "data-slot": "tag-editor-field",
196
+ "aria-busy": pending || void 0,
197
+ className: chunkS5RVSXDV_cjs.cn(
198
+ containerVariants({ size, hasError: !!error }),
199
+ disabled && "cursor-not-allowed opacity-50",
200
+ readOnly && "focus-within:ring-0"
201
+ ),
202
+ children: [
203
+ value.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
204
+ "ul",
205
+ {
206
+ "aria-label": label ?? labels.input,
207
+ className: "flex max-w-full flex-wrap items-center gap-1.5",
208
+ children: value.map((tag, index) => /* @__PURE__ */ jsxRuntime.jsxs(
209
+ "li",
210
+ {
211
+ "data-slot": "tag-editor-tag",
212
+ className: "bg-primary-100 text-primary-900 dark:bg-primary-900 dark:text-primary-100 inline-flex max-w-full items-center gap-1 rounded-full py-0.5 ps-2.5 pe-1 text-sm",
213
+ children: [
214
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: tag }),
215
+ !readOnly && /* @__PURE__ */ jsxRuntime.jsx(
216
+ "button",
217
+ {
218
+ type: "button",
219
+ "aria-label": labels.remove(tag),
220
+ disabled: !interactive,
221
+ onClick: (e) => {
222
+ e.stopPropagation();
223
+ remove(index);
224
+ },
225
+ className: "hover:bg-primary-200 dark:hover:bg-primary-800 focus-visible:ring-ring rounded-full p-0.5 focus-visible:ring-2 focus-visible:outline-none disabled:opacity-50",
226
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { "aria-hidden": "true", className: "h-3 w-3" })
227
+ }
228
+ )
229
+ ]
230
+ },
231
+ tag
232
+ ))
233
+ }
234
+ ),
235
+ !readOnly && /* @__PURE__ */ jsxRuntime.jsx(
236
+ "input",
237
+ {
238
+ ref: inputRef,
239
+ id: inputId,
240
+ type: "text",
241
+ role: "combobox",
242
+ "aria-label": label ? void 0 : labels.input,
243
+ "aria-expanded": isOpen,
244
+ "aria-controls": suggestions ? listId : void 0,
245
+ "aria-autocomplete": "list",
246
+ "aria-activedescendant": isOpen && activeIndex >= 0 ? `${listId}-${activeIndex}` : void 0,
247
+ "aria-invalid": error ? true : void 0,
248
+ "aria-describedby": error ? errorId : void 0,
249
+ autoComplete: "off",
250
+ value: draft,
251
+ placeholder: atMax ? void 0 : labels.placeholder,
252
+ disabled,
253
+ readOnly: pending || atMax,
254
+ onChange: handleChange,
255
+ onKeyDown: handleKeyDown,
256
+ onFocus: () => setOpen(true),
257
+ onBlur: () => {
258
+ setOpen(false);
259
+ if (draft.trim()) add([draft], false);
260
+ },
261
+ className: "placeholder:text-muted-foreground text-foreground min-w-24 flex-1 bg-transparent py-0.5 outline-none disabled:cursor-not-allowed"
262
+ }
263
+ ),
264
+ pending && /* @__PURE__ */ jsxRuntime.jsxs("span", { role: "status", className: "inline-flex", children: [
265
+ /* @__PURE__ */ jsxRuntime.jsx(
266
+ lucideReact.Loader2,
267
+ {
268
+ "aria-hidden": "true",
269
+ className: "text-muted-foreground h-4 w-4 animate-spin motion-reduce:animate-none"
270
+ }
271
+ ),
272
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: labels.saving })
273
+ ] })
274
+ ]
275
+ }
276
+ ),
277
+ error && /* @__PURE__ */ jsxRuntime.jsx(
278
+ "p",
279
+ {
280
+ id: errorId,
281
+ role: "alert",
282
+ "data-slot": "tag-editor-error",
283
+ className: "text-destructive-700 dark:text-destructive-400 mt-1 text-sm",
284
+ children: error
285
+ }
286
+ ),
287
+ isOpen && reactDom.createPortal(
288
+ /* @__PURE__ */ jsxRuntime.jsx(
289
+ "div",
290
+ {
291
+ ref: floatingRef,
292
+ style,
293
+ id: listId,
294
+ role: "listbox",
295
+ "aria-label": labels.suggestions,
296
+ "data-slot": "tag-editor-suggestions",
297
+ className: "border-border bg-card text-card-foreground overflow-auto rounded-md border py-1 shadow-lg",
298
+ children: matches.map((s, i) => /* @__PURE__ */ jsxRuntime.jsx(
299
+ "button",
300
+ {
301
+ type: "button",
302
+ tabIndex: -1,
303
+ id: `${listId}-${i}`,
304
+ role: "option",
305
+ "aria-selected": i === activeIndex,
306
+ onMouseEnter: () => setActiveIndex(i),
307
+ onMouseDown: (e) => e.preventDefault(),
308
+ onClick: () => add([s]),
309
+ className: chunkS5RVSXDV_cjs.cn(
310
+ "block w-full px-3 py-2 text-start text-sm",
311
+ i === activeIndex ? "bg-muted" : "hover:bg-muted"
312
+ ),
313
+ children: s
314
+ },
315
+ s
316
+ ))
317
+ }
318
+ ),
319
+ document.body
320
+ )
321
+ ]
322
+ }
323
+ );
324
+ }
325
+ );
326
+ TagEditor.displayName = "TagEditor";
327
+
328
+ exports.TagEditor = TagEditor;
329
+ exports.defaultTagEditorLabels = defaultTagEditorLabels;
330
+ //# sourceMappingURL=chunk-LSMS6DY7.cjs.map
331
+ //# sourceMappingURL=chunk-LSMS6DY7.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/TagEditor/TagEditor.tsx"],"names":["cva","React","TagEditor","useAnchoredPosition","useClickOutside","jsxs","cn","jsx","X","Loader2","createPortal"],"mappings":"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","file":"chunk-LSMS6DY7.cjs","sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { Loader2, X } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { useAnchoredPosition } from '../../hooks/useAnchoredPosition';\nimport { useClickOutside } from '../../hooks/useClickOutside';\n\nexport interface TagEditorLabels {\n /** Accessible name of the text input when no visible `label` is given. */\n input: string;\n placeholder: string;\n remove: (tag: string) => string;\n duplicate: (tag: string) => string;\n maxReached: (max: number) => string;\n saving: string;\n saveFailed: string;\n /** Accessible name of the suggestions list. */\n suggestions: string;\n}\n\nexport const defaultTagEditorLabels: TagEditorLabels = {\n input: 'Add tag',\n placeholder: 'Add a tag…',\n remove: (tag) => `Remove ${tag}`,\n duplicate: (tag) => `\"${tag}\" is already added`,\n maxReached: (max) => `You can add up to ${max} tags`,\n saving: 'Saving…',\n saveFailed: 'Could not save tags. Try again.',\n suggestions: 'Suggestions',\n};\n\nconst containerVariants = cva(\n [\n 'flex w-full flex-wrap items-center gap-1.5 rounded-lg border bg-background',\n 'focus-within:ring-ring focus-within:ring-2',\n ],\n {\n variants: {\n size: { sm: 'min-h-8 px-2 py-1 text-sm', md: 'min-h-10 px-3 py-1.5' },\n hasError: { true: 'border-destructive', false: 'border-input' },\n },\n defaultVariants: { size: 'md', hasError: false },\n }\n);\n\nexport interface TagEditorProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'>,\n Omit<VariantProps<typeof containerVariants>, 'hasError'> {\n /** Current tags (controlled). */\n value: string[];\n /** Receives the next tag list. May return a promise; a rejection shows an error. */\n onChange: (tags: string[]) => void | Promise<void>;\n /** Optional values offered while typing. */\n suggestions?: string[];\n /** Maximum number of tags. */\n maxTags?: number;\n /** Return an error message to reject a tag. */\n validate?: (tag: string) => string | undefined;\n /** Visible label for the field. */\n label?: string;\n readOnly?: boolean;\n disabled?: boolean;\n /** Translatable strings. */\n labels?: Partial<TagEditorLabels>;\n}\n\n/**\n * Edit a list of free-form tags: chips with remove buttons plus an input that\n * adds on Enter or comma, with optional suggestions.\n */\nexport const TagEditor = React.forwardRef<HTMLDivElement, TagEditorProps>(\n function TagEditor(\n {\n value,\n onChange,\n suggestions,\n maxTags,\n validate,\n label,\n readOnly,\n disabled,\n size,\n labels: labelOverrides,\n className,\n ...props\n },\n ref\n ) {\n const labels = { ...defaultTagEditorLabels, ...labelOverrides };\n const [draft, setDraft] = React.useState('');\n const [error, setError] = React.useState<string | null>(null);\n const [pending, setPending] = React.useState(false);\n const [open, setOpen] = React.useState(false);\n const [activeIndex, setActiveIndex] = React.useState(-1);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const containerRef = React.useRef<HTMLDivElement>(null);\n const id = React.useId();\n const inputId = `${id}-input`;\n const errorId = `${id}-error`;\n const listId = `${id}-list`;\n\n const { anchorRef, floatingRef, style } = useAnchoredPosition<\n HTMLDivElement,\n HTMLDivElement\n >({ open, matchWidth: true, maxHeight: 240 });\n const outsideRefs = React.useMemo(\n () => [containerRef, floatingRef],\n [floatingRef]\n );\n useClickOutside(outsideRefs, () => setOpen(false), open);\n\n const has = (tag: string) =>\n value.some((t) => t.toLowerCase() === tag.toLowerCase());\n const query = draft.trim().toLowerCase();\n const matches = (suggestions ?? []).filter(\n (s) => !has(s) && (!query || s.toLowerCase().includes(query))\n );\n const isOpen = open && matches.length > 0 && !pending;\n const interactive = !readOnly && !disabled && !pending;\n const atMax = maxTags !== undefined && value.length >= maxTags;\n // State lags a render behind; the ref blocks a second save from the same tick.\n const inFlight = React.useRef(false);\n\n const commit = async (next: string[], refocus = true) => {\n inFlight.current = true;\n setPending(true);\n try {\n await onChange(next);\n } catch {\n setError(labels.saveFailed);\n } finally {\n inFlight.current = false;\n setPending(false);\n if (refocus) inputRef.current?.focus();\n }\n };\n\n const add = (raw: string[], refocus = true) => {\n if (inFlight.current) return;\n const next = [...value];\n for (const piece of raw) {\n const tag = piece.trim();\n if (!tag) continue;\n if (next.some((t) => t.toLowerCase() === tag.toLowerCase())) {\n setError(labels.duplicate(tag));\n return;\n }\n if (maxTags !== undefined && next.length >= maxTags) {\n setError(labels.maxReached(maxTags));\n return;\n }\n const invalid = validate?.(tag);\n if (invalid) {\n setError(invalid);\n return;\n }\n next.push(tag);\n }\n setError(null);\n setDraft('');\n setActiveIndex(-1);\n if (next.length !== value.length) void commit(next, refocus);\n };\n\n const remove = (index: number) => {\n if (inFlight.current) return;\n setError(null);\n void commit(value.filter((_, i) => i !== index));\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n e.preventDefault();\n setOpen(true);\n if (!matches.length) return;\n const step = e.key === 'ArrowDown' ? 1 : -1;\n setActiveIndex((i) => (i + step + matches.length) % matches.length);\n } else if (e.key === 'Enter' || e.key === ',') {\n if (e.key === 'Enter' && !draft.trim() && activeIndex < 0) return;\n e.preventDefault();\n add([isOpen && activeIndex >= 0 ? matches[activeIndex] : draft]);\n } else if (e.key === 'Backspace' && !draft && value.length) {\n remove(value.length - 1);\n } else if (e.key === 'Escape' && isOpen) {\n e.preventDefault();\n setOpen(false);\n setActiveIndex(-1);\n }\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const parts = e.target.value.split(',');\n setOpen(true);\n setActiveIndex(-1);\n if (parts.length > 1) {\n add(parts.slice(0, -1));\n setDraft(parts[parts.length - 1]);\n } else {\n setDraft(e.target.value);\n if (error) setError(null);\n }\n };\n\n return (\n <div\n ref={ref}\n data-slot=\"tag-editor\"\n className={cn('w-full', className)}\n {...props}\n >\n {label && (\n <label\n htmlFor={inputId}\n className=\"text-foreground mb-1.5 block text-sm font-medium\"\n >\n {label}\n </label>\n )}\n <div\n ref={(node) => {\n containerRef.current = node;\n anchorRef.current = node;\n }}\n data-slot=\"tag-editor-field\"\n aria-busy={pending || undefined}\n className={cn(\n containerVariants({ size, hasError: !!error }),\n disabled && 'cursor-not-allowed opacity-50',\n readOnly && 'focus-within:ring-0'\n )}\n >\n {value.length > 0 && (\n <ul\n aria-label={label ?? labels.input}\n className=\"flex max-w-full flex-wrap items-center gap-1.5\"\n >\n {value.map((tag, index) => (\n <li\n key={tag}\n data-slot=\"tag-editor-tag\"\n className=\"bg-primary-100 text-primary-900 dark:bg-primary-900 dark:text-primary-100 inline-flex max-w-full items-center gap-1 rounded-full py-0.5 ps-2.5 pe-1 text-sm\"\n >\n <span className=\"truncate\">{tag}</span>\n {!readOnly && (\n <button\n type=\"button\"\n aria-label={labels.remove(tag)}\n disabled={!interactive}\n onClick={(e) => {\n e.stopPropagation();\n remove(index);\n }}\n className=\"hover:bg-primary-200 dark:hover:bg-primary-800 focus-visible:ring-ring rounded-full p-0.5 focus-visible:ring-2 focus-visible:outline-none disabled:opacity-50\"\n >\n <X aria-hidden=\"true\" className=\"h-3 w-3\" />\n </button>\n )}\n </li>\n ))}\n </ul>\n )}\n {!readOnly && (\n <input\n ref={inputRef}\n id={inputId}\n type=\"text\"\n role=\"combobox\"\n aria-label={label ? undefined : labels.input}\n aria-expanded={isOpen}\n aria-controls={suggestions ? listId : undefined}\n aria-autocomplete=\"list\"\n aria-activedescendant={\n isOpen && activeIndex >= 0\n ? `${listId}-${activeIndex}`\n : undefined\n }\n aria-invalid={error ? true : undefined}\n aria-describedby={error ? errorId : undefined}\n autoComplete=\"off\"\n value={draft}\n placeholder={atMax ? undefined : labels.placeholder}\n disabled={disabled}\n readOnly={pending || atMax}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onFocus={() => setOpen(true)}\n onBlur={() => {\n setOpen(false);\n if (draft.trim()) add([draft], false);\n }}\n className=\"placeholder:text-muted-foreground text-foreground min-w-24 flex-1 bg-transparent py-0.5 outline-none disabled:cursor-not-allowed\"\n />\n )}\n {pending && (\n <span role=\"status\" className=\"inline-flex\">\n <Loader2\n aria-hidden=\"true\"\n className=\"text-muted-foreground h-4 w-4 animate-spin motion-reduce:animate-none\"\n />\n <span className=\"sr-only\">{labels.saving}</span>\n </span>\n )}\n </div>\n {error && (\n <p\n id={errorId}\n role=\"alert\"\n data-slot=\"tag-editor-error\"\n className=\"text-destructive-700 dark:text-destructive-400 mt-1 text-sm\"\n >\n {error}\n </p>\n )}\n {isOpen &&\n createPortal(\n <div\n ref={floatingRef}\n style={style}\n id={listId}\n role=\"listbox\"\n aria-label={labels.suggestions}\n data-slot=\"tag-editor-suggestions\"\n className=\"border-border bg-card text-card-foreground overflow-auto rounded-md border py-1 shadow-lg\"\n >\n {matches.map((s, i) => (\n <button\n key={s}\n type=\"button\"\n tabIndex={-1}\n id={`${listId}-${i}`}\n role=\"option\"\n aria-selected={i === activeIndex}\n onMouseEnter={() => setActiveIndex(i)}\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => add([s])}\n className={cn(\n 'block w-full px-3 py-2 text-start text-sm',\n i === activeIndex ? 'bg-muted' : 'hover:bg-muted'\n )}\n >\n {s}\n </button>\n ))}\n </div>,\n document.body\n )}\n </div>\n );\n }\n);\n\nTagEditor.displayName = 'TagEditor';\n"]}