@alfadocs/ui-kit-debug 0.1.9 → 0.2.1

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 (747) 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-BLWruOxK.js +459 -0
  53. package/dist/_chunks/combobox-BLWruOxK.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-CrVefV0M.js} +124 -117
  80. package/dist/_chunks/freemium-paywall-CrVefV0M.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-BcYW1eNM.js} +48 -35
  93. package/dist/_chunks/link-BcYW1eNM.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-DjvsB_3U.js} +58 -55
  102. package/dist/_chunks/message-card-DjvsB_3U.js.map +1 -0
  103. package/dist/_chunks/{message-tray-xHUCra-Y.js → message-tray-BbnAzlLH.js} +86 -91
  104. package/dist/_chunks/message-tray-BbnAzlLH.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-uTPEvAQS.js} +22 -22
  111. package/dist/_chunks/notification-card-uTPEvAQS.js.map +1 -0
  112. package/dist/_chunks/{notification-tray-DTXMq42J.js → notification-tray-PGtMqXbP.js} +84 -80
  113. package/dist/_chunks/notification-tray-PGtMqXbP.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-B_BdHwjb.js} +197 -188
  125. package/dist/_chunks/payment-form-B_BdHwjb.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/transaction-chip-DE6DITun.js +196 -0
  215. package/dist/_chunks/transaction-chip-DE6DITun.js.map +1 -0
  216. package/dist/_chunks/{transcript-panel.agent-BXEYP6w-.js → transcript-panel-Bx5ANMsv.js} +110 -101
  217. package/dist/_chunks/transcript-panel-Bx5ANMsv.js.map +1 -0
  218. package/dist/_chunks/{typing-indicator-CbUBf-Dx.js → typing-indicator-BZ5jXZPn.js} +27 -5
  219. package/dist/_chunks/typing-indicator-BZ5jXZPn.js.map +1 -0
  220. package/dist/_chunks/use-prefers-reduced-motion-BMwIQRjB.js.map +1 -1
  221. package/dist/_chunks/{use-theme-BMUhembX.js → use-theme-B1cwAXJR.js} +2 -5
  222. package/dist/_chunks/use-theme-B1cwAXJR.js.map +1 -0
  223. package/dist/_chunks/{visually-hidden-Bw7vBHLm.js → visually-hidden-BHxEUGyT.js} +11 -2
  224. package/dist/_chunks/{visually-hidden-Bw7vBHLm.js.map → visually-hidden-BHxEUGyT.js.map} +1 -1
  225. package/dist/_chunks/{warning-stack-8Pa3pekh.js → warning-stack-VygGHSqC.js} +11 -13
  226. package/dist/_chunks/warning-stack-VygGHSqC.js.map +1 -0
  227. package/dist/_chunks/{workflow-map-D2A7rTEG.js → workflow-map-C-nlogPC.js} +430 -452
  228. package/dist/_chunks/workflow-map-C-nlogPC.js.map +1 -0
  229. package/dist/agent-catalog.json +594 -15
  230. package/dist/brand/logo-asset/Alfadocs_Logo_BW.d.ts.map +1 -1
  231. package/dist/brand/logo-asset/Alfadocs_Logo_Main.d.ts.map +1 -1
  232. package/dist/brand/logo-asset/Alfadocs_Logo_Mark.d.ts.map +1 -1
  233. package/dist/brand/logo-asset/Alfadocs_Logo_Neg.d.ts.map +1 -1
  234. package/dist/brand/logo-asset/Alfadocs_Logo_Purple.d.ts.map +1 -1
  235. package/dist/components/_shared/date-locale.d.ts.map +1 -1
  236. package/dist/components/_shared/index.d.ts +2 -2
  237. package/dist/components/_shared/index.d.ts.map +1 -1
  238. package/dist/components/_shared/normalize-diacritics.d.ts.map +1 -1
  239. package/dist/components/_shared/safe-html.d.ts.map +1 -1
  240. package/dist/components/_shared/safe-image-src.d.ts.map +1 -1
  241. package/dist/components/_shared/use-focus-trap.d.ts.map +1 -1
  242. package/dist/components/accordion/accordion.agent.d.ts.map +1 -1
  243. package/dist/components/accordion/accordion.d.ts.map +1 -1
  244. package/dist/components/accordion/index.d.ts +1 -1
  245. package/dist/components/accordion/index.d.ts.map +1 -1
  246. package/dist/components/accordion/index.js +5 -6
  247. package/dist/components/accordion/index.js.map +1 -1
  248. package/dist/components/agenda-card/agenda-card.d.ts.map +1 -1
  249. package/dist/components/agenda-card/index.js +1 -1
  250. package/dist/components/agenda-tray/agenda-tray.agent.d.ts.map +1 -1
  251. package/dist/components/agenda-tray/agenda-tray.d.ts +1 -1
  252. package/dist/components/agenda-tray/agenda-tray.d.ts.map +1 -1
  253. package/dist/components/agenda-tray/index.js +1 -1
  254. package/dist/components/ai-prompt-input/ai-prompt-input.agent.d.ts.map +1 -1
  255. package/dist/components/ai-prompt-input/ai-prompt-input.d.ts +1 -1
  256. package/dist/components/ai-prompt-input/ai-prompt-input.d.ts.map +1 -1
  257. package/dist/components/ai-prompt-input/index.js +1 -1
  258. package/dist/components/alert/alert.d.ts.map +1 -1
  259. package/dist/components/alert/index.d.ts +1 -1
  260. package/dist/components/alert/index.d.ts.map +1 -1
  261. package/dist/components/alert/index.js +1 -1
  262. package/dist/components/app-frame/app-frame.d.ts.map +1 -1
  263. package/dist/components/app-frame/index.js +1 -1
  264. package/dist/components/aspect-ratio/aspect-ratio.d.ts.map +1 -1
  265. package/dist/components/audio-recorder/audio-recorder.agent.d.ts.map +1 -1
  266. package/dist/components/audio-recorder/audio-recorder.d.ts.map +1 -1
  267. package/dist/components/audio-recorder/index.js +1 -1
  268. package/dist/components/audio-visualiser/audio-visualiser.d.ts.map +1 -1
  269. package/dist/components/audio-visualiser/index.js +1 -1
  270. package/dist/components/autocomplete/autocomplete.agent.d.ts.map +1 -1
  271. package/dist/components/autocomplete/autocomplete.d.ts.map +1 -1
  272. package/dist/components/autocomplete/index.js +1 -1
  273. package/dist/components/avatar/avatar.d.ts.map +1 -1
  274. package/dist/components/badge/badge.d.ts.map +1 -1
  275. package/dist/components/badge/index.js +1 -1
  276. package/dist/components/breadcrumb/breadcrumb.agent.d.ts.map +1 -1
  277. package/dist/components/breadcrumb/breadcrumb.d.ts +1 -1
  278. package/dist/components/breadcrumb/breadcrumb.d.ts.map +1 -1
  279. package/dist/components/breadcrumb/index.js +1 -1
  280. package/dist/components/button/button.agent.d.ts.map +1 -1
  281. package/dist/components/button/button.d.ts.map +1 -1
  282. package/dist/components/button/icon-button.d.ts.map +1 -1
  283. package/dist/components/button/index.js +2 -2
  284. package/dist/components/button-group/button-group.d.ts.map +1 -1
  285. package/dist/components/calendar/calendar.agent.d.ts.map +1 -1
  286. package/dist/components/calendar/calendar.d.ts.map +1 -1
  287. package/dist/components/calendar/contrast-warning.d.ts.map +1 -1
  288. package/dist/components/calendar/index.js +1 -1
  289. package/dist/components/card/card.d.ts.map +1 -1
  290. package/dist/components/card/index.js +1 -1
  291. package/dist/components/chart/chart.agent.d.ts.map +1 -1
  292. package/dist/components/chart/chart.d.ts.map +1 -1
  293. package/dist/components/chart/index.d.ts +1 -1
  294. package/dist/components/chart/index.d.ts.map +1 -1
  295. package/dist/components/chart/index.js +1 -1
  296. package/dist/components/chat-container/chat-container.d.ts +1 -1
  297. package/dist/components/chat-container/chat-container.d.ts.map +1 -1
  298. package/dist/components/chat-container/index.js +2 -3
  299. package/dist/components/chat-container/index.js.map +1 -1
  300. package/dist/components/chat-input/chat-input.d.ts +1 -1
  301. package/dist/components/chat-input/chat-input.d.ts.map +1 -1
  302. package/dist/components/chat-input/index.js +3 -4
  303. package/dist/components/chat-input/index.js.map +1 -1
  304. package/dist/components/chat-message/chat-message.d.ts.map +1 -1
  305. package/dist/components/chat-message/index.js +1 -1
  306. package/dist/components/checkbox/checkbox.d.ts.map +1 -1
  307. package/dist/components/checkbox-group/checkbox-group.agent.d.ts.map +1 -1
  308. package/dist/components/checkbox-group/checkbox-group.d.ts.map +1 -1
  309. package/dist/components/checkbox-group/index.d.ts +1 -1
  310. package/dist/components/checkbox-group/index.d.ts.map +1 -1
  311. package/dist/components/collapsible/collapsible.d.ts +1 -1
  312. package/dist/components/collapsible/collapsible.d.ts.map +1 -1
  313. package/dist/components/collapsible/index.d.ts +1 -1
  314. package/dist/components/collapsible/index.d.ts.map +1 -1
  315. package/dist/components/collapsible/index.js +1 -1
  316. package/dist/components/color-picker/color-picker.agent.d.ts.map +1 -1
  317. package/dist/components/color-picker/color-picker.d.ts.map +1 -1
  318. package/dist/components/color-picker/index.js +1 -1
  319. package/dist/components/combobox/combobox.agent.d.ts.map +1 -1
  320. package/dist/components/combobox/combobox.d.ts.map +1 -1
  321. package/dist/components/combobox/index.d.ts +1 -1
  322. package/dist/components/combobox/index.d.ts.map +1 -1
  323. package/dist/components/combobox/index.js +1 -1
  324. package/dist/components/command-palette/command-palette.d.ts +46 -13
  325. package/dist/components/command-palette/command-palette.d.ts.map +1 -1
  326. package/dist/components/command-palette/index.js +1 -1
  327. package/dist/components/data-table/cell-renderers/actions-cell-renderer.d.ts.map +1 -1
  328. package/dist/components/data-table/cell-renderers/balance-cell-renderer.d.ts.map +1 -1
  329. package/dist/components/data-table/cell-renderers/color-dot-cell-renderer.d.ts.map +1 -1
  330. package/dist/components/data-table/cell-renderers/currency-cell-renderer.d.ts.map +1 -1
  331. package/dist/components/data-table/cell-renderers/date-cell-renderer.d.ts.map +1 -1
  332. package/dist/components/data-table/cell-renderers/link-cell-renderer.d.ts.map +1 -1
  333. package/dist/components/data-table/cell-renderers/toggle-cell-renderer.d.ts.map +1 -1
  334. package/dist/components/data-table/data-table.agent.d.ts.map +1 -1
  335. package/dist/components/data-table/data-table.d.ts +3 -1
  336. package/dist/components/data-table/data-table.d.ts.map +1 -1
  337. package/dist/components/data-table/index.js +1 -1
  338. package/dist/components/data-table/toolbar.d.ts +6 -5
  339. package/dist/components/data-table/toolbar.d.ts.map +1 -1
  340. package/dist/components/date-picker/date-picker.d.ts +1 -1
  341. package/dist/components/date-picker/date-picker.d.ts.map +1 -1
  342. package/dist/components/date-picker/index.d.ts +1 -1
  343. package/dist/components/date-picker/index.d.ts.map +1 -1
  344. package/dist/components/date-picker/index.js +1 -1
  345. package/dist/components/date-range-picker/date-range-picker.agent.d.ts.map +1 -1
  346. package/dist/components/date-range-picker/date-range-picker.d.ts.map +1 -1
  347. package/dist/components/date-range-picker/index.js +1 -1
  348. package/dist/components/date-time-picker/date-time-picker.d.ts.map +1 -1
  349. package/dist/components/date-time-picker/index.d.ts +1 -1
  350. package/dist/components/date-time-picker/index.d.ts.map +1 -1
  351. package/dist/components/date-time-picker/index.js +1 -1
  352. package/dist/components/description-list/description-list.d.ts +1 -2
  353. package/dist/components/description-list/description-list.d.ts.map +1 -1
  354. package/dist/components/description-list/index.js +1 -1
  355. package/dist/components/dialog/dialog.agent.d.ts.map +1 -1
  356. package/dist/components/dialog/dialog.d.ts +2 -2
  357. package/dist/components/dialog/dialog.d.ts.map +1 -1
  358. package/dist/components/dialog/index.js +1 -1
  359. package/dist/components/dropdown-menu/dropdown-menu.d.ts +11 -16
  360. package/dist/components/dropdown-menu/dropdown-menu.d.ts.map +1 -1
  361. package/dist/components/dropdown-menu/index.js +3 -4
  362. package/dist/components/dropdown-menu/index.js.map +1 -1
  363. package/dist/components/empty-state/empty-state.d.ts.map +1 -1
  364. package/dist/components/empty-state/index.js +1 -1
  365. package/dist/components/file-upload/file-upload.agent.d.ts.map +1 -1
  366. package/dist/components/file-upload/file-upload.d.ts.map +1 -1
  367. package/dist/components/file-upload/index.d.ts +1 -1
  368. package/dist/components/file-upload/index.d.ts.map +1 -1
  369. package/dist/components/file-upload/index.js +1 -1
  370. package/dist/components/flag/flag.d.ts.map +1 -1
  371. package/dist/components/floating-action-button/floating-action-button.d.ts.map +1 -1
  372. package/dist/components/floating-action-button/index.js +1 -1
  373. package/dist/components/form-field/form-field-context.d.ts.map +1 -1
  374. package/dist/components/form-field/form-field.d.ts.map +1 -1
  375. package/dist/components/form-field/index.js +2 -2
  376. package/dist/components/freemium-paywall/freemium-paywall.agent.d.ts.map +1 -1
  377. package/dist/components/freemium-paywall/freemium-paywall.d.ts +1 -1
  378. package/dist/components/freemium-paywall/freemium-paywall.d.ts.map +1 -1
  379. package/dist/components/freemium-paywall/index.js +1 -1
  380. package/dist/components/header/header.d.ts.map +1 -1
  381. package/dist/components/header/index.js +1 -1
  382. package/dist/components/icon-button/index.js +1 -1
  383. package/dist/components/icon-button-group/icon-button-group.d.ts.map +1 -1
  384. package/dist/components/index.d.ts +1 -0
  385. package/dist/components/index.d.ts.map +1 -1
  386. package/dist/components/kbd/index.js +1 -1
  387. package/dist/components/kbd/kbd.d.ts.map +1 -1
  388. package/dist/components/key-value-pair/index.js +1 -1
  389. package/dist/components/key-value-pair/key-value-pair.d.ts.map +1 -1
  390. package/dist/components/link/index.js +1 -1
  391. package/dist/components/link/link.d.ts +1 -0
  392. package/dist/components/link/link.d.ts.map +1 -1
  393. package/dist/components/list/index.js +1 -1
  394. package/dist/components/list/list.agent.d.ts.map +1 -1
  395. package/dist/components/list/list.d.ts.map +1 -1
  396. package/dist/components/live-region/live-region.d.ts.map +1 -1
  397. package/dist/components/logo/index.js +1 -1
  398. package/dist/components/logo/logo.d.ts.map +1 -1
  399. package/dist/components/matrix-rain/index.js +1 -1
  400. package/dist/components/matrix-rain/matrix-rain.d.ts.map +1 -1
  401. package/dist/components/message-card/index.d.ts +1 -1
  402. package/dist/components/message-card/index.d.ts.map +1 -1
  403. package/dist/components/message-card/index.js +1 -1
  404. package/dist/components/message-card/message-card.d.ts.map +1 -1
  405. package/dist/components/message-tray/index.js +1 -1
  406. package/dist/components/message-tray/message-tray.agent.d.ts.map +1 -1
  407. package/dist/components/message-tray/message-tray.d.ts +1 -1
  408. package/dist/components/message-tray/message-tray.d.ts.map +1 -1
  409. package/dist/components/multi-select/index.js +1 -1
  410. package/dist/components/multi-select/multi-select.agent.d.ts.map +1 -1
  411. package/dist/components/multi-select/multi-select.d.ts.map +1 -1
  412. package/dist/components/navigation-menu/index.js +1 -1
  413. package/dist/components/navigation-menu/navigation-menu.agent.d.ts.map +1 -1
  414. package/dist/components/navigation-menu/navigation-menu.d.ts +1 -1
  415. package/dist/components/navigation-menu/navigation-menu.d.ts.map +1 -1
  416. package/dist/components/notification-card/index.d.ts +1 -1
  417. package/dist/components/notification-card/index.d.ts.map +1 -1
  418. package/dist/components/notification-card/index.js +1 -1
  419. package/dist/components/notification-card/notification-card.d.ts.map +1 -1
  420. package/dist/components/notification-tray/index.js +1 -1
  421. package/dist/components/notification-tray/notification-tray.agent.d.ts.map +1 -1
  422. package/dist/components/notification-tray/notification-tray.d.ts +1 -1
  423. package/dist/components/notification-tray/notification-tray.d.ts.map +1 -1
  424. package/dist/components/number-input/index.js +1 -1
  425. package/dist/components/number-input/number-input.d.ts.map +1 -1
  426. package/dist/components/number-input/use-locale-number.d.ts.map +1 -1
  427. package/dist/components/otp-input/index.js +1 -1
  428. package/dist/components/otp-input/otp-input.agent.d.ts.map +1 -1
  429. package/dist/components/otp-input/otp-input.d.ts.map +1 -1
  430. package/dist/components/pagination/index.js +1 -1
  431. package/dist/components/pagination/pagination.d.ts +4 -6
  432. package/dist/components/pagination/pagination.d.ts.map +1 -1
  433. package/dist/components/password-input/index.js +1 -1
  434. package/dist/components/password-input/password-input.agent.d.ts.map +1 -1
  435. package/dist/components/password-input/password-input.d.ts.map +1 -1
  436. package/dist/components/payment-form/index.js +7 -8
  437. package/dist/components/payment-form/index.js.map +1 -1
  438. package/dist/components/payment-form/payment-form.agent.d.ts.map +1 -1
  439. package/dist/components/payment-form/payment-form.d.ts +1 -1
  440. package/dist/components/payment-form/payment-form.d.ts.map +1 -1
  441. package/dist/components/pdf-viewer/index.js +1 -1
  442. package/dist/components/pdf-viewer/pdf-viewer.agent.d.ts.map +1 -1
  443. package/dist/components/pdf-viewer/pdf-viewer.d.ts.map +1 -1
  444. package/dist/components/phone-input/index.d.ts +1 -1
  445. package/dist/components/phone-input/index.d.ts.map +1 -1
  446. package/dist/components/phone-input/index.js +1 -1
  447. package/dist/components/phone-input/phone-input.agent.d.ts.map +1 -1
  448. package/dist/components/phone-input/phone-input.d.ts.map +1 -1
  449. package/dist/components/popover/index.js +3 -4
  450. package/dist/components/popover/index.js.map +1 -1
  451. package/dist/components/popover/popover.d.ts.map +1 -1
  452. package/dist/components/privacy-lock/index.js +1 -1
  453. package/dist/components/privacy-lock/privacy-lock.d.ts +1 -1
  454. package/dist/components/privacy-lock/privacy-lock.d.ts.map +1 -1
  455. package/dist/components/progress/index.js +3 -4
  456. package/dist/components/progress/index.js.map +1 -1
  457. package/dist/components/progress/progress.d.ts.map +1 -1
  458. package/dist/components/radio-group/radio-group.d.ts.map +1 -1
  459. package/dist/components/radio-group/radio.d.ts.map +1 -1
  460. package/dist/components/recaptcha-widget/index.js +1 -1
  461. package/dist/components/recaptcha-widget/recaptcha-widget.agent.d.ts.map +1 -1
  462. package/dist/components/recaptcha-widget/recaptcha-widget.d.ts.map +1 -1
  463. package/dist/components/resizable/index.d.ts +1 -1
  464. package/dist/components/resizable/index.d.ts.map +1 -1
  465. package/dist/components/resizable/index.js +1 -1
  466. package/dist/components/resizable/resizable-context.d.ts.map +1 -1
  467. package/dist/components/resizable/resizable.agent.d.ts.map +1 -1
  468. package/dist/components/resizable/resizable.d.ts.map +1 -1
  469. package/dist/components/rich-text-editor/index.js +1 -1
  470. package/dist/components/rich-text-editor/rich-text-editor.d.ts.map +1 -1
  471. package/dist/components/scroll-area/index.js +1 -1
  472. package/dist/components/scroll-area/scroll-area.d.ts.map +1 -1
  473. package/dist/components/search-bar/index.js +1 -1
  474. package/dist/components/search-bar/search-bar.agent.d.ts.map +1 -1
  475. package/dist/components/search-bar/search-bar.d.ts +1 -1
  476. package/dist/components/search-bar/search-bar.d.ts.map +1 -1
  477. package/dist/components/search-input/index.js +1 -1
  478. package/dist/components/search-input/search-input.agent.d.ts.map +1 -1
  479. package/dist/components/search-input/search-input.d.ts.map +1 -1
  480. package/dist/components/select/index.js +1 -1
  481. package/dist/components/select/select.agent.d.ts.map +1 -1
  482. package/dist/components/select/select.d.ts +1 -1
  483. package/dist/components/select/select.d.ts.map +1 -1
  484. package/dist/components/separator/index.js +1 -1
  485. package/dist/components/separator/separator.d.ts.map +1 -1
  486. package/dist/components/sheet/index.js +3 -4
  487. package/dist/components/sheet/index.js.map +1 -1
  488. package/dist/components/sheet/sheet.agent.d.ts.map +1 -1
  489. package/dist/components/sheet/sheet.d.ts +2 -2
  490. package/dist/components/sheet/sheet.d.ts.map +1 -1
  491. package/dist/components/sidebar/index.js +7 -8
  492. package/dist/components/sidebar/index.js.map +1 -1
  493. package/dist/components/sidebar/sidebar.agent.d.ts.map +1 -1
  494. package/dist/components/sidebar/sidebar.d.ts +0 -2
  495. package/dist/components/sidebar/sidebar.d.ts.map +1 -1
  496. package/dist/components/sign-in-with-alfadocs-button/index.js +1 -1
  497. package/dist/components/sign-in-with-alfadocs-button/sign-in-with-alfadocs-button.d.ts.map +1 -1
  498. package/dist/components/signature-capture/index.js +1 -1
  499. package/dist/components/signature-capture/signature-capture.d.ts.map +1 -1
  500. package/dist/components/skeleton/index.js +1 -1
  501. package/dist/components/skeleton/skeleton.d.ts.map +1 -1
  502. package/dist/components/skip-link/skip-link.d.ts.map +1 -1
  503. package/dist/components/slider/index.js +1 -1
  504. package/dist/components/slider/slider.agent.d.ts.map +1 -1
  505. package/dist/components/slider/slider.d.ts.map +1 -1
  506. package/dist/components/slot-grid/index.js +1 -1
  507. package/dist/components/slot-grid/slot-grid.d.ts.map +1 -1
  508. package/dist/components/sparkline/index.js +1 -1
  509. package/dist/components/sparkline/sparkline.d.ts.map +1 -1
  510. package/dist/components/sparkline/use-linear-trend.d.ts.map +1 -1
  511. package/dist/components/spinner/index.js +1 -1
  512. package/dist/components/spinner/spinner.d.ts.map +1 -1
  513. package/dist/components/stat/index.js +1 -1
  514. package/dist/components/stat/stat.d.ts.map +1 -1
  515. package/dist/components/stepper-accordion/stepper-accordion.agent.d.ts.map +1 -1
  516. package/dist/components/stepper-accordion/stepper-accordion.d.ts.map +1 -1
  517. package/dist/components/stepper-calendar/index.js +1 -1
  518. package/dist/components/stepper-calendar/stepper-calendar.agent.d.ts.map +1 -1
  519. package/dist/components/stepper-calendar/stepper-calendar.d.ts +1 -1
  520. package/dist/components/stepper-calendar/stepper-calendar.d.ts.map +1 -1
  521. package/dist/components/stepper-progress/index.d.ts +1 -1
  522. package/dist/components/stepper-progress/index.d.ts.map +1 -1
  523. package/dist/components/stepper-progress/index.js +1 -2
  524. package/dist/components/stepper-progress/index.js.map +1 -1
  525. package/dist/components/stepper-progress/stepper-progress.agent.d.ts.map +1 -1
  526. package/dist/components/stepper-progress/stepper-progress.d.ts +1 -1
  527. package/dist/components/stepper-progress/stepper-progress.d.ts.map +1 -1
  528. package/dist/components/streaming-text/streaming-text.d.ts.map +1 -1
  529. package/dist/components/suggestion-chip/index.js +1 -1
  530. package/dist/components/suggestion-chip/suggestion-chip.agent.d.ts.map +1 -1
  531. package/dist/components/suggestion-chip/suggestion-chip.d.ts.map +1 -1
  532. package/dist/components/switch/index.js +1 -1
  533. package/dist/components/switch/switch.d.ts.map +1 -1
  534. package/dist/components/tabs/index.d.ts +1 -1
  535. package/dist/components/tabs/index.d.ts.map +1 -1
  536. package/dist/components/tabs/index.js +1 -1
  537. package/dist/components/tabs/tabs.d.ts.map +1 -1
  538. package/dist/components/tag/index.js +1 -1
  539. package/dist/components/tag/tag.d.ts.map +1 -1
  540. package/dist/components/task-card/index.js +1 -1
  541. package/dist/components/task-card/task-card.d.ts.map +1 -1
  542. package/dist/components/task-tray/index.js +1 -1
  543. package/dist/components/task-tray/task-tray.agent.d.ts.map +1 -1
  544. package/dist/components/task-tray/task-tray.d.ts +1 -1
  545. package/dist/components/task-tray/task-tray.d.ts.map +1 -1
  546. package/dist/components/text-area/index.js +1 -1
  547. package/dist/components/text-area/text-area.d.ts.map +1 -1
  548. package/dist/components/text-input/index.js +1 -1
  549. package/dist/components/text-input/text-input.d.ts.map +1 -1
  550. package/dist/components/theme-root/index.js +1 -1
  551. package/dist/components/theme-root/theme-root.d.ts.map +1 -1
  552. package/dist/components/theme-toggle/index.js +1 -1
  553. package/dist/components/theme-toggle/theme-toggle.d.ts +1 -1
  554. package/dist/components/theme-toggle/theme-toggle.d.ts.map +1 -1
  555. package/dist/components/time-picker/index.js +1 -1
  556. package/dist/components/time-picker/time-picker.agent.d.ts.map +1 -1
  557. package/dist/components/time-picker/time-picker.d.ts +1 -1
  558. package/dist/components/time-picker/time-picker.d.ts.map +1 -1
  559. package/dist/components/timeline/index.js +1 -1
  560. package/dist/components/timeline/timeline.agent.d.ts.map +1 -1
  561. package/dist/components/timeline/timeline.d.ts +1 -1
  562. package/dist/components/timeline/timeline.d.ts.map +1 -1
  563. package/dist/components/timestamp/timestamp.d.ts.map +1 -1
  564. package/dist/components/toast/index.js +1 -1
  565. package/dist/components/toast/toast.agent.d.ts.map +1 -1
  566. package/dist/components/toast/toast.d.ts.map +1 -1
  567. package/dist/components/tooth-scheme/index.js +1 -1
  568. package/dist/components/tooth-scheme/tooth-data.d.ts.map +1 -1
  569. package/dist/components/tooth-scheme/tooth-scheme.agent.d.ts.map +1 -1
  570. package/dist/components/tooth-scheme/tooth-scheme.d.ts +1 -1
  571. package/dist/components/tooth-scheme/tooth-scheme.d.ts.map +1 -1
  572. package/dist/components/transaction-chip/index.d.ts +3 -0
  573. package/dist/components/transaction-chip/index.d.ts.map +1 -0
  574. package/dist/components/transaction-chip/index.js +5 -0
  575. package/dist/components/transaction-chip/index.js.map +1 -0
  576. package/dist/components/transaction-chip/transaction-chip.d.ts +30 -0
  577. package/dist/components/transaction-chip/transaction-chip.d.ts.map +1 -0
  578. package/dist/components/transcript-panel/index.js +1 -1
  579. package/dist/components/transcript-panel/transcript-panel.agent.d.ts.map +1 -1
  580. package/dist/components/transcript-panel/transcript-panel.d.ts +1 -1
  581. package/dist/components/transcript-panel/transcript-panel.d.ts.map +1 -1
  582. package/dist/components/typing-indicator/index.js +1 -1
  583. package/dist/components/typing-indicator/typing-indicator.d.ts.map +1 -1
  584. package/dist/components/visually-hidden/index.js +1 -1
  585. package/dist/components/visually-hidden/visually-hidden.d.ts.map +1 -1
  586. package/dist/components/warning-stack/index.js +1 -1
  587. package/dist/components/warning-stack/warning-stack.d.ts.map +1 -1
  588. package/dist/components/workflow/index.js +1 -1
  589. package/dist/components/workflow/workflow-card.d.ts.map +1 -1
  590. package/dist/components/workflow/workflow-editor.d.ts +1 -1
  591. package/dist/components/workflow/workflow-editor.d.ts.map +1 -1
  592. package/dist/components/workflow/workflow-map.d.ts.map +1 -1
  593. package/dist/components/workflow/workflow-types.d.ts.map +1 -1
  594. package/dist/components/workflow/workflow.agent.d.ts.map +1 -1
  595. package/dist/hooks/index.js +1 -1
  596. package/dist/hooks/use-prefers-reduced-motion.d.ts.map +1 -1
  597. package/dist/hooks/use-theme.d.ts.map +1 -1
  598. package/dist/i18n/config.d.ts.map +1 -1
  599. package/dist/i18n/config.js +36 -0
  600. package/dist/i18n/config.js.map +1 -1
  601. package/dist/i18n/resources.d.ts +36 -0
  602. package/dist/i18n/resources.d.ts.map +1 -1
  603. package/dist/index.js +394 -402
  604. package/dist/index.js.map +1 -1
  605. package/dist/locales/de.json +12 -0
  606. package/dist/locales/en.json +12 -0
  607. package/dist/locales/it.json +12 -0
  608. package/dist/patterns/leo-assistant/index.js +1 -1
  609. package/dist/patterns/leo-assistant/leo-chat-surface.d.ts.map +1 -1
  610. package/dist/patterns/leo-assistant/leo-sidebar.d.ts.map +1 -1
  611. package/dist/patterns/patient-shell/index.js +1 -1
  612. package/dist/patterns/patient-shell/patient-shell.d.ts.map +1 -1
  613. package/dist/safe-html/index.js +20 -3
  614. package/dist/safe-html/index.js.map +1 -1
  615. package/dist/tokens/apexcharts-theme.d.ts.map +1 -1
  616. package/dist/tokens.css +2 -2
  617. package/package.json +12 -2
  618. package/dist/_chunks/accordion-BEnrZmAn.js +0 -120
  619. package/dist/_chunks/accordion-BEnrZmAn.js.map +0 -1
  620. package/dist/_chunks/accordion.agent-BTjeO1Sx.js +0 -52
  621. package/dist/_chunks/accordion.agent-BTjeO1Sx.js.map +0 -1
  622. package/dist/_chunks/agenda-card-DwLIxgi7.js.map +0 -1
  623. package/dist/_chunks/agenda-tray-DUvengGQ.js.map +0 -1
  624. package/dist/_chunks/ai-prompt-input.agent-0NHYLTWD.js.map +0 -1
  625. package/dist/_chunks/alert-BlOUMkXj.js.map +0 -1
  626. package/dist/_chunks/app-frame-6d7Lu4ea.js.map +0 -1
  627. package/dist/_chunks/audio-recorder.agent--VKeykUp.js.map +0 -1
  628. package/dist/_chunks/audio-visualiser-CeMPCZkd.js.map +0 -1
  629. package/dist/_chunks/autocomplete.agent-Dh7KioS6.js +0 -432
  630. package/dist/_chunks/autocomplete.agent-Dh7KioS6.js.map +0 -1
  631. package/dist/_chunks/badge-mrstWxve.js.map +0 -1
  632. package/dist/_chunks/balance-cell-renderer-5CA7zpAi.js.map +0 -1
  633. package/dist/_chunks/breadcrumb.agent-GM2hAKFX.js.map +0 -1
  634. package/dist/_chunks/button-7mLWcMp_.js.map +0 -1
  635. package/dist/_chunks/calendar-nGEgelJs.js.map +0 -1
  636. package/dist/_chunks/card-BEy58ZKp.js.map +0 -1
  637. package/dist/_chunks/chart.agent-_pRYS17d.js.map +0 -1
  638. package/dist/_chunks/chat-container-Dl0Kfy5a.js +0 -175
  639. package/dist/_chunks/chat-container-Dl0Kfy5a.js.map +0 -1
  640. package/dist/_chunks/chat-container.agent-CM4WModE.js +0 -27
  641. package/dist/_chunks/chat-container.agent-CM4WModE.js.map +0 -1
  642. package/dist/_chunks/chat-input-C_tMQv92.js +0 -252
  643. package/dist/_chunks/chat-input-C_tMQv92.js.map +0 -1
  644. package/dist/_chunks/chat-input.agent-Bsz3ckGa.js +0 -69
  645. package/dist/_chunks/chat-input.agent-Bsz3ckGa.js.map +0 -1
  646. package/dist/_chunks/chat-message-ByouZpPP.js.map +0 -1
  647. package/dist/_chunks/collapsible.agent-DkS1jVyn.js.map +0 -1
  648. package/dist/_chunks/color-picker-94qcBZqZ.js.map +0 -1
  649. package/dist/_chunks/combobox.agent-CAvUkkIe.js +0 -410
  650. package/dist/_chunks/combobox.agent-CAvUkkIe.js.map +0 -1
  651. package/dist/_chunks/command-palette.agent-HatEt_EM.js +0 -391
  652. package/dist/_chunks/command-palette.agent-HatEt_EM.js.map +0 -1
  653. package/dist/_chunks/date-range-picker-B2hGsffw.js.map +0 -1
  654. package/dist/_chunks/date-time-picker-Bzt0S8yO.js.map +0 -1
  655. package/dist/_chunks/description-list-DvJbp6Yg.js.map +0 -1
  656. package/dist/_chunks/dialog.agent-Daf1TTko.js +0 -179
  657. package/dist/_chunks/dialog.agent-Daf1TTko.js.map +0 -1
  658. package/dist/_chunks/dropdown-menu-C7AZipNz.js +0 -219
  659. package/dist/_chunks/dropdown-menu-C7AZipNz.js.map +0 -1
  660. package/dist/_chunks/dropdown-menu.agent-BcxIKOjK.js +0 -43
  661. package/dist/_chunks/dropdown-menu.agent-BcxIKOjK.js.map +0 -1
  662. package/dist/_chunks/empty-state-DQPtRp2b.js.map +0 -1
  663. package/dist/_chunks/file-upload.agent-DJaH2dHg.js +0 -681
  664. package/dist/_chunks/file-upload.agent-DJaH2dHg.js.map +0 -1
  665. package/dist/_chunks/floating-action-button-Cnw-f6AG.js.map +0 -1
  666. package/dist/_chunks/form-field-BfsPLTSc.js.map +0 -1
  667. package/dist/_chunks/form-field-context-94LwgYTQ.js.map +0 -1
  668. package/dist/_chunks/freemium-paywall.agent-_nQqLyRF.js.map +0 -1
  669. package/dist/_chunks/header-BGn1mRp8.js.map +0 -1
  670. package/dist/_chunks/icon-button-Wnnde5lc.js.map +0 -1
  671. package/dist/_chunks/kbd-8baVw3KU.js.map +0 -1
  672. package/dist/_chunks/key-value-pair-JRFS9Xrh.js.map +0 -1
  673. package/dist/_chunks/leo-sidebar-BwINPdix.js.map +0 -1
  674. package/dist/_chunks/link-QheANk74.js.map +0 -1
  675. package/dist/_chunks/list.agent-D0iWt4VI.js +0 -420
  676. package/dist/_chunks/list.agent-D0iWt4VI.js.map +0 -1
  677. package/dist/_chunks/logo-BpFoCL-s.js.map +0 -1
  678. package/dist/_chunks/matrix-rain-BEkvux64.js.map +0 -1
  679. package/dist/_chunks/message-card-qhoGv947.js.map +0 -1
  680. package/dist/_chunks/message-tray-xHUCra-Y.js.map +0 -1
  681. package/dist/_chunks/multi-select.agent-Do6CeQUT.js.map +0 -1
  682. package/dist/_chunks/navigation-menu.agent-D69ND6Qq.js.map +0 -1
  683. package/dist/_chunks/notification-card-CsVEYJE-.js.map +0 -1
  684. package/dist/_chunks/notification-tray-DTXMq42J.js.map +0 -1
  685. package/dist/_chunks/number-input-fvGmnRy9.js.map +0 -1
  686. package/dist/_chunks/otp-input-EglXOUue.js.map +0 -1
  687. package/dist/_chunks/pagination.agent-BkZQl45y.js.map +0 -1
  688. package/dist/_chunks/password-input-D6kuYXmr.js.map +0 -1
  689. package/dist/_chunks/payment-form-BWaXas8z.js.map +0 -1
  690. package/dist/_chunks/payment-form.agent-kuIfodCj.js +0 -31
  691. package/dist/_chunks/payment-form.agent-kuIfodCj.js.map +0 -1
  692. package/dist/_chunks/pdf-viewer.agent-BaGEDheA.js.map +0 -1
  693. package/dist/_chunks/phone-input-C8Op4sEc.js.map +0 -1
  694. package/dist/_chunks/popover-kFN8s84V.js +0 -229
  695. package/dist/_chunks/popover-kFN8s84V.js.map +0 -1
  696. package/dist/_chunks/popover.agent-K_d1cfbj.js +0 -39
  697. package/dist/_chunks/popover.agent-K_d1cfbj.js.map +0 -1
  698. package/dist/_chunks/privacy-lock.agent-C1i1-T58.js.map +0 -1
  699. package/dist/_chunks/progress-wNsqkw8I.js +0 -253
  700. package/dist/_chunks/progress-wNsqkw8I.js.map +0 -1
  701. package/dist/_chunks/progress.agent-C68rDOXL.js +0 -27
  702. package/dist/_chunks/progress.agent-C68rDOXL.js.map +0 -1
  703. package/dist/_chunks/recaptcha-widget.agent-BGHpU5zD.js.map +0 -1
  704. package/dist/_chunks/resizable.agent-CMwZzvsi.js +0 -456
  705. package/dist/_chunks/resizable.agent-CMwZzvsi.js.map +0 -1
  706. package/dist/_chunks/rich-text-editor.agent-DnE125Tz.js.map +0 -1
  707. package/dist/_chunks/scroll-area-DLr5w9Dd.js.map +0 -1
  708. package/dist/_chunks/search-bar.agent-DxFAxctc.js.map +0 -1
  709. package/dist/_chunks/search-input-Xw3cdWXW.js.map +0 -1
  710. package/dist/_chunks/select-DY1Cb2Tg.js.map +0 -1
  711. package/dist/_chunks/separator-B4wXDLNC.js.map +0 -1
  712. package/dist/_chunks/sheet-B9kH9pcI.js.map +0 -1
  713. package/dist/_chunks/sheet.agent-QAyTOxgk.js +0 -46
  714. package/dist/_chunks/sheet.agent-QAyTOxgk.js.map +0 -1
  715. package/dist/_chunks/sidebar-CHF5xr_P.js.map +0 -1
  716. package/dist/_chunks/sidebar.agent-C9TM_ZDZ.js +0 -49
  717. package/dist/_chunks/sidebar.agent-C9TM_ZDZ.js.map +0 -1
  718. package/dist/_chunks/sign-in-with-alfadocs-button-BN_FPGHT.js.map +0 -1
  719. package/dist/_chunks/signature-capture.agent-BpeDwFht.js.map +0 -1
  720. package/dist/_chunks/skeleton-dtqyF09N.js.map +0 -1
  721. package/dist/_chunks/slider-CcsQTZTA.js.map +0 -1
  722. package/dist/_chunks/slot-grid-D_l5VsHG.js.map +0 -1
  723. package/dist/_chunks/sparkline.agent-56Sj7nOP.js.map +0 -1
  724. package/dist/_chunks/spinner-GCcv67vh.js.map +0 -1
  725. package/dist/_chunks/stat-DUB6g90R.js.map +0 -1
  726. package/dist/_chunks/stepper-calendar.agent-9iT3ClIB.js.map +0 -1
  727. package/dist/_chunks/stepper-progress-Bmen-YXB.js +0 -149
  728. package/dist/_chunks/stepper-progress-Bmen-YXB.js.map +0 -1
  729. package/dist/_chunks/stepper-progress.agent-q9InWca4.js +0 -61
  730. package/dist/_chunks/stepper-progress.agent-q9InWca4.js.map +0 -1
  731. package/dist/_chunks/suggestion-chip-DhFrkRPj.js.map +0 -1
  732. package/dist/_chunks/switch-BYEH8I53.js.map +0 -1
  733. package/dist/_chunks/tabs.agent-h7NvsTR1.js.map +0 -1
  734. package/dist/_chunks/tag-BqidXKo3.js.map +0 -1
  735. package/dist/_chunks/task-card-CY5ztNkU.js.map +0 -1
  736. package/dist/_chunks/task-tray-CCoUdorl.js.map +0 -1
  737. package/dist/_chunks/text-area-C_M8wliK.js.map +0 -1
  738. package/dist/_chunks/text-input-BX39e6T6.js.map +0 -1
  739. package/dist/_chunks/theme-toggle.agent-btmXTWdW.js.map +0 -1
  740. package/dist/_chunks/time-picker-B8AMIrX7.js.map +0 -1
  741. package/dist/_chunks/timeline.agent-CRPza9wc.js.map +0 -1
  742. package/dist/_chunks/tooth-scheme.agent-CWrQBjJM.js.map +0 -1
  743. package/dist/_chunks/transcript-panel.agent-BXEYP6w-.js.map +0 -1
  744. package/dist/_chunks/typing-indicator-CbUBf-Dx.js.map +0 -1
  745. package/dist/_chunks/use-theme-BMUhembX.js.map +0 -1
  746. package/dist/_chunks/warning-stack-8Pa3pekh.js.map +0 -1
  747. package/dist/_chunks/workflow-map-D2A7rTEG.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-prompt-input-BBiDlEIS.js","sources":["../../src/components/ai-prompt-input/ai-prompt-input.agent.ts","../../src/components/ai-prompt-input/ai-prompt-input.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — AIPromptInput. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { AIPromptInputHandle } from './ai-prompt-input';\n\nexport const aiPromptInputAgent: AgentAdapter<AIPromptInputHandle> = {\n id: 'ai-prompt-input',\n capabilities: ['edit_inline', 'submit'],\n state: {\n value: {\n type: 'string',\n descriptionKey: 'ui.agent.aiPromptInput.state.value',\n description: 'Current text in the composer (no PHI processing).',\n read: (handle) => handle.getValue(),\n },\n isEmpty: {\n type: 'boolean',\n descriptionKey: 'ui.agent.aiPromptInput.state.isEmpty',\n description: 'True when the composer has no text and no attachments.',\n read: (handle) => handle.isEmpty(),\n },\n isSubmitting: {\n type: 'boolean',\n descriptionKey: 'ui.agent.aiPromptInput.state.isSubmitting',\n description:\n 'True while an onSubmit invocation is in flight (best-effort).',\n read: (handle) => handle.isSubmitting(),\n },\n },\n actions: {\n set_value: {\n safety: 'write',\n argsType: '{ value: string }',\n descriptionKey: 'ui.agent.aiPromptInput.actions.setValue',\n description: 'Replace the composer text with the given value.',\n invoke: (handle, args: { value: string }) => {\n handle.setValue(args.value);\n },\n },\n clear: {\n safety: 'destructive',\n descriptionKey: 'ui.agent.aiPromptInput.actions.clear',\n description: 'Clear text and attachments. Irreversible from the same UI.',\n invoke: (handle) => {\n handle.clear();\n },\n },\n submit: {\n safety: 'write',\n descriptionKey: 'ui.agent.aiPromptInput.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.aiPromptInput.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: 'ai-prompt-input',\n description: 'Marks the AIPromptInput wrapper.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description:\n 'Sourced from the id prop; addresses a specific composer instance.',\n },\n },\n};\n","import {\n forwardRef,\n useCallback,\n useId,\n useImperativeHandle,\n useMemo,\n useLayoutEffect,\n useRef,\n useState,\n type ChangeEvent,\n type ClipboardEvent,\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 { useAgentRegistration } from '../../agent/registry';\nimport { aiPromptInputAgent } from './ai-prompt-input.agent';\nimport { Command } from 'cmdk';\nimport { useDropzone } from 'react-dropzone';\nimport { Send, X } from 'lucide-react';\nimport { IconButton } from '../button';\nimport { Select, type SelectOption } from '../select/select';\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\nexport interface AIPromptCommand {\n id: string;\n label: string;\n description?: string;\n}\n\nexport interface AIPromptModel {\n id: string;\n label: string;\n}\n\nexport interface AIPromptAttachment {\n id: string;\n file: File;\n}\n\nexport interface AIPromptSubmitPayload {\n text: string;\n command?: string;\n attachments: AIPromptAttachment[];\n modelId?: string;\n}\n\ntype NativeTextareaProps = Omit<\n TextareaHTMLAttributes<HTMLTextAreaElement>,\n 'size' | 'onSubmit' | 'children'\n>;\n\nconst rootVariants = cva(\n [\n 'ds:flex ds:flex-col ds:gap-[var(--spacing-xs)] ds:w-full',\n 'ds:rounded-[var(--radius-md)] ds:border ds:border-border ds:bg-background',\n 'ds:transition-[border-color] ds:duration-[var(--animation-duration)]',\n 'ds:focus-within:border-[color:var(--primary)]',\n 'ds:motion-reduce:transition-none',\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\n/** Curated imperative handle for agent / external automation. */\nexport interface AIPromptInputHandle {\n /** Current composer text. */\n getValue: () => string;\n /** True when text is empty and no attachments are pending. */\n isEmpty: () => boolean;\n /** True while a submit is in flight. */\n isSubmitting: () => boolean;\n /** Replace the composer text. */\n setValue: (value: string) => void;\n /** Clear text and attachments. */\n clear: () => void;\n /** Programmatically submit. */\n submit: () => void;\n /** Move keyboard focus into the textarea. */\n focus: () => void;\n}\n\nexport interface AIPromptInputProps\n extends NativeTextareaProps, VariantProps<typeof rootVariants> {\n /** Slash-command catalog. The DS owns the menu; apps own the commands. */\n commands?: AIPromptCommand[];\n /** Model catalog rendered as a Radix Select in the footer. */\n models?: AIPromptModel[];\n defaultModelId?: string;\n modelId?: string;\n onModelChange?: (id: string) => void;\n /** Maximum attachment size in bytes. */\n maxSize?: number;\n /** `accept` forwarded to react-dropzone. */\n accept?: Record<string, string[]>;\n /** Optional active context pill — dismissible via Backspace when focused. */\n context?: string;\n onContextDismiss?: () => void;\n onSubmit?: (payload: AIPromptSubmitPayload) => void;\n onAttach?: (files: File[]) => void;\n onAttachmentRejected?: (reason: string) => void;\n minRows?: number;\n maxRows?: number;\n}\n\n/* ------------------------------------------------------------------ */\n/* Component */\n/* ------------------------------------------------------------------ */\n\nexport const AIPromptInput = forwardRef<HTMLDivElement, AIPromptInputProps>(\n (\n {\n commands = [],\n models,\n defaultModelId,\n modelId,\n onModelChange,\n maxSize,\n accept,\n context,\n onContextDismiss,\n onSubmit,\n onAttach,\n onAttachmentRejected,\n minRows = 2,\n maxRows = 8,\n value,\n defaultValue,\n size = 'md',\n disabled,\n className,\n placeholder,\n onChange,\n onKeyDown,\n onCompositionStart,\n onCompositionEnd,\n onPaste,\n id,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const textareaId = useId();\n const innerRef = useRef<HTMLTextAreaElement | null>(null);\n const composingRef = useRef(false);\n const slashMenuRef = useRef<HTMLDivElement | 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 [attachments, setAttachments] = useState<AIPromptAttachment[]>([]);\n const [slashOpen, setSlashOpen] = useState(false);\n const [slashQuery, setSlashQuery] = useState('');\n\n const [internalModel, setInternalModel] = useState<string>(\n defaultModelId ?? models?.[0]?.id ?? '',\n );\n const isModelControlled = modelId !== undefined;\n const currentModel = isModelControlled ? modelId : internalModel;\n\n /* ── Auto-grow ── */\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 /* ── Slash detection ── */\n const detectSlash = useCallback((text: string, caretPos: number) => {\n // Find the start of the current line.\n const before = text.slice(0, caretPos);\n const lineStart = before.lastIndexOf('\\n') + 1;\n const lineText = text.slice(lineStart, caretPos);\n if (lineText.startsWith('/')) {\n const afterSlash = lineText.slice(1);\n // Only open if the characters after '/' contain no whitespace.\n if (!/\\s/.test(afterSlash)) {\n setSlashOpen(true);\n setSlashQuery(afterSlash);\n return;\n }\n }\n setSlashOpen(false);\n setSlashQuery('');\n }, []);\n\n const handleChange = (e: ChangeEvent<HTMLTextAreaElement>) => {\n if (!isControlled) setInternalValue(e.target.value);\n if (composingRef.current) return;\n onChange?.(e);\n const caret = e.target.selectionStart ?? e.target.value.length;\n detectSlash(e.target.value, caret);\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 handleSubmit = useCallback(() => {\n const text = currentValue.trim();\n if (!text && attachments.length === 0) return;\n // Extract any leading command token.\n let command: string | undefined;\n let body = currentValue;\n const m = currentValue.match(/^\\/(\\S+)\\s?/);\n if (m) {\n command = m[1];\n body = currentValue.slice(m[0].length);\n }\n onSubmit?.({\n text: body,\n command,\n attachments,\n modelId: currentModel || undefined,\n });\n if (!isControlled) setInternalValue('');\n setAttachments([]);\n }, [currentValue, attachments, onSubmit, currentModel, isControlled]);\n\n const rootRef = useRef<HTMLDivElement>(null);\n useImperativeHandle(ref, () => rootRef.current as HTMLDivElement, []);\n\n const agentHandle = useMemo<AIPromptInputHandle>(\n () => ({\n getValue: () => currentValue,\n isEmpty: () => !currentValue.trim() && attachments.length === 0,\n isSubmitting: () => false,\n setValue: (next: string) => {\n if (!isControlled) setInternalValue(next);\n },\n clear: () => {\n if (!isControlled) setInternalValue('');\n setAttachments([]);\n },\n submit: () => {\n handleSubmit();\n },\n focus: () => {\n innerRef.current?.focus();\n },\n }),\n [currentValue, attachments, isControlled, handleSubmit],\n );\n useAgentRegistration(aiPromptInputAgent, agentHandle, id);\n\n const handleKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n if (isIMEKey(e)) return;\n\n // Slash menu open — Escape closes; ArrowDown/ArrowUp/Enter handled by cmdk.\n if (slashOpen) {\n if (e.key === 'Escape') {\n e.preventDefault();\n setSlashOpen(false);\n return;\n }\n }\n\n if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n handleSubmit();\n }\n };\n\n const insertCommand = (cmd: AIPromptCommand) => {\n const el = innerRef.current;\n if (!el) return;\n const caret = el.selectionStart ?? currentValue.length;\n const before = currentValue.slice(0, caret);\n const lineStart = before.lastIndexOf('\\n') + 1;\n // Extend past any non-whitespace characters that follow the caret so\n // we replace the ENTIRE slash token (\"/fi|xBug more\" → \"/fixBug more\"),\n // not just the part before the caret (which would garble the tail).\n let endOfSlashToken = caret;\n while (\n endOfSlashToken < currentValue.length &&\n !/\\s/.test(currentValue[endOfSlashToken])\n ) {\n endOfSlashToken += 1;\n }\n const afterSlash = currentValue.slice(endOfSlashToken);\n const nextValue =\n currentValue.slice(0, lineStart) + `/${cmd.id} ` + afterSlash;\n if (!isControlled) setInternalValue(nextValue);\n // External consumers mirror the same synthetic event pattern other\n // text inputs in the system use — the native `onChange` fires via React.\n setSlashOpen(false);\n setSlashQuery('');\n queueMicrotask(() => el.focus());\n };\n\n /* ── Clipboard paste: strip rich HTML to plaintext, hand files to onAttach ── */\n const handlePaste = (e: ClipboardEvent<HTMLTextAreaElement>) => {\n onPaste?.(e);\n if (e.defaultPrevented) return;\n const { clipboardData } = e;\n if (!clipboardData) return;\n const files: File[] = [];\n for (let i = 0; i < clipboardData.items.length; i += 1) {\n const item = clipboardData.items[i];\n if (item.kind === 'file') {\n const f = item.getAsFile();\n if (f) files.push(f);\n }\n }\n if (files.length > 0) {\n e.preventDefault();\n acceptFiles(files);\n }\n };\n\n /* ── Dropzone ── */\n const acceptFiles = useCallback(\n (files: File[]) => {\n const next: AIPromptAttachment[] = [];\n for (const f of files) {\n if (typeof maxSize === 'number' && f.size > maxSize) {\n onAttachmentRejected?.(\n t('ui.chat.attachment.rejected', { reason: 'size' }),\n );\n continue;\n }\n next.push({\n id: crypto.randomUUID?.() ?? `att-${Math.random()}`,\n file: f,\n });\n }\n if (next.length > 0) {\n setAttachments((prev) => [...prev, ...next]);\n onAttach?.(next.map((a) => a.file));\n }\n },\n [maxSize, onAttach, onAttachmentRejected, t],\n );\n\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n onDrop: acceptFiles,\n maxSize,\n accept,\n noClick: true,\n noKeyboard: true,\n });\n\n const removeAttachment = (id: string) => {\n setAttachments((prev) => prev.filter((a) => a.id !== id));\n };\n\n const effectiveId = id ?? textareaId;\n const labelId = `${effectiveId}-label`;\n const slashListId = `${effectiveId}-slash-list`;\n\n const modelOptions: SelectOption<string>[] =\n models?.map((m) => ({ value: m.id, label: m.label })) ?? [];\n\n return (\n <div\n ref={rootRef}\n {...getRootProps({\n className: [\n rootVariants({ size, className }),\n isDragActive\n ? 'ds:outline ds:outline-dashed ds:outline-[color:var(--primary)] ds:outline-offset-2 ds:bg-[color:var(--primary)]/5'\n : '',\n ].join(' '),\n })}\n aria-label={t('ui.chat.attachmentZone')}\n data-component=\"ai-prompt-input\"\n data-component-id={id}\n >\n {/* Hidden file input owned by react-dropzone. The aria-label\n covers axe's `label` rule (the input is visually-hidden but\n still reachable programmatically). */}\n <input aria-label={t('ui.chat.attachmentZone')} {...getInputProps()} />\n\n {context ? (\n <div className=\"ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-xs)] ds:pt-[var(--spacing-xs)]\">\n {/* Native <button> — not a span with role=\"button\" — per\n 05-accessibility \"Interactive elements use the right tag\".\n Enter/Space dispatch naturally via the native button;\n Backspace/Delete also dismiss (pill convention). */}\n <button\n type=\"button\"\n aria-label={t('ui.chat.contextActive', { name: context })}\n onClick={onContextDismiss}\n onKeyDown={(e) => {\n if (e.key === 'Backspace' || e.key === 'Delete') {\n e.preventDefault();\n onContextDismiss?.();\n }\n }}\n className={[\n 'ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]',\n 'ds:rounded-[var(--radius-full)] ds:border ds:border-[color:var(--accent)]/30',\n 'ds:bg-[color:var(--accent)]/10 ds:text-[color:var(--foreground)]',\n 'ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)] ds:pt-[var(--spacing-xs)] ds:pb-[var(--spacing-xs)]',\n 'ds:min-h-[var(--min-target-size)]',\n 'type-body-sm',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid ds:focus-visible:outline-[color:var(--ring)]',\n 'ds:forced-colors:focus-visible:outline-[CanvasText]',\n ].join(' ')}\n >\n {t('ui.chat.contextActive', { name: context })}\n </button>\n </div>\n ) : null}\n\n <label id={labelId} htmlFor={effectiveId} className=\"ds:sr-only\">\n {t('ui.chat.prompt')}\n </label>\n\n <div className=\"ds:relative\">\n {/* The textarea takes on a combobox role only while the slash\n popup is open. ARIA 1.2 permits `role=\"combobox\"` on a\n textarea — that's what makes `aria-expanded` / `aria-controls`\n valid here. When the popup is closed the textarea reverts to\n its plain implicit role so we don't add the aria attrs at all. */}\n <textarea\n ref={setRefs}\n id={effectiveId}\n rows={minRows}\n value={isControlled ? currentValue : undefined}\n defaultValue={!isControlled ? defaultValue : undefined}\n disabled={disabled}\n placeholder={placeholder ?? t('ui.chat.input.placeholder')}\n aria-labelledby={labelId}\n role={slashOpen ? 'combobox' : undefined}\n aria-controls={slashOpen ? slashListId : undefined}\n aria-expanded={slashOpen ? true : undefined}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n onCompositionStart={handleCompositionStart}\n onCompositionEnd={handleCompositionEnd}\n className={[\n 'ds:w-full ds:resize-none ds:bg-transparent ds:outline-none',\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 ].join(' ')}\n {...rest}\n />\n\n {slashOpen ? (\n <div\n ref={slashMenuRef}\n className={[\n 'ds:absolute ds:start-[var(--spacing-md)] ds:top-full ds:z-50',\n 'ds:mt-[var(--spacing-xs)]',\n 'ds:min-w-[240px] ds:rounded-[var(--radius-md)] ds:border ds:border-border',\n 'ds:bg-[color:var(--popover)] ds:text-[color:var(--popover-foreground)]',\n 'ds:shadow-[var(--shadow-md)]',\n // Match the Dialog / DropdownMenu open pattern: fade + scale\n // in from 95%. Origin set to the block-start so the menu\n // appears to expand from the textarea it sits beneath.\n 'ds:origin-top 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 id={slashListId}\n >\n <Command label={t('ui.chat.slashMenu.label')} loop>\n <Command.Input\n value={slashQuery}\n onValueChange={setSlashQuery}\n className=\"ds:sr-only\"\n />\n <Command.List className=\"ds:max-h-60 ds:overflow-y-auto ds:pt-[var(--spacing-xs)] ds:pb-[var(--spacing-xs)]\">\n <Command.Empty className=\"type-body-sm ds:text-[color:var(--muted-foreground)] ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)] ds:pt-[var(--spacing-sm)] ds:pb-[var(--spacing-sm)]\">\n {t('ui.chat.slashMenu.empty')}\n </Command.Empty>\n {commands.map((cmd) => (\n <Command.Item\n key={cmd.id}\n value={cmd.id}\n onSelect={() => insertCommand(cmd)}\n className={[\n 'ds:flex ds:flex-col ds:gap-[2px]',\n 'ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)]',\n 'ds:pt-[var(--spacing-xs)] ds:pb-[var(--spacing-xs)]',\n 'type-body-sm ds:cursor-pointer',\n 'ds:aria-selected:bg-muted/20',\n 'ds:data-[selected=true]:bg-muted/20',\n ].join(' ')}\n >\n <span className=\"ds:font-medium\">/{cmd.id}</span>\n {cmd.description ? (\n <span className=\"type-meta ds:text-[color:var(--muted-foreground)]\">\n {cmd.description}\n </span>\n ) : null}\n </Command.Item>\n ))}\n </Command.List>\n </Command>\n </div>\n ) : null}\n </div>\n\n {attachments.length > 0 ? (\n <div\n role=\"group\"\n aria-label={t('ui.chat.attachmentZone')}\n className=\"ds:flex ds:flex-wrap ds:gap-[var(--spacing-xs)] ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]\"\n >\n {attachments.map((att) => (\n <AttachmentChip\n key={att.id}\n file={att.file}\n onRemove={() => removeAttachment(att.id)}\n />\n ))}\n </div>\n ) : null}\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 {models && models.length > 0 ? (\n <div className=\"ds:me-auto ds:min-w-[140px]\">\n <Select\n aria-label={t('ui.chat.model.select')}\n options={modelOptions}\n value={currentModel || ''}\n onValueChange={(v) => {\n if (!isModelControlled) setInternalModel(v);\n onModelChange?.(v);\n }}\n size=\"sm\"\n />\n </div>\n ) : (\n <div className=\"ds:me-auto\" />\n )}\n <span className=\"ds:sr-only\">{t('ui.chat.input.sendHint')}</span>\n <IconButton\n icon={<Send />}\n aria-label={t('ui.chat.send')}\n intent=\"primary\"\n size=\"sm\"\n disabled={\n disabled || (!currentValue.trim() && attachments.length === 0)\n }\n onClick={handleSubmit}\n aria-keyshortcuts=\"Meta+Enter Control+Enter\"\n />\n </div>\n </div>\n );\n },\n);\n\nAIPromptInput.displayName = 'AIPromptInput';\n\n/* ------------------------------------------------------------------ */\n/* Attachment chip */\n/* ------------------------------------------------------------------ */\n\nfunction formatSize(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n}\n\nfunction AttachmentChip({\n file,\n onRemove,\n}: {\n file: File;\n onRemove: () => void;\n}): ReactNode {\n const { t } = useTranslation();\n return (\n <span\n className={[\n 'ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]',\n 'ds:rounded-[var(--radius-full)] ds:bg-muted/30',\n 'ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-xs)]',\n 'ds:pt-[var(--spacing-xs)] ds:pb-[var(--spacing-xs)]',\n 'type-meta',\n // Entrance when a file is attached via drop / paste / picker.\n 'ds:motion-safe:animate-in ds:motion-safe:fade-in-0 ds:motion-safe:slide-in-from-bottom-1',\n 'ds:duration-[var(--animation-duration)] ds:ease-[var(--ease-out)]',\n ].join(' ')}\n >\n <span className=\"ds:truncate ds:max-w-[16ch]\">{file.name}</span>\n <span className=\"ds:text-[color:var(--muted-foreground)] ds:tabular-nums\">\n {formatSize(file.size)}\n </span>\n <IconButton\n icon={<X />}\n aria-label={t('ui.chat.attachment.remove', { name: file.name })}\n intent=\"ghost\"\n size=\"sm\"\n onClick={onRemove}\n />\n </span>\n );\n}\n"],"names":["aiPromptInputAgent","handle","args","rootVariants","cva","AIPromptInput","forwardRef","commands","models","defaultModelId","modelId","onModelChange","maxSize","accept","context","onContextDismiss","onSubmit","onAttach","onAttachmentRejected","minRows","maxRows","value","defaultValue","size","disabled","className","placeholder","onChange","onKeyDown","onCompositionStart","onCompositionEnd","onPaste","id","rest","ref","t","useTranslation","textareaId","useId","innerRef","useRef","composingRef","slashMenuRef","setRefs","useCallback","node","isControlled","internalValue","setInternalValue","useState","currentValue","attachments","setAttachments","slashOpen","setSlashOpen","slashQuery","setSlashQuery","internalModel","setInternalModel","_a","isModelControlled","currentModel","resize","el","styles","lineHeight","padTop","padBot","borderTop","borderBot","chrome","minH","maxH","next","useLayoutEffect","detectSlash","text","caretPos","lineStart","lineText","afterSlash","handleChange","caret","handleCompositionStart","handleCompositionEnd","isIMEKey","handleSubmit","command","body","m","rootRef","useImperativeHandle","agentHandle","useMemo","useAgentRegistration","handleKeyDown","insertCommand","cmd","endOfSlashToken","nextValue","handlePaste","clipboardData","files","i","item","f","acceptFiles","prev","a","getRootProps","getInputProps","isDragActive","useDropzone","removeAttachment","effectiveId","labelId","slashListId","modelOptions","jsxs","jsx","Command","att","AttachmentChip","Select","v","IconButton","Send","formatSize","bytes","file","onRemove","X"],"mappings":"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"}
@@ -70,9 +70,21 @@ const M = E(
70
70
  "ds:forced-colors:focus-visible:outline-[CanvasText]"
71
71
  ].join(" "), W = {
72
72
  info: { icon: /* @__PURE__ */ t(G, { "aria-hidden": "true" }), role: "status", live: "polite" },
73
- success: { icon: /* @__PURE__ */ t(X, { "aria-hidden": "true" }), role: "status", live: "polite" },
74
- warning: { icon: /* @__PURE__ */ t(O, { "aria-hidden": "true" }), role: "alert", live: "assertive" },
75
- error: { icon: /* @__PURE__ */ t(L, { "aria-hidden": "true" }), role: "alert", live: "assertive" }
73
+ success: {
74
+ icon: /* @__PURE__ */ t(X, { "aria-hidden": "true" }),
75
+ role: "status",
76
+ live: "polite"
77
+ },
78
+ warning: {
79
+ icon: /* @__PURE__ */ t(O, { "aria-hidden": "true" }),
80
+ role: "alert",
81
+ live: "assertive"
82
+ },
83
+ error: {
84
+ icon: /* @__PURE__ */ t(L, { "aria-hidden": "true" }),
85
+ role: "alert",
86
+ live: "assertive"
87
+ }
76
88
  }, b = a(
77
89
  ({ as: s = "h5", className: r, ...o }, e) => /* @__PURE__ */ t(
78
90
  s,
@@ -84,16 +96,14 @@ const M = E(
84
96
  )
85
97
  );
86
98
  b.displayName = "Alert.Title";
87
- const x = a(
88
- ({ className: s, ...r }, o) => /* @__PURE__ */ t(
89
- "p",
90
- {
91
- ref: o,
92
- className: ["ds:mt-[var(--spacing-xs)] type-body-sm", s].filter(Boolean).join(" "),
93
- ...r
94
- }
95
- )
96
- );
99
+ const x = a(({ className: s, ...r }, o) => /* @__PURE__ */ t(
100
+ "p",
101
+ {
102
+ ref: o,
103
+ className: ["ds:mt-[var(--spacing-xs)] type-body-sm", s].filter(Boolean).join(" "),
104
+ ...r
105
+ }
106
+ ));
97
107
  x.displayName = "Alert.Description";
98
108
  const _ = a(
99
109
  ({ className: s, ...r }, o) => /* @__PURE__ */ t(
@@ -185,4 +195,4 @@ const st = Object.assign(w, {
185
195
  export {
186
196
  st as A
187
197
  };
188
- //# sourceMappingURL=alert-BlOUMkXj.js.map
198
+ //# sourceMappingURL=alert-B1sj8Ss0.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert-B1sj8Ss0.js","sources":["../../src/components/alert/alert.tsx"],"sourcesContent":["import {\n forwardRef,\n useCallback,\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 { Info, CircleCheck, TriangleAlert, CircleX, X } from 'lucide-react';\n\nconst alertVariants = cva(\n [\n 'ds:flex ds:items-start ds:gap-[var(--spacing-md)]',\n 'ds:rounded-[var(--radius-md)]',\n 'ds:border ds:border-[length:var(--border-width-sm)]',\n 'ds:p-[var(--spacing-md)]',\n 'ds:break-words',\n ].join(' '),\n {\n variants: {\n // Each variant paints `<Button intent=\"tonal\">` descendants via a\n // child selector — the button carries `data-intent=\"tonal\"`, the\n // Alert applies the matching tint (`*-foreground` for bg + the\n // surface `--background` for fg). Descendant selectors sidestep\n // custom-property inheritance and are rock-solid across themes.\n variant: {\n info: [\n 'ds:border-[color:var(--info)]',\n 'ds:bg-[color-mix(in_srgb,var(--info)_10%,transparent)]',\n 'ds:text-[var(--info-foreground)]',\n 'ds:[&_[data-intent=tonal]]:bg-[color:var(--info-foreground)]',\n 'ds:[&_[data-intent=tonal]]:text-[color:var(--background)]',\n ].join(' '),\n success: [\n 'ds:border-[color:var(--success)]',\n 'ds:bg-[color-mix(in_srgb,var(--success)_10%,transparent)]',\n 'ds:text-[var(--success-foreground)]',\n 'ds:[&_[data-intent=tonal]]:bg-[color:var(--success-foreground)]',\n 'ds:[&_[data-intent=tonal]]:text-[color:var(--background)]',\n ].join(' '),\n warning: [\n 'ds:border-[color:var(--warning)]',\n 'ds:bg-[color-mix(in_srgb,var(--warning)_10%,transparent)]',\n 'ds:text-[var(--warning-foreground)]',\n 'ds:[&_[data-intent=tonal]]:bg-[color:var(--warning-foreground)]',\n 'ds:[&_[data-intent=tonal]]:text-[color:var(--background)]',\n ].join(' '),\n error: [\n 'ds:border-[color:var(--error)]',\n 'ds:bg-[color-mix(in_srgb,var(--error)_10%,transparent)]',\n 'ds:text-[var(--error-foreground)]',\n 'ds:[&_[data-intent=tonal]]:bg-[color:var(--error-foreground)]',\n 'ds:[&_[data-intent=tonal]]:text-[color:var(--background)]',\n ].join(' '),\n },\n },\n defaultVariants: {\n variant: 'info',\n },\n },\n);\n\nconst ICON_CLASSES = 'ds:shrink-0 ds:size-5 ds:mt-0.5';\n\nconst CLOSE_BUTTON_CLASSES = [\n 'ds:ms-auto ds:shrink-0 ds:inline-flex ds:items-center ds:justify-center',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:min-h-[var(--min-target-size)] ds:min-w-[var(--min-target-size)]',\n 'ds:-mt-[var(--spacing-xs)] ds:-me-[var(--spacing-xs)]',\n 'ds:text-current ds:opacity-70',\n 'ds:hover:opacity-100',\n 'ds:transition-opacity ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-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:forced-colors:focus-visible:outline-[CanvasText]',\n].join(' ');\n\nconst VARIANT_CONFIG = {\n info: { icon: <Info aria-hidden=\"true\" />, role: 'status', live: 'polite' },\n success: {\n icon: <CircleCheck aria-hidden=\"true\" />,\n role: 'status',\n live: 'polite',\n },\n warning: {\n icon: <TriangleAlert aria-hidden=\"true\" />,\n role: 'alert',\n live: 'assertive',\n },\n error: {\n icon: <CircleX aria-hidden=\"true\" />,\n role: 'alert',\n live: 'assertive',\n },\n} as const;\n\ninterface AlertTitleProps extends HTMLAttributes<HTMLHeadingElement> {\n as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'span';\n}\n\nconst AlertTitle = forwardRef<HTMLHeadingElement, AlertTitleProps>(\n ({ as: Tag = 'h5', className, ...props }, ref) => (\n <Tag\n ref={ref}\n className={['type-title-item', className].filter(Boolean).join(' ')}\n {...props}\n />\n ),\n);\nAlertTitle.displayName = 'Alert.Title';\n\nconst AlertDescription = forwardRef<\n HTMLParagraphElement,\n HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={['ds:mt-[var(--spacing-xs)] type-body-sm', className]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n));\nAlertDescription.displayName = 'Alert.Description';\n\nconst AlertAction = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={[\n 'ds:mt-[var(--spacing-sm)] ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-sm)]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n ),\n);\nAlertAction.displayName = 'Alert.Action';\n\nexport interface AlertProps\n extends\n Omit<HTMLAttributes<HTMLDivElement>, 'role'>,\n VariantProps<typeof alertVariants> {\n variant?: 'info' | 'success' | 'warning' | 'error';\n dismissible?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n icon?: ReactNode;\n live?: 'assertive' | 'polite' | 'off';\n}\n\nexport type { AlertTitleProps };\n\nconst AlertRoot = forwardRef<HTMLDivElement, AlertProps>(\n (\n {\n variant = 'info',\n dismissible = false,\n open: controlledOpen,\n onOpenChange,\n icon,\n live,\n className,\n children,\n ...props\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const [internalOpen, setInternalOpen] = useState(true);\n const [isClosing, setIsClosing] = useState(false);\n const closeTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const isControlled = controlledOpen !== undefined;\n const isOpen = isControlled ? controlledOpen : internalOpen;\n\n const animationDurationMs = useCallback((): number => {\n if (typeof window === 'undefined') return 200;\n const raw = window\n .getComputedStyle(document.documentElement)\n .getPropertyValue('--animation-duration');\n if (!raw) return 200;\n const trimmed = raw.trim();\n const n = parseFloat(trimmed);\n if (!Number.isFinite(n)) return 200;\n return trimmed.endsWith('ms') ? n : n * 1000;\n }, []);\n\n if (!isOpen) return null;\n\n const config = VARIANT_CONFIG[variant];\n const effectiveIcon = icon !== undefined ? icon : config.icon;\n\n const handleDismiss = () => {\n if (isClosing) return;\n setIsClosing(true);\n if (closeTimerRef.current) clearTimeout(closeTimerRef.current);\n closeTimerRef.current = setTimeout(() => {\n setIsClosing(false);\n if (!isControlled) setInternalOpen(false);\n onOpenChange?.(false);\n }, animationDurationMs());\n };\n\n return (\n <div\n ref={ref}\n role={config.role}\n aria-live={live ?? config.live}\n data-component=\"alert\"\n data-state={isClosing ? 'closing' : 'open'}\n className={[\n alertVariants({ variant, className }),\n // Entry: fade + slide-down on mount. Exit: fade + slide-up + slight\n // scale when dismissed. Driven by `tw-animate-css`. Respects\n // `prefers-reduced-motion` via `motion-safe:` and zeroes under the\n // accessible theme (`--animation-duration: 0ms`).\n 'ds:motion-safe:animate-in ds:motion-safe:fade-in-0 ds:motion-safe:slide-in-from-top-2',\n 'ds:motion-safe:data-[state=closing]:animate-out ds:motion-safe:data-[state=closing]:fade-out-0',\n 'ds:motion-safe:data-[state=closing]:slide-out-to-top-2 ds:motion-safe:data-[state=closing]:zoom-out-95',\n // Pin the exit's end-state until React unmounts. Without\n // `fill-mode-forwards` the element snaps back to opacity:1 for one\n // paint frame after the animation ends.\n 'ds:motion-safe:data-[state=closing]:fill-mode-forwards',\n 'ds:motion-safe:duration-[var(--animation-duration)]',\n ].join(' ')}\n {...props}\n >\n {effectiveIcon ? (\n <span className={ICON_CLASSES}>{effectiveIcon}</span>\n ) : null}\n\n <div className=\"ds:flex-1 ds:min-w-0\">{children}</div>\n\n {dismissible ? (\n <button\n type=\"button\"\n aria-label={t('ui.common.close', 'Close')}\n onClick={handleDismiss}\n className={CLOSE_BUTTON_CLASSES}\n >\n <X aria-hidden=\"true\" className=\"ds:size-4\" />\n </button>\n ) : null}\n </div>\n );\n },\n);\n\nAlertRoot.displayName = 'Alert';\n\nexport const Alert = Object.assign(AlertRoot, {\n Title: AlertTitle,\n Description: AlertDescription,\n Action: AlertAction,\n});\n"],"names":["alertVariants","cva","ICON_CLASSES","CLOSE_BUTTON_CLASSES","VARIANT_CONFIG","jsx","Info","CircleCheck","TriangleAlert","CircleX","AlertTitle","forwardRef","Tag","className","props","ref","AlertDescription","AlertAction","AlertRoot","variant","dismissible","controlledOpen","onOpenChange","icon","live","children","t","useTranslation","internalOpen","setInternalOpen","useState","isClosing","setIsClosing","closeTimerRef","useRef","isControlled","isOpen","animationDurationMs","useCallback","raw","trimmed","n","config","effectiveIcon","handleDismiss","jsxs","X","Alert"],"mappings":"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"}
@@ -32,7 +32,12 @@ function d() {
32
32
  const t = getComputedStyle(document.documentElement), e = (r) => t.getPropertyValue(r).trim();
33
33
  return {
34
34
  theme: { mode: document.documentElement.classList.contains("theme-dark") ? "dark" : "light" },
35
- colors: [e("--primary"), e("--accent"), e("--success"), e("--warning")],
35
+ colors: [
36
+ e("--primary"),
37
+ e("--accent"),
38
+ e("--success"),
39
+ e("--warning")
40
+ ],
36
41
  chart: {
37
42
  background: e("--background"),
38
43
  foreColor: e("--foreground"),
@@ -45,4 +50,4 @@ export {
45
50
  d as g,
46
51
  c as u
47
52
  };
48
- //# sourceMappingURL=apexcharts-theme-BkSShpEy.js.map
53
+ //# sourceMappingURL=apexcharts-theme-BJigns_V.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"apexcharts-theme-BkSShpEy.js","sources":["../../src/components/_shared/use-neutralize-hidden-focus.ts","../../src/tokens/apexcharts-theme.ts"],"sourcesContent":["import { useEffect, type RefObject } from 'react';\n\n/* -------------------------------------------------------------------- */\n/* useNeutraliseHiddenFocus */\n/* */\n/* axe's `aria-hidden-focus` rule (correctly) flags focusable */\n/* descendants of `aria-hidden=\"true\"` subtrees. Several DS components */\n/* embed third-party renders (ApexCharts, FullCalendar) that inject */\n/* focusable elements (canvases with tabindex, anchor wrappers) inside */\n/* a wrapper that we deliberately mark `aria-hidden` because the outer */\n/* element carries the accessible name (`role=\"img\"` + `aria-label`). */\n/* */\n/* This hook walks the ref tree on mount and on subtree mutation, and */\n/* sets `tabindex=\"-1\"` on focusable descendants of any aria-hidden */\n/* ancestor. Cheaper than forking the third-party render and keeps the */\n/* fix scoped to the component using it. */\n/* -------------------------------------------------------------------- */\n\nconst FOCUSABLE_SELECTOR = [\n 'a[href]',\n 'button',\n 'input',\n 'select',\n 'textarea',\n '[tabindex]:not([tabindex=\"-1\"])',\n].join(',');\n\nexport function useNeutraliseHiddenFocus<T extends HTMLElement>(\n containerRef: RefObject<T | null>,\n): void {\n useEffect(() => {\n const root = containerRef.current;\n if (!root) return undefined;\n\n const neutralise = () => {\n root\n .querySelectorAll<HTMLElement>('[aria-hidden=\"true\"]')\n .forEach((hidden) => {\n hidden\n .querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR)\n .forEach((el) => {\n el.setAttribute('tabindex', '-1');\n });\n });\n };\n\n neutralise();\n const observer = new MutationObserver(neutralise);\n observer.observe(root, {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: ['aria-hidden', 'tabindex'],\n });\n return () => observer.disconnect();\n }, [containerRef]);\n}\n","import type ApexCharts from 'apexcharts';\n\nexport function getApexChartsTheme(): ApexCharts.ApexOptions {\n const styles = getComputedStyle(document.documentElement);\n const get = (v: string) => styles.getPropertyValue(v).trim();\n const isDark = document.documentElement.classList.contains('theme-dark');\n return {\n theme: { mode: isDark ? 'dark' : 'light' },\n colors: [get('--primary'), get('--accent'), get('--success'), get('--warning')],\n chart: {\n background: get('--background'),\n foreColor: get('--foreground'),\n fontFamily: get('--font-sans'),\n },\n grid: { borderColor: get('--border') },\n };\n}\n"],"names":["FOCUSABLE_SELECTOR","useNeutraliseHiddenFocus","containerRef","useEffect","root","neutralise","hidden","el","observer","getApexChartsTheme","styles","get","v"],"mappings":";AAkBA,MAAMA,IAAqB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,EAAE,KAAK,GAAG;AAEH,SAASC,EACdC,GACM;AACN,EAAAC,EAAU,MAAM;AACd,UAAMC,IAAOF,EAAa;AAC1B,QAAI,CAACE,EAAM;AAEX,UAAMC,IAAa,MAAM;AACvB,MAAAD,EACG,iBAA8B,sBAAsB,EACpD,QAAQ,CAACE,MAAW;AACnB,QAAAA,EACG,iBAA8BN,CAAkB,EAChD,QAAQ,CAACO,MAAO;AACf,UAAAA,EAAG,aAAa,YAAY,IAAI;AAAA,QAClC,CAAC;AAAA,MACL,CAAC;AAAA,IACL;AAEA,IAAAF,EAAA;AACA,UAAMG,IAAW,IAAI,iBAAiBH,CAAU;AAChD,WAAAG,EAAS,QAAQJ,GAAM;AAAA,MACrB,WAAW;AAAA,MACX,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,iBAAiB,CAAC,eAAe,UAAU;AAAA,IAAA,CAC5C,GACM,MAAMI,EAAS,WAAA;AAAA,EACxB,GAAG,CAACN,CAAY,CAAC;AACnB;ACtDO,SAASO,IAA6C;AAC3D,QAAMC,IAAS,iBAAiB,SAAS,eAAe,GAClDC,IAAM,CAACC,MAAcF,EAAO,iBAAiBE,CAAC,EAAE,KAAA;AAEtD,SAAO;AAAA,IACL,OAAO,EAAE,MAFI,SAAS,gBAAgB,UAAU,SAAS,YAAY,IAE7C,SAAS,QAAA;AAAA,IACjC,QAAQ,CAACD,EAAI,WAAW,GAAGA,EAAI,UAAU,GAAGA,EAAI,WAAW,GAAGA,EAAI,WAAW,CAAC;AAAA,IAC9E,OAAO;AAAA,MACL,YAAYA,EAAI,cAAc;AAAA,MAC9B,WAAWA,EAAI,cAAc;AAAA,MAC7B,YAAYA,EAAI,aAAa;AAAA,IAAA;AAAA,IAE/B,MAAM,EAAE,aAAaA,EAAI,UAAU,EAAA;AAAA,EAAE;AAEzC;"}
1
+ {"version":3,"file":"apexcharts-theme-BJigns_V.js","sources":["../../src/components/_shared/use-neutralize-hidden-focus.ts","../../src/tokens/apexcharts-theme.ts"],"sourcesContent":["import { useEffect, type RefObject } from 'react';\n\n/* -------------------------------------------------------------------- */\n/* useNeutraliseHiddenFocus */\n/* */\n/* axe's `aria-hidden-focus` rule (correctly) flags focusable */\n/* descendants of `aria-hidden=\"true\"` subtrees. Several DS components */\n/* embed third-party renders (ApexCharts, FullCalendar) that inject */\n/* focusable elements (canvases with tabindex, anchor wrappers) inside */\n/* a wrapper that we deliberately mark `aria-hidden` because the outer */\n/* element carries the accessible name (`role=\"img\"` + `aria-label`). */\n/* */\n/* This hook walks the ref tree on mount and on subtree mutation, and */\n/* sets `tabindex=\"-1\"` on focusable descendants of any aria-hidden */\n/* ancestor. Cheaper than forking the third-party render and keeps the */\n/* fix scoped to the component using it. */\n/* -------------------------------------------------------------------- */\n\nconst FOCUSABLE_SELECTOR = [\n 'a[href]',\n 'button',\n 'input',\n 'select',\n 'textarea',\n '[tabindex]:not([tabindex=\"-1\"])',\n].join(',');\n\nexport function useNeutraliseHiddenFocus<T extends HTMLElement>(\n containerRef: RefObject<T | null>,\n): void {\n useEffect(() => {\n const root = containerRef.current;\n if (!root) return undefined;\n\n const neutralise = () => {\n root\n .querySelectorAll<HTMLElement>('[aria-hidden=\"true\"]')\n .forEach((hidden) => {\n hidden\n .querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR)\n .forEach((el) => {\n el.setAttribute('tabindex', '-1');\n });\n });\n };\n\n neutralise();\n const observer = new MutationObserver(neutralise);\n observer.observe(root, {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: ['aria-hidden', 'tabindex'],\n });\n return () => observer.disconnect();\n }, [containerRef]);\n}\n","import type ApexCharts from 'apexcharts';\n\nexport function getApexChartsTheme(): ApexCharts.ApexOptions {\n const styles = getComputedStyle(document.documentElement);\n const get = (v: string) => styles.getPropertyValue(v).trim();\n const isDark = document.documentElement.classList.contains('theme-dark');\n return {\n theme: { mode: isDark ? 'dark' : 'light' },\n colors: [\n get('--primary'),\n get('--accent'),\n get('--success'),\n get('--warning'),\n ],\n chart: {\n background: get('--background'),\n foreColor: get('--foreground'),\n fontFamily: get('--font-sans'),\n },\n grid: { borderColor: get('--border') },\n };\n}\n"],"names":["FOCUSABLE_SELECTOR","useNeutraliseHiddenFocus","containerRef","useEffect","root","neutralise","hidden","el","observer","getApexChartsTheme","styles","get","v"],"mappings":";AAkBA,MAAMA,IAAqB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,EAAE,KAAK,GAAG;AAEH,SAASC,EACdC,GACM;AACN,EAAAC,EAAU,MAAM;AACd,UAAMC,IAAOF,EAAa;AAC1B,QAAI,CAACE,EAAM;AAEX,UAAMC,IAAa,MAAM;AACvB,MAAAD,EACG,iBAA8B,sBAAsB,EACpD,QAAQ,CAACE,MAAW;AACnB,QAAAA,EACG,iBAA8BN,CAAkB,EAChD,QAAQ,CAACO,MAAO;AACf,UAAAA,EAAG,aAAa,YAAY,IAAI;AAAA,QAClC,CAAC;AAAA,MACL,CAAC;AAAA,IACL;AAEA,IAAAF,EAAA;AACA,UAAMG,IAAW,IAAI,iBAAiBH,CAAU;AAChD,WAAAG,EAAS,QAAQJ,GAAM;AAAA,MACrB,WAAW;AAAA,MACX,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,iBAAiB,CAAC,eAAe,UAAU;AAAA,IAAA,CAC5C,GACM,MAAMI,EAAS,WAAA;AAAA,EACxB,GAAG,CAACN,CAAY,CAAC;AACnB;ACtDO,SAASO,IAA6C;AAC3D,QAAMC,IAAS,iBAAiB,SAAS,eAAe,GAClDC,IAAM,CAACC,MAAcF,EAAO,iBAAiBE,CAAC,EAAE,KAAA;AAEtD,SAAO;AAAA,IACL,OAAO,EAAE,MAFI,SAAS,gBAAgB,UAAU,SAAS,YAAY,IAE7C,SAAS,QAAA;AAAA,IACjC,QAAQ;AAAA,MACND,EAAI,WAAW;AAAA,MACfA,EAAI,UAAU;AAAA,MACdA,EAAI,WAAW;AAAA,MACfA,EAAI,WAAW;AAAA,IAAA;AAAA,IAEjB,OAAO;AAAA,MACL,YAAYA,EAAI,cAAc;AAAA,MAC9B,WAAWA,EAAI,cAAc;AAAA,MAC7B,YAAYA,EAAI,aAAa;AAAA,IAAA;AAAA,IAE/B,MAAM,EAAE,aAAaA,EAAI,UAAU,EAAA;AAAA,EAAE;AAEzC;"}
@@ -23,9 +23,7 @@ const T = a(
23
23
  "ds:print:[&_[role=banner]]:[border-block-end-color:var(--border)]"
24
24
  ].join(" ")
25
25
  ), A = a(
26
- [
27
- "ds:flex ds:flex-1 ds:items-stretch ds:min-h-0"
28
- ].join(" ")
26
+ ["ds:flex ds:flex-1 ds:items-stretch ds:min-h-0"].join(" ")
29
27
  ), M = a(
30
28
  [
31
29
  // Hidden in the inline flow on mobile — consumers should flip their
@@ -38,11 +36,7 @@ const T = a(
38
36
  "ds:h-full"
39
37
  ].join(" ")
40
38
  ), C = a(
41
- [
42
- "ds:hidden ds:md:flex",
43
- "ds:shrink-0",
44
- "ds:h-full"
45
- ].join(" ")
39
+ ["ds:hidden ds:md:flex", "ds:shrink-0", "ds:h-full"].join(" ")
46
40
  ), F = a(
47
41
  [
48
42
  // <main> owns the scroll: the viewport body never scrolls, but this
@@ -78,13 +72,10 @@ const T = a(
78
72
  mainClassName: b,
79
73
  ...u
80
74
  }, h) => {
81
- const { t: v } = _(), x = m ?? v("ui.navigation.main.label", "Main content"), [w, g] = S(!1), j = V(
82
- (k) => {
83
- const e = k.currentTarget.scrollTop > 0;
84
- g((o) => o === e ? o : e);
85
- },
86
- []
87
- );
75
+ const { t: v } = _(), x = m ?? v("ui.navigation.main.label", "Main content"), [w, g] = S(!1), j = V((k) => {
76
+ const e = k.currentTarget.scrollTop > 0;
77
+ g((o) => o === e ? o : e);
78
+ }, []);
88
79
  return /* @__PURE__ */ n(
89
80
  "div",
90
81
  {
@@ -127,4 +118,4 @@ I.displayName = "AppFrame";
127
118
  export {
128
119
  I as A
129
120
  };
130
- //# sourceMappingURL=app-frame-6d7Lu4ea.js.map
121
+ //# sourceMappingURL=app-frame-CDJOgPXe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-frame-CDJOgPXe.js","sources":["../../src/components/app-frame/app-frame.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* AppFrame — the always-present application shell. */\n/* */\n/* Layout */\n/* ------ */\n/* */\n/* ┌───────────────────────────────────────────────────────────┐ */\n/* │ Header (100% inline-size, block-start) │ */\n/* ├──────────┬──────────────────────────────────┬──────────────┤ */\n/* │ Sidebar │ Main (<main>) │ endSidebar │ */\n/* │ │ │ (optional) │ */\n/* │ │ │ │ */\n/* ├──────────┴──────────────────────────────────┴──────────────┤ */\n/* │ Footer (optional) │ */\n/* └───────────────────────────────────────────────────────────┘ */\n/* */\n/* Header spans the full inline-size of the shell. Sidebar sits beneath */\n/* the header on the inline-start edge and shares the row with <main>. */\n/* `endSidebar`, when provided, sits on the inline-end edge of the same */\n/* row — used for co-pilot / assistant panels (e.g. LeoSidebar) that */\n/* should dock opposite the nav rail. Footer, when provided, spans the */\n/* full inline-size at the block-end. */\n/* */\n/* Responsive behaviour */\n/* --------------------- */\n/* ≥ md viewports: the sidebar slot renders inline-start of the row */\n/* below the header, sticky to the header's block-end, full remaining */\n/* viewport height. */\n/* < md viewports: the sidebar slot is hidden from the inline flow. */\n/* Consumers should control their sidebar's `state` to `'overlay'` */\n/* on small viewports (the Sidebar portals via Radix Dialog so it */\n/* renders outside AppFrame's subtree in that mode) and wire the */\n/* `<HeaderMenuButton>` to toggle it. */\n/* -------------------------------------------------------------------- */\n\nimport {\n forwardRef,\n useCallback,\n useState,\n type HTMLAttributes,\n type ReactNode,\n type UIEvent,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\n// Canonical app-shell layout: the root is a VIEWPORT-SIZED flex-col with\n// its own overflow clamp. Header and the row fill it together. The only\n// element that scrolls is <main> — so the header never leaves the top\n// and the sidebar never needs position: sticky. This matches the way\n// Gmail / Linear / Notion frame their app surfaces and avoids the\n// flex-item-sticky edge cases that position: sticky has inside a\n// column-flex container.\n//\n// Because the viewport itself never scrolls in this model, the Header's\n// built-in IntersectionObserver (which watches a sentinel against the\n// viewport) cannot detect scroll. AppFrame instead tracks `<main>`'s\n// scrollTop, reflects it onto the root via `data-app-scrolled`, and the\n// descendant selectors below drive the `<header role=\"banner\">` border\n// and shadow — producing the same elevation the Header would show in a\n// viewport-scroll context.\nconst rootVariants = cva(\n [\n 'ds:h-dvh ds:w-full',\n 'ds:flex ds:flex-col',\n 'ds:overflow-hidden',\n 'ds:bg-[var(--background)] ds:text-[color:var(--foreground)]',\n // Elevation cascade driven by main's scrollTop (data-app-scrolled).\n // Mirrors the Header's native scroll-linked recipe (see `Brand/Shadows`\n // — one tier up from rest, never two) so the banner looks identical\n // whether it's in a viewport-scroll context (sticky) or slotted into\n // AppFrame where <main> owns the scroll.\n 'ds:data-[app-scrolled=true]:[&_[role=banner]]:shadow-[var(--shadow-md)]',\n 'ds:data-[app-scrolled=true]:[&_[role=banner]]:[border-block-end-color:var(--border)]',\n // Forced-colors: UA strips box-shadow, so the border is the only\n // separation cue. Always render it.\n 'ds:forced-colors:[&_[role=banner]]:[border-block-end-color:CanvasText]',\n // Print: strip shadow, keep border so the banner still reads on paper.\n 'ds:print:[&_[role=banner]]:shadow-none',\n 'ds:print:[&_[role=banner]]:[border-block-end-color:var(--border)]',\n ].join(' '),\n);\n\nconst rowVariants = cva(\n ['ds:flex ds:flex-1 ds:items-stretch ds:min-h-0'].join(' '),\n);\n\nconst sidebarSlotVariants = cva(\n [\n // Hidden in the inline flow on mobile — consumers should flip their\n // Sidebar into overlay mode at narrow viewports, where it portals via\n // Radix Dialog and therefore renders outside AppFrame entirely.\n 'ds:hidden ds:md:flex',\n 'ds:shrink-0',\n // The rail fills the row's full height because the row is `flex\n // items-stretch`. No sticky needed — the row itself never scrolls.\n 'ds:h-full',\n ].join(' '),\n);\n\n// Inline-end slot — same hide-on-mobile behaviour as the nav rail because\n// a 22rem co-pilot panel can't share a phone viewport. Consuming apps\n// should flip Leo (or any inline-end panel) to its overlay/popout mode\n// at narrow viewports.\nconst endSidebarSlotVariants = cva(\n ['ds:hidden ds:md:flex', 'ds:shrink-0', 'ds:h-full'].join(' '),\n);\n\nconst mainVariants = cva(\n [\n // <main> owns the scroll: the viewport body never scrolls, but this\n // element does. That keeps the header + sidebar pinned as chrome.\n 'ds:flex-1 ds:min-w-0 ds:overflow-auto',\n // Focusable via the header's SkipLink — tabIndex={-1} is on the\n // element itself so keyboard users land inside the main region.\n 'ds:focus:outline-none',\n ].join(' '),\n {\n variants: {\n padded: {\n true: [\n 'ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)]',\n 'ds:pt-[var(--spacing-md)] ds:pb-[var(--spacing-md)]',\n ].join(' '),\n false: '',\n },\n },\n defaultVariants: { padded: true },\n },\n);\n\nconst footerSlotVariants = cva('ds:shrink-0');\n\n/* ------------------------------------------------------------------ */\n/* Root */\n/* ------------------------------------------------------------------ */\n\nexport interface AppFrameProps\n extends\n Omit<HTMLAttributes<HTMLDivElement>, 'children'>,\n VariantProps<typeof mainVariants> {\n /** `<Header>` instance rendered full-width at the block-start of the shell. */\n header: ReactNode;\n /** `<Sidebar>` instance rendered inline-start of the row beneath the header on ≥ md viewports. */\n sidebar: ReactNode;\n /** Main content — rendered inside a `<main>` landmark. */\n children: ReactNode;\n /** Optional inline-end docked panel (typically `<LeoSidebar />`) sharing the same row as the main region on ≥ md viewports. Hidden on narrow viewports — consumers should flip to an overlay/popout mode there. */\n endSidebar?: ReactNode;\n /** Optional block-end footer — renders full-width below the sidebar + main row. */\n footer?: ReactNode;\n /**\n * Id applied to the `<main>` element so `<HeaderSkipLink href=\"#{mainId}\" />`\n * can target it. Must be a valid HTML id (letters, digits, `-`, `_`, no\n * spaces). Defaults to `'main-content'`.\n */\n mainId?: string;\n /**\n * Override the landmark's accessible name. Defaults to the i18n'd\n * `ui.navigation.main.label` (\"Main content\").\n */\n mainAriaLabel?: string;\n /** Extra classes applied to the `<main>` landmark. */\n mainClassName?: string;\n}\n\nexport const AppFrame = forwardRef<HTMLDivElement, AppFrameProps>(\n (\n {\n header,\n sidebar,\n children,\n endSidebar,\n footer,\n mainId = 'main-content',\n mainAriaLabel,\n padded = true,\n className,\n mainClassName,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const mainLabel =\n mainAriaLabel ?? t('ui.navigation.main.label', 'Main content');\n\n const [mainScrolled, setMainScrolled] = useState(false);\n const handleMainScroll = useCallback((event: UIEvent<HTMLElement>) => {\n const next = event.currentTarget.scrollTop > 0;\n setMainScrolled((prev) => (prev === next ? prev : next));\n }, []);\n\n return (\n <div\n ref={ref}\n data-app-scrolled={mainScrolled ? 'true' : undefined}\n data-component=\"app-frame\"\n className={rootVariants({ className })}\n {...rest}\n >\n {/* Header is rendered as a direct flex child — NOT wrapped in a slot\n div — so it sits at the block-start of the shell. The root's\n `overflow-hidden` keeps it pinned; no `position: sticky` needed. */}\n {header}\n <div className={rowVariants()} data-app-frame-slot=\"row\">\n <div className={sidebarSlotVariants()} data-app-frame-slot=\"sidebar\">\n {sidebar}\n </div>\n <main\n id={mainId}\n tabIndex={-1}\n aria-label={mainLabel}\n onScroll={handleMainScroll}\n className={mainVariants({ padded, className: mainClassName })}\n >\n {children}\n </main>\n {endSidebar ? (\n <div\n className={endSidebarSlotVariants()}\n data-app-frame-slot=\"end-sidebar\"\n >\n {endSidebar}\n </div>\n ) : null}\n </div>\n {footer ? (\n <div className={footerSlotVariants()} data-app-frame-slot=\"footer\">\n {footer}\n </div>\n ) : null}\n </div>\n );\n },\n);\nAppFrame.displayName = 'AppFrame';\n"],"names":["rootVariants","cva","rowVariants","sidebarSlotVariants","endSidebarSlotVariants","mainVariants","footerSlotVariants","AppFrame","forwardRef","header","sidebar","children","endSidebar","footer","mainId","mainAriaLabel","padded","className","mainClassName","rest","ref","t","useTranslation","mainLabel","mainScrolled","setMainScrolled","useState","handleMainScroll","useCallback","event","next","prev","jsxs","jsx"],"mappings":";;;;AAiEA,MAAMA,IAAeC;AAAA,EACnB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA;AAAA,IACA;AAAA;AAAA;AAAA,IAGA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,EAAA,EACA,KAAK,GAAG;AACZ,GAEMC,IAAcD;AAAA,EAClB,CAAC,+CAA+C,EAAE,KAAK,GAAG;AAC5D,GAEME,IAAsBF;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA,IAIE;AAAA,IACA;AAAA;AAAA;AAAA,IAGA;AAAA,EAAA,EACA,KAAK,GAAG;AACZ,GAMMG,IAAyBH;AAAA,EAC7B,CAAC,wBAAwB,eAAe,WAAW,EAAE,KAAK,GAAG;AAC/D,GAEMI,IAAeJ;AAAA,EACnB;AAAA;AAAA;AAAA,IAGE;AAAA;AAAA;AAAA,IAGA;AAAA,EAAA,EACA,KAAK,GAAG;AAAA,EACV;AAAA,IACE,UAAU;AAAA,MACR,QAAQ;AAAA,QACN,MAAM;AAAA,UACJ;AAAA,UACA;AAAA,QAAA,EACA,KAAK,GAAG;AAAA,QACV,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,IAEF,iBAAiB,EAAE,QAAQ,GAAA;AAAA,EAAK;AAEpC,GAEMK,IAAqBL,EAAI,aAAa,GAmC/BM,IAAWC;AAAA,EACtB,CACE;AAAA,IACE,QAAAC;AAAA,IACA,SAAAC;AAAA,IACA,UAAAC;AAAA,IACA,YAAAC;AAAA,IACA,QAAAC;AAAA,IACA,QAAAC,IAAS;AAAA,IACT,eAAAC;AAAA,IACA,QAAAC,IAAS;AAAA,IACT,WAAAC;AAAA,IACA,eAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAM,EAAE,GAAAC,EAAA,IAAMC,EAAA,GACRC,IACJR,KAAiBM,EAAE,4BAA4B,cAAc,GAEzD,CAACG,GAAcC,CAAe,IAAIC,EAAS,EAAK,GAChDC,IAAmBC,EAAY,CAACC,MAAgC;AACpE,YAAMC,IAAOD,EAAM,cAAc,YAAY;AAC7C,MAAAJ,EAAgB,CAACM,MAAUA,MAASD,IAAOC,IAAOD,CAAK;AAAA,IACzD,GAAG,CAAA,CAAE;AAEL,WACE,gBAAAE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAZ;AAAA,QACA,qBAAmBI,IAAe,SAAS;AAAA,QAC3C,kBAAe;AAAA,QACf,WAAWxB,EAAa,EAAE,WAAAiB,GAAW;AAAA,QACpC,GAAGE;AAAA,QAKH,UAAA;AAAA,UAAAV;AAAA,4BACA,OAAA,EAAI,WAAWP,EAAA,GAAe,uBAAoB,OACjD,UAAA;AAAA,YAAA,gBAAA+B,EAAC,SAAI,WAAW9B,EAAA,GAAuB,uBAAoB,WACxD,UAAAO,GACH;AAAA,YACA,gBAAAuB;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,IAAInB;AAAA,gBACJ,UAAU;AAAA,gBACV,cAAYS;AAAA,gBACZ,UAAUI;AAAA,gBACV,WAAWtB,EAAa,EAAE,QAAAW,GAAQ,WAAWE,GAAe;AAAA,gBAE3D,UAAAP;AAAA,cAAA;AAAA,YAAA;AAAA,YAEFC,IACC,gBAAAqB;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAW7B,EAAA;AAAA,gBACX,uBAAoB;AAAA,gBAEnB,UAAAQ;AAAA,cAAA;AAAA,YAAA,IAED;AAAA,UAAA,GACN;AAAA,UACCC,sBACE,OAAA,EAAI,WAAWP,KAAsB,uBAAoB,UACvD,UAAAO,EAAA,CACH,IACE;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF;AACAN,EAAS,cAAc;"}
@@ -1 +1 @@
1
- {"version":3,"file":"aspect-ratio-DeSNzASA.js","sources":["../../src/components/aspect-ratio/aspect-ratio.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes, type ReactNode, type CSSProperties } from 'react';\nimport { Root as RadixAspectRatio } from '@radix-ui/react-aspect-ratio';\nimport { cva } from 'class-variance-authority';\n\nexport { RadixAspectRatio as AspectRatioPrimitive };\n\ntype PresetRatio = '1:1' | '4:3' | '16:9' | '3:2' | '21:9';\ntype FitValue = 'cover' | 'contain' | 'fill' | 'scale-down' | 'none';\n\nconst aspectRatioVariants = cva(\n [\n 'ds:relative ds:inline-size-full ds:overflow-hidden',\n 'ds:[&>*]:absolute ds:[&>*]:inset-0 ds:[&>*]:inline-size-full ds:[&>*]:block-size-full',\n 'ds:[&>*]:[object-position:var(--ar-object-position,center)]',\n ],\n {\n variants: {\n ratio: {\n '1:1': 'ds:aspect-[1/1] ar-1x1',\n '4:3': 'ds:aspect-[4/3] ar-4x3',\n '16:9': 'ds:aspect-[16/9] ar-16x9',\n '3:2': 'ds:aspect-[3/2] ar-3x2',\n '21:9': 'ds:aspect-[21/9] ar-21x9',\n } satisfies Record<PresetRatio, string>,\n fit: {\n cover: 'ds:[&>*]:object-cover',\n contain: 'ds:[&>*]:object-contain',\n fill: 'ds:[&>*]:object-fill',\n 'scale-down': 'ds:[&>*]:object-scale-down',\n none: 'ds:[&>*]:object-none',\n } satisfies Record<FitValue, string>,\n },\n defaultVariants: {\n ratio: '16:9',\n fit: 'cover',\n },\n },\n);\n\nexport interface AspectRatioProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {\n /** Preset ratio or numeric escape hatch (e.g. 2.35 for cinema). */\n ratio?: PresetRatio | number;\n /** object-fit applied to the direct child element. */\n fit?: FitValue;\n /** Forwarded to the child via `--ar-object-position` CSS variable. */\n objectPosition?: string;\n children: ReactNode;\n}\n\nexport const AspectRatio = forwardRef<HTMLDivElement, AspectRatioProps>(\n ({ ratio, fit, objectPosition, className, style, children, ...rest }, ref) => {\n const isNumericRatio = typeof ratio === 'number';\n // When a numeric ratio is passed we drive the layout via the inline\n // `aspectRatio` style. We must also pass `ratio: null` to CVA so the\n // preset (default `'16:9'`) is suppressed — `undefined` would fall back\n // to defaultVariants and apply the 16:9 utility, conflicting with the\n // numeric value.\n const presetRatio: PresetRatio | null | undefined = isNumericRatio\n ? null\n : (ratio as PresetRatio | undefined);\n\n // Sanctioned inline styles (constraint §4 exceptions):\n // 1. `aspectRatio` — numeric ratio escape hatch has no Tailwind equivalent\n // 2. `--ar-object-position` — CSS custom property forwarded to the child via var()\n // Radix Root is NOT used as the render element: it uses padding-top + physical\n // properties (top/right/bottom/left) which violate constraints §3 and §4.\n const computedStyle: (CSSProperties & Record<string, string | number>) | undefined =\n isNumericRatio || objectPosition || style\n ? {\n ...style,\n ...(isNumericRatio ? { aspectRatio: ratio } : {}),\n ...(objectPosition ? { '--ar-object-position': objectPosition } : {}),\n }\n : undefined;\n\n return (\n <div\n ref={ref}\n data-component=\"aspect-ratio\"\n className={aspectRatioVariants({ ratio: presetRatio, fit, className })}\n style={computedStyle}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nAspectRatio.displayName = 'AspectRatio';\n"],"names":["aspectRatioVariants","cva","AspectRatio","forwardRef","ratio","fit","objectPosition","className","style","children","rest","ref","isNumericRatio","presetRatio","computedStyle","jsx"],"mappings":";;;;AASA,MAAMA,IAAsBC;AAAA,EAC1B;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAAA,EAEF;AAAA,IACE,UAAU;AAAA,MACR,OAAO;AAAA,QACL,OAAO;AAAA,QACP,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,MAAA;AAAA,MAEV,KAAK;AAAA,QACH,OAAO;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,QACN,cAAc;AAAA,QACd,MAAM;AAAA,MAAA;AAAA,IACR;AAAA,IAEF,iBAAiB;AAAA,MACf,OAAO;AAAA,MACP,KAAK;AAAA,IAAA;AAAA,EACP;AAEJ,GAaaC,IAAcC;AAAA,EACzB,CAAC,EAAE,OAAAC,GAAO,KAAAC,GAAK,gBAAAC,GAAgB,WAAAC,GAAW,OAAAC,GAAO,UAAAC,GAAU,GAAGC,EAAA,GAAQC,MAAQ;AAC5E,UAAMC,IAAiB,OAAOR,KAAU,UAMlCS,IAA8CD,IAChD,OACCR,GAOCU,IACJF,KAAkBN,KAAkBE,IAChC;AAAA,MACE,GAAGA;AAAA,MACH,GAAII,IAAiB,EAAE,aAAaR,EAAA,IAAU,CAAA;AAAA,MAC9C,GAAIE,IAAiB,EAAE,wBAAwBA,MAAmB,CAAA;AAAA,IAAC,IAErE;AAEN,WACE,gBAAAS;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAJ;AAAA,QACA,kBAAe;AAAA,QACf,WAAWX,EAAoB,EAAE,OAAOa,GAAa,KAAAR,GAAK,WAAAE,GAAW;AAAA,QACrE,OAAOO;AAAA,QACN,GAAGJ;AAAA,QAEH,UAAAD;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAEAP,EAAY,cAAc;"}
1
+ {"version":3,"file":"aspect-ratio-DeSNzASA.js","sources":["../../src/components/aspect-ratio/aspect-ratio.tsx"],"sourcesContent":["import {\n forwardRef,\n type HTMLAttributes,\n type ReactNode,\n type CSSProperties,\n} from 'react';\nimport { Root as RadixAspectRatio } from '@radix-ui/react-aspect-ratio';\nimport { cva } from 'class-variance-authority';\n\nexport { RadixAspectRatio as AspectRatioPrimitive };\n\ntype PresetRatio = '1:1' | '4:3' | '16:9' | '3:2' | '21:9';\ntype FitValue = 'cover' | 'contain' | 'fill' | 'scale-down' | 'none';\n\nconst aspectRatioVariants = cva(\n [\n 'ds:relative ds:inline-size-full ds:overflow-hidden',\n 'ds:[&>*]:absolute ds:[&>*]:inset-0 ds:[&>*]:inline-size-full ds:[&>*]:block-size-full',\n 'ds:[&>*]:[object-position:var(--ar-object-position,center)]',\n ],\n {\n variants: {\n ratio: {\n '1:1': 'ds:aspect-[1/1] ar-1x1',\n '4:3': 'ds:aspect-[4/3] ar-4x3',\n '16:9': 'ds:aspect-[16/9] ar-16x9',\n '3:2': 'ds:aspect-[3/2] ar-3x2',\n '21:9': 'ds:aspect-[21/9] ar-21x9',\n } satisfies Record<PresetRatio, string>,\n fit: {\n cover: 'ds:[&>*]:object-cover',\n contain: 'ds:[&>*]:object-contain',\n fill: 'ds:[&>*]:object-fill',\n 'scale-down': 'ds:[&>*]:object-scale-down',\n none: 'ds:[&>*]:object-none',\n } satisfies Record<FitValue, string>,\n },\n defaultVariants: {\n ratio: '16:9',\n fit: 'cover',\n },\n },\n);\n\nexport interface AspectRatioProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n 'children'\n> {\n /** Preset ratio or numeric escape hatch (e.g. 2.35 for cinema). */\n ratio?: PresetRatio | number;\n /** object-fit applied to the direct child element. */\n fit?: FitValue;\n /** Forwarded to the child via `--ar-object-position` CSS variable. */\n objectPosition?: string;\n children: ReactNode;\n}\n\nexport const AspectRatio = forwardRef<HTMLDivElement, AspectRatioProps>(\n (\n { ratio, fit, objectPosition, className, style, children, ...rest },\n ref,\n ) => {\n const isNumericRatio = typeof ratio === 'number';\n // When a numeric ratio is passed we drive the layout via the inline\n // `aspectRatio` style. We must also pass `ratio: null` to CVA so the\n // preset (default `'16:9'`) is suppressed — `undefined` would fall back\n // to defaultVariants and apply the 16:9 utility, conflicting with the\n // numeric value.\n const presetRatio: PresetRatio | null | undefined = isNumericRatio\n ? null\n : (ratio as PresetRatio | undefined);\n\n // Sanctioned inline styles (constraint §4 exceptions):\n // 1. `aspectRatio` — numeric ratio escape hatch has no Tailwind equivalent\n // 2. `--ar-object-position` — CSS custom property forwarded to the child via var()\n // Radix Root is NOT used as the render element: it uses padding-top + physical\n // properties (top/right/bottom/left) which violate constraints §3 and §4.\n const computedStyle:\n | (CSSProperties & Record<string, string | number>)\n | undefined =\n isNumericRatio || objectPosition || style\n ? {\n ...style,\n ...(isNumericRatio ? { aspectRatio: ratio } : {}),\n ...(objectPosition\n ? { '--ar-object-position': objectPosition }\n : {}),\n }\n : undefined;\n\n return (\n <div\n ref={ref}\n data-component=\"aspect-ratio\"\n className={aspectRatioVariants({ ratio: presetRatio, fit, className })}\n // eslint-disable-next-line react/forbid-dom-props -- dynamic aspectRatio + --ar-object-position CSS variable, no static equivalent\n style={computedStyle}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nAspectRatio.displayName = 'AspectRatio';\n"],"names":["aspectRatioVariants","cva","AspectRatio","forwardRef","ratio","fit","objectPosition","className","style","children","rest","ref","isNumericRatio","presetRatio","computedStyle","jsx"],"mappings":";;;;AAcA,MAAMA,IAAsBC;AAAA,EAC1B;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAAA,EAEF;AAAA,IACE,UAAU;AAAA,MACR,OAAO;AAAA,QACL,OAAO;AAAA,QACP,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,MAAA;AAAA,MAEV,KAAK;AAAA,QACH,OAAO;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,QACN,cAAc;AAAA,QACd,MAAM;AAAA,MAAA;AAAA,IACR;AAAA,IAEF,iBAAiB;AAAA,MACf,OAAO;AAAA,MACP,KAAK;AAAA,IAAA;AAAA,EACP;AAEJ,GAeaC,IAAcC;AAAA,EACzB,CACE,EAAE,OAAAC,GAAO,KAAAC,GAAK,gBAAAC,GAAgB,WAAAC,GAAW,OAAAC,GAAO,UAAAC,GAAU,GAAGC,EAAA,GAC7DC,MACG;AACH,UAAMC,IAAiB,OAAOR,KAAU,UAMlCS,IAA8CD,IAChD,OACCR,GAOCU,IAGJF,KAAkBN,KAAkBE,IAChC;AAAA,MACE,GAAGA;AAAA,MACH,GAAII,IAAiB,EAAE,aAAaR,EAAA,IAAU,CAAA;AAAA,MAC9C,GAAIE,IACA,EAAE,wBAAwBA,MAC1B,CAAA;AAAA,IAAC,IAEP;AAEN,WACE,gBAAAS;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAJ;AAAA,QACA,kBAAe;AAAA,QACf,WAAWX,EAAoB,EAAE,OAAOa,GAAa,KAAAR,GAAK,WAAAE,GAAW;AAAA,QAErE,OAAOO;AAAA,QACN,GAAGJ;AAAA,QAEH,UAAAD;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAEAP,EAAY,cAAc;"}