@alfadocs/ui-kit-debug 0.1.9 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (731) hide show
  1. package/README.md +30 -0
  2. package/dist/_chunks/accordion-DOmxGEWU.js +228 -0
  3. package/dist/_chunks/accordion-DOmxGEWU.js.map +1 -0
  4. package/dist/_chunks/{agenda-card-DwLIxgi7.js → agenda-card-CalZqycc.js} +12 -3
  5. package/dist/_chunks/agenda-card-CalZqycc.js.map +1 -0
  6. package/dist/_chunks/{agenda-tray-DUvengGQ.js → agenda-tray-3ffFDQZC.js} +54 -51
  7. package/dist/_chunks/agenda-tray-3ffFDQZC.js.map +1 -0
  8. package/dist/_chunks/{ai-prompt-input.agent-0NHYLTWD.js → ai-prompt-input-BBiDlEIS.js} +231 -231
  9. package/dist/_chunks/ai-prompt-input-BBiDlEIS.js.map +1 -0
  10. package/dist/_chunks/{alert-BlOUMkXj.js → alert-B1sj8Ss0.js} +24 -14
  11. package/dist/_chunks/alert-B1sj8Ss0.js.map +1 -0
  12. package/dist/_chunks/{apexcharts-theme-BkSShpEy.js → apexcharts-theme-BJigns_V.js} +7 -2
  13. package/dist/_chunks/{apexcharts-theme-BkSShpEy.js.map → apexcharts-theme-BJigns_V.js.map} +1 -1
  14. package/dist/_chunks/{app-frame-6d7Lu4ea.js → app-frame-CDJOgPXe.js} +7 -16
  15. package/dist/_chunks/app-frame-CDJOgPXe.js.map +1 -0
  16. package/dist/_chunks/aspect-ratio-DeSNzASA.js.map +1 -1
  17. package/dist/_chunks/{audio-recorder.agent--VKeykUp.js → audio-recorder-B4U1LuiQ.js} +161 -162
  18. package/dist/_chunks/audio-recorder-B4U1LuiQ.js.map +1 -0
  19. package/dist/_chunks/{audio-visualiser-CeMPCZkd.js → audio-visualiser-ByDEFLNm.js} +25 -19
  20. package/dist/_chunks/audio-visualiser-ByDEFLNm.js.map +1 -0
  21. package/dist/_chunks/autocomplete-D4oUZbsP.js +466 -0
  22. package/dist/_chunks/autocomplete-D4oUZbsP.js.map +1 -0
  23. package/dist/_chunks/avatar-Dcr6XuDQ.js.map +1 -1
  24. package/dist/_chunks/{badge-mrstWxve.js → badge-DKFbntoa.js} +16 -13
  25. package/dist/_chunks/badge-DKFbntoa.js.map +1 -0
  26. package/dist/_chunks/{balance-cell-renderer-5CA7zpAi.js → balance-cell-renderer-B8zgIM-m.js} +63 -44
  27. package/dist/_chunks/balance-cell-renderer-B8zgIM-m.js.map +1 -0
  28. package/dist/_chunks/{breadcrumb.agent-GM2hAKFX.js → breadcrumb-D1snXjPb.js} +165 -157
  29. package/dist/_chunks/breadcrumb-D1snXjPb.js.map +1 -0
  30. package/dist/_chunks/{button-7mLWcMp_.js → button-DD_0Xdmr.js} +12 -2
  31. package/dist/_chunks/button-DD_0Xdmr.js.map +1 -0
  32. package/dist/_chunks/button-group-CONver7M.js.map +1 -1
  33. package/dist/_chunks/button.agent-BuGZBktn.js.map +1 -1
  34. package/dist/_chunks/{calendar-nGEgelJs.js → calendar-zy0tUUVG.js} +13 -18
  35. package/dist/_chunks/calendar-zy0tUUVG.js.map +1 -0
  36. package/dist/_chunks/{card-BEy58ZKp.js → card-CWzuTLYE.js} +40 -34
  37. package/dist/_chunks/card-CWzuTLYE.js.map +1 -0
  38. package/dist/_chunks/{chart.agent-_pRYS17d.js → chart-BLvFl169.js} +147 -131
  39. package/dist/_chunks/chart-BLvFl169.js.map +1 -0
  40. package/dist/_chunks/chat-container-ClzsWXp2.js +220 -0
  41. package/dist/_chunks/chat-container-ClzsWXp2.js.map +1 -0
  42. package/dist/_chunks/chat-input-DOlsB1fm.js +333 -0
  43. package/dist/_chunks/chat-input-DOlsB1fm.js.map +1 -0
  44. package/dist/_chunks/{chat-message-ByouZpPP.js → chat-message-DoAhgUTj.js} +23 -13
  45. package/dist/_chunks/chat-message-DoAhgUTj.js.map +1 -0
  46. package/dist/_chunks/checkbox-CtPM6Rup.js.map +1 -1
  47. package/dist/_chunks/checkbox-group-BTdEB6Yo.js.map +1 -1
  48. package/dist/_chunks/{collapsible.agent-DkS1jVyn.js → collapsible-CuxUBoHJ.js} +97 -99
  49. package/dist/_chunks/collapsible-CuxUBoHJ.js.map +1 -0
  50. package/dist/_chunks/{color-picker-94qcBZqZ.js → color-picker-CTIcHlDF.js} +111 -45
  51. package/dist/_chunks/color-picker-CTIcHlDF.js.map +1 -0
  52. package/dist/_chunks/combobox-DCNXqbC7.js +460 -0
  53. package/dist/_chunks/combobox-DCNXqbC7.js.map +1 -0
  54. package/dist/_chunks/command-palette-C_vgSgrI.js +441 -0
  55. package/dist/_chunks/command-palette-C_vgSgrI.js.map +1 -0
  56. package/dist/_chunks/{date-picker-BqPTn7bO.js → date-picker-B1PO1ZQP.js} +190 -181
  57. package/dist/_chunks/{date-picker-BqPTn7bO.js.map → date-picker-B1PO1ZQP.js.map} +1 -1
  58. package/dist/_chunks/{date-range-picker-B2hGsffw.js → date-range-picker-mix2nEVC.js} +21 -8
  59. package/dist/_chunks/date-range-picker-mix2nEVC.js.map +1 -0
  60. package/dist/_chunks/{date-time-picker-Bzt0S8yO.js → date-time-picker-Dnong_BY.js} +30 -15
  61. package/dist/_chunks/date-time-picker-Dnong_BY.js.map +1 -0
  62. package/dist/_chunks/{description-list-DvJbp6Yg.js → description-list-BYA77Yud.js} +26 -23
  63. package/dist/_chunks/description-list-BYA77Yud.js.map +1 -0
  64. package/dist/_chunks/dialog-BPD7wlGE.js +211 -0
  65. package/dist/_chunks/dialog-BPD7wlGE.js.map +1 -0
  66. package/dist/_chunks/dropdown-menu-CpiF6CPz.js +300 -0
  67. package/dist/_chunks/dropdown-menu-CpiF6CPz.js.map +1 -0
  68. package/dist/_chunks/{empty-state-DQPtRp2b.js → empty-state-3CLJIXSj.js} +132 -101
  69. package/dist/_chunks/empty-state-3CLJIXSj.js.map +1 -0
  70. package/dist/_chunks/file-upload-C947ACDK.js +829 -0
  71. package/dist/_chunks/file-upload-C947ACDK.js.map +1 -0
  72. package/dist/_chunks/flag-DZ6V7-hU.js.map +1 -1
  73. package/dist/_chunks/{floating-action-button-Cnw-f6AG.js → floating-action-button-C8OYj8mE.js} +9 -2
  74. package/dist/_chunks/floating-action-button-C8OYj8mE.js.map +1 -0
  75. package/dist/_chunks/{form-field-BfsPLTSc.js → form-field-Bmkeh7WY.js} +12 -11
  76. package/dist/_chunks/form-field-Bmkeh7WY.js.map +1 -0
  77. package/dist/_chunks/{form-field-context-94LwgYTQ.js → form-field-context-B3APVHKx.js} +4 -2
  78. package/dist/_chunks/form-field-context-B3APVHKx.js.map +1 -0
  79. package/dist/_chunks/{freemium-paywall.agent-_nQqLyRF.js → freemium-paywall-CnvceDav.js} +124 -117
  80. package/dist/_chunks/freemium-paywall-CnvceDav.js.map +1 -0
  81. package/dist/_chunks/{header-BGn1mRp8.js → header-D0ULgQl3.js} +69 -68
  82. package/dist/_chunks/header-D0ULgQl3.js.map +1 -0
  83. package/dist/_chunks/{icon-button-Wnnde5lc.js → icon-button-C4CGcYuz.js} +11 -3
  84. package/dist/_chunks/icon-button-C4CGcYuz.js.map +1 -0
  85. package/dist/_chunks/icon-button-group-DeV3FpNY.js.map +1 -1
  86. package/dist/_chunks/{kbd-8baVw3KU.js → kbd-Cglkd7CY.js} +6 -2
  87. package/dist/_chunks/kbd-Cglkd7CY.js.map +1 -0
  88. package/dist/_chunks/{key-value-pair-JRFS9Xrh.js → key-value-pair-CgWvAIGb.js} +2 -2
  89. package/dist/_chunks/key-value-pair-CgWvAIGb.js.map +1 -0
  90. package/dist/_chunks/{leo-sidebar-BwINPdix.js → leo-sidebar-CfEY-xi2.js} +16 -20
  91. package/dist/_chunks/leo-sidebar-CfEY-xi2.js.map +1 -0
  92. package/dist/_chunks/{link-QheANk74.js → link-8QmFjIz2.js} +2 -5
  93. package/dist/_chunks/link-8QmFjIz2.js.map +1 -0
  94. package/dist/_chunks/list-qP6p0NTw.js +434 -0
  95. package/dist/_chunks/list-qP6p0NTw.js.map +1 -0
  96. package/dist/_chunks/live-region-C41SO3cA.js.map +1 -1
  97. package/dist/_chunks/{logo-BpFoCL-s.js → logo-_Z-jLq80.js} +155 -26
  98. package/dist/_chunks/logo-_Z-jLq80.js.map +1 -0
  99. package/dist/_chunks/{matrix-rain-BEkvux64.js → matrix-rain-CRPMXcVx.js} +8 -2
  100. package/dist/_chunks/matrix-rain-CRPMXcVx.js.map +1 -0
  101. package/dist/_chunks/{message-card-qhoGv947.js → message-card-ChCX9Iv6.js} +63 -60
  102. package/dist/_chunks/message-card-ChCX9Iv6.js.map +1 -0
  103. package/dist/_chunks/{message-tray-xHUCra-Y.js → message-tray-n8q9ITXI.js} +71 -76
  104. package/dist/_chunks/message-tray-n8q9ITXI.js.map +1 -0
  105. package/dist/_chunks/{multi-select.agent-Do6CeQUT.js → multi-select-wqqrgjUQ.js} +326 -291
  106. package/dist/_chunks/multi-select-wqqrgjUQ.js.map +1 -0
  107. package/dist/_chunks/{navigation-menu.agent-D69ND6Qq.js → navigation-menu-ClbHeawy.js} +136 -123
  108. package/dist/_chunks/navigation-menu-ClbHeawy.js.map +1 -0
  109. package/dist/_chunks/normalize-diacritics-BNGbFNlJ.js.map +1 -1
  110. package/dist/_chunks/{notification-card-CsVEYJE-.js → notification-card-hBlPN1-c.js} +3 -3
  111. package/dist/_chunks/notification-card-hBlPN1-c.js.map +1 -0
  112. package/dist/_chunks/{notification-tray-DTXMq42J.js → notification-tray-C5cnXbl9.js} +70 -66
  113. package/dist/_chunks/notification-tray-C5cnXbl9.js.map +1 -0
  114. package/dist/_chunks/{number-input-fvGmnRy9.js → number-input-Q7wkHnvQ.js} +7 -3
  115. package/dist/_chunks/number-input-Q7wkHnvQ.js.map +1 -0
  116. package/dist/_chunks/{otp-input-EglXOUue.js → otp-input-C9gUByF0.js} +6 -3
  117. package/dist/_chunks/otp-input-C9gUByF0.js.map +1 -0
  118. package/dist/_chunks/{pagination.agent-BkZQl45y.js → pagination-3AC4zTsi.js} +234 -194
  119. package/dist/_chunks/pagination-3AC4zTsi.js.map +1 -0
  120. package/dist/_chunks/{password-input-D6kuYXmr.js → password-input-C4LmjIH1.js} +6 -9
  121. package/dist/_chunks/password-input-C4LmjIH1.js.map +1 -0
  122. package/dist/_chunks/{patient-shell-BRmrrUUW.js → patient-shell-BlsEUKWB.js} +10 -15
  123. package/dist/_chunks/{patient-shell-BRmrrUUW.js.map → patient-shell-BlsEUKWB.js.map} +1 -1
  124. package/dist/_chunks/{payment-form-BWaXas8z.js → payment-form-C3vT_npe.js} +195 -186
  125. package/dist/_chunks/payment-form-C3vT_npe.js.map +1 -0
  126. package/dist/_chunks/{pdf-viewer.agent-BaGEDheA.js → pdf-viewer-CZIfY08H.js} +270 -241
  127. package/dist/_chunks/pdf-viewer-CZIfY08H.js.map +1 -0
  128. package/dist/_chunks/{phone-input-C8Op4sEc.js → phone-input-CSHJOJ13.js} +4 -9
  129. package/dist/_chunks/phone-input-CSHJOJ13.js.map +1 -0
  130. package/dist/_chunks/popover-DekUKNBk.js +293 -0
  131. package/dist/_chunks/popover-DekUKNBk.js.map +1 -0
  132. package/dist/_chunks/{privacy-lock.agent-C1i1-T58.js → privacy-lock-BKsI6ReN.js} +117 -109
  133. package/dist/_chunks/privacy-lock-BKsI6ReN.js.map +1 -0
  134. package/dist/_chunks/progress-C11tqhoI.js +298 -0
  135. package/dist/_chunks/progress-C11tqhoI.js.map +1 -0
  136. package/dist/_chunks/radio-DvF59ThA.js.map +1 -1
  137. package/dist/_chunks/radio-group-Cz1a4QCA.js.map +1 -1
  138. package/dist/_chunks/react-day-picker-C04L_28V.js.map +1 -1
  139. package/dist/_chunks/{recaptcha-widget.agent-BGHpU5zD.js → recaptcha-widget-NyfOfLII.js} +95 -86
  140. package/dist/_chunks/recaptcha-widget-NyfOfLII.js.map +1 -0
  141. package/dist/_chunks/resizable-mpXXyIsN.js +483 -0
  142. package/dist/_chunks/resizable-mpXXyIsN.js.map +1 -0
  143. package/dist/_chunks/{rich-text-editor.agent-DnE125Tz.js → rich-text-editor-C7TCIlQO.js} +298 -209
  144. package/dist/_chunks/rich-text-editor-C7TCIlQO.js.map +1 -0
  145. package/dist/_chunks/safe-image-src-DstKgCo7.js.map +1 -1
  146. package/dist/_chunks/{scroll-area-DLr5w9Dd.js → scroll-area-DEDU-lp-.js} +67 -54
  147. package/dist/_chunks/scroll-area-DEDU-lp-.js.map +1 -0
  148. package/dist/_chunks/{search-bar.agent-DxFAxctc.js → search-bar-BTDfgYtg.js} +291 -268
  149. package/dist/_chunks/search-bar-BTDfgYtg.js.map +1 -0
  150. package/dist/_chunks/{search-input-Xw3cdWXW.js → search-input-CdJIEjFo.js} +116 -107
  151. package/dist/_chunks/search-input-CdJIEjFo.js.map +1 -0
  152. package/dist/_chunks/search-input.agent-CfZvViOd.js.map +1 -1
  153. package/dist/_chunks/{select-DY1Cb2Tg.js → select-y6bXV1f1.js} +84 -83
  154. package/dist/_chunks/select-y6bXV1f1.js.map +1 -0
  155. package/dist/_chunks/{separator-B4wXDLNC.js → separator-CYU_bGFn.js} +2 -5
  156. package/dist/_chunks/separator-CYU_bGFn.js.map +1 -0
  157. package/dist/_chunks/{sheet-B9kH9pcI.js → sheet-4tgMFwj0.js} +135 -60
  158. package/dist/_chunks/sheet-4tgMFwj0.js.map +1 -0
  159. package/dist/_chunks/{sidebar-CHF5xr_P.js → sidebar-Bx3wCDyy.js} +546 -457
  160. package/dist/_chunks/sidebar-Bx3wCDyy.js.map +1 -0
  161. package/dist/_chunks/{sign-in-with-alfadocs-button-BN_FPGHT.js → sign-in-with-alfadocs-button-B9UrqOqH.js} +9 -5
  162. package/dist/_chunks/sign-in-with-alfadocs-button-B9UrqOqH.js.map +1 -0
  163. package/dist/_chunks/{signature-capture.agent-BpeDwFht.js → signature-capture-DjMlFOzS.js} +210 -212
  164. package/dist/_chunks/signature-capture-DjMlFOzS.js.map +1 -0
  165. package/dist/_chunks/{skeleton-dtqyF09N.js → skeleton-CZbwyJAA.js} +9 -3
  166. package/dist/_chunks/skeleton-CZbwyJAA.js.map +1 -0
  167. package/dist/_chunks/skip-link-DmZ3c6cb.js.map +1 -1
  168. package/dist/_chunks/{slider-CcsQTZTA.js → slider-BT2bZWsy.js} +138 -134
  169. package/dist/_chunks/slider-BT2bZWsy.js.map +1 -0
  170. package/dist/_chunks/{slot-grid-D_l5VsHG.js → slot-grid-CgpYgBkW.js} +105 -95
  171. package/dist/_chunks/slot-grid-CgpYgBkW.js.map +1 -0
  172. package/dist/_chunks/{sparkline.agent-56Sj7nOP.js → sparkline-_gy8aJDG.js} +107 -100
  173. package/dist/_chunks/sparkline-_gy8aJDG.js.map +1 -0
  174. package/dist/_chunks/{spinner-GCcv67vh.js → spinner-DLaYfLPl.js} +66 -14
  175. package/dist/_chunks/spinner-DLaYfLPl.js.map +1 -0
  176. package/dist/_chunks/{stat-DUB6g90R.js → stat-B9PHSPbN.js} +45 -27
  177. package/dist/_chunks/stat-B9PHSPbN.js.map +1 -0
  178. package/dist/_chunks/stepper-accordion.agent-ckKYZCIP.js.map +1 -1
  179. package/dist/_chunks/{stepper-calendar.agent-9iT3ClIB.js → stepper-calendar-BLOJUE0-.js} +189 -187
  180. package/dist/_chunks/stepper-calendar-BLOJUE0-.js.map +1 -0
  181. package/dist/_chunks/stepper-progress-jFY8BSf7.js +208 -0
  182. package/dist/_chunks/stepper-progress-jFY8BSf7.js.map +1 -0
  183. package/dist/_chunks/streaming-text-BgjCTVOw.js.map +1 -1
  184. package/dist/_chunks/{suggestion-chip-DhFrkRPj.js → suggestion-chip-C4Jz0LrM.js} +50 -52
  185. package/dist/_chunks/suggestion-chip-C4Jz0LrM.js.map +1 -0
  186. package/dist/_chunks/suggestion-chip.agent-6sNWFj7m.js.map +1 -1
  187. package/dist/_chunks/{switch-BYEH8I53.js → switch-C0psfIQF.js} +2 -2
  188. package/dist/_chunks/switch-C0psfIQF.js.map +1 -0
  189. package/dist/_chunks/{tabs.agent-h7NvsTR1.js → tabs-DaFA3Muo.js} +183 -155
  190. package/dist/_chunks/tabs-DaFA3Muo.js.map +1 -0
  191. package/dist/_chunks/{tag-BqidXKo3.js → tag-DuLMjRbF.js} +90 -32
  192. package/dist/_chunks/tag-DuLMjRbF.js.map +1 -0
  193. package/dist/_chunks/{task-card-CY5ztNkU.js → task-card-Dw_ZJDL8.js} +5 -2
  194. package/dist/_chunks/task-card-Dw_ZJDL8.js.map +1 -0
  195. package/dist/_chunks/{task-tray-CCoUdorl.js → task-tray-XlIW9ueh.js} +50 -49
  196. package/dist/_chunks/task-tray-XlIW9ueh.js.map +1 -0
  197. package/dist/_chunks/{text-area-C_M8wliK.js → text-area-CO9Dz0qX.js} +2 -2
  198. package/dist/_chunks/text-area-CO9Dz0qX.js.map +1 -0
  199. package/dist/_chunks/{text-input-BX39e6T6.js → text-input-DZwt9L8H.js} +65 -62
  200. package/dist/_chunks/text-input-DZwt9L8H.js.map +1 -0
  201. package/dist/_chunks/{theme-root-DDb0TJjd.js → theme-root-CSKD5ZRm.js} +9 -2
  202. package/dist/_chunks/{theme-root-DDb0TJjd.js.map → theme-root-CSKD5ZRm.js.map} +1 -1
  203. package/dist/_chunks/{theme-toggle.agent-btmXTWdW.js → theme-toggle-B9zzCnvl.js} +179 -177
  204. package/dist/_chunks/theme-toggle-B9zzCnvl.js.map +1 -0
  205. package/dist/_chunks/{time-picker-B8AMIrX7.js → time-picker-DvPUmHH-.js} +95 -93
  206. package/dist/_chunks/time-picker-DvPUmHH-.js.map +1 -0
  207. package/dist/_chunks/{timeline.agent-CRPza9wc.js → timeline-BvmnQadS.js} +96 -96
  208. package/dist/_chunks/timeline-BvmnQadS.js.map +1 -0
  209. package/dist/_chunks/timestamp-BV2lC-wV.js.map +1 -1
  210. package/dist/_chunks/{toast.agent-BjEGuq1Z.js → toast.agent-BwKXA0km.js} +46 -8
  211. package/dist/_chunks/{toast.agent-BjEGuq1Z.js.map → toast.agent-BwKXA0km.js.map} +1 -1
  212. package/dist/_chunks/{tooth-scheme.agent-CWrQBjJM.js → tooth-scheme-3mITSXiZ.js} +146 -162
  213. package/dist/_chunks/tooth-scheme-3mITSXiZ.js.map +1 -0
  214. package/dist/_chunks/{transcript-panel.agent-BXEYP6w-.js → transcript-panel-Bx5ANMsv.js} +110 -101
  215. package/dist/_chunks/transcript-panel-Bx5ANMsv.js.map +1 -0
  216. package/dist/_chunks/{typing-indicator-CbUBf-Dx.js → typing-indicator-BZ5jXZPn.js} +27 -5
  217. package/dist/_chunks/typing-indicator-BZ5jXZPn.js.map +1 -0
  218. package/dist/_chunks/use-prefers-reduced-motion-BMwIQRjB.js.map +1 -1
  219. package/dist/_chunks/{use-theme-BMUhembX.js → use-theme-B1cwAXJR.js} +2 -5
  220. package/dist/_chunks/use-theme-B1cwAXJR.js.map +1 -0
  221. package/dist/_chunks/{visually-hidden-Bw7vBHLm.js → visually-hidden-BHxEUGyT.js} +11 -2
  222. package/dist/_chunks/{visually-hidden-Bw7vBHLm.js.map → visually-hidden-BHxEUGyT.js.map} +1 -1
  223. package/dist/_chunks/{warning-stack-8Pa3pekh.js → warning-stack-VygGHSqC.js} +11 -13
  224. package/dist/_chunks/warning-stack-VygGHSqC.js.map +1 -0
  225. package/dist/_chunks/{workflow-map-D2A7rTEG.js → workflow-map-C-nlogPC.js} +430 -452
  226. package/dist/_chunks/workflow-map-C-nlogPC.js.map +1 -0
  227. package/dist/agent-catalog.json +580 -15
  228. package/dist/brand/logo-asset/Alfadocs_Logo_BW.d.ts.map +1 -1
  229. package/dist/brand/logo-asset/Alfadocs_Logo_Main.d.ts.map +1 -1
  230. package/dist/brand/logo-asset/Alfadocs_Logo_Mark.d.ts.map +1 -1
  231. package/dist/brand/logo-asset/Alfadocs_Logo_Neg.d.ts.map +1 -1
  232. package/dist/brand/logo-asset/Alfadocs_Logo_Purple.d.ts.map +1 -1
  233. package/dist/components/_shared/date-locale.d.ts.map +1 -1
  234. package/dist/components/_shared/index.d.ts +2 -2
  235. package/dist/components/_shared/index.d.ts.map +1 -1
  236. package/dist/components/_shared/normalize-diacritics.d.ts.map +1 -1
  237. package/dist/components/_shared/safe-html.d.ts.map +1 -1
  238. package/dist/components/_shared/safe-image-src.d.ts.map +1 -1
  239. package/dist/components/_shared/use-focus-trap.d.ts.map +1 -1
  240. package/dist/components/accordion/accordion.agent.d.ts.map +1 -1
  241. package/dist/components/accordion/accordion.d.ts.map +1 -1
  242. package/dist/components/accordion/index.d.ts +1 -1
  243. package/dist/components/accordion/index.d.ts.map +1 -1
  244. package/dist/components/accordion/index.js +5 -6
  245. package/dist/components/accordion/index.js.map +1 -1
  246. package/dist/components/agenda-card/agenda-card.d.ts.map +1 -1
  247. package/dist/components/agenda-card/index.js +1 -1
  248. package/dist/components/agenda-tray/agenda-tray.agent.d.ts.map +1 -1
  249. package/dist/components/agenda-tray/agenda-tray.d.ts +1 -1
  250. package/dist/components/agenda-tray/agenda-tray.d.ts.map +1 -1
  251. package/dist/components/agenda-tray/index.js +1 -1
  252. package/dist/components/ai-prompt-input/ai-prompt-input.agent.d.ts.map +1 -1
  253. package/dist/components/ai-prompt-input/ai-prompt-input.d.ts +1 -1
  254. package/dist/components/ai-prompt-input/ai-prompt-input.d.ts.map +1 -1
  255. package/dist/components/ai-prompt-input/index.js +1 -1
  256. package/dist/components/alert/alert.d.ts.map +1 -1
  257. package/dist/components/alert/index.d.ts +1 -1
  258. package/dist/components/alert/index.d.ts.map +1 -1
  259. package/dist/components/alert/index.js +1 -1
  260. package/dist/components/app-frame/app-frame.d.ts.map +1 -1
  261. package/dist/components/app-frame/index.js +1 -1
  262. package/dist/components/aspect-ratio/aspect-ratio.d.ts.map +1 -1
  263. package/dist/components/audio-recorder/audio-recorder.agent.d.ts.map +1 -1
  264. package/dist/components/audio-recorder/audio-recorder.d.ts.map +1 -1
  265. package/dist/components/audio-recorder/index.js +1 -1
  266. package/dist/components/audio-visualiser/audio-visualiser.d.ts.map +1 -1
  267. package/dist/components/audio-visualiser/index.js +1 -1
  268. package/dist/components/autocomplete/autocomplete.agent.d.ts.map +1 -1
  269. package/dist/components/autocomplete/autocomplete.d.ts.map +1 -1
  270. package/dist/components/autocomplete/index.js +1 -1
  271. package/dist/components/avatar/avatar.d.ts.map +1 -1
  272. package/dist/components/badge/badge.d.ts.map +1 -1
  273. package/dist/components/badge/index.js +1 -1
  274. package/dist/components/breadcrumb/breadcrumb.agent.d.ts.map +1 -1
  275. package/dist/components/breadcrumb/breadcrumb.d.ts +1 -1
  276. package/dist/components/breadcrumb/breadcrumb.d.ts.map +1 -1
  277. package/dist/components/breadcrumb/index.js +1 -1
  278. package/dist/components/button/button.agent.d.ts.map +1 -1
  279. package/dist/components/button/button.d.ts.map +1 -1
  280. package/dist/components/button/icon-button.d.ts.map +1 -1
  281. package/dist/components/button/index.js +2 -2
  282. package/dist/components/button-group/button-group.d.ts.map +1 -1
  283. package/dist/components/calendar/calendar.agent.d.ts.map +1 -1
  284. package/dist/components/calendar/calendar.d.ts.map +1 -1
  285. package/dist/components/calendar/contrast-warning.d.ts.map +1 -1
  286. package/dist/components/calendar/index.js +1 -1
  287. package/dist/components/card/card.d.ts.map +1 -1
  288. package/dist/components/card/index.js +1 -1
  289. package/dist/components/chart/chart.agent.d.ts.map +1 -1
  290. package/dist/components/chart/chart.d.ts.map +1 -1
  291. package/dist/components/chart/index.d.ts +1 -1
  292. package/dist/components/chart/index.d.ts.map +1 -1
  293. package/dist/components/chart/index.js +1 -1
  294. package/dist/components/chat-container/chat-container.d.ts +1 -1
  295. package/dist/components/chat-container/chat-container.d.ts.map +1 -1
  296. package/dist/components/chat-container/index.js +2 -3
  297. package/dist/components/chat-container/index.js.map +1 -1
  298. package/dist/components/chat-input/chat-input.d.ts +1 -1
  299. package/dist/components/chat-input/chat-input.d.ts.map +1 -1
  300. package/dist/components/chat-input/index.js +3 -4
  301. package/dist/components/chat-input/index.js.map +1 -1
  302. package/dist/components/chat-message/chat-message.d.ts.map +1 -1
  303. package/dist/components/chat-message/index.js +1 -1
  304. package/dist/components/checkbox/checkbox.d.ts.map +1 -1
  305. package/dist/components/checkbox-group/checkbox-group.agent.d.ts.map +1 -1
  306. package/dist/components/checkbox-group/checkbox-group.d.ts.map +1 -1
  307. package/dist/components/checkbox-group/index.d.ts +1 -1
  308. package/dist/components/checkbox-group/index.d.ts.map +1 -1
  309. package/dist/components/collapsible/collapsible.d.ts +1 -1
  310. package/dist/components/collapsible/collapsible.d.ts.map +1 -1
  311. package/dist/components/collapsible/index.d.ts +1 -1
  312. package/dist/components/collapsible/index.d.ts.map +1 -1
  313. package/dist/components/collapsible/index.js +1 -1
  314. package/dist/components/color-picker/color-picker.agent.d.ts.map +1 -1
  315. package/dist/components/color-picker/color-picker.d.ts.map +1 -1
  316. package/dist/components/color-picker/index.js +1 -1
  317. package/dist/components/combobox/combobox.agent.d.ts.map +1 -1
  318. package/dist/components/combobox/combobox.d.ts.map +1 -1
  319. package/dist/components/combobox/index.d.ts +1 -1
  320. package/dist/components/combobox/index.d.ts.map +1 -1
  321. package/dist/components/combobox/index.js +1 -1
  322. package/dist/components/command-palette/command-palette.d.ts +46 -13
  323. package/dist/components/command-palette/command-palette.d.ts.map +1 -1
  324. package/dist/components/command-palette/index.js +1 -1
  325. package/dist/components/data-table/cell-renderers/actions-cell-renderer.d.ts.map +1 -1
  326. package/dist/components/data-table/cell-renderers/balance-cell-renderer.d.ts.map +1 -1
  327. package/dist/components/data-table/cell-renderers/color-dot-cell-renderer.d.ts.map +1 -1
  328. package/dist/components/data-table/cell-renderers/currency-cell-renderer.d.ts.map +1 -1
  329. package/dist/components/data-table/cell-renderers/date-cell-renderer.d.ts.map +1 -1
  330. package/dist/components/data-table/cell-renderers/link-cell-renderer.d.ts.map +1 -1
  331. package/dist/components/data-table/cell-renderers/toggle-cell-renderer.d.ts.map +1 -1
  332. package/dist/components/data-table/data-table.agent.d.ts.map +1 -1
  333. package/dist/components/data-table/data-table.d.ts +3 -1
  334. package/dist/components/data-table/data-table.d.ts.map +1 -1
  335. package/dist/components/data-table/index.js +1 -1
  336. package/dist/components/data-table/toolbar.d.ts +6 -5
  337. package/dist/components/data-table/toolbar.d.ts.map +1 -1
  338. package/dist/components/date-picker/date-picker.d.ts +1 -1
  339. package/dist/components/date-picker/date-picker.d.ts.map +1 -1
  340. package/dist/components/date-picker/index.d.ts +1 -1
  341. package/dist/components/date-picker/index.d.ts.map +1 -1
  342. package/dist/components/date-picker/index.js +1 -1
  343. package/dist/components/date-range-picker/date-range-picker.agent.d.ts.map +1 -1
  344. package/dist/components/date-range-picker/date-range-picker.d.ts.map +1 -1
  345. package/dist/components/date-range-picker/index.js +1 -1
  346. package/dist/components/date-time-picker/date-time-picker.d.ts.map +1 -1
  347. package/dist/components/date-time-picker/index.d.ts +1 -1
  348. package/dist/components/date-time-picker/index.d.ts.map +1 -1
  349. package/dist/components/date-time-picker/index.js +1 -1
  350. package/dist/components/description-list/description-list.d.ts +1 -2
  351. package/dist/components/description-list/description-list.d.ts.map +1 -1
  352. package/dist/components/description-list/index.js +1 -1
  353. package/dist/components/dialog/dialog.agent.d.ts.map +1 -1
  354. package/dist/components/dialog/dialog.d.ts +2 -2
  355. package/dist/components/dialog/dialog.d.ts.map +1 -1
  356. package/dist/components/dialog/index.js +1 -1
  357. package/dist/components/dropdown-menu/dropdown-menu.d.ts +11 -16
  358. package/dist/components/dropdown-menu/dropdown-menu.d.ts.map +1 -1
  359. package/dist/components/dropdown-menu/index.js +3 -4
  360. package/dist/components/dropdown-menu/index.js.map +1 -1
  361. package/dist/components/empty-state/empty-state.d.ts.map +1 -1
  362. package/dist/components/empty-state/index.js +1 -1
  363. package/dist/components/file-upload/file-upload.agent.d.ts.map +1 -1
  364. package/dist/components/file-upload/file-upload.d.ts.map +1 -1
  365. package/dist/components/file-upload/index.d.ts +1 -1
  366. package/dist/components/file-upload/index.d.ts.map +1 -1
  367. package/dist/components/file-upload/index.js +1 -1
  368. package/dist/components/flag/flag.d.ts.map +1 -1
  369. package/dist/components/floating-action-button/floating-action-button.d.ts.map +1 -1
  370. package/dist/components/floating-action-button/index.js +1 -1
  371. package/dist/components/form-field/form-field-context.d.ts.map +1 -1
  372. package/dist/components/form-field/form-field.d.ts.map +1 -1
  373. package/dist/components/form-field/index.js +2 -2
  374. package/dist/components/freemium-paywall/freemium-paywall.agent.d.ts.map +1 -1
  375. package/dist/components/freemium-paywall/freemium-paywall.d.ts +1 -1
  376. package/dist/components/freemium-paywall/freemium-paywall.d.ts.map +1 -1
  377. package/dist/components/freemium-paywall/index.js +1 -1
  378. package/dist/components/header/header.d.ts.map +1 -1
  379. package/dist/components/header/index.js +1 -1
  380. package/dist/components/icon-button/index.js +1 -1
  381. package/dist/components/icon-button-group/icon-button-group.d.ts.map +1 -1
  382. package/dist/components/kbd/index.js +1 -1
  383. package/dist/components/kbd/kbd.d.ts.map +1 -1
  384. package/dist/components/key-value-pair/index.js +1 -1
  385. package/dist/components/key-value-pair/key-value-pair.d.ts.map +1 -1
  386. package/dist/components/link/index.js +1 -1
  387. package/dist/components/link/link.d.ts.map +1 -1
  388. package/dist/components/list/index.js +1 -1
  389. package/dist/components/list/list.agent.d.ts.map +1 -1
  390. package/dist/components/list/list.d.ts.map +1 -1
  391. package/dist/components/live-region/live-region.d.ts.map +1 -1
  392. package/dist/components/logo/index.js +1 -1
  393. package/dist/components/logo/logo.d.ts.map +1 -1
  394. package/dist/components/matrix-rain/index.js +1 -1
  395. package/dist/components/matrix-rain/matrix-rain.d.ts.map +1 -1
  396. package/dist/components/message-card/index.d.ts +1 -1
  397. package/dist/components/message-card/index.d.ts.map +1 -1
  398. package/dist/components/message-card/index.js +1 -1
  399. package/dist/components/message-card/message-card.d.ts.map +1 -1
  400. package/dist/components/message-tray/index.js +1 -1
  401. package/dist/components/message-tray/message-tray.agent.d.ts.map +1 -1
  402. package/dist/components/message-tray/message-tray.d.ts +1 -1
  403. package/dist/components/message-tray/message-tray.d.ts.map +1 -1
  404. package/dist/components/multi-select/index.js +1 -1
  405. package/dist/components/multi-select/multi-select.agent.d.ts.map +1 -1
  406. package/dist/components/multi-select/multi-select.d.ts.map +1 -1
  407. package/dist/components/navigation-menu/index.js +1 -1
  408. package/dist/components/navigation-menu/navigation-menu.agent.d.ts.map +1 -1
  409. package/dist/components/navigation-menu/navigation-menu.d.ts +1 -1
  410. package/dist/components/navigation-menu/navigation-menu.d.ts.map +1 -1
  411. package/dist/components/notification-card/index.d.ts +1 -1
  412. package/dist/components/notification-card/index.d.ts.map +1 -1
  413. package/dist/components/notification-card/index.js +1 -1
  414. package/dist/components/notification-card/notification-card.d.ts.map +1 -1
  415. package/dist/components/notification-tray/index.js +1 -1
  416. package/dist/components/notification-tray/notification-tray.agent.d.ts.map +1 -1
  417. package/dist/components/notification-tray/notification-tray.d.ts +1 -1
  418. package/dist/components/notification-tray/notification-tray.d.ts.map +1 -1
  419. package/dist/components/number-input/index.js +1 -1
  420. package/dist/components/number-input/number-input.d.ts.map +1 -1
  421. package/dist/components/number-input/use-locale-number.d.ts.map +1 -1
  422. package/dist/components/otp-input/index.js +1 -1
  423. package/dist/components/otp-input/otp-input.agent.d.ts.map +1 -1
  424. package/dist/components/otp-input/otp-input.d.ts.map +1 -1
  425. package/dist/components/pagination/index.js +1 -1
  426. package/dist/components/pagination/pagination.d.ts +4 -6
  427. package/dist/components/pagination/pagination.d.ts.map +1 -1
  428. package/dist/components/password-input/index.js +1 -1
  429. package/dist/components/password-input/password-input.agent.d.ts.map +1 -1
  430. package/dist/components/password-input/password-input.d.ts.map +1 -1
  431. package/dist/components/payment-form/index.js +7 -8
  432. package/dist/components/payment-form/index.js.map +1 -1
  433. package/dist/components/payment-form/payment-form.agent.d.ts.map +1 -1
  434. package/dist/components/payment-form/payment-form.d.ts +1 -1
  435. package/dist/components/payment-form/payment-form.d.ts.map +1 -1
  436. package/dist/components/pdf-viewer/index.js +1 -1
  437. package/dist/components/pdf-viewer/pdf-viewer.agent.d.ts.map +1 -1
  438. package/dist/components/pdf-viewer/pdf-viewer.d.ts.map +1 -1
  439. package/dist/components/phone-input/index.d.ts +1 -1
  440. package/dist/components/phone-input/index.d.ts.map +1 -1
  441. package/dist/components/phone-input/index.js +1 -1
  442. package/dist/components/phone-input/phone-input.agent.d.ts.map +1 -1
  443. package/dist/components/phone-input/phone-input.d.ts.map +1 -1
  444. package/dist/components/popover/index.js +3 -4
  445. package/dist/components/popover/index.js.map +1 -1
  446. package/dist/components/popover/popover.d.ts.map +1 -1
  447. package/dist/components/privacy-lock/index.js +1 -1
  448. package/dist/components/privacy-lock/privacy-lock.d.ts +1 -1
  449. package/dist/components/privacy-lock/privacy-lock.d.ts.map +1 -1
  450. package/dist/components/progress/index.js +3 -4
  451. package/dist/components/progress/index.js.map +1 -1
  452. package/dist/components/progress/progress.d.ts.map +1 -1
  453. package/dist/components/radio-group/radio-group.d.ts.map +1 -1
  454. package/dist/components/radio-group/radio.d.ts.map +1 -1
  455. package/dist/components/recaptcha-widget/index.js +1 -1
  456. package/dist/components/recaptcha-widget/recaptcha-widget.agent.d.ts.map +1 -1
  457. package/dist/components/recaptcha-widget/recaptcha-widget.d.ts.map +1 -1
  458. package/dist/components/resizable/index.d.ts +1 -1
  459. package/dist/components/resizable/index.d.ts.map +1 -1
  460. package/dist/components/resizable/index.js +1 -1
  461. package/dist/components/resizable/resizable-context.d.ts.map +1 -1
  462. package/dist/components/resizable/resizable.agent.d.ts.map +1 -1
  463. package/dist/components/resizable/resizable.d.ts.map +1 -1
  464. package/dist/components/rich-text-editor/index.js +1 -1
  465. package/dist/components/rich-text-editor/rich-text-editor.d.ts.map +1 -1
  466. package/dist/components/scroll-area/index.js +1 -1
  467. package/dist/components/scroll-area/scroll-area.d.ts.map +1 -1
  468. package/dist/components/search-bar/index.js +1 -1
  469. package/dist/components/search-bar/search-bar.agent.d.ts.map +1 -1
  470. package/dist/components/search-bar/search-bar.d.ts +1 -1
  471. package/dist/components/search-bar/search-bar.d.ts.map +1 -1
  472. package/dist/components/search-input/index.js +1 -1
  473. package/dist/components/search-input/search-input.agent.d.ts.map +1 -1
  474. package/dist/components/search-input/search-input.d.ts.map +1 -1
  475. package/dist/components/select/index.js +1 -1
  476. package/dist/components/select/select.agent.d.ts.map +1 -1
  477. package/dist/components/select/select.d.ts +1 -1
  478. package/dist/components/select/select.d.ts.map +1 -1
  479. package/dist/components/separator/index.js +1 -1
  480. package/dist/components/separator/separator.d.ts.map +1 -1
  481. package/dist/components/sheet/index.js +3 -4
  482. package/dist/components/sheet/index.js.map +1 -1
  483. package/dist/components/sheet/sheet.agent.d.ts.map +1 -1
  484. package/dist/components/sheet/sheet.d.ts +2 -2
  485. package/dist/components/sheet/sheet.d.ts.map +1 -1
  486. package/dist/components/sidebar/index.js +7 -8
  487. package/dist/components/sidebar/index.js.map +1 -1
  488. package/dist/components/sidebar/sidebar.agent.d.ts.map +1 -1
  489. package/dist/components/sidebar/sidebar.d.ts +0 -2
  490. package/dist/components/sidebar/sidebar.d.ts.map +1 -1
  491. package/dist/components/sign-in-with-alfadocs-button/index.js +1 -1
  492. package/dist/components/sign-in-with-alfadocs-button/sign-in-with-alfadocs-button.d.ts.map +1 -1
  493. package/dist/components/signature-capture/index.js +1 -1
  494. package/dist/components/signature-capture/signature-capture.d.ts.map +1 -1
  495. package/dist/components/skeleton/index.js +1 -1
  496. package/dist/components/skeleton/skeleton.d.ts.map +1 -1
  497. package/dist/components/skip-link/skip-link.d.ts.map +1 -1
  498. package/dist/components/slider/index.js +1 -1
  499. package/dist/components/slider/slider.agent.d.ts.map +1 -1
  500. package/dist/components/slider/slider.d.ts.map +1 -1
  501. package/dist/components/slot-grid/index.js +1 -1
  502. package/dist/components/slot-grid/slot-grid.d.ts.map +1 -1
  503. package/dist/components/sparkline/index.js +1 -1
  504. package/dist/components/sparkline/sparkline.d.ts.map +1 -1
  505. package/dist/components/sparkline/use-linear-trend.d.ts.map +1 -1
  506. package/dist/components/spinner/index.js +1 -1
  507. package/dist/components/spinner/spinner.d.ts.map +1 -1
  508. package/dist/components/stat/index.js +1 -1
  509. package/dist/components/stat/stat.d.ts.map +1 -1
  510. package/dist/components/stepper-accordion/stepper-accordion.agent.d.ts.map +1 -1
  511. package/dist/components/stepper-accordion/stepper-accordion.d.ts.map +1 -1
  512. package/dist/components/stepper-calendar/index.js +1 -1
  513. package/dist/components/stepper-calendar/stepper-calendar.agent.d.ts.map +1 -1
  514. package/dist/components/stepper-calendar/stepper-calendar.d.ts +1 -1
  515. package/dist/components/stepper-calendar/stepper-calendar.d.ts.map +1 -1
  516. package/dist/components/stepper-progress/index.d.ts +1 -1
  517. package/dist/components/stepper-progress/index.d.ts.map +1 -1
  518. package/dist/components/stepper-progress/index.js +1 -2
  519. package/dist/components/stepper-progress/index.js.map +1 -1
  520. package/dist/components/stepper-progress/stepper-progress.agent.d.ts.map +1 -1
  521. package/dist/components/stepper-progress/stepper-progress.d.ts +1 -1
  522. package/dist/components/stepper-progress/stepper-progress.d.ts.map +1 -1
  523. package/dist/components/streaming-text/streaming-text.d.ts.map +1 -1
  524. package/dist/components/suggestion-chip/index.js +1 -1
  525. package/dist/components/suggestion-chip/suggestion-chip.agent.d.ts.map +1 -1
  526. package/dist/components/suggestion-chip/suggestion-chip.d.ts.map +1 -1
  527. package/dist/components/switch/index.js +1 -1
  528. package/dist/components/switch/switch.d.ts.map +1 -1
  529. package/dist/components/tabs/index.d.ts +1 -1
  530. package/dist/components/tabs/index.d.ts.map +1 -1
  531. package/dist/components/tabs/index.js +1 -1
  532. package/dist/components/tabs/tabs.d.ts.map +1 -1
  533. package/dist/components/tag/index.js +1 -1
  534. package/dist/components/tag/tag.d.ts.map +1 -1
  535. package/dist/components/task-card/index.js +1 -1
  536. package/dist/components/task-card/task-card.d.ts.map +1 -1
  537. package/dist/components/task-tray/index.js +1 -1
  538. package/dist/components/task-tray/task-tray.agent.d.ts.map +1 -1
  539. package/dist/components/task-tray/task-tray.d.ts +1 -1
  540. package/dist/components/task-tray/task-tray.d.ts.map +1 -1
  541. package/dist/components/text-area/index.js +1 -1
  542. package/dist/components/text-area/text-area.d.ts.map +1 -1
  543. package/dist/components/text-input/index.js +1 -1
  544. package/dist/components/text-input/text-input.d.ts.map +1 -1
  545. package/dist/components/theme-root/index.js +1 -1
  546. package/dist/components/theme-root/theme-root.d.ts.map +1 -1
  547. package/dist/components/theme-toggle/index.js +1 -1
  548. package/dist/components/theme-toggle/theme-toggle.d.ts +1 -1
  549. package/dist/components/theme-toggle/theme-toggle.d.ts.map +1 -1
  550. package/dist/components/time-picker/index.js +1 -1
  551. package/dist/components/time-picker/time-picker.agent.d.ts.map +1 -1
  552. package/dist/components/time-picker/time-picker.d.ts +1 -1
  553. package/dist/components/time-picker/time-picker.d.ts.map +1 -1
  554. package/dist/components/timeline/index.js +1 -1
  555. package/dist/components/timeline/timeline.agent.d.ts.map +1 -1
  556. package/dist/components/timeline/timeline.d.ts +1 -1
  557. package/dist/components/timeline/timeline.d.ts.map +1 -1
  558. package/dist/components/timestamp/timestamp.d.ts.map +1 -1
  559. package/dist/components/toast/index.js +1 -1
  560. package/dist/components/toast/toast.agent.d.ts.map +1 -1
  561. package/dist/components/toast/toast.d.ts.map +1 -1
  562. package/dist/components/tooth-scheme/index.js +1 -1
  563. package/dist/components/tooth-scheme/tooth-data.d.ts.map +1 -1
  564. package/dist/components/tooth-scheme/tooth-scheme.agent.d.ts.map +1 -1
  565. package/dist/components/tooth-scheme/tooth-scheme.d.ts +1 -1
  566. package/dist/components/tooth-scheme/tooth-scheme.d.ts.map +1 -1
  567. package/dist/components/transcript-panel/index.js +1 -1
  568. package/dist/components/transcript-panel/transcript-panel.agent.d.ts.map +1 -1
  569. package/dist/components/transcript-panel/transcript-panel.d.ts +1 -1
  570. package/dist/components/transcript-panel/transcript-panel.d.ts.map +1 -1
  571. package/dist/components/typing-indicator/index.js +1 -1
  572. package/dist/components/typing-indicator/typing-indicator.d.ts.map +1 -1
  573. package/dist/components/visually-hidden/index.js +1 -1
  574. package/dist/components/visually-hidden/visually-hidden.d.ts.map +1 -1
  575. package/dist/components/warning-stack/index.js +1 -1
  576. package/dist/components/warning-stack/warning-stack.d.ts.map +1 -1
  577. package/dist/components/workflow/index.js +1 -1
  578. package/dist/components/workflow/workflow-card.d.ts.map +1 -1
  579. package/dist/components/workflow/workflow-editor.d.ts +1 -1
  580. package/dist/components/workflow/workflow-editor.d.ts.map +1 -1
  581. package/dist/components/workflow/workflow-map.d.ts.map +1 -1
  582. package/dist/components/workflow/workflow-types.d.ts.map +1 -1
  583. package/dist/components/workflow/workflow.agent.d.ts.map +1 -1
  584. package/dist/hooks/index.js +1 -1
  585. package/dist/hooks/use-prefers-reduced-motion.d.ts.map +1 -1
  586. package/dist/hooks/use-theme.d.ts.map +1 -1
  587. package/dist/i18n/config.d.ts.map +1 -1
  588. package/dist/i18n/config.js.map +1 -1
  589. package/dist/i18n/resources.d.ts.map +1 -1
  590. package/dist/index.js +392 -402
  591. package/dist/index.js.map +1 -1
  592. package/dist/patterns/leo-assistant/index.js +1 -1
  593. package/dist/patterns/leo-assistant/leo-chat-surface.d.ts.map +1 -1
  594. package/dist/patterns/leo-assistant/leo-sidebar.d.ts.map +1 -1
  595. package/dist/patterns/patient-shell/index.js +1 -1
  596. package/dist/patterns/patient-shell/patient-shell.d.ts.map +1 -1
  597. package/dist/safe-html/index.js +20 -3
  598. package/dist/safe-html/index.js.map +1 -1
  599. package/dist/tokens/apexcharts-theme.d.ts.map +1 -1
  600. package/dist/tokens.css +2 -2
  601. package/package.json +12 -2
  602. package/dist/_chunks/accordion-BEnrZmAn.js +0 -120
  603. package/dist/_chunks/accordion-BEnrZmAn.js.map +0 -1
  604. package/dist/_chunks/accordion.agent-BTjeO1Sx.js +0 -52
  605. package/dist/_chunks/accordion.agent-BTjeO1Sx.js.map +0 -1
  606. package/dist/_chunks/agenda-card-DwLIxgi7.js.map +0 -1
  607. package/dist/_chunks/agenda-tray-DUvengGQ.js.map +0 -1
  608. package/dist/_chunks/ai-prompt-input.agent-0NHYLTWD.js.map +0 -1
  609. package/dist/_chunks/alert-BlOUMkXj.js.map +0 -1
  610. package/dist/_chunks/app-frame-6d7Lu4ea.js.map +0 -1
  611. package/dist/_chunks/audio-recorder.agent--VKeykUp.js.map +0 -1
  612. package/dist/_chunks/audio-visualiser-CeMPCZkd.js.map +0 -1
  613. package/dist/_chunks/autocomplete.agent-Dh7KioS6.js +0 -432
  614. package/dist/_chunks/autocomplete.agent-Dh7KioS6.js.map +0 -1
  615. package/dist/_chunks/badge-mrstWxve.js.map +0 -1
  616. package/dist/_chunks/balance-cell-renderer-5CA7zpAi.js.map +0 -1
  617. package/dist/_chunks/breadcrumb.agent-GM2hAKFX.js.map +0 -1
  618. package/dist/_chunks/button-7mLWcMp_.js.map +0 -1
  619. package/dist/_chunks/calendar-nGEgelJs.js.map +0 -1
  620. package/dist/_chunks/card-BEy58ZKp.js.map +0 -1
  621. package/dist/_chunks/chart.agent-_pRYS17d.js.map +0 -1
  622. package/dist/_chunks/chat-container-Dl0Kfy5a.js +0 -175
  623. package/dist/_chunks/chat-container-Dl0Kfy5a.js.map +0 -1
  624. package/dist/_chunks/chat-container.agent-CM4WModE.js +0 -27
  625. package/dist/_chunks/chat-container.agent-CM4WModE.js.map +0 -1
  626. package/dist/_chunks/chat-input-C_tMQv92.js +0 -252
  627. package/dist/_chunks/chat-input-C_tMQv92.js.map +0 -1
  628. package/dist/_chunks/chat-input.agent-Bsz3ckGa.js +0 -69
  629. package/dist/_chunks/chat-input.agent-Bsz3ckGa.js.map +0 -1
  630. package/dist/_chunks/chat-message-ByouZpPP.js.map +0 -1
  631. package/dist/_chunks/collapsible.agent-DkS1jVyn.js.map +0 -1
  632. package/dist/_chunks/color-picker-94qcBZqZ.js.map +0 -1
  633. package/dist/_chunks/combobox.agent-CAvUkkIe.js +0 -410
  634. package/dist/_chunks/combobox.agent-CAvUkkIe.js.map +0 -1
  635. package/dist/_chunks/command-palette.agent-HatEt_EM.js +0 -391
  636. package/dist/_chunks/command-palette.agent-HatEt_EM.js.map +0 -1
  637. package/dist/_chunks/date-range-picker-B2hGsffw.js.map +0 -1
  638. package/dist/_chunks/date-time-picker-Bzt0S8yO.js.map +0 -1
  639. package/dist/_chunks/description-list-DvJbp6Yg.js.map +0 -1
  640. package/dist/_chunks/dialog.agent-Daf1TTko.js +0 -179
  641. package/dist/_chunks/dialog.agent-Daf1TTko.js.map +0 -1
  642. package/dist/_chunks/dropdown-menu-C7AZipNz.js +0 -219
  643. package/dist/_chunks/dropdown-menu-C7AZipNz.js.map +0 -1
  644. package/dist/_chunks/dropdown-menu.agent-BcxIKOjK.js +0 -43
  645. package/dist/_chunks/dropdown-menu.agent-BcxIKOjK.js.map +0 -1
  646. package/dist/_chunks/empty-state-DQPtRp2b.js.map +0 -1
  647. package/dist/_chunks/file-upload.agent-DJaH2dHg.js +0 -681
  648. package/dist/_chunks/file-upload.agent-DJaH2dHg.js.map +0 -1
  649. package/dist/_chunks/floating-action-button-Cnw-f6AG.js.map +0 -1
  650. package/dist/_chunks/form-field-BfsPLTSc.js.map +0 -1
  651. package/dist/_chunks/form-field-context-94LwgYTQ.js.map +0 -1
  652. package/dist/_chunks/freemium-paywall.agent-_nQqLyRF.js.map +0 -1
  653. package/dist/_chunks/header-BGn1mRp8.js.map +0 -1
  654. package/dist/_chunks/icon-button-Wnnde5lc.js.map +0 -1
  655. package/dist/_chunks/kbd-8baVw3KU.js.map +0 -1
  656. package/dist/_chunks/key-value-pair-JRFS9Xrh.js.map +0 -1
  657. package/dist/_chunks/leo-sidebar-BwINPdix.js.map +0 -1
  658. package/dist/_chunks/link-QheANk74.js.map +0 -1
  659. package/dist/_chunks/list.agent-D0iWt4VI.js +0 -420
  660. package/dist/_chunks/list.agent-D0iWt4VI.js.map +0 -1
  661. package/dist/_chunks/logo-BpFoCL-s.js.map +0 -1
  662. package/dist/_chunks/matrix-rain-BEkvux64.js.map +0 -1
  663. package/dist/_chunks/message-card-qhoGv947.js.map +0 -1
  664. package/dist/_chunks/message-tray-xHUCra-Y.js.map +0 -1
  665. package/dist/_chunks/multi-select.agent-Do6CeQUT.js.map +0 -1
  666. package/dist/_chunks/navigation-menu.agent-D69ND6Qq.js.map +0 -1
  667. package/dist/_chunks/notification-card-CsVEYJE-.js.map +0 -1
  668. package/dist/_chunks/notification-tray-DTXMq42J.js.map +0 -1
  669. package/dist/_chunks/number-input-fvGmnRy9.js.map +0 -1
  670. package/dist/_chunks/otp-input-EglXOUue.js.map +0 -1
  671. package/dist/_chunks/pagination.agent-BkZQl45y.js.map +0 -1
  672. package/dist/_chunks/password-input-D6kuYXmr.js.map +0 -1
  673. package/dist/_chunks/payment-form-BWaXas8z.js.map +0 -1
  674. package/dist/_chunks/payment-form.agent-kuIfodCj.js +0 -31
  675. package/dist/_chunks/payment-form.agent-kuIfodCj.js.map +0 -1
  676. package/dist/_chunks/pdf-viewer.agent-BaGEDheA.js.map +0 -1
  677. package/dist/_chunks/phone-input-C8Op4sEc.js.map +0 -1
  678. package/dist/_chunks/popover-kFN8s84V.js +0 -229
  679. package/dist/_chunks/popover-kFN8s84V.js.map +0 -1
  680. package/dist/_chunks/popover.agent-K_d1cfbj.js +0 -39
  681. package/dist/_chunks/popover.agent-K_d1cfbj.js.map +0 -1
  682. package/dist/_chunks/privacy-lock.agent-C1i1-T58.js.map +0 -1
  683. package/dist/_chunks/progress-wNsqkw8I.js +0 -253
  684. package/dist/_chunks/progress-wNsqkw8I.js.map +0 -1
  685. package/dist/_chunks/progress.agent-C68rDOXL.js +0 -27
  686. package/dist/_chunks/progress.agent-C68rDOXL.js.map +0 -1
  687. package/dist/_chunks/recaptcha-widget.agent-BGHpU5zD.js.map +0 -1
  688. package/dist/_chunks/resizable.agent-CMwZzvsi.js +0 -456
  689. package/dist/_chunks/resizable.agent-CMwZzvsi.js.map +0 -1
  690. package/dist/_chunks/rich-text-editor.agent-DnE125Tz.js.map +0 -1
  691. package/dist/_chunks/scroll-area-DLr5w9Dd.js.map +0 -1
  692. package/dist/_chunks/search-bar.agent-DxFAxctc.js.map +0 -1
  693. package/dist/_chunks/search-input-Xw3cdWXW.js.map +0 -1
  694. package/dist/_chunks/select-DY1Cb2Tg.js.map +0 -1
  695. package/dist/_chunks/separator-B4wXDLNC.js.map +0 -1
  696. package/dist/_chunks/sheet-B9kH9pcI.js.map +0 -1
  697. package/dist/_chunks/sheet.agent-QAyTOxgk.js +0 -46
  698. package/dist/_chunks/sheet.agent-QAyTOxgk.js.map +0 -1
  699. package/dist/_chunks/sidebar-CHF5xr_P.js.map +0 -1
  700. package/dist/_chunks/sidebar.agent-C9TM_ZDZ.js +0 -49
  701. package/dist/_chunks/sidebar.agent-C9TM_ZDZ.js.map +0 -1
  702. package/dist/_chunks/sign-in-with-alfadocs-button-BN_FPGHT.js.map +0 -1
  703. package/dist/_chunks/signature-capture.agent-BpeDwFht.js.map +0 -1
  704. package/dist/_chunks/skeleton-dtqyF09N.js.map +0 -1
  705. package/dist/_chunks/slider-CcsQTZTA.js.map +0 -1
  706. package/dist/_chunks/slot-grid-D_l5VsHG.js.map +0 -1
  707. package/dist/_chunks/sparkline.agent-56Sj7nOP.js.map +0 -1
  708. package/dist/_chunks/spinner-GCcv67vh.js.map +0 -1
  709. package/dist/_chunks/stat-DUB6g90R.js.map +0 -1
  710. package/dist/_chunks/stepper-calendar.agent-9iT3ClIB.js.map +0 -1
  711. package/dist/_chunks/stepper-progress-Bmen-YXB.js +0 -149
  712. package/dist/_chunks/stepper-progress-Bmen-YXB.js.map +0 -1
  713. package/dist/_chunks/stepper-progress.agent-q9InWca4.js +0 -61
  714. package/dist/_chunks/stepper-progress.agent-q9InWca4.js.map +0 -1
  715. package/dist/_chunks/suggestion-chip-DhFrkRPj.js.map +0 -1
  716. package/dist/_chunks/switch-BYEH8I53.js.map +0 -1
  717. package/dist/_chunks/tabs.agent-h7NvsTR1.js.map +0 -1
  718. package/dist/_chunks/tag-BqidXKo3.js.map +0 -1
  719. package/dist/_chunks/task-card-CY5ztNkU.js.map +0 -1
  720. package/dist/_chunks/task-tray-CCoUdorl.js.map +0 -1
  721. package/dist/_chunks/text-area-C_M8wliK.js.map +0 -1
  722. package/dist/_chunks/text-input-BX39e6T6.js.map +0 -1
  723. package/dist/_chunks/theme-toggle.agent-btmXTWdW.js.map +0 -1
  724. package/dist/_chunks/time-picker-B8AMIrX7.js.map +0 -1
  725. package/dist/_chunks/timeline.agent-CRPza9wc.js.map +0 -1
  726. package/dist/_chunks/tooth-scheme.agent-CWrQBjJM.js.map +0 -1
  727. package/dist/_chunks/transcript-panel.agent-BXEYP6w-.js.map +0 -1
  728. package/dist/_chunks/typing-indicator-CbUBf-Dx.js.map +0 -1
  729. package/dist/_chunks/use-theme-BMUhembX.js.map +0 -1
  730. package/dist/_chunks/warning-stack-8Pa3pekh.js.map +0 -1
  731. package/dist/_chunks/workflow-map-D2A7rTEG.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"card-BEy58ZKp.js","sources":["../../src/components/card/card.tsx"],"sourcesContent":["import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useId,\n useState,\n type HTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n} from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\n/* ------------------------------------------------------------------ */\n/* Context */\n/* ------------------------------------------------------------------ */\n\ninterface CardContextValue {\n headerId: string;\n interactive: boolean;\n registerHeader: () => void;\n}\n\nconst CardContext = createContext<CardContextValue>({\n headerId: '',\n interactive: false,\n registerHeader: () => {},\n});\n\n/* ------------------------------------------------------------------ */\n/* Variants */\n/* ------------------------------------------------------------------ */\n\nconst cardVariants = cva(\n [\n 'ds:rounded-[var(--radius-lg)] ds:text-[var(--card-foreground)]',\n 'ds:overflow-hidden',\n 'ds:flex ds:flex-col',\n ].join(' '),\n {\n variants: {\n variant: {\n default: 'ds:bg-[var(--card)] ds:border ds:border-[color:var(--card-border)]',\n outlined: 'ds:bg-[var(--card)] ds:border ds:border-[color:var(--border)]',\n elevated: 'ds:bg-[var(--card)] ds:shadow-[var(--shadow-card)]',\n },\n interactive: {\n true: [\n 'ds:cursor-pointer',\n 'ds:transition-shadow ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:hover:shadow-[var(--shadow-hover)]',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:min-h-[var(--min-target-size)]',\n ].join(' '),\n false: '',\n },\n // `stretch: true` fills the parent layout cell (grid / flex) so a\n // row of Cards ends up with matching heights. Combined with the\n // `flex-1` on `Card.Body`, the footer naturally pins to the bottom.\n stretch: {\n true: 'ds:h-full ds:self-stretch',\n false: '',\n },\n },\n defaultVariants: {\n variant: 'default',\n interactive: false,\n stretch: false,\n },\n },\n);\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\nexport interface CardProps\n extends Omit<HTMLAttributes<HTMLElement>, 'role'>,\n VariantProps<typeof cardVariants> {\n variant?: 'default' | 'outlined' | 'elevated';\n interactive?: boolean;\n /**\n * Stretch the Card to fill its parent layout cell. Use on every Card in\n * a dashboard row so siblings end up with matching heights, and the\n * `Card.Body` + `Card.Footer` flex naturally pin the footer to the\n * bottom. Grid cells already `align-items: stretch` by default, but an\n * explicit `h-full` keeps the behaviour robust under flex parents too.\n */\n stretch?: boolean;\n asChild?: boolean;\n children: ReactNode;\n}\n\n/* ------------------------------------------------------------------ */\n/* Root */\n/* ------------------------------------------------------------------ */\n\nconst CardRoot = forwardRef<HTMLElement, CardProps>(\n (\n {\n variant = 'default',\n interactive = false,\n stretch = false,\n asChild = false,\n className,\n children,\n onClick,\n onKeyDown,\n ...props\n },\n ref,\n ) => {\n const headerId = useId();\n const [hasHeader, setHasHeader] = useState(false);\n const registerHeader = useCallback(() => setHasHeader(true), []);\n\n const handleKeyDown = (e: KeyboardEvent<HTMLElement>) => {\n if (interactive && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n (e.currentTarget as HTMLElement).click();\n }\n onKeyDown?.(e);\n };\n\n // When asChild=true the consumer provides its own element (<a>, <button>)\n // which already carries the correct role and tabIndex — don't override them.\n const interactiveProps = interactive\n ? {\n ...(asChild ? {} : { role: 'button' as const, tabIndex: 0 }),\n onKeyDown: handleKeyDown,\n onClick,\n }\n : { onClick };\n\n const Comp = asChild ? Slot : 'article';\n\n return (\n <CardContext.Provider value={{ headerId, interactive: interactive ?? false, registerHeader }}>\n <Comp\n ref={ref as React.Ref<HTMLElement>}\n aria-labelledby={hasHeader ? headerId : undefined}\n data-component=\"card\"\n className={cardVariants({\n variant,\n interactive: interactive ?? false,\n stretch: stretch ?? false,\n className,\n })}\n {...interactiveProps}\n {...props}\n >\n {children}\n </Comp>\n </CardContext.Provider>\n );\n },\n);\nCardRoot.displayName = 'Card';\n\n/* ------------------------------------------------------------------ */\n/* Header */\n/* ------------------------------------------------------------------ */\n\nconst CardHeader = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => {\n const { headerId, registerHeader } = useContext(CardContext);\n\n // Notify root that a header is present so aria-labelledby is applied.\n const callbackRef = useCallback(\n (node: HTMLDivElement | null) => {\n if (node) registerHeader();\n if (typeof ref === 'function') ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n },\n [ref, registerHeader],\n );\n\n return (\n <div\n ref={callbackRef}\n id={headerId}\n className={[\n 'ds:flex ds:flex-col ds:gap-[var(--spacing-xs)] ds:p-[var(--spacing-md)] ds:pb-0',\n 'ds:[&_*]:break-normal ds:[&_*]:[overflow-wrap:anywhere]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n );\n },\n);\nCardHeader.displayName = 'Card.Header';\n\n/* ------------------------------------------------------------------ */\n/* Media */\n/* ------------------------------------------------------------------ */\n\nconst CardMedia = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={[\n 'ds:overflow-hidden ds:[&_img]:w-full ds:[&_img]:h-auto ds:[&_img]:[object-fit:cover] ds:[&_video]:w-full',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n ),\n);\nCardMedia.displayName = 'Card.Media';\n\n/* ------------------------------------------------------------------ */\n/* Body */\n/* ------------------------------------------------------------------ */\n\nconst CardBody = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={['ds:p-[var(--spacing-md)] ds:flex-1 ds:text-start', className]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n ),\n);\nCardBody.displayName = 'Card.Body';\n\n/* ------------------------------------------------------------------ */\n/* Footer */\n/* ------------------------------------------------------------------ */\n\nconst CardFooter = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={[\n 'ds:flex ds:items-center ds:gap-[var(--spacing-sm)] ds:p-[var(--spacing-md)] ds:pt-0',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n ),\n);\nCardFooter.displayName = 'Card.Footer';\n\n/* ------------------------------------------------------------------ */\n/* Compound export */\n/* ------------------------------------------------------------------ */\n\nexport const Card = Object.assign(CardRoot, {\n Header: CardHeader,\n Media: CardMedia,\n Body: CardBody,\n Footer: CardFooter,\n});\n\nexport type { VariantProps as CardVariantProps };\n"],"names":["CardContext","createContext","cardVariants","cva","CardRoot","forwardRef","variant","interactive","stretch","asChild","className","children","onClick","onKeyDown","props","ref","headerId","useId","hasHeader","setHasHeader","useState","registerHeader","useCallback","interactiveProps","e","Comp","Slot","jsx","CardHeader","useContext","callbackRef","node","CardMedia","CardBody","CardFooter","Card"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"chart.agent-_pRYS17d.js","sources":["../../src/components/chart/chart.tsx","../../src/components/chart/chart.agent.ts"],"sourcesContent":["/* ------------------------------------------------------------------ */\n/* Chart — thin, typed wrapper over ApexCharts (react-apexcharts). */\n/* */\n/* - All chrome, colours, and fonts flow from */\n/* `src/tokens/apexcharts-theme.ts` — never hex literals in user */\n/* code. A MutationObserver on `<html class>` re-reads the bridge so */\n/* theme changes repaint without remount. */\n/* - A ResizeObserver on the wrapper keeps the chart responsive */\n/* without listening on `window.resize`. */\n/* - Accessibility: the wrapper carries `role=\"img\"` + `aria-label` */\n/* (required `title` prop) + `aria-describedby` pointing at a */\n/* visually-hidden `<table>` that mirrors series × categories. */\n/* - Colour-blind users: `patterns` prop flips `fill.type` to pattern */\n/* using ApexCharts' built-in pattern presets. */\n/* - Numbers format via `Intl.NumberFormat(locale)` — no hand-rolled */\n/* `toFixed()`. */\n/* ------------------------------------------------------------------ */\n\nimport {\n forwardRef,\n useEffect,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport ReactApexChart from 'react-apexcharts';\nimport ApexCharts from 'apexcharts';\nimport { getApexChartsTheme } from '../../tokens/apexcharts-theme';\nimport { usePrefersReducedMotion } from '../../hooks';\nimport { useNeutraliseHiddenFocus } from '../_shared/use-neutralize-hidden-focus';\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst chartVariants = cva('ds:relative ds:block ds:w-full', {\n variants: {\n density: {\n compact: 'ds:min-h-[var(--chart-min-height-compact)]',\n comfortable: 'ds:min-h-[var(--chart-min-height-comfortable)]',\n },\n },\n defaultVariants: { density: 'comfortable' },\n});\n\n/* ------------------------------------------------------------------ */\n/* Public types */\n/* ------------------------------------------------------------------ */\n\nexport type ChartType = 'line' | 'bar' | 'pie' | 'donut' | 'area' | 'radialBar';\n\nexport interface ChartSeries {\n name: string;\n data: number[];\n}\n\nexport interface ChartProps extends VariantProps<typeof chartVariants> {\n /** Required — drives aria-label and sr-only table caption. */\n title: string;\n /** Opaque instance id — emitted as `data-component-id` for the agent registry. */\n id?: string;\n /** Chart visual type. */\n type: ChartType;\n /**\n * For `line` / `bar` / `area`: an array of `ChartSeries`.\n * For `pie` / `donut` / `radialBar`: an array of numbers matched to `labels`.\n */\n series: ChartSeries[] | number[];\n /** Category axis labels (line / bar / area). */\n categories?: string[];\n /** Slice labels (pie / donut / radialBar). */\n labels?: string[];\n /** Height override. Defaults to 320px. */\n height?: number | string;\n /** Width override. Defaults to 100% of container. */\n width?: number | string;\n /** Opt-in pattern fills for colour-blind users. */\n patterns?: boolean;\n /** Show the ApexCharts toolbar. Defaults to false. */\n toolbar?: boolean;\n /** Locale override — defaults to the active i18next language. */\n locale?: string;\n /** Extra class names on the wrapper. */\n className?: string;\n}\n\nexport interface ChartHandle {\n /** Returns a PNG data URI for the chart. */\n dataURI: () => Promise<string>;\n /** Updates series without remounting. */\n updateSeries: (next: ChartProps['series']) => void;\n}\n\n/* ------------------------------------------------------------------ */\n/* Constants */\n/* ------------------------------------------------------------------ */\n\nconst PATTERN_STYLES = [\n 'verticalLines',\n 'horizontalLines',\n 'slantedLines',\n 'squares',\n 'circles',\n] as const;\n\n/** Types where `categories` belong on an x-axis. */\nconst CATEGORICAL_TYPES: ReadonlyArray<ChartType> = ['line', 'bar', 'area'];\n\n/** Types where `series` is a flat `number[]` paired with `labels`. */\nconst SLICE_TYPES: ReadonlyArray<ChartType> = ['pie', 'donut', 'radialBar'];\n\n/* ------------------------------------------------------------------ */\n/* Helpers */\n/* ------------------------------------------------------------------ */\n\nfunction isSliceType(type: ChartType): boolean {\n return SLICE_TYPES.includes(type);\n}\n\nfunction isCategoricalType(type: ChartType): boolean {\n return CATEGORICAL_TYPES.includes(type);\n}\n\n/** Coerce `series` into `ChartSeries[]` for shared logic (table, aria). */\nfunction normaliseSeries(\n series: ChartSeries[] | number[],\n type: ChartType,\n): ChartSeries[] {\n if (isSliceType(type)) {\n const nums = series as number[];\n return [\n {\n name: '',\n data: nums,\n },\n ];\n }\n return series as ChartSeries[];\n}\n\n/* ------------------------------------------------------------------ */\n/* Chart component */\n/* ------------------------------------------------------------------ */\n\nexport const Chart = forwardRef<ChartHandle, ChartProps>(\n (\n {\n title,\n id,\n type,\n series,\n categories,\n labels,\n height,\n width,\n patterns = false,\n toolbar = false,\n locale: localeProp,\n density,\n className,\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n const rawId = useId();\n const chartId = useMemo(\n () => `chart-${rawId.replace(/[^a-zA-Z0-9-_]/g, '')}`,\n [rawId],\n );\n const summaryId = `${chartId}-summary`;\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n const [containerWidth, setContainerWidth] = useState(0);\n\n /* ApexCharts injects focusable canvases inside the `aria-hidden` */\n /* chart wrapper. Neutralise their tabindex so axe's */\n /* `aria-hidden-focus` rule passes. Same hook used in Sparkline. */\n useNeutraliseHiddenFocus(wrapperRef);\n\n const locale = localeProp ?? i18n.language ?? 'en';\n\n /* ---- dev warning if title missing ------------------------------ */\n if (import.meta.env.DEV && !title) {\n // eslint-disable-next-line no-console\n console.warn(\n 'Chart: `title` prop is required. It drives aria-label and the screen-reader summary table.',\n );\n }\n\n /* ---- theme-reactive state -------------------------------------- */\n const [themeOptions, setThemeOptions] = useState<ApexCharts.ApexOptions>(() => {\n try {\n return getApexChartsTheme();\n } catch {\n return {};\n }\n });\n\n /* ---- MutationObserver: re-read theme on class change ------------ */\n useEffect(() => {\n if (typeof document === 'undefined') return undefined;\n let timer: ReturnType<typeof setTimeout>;\n const observer = new MutationObserver(() => {\n clearTimeout(timer);\n timer = setTimeout(() => {\n try {\n setThemeOptions(getApexChartsTheme());\n } catch {\n /* no-op in non-browser environments */\n }\n }, 50);\n });\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['class'],\n });\n return () => {\n clearTimeout(timer);\n observer.disconnect();\n };\n }, []);\n\n /* ---- ResizeObserver: track container width --------------------- */\n useEffect(() => {\n const el = wrapperRef.current;\n if (!el || typeof ResizeObserver === 'undefined') return undefined;\n const ro = new ResizeObserver((entries) => {\n const entry = entries[0];\n if (entry) setContainerWidth(Math.floor(entry.contentRect.width));\n });\n ro.observe(el);\n return () => ro.disconnect();\n }, []);\n\n /* ---- imperative handle ----------------------------------------- */\n useImperativeHandle(ref, () => ({\n async dataURI(): Promise<string> {\n const instance = ApexCharts.getChartByID(chartId);\n if (!instance) return '';\n const result = await instance.dataURI();\n return (result as { imgURI: string }).imgURI;\n },\n updateSeries(next) {\n const instance = ApexCharts.getChartByID(chartId);\n if (!instance) return;\n if (isSliceType(type)) {\n instance.updateSeries(next as number[]);\n } else {\n instance.updateSeries(next as ChartSeries[]);\n }\n },\n }));\n\n /* ---- RTL detection --------------------------------------------- */\n const isRtl =\n typeof document !== 'undefined' && document.documentElement.dir === 'rtl';\n\n /* ---- normalised series for sr-only table ----------------------- */\n const tableSeries = useMemo(\n () => normaliseSeries(series, type),\n [series, type],\n );\n\n /* ---- Intl formatter -------------------------------------------- */\n const numberFormatter = useMemo(\n () => new Intl.NumberFormat(locale),\n [locale],\n );\n\n /* ---- toolbar localisation -------------------------------------- */\n const toolbarLocale = useMemo(\n () => ({\n name: locale,\n options: {\n toolbar: {\n download: t('chart.toolbar.download'),\n selection: t('chart.toolbar.selection'),\n selectionZoom: t('chart.toolbar.selectionZoom'),\n zoomIn: t('chart.toolbar.zoomIn'),\n zoomOut: t('chart.toolbar.zoomOut'),\n pan: t('chart.toolbar.pan'),\n reset: t('chart.toolbar.reset'),\n exportToSVG: t('chart.toolbar.exportToSVG'),\n exportToPNG: t('chart.toolbar.exportToPNG'),\n exportToCSV: t('chart.toolbar.exportToCSV'),\n },\n },\n }),\n [locale, t],\n );\n\n /* ---- build ApexOptions ----------------------------------------- */\n const reducedMotion = usePrefersReducedMotion();\n\n const chartOptions: ApexCharts.ApexOptions = useMemo(() => {\n const base = themeOptions;\n\n const options: ApexCharts.ApexOptions = {\n ...base,\n chart: {\n ...base.chart,\n id: chartId,\n toolbar: { show: toolbar },\n zoom: { enabled: toolbar },\n animations: {\n enabled: !reducedMotion,\n dynamicAnimation: { enabled: !reducedMotion },\n },\n locales: [toolbarLocale],\n defaultLocale: locale,\n parentHeightOffset: 0,\n },\n labels: labels,\n legend: {\n ...base.legend,\n position: 'bottom',\n // ApexCharts legend.horizontalAlign is a physical prop mapped internally\n // to the chart's own text flow. For RTL we flip via `yaxis.opposite`\n // and ApexCharts' own `direction: 'rtl'` handling; legend stays anchored\n // to the inline-start by asking for 'left' on LTR and 'right' on RTL.\n horizontalAlign: isRtl ? 'right' : 'left',\n fontFamily: 'inherit',\n },\n tooltip: {\n ...base.tooltip,\n y: {\n formatter: (value: number) => numberFormatter.format(value),\n },\n },\n noData: {\n text: t('chart.noData'),\n },\n };\n\n if (isCategoricalType(type)) {\n options.xaxis = {\n ...base.xaxis,\n categories: categories ?? [],\n };\n options.yaxis = {\n ...base.yaxis,\n opposite: isRtl,\n labels: {\n formatter: (value: number) => numberFormatter.format(value),\n },\n };\n options.stroke = {\n curve: 'smooth',\n width: type === 'bar' ? 0 : 2,\n };\n options.dataLabels = { enabled: false };\n }\n\n if (patterns) {\n options.fill = {\n type: 'pattern',\n opacity: type === 'area' ? 0.3 : 1,\n pattern: {\n style: [...PATTERN_STYLES],\n strokeWidth: 2,\n },\n };\n } else if (type === 'area') {\n options.fill = {\n type: 'gradient',\n opacity: 0.3,\n };\n }\n\n return options;\n }, [\n themeOptions,\n chartId,\n toolbar,\n reducedMotion,\n toolbarLocale,\n locale,\n labels,\n numberFormatter,\n t,\n type,\n categories,\n isRtl,\n patterns,\n ]);\n\n /* ---- resolved dimensions --------------------------------------- */\n const resolvedWidth = width ?? (containerWidth > 0 ? containerWidth : '100%');\n const resolvedHeight = height ?? 320;\n\n /* ---- sr-only data table --------------------------------------- */\n const srTable = useMemo(() => {\n const columnLabels = isSliceType(type)\n ? (labels ?? [])\n : (categories ?? []);\n const rows = tableSeries;\n return (\n <table id={summaryId} className=\"ds:sr-only\">\n <caption>{title}</caption>\n <thead>\n <tr>\n <th scope=\"col\">{t('chart.table.series')}</th>\n {columnLabels.map((col, i) => (\n <th key={`${col}-${i}`} scope=\"col\">\n {col}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {rows.map((row, rowIndex) => (\n <tr key={`${row.name}-${rowIndex}`}>\n <th scope=\"row\">{row.name || t('chart.table.value')}</th>\n {row.data.map((value, colIndex) => (\n <td key={`${rowIndex}-${colIndex}`}>\n {numberFormatter.format(value)}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n );\n }, [type, tableSeries, labels, categories, summaryId, title, t, numberFormatter]);\n\n /* ---- ApexCharts `series` prop shape ----------------------------- */\n const apexSeries = useMemo(() => {\n if (isSliceType(type)) {\n return series as number[];\n }\n return series as ChartSeries[];\n }, [series, type]);\n\n return (\n <div\n ref={wrapperRef}\n role=\"img\"\n aria-label={title}\n aria-describedby={summaryId}\n className={chartVariants({ density, className })}\n data-component=\"chart\"\n data-component-id={id}\n >\n {srTable}\n <ReactApexChart\n type={type}\n series={apexSeries as ApexCharts.ApexOptions['series']}\n options={chartOptions}\n width={resolvedWidth}\n height={resolvedHeight}\n aria-hidden=\"true\"\n />\n </div>\n );\n },\n);\n\nChart.displayName = 'Chart';\n\n/* ------------------------------------------------------------------ */\n/* Re-export internal helper for downstream theming (kept narrow). */\n/* ------------------------------------------------------------------ */\n\nexport { chartVariants };\n","import type { AgentAdapter } from '../../agent/types';\nimport type { ChartHandle } from './chart';\n\nexport const chartAgent: AgentAdapter<ChartHandle> = {\n id: 'chart',\n capabilities: [],\n state: {},\n actions: {\n update_series: {\n safety: 'read',\n argsType: 'series',\n description: 'Replace the chart series without remounting.',\n invoke: (handle, args: { series: Parameters<ChartHandle['updateSeries']>[0] }) => {\n handle.updateSeries(args.series);\n },\n },\n export_png: {\n safety: 'read',\n description: 'Return a PNG data URI of the chart for export or screenshotting.',\n invoke: (handle) => handle.dataURI(),\n },\n },\n domHooks: {\n root: { attr: 'data-component', value: 'chart' },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n },\n};\n"],"names":["chartVariants","cva","PATTERN_STYLES","CATEGORICAL_TYPES","SLICE_TYPES","isSliceType","type","isCategoricalType","normaliseSeries","series","Chart","forwardRef","title","id","categories","labels","height","width","patterns","toolbar","localeProp","density","className","ref","t","i18n","useTranslation","rawId","useId","chartId","useMemo","summaryId","wrapperRef","useRef","containerWidth","setContainerWidth","useState","useNeutraliseHiddenFocus","locale","themeOptions","setThemeOptions","getApexChartsTheme","useEffect","timer","observer","el","ro","entries","entry","useImperativeHandle","instance","ApexCharts","next","isRtl","tableSeries","numberFormatter","toolbarLocale","reducedMotion","usePrefersReducedMotion","chartOptions","base","options","value","resolvedWidth","resolvedHeight","srTable","columnLabels","rows","jsx","jsxs","col","row","rowIndex","colIndex","apexSeries","ReactApexChart","chartAgent","handle","args"],"mappings":"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"}
