@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
@@ -0,0 +1,220 @@
1
+ import { jsxs as m, jsx as t } from "react/jsx-runtime";
2
+ import { forwardRef as B, useRef as u, useState as C, useCallback as H, useImperativeHandle as L, useMemo as E, useEffect as M, useLayoutEffect as O } from "react";
3
+ import { c as k } from "./index-D2ZczOXr.js";
4
+ import { useTranslation as S } from "react-i18next";
5
+ import { u as j } from "./registry-C9nwlNyL.js";
6
+ import { u as A } from "./index-CJE9uQmb.js";
7
+ import { F as P } from "./floating-action-button-C8OYj8mE.js";
8
+ import { u as $ } from "./use-prefers-reduced-motion-BMwIQRjB.js";
9
+ import { C as D } from "./chevron-down-BX_NP2Yh.js";
10
+ const F = {
11
+ id: "chat-container",
12
+ capabilities: ["navigate"],
13
+ state: {},
14
+ actions: {
15
+ scroll_to_bottom: {
16
+ safety: "read",
17
+ argsType: "{ smooth?: boolean }",
18
+ description: "Scroll the conversation viewport to the latest message.",
19
+ invoke: (o, r) => {
20
+ o.scrollToBottom(r);
21
+ }
22
+ }
23
+ },
24
+ domHooks: {
25
+ root: { attr: "data-component", value: "chat-container" },
26
+ instanceId: {
27
+ attr: "data-component-id",
28
+ sourceProp: "id",
29
+ description: "Sourced from the id prop."
30
+ }
31
+ }
32
+ }, K = k(
33
+ "ds:relative ds:flex ds:w-full ds:flex-col ds:overflow-hidden ds:bg-background",
34
+ {
35
+ variants: {
36
+ density: {
37
+ default: "ds:gap-[var(--spacing-md)]",
38
+ compact: "ds:gap-[var(--spacing-sm)]"
39
+ }
40
+ },
41
+ defaultVariants: { density: "default" }
42
+ }
43
+ ), U = k(
44
+ [
45
+ "ds:flex-1 ds:min-h-0 ds:overflow-y-auto ds:overflow-x-hidden",
46
+ "ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)]",
47
+ "ds:pt-[var(--spacing-md)] ds:pb-[var(--spacing-md)]",
48
+ "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
49
+ "ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
50
+ "ds:scroll-smooth ds:motion-reduce:scroll-auto ds:[.theme-accessible_&]:scroll-auto",
51
+ // Edge fade — content near the scroll boundaries fades into the
52
+ // container surface instead of clipping abruptly against the header
53
+ // or composer, so avatars / bubbles don't look "cut in half" as they
54
+ // pass the viewport edge. Fade width matches the viewport padding so
55
+ // a row can slide fully behind the mask before disappearing.
56
+ // Disabled under HCM (mask strips content), reduced motion (less
57
+ // decoration when motion is off), and the accessible theme.
58
+ "ds:[mask-image:linear-gradient(to_bottom,transparent_0,black_var(--spacing-md),black_calc(100%-var(--spacing-md)),transparent_100%)]",
59
+ "ds:motion-reduce:[mask-image:none]",
60
+ "ds:[.theme-accessible_&]:[mask-image:none]",
61
+ "ds:forced-colors:[mask-image:none]"
62
+ ].join(" ")
63
+ ), X = 100, Y = 48, Z = B(
64
+ ({
65
+ messages: o,
66
+ composer: r,
67
+ density: w = "default",
68
+ className: N,
69
+ id: p,
70
+ onAutoScrollChange: i,
71
+ showScrollToLatest: y = !1,
72
+ ...I
73
+ }, T) => {
74
+ const { t: f } = S(), a = u(null), v = u(null), [l, _] = C(!0), g = $(), n = H(
75
+ (e) => {
76
+ const s = a.current;
77
+ if (!s) return;
78
+ const d = ((e == null ? void 0 : e.smooth) ?? !0) && !g;
79
+ s.scrollTo({
80
+ top: s.scrollHeight,
81
+ behavior: d ? "smooth" : "auto"
82
+ });
83
+ },
84
+ [g]
85
+ ), h = u(null);
86
+ L(T, () => h.current, []);
87
+ const R = E(
88
+ () => ({
89
+ scrollToBottom: n,
90
+ getScrollViewport: () => a.current
91
+ }),
92
+ [n]
93
+ );
94
+ j(F, R, p), M(() => {
95
+ const e = a.current, s = v.current;
96
+ if (!e || !s) return;
97
+ const d = new IntersectionObserver(
98
+ (V) => {
99
+ const x = V[0];
100
+ _(x.isIntersecting), i == null || i(x.isIntersecting);
101
+ },
102
+ {
103
+ root: e,
104
+ // Fire when the sentinel is within BOTTOM_SLACK_PX of being visible.
105
+ rootMargin: `0px 0px ${Y}px 0px`,
106
+ threshold: 0
107
+ }
108
+ );
109
+ return d.observe(s), () => d.disconnect();
110
+ }, [i]);
111
+ const z = o.length;
112
+ O(() => {
113
+ l && n({ smooth: !1 });
114
+ }, [z, l, n]);
115
+ const b = o.length > X, c = A({
116
+ count: b ? o.length : 0,
117
+ getScrollElement: () => a.current,
118
+ estimateSize: () => 80,
119
+ overscan: 6,
120
+ getItemKey: (e) => {
121
+ var s;
122
+ return ((s = o[e]) == null ? void 0 : s.id) ?? e;
123
+ }
124
+ });
125
+ return /* @__PURE__ */ m(
126
+ "div",
127
+ {
128
+ ref: h,
129
+ className: K({ density: w, className: N }),
130
+ "data-component": "chat-container",
131
+ "data-component-id": p,
132
+ ...I,
133
+ children: [
134
+ /* @__PURE__ */ m("div", { className: "ds:relative ds:flex-1 ds:min-h-0 ds:flex ds:flex-col", children: [
135
+ /* @__PURE__ */ m(
136
+ "div",
137
+ {
138
+ ref: a,
139
+ role: "log",
140
+ "aria-live": "polite",
141
+ "aria-relevant": "additions",
142
+ "aria-label": f("ui.chat.container"),
143
+ tabIndex: 0,
144
+ className: U(),
145
+ children: [
146
+ b ? /* @__PURE__ */ t(
147
+ "ol",
148
+ {
149
+ className: "ds:relative ds:list-none ds:ps-0 ds:m-0",
150
+ style: { blockSize: `${c.getTotalSize()}px` },
151
+ children: c.getVirtualItems().map((e) => {
152
+ const s = o[e.index];
153
+ return s ? /* @__PURE__ */ t(
154
+ "li",
155
+ {
156
+ "data-index": e.index,
157
+ ref: c.measureElement,
158
+ className: "ds:absolute ds:start-0 ds:end-0 ds:top-0 ds:w-full",
159
+ style: { transform: `translateY(${e.start}px)` },
160
+ children: /* @__PURE__ */ t("div", { className: "ds:pt-[var(--spacing-xs)] ds:pb-[var(--spacing-xs)]", children: s.node })
161
+ },
162
+ s.id
163
+ ) : null;
164
+ })
165
+ }
166
+ ) : /* @__PURE__ */ t("ol", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-sm)] ds:list-none ds:ps-0 ds:m-0", children: o.map((e) => /* @__PURE__ */ t("li", { children: e.node }, e.id)) }),
167
+ /* @__PURE__ */ t(
168
+ "div",
169
+ {
170
+ ref: v,
171
+ "aria-hidden": "true",
172
+ className: "ds:h-1 ds:w-full"
173
+ }
174
+ )
175
+ ]
176
+ }
177
+ ),
178
+ y && !l ? /* @__PURE__ */ t(
179
+ "div",
180
+ {
181
+ className: [
182
+ "ds:pointer-events-none ds:absolute ds:inset-inline-end-0",
183
+ // `bottom` is measured from the bottom of the scroll
184
+ // column (i.e. the top edge of the composer slot). A
185
+ // small spacing-md gap keeps the FAB clear of the
186
+ // divider border above the composer.
187
+ "ds:bottom-[var(--spacing-md)] ds:pe-[var(--spacing-md)]",
188
+ // Enter animation — fade + scale in from 95%. The FAB only
189
+ // unmounts when the user returns to bottom, so an exit
190
+ // animation isn't justified (abrupt disappearance reads as
191
+ // "task complete" when they've scrolled back).
192
+ "ds:motion-safe:animate-in ds:motion-safe:fade-in-0 ds:motion-safe:zoom-in-95",
193
+ "ds:duration-[var(--animation-duration)] ds:ease-[var(--ease-out)]"
194
+ ].join(" "),
195
+ children: /* @__PURE__ */ t("div", { className: "ds:pointer-events-auto", children: /* @__PURE__ */ t(
196
+ P,
197
+ {
198
+ icon: /* @__PURE__ */ t(D, {}),
199
+ "aria-label": f("ui.chat.scrollToLatest"),
200
+ size: "sm",
201
+ variant: "secondary",
202
+ position: "static",
203
+ onClick: () => n({ smooth: !0 })
204
+ }
205
+ ) })
206
+ }
207
+ ) : null
208
+ ] }),
209
+ r ? /* @__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: r }) : null
210
+ ]
211
+ }
212
+ );
213
+ }
214
+ );
215
+ Z.displayName = "ChatContainer";
216
+ export {
217
+ Z as C,
218
+ F as c
219
+ };
220
+ //# sourceMappingURL=chat-container-ClzsWXp2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-container-ClzsWXp2.js","sources":["../../src/components/chat-container/chat-container.agent.ts","../../src/components/chat-container/chat-container.tsx"],"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","import {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\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 { useAgentRegistration } from '../../agent/registry';\nimport { chatContainerAgent } from './chat-container.agent';\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\n 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<HTMLDivElement, 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({\n top: el.scrollHeight,\n behavior: smooth ? 'smooth' : 'auto',\n });\n },\n [prefersReducedMotion],\n );\n\n const rootRef = useRef<HTMLDivElement>(null);\n useImperativeHandle(ref, () => rootRef.current as HTMLDivElement, []);\n\n const agentHandle = useMemo<ChatContainerHandle>(\n () => ({\n scrollToBottom,\n getScrollViewport: () => viewportRef.current,\n }),\n [scrollToBottom],\n );\n useAgentRegistration(chatContainerAgent, agentHandle, id);\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\n ref={rootRef}\n className={rootVariants({ density, className })}\n data-component=\"chat-container\"\n data-component-id={id}\n {...rest}\n >\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 // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex -- scrollable log region needs to be keyboard focusable for axe scrollable-region-focusable\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 // eslint-disable-next-line react/forbid-dom-props -- virtualizer total size, runtime-computed\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 // eslint-disable-next-line react/forbid-dom-props -- virtualizer translateY offset, runtime-computed\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\n ref={sentinelRef}\n aria-hidden=\"true\"\n className=\"ds:h-1 ds:w-full\"\n />\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":["chatContainerAgent","handle","args","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","rootRef","useImperativeHandle","agentHandle","useMemo","useAgentRegistration","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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"}
@@ -0,0 +1,333 @@
1
+ import { jsxs as u, jsx as a, Fragment as ve } from "react/jsx-runtime";
2
+ import { forwardRef as ye, useId as be, useRef as b, useCallback as W, useState as xe, useLayoutEffect as Ie, useImperativeHandle as ke, useMemo as Ce } from "react";
3
+ import { c as we } from "./index-D2ZczOXr.js";
4
+ import { useTranslation as Ne } from "react-i18next";
5
+ import { I as U } from "./icon-button-C4CGcYuz.js";
6
+ import { u as ze } from "./registry-C9nwlNyL.js";
7
+ import { c as He } from "./createLucideIcon-CrFbzy84.js";
8
+ import { C as Ve } from "./circle-alert-ChA9opNA.js";
9
+ import { S as Ee } from "./send-CySZIRPJ.js";
10
+ /**
11
+ * @license lucide-react v1.8.0 - ISC
12
+ *
13
+ * This source code is licensed under the ISC license.
14
+ * See the LICENSE file in the root directory of this source tree.
15
+ */
16
+ const Me = [
17
+ [
18
+ "path",
19
+ {
20
+ 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",
21
+ key: "1miecu"
22
+ }
23
+ ]
24
+ ], Te = He("paperclip", Me), Fe = {
25
+ id: "chat-input",
26
+ capabilities: ["edit_inline", "submit"],
27
+ state: {
28
+ value: {
29
+ type: "string",
30
+ descriptionKey: "ui.agent.chatInput.state.value",
31
+ description: "Current text in the composer.",
32
+ read: (t) => t.getValue()
33
+ },
34
+ isEmpty: {
35
+ type: "boolean",
36
+ descriptionKey: "ui.agent.chatInput.state.isEmpty",
37
+ description: "True when the composer has no text.",
38
+ read: (t) => t.isEmpty()
39
+ }
40
+ },
41
+ actions: {
42
+ set_value: {
43
+ safety: "write",
44
+ argsType: "{ value: string }",
45
+ descriptionKey: "ui.agent.chatInput.actions.setValue",
46
+ description: "Replace the composer text.",
47
+ invoke: (t, o) => {
48
+ t.setValue(o.value);
49
+ }
50
+ },
51
+ clear: {
52
+ safety: "destructive",
53
+ descriptionKey: "ui.agent.chatInput.actions.clear",
54
+ description: "Clear the composer. Irreversible from the same UI.",
55
+ invoke: (t) => {
56
+ t.clear();
57
+ }
58
+ },
59
+ submit: {
60
+ safety: "write",
61
+ descriptionKey: "ui.agent.chatInput.actions.submit",
62
+ description: "Submit the current composer state via onSubmit.",
63
+ invoke: (t) => {
64
+ t.submit();
65
+ }
66
+ },
67
+ focus: {
68
+ safety: "read",
69
+ descriptionKey: "ui.agent.chatInput.actions.focus",
70
+ description: "Move keyboard focus into the textarea.",
71
+ invoke: (t) => {
72
+ t.focus();
73
+ }
74
+ }
75
+ },
76
+ domHooks: {
77
+ root: {
78
+ attr: "data-component",
79
+ value: "chat-input",
80
+ description: "Marks the ChatInput wrapper."
81
+ },
82
+ instanceId: {
83
+ attr: "data-component-id",
84
+ sourceProp: "id",
85
+ description: "Sourced from the id prop."
86
+ }
87
+ }
88
+ }, Ke = we(
89
+ [
90
+ "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)] ds:w-full",
91
+ // Soft drop-shadow + transparent border replaces a flat
92
+ // `border-border` (grey-800 since the WCAG 1.4.11 bump). Border kept
93
+ // at 1px so the focus-within color override + forced-colors
94
+ // fallback still paint a visible edge.
95
+ "ds:rounded-[var(--radius-md)] ds:shadow-[var(--shadow-sm)] ds:border ds:border-transparent",
96
+ "ds:bg-background ds:focus-within:border-[color:var(--primary)]",
97
+ "ds:transition-[border-color] ds:duration-[var(--animation-duration)]",
98
+ "ds:motion-reduce:transition-none",
99
+ "ds:forced-colors:border-[CanvasText]"
100
+ ].join(" "),
101
+ {
102
+ variants: {
103
+ size: {
104
+ sm: "ds:text-[length:var(--font-size-sm)]",
105
+ md: "ds:text-[length:var(--font-size-base)]",
106
+ lg: "ds:text-[length:var(--font-size-lg)]"
107
+ }
108
+ },
109
+ defaultVariants: { size: "md" }
110
+ }
111
+ );
112
+ function Se(t, o) {
113
+ if (typeof Intl < "u" && typeof Intl.Segmenter == "function")
114
+ try {
115
+ const p = new Intl.Segmenter(o, { granularity: "grapheme" });
116
+ let s = 0;
117
+ for (const M of p.segment(t)) s += 1;
118
+ return s;
119
+ } catch {
120
+ }
121
+ return Array.from(t).length;
122
+ }
123
+ const je = ye(
124
+ ({
125
+ size: t = "md",
126
+ value: o,
127
+ defaultValue: p,
128
+ maxLength: s,
129
+ submitOnEnter: M = !1,
130
+ minRows: x = 1,
131
+ maxRows: T = 8,
132
+ onSubmit: I,
133
+ onAttach: m,
134
+ accept: Y,
135
+ disabled: f,
136
+ toolbar: q,
137
+ label: F,
138
+ placeholder: A,
139
+ className: G,
140
+ onChange: k,
141
+ onKeyDown: C,
142
+ onCompositionStart: w,
143
+ onCompositionEnd: N,
144
+ id: z,
145
+ ...J
146
+ }, L) => {
147
+ const { t: c, i18n: O } = Ne(), Q = be(), h = b(!1), K = b(null), H = b(null), X = W((e) => {
148
+ H.current = e;
149
+ }, []), n = o !== void 0, [Z, g] = xe(
150
+ String(p ?? "")
151
+ ), r = n ? String(o) : Z, V = Se(r, O.language), v = typeof s == "number" && s > 0, D = v ? Math.max(0, s - V) : 0, ee = v && V > s * 0.9, l = v && V >= s, S = W(() => {
152
+ const e = H.current;
153
+ if (!e) return;
154
+ const i = window.getComputedStyle(e), y = parseFloat(i.lineHeight) || 24, ue = parseFloat(i.paddingTop) || 0, pe = parseFloat(i.paddingBottom) || 0, me = parseFloat(i.borderTopWidth) || 0, fe = parseFloat(i.borderBottomWidth) || 0, _ = ue + pe + me + fe, he = y * x + _, $ = y * T + _;
155
+ e.style.height = "auto";
156
+ const ge = Math.max(he, Math.min(e.scrollHeight, $));
157
+ e.style.height = `${ge}px`, e.style.overflowY = e.scrollHeight > $ ? "auto" : "hidden";
158
+ }, [x, T]);
159
+ Ie(() => {
160
+ S();
161
+ }, [S, r]);
162
+ const te = (e) => {
163
+ n || g(e.target.value), !h.current && (k == null || k(e));
164
+ }, se = (e) => {
165
+ h.current = !0, w == null || w(e);
166
+ }, re = (e) => {
167
+ h.current = !1, N == null || N(e);
168
+ }, ae = (e) => e.nativeEvent.isComposing || e.keyCode === 229 || h.current, E = () => {
169
+ !r.trim() || f || l || (I == null || I(r), n || g(""));
170
+ }, j = b(null);
171
+ ke(L, () => j.current, []);
172
+ const ne = Ce(
173
+ () => ({
174
+ getValue: () => r,
175
+ isEmpty: () => !r.trim(),
176
+ setValue: (e) => {
177
+ n || g(e);
178
+ },
179
+ clear: () => {
180
+ n || g("");
181
+ },
182
+ submit: () => {
183
+ E();
184
+ },
185
+ focus: () => {
186
+ var e;
187
+ (e = H.current) == null || e.focus();
188
+ }
189
+ }),
190
+ // `submit` is a local closure that always sees the latest currentValue
191
+ // via React's render cycle — depend on currentValue + isControlled so
192
+ // the handle picks up new values across renders.
193
+ // eslint-disable-next-line react-hooks/exhaustive-deps
194
+ [r, n]
195
+ );
196
+ ze(Fe, ne, z);
197
+ const ie = (e) => {
198
+ if (C == null || C(e), !e.defaultPrevented && !ae(e) && e.key === "Enter") {
199
+ const i = e.metaKey || e.ctrlKey, y = M && !e.shiftKey;
200
+ (i || y) && (e.preventDefault(), E());
201
+ }
202
+ }, oe = () => {
203
+ var e;
204
+ (e = K.current) == null || e.click();
205
+ }, ce = (e) => {
206
+ e.target.files && e.target.files.length > 0 && (m == null || m(e.target.files)), e.target.value = "";
207
+ }, d = z ?? Q, B = `${d}-label`, R = v ? `${d}-counter` : void 0, P = `${d}-hint`, le = A ?? c("chat.input.placeholder"), de = F ?? c("chat.prompt");
208
+ return /* @__PURE__ */ u(
209
+ "div",
210
+ {
211
+ ref: j,
212
+ "data-component": "chat-input",
213
+ "data-component-id": z,
214
+ className: Ke({ size: t, className: G }),
215
+ children: [
216
+ /* @__PURE__ */ a(
217
+ "label",
218
+ {
219
+ id: B,
220
+ htmlFor: d,
221
+ className: F ? "type-label ds:ps-[var(--spacing-sm)] ds:pt-[var(--spacing-sm)]" : "ds:sr-only",
222
+ children: de
223
+ }
224
+ ),
225
+ /* @__PURE__ */ a(
226
+ "textarea",
227
+ {
228
+ ref: X,
229
+ id: d,
230
+ value: n ? r : void 0,
231
+ defaultValue: n ? void 0 : p,
232
+ disabled: f,
233
+ rows: x,
234
+ maxLength: s,
235
+ placeholder: le,
236
+ "aria-labelledby": B,
237
+ "aria-describedby": [R, P].filter(Boolean).join(" ") || void 0,
238
+ "aria-invalid": l || void 0,
239
+ onChange: te,
240
+ onKeyDown: ie,
241
+ onCompositionStart: se,
242
+ onCompositionEnd: re,
243
+ className: [
244
+ "ds:w-full ds:resize-none ds:bg-transparent",
245
+ "ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)] ds:pt-[var(--spacing-sm)] ds:pb-[var(--spacing-xs)]",
246
+ "ds:placeholder:text-[color:var(--muted-foreground)]",
247
+ "ds:leading-[var(--line-height-base)]",
248
+ "ds:disabled:opacity-50 ds:disabled:cursor-not-allowed",
249
+ // Tokenised focus ring on the textarea itself — the 1px border
250
+ // shift on the wrapper alone fails the 3px accessible-theme
251
+ // requirement. See a11y-critical-fixes.mdx.
252
+ "ds:outline-none",
253
+ "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
254
+ "ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
255
+ "ds:rounded-[var(--radius-sm)]",
256
+ "ds:forced-colors:focus-visible:outline-[CanvasText]"
257
+ ].join(" "),
258
+ ...J
259
+ }
260
+ ),
261
+ /* @__PURE__ */ u("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: [
262
+ m ? /* @__PURE__ */ u(ve, { children: [
263
+ /* @__PURE__ */ a(
264
+ "input",
265
+ {
266
+ ref: K,
267
+ type: "file",
268
+ className: "ds:sr-only",
269
+ multiple: !0,
270
+ accept: Y,
271
+ onChange: ce
272
+ }
273
+ ),
274
+ /* @__PURE__ */ a(
275
+ U,
276
+ {
277
+ icon: /* @__PURE__ */ a(Te, {}),
278
+ "aria-label": c("chat.input.attach"),
279
+ intent: "ghost",
280
+ size: "sm",
281
+ onClick: oe,
282
+ disabled: f
283
+ }
284
+ )
285
+ ] }) : null,
286
+ q,
287
+ /* @__PURE__ */ u("div", { className: "ds:ms-auto ds:inline-flex ds:items-center ds:gap-[var(--spacing-sm)]", children: [
288
+ ee ? /* @__PURE__ */ u(
289
+ "span",
290
+ {
291
+ id: R,
292
+ "aria-live": "polite",
293
+ className: [
294
+ "ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]",
295
+ "type-meta ds:tabular-nums",
296
+ l ? "ds:text-[color:var(--destructive)]" : "ds:text-[color:var(--muted-foreground)]"
297
+ ].join(" "),
298
+ children: [
299
+ l ? (
300
+ // Icon pairs with --destructive colour so the at-limit
301
+ // state is not conveyed by hue alone (WCAG 1.4.1).
302
+ /* @__PURE__ */ a(Ve, { "aria-hidden": "true", className: "ds:size-3.5" })
303
+ ) : null,
304
+ c("chat.input.remaining", { count: D })
305
+ ]
306
+ }
307
+ ) : null,
308
+ /* @__PURE__ */ a("span", { id: P, className: "ds:sr-only", children: c("chat.input.sendHint") }),
309
+ /* @__PURE__ */ a(
310
+ U,
311
+ {
312
+ icon: /* @__PURE__ */ a(Ee, {}),
313
+ "aria-label": c("chat.send"),
314
+ intent: "primary",
315
+ size: "sm",
316
+ disabled: f || !r.trim() || l,
317
+ onClick: E,
318
+ "aria-keyshortcuts": "Meta+Enter Control+Enter"
319
+ }
320
+ )
321
+ ] })
322
+ ] })
323
+ ]
324
+ }
325
+ );
326
+ }
327
+ );
328
+ je.displayName = "ChatInput";
329
+ export {
330
+ je as C,
331
+ Fe as c
332
+ };
333
+ //# sourceMappingURL=chat-input-DOlsB1fm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-input-DOlsB1fm.js","sources":["../../node_modules/lucide-react/dist/esm/icons/paperclip.js","../../src/components/chat-input/chat-input.agent.ts","../../src/components/chat-input/chat-input.tsx"],"sourcesContent":["/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n 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\",\n key: \"1miecu\"\n }\n ]\n];\nconst Paperclip = createLucideIcon(\"paperclip\", __iconNode);\n\nexport { __iconNode, Paperclip as default };\n//# sourceMappingURL=paperclip.js.map\n","/* -------------------------------------------------------------------- */\n/* Agent adapter — ChatInput. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { ChatInputHandle } from './chat-input';\n\nexport const chatInputAgent: AgentAdapter<ChatInputHandle> = {\n id: 'chat-input',\n capabilities: ['edit_inline', 'submit'],\n state: {\n value: {\n type: 'string',\n descriptionKey: 'ui.agent.chatInput.state.value',\n description: 'Current text in the composer.',\n read: (handle) => handle.getValue(),\n },\n isEmpty: {\n type: 'boolean',\n descriptionKey: 'ui.agent.chatInput.state.isEmpty',\n description: 'True when the composer has no text.',\n read: (handle) => handle.isEmpty(),\n },\n },\n actions: {\n set_value: {\n safety: 'write',\n argsType: '{ value: string }',\n descriptionKey: 'ui.agent.chatInput.actions.setValue',\n description: 'Replace the composer text.',\n invoke: (handle, args: { value: string }) => {\n handle.setValue(args.value);\n },\n },\n clear: {\n safety: 'destructive',\n descriptionKey: 'ui.agent.chatInput.actions.clear',\n description: 'Clear the composer. Irreversible from the same UI.',\n invoke: (handle) => {\n handle.clear();\n },\n },\n submit: {\n safety: 'write',\n descriptionKey: 'ui.agent.chatInput.actions.submit',\n description: 'Submit the current composer state via onSubmit.',\n invoke: (handle) => {\n handle.submit();\n },\n },\n focus: {\n safety: 'read',\n descriptionKey: 'ui.agent.chatInput.actions.focus',\n description: 'Move keyboard focus into the textarea.',\n invoke: (handle) => {\n handle.focus();\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'chat-input',\n description: 'Marks the ChatInput wrapper.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n },\n};\n","import {\n forwardRef,\n useCallback,\n useId,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type ChangeEvent,\n type CompositionEvent,\n type KeyboardEvent,\n type ReactNode,\n type TextareaHTMLAttributes,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { AlertCircle, Paperclip, Send } from 'lucide-react';\nimport { IconButton } from '../button';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { chatInputAgent } from './chat-input.agent';\n\nconst rootVariants = cva(\n [\n 'ds:flex ds:flex-col ds:gap-[var(--spacing-xs)] ds:w-full',\n // Soft drop-shadow + transparent border replaces a flat\n // `border-border` (grey-800 since the WCAG 1.4.11 bump). Border kept\n // at 1px so the focus-within color override + forced-colors\n // fallback still paint a visible edge.\n 'ds:rounded-[var(--radius-md)] ds:shadow-[var(--shadow-sm)] ds:border ds:border-transparent',\n 'ds:bg-background ds:focus-within:border-[color:var(--primary)]',\n 'ds:transition-[border-color] ds:duration-[var(--animation-duration)]',\n 'ds:motion-reduce:transition-none',\n 'ds:forced-colors:border-[CanvasText]',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:text-[length:var(--font-size-sm)]',\n md: 'ds:text-[length:var(--font-size-base)]',\n lg: 'ds:text-[length:var(--font-size-lg)]',\n },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\ntype NativeTextareaProps = Omit<\n TextareaHTMLAttributes<HTMLTextAreaElement>,\n 'size' | 'onSubmit' | 'children'\n>;\n\n/** Curated imperative handle for agent / external automation. */\nexport interface ChatInputHandle {\n getValue: () => string;\n isEmpty: () => boolean;\n setValue: (value: string) => void;\n clear: () => void;\n submit: () => void;\n focus: () => void;\n}\n\nexport interface ChatInputProps\n extends NativeTextareaProps, VariantProps<typeof rootVariants> {\n /** Invoked when the user submits (Cmd/Ctrl+Enter, or send button). */\n onSubmit?: (text: string) => void;\n /** Maximum allowed characters (grapheme clusters via Intl.Segmenter when available). */\n maxLength?: number;\n /** When true, plain Enter submits and Shift+Enter inserts a newline.\n * Default false (Enter inserts newline; Cmd/Ctrl+Enter submits). */\n submitOnEnter?: boolean;\n /** Minimum visible rows. Default 1. */\n minRows?: number;\n /** Maximum visible rows before the field scrolls. Default 8. */\n maxRows?: number;\n /** Optional attachment handler — when provided, renders the attachment button. */\n onAttach?: (files: FileList) => void;\n /** `accept` forwarded to the hidden file input. */\n accept?: string;\n /** Controls whether the textarea is disabled and submit is blocked. */\n disabled?: boolean;\n /** Optional slot placed between the textarea and the send button. */\n toolbar?: ReactNode;\n /** Visible label above the textarea. When omitted, a visually-hidden label is used. */\n label?: string;\n}\n\nfunction graphemeCount(value: string, locale: string): number {\n if (typeof Intl !== 'undefined' && typeof Intl.Segmenter === 'function') {\n try {\n const seg = new Intl.Segmenter(locale, { granularity: 'grapheme' });\n let n = 0;\n for (const _s of seg.segment(value)) n += 1;\n return n;\n } catch {\n /* fall through to Array.from */\n }\n }\n return Array.from(value).length;\n}\n\nexport const ChatInput = forwardRef<HTMLDivElement, ChatInputProps>(\n (\n {\n size = 'md',\n value,\n defaultValue,\n maxLength,\n submitOnEnter = false,\n minRows = 1,\n maxRows = 8,\n onSubmit,\n onAttach,\n accept,\n disabled,\n toolbar,\n label,\n placeholder,\n className,\n onChange,\n onKeyDown,\n onCompositionStart,\n onCompositionEnd,\n id,\n ...rest\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n const textareaId = useId();\n const composingRef = useRef(false);\n const fileInputRef = useRef<HTMLInputElement>(null);\n const innerRef = useRef<HTMLTextAreaElement | null>(null);\n\n const setRefs = useCallback((node: HTMLTextAreaElement | null) => {\n innerRef.current = node;\n }, []);\n\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState<string>(\n String(defaultValue ?? ''),\n );\n const currentValue = isControlled ? String(value) : internalValue;\n\n const count = graphemeCount(currentValue, i18n.language);\n const hasMaxLength = typeof maxLength === 'number' && maxLength > 0;\n const remaining = hasMaxLength ? Math.max(0, maxLength - count) : 0;\n const showCounter = hasMaxLength && count > (maxLength as number) * 0.9;\n const atLimit = hasMaxLength && count >= maxLength;\n\n /* Auto-grow — compute height from scrollHeight, clamped to [minRows, maxRows].\n Imperative `.style` write is permitted per 23-constraints\n §Runtime-computed dimensions (textarea scrollHeight measurement). */\n const resize = useCallback(() => {\n const el = innerRef.current;\n if (!el) return;\n const styles = window.getComputedStyle(el);\n const lineHeight = parseFloat(styles.lineHeight) || 24;\n const padTop = parseFloat(styles.paddingTop) || 0;\n const padBot = parseFloat(styles.paddingBottom) || 0;\n const borderTop = parseFloat(styles.borderTopWidth) || 0;\n const borderBot = parseFloat(styles.borderBottomWidth) || 0;\n const chrome = padTop + padBot + borderTop + borderBot;\n const minH = lineHeight * minRows + chrome;\n const maxH = lineHeight * maxRows + chrome;\n el.style.height = 'auto';\n const next = Math.max(minH, Math.min(el.scrollHeight, maxH));\n el.style.height = `${next}px`;\n el.style.overflowY = el.scrollHeight > maxH ? 'auto' : 'hidden';\n }, [minRows, maxRows]);\n\n useLayoutEffect(() => {\n resize();\n }, [resize, currentValue]);\n\n const handleChange = (e: ChangeEvent<HTMLTextAreaElement>) => {\n if (!isControlled) setInternalValue(e.target.value);\n if (composingRef.current) return;\n onChange?.(e);\n };\n\n const handleCompositionStart = (\n e: CompositionEvent<HTMLTextAreaElement>,\n ) => {\n composingRef.current = true;\n onCompositionStart?.(e);\n };\n const handleCompositionEnd = (e: CompositionEvent<HTMLTextAreaElement>) => {\n composingRef.current = false;\n onCompositionEnd?.(e);\n };\n\n const isIMEKey = (e: KeyboardEvent<HTMLTextAreaElement>) =>\n e.nativeEvent.isComposing || e.keyCode === 229 || composingRef.current;\n\n const submit = () => {\n const text = currentValue.trim();\n if (!text || disabled || atLimit) return;\n onSubmit?.(currentValue);\n if (!isControlled) setInternalValue('');\n };\n\n const rootRef = useRef<HTMLDivElement>(null);\n useImperativeHandle(ref, () => rootRef.current as HTMLDivElement, []);\n\n const agentHandle = useMemo<ChatInputHandle>(\n () => ({\n getValue: () => currentValue,\n isEmpty: () => !currentValue.trim(),\n setValue: (next: string) => {\n if (!isControlled) setInternalValue(next);\n },\n clear: () => {\n if (!isControlled) setInternalValue('');\n },\n submit: () => {\n submit();\n },\n focus: () => {\n innerRef.current?.focus();\n },\n }),\n // `submit` is a local closure that always sees the latest currentValue\n // via React's render cycle — depend on currentValue + isControlled so\n // the handle picks up new values across renders.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [currentValue, isControlled],\n );\n useAgentRegistration(chatInputAgent, agentHandle, id);\n\n const handleKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n if (isIMEKey(e)) return;\n\n if (e.key === 'Enter') {\n const explicitSubmit = e.metaKey || e.ctrlKey;\n const plainEnterSubmits = submitOnEnter && !e.shiftKey;\n if (explicitSubmit || plainEnterSubmits) {\n e.preventDefault();\n submit();\n }\n }\n };\n\n const handleAttach = () => {\n fileInputRef.current?.click();\n };\n\n const handleFilePick = (e: ChangeEvent<HTMLInputElement>) => {\n if (e.target.files && e.target.files.length > 0) {\n onAttach?.(e.target.files);\n }\n // Reset so picking the same file twice still fires change.\n e.target.value = '';\n };\n\n const effectiveId = id ?? textareaId;\n const labelId = `${effectiveId}-label`;\n const counterId = hasMaxLength ? `${effectiveId}-counter` : undefined;\n const hintId = `${effectiveId}-hint`;\n\n const resolvedPlaceholder = placeholder ?? t('chat.input.placeholder');\n const resolvedLabel = label ?? t('chat.prompt');\n\n return (\n <div\n ref={rootRef}\n data-component=\"chat-input\"\n data-component-id={id}\n className={rootVariants({ size, className })}\n >\n <label\n id={labelId}\n htmlFor={effectiveId}\n className={\n label\n ? 'type-label ds:ps-[var(--spacing-sm)] ds:pt-[var(--spacing-sm)]'\n : 'ds:sr-only'\n }\n >\n {resolvedLabel}\n </label>\n <textarea\n ref={setRefs}\n id={effectiveId}\n value={isControlled ? currentValue : undefined}\n defaultValue={!isControlled ? defaultValue : undefined}\n disabled={disabled}\n rows={minRows}\n maxLength={maxLength}\n placeholder={resolvedPlaceholder}\n aria-labelledby={labelId}\n aria-describedby={\n [counterId, hintId].filter(Boolean).join(' ') || undefined\n }\n aria-invalid={atLimit || undefined}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onCompositionStart={handleCompositionStart}\n onCompositionEnd={handleCompositionEnd}\n className={[\n 'ds:w-full ds:resize-none ds:bg-transparent',\n 'ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)] ds:pt-[var(--spacing-sm)] ds:pb-[var(--spacing-xs)]',\n 'ds:placeholder:text-[color:var(--muted-foreground)]',\n 'ds:leading-[var(--line-height-base)]',\n 'ds:disabled:opacity-50 ds:disabled:cursor-not-allowed',\n // Tokenised focus ring on the textarea itself — the 1px border\n // shift on the wrapper alone fails the 3px accessible-theme\n // requirement. See a11y-critical-fixes.mdx.\n 'ds:outline-none',\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:rounded-[var(--radius-sm)]',\n 'ds:forced-colors:focus-visible:outline-[CanvasText]',\n ].join(' ')}\n {...rest}\n />\n <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)]\">\n {onAttach ? (\n <>\n <input\n ref={fileInputRef}\n type=\"file\"\n className=\"ds:sr-only\"\n multiple\n accept={accept}\n onChange={handleFilePick}\n />\n <IconButton\n icon={<Paperclip />}\n aria-label={t('chat.input.attach')}\n intent=\"ghost\"\n size=\"sm\"\n onClick={handleAttach}\n disabled={disabled}\n />\n </>\n ) : null}\n {toolbar}\n <div className=\"ds:ms-auto ds:inline-flex ds:items-center ds:gap-[var(--spacing-sm)]\">\n {showCounter ? (\n <span\n id={counterId}\n aria-live=\"polite\"\n className={[\n 'ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]',\n 'type-meta ds:tabular-nums',\n atLimit\n ? 'ds:text-[color:var(--destructive)]'\n : 'ds:text-[color:var(--muted-foreground)]',\n ].join(' ')}\n >\n {atLimit ? (\n // Icon pairs with --destructive colour so the at-limit\n // state is not conveyed by hue alone (WCAG 1.4.1).\n <AlertCircle aria-hidden=\"true\" className=\"ds:size-3.5\" />\n ) : null}\n {t('chat.input.remaining', { count: remaining })}\n </span>\n ) : null}\n <span id={hintId} className=\"ds:sr-only\">\n {t('chat.input.sendHint')}\n </span>\n <IconButton\n icon={<Send />}\n aria-label={t('chat.send')}\n intent=\"primary\"\n size=\"sm\"\n disabled={disabled || !currentValue.trim() || atLimit}\n onClick={submit}\n aria-keyshortcuts=\"Meta+Enter Control+Enter\"\n />\n </div>\n </div>\n </div>\n );\n },\n);\n\nChatInput.displayName = 'ChatInput';\n"],"names":["__iconNode","Paperclip","createLucideIcon","chatInputAgent","handle","args","rootVariants","cva","graphemeCount","value","locale","seg","n","_s","ChatInput","forwardRef","size","defaultValue","maxLength","submitOnEnter","minRows","maxRows","onSubmit","onAttach","accept","disabled","toolbar","label","placeholder","className","onChange","onKeyDown","onCompositionStart","onCompositionEnd","id","rest","ref","t","i18n","useTranslation","textareaId","useId","composingRef","useRef","fileInputRef","innerRef","setRefs","useCallback","node","isControlled","internalValue","setInternalValue","useState","currentValue","count","hasMaxLength","remaining","showCounter","atLimit","resize","el","styles","lineHeight","padTop","padBot","borderTop","borderBot","chrome","minH","maxH","next","useLayoutEffect","handleChange","handleCompositionStart","handleCompositionEnd","isIMEKey","submit","rootRef","useImperativeHandle","agentHandle","useMemo","_a","useAgentRegistration","handleKeyDown","explicitSubmit","plainEnterSubmits","handleAttach","handleFilePick","effectiveId","labelId","counterId","hintId","resolvedPlaceholder","resolvedLabel","jsxs","jsx","Fragment","IconButton","AlertCircle","Send"],"mappings":"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","x_google_ignoreList":[0]}