@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":"pdf-viewer-CZIfY08H.js","sources":["../../node_modules/lucide-react/dist/esm/icons/zoom-in.js","../../node_modules/lucide-react/dist/esm/icons/zoom-out.js","../../src/components/pdf-viewer/pdf-viewer.agent.ts","../../src/components/pdf-viewer/pdf-viewer.tsx"],"sourcesContent":["/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"11\", cy: \"11\", r: \"8\", key: \"4ej97u\" }],\n [\"line\", { x1: \"21\", x2: \"16.65\", y1: \"21\", y2: \"16.65\", key: \"13gj7c\" }],\n [\"line\", { x1: \"11\", x2: \"11\", y1: \"8\", y2: \"14\", key: \"1vmskp\" }],\n [\"line\", { x1: \"8\", x2: \"14\", y1: \"11\", y2: \"11\", key: \"durymu\" }]\n];\nconst ZoomIn = createLucideIcon(\"zoom-in\", __iconNode);\n\nexport { __iconNode, ZoomIn as default };\n//# sourceMappingURL=zoom-in.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"11\", cy: \"11\", r: \"8\", key: \"4ej97u\" }],\n [\"line\", { x1: \"21\", x2: \"16.65\", y1: \"21\", y2: \"16.65\", key: \"13gj7c\" }],\n [\"line\", { x1: \"8\", x2: \"14\", y1: \"11\", y2: \"11\", key: \"durymu\" }]\n];\nconst ZoomOut = createLucideIcon(\"zoom-out\", __iconNode);\n\nexport { __iconNode, ZoomOut as default };\n//# sourceMappingURL=zoom-out.js.map\n","import type { AgentAdapter } from '../../agent/types';\nimport type { PDFViewerHandle } from './pdf-viewer';\n\nexport const pdfViewerAgent: AgentAdapter<PDFViewerHandle> = {\n id: 'pdf-viewer',\n capabilities: ['paginate', 'view_change', 'filter'],\n state: {},\n actions: {\n go_to_page: {\n safety: 'read',\n argsType: '{ page: number }',\n description: 'Navigate to a specific 1-indexed page.',\n invoke: (handle, args: { page: number }) => {\n handle.goToPage(args.page);\n },\n },\n set_zoom: {\n safety: 'read',\n argsType: '{ zoom: PDFZoomPreset }',\n description: 'Apply a zoom preset.',\n invoke: (\n handle,\n args: { zoom: Parameters<PDFViewerHandle['setZoom']>[0] },\n ) => {\n handle.setZoom(args.zoom);\n },\n },\n search: {\n safety: 'read',\n argsType: '{ query: string }',\n description:\n 'Search the document for the given query and highlight matches.',\n invoke: (handle, args: { query: string }) => {\n handle.search(args.query);\n },\n },\n print: {\n safety: 'read',\n description: 'Open the browser print dialog for the document.',\n invoke: (handle) => {\n handle.print();\n },\n },\n },\n domHooks: {\n root: { attr: 'data-component', value: 'pdf-viewer' },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n },\n};\n","/* ------------------------------------------------------------------ */\n/* PDFViewer — thin React wrapper over Mozilla's pdfjs-dist. */\n/* */\n/* - Worker: loaded once at module scope via Vite's `?url` asset */\n/* import; consumers never configure it (08-third-party §PDF Viewer). */\n/* - Lazy rendering: an IntersectionObserver renders only visible + */\n/* ±1 buffer pages; off-screen pages release GPU memory by setting */\n/* `canvas.width = 0` while the wrapper <article> keeps its reserved */\n/* height so scroll position is stable. */\n/* - Toolbar: WAI-ARIA `role=\"toolbar\"` with roving tabindex (same */\n/* pattern as RichTextEditor — see 05-accessibility.mdx §42). */\n/* - Find bar: Radix Popover; Cmd/Ctrl+F opens; matches decorated in */\n/* the text layer with a `--warning`-tinted background. */\n/* - i18n: every string via `t('pdf.*')`. Icons flipped via `rtl:…`. */\n/* */\n/* TODO: */\n/* - Full PDF.js `printService` integration (A4 / US Letter, 150 DPI,*/\n/* hidden high-DPI canvas). For now `print()` calls `window.print()`*/\n/* which renders the viewer chrome — the `@media print` rule lives */\n/* in a future theme bridge. */\n/* - AnnotationLayer for form fields and links (08-third-party). */\n/* - Accessibility-tag surfacing via `aria-describedby` per the user */\n/* story's screen-reader acceptance row. */\n/* ------------------------------------------------------------------ */\n\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type KeyboardEvent as ReactKeyboardEvent,\n type ReactNode,\n} from 'react';\nimport * as pdfjsLib from 'pdfjs-dist';\nimport type {\n PDFDocumentProxy,\n PDFPageProxy,\n} from 'pdfjs-dist/types/src/display/api';\nimport type { PageViewport } from 'pdfjs-dist/types/src/display/display_utils';\nimport { cva } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport * as RadixPopover from '@radix-ui/react-popover';\nimport {\n ChevronLeft,\n ChevronRight,\n ZoomIn,\n ZoomOut,\n Search,\n Printer,\n X,\n} from 'lucide-react';\n\n/* ------------------------------------------------------------------ */\n/* Worker setup — one-shot at module scope */\n/* ------------------------------------------------------------------ */\n\n// Vite resolves `?url` to a static URL string at build time. This keeps\n// PDF.js off the main bundle and lets the consumer not think about it.\nimport pdfjsWorkerUrl from 'pdfjs-dist/build/pdf.worker.min.mjs?url';\n\nimport { Spinner } from '../spinner';\nimport { Alert } from '../alert';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { pdfViewerAgent } from './pdf-viewer.agent';\n\npdfjsLib.GlobalWorkerOptions.workerSrc = pdfjsWorkerUrl;\n\n/* ------------------------------------------------------------------ */\n/* Public types */\n/* ------------------------------------------------------------------ */\n\nexport type PDFZoomPreset = 'fit-width' | 'fit-page' | 'actual-size' | number;\n\nexport interface PDFViewerProps {\n /** Opaque instance id — emitted as `data-component-id` for the agent registry. */\n id?: string;\n /** PDF source — URL string, ArrayBuffer, or Uint8Array. */\n src: string | ArrayBuffer | Uint8Array;\n /** Initial page (1-based). Default 1. */\n initialPage?: number;\n /** Initial zoom preset. Default 'fit-width'. */\n initialZoom?: PDFZoomPreset;\n /** Emits when the currently-most-visible page changes. */\n onPageChange?: (page: number) => void;\n /** Emits once the PDF document has loaded. */\n onLoadComplete?: (info: { numPages: number; title?: string }) => void;\n /** Emits on any load / render error. */\n onError?: (error: Error) => void;\n /** Show the toolbar. Default `true`. */\n toolbar?: boolean;\n /** Accessible label for the viewer region. */\n ariaLabel?: string;\n /** Extra class names on the wrapper. */\n className?: string;\n}\n\nexport interface PDFViewerHandle {\n goToPage: (page: number) => void;\n setZoom: (zoom: PDFZoomPreset) => void;\n search: (query: string) => void;\n print: () => void;\n}\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst wrapperVariants = cva(\n [\n 'ds:pdf-viewer-alfadocs ds:flex ds:flex-col',\n 'ds:gap-[var(--spacing-sm)]',\n 'ds:bg-[var(--background)] ds:text-[var(--foreground)]',\n 'ds:rounded-[var(--radius-md)] ds:border ds:border-[color:var(--border)]',\n 'ds:overflow-hidden',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)]',\n 'ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[var(--ring)]',\n 'ds:forced-colors:focus-visible:outline-[CanvasText]',\n ].join(' '),\n);\n\nconst toolbarVariants = cva(\n [\n 'ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]',\n 'ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]',\n 'ds:pt-[var(--spacing-xs)] ds:pb-[var(--spacing-xs)]',\n 'ds:bg-[var(--background)]',\n 'ds:border-b ds:border-[color:var(--border)]',\n ].join(' '),\n);\n\nconst toolbarButtonVariants = cva(\n [\n 'ds:inline-flex ds:items-center ds:justify-center',\n 'ds:min-block-size-[var(--min-target-size)]',\n 'ds:min-inline-size-[var(--min-target-size)]',\n 'ds:gap-[var(--spacing-xs)]',\n 'ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]',\n 'ds:rounded-[var(--radius-sm)] ds:bg-transparent ds:text-[var(--foreground)]',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:hover:bg-[var(--muted)]',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)]',\n 'ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[var(--ring)]',\n 'ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:forced-colors:focus-visible:outline-[CanvasText]',\n 'ds:aria-disabled:opacity-[var(--opacity-50)] ds:aria-disabled:cursor-not-allowed',\n ].join(' '),\n);\n\nconst pageInputVariants = cva(\n [\n 'ds:min-block-size-[var(--min-target-size)]',\n 'ds:inline-size-[4rem] ds:text-center',\n 'ds:ps-[var(--spacing-xs)] ds:pe-[var(--spacing-xs)]',\n 'ds:rounded-[var(--radius-sm)] ds:border ds:border-[color:var(--border)]',\n 'ds:bg-[var(--background)] ds:text-[var(--foreground)]',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)]',\n 'ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[var(--ring)]',\n 'ds:forced-colors:focus-visible:outline-[CanvasText]',\n ].join(' '),\n);\n\nconst zoomSelectVariants = cva(\n [\n 'ds:min-block-size-[var(--min-target-size)]',\n 'ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]',\n 'ds:rounded-[var(--radius-sm)] ds:border ds:border-[color:var(--border)]',\n 'ds:bg-[var(--background)] ds:text-[var(--foreground)]',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)]',\n 'ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[var(--ring)]',\n 'ds:forced-colors:focus-visible:outline-[CanvasText]',\n ].join(' '),\n);\n\nconst pagesContainerVariants = cva(\n [\n 'ds:relative ds:flex ds:flex-col ds:items-center',\n 'ds:gap-[var(--spacing-md)]',\n 'ds:p-[var(--spacing-md)]',\n 'ds:bg-[var(--muted)]',\n 'ds:overflow-auto',\n 'ds:min-block-size-[30rem]',\n 'ds:max-block-size-[80vh]',\n ].join(' '),\n);\n\nconst pageArticleVariants = cva(\n [\n 'ds:relative ds:flex ds:items-center ds:justify-center',\n 'ds:bg-[var(--background)]',\n 'ds:shadow-[var(--shadow-md)]',\n 'ds:rounded-[var(--radius-sm)]',\n ].join(' '),\n);\n\n/* ------------------------------------------------------------------ */\n/* Helpers */\n/* ------------------------------------------------------------------ */\n\nconst ZOOM_PRESETS: ReadonlyArray<PDFZoomPreset> = [\n 'fit-width',\n 'fit-page',\n 'actual-size',\n 0.5,\n 0.75,\n 1,\n 1.25,\n 1.5,\n 2,\n];\n\nfunction isNumberZoom(z: PDFZoomPreset): z is number {\n return typeof z === 'number';\n}\n\nfunction resolveScale(\n zoom: PDFZoomPreset,\n viewport: PageViewport,\n container: HTMLElement | null,\n): number {\n if (isNumberZoom(zoom)) return zoom;\n if (zoom === 'actual-size') return 1;\n if (!container) return 1;\n const style = window.getComputedStyle(container);\n const padX =\n parseFloat(style.paddingInlineStart || '0') +\n parseFloat(style.paddingInlineEnd || '0');\n const padY =\n parseFloat(style.paddingBlockStart || '0') +\n parseFloat(style.paddingBlockEnd || '0');\n const availW = Math.max(container.clientWidth - padX, 1);\n const availH = Math.max(container.clientHeight - padY, 1);\n const baseW = viewport.width;\n const baseH = viewport.height;\n if (zoom === 'fit-width') return availW / baseW;\n // fit-page\n return Math.min(availW / baseW, availH / baseH);\n}\n\ninterface LoadedDocument {\n doc: PDFDocumentProxy;\n numPages: number;\n title?: string;\n}\n\n/* ------------------------------------------------------------------ */\n/* PDFViewer */\n/* ------------------------------------------------------------------ */\n\nexport const PDFViewer = forwardRef<PDFViewerHandle, PDFViewerProps>(\n (\n {\n id,\n src,\n initialPage = 1,\n initialZoom = 'fit-width',\n onPageChange,\n onLoadComplete,\n onError,\n toolbar = true,\n ariaLabel,\n className,\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const rawId = useId();\n const viewerId = useMemo(\n () => `pdf-${rawId.replace(/[^a-zA-Z0-9-_]/g, '')}`,\n [rawId],\n );\n\n /* ---- RTL / reduced motion ------------------------------------ */\n const [isRtl, setIsRtl] = useState(false);\n const [reducedMotion, setReducedMotion] = useState(false);\n useEffect(() => {\n if (typeof document === 'undefined') return undefined;\n setIsRtl(document.documentElement.dir === 'rtl');\n const mql = window.matchMedia('(prefers-reduced-motion: reduce)');\n const sync = (): void => setReducedMotion(mql.matches);\n sync();\n mql.addEventListener('change', sync);\n return () => mql.removeEventListener('change', sync);\n }, []);\n\n /* ---- Document state ------------------------------------------ */\n const [loaded, setLoaded] = useState<LoadedDocument | null>(null);\n const [loadError, setLoadError] = useState<Error | null>(null);\n const [currentPage, setCurrentPage] = useState(initialPage);\n const [zoom, setZoomState] = useState<PDFZoomPreset>(initialZoom);\n const [visibleRange, setVisibleRange] = useState<{\n start: number;\n end: number;\n }>({ start: Math.max(1, initialPage - 1), end: initialPage + 1 });\n const [announcement, setAnnouncement] = useState<string>('');\n const [searchOpen, setSearchOpen] = useState(false);\n const [searchQuery, setSearchQuery] = useState('');\n const [searchMatches, setSearchMatches] = useState<{\n current: number;\n total: number;\n }>({ current: 0, total: 0 });\n\n const onPageChangeRef =\n useRef<PDFViewerProps['onPageChange']>(onPageChange);\n const onLoadCompleteRef =\n useRef<PDFViewerProps['onLoadComplete']>(onLoadComplete);\n const onErrorRef = useRef<PDFViewerProps['onError']>(onError);\n useEffect(() => {\n onPageChangeRef.current = onPageChange;\n onLoadCompleteRef.current = onLoadComplete;\n onErrorRef.current = onError;\n }, [onPageChange, onLoadComplete, onError]);\n\n /* ---- Load the PDF document ----------------------------------- */\n // Ref tracking the currently-loaded document so the cleanup path sees\n // the latest proxy (state closed over in the effect would be stale).\n const loadedRef = useRef<LoadedDocument | null>(null);\n useEffect(() => {\n loadedRef.current = loaded;\n }, [loaded]);\n useEffect(() => {\n let cancelled = false;\n setLoaded(null);\n setLoadError(null);\n\n // `getDocument` accepts a URL string, Uint8Array, or an object with a\n // `data` field. Narrow to what pdfjs expects at runtime. We always pass\n // an options object so that `disableJavaScript` and `isEvalSupported`\n // flow through — patient-uploaded PDFs must not execute embedded JS.\n // See security-hardening.mdx.\n const baseOptions = {\n disableJavaScript: true,\n isEvalSupported: false,\n } as const;\n const task = pdfjsLib.getDocument(\n typeof src === 'string'\n ? { url: src, ...baseOptions }\n : src instanceof Uint8Array\n ? { data: src, ...baseOptions }\n : { data: new Uint8Array(src), ...baseOptions },\n );\n\n task.promise.then(\n async (doc) => {\n if (cancelled) return;\n let title: string | undefined;\n try {\n const meta = await doc.getMetadata();\n const info = meta?.info as { Title?: string } | undefined;\n title = info?.Title;\n } catch {\n title = undefined;\n }\n if (cancelled) {\n // Unmounted while metadata was resolving — destroy the doc we\n // just acquired so the worker channel and font resources are\n // released.\n try {\n await doc.destroy();\n } catch {\n /* ignore */\n }\n return;\n }\n const next: LoadedDocument = { doc, numPages: doc.numPages, title };\n setLoaded(next);\n onLoadCompleteRef.current?.({ numPages: doc.numPages, title });\n },\n (err: unknown) => {\n if (cancelled) return;\n const error = err instanceof Error ? err : new Error(String(err));\n setLoadError(error);\n onErrorRef.current?.(error);\n },\n );\n\n return () => {\n cancelled = true;\n task.destroy();\n // Release the previously-loaded PDFDocumentProxy when src changes\n // or the component unmounts. PDFDocumentProxy holds fonts, embedded\n // resources, and the worker channel — without this call, switching\n // PDFs progressively leaks memory in a long-running SPA.\n const prev = loadedRef.current;\n if (prev) {\n try {\n void prev.doc.destroy();\n } catch {\n /* ignore */\n }\n loadedRef.current = null;\n }\n };\n }, [src]);\n\n /* ---- Current-page announcement ------------------------------- */\n useEffect(() => {\n if (!loaded) return;\n setAnnouncement(\n t('pdf.pageOf', { current: currentPage, total: loaded.numPages }),\n );\n onPageChangeRef.current?.(currentPage);\n }, [currentPage, loaded, t]);\n\n /* ---- Imperative handle --------------------------------------- */\n const pagesContainerRef = useRef<HTMLDivElement>(null);\n const pageArticleRefs = useRef<Array<HTMLElement | null>>([]);\n\n const goToPage = useCallback(\n (page: number) => {\n if (!loaded) return;\n const clamped = Math.max(1, Math.min(page, loaded.numPages));\n setCurrentPage(clamped);\n const article = pageArticleRefs.current[clamped - 1];\n if (article) {\n article.scrollIntoView({\n behavior: reducedMotion ? 'auto' : 'auto',\n block: 'start',\n });\n }\n },\n [loaded, reducedMotion],\n );\n\n const setZoom = useCallback((next: PDFZoomPreset) => {\n setZoomState(next);\n }, []);\n\n const internalPrint = useCallback(() => {\n // TODO: wire PDF.js printService for accurate, chrome-free output.\n if (typeof window !== 'undefined') window.print();\n }, []);\n\n const search = useCallback((query: string) => {\n setSearchQuery(query);\n setSearchOpen(query.length > 0);\n }, []);\n\n const agentHandle = useMemo<PDFViewerHandle>(\n () => ({\n goToPage,\n setZoom,\n search,\n print: internalPrint,\n }),\n [goToPage, setZoom, search, internalPrint],\n );\n useImperativeHandle(ref, () => agentHandle, [agentHandle]);\n useAgentRegistration(pdfViewerAgent, agentHandle, id);\n\n /* ---- Keyboard shortcuts on the viewer ------------------------ */\n const handleViewerKeyDown = useCallback(\n (event: ReactKeyboardEvent<HTMLDivElement>): void => {\n if (!loaded) return;\n const mod = event.metaKey || event.ctrlKey;\n\n if (event.key === 'PageDown') {\n event.preventDefault();\n goToPage(currentPage + 1);\n return;\n }\n if (event.key === 'PageUp') {\n event.preventDefault();\n goToPage(currentPage - 1);\n return;\n }\n if (event.key === 'Home') {\n event.preventDefault();\n goToPage(1);\n return;\n }\n if (event.key === 'End') {\n event.preventDefault();\n goToPage(loaded.numPages);\n return;\n }\n\n if (mod && event.key.toLowerCase() === 'f') {\n event.preventDefault();\n setSearchOpen(true);\n return;\n }\n if (mod && (event.key === '+' || event.key === '=')) {\n event.preventDefault();\n setZoomState((z) => (isNumberZoom(z) ? Math.min(z * 1.25, 4) : 1.25));\n return;\n }\n if (mod && event.key === '-') {\n event.preventDefault();\n setZoomState((z) =>\n isNumberZoom(z) ? Math.max(z / 1.25, 0.25) : 0.75,\n );\n return;\n }\n if (mod && event.key === '0') {\n event.preventDefault();\n setZoomState('fit-width');\n return;\n }\n if (mod && event.key.toLowerCase() === 'p') {\n event.preventDefault();\n internalPrint();\n }\n },\n [currentPage, goToPage, internalPrint, loaded],\n );\n\n /* ---- Intersection observer — visible page tracking ----------- */\n // `currentPage` is referenced only for a fallback inside the observer\n // callback. Including it in the effect deps would destroy and re-create\n // the observer every time the callback updates currentPage — on a\n // 100-page PDF that's O(n) observe() calls on every scroll tick.\n const currentPageRef = useRef<number>(currentPage);\n useEffect(() => {\n currentPageRef.current = currentPage;\n }, [currentPage]);\n useEffect(() => {\n if (!loaded) return undefined;\n const container = pagesContainerRef.current;\n if (!container) return undefined;\n\n const visibility = new Map<number, number>();\n const observer = new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n const pageAttr = (entry.target as HTMLElement).dataset.pageNumber;\n if (!pageAttr) continue;\n const n = Number(pageAttr);\n visibility.set(n, entry.intersectionRatio);\n }\n // Compute new \"most visible\" page + visible range\n let best = currentPageRef.current;\n let bestRatio = 0;\n let minVisible = Infinity;\n let maxVisible = -Infinity;\n for (const [page, ratio] of visibility.entries()) {\n if (ratio > bestRatio) {\n best = page;\n bestRatio = ratio;\n }\n if (ratio > 0) {\n minVisible = Math.min(minVisible, page);\n maxVisible = Math.max(maxVisible, page);\n }\n }\n if (bestRatio > 0 && best !== currentPageRef.current) {\n setCurrentPage(best);\n }\n if (minVisible !== Infinity) {\n setVisibleRange({\n start: Math.max(1, minVisible - 1),\n end: Math.min(loaded.numPages, maxVisible + 1),\n });\n }\n },\n { root: container, threshold: [0, 0.25, 0.5, 0.75, 1] },\n );\n\n pageArticleRefs.current.forEach((el) => {\n if (el) observer.observe(el);\n });\n return () => observer.disconnect();\n }, [loaded]);\n\n /* ---- Resize observer — recompute scale on fit presets -------- */\n const [containerSizeTick, setContainerSizeTick] = useState(0);\n useEffect(() => {\n const container = pagesContainerRef.current;\n if (!container || typeof ResizeObserver === 'undefined') return undefined;\n const ro = new ResizeObserver(() => {\n if (zoom === 'fit-width' || zoom === 'fit-page') {\n setContainerSizeTick((v) => v + 1);\n }\n });\n ro.observe(container);\n return () => ro.disconnect();\n }, [zoom]);\n\n /* ---- Toolbar roving tabindex --------------------------------- */\n const toolbarButtonsRef = useRef<Array<HTMLElement | null>>([]);\n const [toolbarFocusIndex, setToolbarFocusIndex] = useState(0);\n const registerToolbarButton = useCallback(\n (index: number) => (el: HTMLElement | null) => {\n toolbarButtonsRef.current[index] = el;\n },\n [],\n );\n const focusToolbarButton = useCallback((index: number) => {\n const btn = toolbarButtonsRef.current[index];\n if (btn) btn.focus();\n }, []);\n const toolbarCount = 8; // see render list below\n const handleToolbarKeyDown = useCallback(\n (event: ReactKeyboardEvent<HTMLElement>) => {\n const forward = isRtl ? 'ArrowLeft' : 'ArrowRight';\n const backward = isRtl ? 'ArrowRight' : 'ArrowLeft';\n let next: number | null = null;\n if (event.key === forward)\n next = (toolbarFocusIndex + 1) % toolbarCount;\n else if (event.key === backward)\n next = (toolbarFocusIndex - 1 + toolbarCount) % toolbarCount;\n else if (event.key === 'Home') next = 0;\n else if (event.key === 'End') next = toolbarCount - 1;\n if (next !== null) {\n event.preventDefault();\n setToolbarFocusIndex(next);\n focusToolbarButton(next);\n }\n },\n [focusToolbarButton, isRtl, toolbarFocusIndex],\n );\n\n /* ---- Render ---------------------------------------------------*/\n if (loadError) {\n return (\n <div\n className={[wrapperVariants(), className].filter(Boolean).join(' ')}\n aria-label={ariaLabel ?? t('pdf.error')}\n >\n <div className=\"ds:p-[var(--spacing-lg)]\">\n <Alert variant=\"error\" live=\"polite\">\n <Alert.Description>\n {t('pdf.error')}: {loadError.message}\n </Alert.Description>\n </Alert>\n </div>\n </div>\n );\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions -- region-level keyboard shortcuts (search, zoom) intentionally captured at the wrapper for the entire PDF viewer\n <div\n id={viewerId}\n role=\"region\"\n aria-label={ariaLabel ?? t('pdf.toolbarLabel')}\n className={[wrapperVariants(), className].filter(Boolean).join(' ')}\n dir={isRtl ? 'rtl' : undefined}\n onKeyDown={handleViewerKeyDown}\n tabIndex={-1}\n data-component=\"pdf-viewer\"\n data-component-id={id}\n // Exposed for CI assertion (story `WorkerSameOrigin`) — the\n // worker URL must be same-origin so a strict CSP can block\n // cross-origin worker loads. Read by the play function via\n // `getAttribute('data-pdfjs-worker-src')`.\n data-pdfjs-worker-src={pdfjsWorkerUrl}\n >\n {toolbar ? (\n <PDFToolbar\n currentPage={currentPage}\n numPages={loaded?.numPages ?? 0}\n zoom={zoom}\n onPrev={() => goToPage(currentPage - 1)}\n onNext={() => goToPage(currentPage + 1)}\n onJump={(p) => goToPage(p)}\n onZoomIn={() => {\n setZoomState((z) =>\n isNumberZoom(z) ? Math.min(z * 1.25, 4) : 1.25,\n );\n }}\n onZoomOut={() => {\n setZoomState((z) =>\n isNumberZoom(z) ? Math.max(z / 1.25, 0.25) : 0.75,\n );\n }}\n onZoomPreset={(v) => setZoomState(v)}\n onOpenSearch={() => setSearchOpen(true)}\n onPrint={internalPrint}\n searchOpen={searchOpen}\n onSearchOpenChange={setSearchOpen}\n searchQuery={searchQuery}\n onSearchQueryChange={(v) => {\n setSearchQuery(v);\n }}\n searchMatches={searchMatches}\n register={registerToolbarButton}\n focusIndex={toolbarFocusIndex}\n setFocusIndex={setToolbarFocusIndex}\n onToolbarKeyDown={handleToolbarKeyDown}\n isRtl={isRtl}\n />\n ) : null}\n\n {/* aria-live announcements for page / zoom changes */}\n <div aria-live=\"polite\" aria-atomic=\"true\" className=\"ds:sr-only\">\n {announcement}\n </div>\n\n <div\n ref={pagesContainerRef}\n className={pagesContainerVariants()}\n data-testid=\"pdf-pages-container\"\n >\n {loaded ? (\n Array.from({ length: loaded.numPages }, (_, i) => i + 1).map(\n (pageNumber) => (\n <PDFPage\n key={pageNumber}\n pageNumber={pageNumber}\n totalPages={loaded.numPages}\n doc={loaded.doc}\n zoom={zoom}\n container={pagesContainerRef.current}\n resizeTick={containerSizeTick}\n shouldRender={\n pageNumber >= visibleRange.start &&\n pageNumber <= visibleRange.end\n }\n registerRef={(el) => {\n pageArticleRefs.current[pageNumber - 1] = el;\n }}\n searchQuery={searchQuery}\n onMatchCount={(count) => {\n // Aggregate simplistically: sum across visible pages.\n setSearchMatches((prev) => {\n if (count === 0 && prev.total === 0) return prev;\n return {\n current: Math.min(prev.current || 1, count || 1),\n total: Math.max(prev.total, count),\n };\n });\n }}\n />\n ),\n )\n ) : (\n <div className=\"ds:inline-flex ds:items-center ds:gap-[var(--spacing-sm)] ds:text-[var(--muted-foreground)] ds:p-[var(--spacing-lg)]\">\n <Spinner size=\"sm\" label={t('pdf.loading')} />\n <span>{t('pdf.loading')}</span>\n </div>\n )}\n </div>\n </div>\n );\n },\n);\n\nPDFViewer.displayName = 'PDFViewer';\n\n/* ------------------------------------------------------------------ */\n/* PDFToolbar */\n/* ------------------------------------------------------------------ */\n\ninterface PDFToolbarProps {\n currentPage: number;\n numPages: number;\n zoom: PDFZoomPreset;\n onPrev: () => void;\n onNext: () => void;\n onJump: (page: number) => void;\n onZoomIn: () => void;\n onZoomOut: () => void;\n onZoomPreset: (v: PDFZoomPreset) => void;\n onOpenSearch: () => void;\n onPrint: () => void;\n searchOpen: boolean;\n onSearchOpenChange: (v: boolean) => void;\n searchQuery: string;\n onSearchQueryChange: (v: string) => void;\n searchMatches: { current: number; total: number };\n register: (index: number) => (el: HTMLElement | null) => void;\n focusIndex: number;\n setFocusIndex: (n: number) => void;\n onToolbarKeyDown: (event: ReactKeyboardEvent<HTMLElement>) => void;\n isRtl: boolean;\n}\n\nfunction PDFToolbar(props: PDFToolbarProps): ReactNode {\n const { t } = useTranslation();\n const {\n currentPage,\n numPages,\n zoom,\n onPrev,\n onNext,\n onJump,\n onZoomIn,\n onZoomOut,\n onZoomPreset,\n onOpenSearch,\n onPrint,\n searchOpen,\n onSearchOpenChange,\n searchQuery,\n onSearchQueryChange,\n searchMatches,\n register,\n focusIndex,\n setFocusIndex,\n onToolbarKeyDown,\n } = props;\n\n const [pageInput, setPageInput] = useState(String(currentPage));\n useEffect(() => {\n setPageInput(String(currentPage));\n }, [currentPage]);\n\n const prevDisabled = currentPage <= 1;\n const nextDisabled = currentPage >= numPages;\n\n function commitPageInput(): void {\n const parsed = Number(pageInput);\n if (Number.isFinite(parsed) && parsed >= 1) {\n onJump(Math.min(parsed, numPages));\n } else {\n setPageInput(String(currentPage));\n }\n }\n\n function renderButton(opts: {\n index: number;\n label: string;\n disabled?: boolean;\n onActivate: () => void;\n icon: ReactNode;\n }): ReactNode {\n return (\n <button\n type=\"button\"\n ref={register(opts.index)}\n tabIndex={opts.index === focusIndex ? 0 : -1}\n onFocus={() => setFocusIndex(opts.index)}\n onKeyDown={onToolbarKeyDown}\n aria-label={opts.label}\n aria-disabled={opts.disabled || undefined}\n title={opts.label}\n onClick={(event) => {\n if (opts.disabled) {\n event.preventDefault();\n return;\n }\n opts.onActivate();\n }}\n className={toolbarButtonVariants()}\n >\n {opts.icon}\n </button>\n );\n }\n\n return (\n <div\n role=\"toolbar\"\n aria-label={t('pdf.toolbarLabel')}\n className={toolbarVariants()}\n >\n {renderButton({\n index: 0,\n label: t('pdf.previousPage'),\n disabled: prevDisabled,\n onActivate: onPrev,\n icon: (\n <ChevronLeft\n aria-hidden=\"true\"\n className=\"ds:block-size-4 ds:inline-size-4 ds:rtl:rotate-180\"\n />\n ),\n })}\n\n {renderButton({\n index: 1,\n label: t('pdf.nextPage'),\n disabled: nextDisabled,\n onActivate: onNext,\n icon: (\n <ChevronRight\n aria-hidden=\"true\"\n className=\"ds:block-size-4 ds:inline-size-4 ds:rtl:rotate-180\"\n />\n ),\n })}\n\n <input\n type=\"number\"\n min={1}\n max={Math.max(numPages, 1)}\n value={pageInput}\n onChange={(e) => setPageInput(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n commitPageInput();\n }\n }}\n onBlur={commitPageInput}\n onFocus={() => setFocusIndex(2)}\n ref={register(2) as (el: HTMLInputElement | null) => void}\n tabIndex={focusIndex === 2 ? 0 : -1}\n aria-label={t('pdf.currentPageInput')}\n className={pageInputVariants()}\n />\n\n <span\n aria-hidden=\"true\"\n className=\"type-body-sm ds:text-[var(--muted-foreground)]\"\n >\n {t('pdf.pageOf', { current: currentPage, total: numPages || 0 })}\n </span>\n\n <span\n aria-hidden=\"true\"\n className=\"ds:inline-block ds:block-size-6 ds:inline-size-px ds:bg-[var(--border)] ds:ms-[var(--spacing-xs)] ds:me-[var(--spacing-xs)]\"\n />\n\n {renderButton({\n index: 3,\n label: t('pdf.zoom.out'),\n onActivate: onZoomOut,\n icon: (\n <ZoomOut\n aria-hidden=\"true\"\n className=\"ds:block-size-4 ds:inline-size-4\"\n />\n ),\n })}\n\n {renderButton({\n index: 4,\n label: t('pdf.zoom.in'),\n onActivate: onZoomIn,\n icon: (\n <ZoomIn\n aria-hidden=\"true\"\n className=\"ds:block-size-4 ds:inline-size-4\"\n />\n ),\n })}\n\n <select\n aria-label={t('pdf.zoom.preset')}\n value={typeof zoom === 'number' ? String(zoom) : zoom}\n onChange={(e) => {\n const v = e.target.value;\n if (v === 'fit-width' || v === 'fit-page' || v === 'actual-size') {\n onZoomPreset(v);\n } else {\n const parsed = Number(v);\n if (Number.isFinite(parsed)) onZoomPreset(parsed);\n }\n }}\n ref={register(5) as (el: HTMLSelectElement | null) => void}\n tabIndex={focusIndex === 5 ? 0 : -1}\n onFocus={() => setFocusIndex(5)}\n onKeyDown={onToolbarKeyDown}\n className={zoomSelectVariants()}\n >\n <option value=\"fit-width\">{t('pdf.zoom.fitWidth')}</option>\n <option value=\"fit-page\">{t('pdf.zoom.fitPage')}</option>\n <option value=\"actual-size\">{t('pdf.zoom.actualSize')}</option>\n {ZOOM_PRESETS.filter(isNumberZoom).map((n) => (\n <option key={n} value={String(n)}>\n {`${Math.round(n * 100)}%`}\n </option>\n ))}\n </select>\n\n <RadixPopover.Root open={searchOpen} onOpenChange={onSearchOpenChange}>\n <RadixPopover.Trigger asChild>\n {renderButton({\n index: 6,\n label: t('pdf.search.open'),\n onActivate: onOpenSearch,\n icon: (\n <Search\n aria-hidden=\"true\"\n className=\"ds:block-size-4 ds:inline-size-4\"\n />\n ),\n })}\n </RadixPopover.Trigger>\n <RadixPopover.Portal>\n <RadixPopover.Content\n sideOffset={8}\n className={[\n 'ds:z-[var(--z-popover)]',\n 'ds:bg-[var(--popover)] ds:text-[var(--popover-foreground)]',\n 'ds:rounded-[var(--radius-md)] ds:border ds:border-[color:var(--border)]',\n 'ds:shadow-[var(--shadow-lg)]',\n 'ds:p-[var(--spacing-sm)]',\n 'ds:flex ds:items-center ds:gap-[var(--spacing-xs)]',\n ].join(' ')}\n >\n <input\n type=\"search\"\n // eslint-disable-next-line jsx-a11y/no-autofocus -- focuses the search input when the toolbar opens to capture immediate typing\n autoFocus\n value={searchQuery}\n onChange={(e) => onSearchQueryChange(e.target.value)}\n placeholder={t('pdf.search.placeholder')}\n aria-label={t('pdf.search.placeholder')}\n className={pageInputVariants({\n className: 'ds:inline-size-[16rem] ds:text-start',\n })}\n />\n <span\n aria-live=\"polite\"\n className=\"type-meta ds:text-[var(--muted-foreground)]\"\n >\n {searchMatches.total > 0\n ? t('pdf.search.countOfTotal', {\n current: searchMatches.current,\n total: searchMatches.total,\n })\n : searchQuery\n ? t('pdf.search.noResults')\n : ''}\n </span>\n <RadixPopover.Close asChild>\n <button\n type=\"button\"\n aria-label={t('pdf.search.close')}\n className={toolbarButtonVariants()}\n >\n <X\n aria-hidden=\"true\"\n className=\"ds:block-size-4 ds:inline-size-4\"\n />\n </button>\n </RadixPopover.Close>\n </RadixPopover.Content>\n </RadixPopover.Portal>\n </RadixPopover.Root>\n\n {renderButton({\n index: 7,\n label: t('pdf.print'),\n onActivate: onPrint,\n icon: (\n <Printer\n aria-hidden=\"true\"\n className=\"ds:block-size-4 ds:inline-size-4\"\n />\n ),\n })}\n </div>\n );\n}\n\n/* ------------------------------------------------------------------ */\n/* PDFPage — renders one canvas + text layer */\n/* ------------------------------------------------------------------ */\n\ninterface PDFPageProps {\n pageNumber: number;\n totalPages: number;\n doc: PDFDocumentProxy;\n zoom: PDFZoomPreset;\n container: HTMLElement | null;\n resizeTick: number;\n shouldRender: boolean;\n registerRef: (el: HTMLElement | null) => void;\n searchQuery: string;\n onMatchCount: (count: number) => void;\n}\n\nfunction PDFPage(props: PDFPageProps): ReactNode {\n const {\n pageNumber,\n totalPages,\n doc,\n zoom,\n container,\n resizeTick,\n shouldRender,\n registerRef,\n searchQuery,\n onMatchCount,\n } = props;\n const { t } = useTranslation();\n\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const textLayerRef = useRef<HTMLDivElement>(null);\n const [dims, setDims] = useState<{ width: number; height: number }>({\n width: 612,\n height: 792,\n });\n const [pageProxy, setPageProxy] = useState<PDFPageProxy | null>(null);\n\n /* Get the page proxy once */\n useEffect(() => {\n let cancelled = false;\n doc.getPage(pageNumber).then((p) => {\n if (!cancelled) setPageProxy(p);\n });\n return () => {\n cancelled = true;\n };\n }, [doc, pageNumber]);\n\n /* Compute dimensions from viewport + zoom */\n useEffect(() => {\n if (!pageProxy) return;\n const baseViewport = pageProxy.getViewport({ scale: 1 });\n const scale = resolveScale(zoom, baseViewport, container);\n const scaled = pageProxy.getViewport({ scale });\n setDims({\n width: Math.floor(scaled.width),\n height: Math.floor(scaled.height),\n });\n }, [pageProxy, zoom, container, resizeTick]);\n\n /* Render the canvas + text layer when shouldRender flips on */\n useEffect(() => {\n if (!pageProxy || !shouldRender) {\n // Release GPU memory if we've been culled.\n const canvas = canvasRef.current;\n if (canvas && !shouldRender) {\n canvas.width = 0;\n }\n return undefined;\n }\n\n const canvas = canvasRef.current;\n const textLayerEl = textLayerRef.current;\n if (!canvas) return undefined;\n const ctx = canvas.getContext('2d');\n if (!ctx) return undefined;\n\n const baseViewport = pageProxy.getViewport({ scale: 1 });\n const scale = resolveScale(zoom, baseViewport, container);\n const viewport = pageProxy.getViewport({ scale });\n const dpr = Math.max(1, window.devicePixelRatio || 1);\n\n canvas.width = Math.floor(viewport.width * dpr);\n canvas.height = Math.floor(viewport.height * dpr);\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n\n const renderTask = pageProxy.render({\n canvas,\n canvasContext: ctx,\n viewport,\n });\n\n let cancelled = false;\n let textLayer: pdfjsLib.TextLayer | null = null;\n\n renderTask.promise\n .then(async () => {\n if (cancelled || !textLayerEl) return;\n // Clear prior runs before layering.\n textLayerEl.textContent = '';\n const textContent = await pageProxy.getTextContent();\n if (cancelled) return;\n textLayer = new pdfjsLib.TextLayer({\n textContentSource: textContent,\n container: textLayerEl,\n viewport,\n });\n await textLayer.render();\n // Highlight matches if a search query is active.\n highlightMatches(textLayerEl, searchQuery, onMatchCount);\n })\n .catch(() => {\n // Render cancelled mid-flight — nothing actionable.\n });\n\n return () => {\n cancelled = true;\n try {\n renderTask.cancel();\n } catch {\n /* ignore */\n }\n if (textLayer) {\n try {\n textLayer.cancel();\n } catch {\n /* ignore */\n }\n }\n };\n }, [\n pageProxy,\n shouldRender,\n zoom,\n container,\n resizeTick,\n searchQuery,\n onMatchCount,\n ]);\n\n /* Re-run highlight when search query changes without re-rendering */\n useEffect(() => {\n if (!shouldRender) return;\n const textLayerEl = textLayerRef.current;\n if (!textLayerEl) return;\n highlightMatches(textLayerEl, searchQuery, onMatchCount);\n }, [searchQuery, shouldRender, onMatchCount]);\n\n // Inline style — permitted per 23-constraints §Runtime-computed\n // dimensions (PDF.js page viewport × devicePixelRatio). Wrapper height\n // mirrors the canvas so scroll position stays stable even when the\n // page is culled.\n const canvasStyle: CSSProperties = {\n width: dims.width,\n height: dims.height,\n };\n const articleStyle: CSSProperties = {\n width: dims.width,\n height: dims.height,\n };\n\n return (\n <article\n ref={(el) => {\n registerRef(el);\n }}\n data-page-number={pageNumber}\n aria-label={t('pdf.pageOf', { current: pageNumber, total: totalPages })}\n className={pageArticleVariants()}\n // eslint-disable-next-line react/forbid-dom-props -- runtime-computed PDF page dimensions\n style={articleStyle}\n >\n {/* eslint-disable-next-line react/forbid-dom-props -- runtime-computed canvas dimensions */}\n <canvas ref={canvasRef} style={canvasStyle} />\n <div\n ref={textLayerRef}\n aria-hidden=\"false\"\n className={[\n 'ds:absolute ds:inset-0',\n 'ds:overflow-hidden',\n 'ds:select-text',\n 'ds:opacity-100',\n 'ds:[&>span]:absolute ds:[&>span]:whitespace-pre',\n 'ds:[&>span]:text-transparent ds:[&>span]:origin-[0_0]',\n 'ds:[&_[data-match=true]]:bg-[color-mix(in_srgb,var(--warning)_35%,transparent)]',\n 'ds:[&_[data-match=current]]:bg-[color-mix(in_srgb,var(--warning)_60%,transparent)]',\n ].join(' ')}\n />\n </article>\n );\n}\n\n/* ------------------------------------------------------------------ */\n/* Search-highlight helper */\n/* ------------------------------------------------------------------ */\n\nfunction highlightMatches(\n container: HTMLElement,\n query: string,\n onCount: (count: number) => void,\n): void {\n // Wipe prior highlights.\n const prior = container.querySelectorAll('[data-match]');\n prior.forEach((el) => {\n (el as HTMLElement).removeAttribute('data-match');\n });\n if (!query) {\n onCount(0);\n return;\n }\n const lower = query.toLowerCase();\n let matchCount = 0;\n const spans = container.querySelectorAll<HTMLSpanElement>('span');\n spans.forEach((span) => {\n const text = span.textContent ?? '';\n if (text.toLowerCase().includes(lower)) {\n span.setAttribute('data-match', 'true');\n matchCount += 1;\n }\n });\n onCount(matchCount);\n}\n\nexport { toolbarButtonVariants, toolbarVariants, wrapperVariants };\n"],"names":["__iconNode","ZoomIn","createLucideIcon","ZoomOut","pdfViewerAgent","handle","args","pdfjsLib","pdfjsWorkerUrl","wrapperVariants","cva","toolbarVariants","toolbarButtonVariants","pageInputVariants","zoomSelectVariants","pagesContainerVariants","pageArticleVariants","ZOOM_PRESETS","isNumberZoom","z","resolveScale","zoom","viewport","container","style","padX","padY","availW","availH","baseW","baseH","PDFViewer","forwardRef","id","src","initialPage","initialZoom","onPageChange","onLoadComplete","onError","toolbar","ariaLabel","className","ref","t","useTranslation","rawId","useId","viewerId","useMemo","isRtl","setIsRtl","useState","reducedMotion","setReducedMotion","useEffect","mql","sync","loaded","setLoaded","loadError","setLoadError","currentPage","setCurrentPage","setZoomState","visibleRange","setVisibleRange","announcement","setAnnouncement","searchOpen","setSearchOpen","searchQuery","setSearchQuery","searchMatches","setSearchMatches","onPageChangeRef","useRef","onLoadCompleteRef","onErrorRef","loadedRef","cancelled","baseOptions","task","doc","title","meta","info","next","_a","err","error","prev","pagesContainerRef","pageArticleRefs","goToPage","useCallback","page","clamped","article","setZoom","internalPrint","search","query","agentHandle","useImperativeHandle","useAgentRegistration","handleViewerKeyDown","event","mod","currentPageRef","visibility","observer","entries","entry","pageAttr","n","best","bestRatio","minVisible","maxVisible","ratio","el","containerSizeTick","setContainerSizeTick","ro","v","toolbarButtonsRef","toolbarFocusIndex","setToolbarFocusIndex","registerToolbarButton","index","focusToolbarButton","btn","toolbarCount","handleToolbarKeyDown","forward","backward","jsx","Alert","jsxs","PDFToolbar","p","_","i","pageNumber","PDFPage","count","Spinner","props","numPages","onPrev","onNext","onJump","onZoomIn","onZoomOut","onZoomPreset","onOpenSearch","onPrint","onSearchOpenChange","onSearchQueryChange","register","focusIndex","setFocusIndex","onToolbarKeyDown","pageInput","setPageInput","prevDisabled","nextDisabled","commitPageInput","parsed","renderButton","opts","ChevronLeft","ChevronRight","e","RadixPopover","Search","X","Printer","totalPages","resizeTick","shouldRender","registerRef","onMatchCount","canvasRef","textLayerRef","dims","setDims","pageProxy","setPageProxy","baseViewport","scale","scaled","canvas","textLayerEl","ctx","dpr","renderTask","textLayer","textContent","highlightMatches","canvasStyle","articleStyle","onCount","lower","matchCount","span"],"mappings":"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","x_google_ignoreList":[0,1]}
@@ -5,7 +5,7 @@ import { R as Ee, _ as b } from "./index-4xgbg-sn.js";
5
5
  import { c as H } from "./index-D2ZczOXr.js";