@@ -1,175 +0,0 @@
1
- import { jsxs as c, jsx as t } from "react/jsx-runtime";
2
- import { forwardRef as R, useRef as h, useState as V, useCallback as L, useImperativeHandle as B, useEffect as C, useLayoutEffect as E } from "react";
3
- import { c as b } from "./index-D2ZczOXr.js";
4
- import { useTranslation as O } from "react-i18next";
5
- import { u as j } from "./index-CJE9uQmb.js";
6
- import { F as H } from "./floating-action-button-Cnw-f6AG.js";
7
- import { u as M } from "./use-prefers-reduced-motion-BMwIQRjB.js";
8
- import { C as S } from "./chevron-down-BX_NP2Yh.js";
9
- const $ = b(
10
- "ds:relative ds:flex ds:w-full ds:flex-col ds:overflow-hidden ds:bg-background",
11
- {
12
- variants: {
13
- density: {
14
- default: "ds:gap-[var(--spacing-md)]",
15
- compact: "ds:gap-[var(--spacing-sm)]"
16
- }
17
- },
18
- defaultVariants: { density: "default" }
19
- }
20
- ), D = b(
21
- [
22
- "ds:flex-1 ds:min-h-0 ds:overflow-y-auto ds:overflow-x-hidden",
23
- "ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)]",
24
- "ds:pt-[var(--spacing-md)] ds:pb-[var(--spacing-md)]",
25
- "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
26
- "ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
27
- "ds:scroll-smooth ds:motion-reduce:scroll-auto ds:[.theme-accessible_&]:scroll-auto",
28
- // Edge fade — content near the scroll boundaries fades into the
29
- // container surface instead of clipping abruptly against the header
30
- // or composer, so avatars / bubbles don't look "cut in half" as they
31
- // pass the viewport edge. Fade width matches the viewport padding so
32
- // a row can slide fully behind the mask before disappearing.
33
- // Disabled under HCM (mask strips content), reduced motion (less
34
- // decoration when motion is off), and the accessible theme.
35
- "ds:[mask-image:linear-gradient(to_bottom,transparent_0,black_var(--spacing-md),black_calc(100%-var(--spacing-md)),transparent_100%)]",
36
- "ds:motion-reduce:[mask-image:none]",
37
- "ds:[.theme-accessible_&]:[mask-image:none]",
38
- "ds:forced-colors:[mask-image:none]"
39
- ].join(" ")
40
- ), F = 100, K = 48, P = R(
41
- ({
42
- messages: a,
43
- composer: m,
44
- density: x = "default",
45
- className: w,
46
- id: N,
47
- onAutoScrollChange: o,
48
- showScrollToLatest: k = !1,
49
- ...I
50
- }, y) => {
51
- const { t: u } = O(), n = h(null), f = h(null), [d, T] = V(!0), p = M(), i = L(
52
- (s) => {
53
- const e = n.current;
54
- if (!e) return;
55
- const r = ((s == null ? void 0 : s.smooth) ?? !0) && !p;
56
- e.scrollTo({ top: e.scrollHeight, behavior: r ? "smooth" : "auto" });
57
- },
58
- [p]
59
- );
60
- B(
61
- y,
62
- () => ({
63
- scrollToBottom: i,
64
- getScrollViewport: () => n.current
65
- }),
66
- [i]
67
- ), C(() => {
68
- const s = n.current, e = f.current;
69
- if (!s || !e) return;
70
- const r = new IntersectionObserver(
71
- (z) => {
72
- const g = z[0];
73
- T(g.isIntersecting), o == null || o(g.isIntersecting);
74
- },
75
- {
76
- root: s,
77
- // Fire when the sentinel is within BOTTOM_SLACK_PX of being visible.
78
- rootMargin: `0px 0px ${K}px 0px`,
79
- threshold: 0
80
- }
81
- );
82
- return r.observe(e), () => r.disconnect();
83
- }, [o]);
84
- const _ = a.length;
85
- E(() => {
86
- d && i({ smooth: !1 });
87
- }, [_, d, i]);
88
- const v = a.length > F, l = j({
89
- count: v ? a.length : 0,
90
- getScrollElement: () => n.current,
91
- estimateSize: () => 80,
92
- overscan: 6,
93
- getItemKey: (s) => {
94
- var e;
95
- return ((e = a[s]) == null ? void 0 : e.id) ?? s;
96
- }
97
- });
98
- return /* @__PURE__ */ c("div", { className: $({ density: x, className: w }), "data-component": "chat-container", "data-component-id": N, ...I, children: [
99
- /* @__PURE__ */ c("div", { className: "ds:relative ds:flex-1 ds:min-h-0 ds:flex ds:flex-col", children: [
100
- /* @__PURE__ */ c(
101
- "div",
102
- {
103
- ref: n,
104
- role: "log",
105
- "aria-live": "polite",
106
- "aria-relevant": "additions",
107
- "aria-label": u("ui.chat.container"),
108
- tabIndex: 0,
109
- className: D(),
110
- children: [
111
- v ? /* @__PURE__ */ t(
112
- "ol",
113
- {
114
- className: "ds:relative ds:list-none ds:ps-0 ds:m-0",
115
- style: { blockSize: `${l.getTotalSize()}px` },
116
- children: l.getVirtualItems().map((s) => {
117
- const e = a[s.index];
118
- return e ? /* @__PURE__ */ t(
119
- "li",
120
- {
121
- "data-index": s.index,
122
- ref: l.measureElement,
123
- className: "ds:absolute ds:start-0 ds:end-0 ds:top-0 ds:w-full",
124
- style: { transform: `translateY(${s.start}px)` },
125
- children: /* @__PURE__ */ t("div", { className: "ds:pt-[var(--spacing-xs)] ds:pb-[var(--spacing-xs)]", children: e.node })
126
- },
127
- e.id
128
- ) : null;
129
- })
130
- }
131
- ) : /* @__PURE__ */ t("ol", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-sm)] ds:list-none ds:ps-0 ds:m-0", children: a.map((s) => /* @__PURE__ */ t("li", { children: s.node }, s.id)) }),
132
- /* @__PURE__ */ t("div", { ref: f, "aria-hidden": "true", className: "ds:h-1 ds:w-full" })
133
- ]
134
- }
135
- ),
136
- k && !d ? /* @__PURE__ */ t(
137
- "div",
138
- {
139
- className: [
140
- "ds:pointer-events-none ds:absolute ds:inset-inline-end-0",
141
- // `bottom` is measured from the bottom of the scroll
142
- // column (i.e. the top edge of the composer slot). A
143
- // small spacing-md gap keeps the FAB clear of the
144
- // divider border above the composer.
145
- "ds:bottom-[var(--spacing-md)] ds:pe-[var(--spacing-md)]",
146
- // Enter animation — fade + scale in from 95%. The FAB only
147
- // unmounts when the user returns to bottom, so an exit
148
- // animation isn't justified (abrupt disappearance reads as
149
- // "task complete" when they've scrolled back).
150
- "ds:motion-safe:animate-in ds:motion-safe:fade-in-0 ds:motion-safe:zoom-in-95",
151
- "ds:duration-[var(--animation-duration)] ds:ease-[var(--ease-out)]"
152
- ].join(" "),
153
- children: /* @__PURE__ */ t("div", { className: "ds:pointer-events-auto", children: /* @__PURE__ */ t(
154
- H,
155
- {
156
- icon: /* @__PURE__ */ t(S, {}),
157
- "aria-label": u("ui.chat.scrollToLatest"),
158
- size: "sm",
159
- variant: "secondary",
160
- position: "static",
161
- onClick: () => i({ smooth: !0 })
162
- }
163
- ) })
164
- }
165
- ) : null
166
- ] }),
167
- m ? /* @__PURE__ */ t("div", { className: "ds:shrink-0 ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)] ds:pt-[var(--spacing-sm)] ds:pb-[var(--spacing-sm)] ds:bg-background", children: m }) : null
168
- ] });
169
- }
170
- );
171
- P.displayName = "ChatContainer";
172
- export {
173
- P as C
174
- };
175
- //# sourceMappingURL=chat-container-Dl0Kfy5a.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chat-container-Dl0Kfy5a.js","sources":["../../src/components/chat-container/chat-container.tsx"],"sourcesContent":["import {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useRef,\n useState,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { ChevronDown } from 'lucide-react';\nimport { useVirtualizer } from '@tanstack/react-virtual';\nimport { FloatingActionButton } from '../floating-action-button/floating-action-button';\nimport { usePrefersReducedMotion } from '../../hooks';\n\nconst rootVariants = cva(\n 'ds:relative ds:flex ds:w-full ds:flex-col ds:overflow-hidden ds:bg-background',\n {\n variants: {\n density: {\n default: 'ds:gap-[var(--spacing-md)]',\n compact: 'ds:gap-[var(--spacing-sm)]',\n },\n },\n defaultVariants: { density: 'default' },\n },\n);\n\nconst scrollViewportVariants = cva(\n [\n 'ds:flex-1 ds:min-h-0 ds:overflow-y-auto ds:overflow-x-hidden',\n 'ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)]',\n 'ds:pt-[var(--spacing-md)] ds:pb-[var(--spacing-md)]',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:scroll-smooth ds:motion-reduce:scroll-auto ds:[.theme-accessible_&]:scroll-auto',\n // Edge fade — content near the scroll boundaries fades into the\n // container surface instead of clipping abruptly against the header\n // or composer, so avatars / bubbles don't look \"cut in half\" as they\n // pass the viewport edge. Fade width matches the viewport padding so\n // a row can slide fully behind the mask before disappearing.\n // Disabled under HCM (mask strips content), reduced motion (less\n // decoration when motion is off), and the accessible theme.\n 'ds:[mask-image:linear-gradient(to_bottom,transparent_0,black_var(--spacing-md),black_calc(100%-var(--spacing-md)),transparent_100%)]',\n 'ds:motion-reduce:[mask-image:none]',\n 'ds:[.theme-accessible_&]:[mask-image:none]',\n 'ds:forced-colors:[mask-image:none]',\n ].join(' '),\n);\n\nconst VIRTUALIZATION_THRESHOLD = 100;\n/** Pixel slack against the bottom edge that still counts as \"at bottom\". */\nconst BOTTOM_SLACK_PX = 48;\n\nexport interface ChatContainerHandle {\n scrollToBottom: (opts?: { smooth?: boolean }) => void;\n getScrollViewport: () => HTMLDivElement | null;\n}\n\nexport interface ChatContainerProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'id'>,\n VariantProps<typeof rootVariants> {\n /** Opaque instance id — emitted as `data-component-id` for the agent registry. */\n id?: string;\n /** Array of messages to render. When the array exceeds 100 items the\n * list is virtualised via @tanstack/react-virtual. */\n messages: Array<{ id: string; node: ReactNode }>;\n /** Composer slot pinned to the block-end. */\n composer?: ReactNode;\n /** Fires when the user's auto-scroll preference flips. */\n onAutoScrollChange?: (isAtBottom: boolean) => void;\n /**\n * When true, renders a \"scroll to latest\" FloatingActionButton in the\n * bottom-end of the scroll column whenever the user has scrolled\n * away from the newest message. Defaults to `false` because the\n * affordance is only useful in long-form chat surfaces (fullscreen\n * assistants, dedicated messaging views); in compact docks — e.g. the\n * Leo side-panel — conversations rarely exceed one screen and the FAB\n * just adds visual noise. Turn on for fullscreen chat surfaces.\n */\n showScrollToLatest?: boolean;\n}\n\nexport const ChatContainer = forwardRef<ChatContainerHandle, ChatContainerProps>(\n (\n {\n messages,\n composer,\n density = 'default',\n className,\n id,\n onAutoScrollChange,\n showScrollToLatest = false,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const viewportRef = useRef<HTMLDivElement | null>(null);\n const sentinelRef = useRef<HTMLDivElement | null>(null);\n const [isAtBottom, setIsAtBottom] = useState(true);\n\n const prefersReducedMotion = usePrefersReducedMotion();\n\n const scrollToBottom = useCallback(\n (opts?: { smooth?: boolean }) => {\n const el = viewportRef.current;\n if (!el) return;\n const smooth = (opts?.smooth ?? true) && !prefersReducedMotion;\n el.scrollTo({ top: el.scrollHeight, behavior: smooth ? 'smooth' : 'auto' });\n },\n [prefersReducedMotion],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n scrollToBottom,\n getScrollViewport: () => viewportRef.current,\n }),\n [scrollToBottom],\n );\n\n /* ── Intersection observer: track \"at bottom\" via a sentinel ── */\n useEffect(() => {\n const root = viewportRef.current;\n const sentinel = sentinelRef.current;\n if (!root || !sentinel) return;\n const observer = new IntersectionObserver(\n (entries) => {\n const entry = entries[0];\n setIsAtBottom(entry.isIntersecting);\n onAutoScrollChange?.(entry.isIntersecting);\n },\n {\n root,\n // Fire when the sentinel is within BOTTOM_SLACK_PX of being visible.\n rootMargin: `0px 0px ${BOTTOM_SLACK_PX}px 0px`,\n threshold: 0,\n },\n );\n observer.observe(sentinel);\n return () => observer.disconnect();\n }, [onAutoScrollChange]);\n\n /* ── Auto-scroll on new messages when at bottom ── */\n const messagesLength = messages.length;\n useLayoutEffect(() => {\n // `smooth: false` — when we're already pinned to the bottom and a\n // new message appends, the user doesn't perceive any scroll motion\n // (the sentinel just slides a few px). But a smooth animation DOES\n // give the IntersectionObserver a window in which the sentinel is\n // temporarily outside the rootMargin zone — that's what causes the\n // scroll-to-latest FAB to flicker in and out on every new message.\n // Instant scroll settles in one frame; FAB state stays stable.\n // The user-initiated FAB click below still uses smooth because the\n // jump is large and the motion communicates the travel.\n if (isAtBottom) scrollToBottom({ smooth: false });\n // Intentionally watching only length — individual node updates (streaming)\n // are driven by their own scroll decisions.\n }, [messagesLength, isAtBottom, scrollToBottom]);\n\n const virtualized = messages.length > VIRTUALIZATION_THRESHOLD;\n\n const virtualizer = useVirtualizer({\n count: virtualized ? messages.length : 0,\n getScrollElement: () => viewportRef.current,\n estimateSize: () => 80,\n overscan: 6,\n getItemKey: (i) => messages[i]?.id ?? i,\n });\n\n return (\n <div className={rootVariants({ density, className })} data-component=\"chat-container\" data-component-id={id} {...rest}>\n {/* Scroll column wraps the viewport AND the FAB together so the\n FAB's absolute `bottom` is measured from the top of the\n composer (this wrapper's end edge), not from the root — which\n would drop the FAB inside the composer/suggestion-chip area. */}\n <div className=\"ds:relative ds:flex-1 ds:min-h-0 ds:flex ds:flex-col\">\n <div\n ref={viewportRef}\n role=\"log\"\n aria-live=\"polite\"\n aria-relevant=\"additions\"\n aria-label={t('ui.chat.container')}\n tabIndex={0}\n className={scrollViewportVariants()}\n >\n {virtualized ? (\n <ol\n className=\"ds:relative ds:list-none ds:ps-0 ds:m-0\"\n // Inline style — permitted per 23-constraints\n // §Runtime-computed dimensions (virtualizer total size).\n style={{ blockSize: `${virtualizer.getTotalSize()}px` }}\n >\n {virtualizer.getVirtualItems().map((vi) => {\n const msg = messages[vi.index];\n if (!msg) return null;\n return (\n <li\n key={msg.id}\n data-index={vi.index}\n ref={virtualizer.measureElement}\n className=\"ds:absolute ds:start-0 ds:end-0 ds:top-0 ds:w-full\"\n // Inline style — permitted per 23-constraints\n // §Runtime-computed dimensions (virtualizer translateY).\n style={{ transform: `translateY(${vi.start}px)` }}\n >\n <div className=\"ds:pt-[var(--spacing-xs)] ds:pb-[var(--spacing-xs)]\">\n {msg.node}\n </div>\n </li>\n );\n })}\n </ol>\n ) : (\n <ol className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-sm)] ds:list-none ds:ps-0 ds:m-0\">\n {messages.map((m) => (\n <li key={m.id}>{m.node}</li>\n ))}\n </ol>\n )}\n <div ref={sentinelRef} aria-hidden=\"true\" className=\"ds:h-1 ds:w-full\" />\n </div>\n\n {showScrollToLatest && !isAtBottom ? (\n <div\n className={[\n 'ds:pointer-events-none ds:absolute ds:inset-inline-end-0',\n // `bottom` is measured from the bottom of the scroll\n // column (i.e. the top edge of the composer slot). A\n // small spacing-md gap keeps the FAB clear of the\n // divider border above the composer.\n 'ds:bottom-[var(--spacing-md)] ds:pe-[var(--spacing-md)]',\n // Enter animation — fade + scale in from 95%. The FAB only\n // unmounts when the user returns to bottom, so an exit\n // animation isn't justified (abrupt disappearance reads as\n // \"task complete\" when they've scrolled back).\n 'ds:motion-safe:animate-in ds:motion-safe:fade-in-0 ds:motion-safe:zoom-in-95',\n 'ds:duration-[var(--animation-duration)] ds:ease-[var(--ease-out)]',\n ].join(' ')}\n >\n <div className=\"ds:pointer-events-auto\">\n <FloatingActionButton\n icon={<ChevronDown />}\n aria-label={t('ui.chat.scrollToLatest')}\n size=\"sm\"\n variant=\"secondary\"\n // `position=\"static\"` — the wrapper is already\n // absolutely-positioned. Without this, FAB's default\n // `bottom-end` variant applies `position: fixed` and\n // pins the button to the browser viewport corner,\n // escaping the container and appearing as an orphan\n // circle that stays put while the chat scrolls.\n position=\"static\"\n onClick={() => scrollToBottom({ smooth: true })}\n />\n </div>\n </div>\n ) : null}\n </div>\n\n {composer ? (\n <div className=\"ds:shrink-0 ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)] ds:pt-[var(--spacing-sm)] ds:pb-[var(--spacing-sm)] ds:bg-background\">\n {composer}\n </div>\n ) : null}\n </div>\n );\n },\n);\n\nChatContainer.displayName = 'ChatContainer';\n"],"names":["rootVariants","cva","scrollViewportVariants","VIRTUALIZATION_THRESHOLD","BOTTOM_SLACK_PX","ChatContainer","forwardRef","messages","composer","density","className","id","onAutoScrollChange","showScrollToLatest","rest","ref","t","useTranslation","viewportRef","useRef","sentinelRef","isAtBottom","setIsAtBottom","useState","prefersReducedMotion","usePrefersReducedMotion","scrollToBottom","useCallback","opts","el","smooth","useImperativeHandle","useEffect","root","sentinel","observer","entries","entry","messagesLength","useLayoutEffect","virtualized","virtualizer","useVirtualizer","i","_a","jsxs","jsx","vi","msg","m","FloatingActionButton","ChevronDown"],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- const e = {
2
- id: "chat-container",
3
- capabilities: ["navigate"],
4
- state: {},
5
- actions: {
6
- scroll_to_bottom: {
7
- safety: "read",
8
- argsType: "{ smooth?: boolean }",
9
- description: "Scroll the conversation viewport to the latest message.",
10
- invoke: (t, o) => {
11
- t.scrollToBottom(o);
12
- }
13
- }
14
- },
15
- domHooks: {
16
- root: { attr: "data-component", value: "chat-container" },
17
- instanceId: {
18
- attr: "data-component-id",
19
- sourceProp: "id",
20
- description: "Sourced from the id prop."
21
- }
22
- }
23
- };
24
- export {
25
- e as c
26
- };
27
- //# sourceMappingURL=chat-container.agent-CM4WModE.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chat-container.agent-CM4WModE.js","sources":["../../src/components/chat-container/chat-container.agent.ts"],"sourcesContent":["import type { AgentAdapter } from '../../agent/types';\nimport type { ChatContainerHandle } from './chat-container';\n\nexport const chatContainerAgent: AgentAdapter<ChatContainerHandle> = {\n id: 'chat-container',\n capabilities: ['navigate'],\n state: {},\n actions: {\n scroll_to_bottom: {\n safety: 'read',\n argsType: '{ smooth?: boolean }',\n description: 'Scroll the conversation viewport to the latest message.',\n invoke: (handle, args: { smooth?: boolean }) => {\n handle.scrollToBottom(args);\n },\n },\n },\n domHooks: {\n root: { attr: 'data-component', value: 'chat-container' },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n },\n};\n"],"names":["chatContainerAgent","handle","args"],"mappings":"AAGO,MAAMA,IAAwD;AAAA,EACnE,IAAI;AAAA,EACJ,cAAc,CAAC,UAAU;AAAA,EACzB,OAAO,CAAA;AAAA,EACP,SAAS;AAAA,IACP,kBAAkB;AAAA,MAChB,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,aAAa;AAAA,MACb,QAAQ,CAACC,GAAQC,MAA+B;AAC9C,QAAAD,EAAO,eAAeC,CAAI;AAAA,MAC5B;AAAA,IAAA;AAAA,EACF;AAAA,EAEF,UAAU;AAAA,IACR,MAAM,EAAE,MAAM,kBAAkB,OAAO,iBAAA;AAAA,IACvC,YAAY;AAAA,MACV,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,aAAa;AAAA,IAAA;AAAA,EACf;AAEJ;"}
@@ -1,252 +0,0 @@
1
- import { jsxs as d, jsx as r, Fragment as ge } from "react/jsx-runtime";
2
- import { forwardRef as he, useId as ve, useRef as H, useCallback as K, useState as be, useLayoutEffect as ye, useImperativeHandle as xe } from "react";
3
- import { c as Ie } from "./index-D2ZczOXr.js";
4
- import { useTranslation as Ce } from "react-i18next";
5
- import { I as W } from "./icon-button-Wnnde5lc.js";
6
- import { c as Ne } from "./createLucideIcon-CrFbzy84.js";
7
- import { C as ke } from "./circle-alert-ChA9opNA.js";
8
- import { S as ze } from "./send-CySZIRPJ.js";
9
- /**
10
- * @license lucide-react v1.8.0 - ISC
11
- *
12
- * This source code is licensed under the ISC license.
13
- * See the LICENSE file in the root directory of this source tree.
14
- */
15
- const we = [
16
- [
17
- "path",
18
- {
19
- d: "m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551",
20
- key: "1miecu"
21
- }
22
- ]
23
- ], Fe = Ne("paperclip", we), He = Ie(
24
- [
25
- "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)] ds:w-full",
26
- // Soft drop-shadow + transparent border replaces a flat
27
- // `border-border` (grey-800 since the WCAG 1.4.11 bump). Border kept
28
- // at 1px so the focus-within color override + forced-colors
29
- // fallback still paint a visible edge.
30
- "ds:rounded-[var(--radius-md)] ds:shadow-[var(--shadow-sm)] ds:border ds:border-transparent",
31
- "ds:bg-background ds:focus-within:border-[color:var(--primary)]",
32
- "ds:transition-[border-color] ds:duration-[var(--animation-duration)]",
33
- "ds:motion-reduce:transition-none",
34
- "ds:forced-colors:border-[CanvasText]"
35
- ].join(" "),
36
- {
37
- variants: {
38
- size: {
39
- sm: "ds:text-[length:var(--font-size-sm)]",
40
- md: "ds:text-[length:var(--font-size-base)]",
41
- lg: "ds:text-[length:var(--font-size-lg)]"
42
- }
43
- },
44
- defaultVariants: { size: "md" }
45
- }
46
- );
47
- function Te(c, u) {
48
- if (typeof Intl < "u" && typeof Intl.Segmenter == "function")
49
- try {
50
- const p = new Intl.Segmenter(u, { granularity: "grapheme" });
51
- let t = 0;
52
- for (const T of p.segment(c)) t += 1;
53
- return t;
54
- } catch {
55
- }
56
- return Array.from(c).length;
57
- }
58
- const Ve = he(
59
- ({
60
- size: c = "md",
61
- value: u,
62
- defaultValue: p,
63
- maxLength: t,
64
- submitOnEnter: T = !1,
65
- minRows: y = 1,
66
- maxRows: V = 8,
67
- onSubmit: x,
68
- onAttach: f,
69
- accept: Y,
70
- disabled: m,
71
- toolbar: q,
72
- label: j,
73
- placeholder: G,
74
- className: J,
75
- onChange: I,
76
- onKeyDown: C,
77
- onCompositionStart: N,
78
- onCompositionEnd: k,
79
- id: B,
80
- ...L
81
- }, O) => {
82
- const { t: i, i18n: Q } = Ce(), U = ve(), g = H(!1), E = H(null), z = H(null), X = K(
83
- (e) => {
84
- z.current = e;
85
- },
86
- []
87
- ), a = u !== void 0, [Z, h] = be(
88
- String(p ?? "")
89
- ), s = a ? String(u) : Z, w = Te(s, Q.language), v = typeof t == "number" && t > 0, D = v ? Math.max(0, t - w) : 0, A = v && w > t * 0.9, o = v && w >= t, M = K(() => {
90
- const e = z.current;
91
- if (!e) return;
92
- const n = window.getComputedStyle(e), b = parseFloat(n.lineHeight) || 24, de = parseFloat(n.paddingTop) || 0, ce = parseFloat(n.paddingBottom) || 0, ue = parseFloat(n.borderTopWidth) || 0, pe = parseFloat(n.borderBottomWidth) || 0, R = de + ce + ue + pe, fe = b * y + R, _ = b * V + R;
93
- e.style.height = "auto";
94
- const me = Math.max(fe, Math.min(e.scrollHeight, _));
95
- e.style.height = `${me}px`, e.style.overflowY = e.scrollHeight > _ ? "auto" : "hidden";
96
- }, [y, V]);
97
- ye(() => {
98
- M();
99
- }, [M, s]);
100
- const ee = (e) => {
101
- a || h(e.target.value), !g.current && (I == null || I(e));
102
- }, te = (e) => {
103
- g.current = !0, N == null || N(e);
104
- }, se = (e) => {
105
- g.current = !1, k == null || k(e);
106
- }, re = (e) => e.nativeEvent.isComposing || e.keyCode === 229 || g.current, F = () => {
107
- !s.trim() || m || o || (x == null || x(s), a || h(""));
108
- };
109
- xe(
110
- O,
111
- () => ({
112
- getValue: () => s,
113
- isEmpty: () => !s.trim(),
114
- setValue: (e) => {
115
- a || h(e);
116
- },
117
- clear: () => {
118
- a || h("");
119
- },
120
- submit: () => {
121
- F();
122
- },
123
- focus: () => {
124
- var e;
125
- (e = z.current) == null || e.focus();
126
- }
127
- }),
128
- // `submit` is a local closure that always sees the latest currentValue
129
- // via React's render cycle — depend on currentValue + isControlled so
130
- // the handle picks up new values across renders.
131
- // eslint-disable-next-line react-hooks/exhaustive-deps
132
- [s, a]
133
- );
134
- const ae = (e) => {
135
- if (C == null || C(e), !e.defaultPrevented && !re(e) && e.key === "Enter") {
136
- const n = e.metaKey || e.ctrlKey, b = T && !e.shiftKey;
137
- (n || b) && (e.preventDefault(), F());
138
- }
139
- }, ne = () => {
140
- var e;
141
- (e = E.current) == null || e.click();
142
- }, ie = (e) => {
143
- e.target.files && e.target.files.length > 0 && (f == null || f(e.target.files)), e.target.value = "";
144
- }, l = B ?? U, P = `${l}-label`, S = v ? `${l}-counter` : void 0, $ = `${l}-hint`, oe = G ?? i("chat.input.placeholder"), le = j ?? i("chat.prompt");
145
- return /* @__PURE__ */ d("div", { "data-component": "chat-input", "data-component-id": B, className: He({ size: c, className: J }), children: [
146
- /* @__PURE__ */ r("label", { id: P, htmlFor: l, className: j ? "type-label ds:ps-[var(--spacing-sm)] ds:pt-[var(--spacing-sm)]" : "ds:sr-only", children: le }),
147
- /* @__PURE__ */ r(
148
- "textarea",
149
- {
150
- ref: X,
151
- id: l,
152
- value: a ? s : void 0,
153
- defaultValue: a ? void 0 : p,
154
- disabled: m,
155
- rows: y,
156
- maxLength: t,
157
- placeholder: oe,
158
- "aria-labelledby": P,
159
- "aria-describedby": [S, $].filter(Boolean).join(" ") || void 0,
160
- "aria-invalid": o || void 0,
161
- onChange: ee,
162
- onKeyDown: ae,
163
- onCompositionStart: te,
164
- onCompositionEnd: se,
165
- className: [
166
- "ds:w-full ds:resize-none ds:bg-transparent",
167
- "ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)] ds:pt-[var(--spacing-sm)] ds:pb-[var(--spacing-xs)]",
168
- "ds:placeholder:text-[color:var(--muted-foreground)]",
169
- "ds:leading-[var(--line-height-base)]",
170
- "ds:disabled:opacity-50 ds:disabled:cursor-not-allowed",
171
- // Tokenised focus ring on the textarea itself — the 1px border
172
- // shift on the wrapper alone fails the 3px accessible-theme
173
- // requirement. See a11y-critical-fixes.mdx.
174
- "ds:outline-none",
175
- "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
176
- "ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
177
- "ds:rounded-[var(--radius-sm)]",
178
- "ds:forced-colors:focus-visible:outline-[CanvasText]"
179
- ].join(" "),
180
- ...L
181
- }
182
- ),
183
- /* @__PURE__ */ d("div", { className: "ds:flex ds:items-center ds:gap-[var(--spacing-xs)] ds:ps-[var(--spacing-xs)] ds:pe-[var(--spacing-xs)] ds:pb-[var(--spacing-xs)]", children: [
184
- f ? /* @__PURE__ */ d(ge, { children: [
185
- /* @__PURE__ */ r(
186
- "input",
187
- {
188
- ref: E,
189
- type: "file",
190
- className: "ds:sr-only",
191
- multiple: !0,
192
- accept: Y,
193
- onChange: ie
194
- }
195
- ),
196
- /* @__PURE__ */ r(
197
- W,
198
- {
199
- icon: /* @__PURE__ */ r(Fe, {}),
200
- "aria-label": i("chat.input.attach"),
201
- intent: "ghost",
202
- size: "sm",
203
- onClick: ne,
204
- disabled: m
205
- }
206
- )
207
- ] }) : null,
208
- q,
209
- /* @__PURE__ */ d("div", { className: "ds:ms-auto ds:inline-flex ds:items-center ds:gap-[var(--spacing-sm)]", children: [
210
- A ? /* @__PURE__ */ d(
211
- "span",
212
- {
213
- id: S,
214
- "aria-live": "polite",
215
- className: [
216
- "ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]",
217
- "type-meta ds:tabular-nums",
218
- o ? "ds:text-[color:var(--destructive)]" : "ds:text-[color:var(--muted-foreground)]"
219
- ].join(" "),
220
- children: [
221
- o ? (
222
- // Icon pairs with --destructive colour so the at-limit
223
- // state is not conveyed by hue alone (WCAG 1.4.1).
224
- /* @__PURE__ */ r(ke, { "aria-hidden": "true", className: "ds:size-3.5" })
225
- ) : null,
226
- i("chat.input.remaining", { count: D })
227
- ]
228
- }
229
- ) : null,
230
- /* @__PURE__ */ r("span", { id: $, className: "ds:sr-only", children: i("chat.input.sendHint") }),
231
- /* @__PURE__ */ r(
232
- W,
233
- {
234
- icon: /* @__PURE__ */ r(ze, {}),
235
- "aria-label": i("chat.send"),
236
- intent: "primary",
237
- size: "sm",
238
- disabled: m || !s.trim() || o,
239
- onClick: F,
240
- "aria-keyshortcuts": "Meta+Enter Control+Enter"
241
- }
242
- )
243
- ] })
244
- ] })
245
- ] });
246
- }
247
- );
248
- Ve.displayName = "ChatInput";
249
- export {
250
- Ve as C
251
- };
252
- //# sourceMappingURL=chat-input-C_tMQv92.js.map