6
6
  import { useTranslation as je } from "react-i18next";
7
7
  import { getCountries as Be, parsePhoneNumberFromString as F, AsYouType as M, getCountryCallingCode as De } from "libphonenumber-js/min";
8
- import { u as Te, F as Ae } from "./form-field-context-94LwgYTQ.js";
8
+ import { u as Te, F as Ae } from "./form-field-context-B3APVHKx.js";
9
9
  import { c as Le } from "./compose-refs-C0k0tdqF.js";
10
10
  import { n as q } from "./normalize-diacritics-BNGbFNlJ.js";
11
11
  import { a as ne } from "./flag-DZ6V7-hU.js";
@@ -336,9 +336,7 @@ const tt = Se(
336
336
  ), N = m(() => {
337
337
  if (!I || I.length === 0) return [];
338
338
  const e = new Map(g.map((t) => [t.code, t]));
339
- return I.filter(
340
- (t) => z.has(t)
341
- ).map((t) => e.get(t)).filter((t) => !!t);
339
+ return I.filter((t) => z.has(t)).map((t) => e.get(t)).filter((t) => !!t);
342
340
  }, [I, g, z]), L = m(
343
341
  () => new Set(N.map((e) => e.code)),
344
342
  [N]
@@ -348,10 +346,7 @@ const tt = Se(
348
346
  ), S = m(
349
347
  () => g.find((e) => e.code === l),
350
348
  [g, l]
351
- ), Q = S ? S.dialCode : "", Ie = S ? S.name : l, X = v(
352
- "ui.inputs.phone.countryPickerLabel",
353
- "Country"
354
- ), Re = `${X}: ${Ie}, +${Q}`, ke = se(
349
+ ), Q = S ? S.dialCode : "", Ie = S ? S.name : l, X = v("ui.inputs.phone.countryPickerLabel", "Country"), Re = `${X}: ${Ie}, +${Q}`, ke = se(
355
350
  (e, t, s) => {
356
351
  const c = q(e), x = q(t), te = s == null ? void 0 : s.map(q);
357
352
  return Ee(
@@ -510,4 +505,4 @@ export {
510
505
  He as c,
511
506
  qe as p
512
507
  };
513
- //# sourceMappingURL=phone-input-C8Op4sEc.js.map
508
+ //# sourceMappingURL=phone-input-CSHJOJ13.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phone-input-CSHJOJ13.js","sources":["../../src/components/phone-input/phone-input.agent.ts","../../src/components/phone-input/phone-input.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — PhoneInput. */\n/* */\n/* See `src/docs/26-agent-readiness.mdx` for the contract. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { PhoneInputHandle } from './phone-input';\n\nexport const phoneInputAgent: AgentAdapter<PhoneInputHandle> = {\n id: 'phone-input',\n capabilities: ['edit_inline'],\n state: {\n value: {\n type: 'string',\n descriptionKey: 'ui.agent.phoneInput.state.value',\n description:\n 'Current E.164 phone number, or empty string when not yet valid.',\n read: (handle) => handle.getValue(),\n },\n isEmpty: {\n type: 'boolean',\n descriptionKey: 'ui.agent.phoneInput.state.isEmpty',\n description: 'Whether the input has no value.',\n read: (handle) => handle.getValue() === '',\n },\n },\n actions: {\n set_value: {\n safety: 'write',\n argsType: '{ value: string }',\n descriptionKey: 'ui.agent.phoneInput.actions.setValue',\n description:\n 'Replace the phone number (E.164 or national format; parser will infer country).',\n invoke: (handle, args: { value: string }) => {\n handle.setValue(args.value);\n },\n },\n clear: {\n safety: 'destructive',\n descriptionKey: 'ui.agent.phoneInput.actions.clear',\n description: 'Empty the input. Loses any typed value.',\n invoke: (handle) => {\n handle.clear();\n },\n },\n focus: {\n safety: 'read',\n descriptionKey: 'ui.agent.phoneInput.actions.focus',\n description: 'Move keyboard focus to the phone-number input.',\n invoke: (handle) => {\n handle.focus();\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'phone-input',\n description: 'Marks the PhoneInput wrapper.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n },\n};\n","import {\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type ChangeEvent,\n} from 'react';\nimport { useAgentRegistration } from '../../agent';\nimport { phoneInputAgent } from './phone-input.agent';\n\n/** Agent-readiness curated handle for PhoneInput. */\nexport interface PhoneInputHandle {\n getValue: () => string;\n setValue: (value: string) => void;\n clear: () => void;\n focus: () => void;\n}\nimport * as Popover from '@radix-ui/react-popover';\nimport { Command, defaultFilter } from 'cmdk';\nimport { cva } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { ChevronDown } from 'lucide-react';\nimport {\n AsYouType,\n getCountries,\n getCountryCallingCode,\n parsePhoneNumberFromString,\n type CountryCode,\n} from 'libphonenumber-js/min';\nimport {\n FormFieldContext,\n useFormField,\n} from '../form-field/form-field-context';\nimport { composeRefs } from '../_shared/compose-refs';\nimport { normalizeDiacritics } from '../_shared/normalize-diacritics';\nimport { Flag } from '../flag';\n\nexport interface PhoneInputChangeMeta {\n country: CountryCode;\n isValid: boolean;\n isPossible: boolean;\n type?: string;\n}\n\nexport interface PhoneInputProps {\n value?: string;\n defaultValue?: string;\n /**\n * Country pre-selected when no value is supplied. Defaults to `IT`\n * (AlfaDocs's dominant user base is Italian). Pass a different\n * `CountryCode` to override, or enable `detectBrowserCountry` to\n * derive it from the browser locale.\n */\n defaultCountry?: CountryCode;\n /**\n * When true, infer the default country from `navigator.language` /\n * `Intl.Locale` before falling back to `defaultCountry` (or `IT`).\n * Off by default — most AlfaDocs flows should stay on IT regardless\n * of the visitor's browser locale.\n */\n detectBrowserCountry?: boolean;\n onChange?: (e164: string, meta: PhoneInputChangeMeta) => void;\n size?: 'sm' | 'md' | 'lg';\n tone?: 'default' | 'error';\n disabled?: boolean;\n readOnly?: boolean;\n placeholder?: string;\n popularCountries?: CountryCode[];\n className?: string;\n id?: string;\n name?: string;\n required?: boolean;\n 'aria-label'?: string;\n}\n\nconst phoneInputWrapperVariants = cva(\n [\n 'ds:group ds:relative ds:inline-flex ds:items-stretch ds:w-full',\n 'ds:rounded-[var(--radius-sm)] ds:border ds:border-border ds:bg-background',\n 'ds:text-foreground',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:focus-within:outline-[length:var(--focus-ring-width)] ds:focus-within:outline-solid',\n 'ds:focus-within:outline-ring ds:focus-within:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:forced-colors:focus-within:outline-[CanvasText]',\n 'ds:has-[:disabled]:cursor-not-allowed ds:has-[:disabled]:opacity-50',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:h-8 ds:text-[length:var(--font-size-sm)]',\n md: 'ds:h-[var(--min-target-size)] ds:text-[length:var(--font-size-base)]',\n lg: 'ds:h-12 ds:text-[length:var(--font-size-lg)]',\n },\n tone: {\n default: '',\n error: 'ds:border-destructive ds:focus-within:outline-destructive',\n },\n },\n defaultVariants: {\n size: 'md',\n tone: 'default',\n },\n },\n);\n\nconst countryTriggerVariants = cva(\n [\n 'ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]',\n 'ds:bg-transparent ds:text-foreground',\n 'ds:border-0 ds:border-e ds:border-e-border',\n 'ds:rounded-s-[var(--radius-sm)]',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:hover:bg-muted',\n 'ds:focus:outline-none',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:forced-colors:focus-visible:outline-[CanvasText]',\n 'ds:disabled:cursor-not-allowed',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:ps-3 ds:pe-2',\n md: 'ds:ps-3 ds:pe-2',\n lg: 'ds:ps-4 ds:pe-3',\n },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\nconst phoneNumberInputVariants = cva(\n [\n 'ds:flex-1 ds:min-w-0 ds:bg-transparent ds:text-foreground ds:placeholder:text-muted-foreground',\n 'ds:border-0 ds:outline-none',\n 'ds:disabled:cursor-not-allowed',\n 'ds:read-only:cursor-default',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:ps-2 ds:pe-3 ds:text-[length:var(--font-size-sm)]',\n md: 'ds:ps-2 ds:pe-3 ds:text-[length:var(--font-size-base)]',\n lg: 'ds:ps-3 ds:pe-4 ds:text-[length:var(--font-size-lg)]',\n },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\nconst pickerContentClasses = [\n 'ds:z-[var(--z-popover)] ds:overflow-hidden ds:w-72',\n 'ds:rounded-[var(--radius-md)] ds:border ds:border-border ds:bg-background ds:text-foreground',\n 'ds:shadow-[var(--shadow-lg)]',\n 'ds:animate-in ds:fade-in ds:zoom-in-95',\n 'ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out',\n 'ds:data-[state=closed]:zoom-out-95',\n 'ds:data-[side=bottom]:slide-in-from-top-2',\n 'ds:data-[side=top]:slide-in-from-bottom-2',\n 'ds:motion-reduce:animate-none',\n].join(' ');\n\nconst pickerSearchClasses = [\n 'ds:w-full ds:bg-transparent ds:text-foreground ds:placeholder:text-muted-foreground',\n 'ds:border-0 ds:border-b ds:border-b-border ds:outline-none',\n 'ds:ps-3 ds:pe-3 ds:py-2 ds:text-[var(--font-size-sm)]',\n 'ds:focus:outline-none',\n].join(' ');\n\nconst pickerListClasses =\n 'ds:max-h-72 ds:overflow-y-auto ds:p-[var(--spacing-xs)]';\n\nconst pickerItemClasses = [\n 'ds:relative ds:flex ds:cursor-pointer ds:items-center ds:gap-[var(--spacing-sm)]',\n 'ds:rounded-[var(--radius-sm)] ds:ps-3 ds:pe-3 ds:py-2 ds:text-[var(--font-size-sm)]',\n 'ds:text-foreground ds:outline-none ds:select-none',\n 'ds:data-[highlighted]:bg-muted ds:data-[highlighted]:text-foreground',\n 'ds:data-[highlighted]:border-s-2 ds:data-[highlighted]:border-s-primary',\n 'ds:aria-selected:bg-muted',\n].join(' ');\n\nconst pickerGroupHeadingClasses = [\n 'ds:ps-3 ds:pe-3 ds:py-1.5',\n 'type-eyebrow ds:text-muted-foreground',\n].join(' ');\n\nconst pickerEmptyClasses =\n 'ds:ps-3 ds:pe-3 ds:py-2 type-body-sm ds:text-muted-foreground';\n\nconst chevronSizeBySize = {\n sm: 'ds:size-3.5',\n md: 'ds:size-4',\n lg: 'ds:size-5',\n} as const;\n\nconst flagSizeBySize = {\n sm: 'sm',\n md: 'md',\n lg: 'lg',\n} as const satisfies Record<'sm' | 'md' | 'lg', 'sm' | 'md' | 'lg'>;\n\nfunction countDigitsBefore(str: string, position: number): number {\n let digits = 0;\n for (let i = 0; i < position && i < str.length; i++) {\n if (str[i] >= '0' && str[i] <= '9') digits++;\n }\n return digits;\n}\n\nfunction positionAfterDigits(str: string, targetDigits: number): number {\n if (targetDigits === 0) return 0;\n let count = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] >= '0' && str[i] <= '9') {\n count++;\n if (count === targetDigits) return i + 1;\n }\n }\n return str.length;\n}\n\nfunction resolveDefaultCountry(\n explicit: CountryCode | undefined,\n supported: Set<string>,\n detectBrowser: boolean,\n locale: string,\n): CountryCode {\n if (explicit && supported.has(explicit)) return explicit;\n\n if (detectBrowser) {\n const fromNavigator =\n typeof navigator !== 'undefined' ? navigator.language : undefined;\n if (fromNavigator) {\n const match = fromNavigator.match(/-([A-Za-z]{2})/);\n if (match) {\n const candidate = match[1].toUpperCase();\n if (supported.has(candidate)) return candidate as CountryCode;\n }\n }\n\n try {\n const region = new Intl.Locale(locale).region;\n if (region && supported.has(region.toUpperCase())) {\n return region.toUpperCase() as CountryCode;\n }\n } catch {\n // Intl.Locale may throw on malformed BCP-47 — fall through.\n }\n }\n\n return 'IT';\n}\n\ninterface CountryRow {\n code: CountryCode;\n name: string;\n dialCode: string;\n}\n\nfunction buildCountryRows(\n locale: string,\n countries: CountryCode[],\n): CountryRow[] {\n let displayNames: Intl.DisplayNames;\n try {\n displayNames = new Intl.DisplayNames([locale], { type: 'region' });\n } catch {\n displayNames = new Intl.DisplayNames(['en'], { type: 'region' });\n }\n const rows = countries.map<CountryRow>((code) => ({\n code,\n name: displayNames.of(code) ?? code,\n dialCode: getCountryCallingCode(code),\n }));\n const collator = new Intl.Collator(locale);\n return rows.sort((a, b) => collator.compare(a.name, b.name));\n}\n\nexport const PhoneInput = forwardRef<HTMLInputElement, PhoneInputProps>(\n function PhoneInput(\n {\n value,\n defaultValue,\n defaultCountry,\n detectBrowserCountry = false,\n onChange,\n size = 'md',\n tone = 'default',\n disabled,\n readOnly,\n placeholder,\n popularCountries,\n className,\n id,\n name,\n required,\n 'aria-label': ariaLabel,\n },\n ref,\n ) {\n const { t, i18n } = useTranslation();\n const ctx = useFormField();\n const inFormField = useContext(FormFieldContext) !== null;\n\n const supportedCountries = useMemo(\n () => new Set(getCountries() as string[]),\n [],\n );\n\n const initialState = useMemo(() => {\n const resolvedCountry = resolveDefaultCountry(\n defaultCountry,\n supportedCountries,\n detectBrowserCountry,\n i18n.language,\n );\n const raw = value ?? defaultValue;\n if (raw) {\n const parsed = parsePhoneNumberFromString(raw);\n if (parsed?.country) {\n return {\n country: parsed.country,\n display: parsed.formatNational(),\n };\n }\n return { country: resolvedCountry, display: raw };\n }\n return { country: resolvedCountry, display: '' };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const [country, setCountry] = useState<CountryCode>(initialState.country);\n const [displayValue, setDisplayValue] = useState<string>(\n initialState.display,\n );\n const [pickerOpen, setPickerOpen] = useState(false);\n const [pickerSearch, setPickerSearch] = useState('');\n\n const isControlled = value !== undefined;\n const lastEmittedRef = useRef<string>('');\n const pendingCaretRef = useRef<number | null>(null);\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n const composedInputRef = composeRefs(ref, inputRef);\n\n // Sync state back from a controlled `value` prop change that did not\n // originate from this component (e.g. parent reset). Skip the sync when\n // the incoming value matches what we just emitted.\n useEffect(() => {\n if (!isControlled) return;\n const current = value ?? '';\n if (current === lastEmittedRef.current) return;\n if (current === '') {\n setDisplayValue('');\n return;\n }\n const parsed = parsePhoneNumberFromString(current);\n if (parsed?.country) {\n setCountry(parsed.country);\n setDisplayValue(parsed.formatNational());\n } else {\n setDisplayValue(current);\n }\n }, [value, isControlled]);\n\n useLayoutEffect(() => {\n if (pendingCaretRef.current == null) return;\n const pos = pendingCaretRef.current;\n pendingCaretRef.current = null;\n const node = inputRef.current;\n if (node && document.activeElement === node) {\n node.setSelectionRange(pos, pos);\n }\n });\n\n const emit = useCallback(\n (nextDisplay: string, nextCountry: CountryCode) => {\n const parsed = parsePhoneNumberFromString(nextDisplay, nextCountry);\n const e164 = parsed?.number ?? '';\n lastEmittedRef.current = e164;\n onChange?.(e164, {\n country: nextCountry,\n isValid: parsed?.isValid() ?? false,\n isPossible: parsed?.isPossible() ?? false,\n type: parsed?.getType(),\n });\n },\n [onChange],\n );\n\n const inputId = id ?? (inFormField ? ctx.id : undefined);\n const effectiveDisabled =\n (inFormField ? ctx.disabled : false) || Boolean(disabled);\n const effectiveRequired =\n (inFormField ? ctx.required : false) || Boolean(required);\n const effectiveInvalid = inFormField ? ctx.invalid : false;\n const effectiveTone = effectiveInvalid ? 'error' : tone;\n const describedBy =\n inFormField && ctx.describedBy ? ctx.describedBy : undefined;\n\n const resolvedPlaceholder =\n placeholder ?? t('ui.inputs.phone.placeholder', 'Phone number');\n\n const handleInputChange = (event: ChangeEvent<HTMLInputElement>) => {\n if (readOnly) return;\n const target = event.target;\n const raw = target.value;\n const caret = target.selectionStart ?? raw.length;\n const digitsBefore = countDigitsBefore(raw, caret);\n\n const formatter = new AsYouType(country);\n const formatted = formatter.input(raw);\n\n pendingCaretRef.current = positionAfterDigits(formatted, digitsBefore);\n setDisplayValue(formatted);\n emit(formatted, country);\n };\n\n const lastEmittedRefForHandle = lastEmittedRef;\n const agentHandle = useMemo<PhoneInputHandle>(\n () => ({\n getValue: () => lastEmittedRefForHandle.current,\n setValue: (next) => {\n if (next === '') {\n setDisplayValue('');\n emit('', country);\n return;\n }\n const parsed = parsePhoneNumberFromString(next);\n if (parsed?.country) {\n setCountry(parsed.country);\n setDisplayValue(parsed.formatNational());\n emit(parsed.formatNational(), parsed.country);\n } else {\n const formatter = new AsYouType(country);\n const formatted = formatter.input(next);\n setDisplayValue(formatted);\n emit(formatted, country);\n }\n },\n clear: () => {\n setDisplayValue('');\n emit('', country);\n },\n focus: () => inputRef.current?.focus(),\n }),\n [country, emit, lastEmittedRefForHandle],\n );\n useAgentRegistration(phoneInputAgent, agentHandle, id);\n\n const handleCountrySelect = (nextCountry: CountryCode) => {\n if (nextCountry === country) {\n setPickerOpen(false);\n return;\n }\n const digits = displayValue.replace(/\\D/g, '');\n const formatter = new AsYouType(nextCountry);\n const reformatted = digits ? formatter.input(digits) : '';\n setCountry(nextCountry);\n setDisplayValue(reformatted);\n setPickerOpen(false);\n setPickerSearch('');\n emit(reformatted, nextCountry);\n requestAnimationFrame(() => {\n inputRef.current?.focus();\n });\n };\n\n const countryRows = useMemo(\n () =>\n buildCountryRows(\n i18n.language,\n Array.from(supportedCountries) as CountryCode[],\n ),\n [i18n.language, supportedCountries],\n );\n\n const popularRows = useMemo(() => {\n if (!popularCountries || popularCountries.length === 0) return [];\n const byCode = new Map(countryRows.map((row) => [row.code, row]));\n return popularCountries\n .filter((code): code is CountryCode => supportedCountries.has(code))\n .map((code) => byCode.get(code))\n .filter((row): row is CountryRow => Boolean(row));\n }, [popularCountries, countryRows, supportedCountries]);\n\n const popularCodes = useMemo(\n () => new Set(popularRows.map((row) => row.code)),\n [popularRows],\n );\n\n const remainingRows = useMemo(\n () =>\n popularCodes.size > 0\n ? countryRows.filter((row) => !popularCodes.has(row.code))\n : countryRows,\n [countryRows, popularCodes],\n );\n\n const selected = useMemo(\n () => countryRows.find((row) => row.code === country),\n [countryRows, country],\n );\n const selectedDialCode = selected ? selected.dialCode : '';\n const selectedName = selected ? selected.name : country;\n\n const triggerLabel = t('ui.inputs.phone.countryPickerLabel', 'Country');\n const triggerAccessibleName = `${triggerLabel}: ${selectedName}, +${selectedDialCode}`;\n\n const filterFn = useCallback(\n (candidate: string, searchStr: string, keywords?: string[]) => {\n const normalizedCandidate = normalizeDiacritics(candidate);\n const normalizedSearch = normalizeDiacritics(searchStr);\n const normalizedKeywords = keywords?.map(normalizeDiacritics);\n return defaultFilter(\n normalizedCandidate,\n normalizedSearch,\n normalizedKeywords,\n );\n },\n [],\n );\n\n const renderRow = (row: CountryRow) => {\n const accessibleLabel = `${row.name}, +${row.dialCode}`;\n return (\n <Command.Item\n key={row.code}\n value={row.code}\n keywords={[row.name, row.dialCode, `+${row.dialCode}`]}\n onSelect={() => handleCountrySelect(row.code)}\n className={pickerItemClasses}\n aria-label={accessibleLabel}\n >\n <Flag country={row.code} size={flagSizeBySize[size]} />\n <span className=\"ds:flex-1 ds:truncate\">{row.name}</span>\n <bdi dir=\"ltr\" className=\"ds:text-muted-foreground ds:tabular-nums\">\n +{row.dialCode}\n </bdi>\n </Command.Item>\n );\n };\n\n return (\n <div\n data-component=\"phone-input\"\n data-component-id={id}\n data-slot=\"phone-input\"\n className={phoneInputWrapperVariants({\n size,\n tone: effectiveTone,\n className,\n })}\n >\n <Popover.Root open={pickerOpen} onOpenChange={setPickerOpen}>\n <Popover.Trigger asChild>\n <button\n type=\"button\"\n disabled={effectiveDisabled}\n aria-haspopup=\"listbox\"\n aria-expanded={pickerOpen}\n aria-label={triggerAccessibleName}\n className={countryTriggerVariants({ size })}\n >\n <Flag country={country} size={flagSizeBySize[size]} />\n <bdi dir=\"ltr\" className=\"ds:tabular-nums\">\n +{selectedDialCode}\n </bdi>\n <ChevronDown\n aria-hidden=\"true\"\n className={[\n chevronSizeBySize[size],\n 'ds:shrink-0 ds:text-muted-foreground',\n 'ds:transition-transform ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n pickerOpen ? 'ds:rotate-180' : '',\n ].join(' ')}\n />\n </button>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content\n sideOffset={6}\n align=\"start\"\n className={pickerContentClasses}\n >\n <Command filter={filterFn} shouldFilter loop label={triggerLabel}>\n <Command.Input\n asChild\n value={pickerSearch}\n onValueChange={setPickerSearch}\n >\n <input\n data-phone-country-search=\"true\"\n type=\"text\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n spellCheck={false}\n placeholder={t(\n 'ui.inputs.phone.searchCountry',\n 'Search countries…',\n )}\n className={pickerSearchClasses}\n />\n </Command.Input>\n <Command.List className={pickerListClasses}>\n <Command.Empty className={pickerEmptyClasses}>\n {t('ui.inputs.phone.noCountryFound', 'No country found')}\n </Command.Empty>\n {popularRows.length > 0 ? (\n <Command.Group\n heading={\n <span className={pickerGroupHeadingClasses}>\n {t('ui.inputs.phone.popularCountries', 'Popular')}\n </span>\n }\n >\n {popularRows.map(renderRow)}\n </Command.Group>\n ) : null}\n <Command.Group\n heading={\n popularRows.length > 0 ? (\n <span className={pickerGroupHeadingClasses}>\n {t('ui.inputs.phone.allCountries', 'All countries')}\n </span>\n ) : undefined\n }\n >\n {remainingRows.map(renderRow)}\n </Command.Group>\n </Command.List>\n </Command>\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n <input\n ref={composedInputRef}\n id={inputId}\n name={name}\n type=\"tel\"\n inputMode=\"tel\"\n autoComplete=\"tel-national\"\n value={displayValue}\n placeholder={resolvedPlaceholder}\n disabled={effectiveDisabled}\n readOnly={readOnly}\n required={effectiveRequired}\n aria-label={ariaLabel}\n aria-describedby={describedBy}\n aria-invalid={effectiveInvalid || undefined}\n onChange={handleInputChange}\n className={phoneNumberInputVariants({ size })}\n />\n </div>\n );\n },\n);\n\nPhoneInput.displayName = 'PhoneInput';\n\nexport {\n phoneInputWrapperVariants,\n countryTriggerVariants,\n phoneNumberInputVariants,\n};\n"],"names":["phoneInputAgent","handle","args","phoneInputWrapperVariants","cva","countryTriggerVariants","phoneNumberInputVariants","pickerContentClasses","pickerSearchClasses","pickerListClasses","pickerItemClasses","pickerGroupHeadingClasses","pickerEmptyClasses","chevronSizeBySize","flagSizeBySize","countDigitsBefore","str","position","digits","i","positionAfterDigits","targetDigits","count","resolveDefaultCountry","explicit","supported","detectBrowser","locale","fromNavigator","match","candidate","region","buildCountryRows","countries","displayNames","rows","code","getCountryCallingCode","collator","a","b","PhoneInput","forwardRef","value","defaultValue","defaultCountry","detectBrowserCountry","onChange","size","tone","disabled","readOnly","placeholder","popularCountries","className","id","name","required","ariaLabel","ref","t","i18n","useTranslation","ctx","useFormField","inFormField","useContext","FormFieldContext","supportedCountries","useMemo","getCountries","initialState","resolvedCountry","raw","parsed","parsePhoneNumberFromString","country","setCountry","useState","displayValue","setDisplayValue","pickerOpen","setPickerOpen","pickerSearch","setPickerSearch","isControlled","lastEmittedRef","useRef","pendingCaretRef","inputRef","composedInputRef","composeRefs","useEffect","current","useLayoutEffect","pos","node","emit","useCallback","nextDisplay","nextCountry","e164","inputId","effectiveDisabled","effectiveRequired","effectiveInvalid","effectiveTone","describedBy","resolvedPlaceholder","handleInputChange","event","target","caret","digitsBefore","formatted","AsYouType","lastEmittedRefForHandle","agentHandle","next","_a","useAgentRegistration","handleCountrySelect","formatter","reformatted","countryRows","popularRows","byCode","row","popularCodes","remainingRows","selected","selectedDialCode","selectedName","triggerLabel","triggerAccessibleName","filterFn","searchStr","keywords","normalizedCandidate","normalizeDiacritics","normalizedSearch","normalizedKeywords","defaultFilter","renderRow","accessibleLabel","jsxs","Command","jsx","Flag","Popover","ChevronDown"],"mappings":"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"}
@@ -0,0 +1,293 @@
1
+ import { jsx as s, jsxs as $ } from "react/jsx-runtime";
2
+ import { useState as C, useCallback as g, useRef as R, useEffect as h, useMemo as q, forwardRef as f, useId as D, useContext as u, createContext as N } from "react";
3
+ import * as v from "@radix-ui/react-popover";
4
+ import { c as G } from "./index-D2ZczOXr.js";
5
+ import { useTranslation as J } from "react-i18next";
6
+ import { I as K } from "./icon-button-C4CGcYuz.js";
7
+ import { u as Q } from "./registry-C9nwlNyL.js";
8
+ import { X as U } from "./x-CCcI3eJp.js";
9
+ const Y = {
10
+ id: "popover",
11
+ capabilities: ["open", "close"],
12
+ state: {
13
+ isOpen: {
14
+ type: "boolean",
15
+ description: "True when the popover is currently open.",
16
+ read: (e) => e.getIsOpen()
17
+ }
18
+ },
19
+ actions: {
20
+ open: {
21
+ safety: "read",
22
+ description: "Open the popover.",
23
+ invoke: (e) => {
24
+ e.open();
25
+ }
26
+ },
27
+ close: {
28
+ safety: "read",
29
+ description: "Close the popover.",
30
+ invoke: (e) => {
31
+ e.close();
32
+ }
33
+ }
34
+ },
35
+ domHooks: {
36
+ root: { attr: "data-component", value: "popover" },
37
+ instanceId: {
38
+ attr: "data-component-id",
39
+ sourceProp: "id",
40
+ description: "Sourced from the id prop on Popover.Root."
41
+ }
42
+ }
43
+ }, y = N({
44
+ headingId: void 0,
45
+ setHeadingId: () => {
46
+ },
47
+ descriptionId: void 0,
48
+ setDescriptionId: () => {
49
+ }
50
+ }), k = N({
51
+ isHoverMode: !1,
52
+ clearHoverTimer: () => {
53
+ },
54
+ closeWithDelay: () => {
55
+ }
56
+ });
57
+ function Z(e) {
58
+ if (e === "top" || e === "bottom") return e;
59
+ const o = typeof document < "u" && document.documentElement.dir === "rtl";
60
+ return e === "start" ? o ? "right" : "left" : o ? "left" : "right";
61
+ }
62
+ const _ = G(
63
+ [
64
+ // Border kept (transparent) so the forced-colors override below can
65
+ // repaint a visible edge in HCM. In normal modes the soft drop-shadow
66
+ // carries the edge cue; the heavy `--border` (grey-800 since WCAG
67
+ // 1.4.11 bump in 67fef8c) made the popover read as a charcoal box.
68
+ "ds:relative ds:bg-[var(--popover)] ds:border ds:border-transparent ds:rounded-[var(--radius-md)]",
69
+ "ds:p-[var(--spacing-md)]",
70
+ "ds:shadow-[var(--shadow-lg)]",
71
+ "ds:z-[var(--z-popover)]",
72
+ "ds:text-[var(--popover-foreground)] ds:text-[length:var(--font-size-sm)]",
73
+ "ds:break-words",
74
+ "ds:data-[state=open]:animate-in ds:data-[state=closed]:animate-out",
75
+ "ds:data-[state=closed]:fade-out-0 ds:data-[state=open]:fade-in-0",
76
+ "ds:data-[state=closed]:zoom-out-95 ds:data-[state=open]:zoom-in-95",
77
+ "ds:data-[side=bottom]:slide-in-from-top-2 ds:data-[side=left]:slide-in-from-right-2",
78
+ "ds:data-[side=right]:slide-in-from-left-2 ds:data-[side=top]:slide-in-from-bottom-2",
79
+ "ds:motion-reduce:transition-none ds:motion-reduce:animate-none",
80
+ "ds:forced-colors:border-[CanvasText]",
81
+ "ds:focus-visible:outline-none"
82
+ ].join(" "),
83
+ {
84
+ variants: {
85
+ size: {
86
+ sm: "ds:max-w-[var(--popover-size-sm)]",
87
+ md: "ds:max-w-[var(--popover-size-md)]",
88
+ lg: "ds:max-w-[var(--popover-size-lg)]"
89
+ }
90
+ },
91
+ defaultVariants: {
92
+ size: "md"
93
+ }
94
+ }
95
+ ), M = N(void 0);
96
+ function T({
97
+ openOn: e = "click",
98
+ children: o,
99
+ id: r,
100
+ open: i,
101
+ onOpenChange: t,
102
+ defaultOpen: c,
103
+ modal: P
104
+ }) {
105
+ const [I, b] = C(c ?? !1), m = i !== void 0, l = m ? i : I, n = g(
106
+ (z) => {
107
+ m || b(z), t == null || t(z);
108
+ },
109
+ [m, t]
110
+ ), d = R(null), p = e === "hover" || e === "hover-or-click", a = g(() => {
111
+ d.current && (clearTimeout(d.current), d.current = null);
112
+ }, []), H = g(() => {
113
+ a(), d.current = setTimeout(() => {
114
+ n(!0);
115
+ }, 300);
116
+ }, [a, n]), x = g(() => {
117
+ a(), d.current = setTimeout(() => {
118
+ n(!1);
119
+ }, 300);
120
+ }, [a, n]);
121
+ h(() => () => a(), [a]);
122
+ const w = R(l);
123
+ h(() => {
124
+ w.current = l;
125
+ }, [l]);
126
+ const O = q(
127
+ () => ({
128
+ getIsOpen: () => w.current,
129
+ open: () => n(!0),
130
+ close: () => n(!1)
131
+ }),
132
+ [n]
133
+ );
134
+ Q(Y, O, r);
135
+ const [F, L] = C(void 0), [V, S] = C(
136
+ void 0
137
+ ), X = p ? {
138
+ onMouseEnter: H,
139
+ onMouseLeave: x,
140
+ onFocus: () => {
141
+ a(), n(!0);
142
+ },
143
+ onBlur: x
144
+ } : {};
145
+ return /* @__PURE__ */ s(M.Provider, { value: r, children: /* @__PURE__ */ s(
146
+ y.Provider,
147
+ {
148
+ value: { headingId: F, setHeadingId: L, descriptionId: V, setDescriptionId: S },
149
+ children: /* @__PURE__ */ s(
150
+ k.Provider,
151
+ {
152
+ value: { isHoverMode: p, clearHoverTimer: a, closeWithDelay: x },
153
+ children: /* @__PURE__ */ s(
154
+ v.Root,
155
+ {
156
+ open: l,
157
+ onOpenChange: n,
158
+ modal: P,
159
+ children: p ? /* @__PURE__ */ s("span", { className: "ds:inline-flex", ...X, children: o }) : o
160
+ }
161
+ )
162
+ }
163
+ )
164
+ }
165
+ ) });
166
+ }
167
+ T.displayName = "Popover.Root";
168
+ const j = f(({ children: e, ...o }, r) => /* @__PURE__ */ s(v.Trigger, { ref: r, ...o, children: e }));
169
+ j.displayName = "Popover.Trigger";
170
+ const B = f(
171
+ ({
172
+ side: e = "bottom",
173
+ align: o = "center",
174
+ size: r = "md",
175
+ showArrow: i = !0,
176
+ className: t,
177
+ children: c,
178
+ ...P
179
+ }, I) => {
180
+ const { headingId: b, descriptionId: m } = u(y), l = u(M), {
181
+ isHoverMode: n,
182
+ clearHoverTimer: d,
183
+ closeWithDelay: p
184
+ } = u(k), a = Z(e), H = n ? {
185
+ onMouseEnter: d,
186
+ onMouseLeave: p,
187
+ onFocus: d,
188
+ onBlur: p
189
+ } : {};
190
+ return /* @__PURE__ */ s(v.Portal, { children: /* @__PURE__ */ $(
191
+ v.Content,
192
+ {
193
+ ref: I,
194
+ side: a,
195
+ align: o,
196
+ sideOffset: 8,
197
+ collisionPadding: 8,
198
+ "aria-labelledby": b,
199
+ "aria-describedby": m,
200
+ className: _({ size: r, className: t }),
201
+ "data-component": "popover",
202
+ "data-component-id": l,
203
+ ...H,
204
+ ...P,
205
+ children: [
206
+ c,
207
+ i && /* @__PURE__ */ s(
208
+ v.Arrow,
209
+ {
210
+ width: 12,
211
+ height: 6,
212
+ className: "ds:fill-[var(--popover)]"
213
+ }
214
+ )
215
+ ]
216
+ }
217
+ ) });
218
+ }
219
+ );
220
+ B.displayName = "Popover.Content";
221
+ const A = f(
222
+ ({ className: e }, o) => {
223
+ const { t: r } = J();
224
+ return /* @__PURE__ */ s(
225
+ "div",
226
+ {
227
+ className: [
228
+ "ds:absolute ds:top-[var(--spacing-sm)] ds:end-[var(--spacing-sm)]",
229
+ e
230
+ ].filter(Boolean).join(" "),
231
+ children: /* @__PURE__ */ s(v.Close, { asChild: !0, children: /* @__PURE__ */ s(
232
+ K,
233
+ {
234
+ ref: o,
235
+ icon: /* @__PURE__ */ s(U, {}),
236
+ intent: "ghost",
237
+ size: "sm",
238
+ "aria-label": r("ui.common.close", "Close")
239
+ }
240
+ ) })
241
+ }
242
+ );
243
+ }
244
+ );
245
+ A.displayName = "Popover.Close";
246
+ const E = f(
247
+ ({ as: e = "h3", className: o, ...r }, i) => {
248
+ const t = D(), { setHeadingId: c } = u(y);
249
+ return h(() => (c(t), () => c(void 0)), [t, c]), /* @__PURE__ */ s(
250
+ e,
251
+ {
252
+ ref: i,
253
+ id: t,
254
+ className: [
255
+ "type-title-item ds:leading-snug ds:break-words",
256
+ "ds:pe-[var(--spacing-xl)]",
257
+ o
258
+ ].filter(Boolean).join(" "),
259
+ ...r
260
+ }
261
+ );
262
+ }
263
+ );
264
+ E.displayName = "Popover.Heading";
265
+ const W = f(({ className: e, ...o }, r) => {
266
+ const i = D(), { setDescriptionId: t } = u(y);
267
+ return h(() => (t(i), () => t(void 0)), [i, t]), /* @__PURE__ */ s(
268
+ "p",
269
+ {
270
+ ref: r,
271
+ id: i,
272
+ className: [
273
+ "ds:text-[var(--muted-foreground)] type-body-sm ds:mt-[var(--spacing-xs)]",
274
+ e
275
+ ].filter(Boolean).join(" "),
276
+ ...o
277
+ }
278
+ );
279
+ });
280
+ W.displayName = "Popover.Description";
281
+ const ae = Object.assign(T, {
282
+ Root: T,
283
+ Trigger: j,
284
+ Content: B,
285
+ Close: A,
286
+ Heading: E,
287
+ Description: W
288
+ });
289
+ export {
290
+ ae as P,
291
+ Y as p
292
+ };
293
+ //# sourceMappingURL=popover-DekUKNBk.js.map